4 <meta charset=
"utf-8" />
5 <title>BIP39 - Mnemonic Code
</title>
7 * Bootstrap v3.2
.0 (http://getbootstrap.com)
8 * Copyright
2011-
2014 Twitter, Inc.
9 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
10 *//*! normalize.css v3.0
.1 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:
100%;-ms-text-size-adjust:
100%}body{margin:
0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:
0}[hidden],template{display:none}a{background:
0 0}a:active,a:hover{outline:
0}abbr[title]{border-bottom:
1px dotted}b,strong{font-weight:
700}dfn{font-style:italic}h1{margin:
.67em
0;font-size:
2em}mark{color:#
000;background:#ff0}small{font-size:
80%}sub,sup{position:relative;font-size:
75%;line-height:
0;vertical-align:baseline}sup{top:-
.5em}sub{bottom:-
.25em}img{border:
0}svg:not(:root){overflow:hidden}figure{margin:
1em
40px}hr{height:
0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:
1em}button,input,optgroup,select,textarea{margin:
0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:
0;border:
0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:
0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:
.35em
.625em
.75em;margin:
0 2px;border:
1px solid silver}legend{padding:
0;border:
0}textarea{overflow:auto}optgroup{font-weight:
700}table{border-spacing:
0;border-collapse:collapse}td,th{padding:
0}@media print{*{color:#
000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:
1px solid #
999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:
100%!important}p,h2,h3{orphans:
3;widows:
3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn
>.caret,.dropup
>.btn
>.caret{border-top-color:#
000!important}.label{border:
1px solid #
000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:
1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:
1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:
400;line-height:
1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\
2a"}.glyphicon-plus:before{content:"\
2b"}.glyphicon-euro:before{content:"\
20ac"}.glyphicon-minus:before{content:"\
2212"}.glyphicon-cloud:before{content:"\
2601"}.glyphicon-envelope:before{content:"\
2709"}.glyphicon-pencil:before{content:"\
270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-
5-
1:before{content:"\e191"}.glyphicon-sound-
6-
1:before{content:"\e192"}.glyphicon-sound-
7-
1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:
10px;-webkit-tap-highlight-color:rgba(
0,
0,
0,
0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:
14px;line-height:
1.42857143;color:#
333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#
428bca;text-decoration:none}a:hover,a:focus{color:#
2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:
5px auto -webkit-focus-ring-color;outline-offset:-
2px}figure{margin:
0}img{vertical-align:middle}.img-responsive,.thumbnail
>img,.thumbnail a
>img,.carousel-inner
>.item
>img,.carousel-inner
>.item
>a
>img{display:block;width:
100% \
9;max-width:
100%;height:auto}.img-rounded{border-radius:
6px}.img-thumbnail{display:inline-block;width:
100% \
9;max-width:
100%;height:auto;padding:
4px;line-height:
1.42857143;background-color:#fff;border:
1px solid #ddd;border-radius:
4px;-webkit-transition:all
.2s ease-in-out;-o-transition:all
.2s ease-in-out;transition:all
.2s ease-in-out}.img-circle{border-radius:
50%}hr{margin-top:
20px;margin-bottom:
20px;border:
0;border-top:
1px solid #eee}.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}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:
500;line-height:
1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:
400;line-height:
1;color:#
777}h1,.h1,h2,.h2,h3,.h3{margin-top:
20px;margin-bottom:
10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:
65%}h4,.h4,h5,.h5,h6,.h6{margin-top:
10px;margin-bottom:
10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:
75%}h1,.h1{font-size:
36px}h2,.h2{font-size:
30px}h3,.h3{font-size:
24px}h4,.h4{font-size:
18px}h5,.h5{font-size:
14px}h6,.h6{font-size:
12px}p{margin:
0 0 10px}.lead{margin-bottom:
20px;font-size:
16px;font-weight:
300;line-height:
1.4}@media (min-width:
768px){.lead{font-size:
21px}}small,.small{font-size:
85%}cite{font-style:normal}mark,.mark{padding:
.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#
777}.text-primary{color:#
428bca}a.text-primary:hover{color:#
3071a9}.text-success{color:#
3c763d}a.text-success:hover{color:#
2b542c}.text-info{color:#
31708f}a.text-info:hover{color:#
245269}.text-warning{color:#
8a6d3b}a.text-warning:hover{color:#
66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#
843534}.bg-primary{color:#fff;background-color:#
428bca}a.bg-primary:hover{background-color:#
3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:
9px;margin:
40px
0 20px;border-bottom:
1px solid #eee}ul,ol{margin-top:
0;margin-bottom:
10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:
0}.list-unstyled{padding-left:
0;list-style:none}.list-inline{padding-left:
0;margin-left:-
5px;list-style:none}.list-inline
>li{display:inline-block;padding-right:
5px;padding-left:
5px}dl{margin-top:
0;margin-bottom:
20px}dt,dd{line-height:
1.42857143}dt{font-weight:
700}dd{margin-left:
0}@media (min-width:
768px){.dl-horizontal dt{float:left;width:
160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:
180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:
1px dotted #
777}.initialism{font-size:
90%;text-transform:uppercase}blockquote{padding:
10px
20px;margin:
0 0 20px;font-size:
17.5px;border-left:
5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:
0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:
80%;line-height:
1.42857143;color:#
777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\
2014 \
00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:
15px;padding-left:
0;text-align:right;border-right:
5px solid #eee;border-left:
0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\
00A0 \
2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:
20px;font-style:normal;line-height:
1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:
2px
4px;font-size:
90%;color:#c7254e;background-color:#f9f2f4;border-radius:
4px}kbd{padding:
2px
4px;font-size:
90%;color:#fff;background-color:#
333;border-radius:
3px;-webkit-box-shadow:inset
0 -
1px
0 rgba(
0,
0,
0,
.25);box-shadow:inset
0 -
1px
0 rgba(
0,
0,
0,
.25)}kbd kbd{padding:
0;font-size:
100%;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:
9.5px;margin:
0 0 10px;font-size:
13px;line-height:
1.42857143;color:#
333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:
1px solid #ccc;border-radius:
4px}pre code{padding:
0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:
0}.pre-scrollable{max-height:
340px;overflow-y:scroll}.container{padding-right:
15px;padding-left:
15px;margin-right:auto;margin-left:auto}@media (min-width:
768px){.container{width:
750px}}@media (min-width:
992px){.container{width:
970px}}@media (min-width:
1200px){.container{width:
1170px}}.container-fluid{padding-right:
15px;padding-left:
15px;margin-right:auto;margin-left:auto}.row{margin-right:-
15px;margin-left:-
15px}.col-xs-
1,.col-sm-
1,.col-md-
1,.col-lg-
1,.col-xs-
2,.col-sm-
2,.col-md-
2,.col-lg-
2,.col-xs-
3,.col-sm-
3,.col-md-
3,.col-lg-
3,.col-xs-
4,.col-sm-
4,.col-md-
4,.col-lg-
4,.col-xs-
5,.col-sm-
5,.col-md-
5,.col-lg-
5,.col-xs-
6,.col-sm-
6,.col-md-
6,.col-lg-
6,.col-xs-
7,.col-sm-
7,.col-md-
7,.col-lg-
7,.col-xs-
8,.col-sm-
8,.col-md-
8,.col-lg-
8,.col-xs-
9,.col-sm-
9,.col-md-
9,.col-lg-
9,.col-xs-
10,.col-sm-
10,.col-md-
10,.col-lg-
10,.col-xs-
11,.col-sm-
11,.col-md-
11,.col-lg-
11,.col-xs-
12,.col-sm-
12,.col-md-
12,.col-lg-
12{position:relative;min-height:
1px;padding-right:
15px;padding-left:
15px}.col-xs-
1,.col-xs-
2,.col-xs-
3,.col-xs-
4,.col-xs-
5,.col-xs-
6,.col-xs-
7,.col-xs-
8,.col-xs-
9,.col-xs-
10,.col-xs-
11,.col-xs-
12{float:left}.col-xs-
12{width:
100%}.col-xs-
11{width:
91.66666667%}.col-xs-
10{width:
83.33333333%}.col-xs-
9{width:
75%}.col-xs-
8{width:
66.66666667%}.col-xs-
7{width:
58.33333333%}.col-xs-
6{width:
50%}.col-xs-
5{width:
41.66666667%}.col-xs-
4{width:
33.33333333%}.col-xs-
3{width:
25%}.col-xs-
2{width:
16.66666667%}.col-xs-
1{width:
8.33333333%}.col-xs-pull-
12{right:
100%}.col-xs-pull-
11{right:
91.66666667%}.col-xs-pull-
10{right:
83.33333333%}.col-xs-pull-
9{right:
75%}.col-xs-pull-
8{right:
66.66666667%}.col-xs-pull-
7{right:
58.33333333%}.col-xs-pull-
6{right:
50%}.col-xs-pull-
5{right:
41.66666667%}.col-xs-pull-
4{right:
33.33333333%}.col-xs-pull-
3{right:
25%}.col-xs-pull-
2{right:
16.66666667%}.col-xs-pull-
1{right:
8.33333333%}.col-xs-pull-
0{right:auto}.col-xs-push-
12{left:
100%}.col-xs-push-
11{left:
91.66666667%}.col-xs-push-
10{left:
83.33333333%}.col-xs-push-
9{left:
75%}.col-xs-push-
8{left:
66.66666667%}.col-xs-push-
7{left:
58.33333333%}.col-xs-push-
6{left:
50%}.col-xs-push-
5{left:
41.66666667%}.col-xs-push-
4{left:
33.33333333%}.col-xs-push-
3{left:
25%}.col-xs-push-
2{left:
16.66666667%}.col-xs-push-
1{left:
8.33333333%}.col-xs-push-
0{left:auto}.col-xs-offset-
12{margin-left:
100%}.col-xs-offset-
11{margin-left:
91.66666667%}.col-xs-offset-
10{margin-left:
83.33333333%}.col-xs-offset-
9{margin-left:
75%}.col-xs-offset-
8{margin-left:
66.66666667%}.col-xs-offset-
7{margin-left:
58.33333333%}.col-xs-offset-
6{margin-left:
50%}.col-xs-offset-
5{margin-left:
41.66666667%}.col-xs-offset-
4{margin-left:
33.33333333%}.col-xs-offset-
3{margin-left:
25%}.col-xs-offset-
2{margin-left:
16.66666667%}.col-xs-offset-
1{margin-left:
8.33333333%}.col-xs-offset-
0{margin-left:
0}@media (min-width:
768px){.col-sm-
1,.col-sm-
2,.col-sm-
3,.col-sm-
4,.col-sm-
5,.col-sm-
6,.col-sm-
7,.col-sm-
8,.col-sm-
9,.col-sm-
10,.col-sm-
11,.col-sm-
12{float:left}.col-sm-
12{width:
100%}.col-sm-
11{width:
91.66666667%}.col-sm-
10{width:
83.33333333%}.col-sm-
9{width:
75%}.col-sm-
8{width:
66.66666667%}.col-sm-
7{width:
58.33333333%}.col-sm-
6{width:
50%}.col-sm-
5{width:
41.66666667%}.col-sm-
4{width:
33.33333333%}.col-sm-
3{width:
25%}.col-sm-
2{width:
16.66666667%}.col-sm-
1{width:
8.33333333%}.col-sm-pull-
12{right:
100%}.col-sm-pull-
11{right:
91.66666667%}.col-sm-pull-
10{right:
83.33333333%}.col-sm-pull-
9{right:
75%}.col-sm-pull-
8{right:
66.66666667%}.col-sm-pull-
7{right:
58.33333333%}.col-sm-pull-
6{right:
50%}.col-sm-pull-
5{right:
41.66666667%}.col-sm-pull-
4{right:
33.33333333%}.col-sm-pull-
3{right:
25%}.col-sm-pull-
2{right:
16.66666667%}.col-sm-pull-
1{right:
8.33333333%}.col-sm-pull-
0{right:auto}.col-sm-push-
12{left:
100%}.col-sm-push-
11{left:
91.66666667%}.col-sm-push-
10{left:
83.33333333%}.col-sm-push-
9{left:
75%}.col-sm-push-
8{left:
66.66666667%}.col-sm-push-
7{left:
58.33333333%}.col-sm-push-
6{left:
50%}.col-sm-push-
5{left:
41.66666667%}.col-sm-push-
4{left:
33.33333333%}.col-sm-push-
3{left:
25%}.col-sm-push-
2{left:
16.66666667%}.col-sm-push-
1{left:
8.33333333%}.col-sm-push-
0{left:auto}.col-sm-offset-
12{margin-left:
100%}.col-sm-offset-
11{margin-left:
91.66666667%}.col-sm-offset-
10{margin-left:
83.33333333%}.col-sm-offset-
9{margin-left:
75%}.col-sm-offset-
8{margin-left:
66.66666667%}.col-sm-offset-
7{margin-left:
58.33333333%}.col-sm-offset-
6{margin-left:
50%}.col-sm-offset-
5{margin-left:
41.66666667%}.col-sm-offset-
4{margin-left:
33.33333333%}.col-sm-offset-
3{margin-left:
25%}.col-sm-offset-
2{margin-left:
16.66666667%}.col-sm-offset-
1{margin-left:
8.33333333%}.col-sm-offset-
0{margin-left:
0}}@media (min-width:
992px){.col-md-
1,.col-md-
2,.col-md-
3,.col-md-
4,.col-md-
5,.col-md-
6,.col-md-
7,.col-md-
8,.col-md-
9,.col-md-
10,.col-md-
11,.col-md-
12{float:left}.col-md-
12{width:
100%}.col-md-
11{width:
91.66666667%}.col-md-
10{width:
83.33333333%}.col-md-
9{width:
75%}.col-md-
8{width:
66.66666667%}.col-md-
7{width:
58.33333333%}.col-md-
6{width:
50%}.col-md-
5{width:
41.66666667%}.col-md-
4{width:
33.33333333%}.col-md-
3{width:
25%}.col-md-
2{width:
16.66666667%}.col-md-
1{width:
8.33333333%}.col-md-pull-
12{right:
100%}.col-md-pull-
11{right:
91.66666667%}.col-md-pull-
10{right:
83.33333333%}.col-md-pull-
9{right:
75%}.col-md-pull-
8{right:
66.66666667%}.col-md-pull-
7{right:
58.33333333%}.col-md-pull-
6{right:
50%}.col-md-pull-
5{right:
41.66666667%}.col-md-pull-
4{right:
33.33333333%}.col-md-pull-
3{right:
25%}.col-md-pull-
2{right:
16.66666667%}.col-md-pull-
1{right:
8.33333333%}.col-md-pull-
0{right:auto}.col-md-push-
12{left:
100%}.col-md-push-
11{left:
91.66666667%}.col-md-push-
10{left:
83.33333333%}.col-md-push-
9{left:
75%}.col-md-push-
8{left:
66.66666667%}.col-md-push-
7{left:
58.33333333%}.col-md-push-
6{left:
50%}.col-md-push-
5{left:
41.66666667%}.col-md-push-
4{left:
33.33333333%}.col-md-push-
3{left:
25%}.col-md-push-
2{left:
16.66666667%}.col-md-push-
1{left:
8.33333333%}.col-md-push-
0{left:auto}.col-md-offset-
12{margin-left:
100%}.col-md-offset-
11{margin-left:
91.66666667%}.col-md-offset-
10{margin-left:
83.33333333%}.col-md-offset-
9{margin-left:
75%}.col-md-offset-
8{margin-left:
66.66666667%}.col-md-offset-
7{margin-left:
58.33333333%}.col-md-offset-
6{margin-left:
50%}.col-md-offset-
5{margin-left:
41.66666667%}.col-md-offset-
4{margin-left:
33.33333333%}.col-md-offset-
3{margin-left:
25%}.col-md-offset-
2{margin-left:
16.66666667%}.col-md-offset-
1{margin-left:
8.33333333%}.col-md-offset-
0{margin-left:
0}}@media (min-width:
1200px){.col-lg-
1,.col-lg-
2,.col-lg-
3,.col-lg-
4,.col-lg-
5,.col-lg-
6,.col-lg-
7,.col-lg-
8,.col-lg-
9,.col-lg-
10,.col-lg-
11,.col-lg-
12{float:left}.col-lg-
12{width:
100%}.col-lg-
11{width:
91.66666667%}.col-lg-
10{width:
83.33333333%}.col-lg-
9{width:
75%}.col-lg-
8{width:
66.66666667%}.col-lg-
7{width:
58.33333333%}.col-lg-
6{width:
50%}.col-lg-
5{width:
41.66666667%}.col-lg-
4{width:
33.33333333%}.col-lg-
3{width:
25%}.col-lg-
2{width:
16.66666667%}.col-lg-
1{width:
8.33333333%}.col-lg-pull-
12{right:
100%}.col-lg-pull-
11{right:
91.66666667%}.col-lg-pull-
10{right:
83.33333333%}.col-lg-pull-
9{right:
75%}.col-lg-pull-
8{right:
66.66666667%}.col-lg-pull-
7{right:
58.33333333%}.col-lg-pull-
6{right:
50%}.col-lg-pull-
5{right:
41.66666667%}.col-lg-pull-
4{right:
33.33333333%}.col-lg-pull-
3{right:
25%}.col-lg-pull-
2{right:
16.66666667%}.col-lg-pull-
1{right:
8.33333333%}.col-lg-pull-
0{right:auto}.col-lg-push-
12{left:
100%}.col-lg-push-
11{left:
91.66666667%}.col-lg-push-
10{left:
83.33333333%}.col-lg-push-
9{left:
75%}.col-lg-push-
8{left:
66.66666667%}.col-lg-push-
7{left:
58.33333333%}.col-lg-push-
6{left:
50%}.col-lg-push-
5{left:
41.66666667%}.col-lg-push-
4{left:
33.33333333%}.col-lg-push-
3{left:
25%}.col-lg-push-
2{left:
16.66666667%}.col-lg-push-
1{left:
8.33333333%}.col-lg-push-
0{left:auto}.col-lg-offset-
12{margin-left:
100%}.col-lg-offset-
11{margin-left:
91.66666667%}.col-lg-offset-
10{margin-left:
83.33333333%}.col-lg-offset-
9{margin-left:
75%}.col-lg-offset-
8{margin-left:
66.66666667%}.col-lg-offset-
7{margin-left:
58.33333333%}.col-lg-offset-
6{margin-left:
50%}.col-lg-offset-
5{margin-left:
41.66666667%}.col-lg-offset-
4{margin-left:
33.33333333%}.col-lg-offset-
3{margin-left:
25%}.col-lg-offset-
2{margin-left:
16.66666667%}.col-lg-offset-
1{margin-left:
8.33333333%}.col-lg-offset-
0{margin-left:
0}}table{background-color:transparent}th{text-align:left}.table{width:
100%;max-width:
100%;margin-bottom:
20px}.table
>thead
>tr
>th,.table
>tbody
>tr
>th,.table
>tfoot
>tr
>th,.table
>thead
>tr
>td,.table
>tbody
>tr
>td,.table
>tfoot
>tr
>td{padding:
8px;line-height:
1.42857143;vertical-align:top;border-top:
1px solid #ddd}.table
>thead
>tr
>th{vertical-align:bottom;border-bottom:
2px solid #ddd}.table
>caption+thead
>tr:first-child
>th,.table
>colgroup+thead
>tr:first-child
>th,.table
>thead:first-child
>tr:first-child
>th,.table
>caption+thead
>tr:first-child
>td,.table
>colgroup+thead
>tr:first-child
>td,.table
>thead:first-child
>tr:first-child
>td{border-top:
0}.table
>tbody+tbody{border-top:
2px solid #ddd}.table .table{background-color:#fff}.table-condensed
>thead
>tr
>th,.table-condensed
>tbody
>tr
>th,.table-condensed
>tfoot
>tr
>th,.table-condensed
>thead
>tr
>td,.table-condensed
>tbody
>tr
>td,.table-condensed
>tfoot
>tr
>td{padding:
5px}.table-bordered{border:
1px solid #ddd}.table-bordered
>thead
>tr
>th,.table-bordered
>tbody
>tr
>th,.table-bordered
>tfoot
>tr
>th,.table-bordered
>thead
>tr
>td,.table-bordered
>tbody
>tr
>td,.table-bordered
>tfoot
>tr
>td{border:
1px solid #ddd}.table-bordered
>thead
>tr
>th,.table-bordered
>thead
>tr
>td{border-bottom-width:
2px}.table-striped
>tbody
>tr:nth-child(odd)
>td,.table-striped
>tbody
>tr:nth-child(odd)
>th{background-color:#f9f9f9}.table-hover
>tbody
>tr:hover
>td,.table-hover
>tbody
>tr:hover
>th{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table
>thead
>tr
>td.active,.table
>tbody
>tr
>td.active,.table
>tfoot
>tr
>td.active,.table
>thead
>tr
>th.active,.table
>tbody
>tr
>th.active,.table
>tfoot
>tr
>th.active,.table
>thead
>tr.active
>td,.table
>tbody
>tr.active
>td,.table
>tfoot
>tr.active
>td,.table
>thead
>tr.active
>th,.table
>tbody
>tr.active
>th,.table
>tfoot
>tr.active
>th{background-color:#f5f5f5}.table-hover
>tbody
>tr
>td.active:hover,.table-hover
>tbody
>tr
>th.active:hover,.table-hover
>tbody
>tr.active:hover
>td,.table-hover
>tbody
>tr:hover
>.active,.table-hover
>tbody
>tr.active:hover
>th{background-color:#e8e8e8}.table
>thead
>tr
>td.success,.table
>tbody
>tr
>td.success,.table
>tfoot
>tr
>td.success,.table
>thead
>tr
>th.success,.table
>tbody
>tr
>th.success,.table
>tfoot
>tr
>th.success,.table
>thead
>tr.success
>td,.table
>tbody
>tr.success
>td,.table
>tfoot
>tr.success
>td,.table
>thead
>tr.success
>th,.table
>tbody
>tr.success
>th,.table
>tfoot
>tr.success
>th{background-color:#dff0d8}.table-hover
>tbody
>tr
>td.success:hover,.table-hover
>tbody
>tr
>th.success:hover,.table-hover
>tbody
>tr.success:hover
>td,.table-hover
>tbody
>tr:hover
>.success,.table-hover
>tbody
>tr.success:hover
>th{background-color:#d0e9c6}.table
>thead
>tr
>td.info,.table
>tbody
>tr
>td.info,.table
>tfoot
>tr
>td.info,.table
>thead
>tr
>th.info,.table
>tbody
>tr
>th.info,.table
>tfoot
>tr
>th.info,.table
>thead
>tr.info
>td,.table
>tbody
>tr.info
>td,.table
>tfoot
>tr.info
>td,.table
>thead
>tr.info
>th,.table
>tbody
>tr.info
>th,.table
>tfoot
>tr.info
>th{background-color:#d9edf7}.table-hover
>tbody
>tr
>td.info:hover,.table-hover
>tbody
>tr
>th.info:hover,.table-hover
>tbody
>tr.info:hover
>td,.table-hover
>tbody
>tr:hover
>.info,.table-hover
>tbody
>tr.info:hover
>th{background-color:#c4e3f3}.table
>thead
>tr
>td.warning,.table
>tbody
>tr
>td.warning,.table
>tfoot
>tr
>td.warning,.table
>thead
>tr
>th.warning,.table
>tbody
>tr
>th.warning,.table
>tfoot
>tr
>th.warning,.table
>thead
>tr.warning
>td,.table
>tbody
>tr.warning
>td,.table
>tfoot
>tr.warning
>td,.table
>thead
>tr.warning
>th,.table
>tbody
>tr.warning
>th,.table
>tfoot
>tr.warning
>th{background-color:#fcf8e3}.table-hover
>tbody
>tr
>td.warning:hover,.table-hover
>tbody
>tr
>th.warning:hover,.table-hover
>tbody
>tr.warning:hover
>td,.table-hover
>tbody
>tr:hover
>.warning,.table-hover
>tbody
>tr.warning:hover
>th{background-color:#faf2cc}.table
>thead
>tr
>td.danger,.table
>tbody
>tr
>td.danger,.table
>tfoot
>tr
>td.danger,.table
>thead
>tr
>th.danger,.table
>tbody
>tr
>th.danger,.table
>tfoot
>tr
>th.danger,.table
>thead
>tr.danger
>td,.table
>tbody
>tr.danger
>td,.table
>tfoot
>tr.danger
>td,.table
>thead
>tr.danger
>th,.table
>tbody
>tr.danger
>th,.table
>tfoot
>tr.danger
>th{background-color:#f2dede}.table-hover
>tbody
>tr
>td.danger:hover,.table-hover
>tbody
>tr
>th.danger:hover,.table-hover
>tbody
>tr.danger:hover
>td,.table-hover
>tbody
>tr:hover
>.danger,.table-hover
>tbody
>tr.danger:hover
>th{background-color:#ebcccc}@media screen and (max-width:
767px){.table-responsive{width:
100%;margin-bottom:
15px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;border:
1px solid #ddd}.table-responsive
>.table{margin-bottom:
0}.table-responsive
>.table
>thead
>tr
>th,.table-responsive
>.table
>tbody
>tr
>th,.table-responsive
>.table
>tfoot
>tr
>th,.table-responsive
>.table
>thead
>tr
>td,.table-responsive
>.table
>tbody
>tr
>td,.table-responsive
>.table
>tfoot
>tr
>td{white-space:nowrap}.table-responsive
>.table-bordered{border:
0}.table-responsive
>.table-bordered
>thead
>tr
>th:first-child,.table-responsive
>.table-bordered
>tbody
>tr
>th:first-child,.table-responsive
>.table-bordered
>tfoot
>tr
>th:first-child,.table-responsive
>.table-bordered
>thead
>tr
>td:first-child,.table-responsive
>.table-bordered
>tbody
>tr
>td:first-child,.table-responsive
>.table-bordered
>tfoot
>tr
>td:first-child{border-left:
0}.table-responsive
>.table-bordered
>thead
>tr
>th:last-child,.table-responsive
>.table-bordered
>tbody
>tr
>th:last-child,.table-responsive
>.table-bordered
>tfoot
>tr
>th:last-child,.table-responsive
>.table-bordered
>thead
>tr
>td:last-child,.table-responsive
>.table-bordered
>tbody
>tr
>td:last-child,.table-responsive
>.table-bordered
>tfoot
>tr
>td:last-child{border-right:
0}.table-responsive
>.table-bordered
>tbody
>tr:last-child
>th,.table-responsive
>.table-bordered
>tfoot
>tr:last-child
>th,.table-responsive
>.table-bordered
>tbody
>tr:last-child
>td,.table-responsive
>.table-bordered
>tfoot
>tr:last-child
>td{border-bottom:
0}}fieldset{min-width:
0;padding:
0;margin:
0;border:
0}legend{display:block;width:
100%;padding:
0;margin-bottom:
20px;font-size:
21px;line-height:inherit;color:#
333;border:
0;border-bottom:
1px solid #e5e5e5}label{display:inline-block;max-width:
100%;margin-bottom:
5px;font-weight:
700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:
4px
0 0;margin-top:
1px \
9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:
100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:
5px auto -webkit-focus-ring-color;outline-offset:-
2px}output{display:block;padding-top:
7px;font-size:
14px;line-height:
1.42857143;color:#
555}.form-control{display:block;width:
100%;height:
34px;padding:
6px
12px;font-size:
14px;line-height:
1.42857143;color:#
555;background-color:#fff;background-image:none;border:
1px solid #ccc;border-radius:
4px;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075);box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075);-webkit-transition:border-color ease-in-out
.15s,-webkit-box-shadow ease-in-out
.15s;-o-transition:border-color ease-in-out
.15s,box-shadow ease-in-out
.15s;transition:border-color ease-in-out
.15s,box-shadow ease-in-out
.15s}.form-control:focus{border-color:#
66afe9;outline:
0;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075),
0 0 8px rgba(
102,
175,
233,
.6);box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075),
0 0 8px rgba(
102,
175,
233,
.6)}.form-control::-moz-placeholder{color:#
777;opacity:
1}.form-control:-ms-input-placeholder{color:#
777}.form-control::-webkit-input-placeholder{color:#
777}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:
1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:
34px;line-height:
1.42857143 \
0}input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:
30px}input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:
46px}.form-group{margin-bottom:
15px}.radio,.checkbox{position:relative;display:block;min-height:
20px;margin-top:
10px;margin-bottom:
10px}.radio label,.checkbox label{padding-left:
20px;margin-bottom:
0;font-weight:
400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{position:absolute;margin-top:
4px \
9;margin-left:-
20px}.radio+.radio,.checkbox+.checkbox{margin-top:-
5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:
20px;margin-bottom:
0;font-weight:
400;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:
0;margin-left:
10px}input[type=radio][disabled],input[type=checkbox][disabled],input[type=radio].disabled,input[type=checkbox].disabled,fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:
7px;padding-bottom:
7px;margin-bottom:
0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:
0;padding-left:
0}.input-sm,.form-horizontal .form-group-sm .form-control{height:
30px;padding:
5px
10px;font-size:
12px;line-height:
1.5;border-radius:
3px}select.input-sm{height:
30px;line-height:
30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg,.form-horizontal .form-group-lg .form-control{height:
46px;padding:
10px
16px;font-size:
18px;line-height:
1.33;border-radius:
6px}select.input-lg{height:
46px;line-height:
46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:
42.5px}.form-control-feedback{position:absolute;top:
25px;right:
0;z-index:
2;display:block;width:
34px;height:
34px;line-height:
34px;text-align:center}.input-lg+.form-control-feedback{width:
46px;height:
46px;line-height:
46px}.input-sm+.form-control-feedback{width:
30px;height:
30px;line-height:
30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#
3c763d}.has-success .form-control{border-color:#
3c763d;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075);box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075)}.has-success .form-control:focus{border-color:#
2b542c;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075),
0 0 6px #
67b168;box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075),
0 0 6px #
67b168}.has-success .input-group-addon{color:#
3c763d;background-color:#dff0d8;border-color:#
3c763d}.has-success .form-control-feedback{color:#
3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#
8a6d3b}.has-warning .form-control{border-color:#
8a6d3b;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075);box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075)}.has-warning .form-control:focus{border-color:#
66512c;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075),
0 0 6px #c0a16b;box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075),
0 0 6px #c0a16b}.has-warning .input-group-addon{color:#
8a6d3b;background-color:#fcf8e3;border-color:#
8a6d3b}.has-warning .form-control-feedback{color:#
8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075);box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075)}.has-error .form-control:focus{border-color:#
843534;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075),
0 0 6px #ce8483;box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075),
0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label.sr-only~.form-control-feedback{top:
0}.help-block{display:block;margin-top:
5px;margin-bottom:
10px;color:#
737373}@media (min-width:
768px){.form-inline .form-group{display:inline-block;margin-bottom:
0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group
>.form-control{width:
100%}.form-inline .control-label{margin-bottom:
0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:
0;margin-bottom:
0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:
0}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{position:relative;margin-left:
0}.form-inline .has-feedback .form-control-feedback{top:
0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:
7px;margin-top:
0;margin-bottom:
0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:
27px}.form-horizontal .form-group{margin-right:-
15px;margin-left:-
15px}@media (min-width:
768px){.form-horizontal .control-label{padding-top:
7px;margin-bottom:
0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:
0;right:
15px}@media (min-width:
768px){.form-horizontal .form-group-lg .control-label{padding-top:
14.3px}}@media (min-width:
768px){.form-horizontal .form-group-sm .control-label{padding-top:
6px}}.btn{display:inline-block;padding:
6px
12px;margin-bottom:
0;font-size:
14px;font-weight:
400;line-height:
1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:
1px solid transparent;border-radius:
4px}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:
5px auto -webkit-focus-ring-color;outline-offset:-
2px}.btn:hover,.btn:focus{color:#
333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:
0;-webkit-box-shadow:inset
0 3px
5px rgba(
0,
0,
0,
.125);box-shadow:inset
0 3px
5px rgba(
0,
0,
0,
.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=
65);-webkit-box-shadow:none;box-shadow:none;opacity:
.65}.btn-default{color:#
333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open
>.dropdown-toggle.btn-default{color:#
333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open
>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#
333}.btn-primary{color:#fff;background-color:#
428bca;border-color:#
357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open
>.dropdown-toggle.btn-primary{color:#fff;background-color:#
3071a9;border-color:#
285e8e}.btn-primary:active,.btn-primary.active,.open
>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#
428bca;border-color:#
357ebd}.btn-primary .badge{color:#
428bca;background-color:#fff}.btn-success{color:#fff;background-color:#
5cb85c;border-color:#
4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open
>.dropdown-toggle.btn-success{color:#fff;background-color:#
449d44;border-color:#
398439}.btn-success:active,.btn-success.active,.open
>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#
5cb85c;border-color:#
4cae4c}.btn-success .badge{color:#
5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#
5bc0de;border-color:#
46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open
>.dropdown-toggle.btn-info{color:#fff;background-color:#
31b0d5;border-color:#
269abc}.btn-info:active,.btn-info.active,.open
>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#
5bc0de;border-color:#
46b8da}.btn-info .badge{color:#
5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open
>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open
>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open
>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open
>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:
400;color:#
428bca;cursor:pointer;border-radius:
0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#
2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#
777;text-decoration:none}.btn-lg,.btn-group-lg
>.btn{padding:
10px
16px;font-size:
18px;line-height:
1.33;border-radius:
6px}.btn-sm,.btn-group-sm
>.btn{padding:
5px
10px;font-size:
12px;line-height:
1.5;border-radius:
3px}.btn-xs,.btn-group-xs
>.btn{padding:
1px
5px;font-size:
12px;line-height:
1.5;border-radius:
3px}.btn-block{display:block;width:
100%}.btn-block+.btn-block{margin-top:
5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:
100%}.fade{opacity:
0;-webkit-transition:opacity
.15s linear;-o-transition:opacity
.15s linear;transition:opacity
.15s linear}.fade.in{opacity:
1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:
0;overflow:hidden;-webkit-transition:height
.35s ease;-o-transition:height
.35s ease;transition:height
.35s ease}.caret{display:inline-block;width:
0;height:
0;margin-left:
2px;vertical-align:middle;border-top:
4px solid;border-right:
4px solid transparent;border-left:
4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:
0}.dropdown-menu{position:absolute;top:
100%;left:
0;z-index:
1000;display:none;float:left;min-width:
160px;padding:
5px
0;margin:
2px
0 0;font-size:
14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:
1px solid #ccc;border:
1px solid rgba(
0,
0,
0,
.15);border-radius:
4px;-webkit-box-shadow:
0 6px
12px rgba(
0,
0,
0,
.175);box-shadow:
0 6px
12px rgba(
0,
0,
0,
.175)}.dropdown-menu.pull-right{right:
0;left:auto}.dropdown-menu .divider{height:
1px;margin:
9px
0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu
>li
>a{display:block;padding:
3px
20px;clear:both;font-weight:
400;line-height:
1.42857143;color:#
333;white-space:nowrap}.dropdown-menu
>li
>a:hover,.dropdown-menu
>li
>a:focus{color:#
262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu
>.active
>a,.dropdown-menu
>.active
>a:hover,.dropdown-menu
>.active
>a:focus{color:#fff;text-decoration:none;background-color:#
428bca;outline:
0}.dropdown-menu
>.disabled
>a,.dropdown-menu
>.disabled
>a:hover,.dropdown-menu
>.disabled
>a:focus{color:#
777}.dropdown-menu
>.disabled
>a:hover,.dropdown-menu
>.disabled
>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open
>.dropdown-menu{display:block}.open
>a{outline:
0}.dropdown-menu-right{right:
0;left:auto}.dropdown-menu-left{right:auto;left:
0}.dropdown-header{display:block;padding:
3px
20px;font-size:
12px;line-height:
1.42857143;color:#
777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:
0;right:
0;bottom:
0;left:
0;z-index:
990}.pull-right
>.dropdown-menu{right:
0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:
0;border-bottom:
4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:
100%;margin-bottom:
1px}@media (min-width:
768px){.navbar-right .dropdown-menu{right:
0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:
0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group
>.btn,.btn-group-vertical
>.btn{position:relative;float:left}.btn-group
>.btn:hover,.btn-group-vertical
>.btn:hover,.btn-group
>.btn:focus,.btn-group-vertical
>.btn:focus,.btn-group
>.btn:active,.btn-group-vertical
>.btn:active,.btn-group
>.btn.active,.btn-group-vertical
>.btn.active{z-index:
2}.btn-group
>.btn:focus,.btn-group-vertical
>.btn:focus{outline:
0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-
1px}.btn-toolbar{margin-left:-
5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar
>.btn,.btn-toolbar
>.btn-group,.btn-toolbar
>.input-group{margin-left:
5px}.btn-group
>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:
0}.btn-group
>.btn:first-child{margin-left:
0}.btn-group
>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:
0;border-bottom-right-radius:
0}.btn-group
>.btn:last-child:not(:first-child),.btn-group
>.dropdown-toggle:not(:first-child){border-top-left-radius:
0;border-bottom-left-radius:
0}.btn-group
>.btn-group{float:left}.btn-group
>.btn-group:not(:first-child):not(:last-child)
>.btn{border-radius:
0}.btn-group
>.btn-group:first-child
>.btn:last-child,.btn-group
>.btn-group:first-child
>.dropdown-toggle{border-top-right-radius:
0;border-bottom-right-radius:
0}.btn-group
>.btn-group:last-child
>.btn:first-child{border-top-left-radius:
0;border-bottom-left-radius:
0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:
0}.btn-group
>.btn+.dropdown-toggle{padding-right:
8px;padding-left:
8px}.btn-group
>.btn-lg+.dropdown-toggle{padding-right:
12px;padding-left:
12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset
0 3px
5px rgba(
0,
0,
0,
.125);box-shadow:inset
0 3px
5px rgba(
0,
0,
0,
.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:
0}.btn-lg .caret{border-width:
5px
5px
0;border-bottom-width:
0}.dropup .btn-lg .caret{border-width:
0 5px
5px}.btn-group-vertical
>.btn,.btn-group-vertical
>.btn-group,.btn-group-vertical
>.btn-group
>.btn{display:block;float:none;width:
100%;max-width:
100%}.btn-group-vertical
>.btn-group
>.btn{float:none}.btn-group-vertical
>.btn+.btn,.btn-group-vertical
>.btn+.btn-group,.btn-group-vertical
>.btn-group+.btn,.btn-group-vertical
>.btn-group+.btn-group{margin-top:-
1px;margin-left:
0}.btn-group-vertical
>.btn:not(:first-child):not(:last-child){border-radius:
0}.btn-group-vertical
>.btn:first-child:not(:last-child){border-top-right-radius:
4px;border-bottom-right-radius:
0;border-bottom-left-radius:
0}.btn-group-vertical
>.btn:last-child:not(:first-child){border-top-left-radius:
0;border-top-right-radius:
0;border-bottom-left-radius:
4px}.btn-group-vertical
>.btn-group:not(:first-child):not(:last-child)
>.btn{border-radius:
0}.btn-group-vertical
>.btn-group:first-child:not(:last-child)
>.btn:last-child,.btn-group-vertical
>.btn-group:first-child:not(:last-child)
>.dropdown-toggle{border-bottom-right-radius:
0;border-bottom-left-radius:
0}.btn-group-vertical
>.btn-group:last-child:not(:first-child)
>.btn:first-child{border-top-left-radius:
0;border-top-right-radius:
0}.btn-group-justified{display:table;width:
100%;table-layout:fixed;border-collapse:separate}.btn-group-justified
>.btn,.btn-group-justified
>.btn-group{display:table-cell;float:none;width:
1%}.btn-group-justified
>.btn-group .btn{width:
100%}.btn-group-justified
>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]
>.btn
>input[type=radio],[data-toggle=buttons]
>.btn
>input[type=checkbox]{position:absolute;z-index:-
1;filter:alpha(opacity=
0);opacity:
0}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:
0;padding-left:
0}.input-group .form-control{position:relative;z-index:
2;float:left;width:
100%;margin-bottom:
0}.input-group-lg
>.form-control,.input-group-lg
>.input-group-addon,.input-group-lg
>.input-group-btn
>.btn{height:
46px;padding:
10px
16px;font-size:
18px;line-height:
1.33;border-radius:
6px}select.input-group-lg
>.form-control,select.input-group-lg
>.input-group-addon,select.input-group-lg
>.input-group-btn
>.btn{height:
46px;line-height:
46px}textarea.input-group-lg
>.form-control,textarea.input-group-lg
>.input-group-addon,textarea.input-group-lg
>.input-group-btn
>.btn,select[multiple].input-group-lg
>.form-control,select[multiple].input-group-lg
>.input-group-addon,select[multiple].input-group-lg
>.input-group-btn
>.btn{height:auto}.input-group-sm
>.form-control,.input-group-sm
>.input-group-addon,.input-group-sm
>.input-group-btn
>.btn{height:
30px;padding:
5px
10px;font-size:
12px;line-height:
1.5;border-radius:
3px}select.input-group-sm
>.form-control,select.input-group-sm
>.input-group-addon,select.input-group-sm
>.input-group-btn
>.btn{height:
30px;line-height:
30px}textarea.input-group-sm
>.form-control,textarea.input-group-sm
>.input-group-addon,textarea.input-group-sm
>.input-group-btn
>.btn,select[multiple].input-group-sm
>.form-control,select[multiple].input-group-sm
>.input-group-addon,select[multiple].input-group-sm
>.input-group-btn
>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:
0}.input-group-addon,.input-group-btn{width:
1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:
6px
12px;font-size:
14px;font-weight:
400;line-height:
1;color:#
555;text-align:center;background-color:#eee;border:
1px solid #ccc;border-radius:
4px}.input-group-addon.input-sm{padding:
5px
10px;font-size:
12px;border-radius:
3px}.input-group-addon.input-lg{padding:
10px
16px;font-size:
18px;border-radius:
6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:
0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child
>.btn,.input-group-btn:first-child
>.btn-group
>.btn,.input-group-btn:first-child
>.dropdown-toggle,.input-group-btn:last-child
>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child
>.btn-group:not(:last-child)
>.btn{border-top-right-radius:
0;border-bottom-right-radius:
0}.input-group-addon:first-child{border-right:
0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child
>.btn,.input-group-btn:last-child
>.btn-group
>.btn,.input-group-btn:last-child
>.dropdown-toggle,.input-group-btn:first-child
>.btn:not(:first-child),.input-group-btn:first-child
>.btn-group:not(:first-child)
>.btn{border-top-left-radius:
0;border-bottom-left-radius:
0}.input-group-addon:last-child{border-left:
0}.input-group-btn{position:relative;font-size:
0;white-space:nowrap}.input-group-btn
>.btn{position:relative}.input-group-btn
>.btn+.btn{margin-left:-
1px}.input-group-btn
>.btn:hover,.input-group-btn
>.btn:focus,.input-group-btn
>.btn:active{z-index:
2}.input-group-btn:first-child
>.btn,.input-group-btn:first-child
>.btn-group{margin-right:-
1px}.input-group-btn:last-child
>.btn,.input-group-btn:last-child
>.btn-group{margin-left:-
1px}.nav{padding-left:
0;margin-bottom:
0;list-style:none}.nav
>li{position:relative;display:block}.nav
>li
>a{position:relative;display:block;padding:
10px
15px}.nav
>li
>a:hover,.nav
>li
>a:focus{text-decoration:none;background-color:#eee}.nav
>li.disabled
>a{color:#
777}.nav
>li.disabled
>a:hover,.nav
>li.disabled
>a:focus{color:#
777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open
>a,.nav .open
>a:hover,.nav .open
>a:focus{background-color:#eee;border-color:#
428bca}.nav .nav-divider{height:
1px;margin:
9px
0;overflow:hidden;background-color:#e5e5e5}.nav
>li
>a
>img{max-width:none}.nav-tabs{border-bottom:
1px solid #ddd}.nav-tabs
>li{float:left;margin-bottom:-
1px}.nav-tabs
>li
>a{margin-right:
2px;line-height:
1.42857143;border:
1px solid transparent;border-radius:
4px
4px
0 0}.nav-tabs
>li
>a:hover{border-color:#eee #eee #ddd}.nav-tabs
>li.active
>a,.nav-tabs
>li.active
>a:hover,.nav-tabs
>li.active
>a:focus{color:#
555;cursor:default;background-color:#fff;border:
1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:
100%;border-bottom:
0}.nav-tabs.nav-justified
>li{float:none}.nav-tabs.nav-justified
>li
>a{margin-bottom:
5px;text-align:center}.nav-tabs.nav-justified
>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:
768px){.nav-tabs.nav-justified
>li{display:table-cell;width:
1%}.nav-tabs.nav-justified
>li
>a{margin-bottom:
0}}.nav-tabs.nav-justified
>li
>a{margin-right:
0;border-radius:
4px}.nav-tabs.nav-justified
>.active
>a,.nav-tabs.nav-justified
>.active
>a:hover,.nav-tabs.nav-justified
>.active
>a:focus{border:
1px solid #ddd}@media (min-width:
768px){.nav-tabs.nav-justified
>li
>a{border-bottom:
1px solid #ddd;border-radius:
4px
4px
0 0}.nav-tabs.nav-justified
>.active
>a,.nav-tabs.nav-justified
>.active
>a:hover,.nav-tabs.nav-justified
>.active
>a:focus{border-bottom-color:#fff}}.nav-pills
>li{float:left}.nav-pills
>li
>a{border-radius:
4px}.nav-pills
>li+li{margin-left:
2px}.nav-pills
>li.active
>a,.nav-pills
>li.active
>a:hover,.nav-pills
>li.active
>a:focus{color:#fff;background-color:#
428bca}.nav-stacked
>li{float:none}.nav-stacked
>li+li{margin-top:
2px;margin-left:
0}.nav-justified{width:
100%}.nav-justified
>li{float:none}.nav-justified
>li
>a{margin-bottom:
5px;text-align:center}.nav-justified
>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:
768px){.nav-justified
>li{display:table-cell;width:
1%}.nav-justified
>li
>a{margin-bottom:
0}}.nav-tabs-justified{border-bottom:
0}.nav-tabs-justified
>li
>a{margin-right:
0;border-radius:
4px}.nav-tabs-justified
>.active
>a,.nav-tabs-justified
>.active
>a:hover,.nav-tabs-justified
>.active
>a:focus{border:
1px solid #ddd}@media (min-width:
768px){.nav-tabs-justified
>li
>a{border-bottom:
1px solid #ddd;border-radius:
4px
4px
0 0}.nav-tabs-justified
>.active
>a,.nav-tabs-justified
>.active
>a:hover,.nav-tabs-justified
>.active
>a:focus{border-bottom-color:#fff}}.tab-content
>.tab-pane{display:none}.tab-content
>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-
1px;border-top-left-radius:
0;border-top-right-radius:
0}.navbar{position:relative;min-height:
50px;margin-bottom:
20px;border:
1px solid transparent}@media (min-width:
768px){.navbar{border-radius:
4px}}@media (min-width:
768px){.navbar-header{float:left}}.navbar-collapse{padding-right:
15px;padding-left:
15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:
1px solid transparent;-webkit-box-shadow:inset
0 1px
0 rgba(
255,
255,
255,
.1);box-shadow:inset
0 1px
0 rgba(
255,
255,
255,
.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:
768px){.navbar-collapse{width:auto;border-top:
0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:
0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:
0;padding-left:
0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:
340px}@media (max-width:
480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:
200px}}.container
>.navbar-header,.container-fluid
>.navbar-header,.container
>.navbar-collapse,.container-fluid
>.navbar-collapse{margin-right:-
15px;margin-left:-
15px}@media (min-width:
768px){.container
>.navbar-header,.container-fluid
>.navbar-header,.container
>.navbar-collapse,.container-fluid
>.navbar-collapse{margin-right:
0;margin-left:
0}}.navbar-static-top{z-index:
1000;border-width:
0 0 1px}@media (min-width:
768px){.navbar-static-top{border-radius:
0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:
0;left:
0;z-index:
1030;-webkit-transform:translate3d(
0,
0,
0);-o-transform:translate3d(
0,
0,
0);transform:translate3d(
0,
0,
0)}@media (min-width:
768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:
0}}.navbar-fixed-top{top:
0;border-width:
0 0 1px}.navbar-fixed-bottom{bottom:
0;margin-bottom:
0;border-width:
1px
0 0}.navbar-brand{float:left;height:
50px;padding:
15px
15px;font-size:
18px;line-height:
20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:
768px){.navbar
>.container .navbar-brand,.navbar
>.container-fluid .navbar-brand{margin-left:-
15px}}.navbar-toggle{position:relative;float:right;padding:
9px
10px;margin-top:
8px;margin-right:
15px;margin-bottom:
8px;background-color:transparent;background-image:none;border:
1px solid transparent;border-radius:
4px}.navbar-toggle:focus{outline:
0}.navbar-toggle .icon-bar{display:block;width:
22px;height:
2px;border-radius:
1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:
4px}@media (min-width:
768px){.navbar-toggle{display:none}}.navbar-nav{margin:
7.5px -
15px}.navbar-nav
>li
>a{padding-top:
10px;padding-bottom:
10px;line-height:
20px}@media (max-width:
767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:
0;background-color:transparent;border:
0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu
>li
>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:
5px
15px
5px
25px}.navbar-nav .open .dropdown-menu
>li
>a{line-height:
20px}.navbar-nav .open .dropdown-menu
>li
>a:hover,.navbar-nav .open .dropdown-menu
>li
>a:focus{background-image:none}}@media (min-width:
768px){.navbar-nav{float:left;margin:
0}.navbar-nav
>li{float:left}.navbar-nav
>li
>a{padding-top:
15px;padding-bottom:
15px}.navbar-nav.navbar-right:last-child{margin-right:-
15px}}@media (min-width:
768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{padding:
10px
15px;margin-top:
8px;margin-right:-
15px;margin-bottom:
8px;margin-left:-
15px;border-top:
1px solid transparent;border-bottom:
1px solid transparent;-webkit-box-shadow:inset
0 1px
0 rgba(
255,
255,
255,
.1),
0 1px
0 rgba(
255,
255,
255,
.1);box-shadow:inset
0 1px
0 rgba(
255,
255,
255,
.1),
0 1px
0 rgba(
255,
255,
255,
.1)}@media (min-width:
768px){.navbar-form .form-group{display:inline-block;margin-bottom:
0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group
>.form-control{width:
100%}.navbar-form .control-label{margin-bottom:
0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:
0;margin-bottom:
0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:
0}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{position:relative;margin-left:
0}.navbar-form .has-feedback .form-control-feedback{top:
0}}@media (max-width:
767px){.navbar-form .form-group{margin-bottom:
5px}}@media (min-width:
768px){.navbar-form{width:auto;padding-top:
0;padding-bottom:
0;margin-right:
0;margin-left:
0;border:
0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-
15px}}.navbar-nav
>li
>.dropdown-menu{margin-top:
0;border-top-left-radius:
0;border-top-right-radius:
0}.navbar-fixed-bottom .navbar-nav
>li
>.dropdown-menu{border-bottom-right-radius:
0;border-bottom-left-radius:
0}.navbar-btn{margin-top:
8px;margin-bottom:
8px}.navbar-btn.btn-sm{margin-top:
10px;margin-bottom:
10px}.navbar-btn.btn-xs{margin-top:
14px;margin-bottom:
14px}.navbar-text{margin-top:
15px;margin-bottom:
15px}@media (min-width:
768px){.navbar-text{float:left;margin-right:
15px;margin-left:
15px}.navbar-text.navbar-right:last-child{margin-right:
0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#
777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#
5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#
777}.navbar-default .navbar-nav
>li
>a{color:#
777}.navbar-default .navbar-nav
>li
>a:hover,.navbar-default .navbar-nav
>li
>a:focus{color:#
333;background-color:transparent}.navbar-default .navbar-nav
>.active
>a,.navbar-default .navbar-nav
>.active
>a:hover,.navbar-default .navbar-nav
>.active
>a:focus{color:#
555;background-color:#e7e7e7}.navbar-default .navbar-nav
>.disabled
>a,.navbar-default .navbar-nav
>.disabled
>a:hover,.navbar-default .navbar-nav
>.disabled
>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#
888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav
>.open
>a,.navbar-default .navbar-nav
>.open
>a:hover,.navbar-default .navbar-nav
>.open
>a:focus{color:#
555;background-color:#e7e7e7}@media (max-width:
767px){.navbar-default .navbar-nav .open .dropdown-menu
>li
>a{color:#
777}.navbar-default .navbar-nav .open .dropdown-menu
>li
>a:hover,.navbar-default .navbar-nav .open .dropdown-menu
>li
>a:focus{color:#
333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu
>.active
>a,.navbar-default .navbar-nav .open .dropdown-menu
>.active
>a:hover,.navbar-default .navbar-nav .open .dropdown-menu
>.active
>a:focus{color:#
555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu
>.disabled
>a,.navbar-default .navbar-nav .open .dropdown-menu
>.disabled
>a:hover,.navbar-default .navbar-nav .open .dropdown-menu
>.disabled
>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#
777}.navbar-default .navbar-link:hover{color:#
333}.navbar-default .btn-link{color:#
777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#
333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#
222;border-color:#
080808}.navbar-inverse .navbar-brand{color:#
777}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#
777}.navbar-inverse .navbar-nav
>li
>a{color:#
777}.navbar-inverse .navbar-nav
>li
>a:hover,.navbar-inverse .navbar-nav
>li
>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav
>.active
>a,.navbar-inverse .navbar-nav
>.active
>a:hover,.navbar-inverse .navbar-nav
>.active
>a:focus{color:#fff;background-color:#
080808}.navbar-inverse .navbar-nav
>.disabled
>a,.navbar-inverse .navbar-nav
>.disabled
>a:hover,.navbar-inverse .navbar-nav
>.disabled
>a:focus{color:#
444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#
333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#
333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#
101010}.navbar-inverse .navbar-nav
>.open
>a,.navbar-inverse .navbar-nav
>.open
>a:hover,.navbar-inverse .navbar-nav
>.open
>a:focus{color:#fff;background-color:#
080808}@media (max-width:
767px){.navbar-inverse .navbar-nav .open .dropdown-menu
>.dropdown-header{border-color:#
080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#
080808}.navbar-inverse .navbar-nav .open .dropdown-menu
>li
>a{color:#
777}.navbar-inverse .navbar-nav .open .dropdown-menu
>li
>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu
>li
>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu
>.active
>a,.navbar-inverse .navbar-nav .open .dropdown-menu
>.active
>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu
>.active
>a:focus{color:#fff;background-color:#
080808}.navbar-inverse .navbar-nav .open .dropdown-menu
>.disabled
>a,.navbar-inverse .navbar-nav .open .dropdown-menu
>.disabled
>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu
>.disabled
>a:focus{color:#
444;background-color:transparent}}.navbar-inverse .navbar-link{color:#
777}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#
777}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#
444}.breadcrumb{padding:
8px
15px;margin-bottom:
20px;list-style:none;background-color:#f5f5f5;border-radius:
4px}.breadcrumb
>li{display:inline-block}.breadcrumb
>li+li:before{padding:
0 5px;color:#ccc;content:"/\
00a0"}.breadcrumb
>.active{color:#
777}.pagination{display:inline-block;padding-left:
0;margin:
20px
0;border-radius:
4px}.pagination
>li{display:inline}.pagination
>li
>a,.pagination
>li
>span{position:relative;float:left;padding:
6px
12px;margin-left:-
1px;line-height:
1.42857143;color:#
428bca;text-decoration:none;background-color:#fff;border:
1px solid #ddd}.pagination
>li:first-child
>a,.pagination
>li:first-child
>span{margin-left:
0;border-top-left-radius:
4px;border-bottom-left-radius:
4px}.pagination
>li:last-child
>a,.pagination
>li:last-child
>span{border-top-right-radius:
4px;border-bottom-right-radius:
4px}.pagination
>li
>a:hover,.pagination
>li
>span:hover,.pagination
>li
>a:focus,.pagination
>li
>span:focus{color:#
2a6496;background-color:#eee;border-color:#ddd}.pagination
>.active
>a,.pagination
>.active
>span,.pagination
>.active
>a:hover,.pagination
>.active
>span:hover,.pagination
>.active
>a:focus,.pagination
>.active
>span:focus{z-index:
2;color:#fff;cursor:default;background-color:#
428bca;border-color:#
428bca}.pagination
>.disabled
>span,.pagination
>.disabled
>span:hover,.pagination
>.disabled
>span:focus,.pagination
>.disabled
>a,.pagination
>.disabled
>a:hover,.pagination
>.disabled
>a:focus{color:#
777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg
>li
>a,.pagination-lg
>li
>span{padding:
10px
16px;font-size:
18px}.pagination-lg
>li:first-child
>a,.pagination-lg
>li:first-child
>span{border-top-left-radius:
6px;border-bottom-left-radius:
6px}.pagination-lg
>li:last-child
>a,.pagination-lg
>li:last-child
>span{border-top-right-radius:
6px;border-bottom-right-radius:
6px}.pagination-sm
>li
>a,.pagination-sm
>li
>span{padding:
5px
10px;font-size:
12px}.pagination-sm
>li:first-child
>a,.pagination-sm
>li:first-child
>span{border-top-left-radius:
3px;border-bottom-left-radius:
3px}.pagination-sm
>li:last-child
>a,.pagination-sm
>li:last-child
>span{border-top-right-radius:
3px;border-bottom-right-radius:
3px}.pager{padding-left:
0;margin:
20px
0;text-align:center;list-style:none}.pager li{display:inline}.pager li
>a,.pager li
>span{display:inline-block;padding:
5px
14px;background-color:#fff;border:
1px solid #ddd;border-radius:
15px}.pager li
>a:hover,.pager li
>a:focus{text-decoration:none;background-color:#eee}.pager .next
>a,.pager .next
>span{float:right}.pager .previous
>a,.pager .previous
>span{float:left}.pager .disabled
>a,.pager .disabled
>a:hover,.pager .disabled
>a:focus,.pager .disabled
>span{color:#
777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:
.2em
.6em
.3em;font-size:
75%;font-weight:
700;line-height:
1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:
.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-
1px}.label-default{background-color:#
777}.label-default[href]:hover,.label-default[href]:focus{background-color:#
5e5e5e}.label-primary{background-color:#
428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#
3071a9}.label-success{background-color:#
5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#
449d44}.label-info{background-color:#
5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#
31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:
10px;padding:
3px
7px;font-size:
12px;font-weight:
700;line-height:
1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#
777;border-radius:
10px}.badge:empty{display:none}.btn .badge{position:relative;top:-
1px}.btn-xs .badge{top:
0;padding:
1px
5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active
>.badge,.nav-pills
>.active
>a
>.badge{color:#
428bca;background-color:#fff}.nav-pills
>li
>a
>.badge{margin-left:
3px}.jumbotron{padding:
30px;margin-bottom:
30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:
15px;font-size:
21px;font-weight:
200}.jumbotron
>hr{border-top-color:#d5d5d5}.container .jumbotron{border-radius:
6px}.jumbotron .container{max-width:
100%}@media screen and (min-width:
768px){.jumbotron{padding-top:
48px;padding-bottom:
48px}.container .jumbotron{padding-right:
60px;padding-left:
60px}.jumbotron h1,.jumbotron .h1{font-size:
63px}}.thumbnail{display:block;padding:
4px;margin-bottom:
20px;line-height:
1.42857143;background-color:#fff;border:
1px solid #ddd;border-radius:
4px;-webkit-transition:all
.2s ease-in-out;-o-transition:all
.2s ease-in-out;transition:all
.2s ease-in-out}.thumbnail
>img,.thumbnail a
>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#
428bca}.thumbnail .caption{padding:
9px;color:#
333}.alert{padding:
15px;margin-bottom:
20px;border:
1px solid transparent;border-radius:
4px}.alert h4{margin-top:
0;color:inherit}.alert .alert-link{font-weight:
700}.alert
>p,.alert
>ul{margin-bottom:
0}.alert
>p+p{margin-top:
5px}.alert-dismissable,.alert-dismissible{padding-right:
35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-
2px;right:-
21px;color:inherit}.alert-success{color:#
3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#
2b542c}.alert-info{color:#
31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#
245269}.alert-warning{color:#
8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#
66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#
843534}@-webkit-keyframes progress-bar-stripes{from{background-position:
40px
0}to{background-position:
0 0}}@-o-keyframes progress-bar-stripes{from{background-position:
40px
0}to{background-position:
0 0}}@keyframes progress-bar-stripes{from{background-position:
40px
0}to{background-position:
0 0}}.progress{height:
20px;margin-bottom:
20px;overflow:hidden;background-color:#f5f5f5;border-radius:
4px;-webkit-box-shadow:inset
0 1px
2px rgba(
0,
0,
0,
.1);box-shadow:inset
0 1px
2px rgba(
0,
0,
0,
.1)}.progress-bar{float:left;width:
0;height:
100%;font-size:
12px;line-height:
20px;color:#fff;text-align:center;background-color:#
428bca;-webkit-box-shadow:inset
0 -
1px
0 rgba(
0,
0,
0,
.15);box-shadow:inset
0 -
1px
0 rgba(
0,
0,
0,
.15);-webkit-transition:width
.6s ease;-o-transition:width
.6s ease;transition:width
.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:-o-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);-webkit-background-size:
40px
40px;background-size:
40px
40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes
2s linear infinite;-o-animation:progress-bar-stripes
2s linear infinite;animation:progress-bar-stripes
2s linear infinite}.progress-bar[
aria-valuenow="
1"],.progress-bar[
aria-valuenow="
2"]{min-width:
30px}.progress-bar[
aria-valuenow="
0"]{min-width:
30px;color:#
777;background-color:transparent;background-image:none;-webkit-box-shadow:none;box-shadow:none}.progress-bar-success{background-color:#
5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:-o-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent)}.progress-bar-info{background-color:#
5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:-o-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:-o-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:-o-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent)}.media,.media-body{overflow:hidden;zoom:
1}.media,.media .media{margin-top:
15px}.media:first-child{margin-top:
0}.media-object{display:block}.media-heading{margin:
0 0 5px}.media
>.pull-left{margin-right:
10px}.media
>.pull-right{margin-left:
10px}.media-list{padding-left:
0;list-style:none}.list-group{padding-left:
0;margin-bottom:
20px}.list-group-item{position:relative;display:block;padding:
10px
15px;margin-bottom:-
1px;background-color:#fff;border:
1px solid #ddd}.list-group-item:first-child{border-top-left-radius:
4px;border-top-right-radius:
4px}.list-group-item:last-child{margin-bottom:
0;border-bottom-right-radius:
4px;border-bottom-left-radius:
4px}.list-group-item
>.badge{float:right}.list-group-item
>.badge+.badge{margin-right:
5px}a.list-group-item{color:#
555}a.list-group-item .list-group-item-heading{color:#
333}a.list-group-item:hover,a.list-group-item:focus{color:#
555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#
777;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#
777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:
2;color:#fff;background-color:#
428bca;border-color:#
428bca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading
>small,.list-group-item.active:hover .list-group-item-heading
>small,.list-group-item.active:focus .list-group-item-heading
>small,.list-group-item.active .list-group-item-heading
>.small,.list-group-item.active:hover .list-group-item-heading
>.small,.list-group-item.active:focus .list-group-item-heading
>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#
3c763d;background-color:#dff0d8}a.list-group-item-success{color:#
3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#
3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#
3c763d;border-color:#
3c763d}.list-group-item-info{color:#
31708f;background-color:#d9edf7}a.list-group-item-info{color:#
31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#
31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#
31708f;border-color:#
31708f}.list-group-item-warning{color:#
8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#
8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#
8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#
8a6d3b;border-color:#
8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:
0;margin-bottom:
5px}.list-group-item-text{margin-bottom:
0;line-height:
1.3}.panel{margin-bottom:
20px;background-color:#fff;border:
1px solid transparent;border-radius:
4px;-webkit-box-shadow:
0 1px
1px rgba(
0,
0,
0,
.05);box-shadow:
0 1px
1px rgba(
0,
0,
0,
.05)}.panel-body{padding:
15px}.panel-heading{padding:
10px
15px;border-bottom:
1px solid transparent;border-top-left-radius:
3px;border-top-right-radius:
3px}.panel-heading
>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:
0;margin-bottom:
0;font-size:
16px;color:inherit}.panel-title
>a{color:inherit}.panel-footer{padding:
10px
15px;background-color:#f5f5f5;border-top:
1px solid #ddd;border-bottom-right-radius:
3px;border-bottom-left-radius:
3px}.panel
>.list-group{margin-bottom:
0}.panel
>.list-group .list-group-item{border-width:
1px
0;border-radius:
0}.panel
>.list-group:first-child .list-group-item:first-child{border-top:
0;border-top-left-radius:
3px;border-top-right-radius:
3px}.panel
>.list-group:last-child .list-group-item:last-child{border-bottom:
0;border-bottom-right-radius:
3px;border-bottom-left-radius:
3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:
0}.list-group+.panel-footer{border-top-width:
0}.panel
>.table,.panel
>.table-responsive
>.table,.panel
>.panel-collapse
>.table{margin-bottom:
0}.panel
>.table:first-child,.panel
>.table-responsive:first-child
>.table:first-child{border-top-left-radius:
3px;border-top-right-radius:
3px}.panel
>.table:first-child
>thead:first-child
>tr:first-child td:first-child,.panel
>.table-responsive:first-child
>.table:first-child
>thead:first-child
>tr:first-child td:first-child,.panel
>.table:first-child
>tbody:first-child
>tr:first-child td:first-child,.panel
>.table-responsive:first-child
>.table:first-child
>tbody:first-child
>tr:first-child td:first-child,.panel
>.table:first-child
>thead:first-child
>tr:first-child th:first-child,.panel
>.table-responsive:first-child
>.table:first-child
>thead:first-child
>tr:first-child th:first-child,.panel
>.table:first-child
>tbody:first-child
>tr:first-child th:first-child,.panel
>.table-responsive:first-child
>.table:first-child
>tbody:first-child
>tr:first-child th:first-child{border-top-left-radius:
3px}.panel
>.table:first-child
>thead:first-child
>tr:first-child td:last-child,.panel
>.table-responsive:first-child
>.table:first-child
>thead:first-child
>tr:first-child td:last-child,.panel
>.table:first-child
>tbody:first-child
>tr:first-child td:last-child,.panel
>.table-responsive:first-child
>.table:first-child
>tbody:first-child
>tr:first-child td:last-child,.panel
>.table:first-child
>thead:first-child
>tr:first-child th:last-child,.panel
>.table-responsive:first-child
>.table:first-child
>thead:first-child
>tr:first-child th:last-child,.panel
>.table:first-child
>tbody:first-child
>tr:first-child th:last-child,.panel
>.table-responsive:first-child
>.table:first-child
>tbody:first-child
>tr:first-child th:last-child{border-top-right-radius:
3px}.panel
>.table:last-child,.panel
>.table-responsive:last-child
>.table:last-child{border-bottom-right-radius:
3px;border-bottom-left-radius:
3px}.panel
>.table:last-child
>tbody:last-child
>tr:last-child td:first-child,.panel
>.table-responsive:last-child
>.table:last-child
>tbody:last-child
>tr:last-child td:first-child,.panel
>.table:last-child
>tfoot:last-child
>tr:last-child td:first-child,.panel
>.table-responsive:last-child
>.table:last-child
>tfoot:last-child
>tr:last-child td:first-child,.panel
>.table:last-child
>tbody:last-child
>tr:last-child th:first-child,.panel
>.table-responsive:last-child
>.table:last-child
>tbody:last-child
>tr:last-child th:first-child,.panel
>.table:last-child
>tfoot:last-child
>tr:last-child th:first-child,.panel
>.table-responsive:last-child
>.table:last-child
>tfoot:last-child
>tr:last-child th:first-child{border-bottom-left-radius:
3px}.panel
>.table:last-child
>tbody:last-child
>tr:last-child td:last-child,.panel
>.table-responsive:last-child
>.table:last-child
>tbody:last-child
>tr:last-child td:last-child,.panel
>.table:last-child
>tfoot:last-child
>tr:last-child td:last-child,.panel
>.table-responsive:last-child
>.table:last-child
>tfoot:last-child
>tr:last-child td:last-child,.panel
>.table:last-child
>tbody:last-child
>tr:last-child th:last-child,.panel
>.table-responsive:last-child
>.table:last-child
>tbody:last-child
>tr:last-child th:last-child,.panel
>.table:last-child
>tfoot:last-child
>tr:last-child th:last-child,.panel
>.table-responsive:last-child
>.table:last-child
>tfoot:last-child
>tr:last-child th:last-child{border-bottom-right-radius:
3px}.panel
>.panel-body+.table,.panel
>.panel-body+.table-responsive{border-top:
1px solid #ddd}.panel
>.table
>tbody:first-child
>tr:first-child th,.panel
>.table
>tbody:first-child
>tr:first-child td{border-top:
0}.panel
>.table-bordered,.panel
>.table-responsive
>.table-bordered{border:
0}.panel
>.table-bordered
>thead
>tr
>th:first-child,.panel
>.table-responsive
>.table-bordered
>thead
>tr
>th:first-child,.panel
>.table-bordered
>tbody
>tr
>th:first-child,.panel
>.table-responsive
>.table-bordered
>tbody
>tr
>th:first-child,.panel
>.table-bordered
>tfoot
>tr
>th:first-child,.panel
>.table-responsive
>.table-bordered
>tfoot
>tr
>th:first-child,.panel
>.table-bordered
>thead
>tr
>td:first-child,.panel
>.table-responsive
>.table-bordered
>thead
>tr
>td:first-child,.panel
>.table-bordered
>tbody
>tr
>td:first-child,.panel
>.table-responsive
>.table-bordered
>tbody
>tr
>td:first-child,.panel
>.table-bordered
>tfoot
>tr
>td:first-child,.panel
>.table-responsive
>.table-bordered
>tfoot
>tr
>td:first-child{border-left:
0}.panel
>.table-bordered
>thead
>tr
>th:last-child,.panel
>.table-responsive
>.table-bordered
>thead
>tr
>th:last-child,.panel
>.table-bordered
>tbody
>tr
>th:last-child,.panel
>.table-responsive
>.table-bordered
>tbody
>tr
>th:last-child,.panel
>.table-bordered
>tfoot
>tr
>th:last-child,.panel
>.table-responsive
>.table-bordered
>tfoot
>tr
>th:last-child,.panel
>.table-bordered
>thead
>tr
>td:last-child,.panel
>.table-responsive
>.table-bordered
>thead
>tr
>td:last-child,.panel
>.table-bordered
>tbody
>tr
>td:last-child,.panel
>.table-responsive
>.table-bordered
>tbody
>tr
>td:last-child,.panel
>.table-bordered
>tfoot
>tr
>td:last-child,.panel
>.table-responsive
>.table-bordered
>tfoot
>tr
>td:last-child{border-right:
0}.panel
>.table-bordered
>thead
>tr:first-child
>td,.panel
>.table-responsive
>.table-bordered
>thead
>tr:first-child
>td,.panel
>.table-bordered
>tbody
>tr:first-child
>td,.panel
>.table-responsive
>.table-bordered
>tbody
>tr:first-child
>td,.panel
>.table-bordered
>thead
>tr:first-child
>th,.panel
>.table-responsive
>.table-bordered
>thead
>tr:first-child
>th,.panel
>.table-bordered
>tbody
>tr:first-child
>th,.panel
>.table-responsive
>.table-bordered
>tbody
>tr:first-child
>th{border-bottom:
0}.panel
>.table-bordered
>tbody
>tr:last-child
>td,.panel
>.table-responsive
>.table-bordered
>tbody
>tr:last-child
>td,.panel
>.table-bordered
>tfoot
>tr:last-child
>td,.panel
>.table-responsive
>.table-bordered
>tfoot
>tr:last-child
>td,.panel
>.table-bordered
>tbody
>tr:last-child
>th,.panel
>.table-responsive
>.table-bordered
>tbody
>tr:last-child
>th,.panel
>.table-bordered
>tfoot
>tr:last-child
>th,.panel
>.table-responsive
>.table-bordered
>tfoot
>tr:last-child
>th{border-bottom:
0}.panel
>.table-responsive{margin-bottom:
0;border:
0}.panel-group{margin-bottom:
20px}.panel-group .panel{margin-bottom:
0;border-radius:
4px}.panel-group .panel+.panel{margin-top:
5px}.panel-group .panel-heading{border-bottom:
0}.panel-group .panel-heading+.panel-collapse
>.panel-body{border-top:
1px solid #ddd}.panel-group .panel-footer{border-top:
0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:
1px solid #ddd}.panel-default{border-color:#ddd}.panel-default
>.panel-heading{color:#
333;background-color:#f5f5f5;border-color:#ddd}.panel-default
>.panel-heading+.panel-collapse
>.panel-body{border-top-color:#ddd}.panel-default
>.panel-heading .badge{color:#f5f5f5;background-color:#
333}.panel-default
>.panel-footer+.panel-collapse
>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#
428bca}.panel-primary
>.panel-heading{color:#fff;background-color:#
428bca;border-color:#
428bca}.panel-primary
>.panel-heading+.panel-collapse
>.panel-body{border-top-color:#
428bca}.panel-primary
>.panel-heading .badge{color:#
428bca;background-color:#fff}.panel-primary
>.panel-footer+.panel-collapse
>.panel-body{border-bottom-color:#
428bca}.panel-success{border-color:#d6e9c6}.panel-success
>.panel-heading{color:#
3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success
>.panel-heading+.panel-collapse
>.panel-body{border-top-color:#d6e9c6}.panel-success
>.panel-heading .badge{color:#dff0d8;background-color:#
3c763d}.panel-success
>.panel-footer+.panel-collapse
>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info
>.panel-heading{color:#
31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info
>.panel-heading+.panel-collapse
>.panel-body{border-top-color:#bce8f1}.panel-info
>.panel-heading .badge{color:#d9edf7;background-color:#
31708f}.panel-info
>.panel-footer+.panel-collapse
>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning
>.panel-heading{color:#
8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning
>.panel-heading+.panel-collapse
>.panel-body{border-top-color:#faebcc}.panel-warning
>.panel-heading .badge{color:#fcf8e3;background-color:#
8a6d3b}.panel-warning
>.panel-footer+.panel-collapse
>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger
>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger
>.panel-heading+.panel-collapse
>.panel-body{border-top-color:#ebccd1}.panel-danger
>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger
>.panel-footer+.panel-collapse
>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:
0;padding:
0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object{position:absolute;top:
0;bottom:
0;left:
0;width:
100%;height:
100%;border:
0}.embed-responsive.embed-responsive-
16by9{padding-bottom:
56.25%}.embed-responsive.embed-responsive-
4by3{padding-bottom:
75%}.well{min-height:
20px;padding:
19px;margin-bottom:
20px;background-color:#f5f5f5;border:
1px solid #e3e3e3;border-radius:
4px;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.05);box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.05)}.well blockquote{border-color:#ddd;border-color:rgba(
0,
0,
0,
.15)}.well-lg{padding:
24px;border-radius:
6px}.well-sm{padding:
9px;border-radius:
3px}.close{float:right;font-size:
21px;font-weight:
700;line-height:
1;color:#
000;text-shadow:
0 1px
0 #fff;filter:alpha(opacity=
20);opacity:
.2}.close:hover,.close:focus{color:#
000;text-decoration:none;cursor:pointer;filter:alpha(opacity=
50);opacity:
.5}button.close{-webkit-appearance:none;padding:
0;cursor:pointer;background:
0 0;border:
0}.modal-open{overflow:hidden}.modal{position:fixed;top:
0;right:
0;bottom:
0;left:
0;z-index:
1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:
0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform
.3s ease-out;-o-transition:-o-transform
.3s ease-out;transition:transform
.3s ease-out;-webkit-transform:translate3d(
0,-
25%,
0);-o-transform:translate3d(
0,-
25%,
0);transform:translate3d(
0,-
25%,
0)}.modal.in .modal-dialog{-webkit-transform:translate3d(
0,
0,
0);-o-transform:translate3d(
0,
0,
0);transform:translate3d(
0,
0,
0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:
10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:
1px solid #
999;border:
1px solid rgba(
0,
0,
0,
.2);border-radius:
6px;outline:
0;-webkit-box-shadow:
0 3px
9px rgba(
0,
0,
0,
.5);box-shadow:
0 3px
9px rgba(
0,
0,
0,
.5)}.modal-backdrop{position:fixed;top:
0;right:
0;bottom:
0;left:
0;z-index:
1040;background-color:#
000}.modal-backdrop.fade{filter:alpha(opacity=
0);opacity:
0}.modal-backdrop.in{filter:alpha(opacity=
50);opacity:
.5}.modal-header{min-height:
16.43px;padding:
15px;border-bottom:
1px solid #e5e5e5}.modal-header .close{margin-top:-
2px}.modal-title{margin:
0;line-height:
1.42857143}.modal-body{position:relative;padding:
15px}.modal-footer{padding:
15px;text-align:right;border-top:
1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:
0;margin-left:
5px}.modal-footer .btn-group .btn+.btn{margin-left:-
1px}.modal-footer .btn-block+.btn-block{margin-left:
0}.modal-scrollbar-measure{position:absolute;top:-
9999px;width:
50px;height:
50px;overflow:scroll}@media (min-width:
768px){.modal-dialog{width:
600px;margin:
30px auto}.modal-content{-webkit-box-shadow:
0 5px
15px rgba(
0,
0,
0,
.5);box-shadow:
0 5px
15px rgba(
0,
0,
0,
.5)}.modal-sm{width:
300px}}@media (min-width:
992px){.modal-lg{width:
900px}}.tooltip{position:absolute;z-index:
1070;display:block;font-size:
12px;line-height:
1.4;visibility:visible;filter:alpha(opacity=
0);opacity:
0}.tooltip.in{filter:alpha(opacity=
90);opacity:
.9}.tooltip.top{padding:
5px
0;margin-top:-
3px}.tooltip.right{padding:
0 5px;margin-left:
3px}.tooltip.bottom{padding:
5px
0;margin-top:
3px}.tooltip.left{padding:
0 5px;margin-left:-
3px}.tooltip-inner{max-width:
200px;padding:
3px
8px;color:#fff;text-align:center;text-decoration:none;background-color:#
000;border-radius:
4px}.tooltip-arrow{position:absolute;width:
0;height:
0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:
0;left:
50%;margin-left:-
5px;border-width:
5px
5px
0;border-top-color:#
000}.tooltip.top-left .tooltip-arrow{bottom:
0;left:
5px;border-width:
5px
5px
0;border-top-color:#
000}.tooltip.top-right .tooltip-arrow{right:
5px;bottom:
0;border-width:
5px
5px
0;border-top-color:#
000}.tooltip.right .tooltip-arrow{top:
50%;left:
0;margin-top:-
5px;border-width:
5px
5px
5px
0;border-right-color:#
000}.tooltip.left .tooltip-arrow{top:
50%;right:
0;margin-top:-
5px;border-width:
5px
0 5px
5px;border-left-color:#
000}.tooltip.bottom .tooltip-arrow{top:
0;left:
50%;margin-left:-
5px;border-width:
0 5px
5px;border-bottom-color:#
000}.tooltip.bottom-left .tooltip-arrow{top:
0;left:
5px;border-width:
0 5px
5px;border-bottom-color:#
000}.tooltip.bottom-right .tooltip-arrow{top:
0;right:
5px;border-width:
0 5px
5px;border-bottom-color:#
000}.popover{position:absolute;top:
0;left:
0;z-index:
1060;display:none;max-width:
276px;padding:
1px;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:
1px solid #ccc;border:
1px solid rgba(
0,
0,
0,
.2);border-radius:
6px;-webkit-box-shadow:
0 5px
10px rgba(
0,
0,
0,
.2);box-shadow:
0 5px
10px rgba(
0,
0,
0,
.2)}.popover.top{margin-top:-
10px}.popover.right{margin-left:
10px}.popover.bottom{margin-top:
10px}.popover.left{margin-left:-
10px}.popover-title{padding:
8px
14px;margin:
0;font-size:
14px;font-weight:
400;line-height:
18px;background-color:#f7f7f7;border-bottom:
1px solid #ebebeb;border-radius:
5px
5px
0 0}.popover-content{padding:
9px
14px}.popover
>.arrow,.popover
>.arrow:after{position:absolute;display:block;width:
0;height:
0;border-color:transparent;border-style:solid}.popover
>.arrow{border-width:
11px}.popover
>.arrow:after{content:"";border-width:
10px}.popover.top
>.arrow{bottom:-
11px;left:
50%;margin-left:-
11px;border-top-color:#
999;border-top-color:rgba(
0,
0,
0,
.25);border-bottom-width:
0}.popover.top
>.arrow:after{bottom:
1px;margin-left:-
10px;content:" ";border-top-color:#fff;border-bottom-width:
0}.popover.right
>.arrow{top:
50%;left:-
11px;margin-top:-
11px;border-right-color:#
999;border-right-color:rgba(
0,
0,
0,
.25);border-left-width:
0}.popover.right
>.arrow:after{bottom:-
10px;left:
1px;content:" ";border-right-color:#fff;border-left-width:
0}.popover.bottom
>.arrow{top:-
11px;left:
50%;margin-left:-
11px;border-top-width:
0;border-bottom-color:#
999;border-bottom-color:rgba(
0,
0,
0,
.25)}.popover.bottom
>.arrow:after{top:
1px;margin-left:-
10px;content:" ";border-top-width:
0;border-bottom-color:#fff}.popover.left
>.arrow{top:
50%;right:-
11px;margin-top:-
11px;border-right-width:
0;border-left-color:#
999;border-left-color:rgba(
0,
0,
0,
.25)}.popover.left
>.arrow:after{right:
1px;bottom:-
10px;content:" ";border-right-width:
0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:
100%;overflow:hidden}.carousel-inner
>.item{position:relative;display:none;-webkit-transition:
.6s ease-in-out left;-o-transition:
.6s ease-in-out left;transition:
.6s ease-in-out left}.carousel-inner
>.item
>img,.carousel-inner
>.item
>a
>img{line-height:
1}.carousel-inner
>.active,.carousel-inner
>.next,.carousel-inner
>.prev{display:block}.carousel-inner
>.active{left:
0}.carousel-inner
>.next,.carousel-inner
>.prev{position:absolute;top:
0;width:
100%}.carousel-inner
>.next{left:
100%}.carousel-inner
>.prev{left:-
100%}.carousel-inner
>.next.left,.carousel-inner
>.prev.right{left:
0}.carousel-inner
>.active.left{left:-
100%}.carousel-inner
>.active.right{left:
100%}.carousel-control{position:absolute;top:
0;bottom:
0;left:
0;width:
15%;font-size:
20px;color:#fff;text-align:center;text-shadow:
0 1px
2px rgba(
0,
0,
0,
.6);filter:alpha(opacity=
50);opacity:
.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(
0,
0,
0,
.5)
0,rgba(
0,
0,
0,
.0001)
100%);background-image:-o-linear-gradient(left,rgba(
0,
0,
0,
.5)
0,rgba(
0,
0,
0,
.0001)
100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(
0,
0,
0,
.5)),to(rgba(
0,
0,
0,
.0001)));background-image:linear-gradient(to right,rgba(
0,
0,
0,
.5)
0,rgba(
0,
0,
0,
.0001)
100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#
80000000', endColorstr='#
00000000', GradientType=
1);background-repeat:repeat-x}.carousel-control.right{right:
0;left:auto;background-image:-webkit-linear-gradient(left,rgba(
0,
0,
0,
.0001)
0,rgba(
0,
0,
0,
.5)
100%);background-image:-o-linear-gradient(left,rgba(
0,
0,
0,
.0001)
0,rgba(
0,
0,
0,
.5)
100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(
0,
0,
0,
.0001)),to(rgba(
0,
0,
0,
.5)));background-image:linear-gradient(to right,rgba(
0,
0,
0,
.0001)
0,rgba(
0,
0,
0,
.5)
100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#
00000000', endColorstr='#
80000000', GradientType=
1);background-repeat:repeat-x}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;filter:alpha(opacity=
90);outline:
0;opacity:
.9}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:
50%;z-index:
5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:
50%;margin-left:-
10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:
50%;margin-right:-
10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:
20px;height:
20px;margin-top:-
10px;font-family:serif}.carousel-control .icon-prev:before{content:'\
2039'}.carousel-control .icon-next:before{content:'\
203a'}.carousel-indicators{position:absolute;bottom:
10px;left:
50%;z-index:
15;width:
60%;padding-left:
0;margin-left:-
30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:
10px;height:
10px;margin:
1px;text-indent:-
999px;cursor:pointer;background-color:#
000 \
9;background-color:rgba(
0,
0,
0,
0);border:
1px solid #fff;border-radius:
10px}.carousel-indicators .active{width:
12px;height:
12px;margin:
0;background-color:#fff}.carousel-caption{position:absolute;right:
15%;bottom:
20px;left:
15%;z-index:
10;padding-top:
20px;padding-bottom:
20px;color:#fff;text-align:center;text-shadow:
0 1px
2px rgba(
0,
0,
0,
.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:
768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:
30px;height:
30px;margin-top:-
15px;font-size:
30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-
15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-
15px}.carousel-caption{right:
20%;left:
20%;padding-bottom:
30px}.carousel-indicators{bottom:
20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical
>.btn-group:before,.btn-group-vertical
>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{display:table;content:" "}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical
>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:
0/
0 a;color:transparent;text-shadow:none;background-color:transparent;border:
0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed;-webkit-transform:translate3d(
0,
0,
0);-o-transform:translate3d(
0,
0,
0);transform:translate3d(
0,
0,
0)}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none!important}@media (max-width:
767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (max-width:
767px){.visible-xs-block{display:block!important}}@media (max-width:
767px){.visible-xs-inline{display:inline!important}}@media (max-width:
767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:
768px) and (max-width:
991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:
768px) and (max-width:
991px){.visible-sm-block{display:block!important}}@media (min-width:
768px) and (max-width:
991px){.visible-sm-inline{display:inline!important}}@media (min-width:
768px) and (max-width:
991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:
992px) and (max-width:
1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:
992px) and (max-width:
1199px){.visible-md-block{display:block!important}}@media (min-width:
992px) and (max-width:
1199px){.visible-md-inline{display:inline!important}}@media (min-width:
992px) and (max-width:
1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:
1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (min-width:
1200px){.visible-lg-block{display:block!important}}@media (min-width:
1200px){.visible-lg-inline{display:inline!important}}@media (min-width:
1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:
767px){.hidden-xs{display:none!important}}@media (min-width:
768px) and (max-width:
991px){.hidden-sm{display:none!important}}@media (min-width:
992px) and (max-width:
1199px){.hidden-md{display:none!important}}@media (min-width:
1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}
</style>
11 <meta content=
"Mnemonic code for generating deterministic keys" name=
"description"/>
12 <meta content=
"width=device-width, initial-scale=1.0" name=
"viewport" />
13 <meta content=
"bitcoin mnemonic converter" name=
"description" />
14 <meta content=
"Ian Coleman" name=
"author" />
15 <link type=
"image/x-icon" rel=
"icon" href=
"data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABmJLR0T///////8JWPfcAAAACXBIWXMAAABIAAAASABGyWs+AAAAF0lEQVRIx2NgGAWjYBSMglEwCkbBSAcACBAAAeaR9cIAAAAASUVORK5CYII=" />
21 .form-control[readonly] {
34 background-color: orange;
38 border:
2px solid #
555;
40 border-bottom-left-radius:
20px
20px;
41 border-bottom-right-radius:
20px
20px;
45 box-shadow: inset
0 1px
1px rgba(
0,
0,
0,
.0);
46 -webkit-box-shadow: inset
0 1px
1px rgba(
0,
0,
0,
.0);
51 .generate-container .strength {
52 /* override mobile width from bootstrap */
53 width: auto!important;
54 display: inline-block;
59 .languages a:nth-of-type(
1) {
64 font-family: monospace;
66 .entropy-container .filtered,
67 .entropy-container .binary {
68 word-wrap: break-word;
70 .entropy-container li {
94 background-color: #FFF;
95 border:
1px solid #CCC;
107 border-bottom:
1px dashed #
000;
108 text-decoration: none;
118 <div class=
"container">
120 <h1 class=
"text-center">Mnemonic Code Converter
</h1>
121 <p class=
"version">v0.3
.0</p>
124 <div class=
"col-md-12">
126 <form class=
"form-horizontal" role=
"form">
127 <div class=
"form-group">
128 <div class=
"col-sm-2"></div>
129 <div class=
"col-sm-10">
130 <p>You can enter an existing BIP39 mnemonic, or generate a new random one. Typing your own twelve words will probably not work how you expect, since the words require a particular structure (the last word is a checksum).
</p>
132 For more info see the
133 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki" target=
"_blank">BIP39 spec
</a>.
137 <div class=
"form-group generate-container">
138 <label class=
"col-sm-2 control-label"></label>
139 <div class=
"col-sm-10">
140 <div class=
"form-inline">
141 <div class=
"input-group-inline">
142 <span>Generate a random mnemonic, or enter your own below
</span>:
143 <button class=
"btn generate">Generate
</button>
144 <select id=
"strength" class=
"strength form-control">
145 <option value=
"3">3</option>
146 <option value=
"6">6</option>
147 <option value=
"9">9</option>
148 <option value=
"12">12</option>
149 <option value=
"15" selected
>15</option>
150 <option value=
"18">18</option>
151 <option value=
"21">21</option>
152 <option value=
"24">24</option>
159 <div class=
"entropy-container hidden">
160 <div class=
"form-group text-danger">
161 <label class=
"col-sm-2 control-label">Warning
</label>
162 <div class=
"col-sm-10 form-control-static">
163 <span>Entropy is an advanced feature. Your mnemonic may be insecure if this feature is used incorrectly.
</span>
164 <a href=
"#entropy-notes">Read more
</a>
167 <div class=
"form-group">
168 <label for=
"entropy" class=
"col-sm-2 control-label">Entropy
</label>
169 <div class=
"col-sm-7">
170 <textarea id=
"entropy" rows=
"2" class=
"entropy form-control" placeholder=
"Accepts either binary, base 6, 6-sided dice, base 10, hexadecimal or cards"></textarea>
171 <div class=
"row filter-warning text-danger hidden">
172 <p class=
"col-sm-12">
174 Some characters have been discarded
179 <label class=
"col-sm-3 control-label"><span class=
"more-info" title=
"Based on estimates from zxcvbn using Filtered Entropy">Time To Crack
</span></label>
180 <div class=
"crack-time col-sm-3 form-control-static"></div>
181 <label class=
"col-sm-3 control-label">Event Count
</label>
182 <div class=
"event-count col-sm-3 form-control-static"></div>
185 <label class=
"col-sm-3 control-label">Entropy Type
</label>
186 <div class=
"type col-sm-3 form-control-static"></div>
187 <label class=
"col-sm-3 control-label">Bits Per Event
</label>
188 <div class=
"bits-per-event col-sm-3 form-control-static"></div>
191 <label class=
"col-sm-3 control-label">Raw Entropy Words
</label>
192 <div class=
"word-count col-sm-3 form-control-static"></div>
193 <label class=
"col-sm-3 control-label"><span class=
"more-info" title=
"Total bits of entropy may be less than indicated if any entropy event uses a weak source.">Total Bits
</span></label>
194 <div class=
"bits col-sm-3 form-control-static"></div>
196 <label class=
"col-sm-3 control-label">Filtered Entropy
</label>
197 <div class=
"filtered col-sm-9 form-control-static"></div>
198 <label class=
"col-sm-3 control-label">Raw Binary
</label>
199 <div class=
"binary col-sm-9 form-control-static"></div>
200 <label class=
"col-sm-3 control-label">Mnemonic Length
</label>
201 <div class=
"col-sm-9">
202 <select class=
"mnemonic-length form-control">
203 <option value=
"raw" selected
>Use Raw Entropy (
3 words per
32 bits)
</option>
204 <option value=
"12">12 <span>Words
</span></option>
205 <option value=
"15">15 <span>Words
</option>
206 <option value=
"18">18 <span>Words
</span></option>
207 <option value=
"21">21 <span>Words
</span></option>
208 <option value=
"24">24 <span>Words
</span></option>
212 <div class=
"col-sm-3">
213 <p>Valid entropy values include:
</p>
215 <li><strong>Binary
</strong> [
0-
1]
<br>101010011</li>
216 <li><strong>Base
6</strong> [
0-
5]
<br>123434014</li>
217 <li><strong>Dice
</strong> [
1-
6]
<br>62535634</li>
218 <li><strong>Base
10</strong> [
0-
9]
<br>90834528</li>
219 <li><strong>Hex
</strong> [
0-
9A-F]
<br>4187a8bfd9
</li>
220 <li><strong>Card
</strong> [A2-
9TJQK][CDHS]
<br>ahqs9dtc
</li>
225 <div class=
"form-group">
226 <div class=
"col-sm-2"></div>
227 <div class=
"col-sm-10 checkbox">
229 <input type=
"checkbox" class=
"use-entropy">
230 <span>Supply my own source of entropy
</span>
234 <div class=
"form-group">
235 <label class=
"col-sm-2 control-label">Mnemonic Language
</label>
236 <div class=
"col-sm-10 languages">
237 <div class=
"form-control no-border">
238 <a href=
"#english">English
</a>
239 <a href=
"#japanese" title=
"Japanese">日本語
</a>
240 <a href=
"#spanish" title=
"Spanish">Español
</a>
241 <a href=
"#chinese_simplified" title=
"Chinese (Simplified)">中文(简体)
</a>
242 <a href=
"#chinese_traditional" title=
"Chinese (Traditional)">中文(繁體)
</a>
243 <a href=
"#french" title=
"French">Français
</a>
244 <a href=
"#italian" title=
"Italian">Italiano
</a>
248 <div class=
"form-group">
249 <label for=
"phrase" class=
"col-sm-2 control-label">BIP39 Mnemonic
</label>
250 <div class=
"col-sm-10">
251 <textarea id=
"phrase" class=
"phrase form-control" data-show-qr
></textarea>
254 <div class=
"form-group">
255 <label for=
"passphrase" class=
"col-sm-2 control-label">BIP39 Passphrase (optional)
</label>
256 <div class=
"col-sm-10">
257 <textarea id=
"passphrase" class=
"passphrase form-control"></textarea>
260 <div class=
"form-group">
261 <label for=
"seed" class=
"col-sm-2 control-label">BIP39 Seed
</label>
262 <div class=
"col-sm-10">
263 <textarea id=
"seed" class=
"seed form-control" readonly=
"readonly" data-show-qr
></textarea>
266 <div class=
"form-group">
267 <label for=
"network-phrase" class=
"col-sm-2 control-label">Coin
</label>
268 <div class=
"col-sm-10">
269 <select id=
"network-phrase" class=
"network form-control">
270 <!-- populated by javascript -->
274 <div class=
"form-group">
275 <label for=
"root-key" class=
"col-sm-2 control-label">BIP32 Root Key
</label>
276 <div class=
"col-sm-10">
277 <textarea id=
"root-key" class=
"root-key form-control" data-show-qr
></textarea>
280 <div class=
"form-group litecoin-ltub-container hidden">
281 <label for=
"litecoin-use-ltub" class=
"col-sm-2 control-label">Prefixes
</label>
282 <div class=
"col-sm-10 checkbox">
284 <input type=
"checkbox" id=
"litecoin-use-ltub" class=
"litecoin-use-ltub" checked=
"checked">
285 Use
<code>Ltpv / Ltub
</code> instead of
<code>xprv / xpub
</code>
296 <div class=
"col-md-12">
297 <h2>Derivation Path
</h2>
298 <ul class=
"derivation-type nav nav-tabs" role=
"tablist">
300 <a href=
"#bip32" role=
"tab" data-toggle=
"tab">BIP32
</a>
302 <li id=
"bip44-tab" class=
"active">
303 <a href=
"#bip44" role=
"tab" data-toggle=
"tab">BIP44
</a>
306 <a href=
"#bip49" role=
"tab" data-toggle=
"tab">BIP49
</a>
309 <a href=
"#bip141" role=
"tab" data-toggle=
"tab">BIP141
</a>
312 <div class=
"derivation-type tab-content">
313 <div id=
"bip44" class=
"tab-pane active">
314 <form class=
"form-horizontal" role=
"form">
316 <div class=
"col-sm-2"></div>
317 <div class=
"col-sm-10">
319 For more info see the
320 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target=
"_blank">BIP44 spec
</a>.
323 <div class=
"form-group">
324 <label for=
"purpose" class=
"col-sm-2 control-label">
325 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#purpose" target=
"_blank">Purpose
</a>
327 <div class=
"col-sm-10">
328 <input id=
"purpose" type=
"text" class=
"purpose form-control" value=
"44" readonly
>
331 <div class=
"form-group">
332 <label for=
"coin" class=
"col-sm-2 control-label">
333 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#registered-coin-types" target=
"_blank">Coin
</a>
335 <div class=
"col-sm-10">
336 <input id=
"coin" type=
"text" class=
"coin form-control" value=
"0" readonly
>
339 <div class=
"form-group">
340 <label for=
"account" class=
"col-sm-2 control-label">
341 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account" target=
"_blank">Account
</a>
343 <div class=
"col-sm-10">
344 <input id=
"account" type=
"text" class=
"account form-control" value=
"0">
347 <div class=
"form-group">
348 <label for=
"change" class=
"col-sm-2 control-label">
349 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#change" target=
"_blank">External / Internal
</a>
351 <div class=
"col-sm-10">
352 <input id=
"change" type=
"text" class=
"change form-control" value=
"0">
355 <div class=
"form-group">
356 <label class=
"col-sm-2 control-label">
358 <div class=
"col-sm-10">
359 <p>The account extended keys can be used for importing to most BIP44 compatible wallets, such as mycelium or electrum.
</p>
362 <div class=
"form-group">
363 <label for=
"account-xprv" class=
"col-sm-2 control-label">
364 <span>Account Extended Private Key
</span>
366 <div class=
"col-sm-10">
367 <textarea id=
"account-xprv" type=
"text" class=
"account-xprv form-control" readonly data-show-qr
></textarea>
370 <div class=
"form-group">
371 <label for=
"account-xpub" class=
"col-sm-2 control-label">
372 <span>Account Extended Public Key
</span>
374 <div class=
"col-sm-10">
375 <textarea id=
"account-xpub" type=
"text" class=
"account-xpub form-control" readonly data-show-qr
></textarea>
378 <div class=
"form-group">
379 <label class=
"col-sm-2 control-label">
381 <div class=
"col-sm-10">
382 <p>The BIP32 derivation path and extended keys are the basis for the derived addresses.
</p>
385 <div class=
"form-group">
386 <label for=
"bip44-path" class=
"col-sm-2 control-label">BIP32 Derivation Path
</label>
387 <div class=
"col-sm-10">
388 <input id=
"bip44-path" type=
"text" class=
"path form-control" value=
"m/44'/0'/0'/0" readonly=
"readonly">
393 <div id=
"bip32" class=
"tab-pane">
394 <form class=
"form-horizontal" role=
"form">
396 <div class=
"col-sm-2"></div>
397 <div class=
"col-sm-10">
399 For more info see the
400 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target=
"_blank">BIP32 spec
</a>
403 <div class=
"form-group">
404 <label for=
"bip32-client" class=
"col-sm-2 control-label">Client
</label>
405 <div class=
"col-sm-10">
406 <select id=
"bip32-client" class=
"client form-control">
407 <option value=
"custom">Custom derivation path
</option>
408 <!-- populated by javascript -->
412 <div class=
"form-group">
413 <label for=
"bip32-path" class=
"col-sm-2 control-label">BIP32 Derivation Path
</label>
414 <div class=
"col-sm-10">
415 <input id=
"bip32-path" type=
"text" class=
"path form-control" value=
"m/0">
418 <div class=
"form-group">
419 <div class=
"col-sm-2"></div>
420 <label class=
"col-sm-10">
421 <input class=
"hardened-addresses" type=
"checkbox">
422 <span>Use hardened addresses
</span>
425 <div class=
"form-group">
426 <label for=
"core-path" class=
"col-sm-2 control-label">Bitcoin Core
</label>
427 <div class=
"col-sm-10">
428 <p class=
"form-control no-border">
429 Use path
<code>m/
0'/
0'
</code> with hardened addresses.
431 <p class=
"form-control no-border">
432 For more info see the
433 <a href=
"https://github.com/bitcoin/bitcoin/pull/8035" target=
"_blank">Bitcoin Core BIP32 implementation
</a>
437 <div class=
"form-group">
438 <label for=
"core-path" class=
"col-sm-2 control-label">Multibit
</label>
439 <div class=
"col-sm-10">
440 <p class=
"form-control no-border">
441 <span>Use path
<code>m/
0'/
0</code>.
</span>
443 <p class=
"form-control no-border">
444 <span>For more info see
</span>
445 <a href=
"https://multibit.org/" target=
"_blank">MultiBit HD
</a>
449 <div class=
"form-group">
450 <label class=
"col-sm-2 control-label">Block Explorers
</label>
451 <div class=
"col-sm-10">
452 <p class=
"form-control no-border">
453 <span>Use path
<code>m/
44'/
0'/
0'
</code>.
</span>
454 <span>Only enter the
<code>xpub
</code> extended key into block explorer search fields, never the
<code>xprv
</code> key.
</span>
456 <p class=
"form-control no-border">
457 <span>Can be used with
</span>:
458 <a href=
"https://blockchain.info/" target=
"_blank">blockchain.info
</a>
464 <div id=
"bip49" class=
"tab-pane">
465 <form class=
"form-horizontal" role=
"form">
467 <div class=
"unavailable hidden">
468 <div class=
"form-group">
469 <div class=
"col-sm-2"></div>
470 <div class=
"col-sm-10">
471 <p>BIP49 is unavailable for this coin.
</p>
475 <div class=
"available">
476 <div class=
"col-sm-2"></div>
477 <div class=
"col-sm-10">
479 For more info see the
480 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0049.mediawiki" target=
"_blank">BIP49 spec
</a>.
483 <div class=
"form-group">
484 <label for=
"purpose" class=
"col-sm-2 control-label">
485 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#purpose" target=
"_blank">Purpose
</a>
487 <div class=
"col-sm-10">
488 <input id=
"purpose" type=
"text" class=
"purpose form-control" value=
"49" readonly
>
491 <div class=
"form-group">
492 <label for=
"coin" class=
"col-sm-2 control-label">
493 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#registered-coin-types" target=
"_blank">Coin
</a>
495 <div class=
"col-sm-10">
496 <input id=
"coin" type=
"text" class=
"coin form-control" value=
"0" readonly
>
499 <div class=
"form-group">
500 <label for=
"account" class=
"col-sm-2 control-label">
501 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account" target=
"_blank">Account
</a>
503 <div class=
"col-sm-10">
504 <input id=
"account" type=
"text" class=
"account form-control" value=
"0">
507 <div class=
"form-group">
508 <label for=
"change" class=
"col-sm-2 control-label">
509 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#change" target=
"_blank">External / Internal
</a>
511 <div class=
"col-sm-10">
512 <input id=
"change" type=
"text" class=
"change form-control" value=
"0">
515 <div class=
"form-group">
516 <label class=
"col-sm-2 control-label">
518 <div class=
"col-sm-10">
519 <p>The account extended keys can be used for importing to most BIP49 compatible wallets.
</p>
522 <div class=
"form-group">
523 <label for=
"account-xprv" class=
"col-sm-2 control-label">
524 <span>Account Extended Private Key
</span>
526 <div class=
"col-sm-10">
527 <textarea id=
"account-xprv" type=
"text" class=
"account-xprv form-control" readonly data-show-qr
></textarea>
530 <div class=
"form-group">
531 <label for=
"account-xpub" class=
"col-sm-2 control-label">
532 <span>Account Extended Public Key
</span>
534 <div class=
"col-sm-10">
535 <textarea id=
"account-xpub" type=
"text" class=
"account-xpub form-control" readonly data-show-qr
></textarea>
538 <div class=
"form-group">
539 <label class=
"col-sm-2 control-label">
541 <div class=
"col-sm-10">
542 <p>The BIP32 derivation path and extended keys are the basis for the derived addresses.
</p>
545 <div class=
"form-group">
546 <label for=
"bip49-path" class=
"col-sm-2 control-label">BIP32 Derivation Path
</label>
547 <div class=
"col-sm-10">
548 <input id=
"bip49-path" type=
"text" class=
"path form-control" value=
"m/49'/0'/0'/0" readonly=
"readonly">
554 <div id=
"bip141" class=
"tab-pane">
555 <form class=
"form-horizontal" role=
"form">
557 <div class=
"unavailable hidden">
558 <div class=
"form-group">
559 <div class=
"col-sm-2"></div>
560 <div class=
"col-sm-10">
561 <p>BIP141 is unavailable for this coin.
</p>
565 <div class=
"available">
566 <div class=
"col-sm-2"></div>
567 <div class=
"col-sm-10">
569 For more info see the
570 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki" target=
"_blank">BIP141 spec
</a>
573 <div class=
"form-group">
574 <label for=
"bip141-path" class=
"col-sm-2 control-label">BIP32 Derivation Path
</label>
575 <div class=
"col-sm-10">
576 <input id=
"bip141-path" type=
"text" class=
"bip141-path form-control" value=
"m/0">
579 <div class=
"form-group">
580 <label class=
"col-sm-2 control-label">Script Semantics
</label>
581 <div class=
"col-sm-10">
582 <select class=
"form-control bip141-semantics">
583 <option value=
"p2wpkh">P2WPKH
</option>
584 <option value=
"p2wpkh-p2sh" selected
>P2WPKH nested in P2SH
</option>
592 <form class=
"form-horizontal" role=
"form">
593 <div class=
"form-group">
594 <label for=
"extended-priv-key" class=
"col-sm-2 control-label">BIP32 Extended Private Key
</label>
595 <div class=
"col-sm-10">
596 <textarea id=
"extended-priv-key" class=
"extended-priv-key form-control" readonly=
"readonly" data-show-qr
></textarea>
599 <div class=
"form-group">
600 <label for=
"extended-pub-key" class=
"col-sm-2 control-label">BIP32 Extended Public Key
</label>
601 <div class=
"col-sm-10">
602 <textarea id=
"extended-pub-key" class=
"extended-pub-key form-control" readonly=
"readonly" data-show-qr
></textarea>
612 <div class=
"col-md-12">
613 <h2>Derived Addresses
</h2>
614 <p>Note these addreses are derived from the BIP32 Extended Key
</p>
616 <div class=
"col-md-12 use-bitpay-addresses-container hidden">
617 <div class=
"checkbox">
619 <input type=
"checkbox" class=
"use-bitpay-addresses">
620 <span>Use BitPay-style addresses for Bitcoin Cash (ie starting with 'C' instead of '
1')
</span>
624 <div class=
"col-md-12">
625 <table class=
"table table-striped">
628 <div class=
"input-group">
629 <span>Path
</span>
630 <button class=
"index-toggle">Toggle
</button>
634 <div class=
"input-group">
635 <span>Address
</span>
636 <button class=
"address-toggle">Toggle
</button>
640 <div class=
"input-group">
641 <span>Public Key
</span>
642 <button class=
"public-key-toggle">Toggle
</button>
646 <div class=
"input-group">
647 <span>Private Key
</span>
648 <button class=
"private-key-toggle">Toggle
</button>
652 <tbody class=
"addresses monospace">
653 <tr><td> </td><td> </td><td> </td><td> </td></tr>
654 <tr><td> </td><td> </td><td> </td><td> </td></tr>
655 <tr><td> </td><td> </td><td> </td><td> </td></tr>
656 <tr><td> </td><td> </td><td> </td><td> </td></tr>
657 <tr><td> </td><td> </td><td> </td><td> </td></tr>
663 <input type=
"number" class=
"rows-to-add" value=
"20">
664 <button class=
"more">more rows
</button>
665 <span>starting from index
</span>
666 <input type=
"number" class=
"more-rows-start-index">
667 <span>(leave blank to generate from next index)
</span>
672 <div class=
"col-md-12">
674 <h3>BIP39
<span class=
"small">Mnemonic code for generating deterministic keys
</span></h3>
677 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki">official BIP39 spec
</a>
679 <h3>BIP32
<span class=
"small">Hierarchical Deterministic Wallets
</span></h3>
682 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target=
"_blank">official BIP32 spec
</a>
686 <a href=
"http://bip32.org/" target=
"_blank">bip32.org
</a>
688 <h3>BIP44
<span class=
"small">Multi-Account Hierarchy for Deterministic Wallets
</span></h3>
691 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target=
"_blank">official BIP44 spec
</a>
693 <h3>BIP49
<span class=
"small">Derivation scheme for P2WPKH-nested-in-P2SH based accounts
</span></h3>
696 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0049.mediawiki" target=
"_blank">official BIP49 spec
</a>
698 <h3>Private Keys
</h3>
702 <a href=
"https://web.archive.org/web/20150707020924/https://brainwallet.org/" target=
"_blank">brainwallet.org
</a>.
704 <span>Be careful - it can be easy to make mistakes if you don't know what you're doing.
</span>
706 <h3 id=
"entropy-notes">Entropy
</h3>
709 Entropy values must be sourced from a
710 <a href=
"https://en.wikipedia.org/wiki/Random_number_generation" target=
"_blank">strong source of randomness
</a>.
712 <span>This means flipping a fair coin, rolling a fair dice, noise measurements etc.
</span>
714 Do
<strong>NOT
</strong> use phrases from books, lyrics from songs, your birthday or steet address,
715 keyboard mashing, or anything you
<i>think
</i> is random, because chances are overwhelming it isn't
716 random enough for the needs of this tool.
720 <strong><span>Do not store entropy.
</span></strong>
723 <span>Storing entropy (such as keeping a deck of cards in a specific shuffled order) is unreliable compared to storing a mnemonic.
</span>
724 <span>Instead of storing entropy, store the mnemonic generated from the entropy.
</span>
725 <span><a href=
"https://en.wikipedia.org/wiki/Steganography#Physical" target=
"_blank">Steganography
</a> may be beneficial when storing the mnemonic.
</span>
729 The random mnemonic generator on this page uses a
730 <a href=
"https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues" target=
"_blank">cryptographically secure random number generator
</a>.
732 <span>The built in random generator can generally be trusted more than your own intuition about randomness.
</span>
733 <span>If cryptographic randomness isn't available in your browser, this page will show a warning and the generate button will not work.
</span>
734 <span>In that case you might choose to use your own source of entropy.
</span>
737 <a href=
"https://bitcointalk.org/index.php?topic=311000.msg3345309#msg3345309" target=
"_blank">You are not a good source of entropy.
</a>
741 <span>Please refer to
<a href=
"https://github.com/iancoleman/bip39/blob/master/LICENSE" target=
"_blank">the software license
</a> for more detail.
744 <p>The software is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the software.
</p>
751 <div class=
"col-md-12">
752 <h2>Alternative Tools
</h2>
753 <p>This tool is interoperable with any BIP39 wallet.
</p>
754 <p>Some similar tools to this one (ie not consumer wallets) are
</p>
756 <a href=
"https://bip32jp.github.io/english/">
757 https://bip32jp.github.io/english/
766 <div class=
"col-md-12">
768 <h2>Offline Usage
</h2>
771 You can use this tool without having to be online.
774 In your browser, select file save-as, and save this page
778 Double-click that file to open it in a browser
779 on any offline computer.
782 <span>Alternatively, download the file from the repository
</span>
784 <a href=
"https://github.com/iancoleman/bip39">https://github.com/iancoleman/bip39
</a>
793 <div class=
"col-md-12">
795 <h2>This project is
100% open-source code
</h2>
798 <span>Get the source code from the repository
</span>
800 <a href=
"https://github.com/iancoleman/bip39" target=
"_blank">
801 https://github.com/iancoleman/bip39
808 <span>BitcoinJS -
</span>
809 <a href=
"https://github.com/bitcoinjs/bitcoinjs-lib" target=
"_blank">
810 https://github.com/bitcoinjs/bitcoinjs-lib
815 <span>jsBIP39 -
</span>
816 <a href=
"https://github.com/iancoleman/jsbip39" target=
"_blank">
817 https://github.com/iancoleman/jsbip39
823 <a href=
"https://github.com/bitwiseshiftleft/sjcl" target=
"_blank">
824 https://github.com/bitwiseshiftleft/sjcl
829 <span>jQuery -
</span>
830 <a href=
"https://jquery.com/" target=
"_blank">
836 <span>Twitter Bootstrap -
</span>
837 <a href=
"http://getbootstrap.com/" target=
"_blank">
838 http://getbootstrap.com/
847 <div class=
"qr-container hidden">
848 <div class=
"qr-hint bg-primary hidden">Click field to hide QR
</div>
849 <div class=
"qr-hint bg-primary">Click field to show QR
</div>
850 <div class=
"qr-hider hidden">
851 <div class=
"qr-image"></div>
852 <div class=
"qr-warning bg-primary">Caution: Scanner may keep history
</div>
856 <div class=
"feedback-container">
857 <div class=
"feedback">Loading...
</div>
860 <script type=
"text/template" id=
"address-row-template">
862 <td class=
"index"><span></span></td>
863 <td class=
"address"><span data-show-qr
></span></td>
864 <td class=
"pubkey"><span data-show-qr
></span></td>
865 <td class=
"privkey"><span data-show-qr
></span></td>
869 // https://raw.githubusercontent.com/inexorabletash/polyfill/a6bc6ced78160c994f76a909b6ff6bbbab3d43de/es6.js
870 // Required for ethereumjs-utils.js when run in phantomjs-
2.1.1
871 // but is not required in any modern browsers.
872 // For more information, see
873 // https://www.bountysource.com/issues/
38485709-error-rendering-plot-with-phantomjs
875 //----------------------------------------------------------------------
877 // ECMAScript
2015 Polyfills
879 //----------------------------------------------------------------------
884 // Set this to always override native implementations, for testing
885 // the polyfill in browsers with partial/full ES2015 support.
886 var OVERRIDE_NATIVE_FOR_TESTING = false;
888 var undefined = (void
0); // Paranoia
893 return o === global ? undefined : o;
896 function hook(o, p, f) {
898 console.assert(typeof op === 'function', 'Hooking a non-function');
900 var o = strict(this);
901 var r = f.apply(o, arguments);
902 return r !== undefined ? r : op.apply(o, arguments);
906 function isSymbol(s) {
907 return (typeof s === 'symbol') || ('Symbol' in global && s instanceof global.Symbol);
910 function getPropertyDescriptor(target, name) {
911 var desc = Object.getOwnPropertyDescriptor(target, name);
912 var proto = Object.getPrototypeOf(target);
913 while (!desc && proto) {
914 desc = Object.getOwnPropertyDescriptor(proto, name);
915 proto = Object.getPrototypeOf(proto);
920 var enqueue = (function(nativePromise, nativeSetImmediate) {
922 return function(job) { nativePromise.resolve().then(function() { job(); }); };
923 if (nativeSetImmediate)
924 return function(job) { nativeSetImmediate(job); };
925 return function(job) { setTimeout(job,
0); };
926 }(global['Promise'], global['setImmediate']));
928 function define(o, p, v, override) {
929 if (p in o && !override && !OVERRIDE_NATIVE_FOR_TESTING)
932 if (typeof v === 'function') {
933 // Sanity check that functions are appropriately named (where possible)
934 console.assert(isSymbol(p) || !('name' in v) || v.name === p || v.name === p + '_', 'Expected function name "' + p.toString() + '", was "' + v.name + '"');
935 Object.defineProperty(o, p, {
942 Object.defineProperty(o, p, {
951 function set_internal(o, p, v) {
952 Object.defineProperty(o, p, {
960 // Snapshot intrinsic functions
961 var $isNaN = global.isNaN,
962 $parseInt = global.parseInt,
963 $parseFloat = global.parseFloat;
966 LOG10E = Math.LOG10E,
976 random = Math.random,
979 var orig_match = String.prototype.match,
980 orig_replace = String.prototype.replace,
981 orig_search = String.prototype.search,
982 orig_split = String.prototype.split;
984 // These are used for implementing the polyfills, but not exported.
986 // Inspired by https://gist.github.com/
1638059
988 function EphemeronTable() {
989 var secretKey = ObjectCreate(null);
991 function conceal(o) {
992 var oValueOf = o.valueOf, secrets = ObjectCreate(null);
993 Object.defineProperty(o, 'valueOf', {
994 value: (function(secretKey) {
995 return function (k) {
996 return (k === secretKey) ? secrets : oValueOf.apply(o, arguments);
1006 function reveal(o) {
1007 var v = typeof o.valueOf === 'function' && o.valueOf(secretKey);
1008 return v === o ? null : v;
1013 secretKey = ObjectCreate(null);
1015 remove: function(key) {
1016 var secrets = reveal(key);
1017 if (secrets && HasOwnProperty(secrets, 'value')) {
1018 delete secrets.value;
1023 get: function(key, defaultValue) {
1024 var secrets = reveal(key);
1025 return (secrets && HasOwnProperty(secrets, 'value')) ? secrets.value : defaultValue;
1027 has: function(key) {
1028 var secrets = reveal(key);
1029 return Boolean(secrets && HasOwnProperty(secrets, 'value'));
1031 set: function(key, value) {
1032 var secrets = reveal(key) || conceal(key);
1033 secrets.value = value;
1038 var empty = Object.create(null);
1040 //----------------------------------------------------------------------
1043 // http://www.ecma-international.org/ecma-
262/
6.0/
1045 //----------------------------------------------------------------------
1047 // ---------------------------------------
1048 //
19.4 Symbol Objects
1049 // ---------------------------------------
1051 // NOTE: Symbols are defined here - out of spec order - since we need the
1052 // properties and prototype to be populated for other polyfills.
1054 // NOTE: Not secure, nor is obj[$$symbol] hidden from Object.keys()
1058 var secret = Object.create(null);
1060 symbolForKey = function(k) {
1061 return symbolMap[k];
1064 var GlobalSymbolRegistry = [];
1066 function unique(bits) {
1067 return Array(bits +
1).join('x').replace(/x/g, function() {
1068 return random() <
0.5 ? '\u200C' : '\u200D'; // JWNJ / ZWJ
1072 //
19.4.1 The Symbol Constructor
1073 //
19.4.1.1 Symbol ( description=undefined )
1074 function Symbol(description) {
1075 if (!(this instanceof Symbol)) return new Symbol(description, secret);
1076 if (this instanceof Symbol && arguments[
1] !== secret) throw TypeError();
1078 var descString = description === undefined ? undefined : String(description);
1080 set_internal(this, '[[SymbolData]]', unique(
128));
1081 set_internal(this, '[[Description]]', descString);
1083 symbolMap[this] = this;
1087 if (!('Symbol' in global) || OVERRIDE_NATIVE_FOR_TESTING)
1088 global.Symbol = Symbol;
1090 //
19.4.2 Properties of the Symbol Constructor
1092 //
19.4.2.1 Symbol.for (key)
1093 define(Symbol, 'for', function for_(key) {
1094 var stringKey = String(key);
1095 for (var i =
0; i < GlobalSymbolRegistry.length; ++i) {
1096 var e = GlobalSymbolRegistry[i];
1097 if (SameValue(e['[[key]]'], stringKey)) return e['[[symbol]]'];
1099 var newSymbol = Symbol(key);
1100 GlobalSymbolRegistry.push({'[[key]]': stringKey, '[[symbol]]': newSymbol});
1104 //
19.4.2.2 Symbol.hasInstance
1105 //
19.4.2.3 Symbol.isConcatSpreadable
1107 //
19.4.2.4 Symbol.iterator
1108 define(global.Symbol, 'iterator', global.Symbol('Symbol.iterator'));
1110 //
19.4.2.5 Symbol.keyFor (sym)
1111 define(Symbol, 'keyFor', function keyFor(sym) {
1112 if (!(sym instanceof Symbol)) throw TypeError();
1113 for (var i =
0; i < GlobalSymbolRegistry.length; ++i) {
1114 var e = GlobalSymbolRegistry[i];
1115 if (SameValue(e['[[symbol]]'], sym)) return e['[[key]]'];
1120 //
19.4.2.6 Symbol.match
1121 define(global.Symbol, 'match', global.Symbol('Symbol.match'));
1123 //
19.4.2.7 Symbol.prototype
1125 //
19.4.2.8 Symbol.replace
1126 define(global.Symbol, 'replace', global.Symbol('Symbol.replace'));
1128 //
19.4.2.9 Symbol.search
1129 define(global.Symbol, 'search', global.Symbol('Symbol.search'));
1131 //
19.4.2.10 Symbol.species
1133 //
19.4.2.11 Symbol.search
1134 define(global.Symbol, 'split', global.Symbol('Symbol.split'));
1136 //
19.4.2.12 Symbol.toPrimitive
1138 //
19.4.2.13 Symbol.toStringTag
1139 define(global.Symbol, 'toStringTag', global.Symbol('Symbol.toStringTag'));
1141 //
19.4.2.14 Symbol.unscopables
1143 //
19.4.3 Properties of the Symbol Prototype Object
1144 //
19.4.3.1 Symbol.prototype.constructor
1146 //
19.4.3.2 Symbol.prototype.toString ( )
1147 Object.defineProperty(Symbol.prototype, 'toString', {
1148 value: function toString() {
1149 var s = strict(this);
1150 var desc = s['[[Description]]'];
1151 return 'Symbol(' + (desc === undefined ? '' : desc) + s['[[SymbolData]]'] + ')';
1153 configurable: true, writeable: true, enumerable: false });
1155 //
19.4.3.3 Symbol.prototype.valueOf ( )
1156 Object.defineProperty(Symbol.prototype, 'valueOf', {
1157 value: function valueOf() {
1158 // To prevent automatic string conversion:
1161 // Spec has approximately the following:
1162 //var s = strict(this);
1163 //if (Type(s) === 'symbol') return s;
1164 //if (Type(s) !== 'object') throw TypeError();
1165 //if (!('[[SymbolData]]' in s)) throw TypeError();
1166 //return s['[[SymbolData]]'];
1168 configurable: true, writeable: true, enumerable: false });
1170 //
19.4.3.4 Symbol.prototype [ @@toStringTag ]
1171 // (Done later to polyfill partial implementations)
1173 //
19.4.4 Properties of Symbol Instances
1176 console.assert(typeof global.Symbol() === 'symbol' || symbolForKey(String(global.Symbol('x'))));
1178 // Defined here so that other prototypes can reference it
1179 //
25.1.2 The %IteratorPrototype% Object
1180 var $IteratorPrototype$ = {};
1182 //----------------------------------------
1183 //
6 ECMAScript Data Types and Values
1184 //----------------------------------------
1186 //
6.1 ECMAScript Language Types
1188 // "Type(x)" is used as shorthand for "the type of x"...
1191 case 'undefined': return 'undefined';
1192 case 'boolean': return 'boolean';
1193 case 'number': return 'number';
1194 case 'string': return 'string';
1195 case 'symbol': return 'symbol';
1197 if (v === null) return 'null';
1198 if (v instanceof global.Symbol) return 'symbol';
1203 //
6.1.5.1 Well-Known Symbols
1204 var $$iterator = global.Symbol.iterator,
1205 $$match = global.Symbol.match,
1206 $$replace = global.Symbol.replace,
1207 $$search = global.Symbol.search,
1208 $$split = global.Symbol.split,
1209 $$toStringTag = global.Symbol.toStringTag;
1211 //----------------------------------------
1212 //
7 Abstract Operations
1213 //----------------------------------------
1215 //----------------------------------------
1216 //
7.1 Type Conversion
1217 //----------------------------------------
1219 //
7.1.1 ToPrimitive ( input [, PreferredType] )
1220 // just use valueOf()
1222 //
7.1.2 ToBoolean ( argument )
1223 // just use Boolean()
1225 //
7.1.3 ToNumber ( argument )
1226 // just use Number()
1228 //
7.1.4 ToInteger ( argument )
1229 function ToInteger(n) {
1231 if ($isNaN(n)) return
0;
1232 if (n ===
0 || n === Infinity || n === -Infinity) return n;
1233 return ((n <
0) ? -
1 :
1) * floor(abs(n));
1236 //
7.1.5 ToInt32 ( argument )
1237 function ToInt32(v) { return v
>> 0; }
1239 //
7.1.6 ToUint32 ( argument )
1240 function ToUint32(v) { return v
>>> 0; }
1242 //
7.1.7 ToInt16 ( argument )
1243 function ToInt16(v) { return (v <<
16)
>> 16; }
1245 //
7.1.8 ToUint16 ( argument )
1246 function ToUint16(v) { return v &
0xFFFF; }
1248 //
7.1.9 ToInt8 ( argument )
1249 function ToInt8(v) { return (v <<
24)
>> 24; }
1251 //
7.1.10 ToUint8 ( argument )
1252 function ToUint8(v) { return v &
0xFF; }
1254 //
7.1.11 ToUint8Clamp ( argument )
1255 function ToUint8Clamp(argument) {
1256 var number = Number(argument);
1257 if ($isNaN(number)) return
0;
1258 if (number <=
0) return
0;
1259 if (number
>=
255) return
255;
1260 var f = floor(number);
1261 if ((f +
0.5) < number) return f +
1;
1262 if (number < (f +
0.5)) return f;
1263 if (f %
2) return f +
1;
1267 //
7.1.12 ToString ( argument )
1268 // just use String()
1270 //
7.1.13 ToObject ( argument )
1271 function ToObject(v) {
1272 if (v === null || v === undefined) throw TypeError();
1276 //
7.1.14 ToPropertyKey ( argument )
1277 function ToPropertyKey(v) {
1281 //
7.1.15 ToLength ( argument )
1282 function ToLength(v) {
1283 var len = ToInteger(v);
1284 if (len <=
0) return
0;
1285 if (len === Infinity) return
0x20000000000000 -
1; //
2^
53-
1
1286 return min(len,
0x20000000000000 -
1); //
2^
53-
1
1289 //
7.1.16 CanonicalNumericIndexString ( argument )
1291 //----------------------------------------
1292 //
7.2 Testing and Comparison Operations
1293 //----------------------------------------
1295 //
7.2.1 RequireObjectCoercible ( argument )
1296 //
7.2.2 IsArray ( argument )
1298 //
7.2.3 IsCallable ( argument )
1299 function IsCallable(o) { return typeof o === 'function'; }
1301 //
7.2.4 IsConstructor ( argument )
1302 function IsConstructor(o) {
1303 // Hacks for Safari
7 TypedArray XXXConstructor objects
1304 if (/Constructor/.test(Object.prototype.toString.call(o))) return true;
1305 if (/Function/.test(Object.prototype.toString.call(o))) return true;
1306 // TODO: Can this be improved on?
1307 return typeof o === 'function';
1310 //
7.2.5 IsExtensible (O)
1311 //
7.2.6 IsInteger ( argument )
1313 //
7.2.7 IsPropertyKey ( argument )
1314 function IsPropertyKey(argument) {
1315 if (Type(argument) === 'string') return true;
1316 if (Type(argument) === 'symbol') return true;
1320 //
7.2.8 IsRegExp ( argument )
1321 //
7.2.5 IsConstructor ( argument )
1323 //
7.2.9 SameValue(x, y)
1324 function SameValue(x, y) {
1325 if (typeof x !== typeof y) return false;
1330 if (x !== x && y !== y) return true;
1331 if (x ===
0 && y ===
0) return
1/x ===
1/y;
1341 //
7.2.10 SameValueZero(x, y)
1342 function SameValueZero(x, y) {
1343 if (typeof x !== typeof y) return false;
1348 if (x !== x && y !== y) return true;
1358 //----------------------------------------
1359 //
7.3 Operations on Objects
1360 //----------------------------------------
1363 // - just use o.p or o[p]
1365 //
7.3.2 GetV (V, P)
1366 function GetV(v, p) {
1367 var o = ToObject(v);
1371 //
7.3.3 Set (O, P, V, Throw)
1372 // - just use o.p = v or o[p] = v
1377 //
7.3.9 GetMethod (O, P)
1378 function GetMethod(o, p) {
1379 var func = GetV(o, p);
1380 if (func === undefined || func === null) return undefined;
1381 if (!IsCallable(func)) throw TypeError();
1385 //
7.3.10 HasProperty (O, P)
1386 function HasProperty(o, p) {
1388 if (Object.prototype.hasOwnProperty.call(o, p)) return true;
1389 if (Type(o) !== 'object') return false;
1390 o = Object.getPrototypeOf(o);
1395 //
7.3.11 HasOwnProperty (O, P)
1396 function HasOwnProperty(o, p) {
1397 return Object.prototype.hasOwnProperty.call(o, p);
1400 //----------------------------------------
1401 //
7.4 Operations on Iterator Objects
1402 //----------------------------------------
1404 //
7.4.1 GetIterator ( obj, method )
1405 function GetIterator(obj, method) {
1406 if (arguments.length <
2)
1407 method = GetMethod(obj, $$iterator);
1408 var iterator = method.call(obj);
1409 if (Type(iterator) !== 'object') throw TypeError();
1413 //
7.4.2 IteratorNext ( iterator, value )
1414 function IteratorNext(iterator, value) {
1415 if (arguments.length <
2)
1416 var result = iterator.next();
1418 result = iterator.next(value);
1419 if (Type(result) !== 'object') throw TypeError();
1423 //
7.4.3 IteratorComplete ( iterResult )
1424 function IteratorComplete(iterResult) {
1425 console.assert(Type(iterResult) === 'object');
1426 return Boolean(iterResult.done);
1429 //
7.4.4 IteratorValue ( iterResult )
1430 function IteratorValue(iterResult) {
1431 console.assert(Type(iterResult) === 'object');
1432 return iterResult.value;
1435 //
7.4.5 IteratorStep ( iterator )
1436 function IteratorStep( iterator, value ) {
1437 var result = IteratorNext(iterator, value);
1438 var done = result['done'];
1439 if (Boolean(done) === true) return false;
1443 //
7.4.6 IteratorClose( iterator, completion )
1444 function IteratorClose( iterator, completion ) {
1445 console.assert(Type(iterator) === 'object');
1446 var _return = GetMethod(iterator, 'return');
1447 if (_return === undefined) return completion;
1449 var innerResult = _return[iterator]();
1451 // TODO: If completion.[[type]] is throw, return completion
1454 if (Type(innerResult) !== 'object') throw TypeError();
1458 //
7.4.7 CreateIterResultObject (value, done)
1459 function CreateIterResultObject(value, done) {
1460 console.assert(Type(done) === 'boolean');
1462 obj["value"] = value;
1467 //
7.4.8 CreateListIterator (list)
1468 //
7.4.8.1 ListIterator next( )
1469 //
7.4.9 CreateCompoundIterator ( iterator1, iterator2 )
1470 //
7.4.9.1 CompoundIterator next( )
1472 //----------------------------------------
1473 //
8 Executable Code and Execution Contexts
1474 //----------------------------------------
1476 //----------------------------------------
1477 //
8.4 Jobs and Job Queues
1478 //----------------------------------------
1480 //
8.4.1 EnqueueJob ( queueName, job, arguments)
1481 function EnqueueJob(queueName, job, args) {
1482 var fn = function() { job.apply(undefined, args); };
1486 //
8.4.2 NextJob result
1487 function NextJob(result) {
1491 //----------------------------------------
1492 //
9 Ordinary and Exotic Objects Behaviors
1493 //----------------------------------------
1495 //
9.1.11 [[Enumerate]] ()
1496 function Enumerate(obj) {
1498 if (Object(obj) !== obj) return e;
1499 var visited = new Set;
1500 while (obj !== null) {
1501 Object.getOwnPropertyNames(obj).forEach(function(name) {
1502 if (!visited.has(name)) {
1503 var desc = Object.getOwnPropertyDescriptor(obj, name);
1506 if (desc.enumerable) e.push(name);
1510 obj = Object.getPrototypeOf(obj);
1512 return e[$$iterator]();
1515 //
9.1.12 [[OwnPropertyKeys]] ( )
1516 function OwnPropertyKeys(o) {
1517 return Object.getOwnPropertyNames(o);
1520 //
9.1.13 ObjectCreate(proto, internalSlotsList)
1521 function ObjectCreate(proto, internalSlotsList) {
1522 return Object.create(proto, internalSlotsList);
1525 // ---------------------------------------
1526 //
19 Fundamental Objects
1527 // ---------------------------------------
1529 // ---------------------------------------
1530 //
19.1 Object Objects
1531 // ---------------------------------------
1533 //
19.1.1 The Object Constructor
1534 //
19.1.1.1 Object ( [ value ] )
1535 //
19.1.2 Properties of the Object Constructor
1536 //
19.1.2.1 Object.assign ( target, ...sources )
1539 function assign(target, /*...*/sources) {
1540 var to = ToObject(target);
1541 if (arguments.length <
2) return to;
1543 var sourcesIndex =
1;
1544 while (sourcesIndex < arguments.length) {
1545 var nextSource = arguments[sourcesIndex++];
1546 if (nextSource === undefined || nextSource === null) {
1549 var from = ToObject(nextSource);
1550 keys = OwnPropertyKeys(from);
1552 for (var keysIndex =
0; keysIndex < keys.length; ++keysIndex) {
1553 var nextKey = keys[keysIndex];
1554 var desc = Object.getOwnPropertyDescriptor(from, nextKey);
1555 if (desc !== undefined && desc.enumerable) {
1556 var propValue = from[nextKey];
1557 to[nextKey] = propValue;
1564 //
19.1.2.2 Object.create ( O [ , Properties ] )
1565 //
19.1.2.3 Object.defineProperties ( O, Properties )
1566 //
19.1.2.4 Object.defineProperty ( O, P, Attributes )
1567 //
19.1.2.5 Object.freeze ( O )
1568 //
19.1.2.6 Object.getOwnPropertyDescriptor ( O, P )
1571 var nativeSymbols = (typeof global.Symbol() === 'symbol'),
1572 $getOwnPropertyNames = Object.getOwnPropertyNames,
1573 $keys = Object.keys,
1574 $window_names = (typeof window === 'object' ? $getOwnPropertyNames(window) : []);
1576 function isStringKey(k) { return !symbolForKey(k); }
1578 //
19.1.2.7 Object.getOwnPropertyNames ( O )
1580 Object, 'getOwnPropertyNames',
1581 function getOwnPropertyNames(o) {
1582 if (Object.prototype.toString.call(o) === '[object Window]') {
1583 // Workaround for cross-realm calling by IE itself.
1584 // https://github.com/inexorabletash/polyfill/issues/
96
1586 return $getOwnPropertyNames(o).filter(isStringKey);
1588 return $window_names.slice();
1591 return $getOwnPropertyNames(o).filter(isStringKey);
1594 //
19.1.2.8 Object.getOwnPropertySymbols ( O )
1596 Object, 'getOwnPropertySymbols',
1597 function getOwnPropertySymbols(o) {
1598 return $getOwnPropertyNames(o).filter(symbolForKey).map(symbolForKey);
1601 //
19.1.2.14 Object.keys ( O )
1605 return $keys(o).filter(isStringKey);
1609 //
19.1.2.9 Object.getPrototypeOf ( O )
1610 //
19.1.2.10 Object.is ( value1, value2 )
1613 function is(value1, value2) {
1614 return SameValue(value1, value2);
1617 //
19.1.2.11 Object.isExtensible ( O )
1618 //
19.1.2.12 Object.isFrozen ( O )
1619 //
19.1.2.13 Object.isSealed ( O )
1621 //
19.1.2.14 Object.keys ( O )
1624 //
19.1.2.15 Object.preventExtensions ( O )
1625 //
19.1.2.16 Object.prototype
1626 //
19.1.2.17 Object.seal ( O )
1628 //
19.1.2.18 Object.setPrototypeOf ( O, proto )
1630 Object, 'setPrototypeOf',
1631 function setPrototypeOf(o, proto) {
1632 if (Type(o) !== 'object') throw TypeError();
1633 if (Type(proto) !== 'object' && Type(proto) !== 'null') throw TypeError();
1634 o.__proto__ = proto;
1639 //
19.1.3 Properties of the Object Prototype Object
1640 //
19.1.3.1 Object.prototype.constructor
1641 //
19.1.3.2 Object.prototype.hasOwnProperty ( V )
1642 //
19.1.3.3 Object.prototype.isPrototypeOf ( V )
1643 //
19.1.3.4 Object.prototype.propertyIsEnumerable ( V )
1644 //
19.1.3.5 Object.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
1645 //
19.1.3.6 Object.prototype.toString ( )
1646 hook(Object.prototype, 'toString',
1648 var o = strict(this);
1649 if (o === Object(o) && $$toStringTag in o) {
1650 return '[object ' + o[$$toStringTag] + ']';
1655 //
19.1.3.7 Object.prototype.valueOf ( )
1656 //
19.1.4 Properties of Object Instances
1658 // ---------------------------------------
1659 //
19.2 Function Objects
1660 // ---------------------------------------
1662 //
19.2.1 The Function Constructor
1663 //
19.2.1.1 Function ( p1, p2, … , pn, body )
1664 //
19.2.2 Properties of the Function Constructor
1665 //
19.2.2.1 Function.length
1666 //
19.2.2.2 Function.prototype
1667 //
19.2.3 Properties of the Function Prototype Object
1668 //
19.2.3.1 Function.prototype.apply ( thisArg, argArray )
1669 //
19.2.3.2 Function.prototype.bind ( thisArg , ...args)
1670 //
19.2.3.3 Function.prototype.call (thisArg , ...args)
1671 //
19.2.3.4 Function.prototype.constructor
1672 //
19.2.3.5 Function.prototype.toString ( )
1673 //
19.2.3.6 Function.prototype[@@hasInstance] ( V )
1674 //
19.2.4 Function Instances
1677 //
19.2.4.3 prototype
1679 // (No polyfillable changes from ES5)
1681 // ---------------------------------------
1682 //
19.3 Boolean Objects
1683 // ---------------------------------------
1685 //
19.3.1 The Boolean Constructor
1686 //
19.3.1.1 Boolean ( value )
1687 //
19.3.2 Properties of the Boolean Constructor
1688 //
19.3.2.1 Boolean.prototype
1689 //
19.3.3 Properties of the Boolean Prototype Object
1690 //
19.3.3.1 Boolean.prototype.constructor
1691 //
19.3.3.2 Boolean.prototype.toString ( )
1692 //
19.3.3.3 Boolean.prototype.valueOf ( )
1693 //
19.3.4 Properties of Boolean Instances
1695 // (No polyfillable changes from ES5)
1697 // ---------------------------------------
1698 //
19.4 Symbol Objects
1699 // ---------------------------------------
1701 // Moved earlier in this script, so that other polyfills can depend on them.
1703 //
19.4.3.4 Symbol.prototype [ @@toStringTag ]
1704 define(global.Symbol.prototype, global.Symbol.toStringTag, 'Symbol');
1706 // ---------------------------------------
1707 //
19.5 Error Objects
1708 // ---------------------------------------
1710 //
19.5.1 The Error Constructor
1711 //
19.5.1.1 Error ( message )
1712 //
19.5.1.2 new Error( ...argumentsList )
1713 //
19.5.2 Properties of the Error Constructor
1714 //
19.5.2.1 Error.prototype
1715 //
19.5.3 Properties of the Error Prototype Object
1716 //
19.5.3.1 Error.prototype.constructor
1717 //
19.5.3.2 Error.prototype.message
1718 //
19.5.3.3 Error.prototype.name
1719 //
19.5.3.4 Error.prototype.toString ( )
1720 //
19.5.4 Properties of Error Instances
1721 //
19.5.5 Native Error Types Used in This Standard
1722 //
19.5.5.1 EvalError
1723 //
19.5.5.2 RangeError
1724 //
19.5.5.3 ReferenceError
1725 //
19.5.5.4 SyntaxError
1726 //
19.5.5.5 TypeError
1727 //
19.5.5.6 URIError
1728 //
19.5.6 NativeError Object Structure
1729 //
19.5.6.1 NativeError Constructors
1730 //
19.5.6.1.1 NativeError ( message )
1731 //
19.5.6.1.2 new NativeError ( ...argumentsList )
1732 //
19.5.6.2 Properties of the NativeError Constructors
1733 //
19.5.6.2.1 NativeError.prototype
1734 //
19.5.6.3 Properties of the NativeError Prototype Objects
1735 //
19.5.6.4 Properties of NativeError Instances
1737 // (No polyfillable changes from ES5)
1739 // ---------------------------------------
1740 //
20 Numbers and Dates
1741 // ---------------------------------------
1743 // ---------------------------------------
1744 //
20.1 Number Objects
1745 // ---------------------------------------
1747 //
20.1.1 The Number Constructor
1748 //
20.1.1.1 Number ( [ value ] )
1749 //
20.1.1.2 new Number ( ...argumentsList )
1750 //
20.1.2 Properties of the Number Constructor
1752 //
20.1.2.1 Number.EPSILON
1757 for (next =
1;
1 + next !==
1; next = next /
2)
1762 //
20.1.2.2 Number.isFinite ( number )
1765 function isFinite(number) {
1766 if (Type(number) !== 'number') return false;
1767 if (number !== number || number === +Infinity || number === -Infinity) return false;
1771 //
20.1.2.3 Number.isInteger ( number )
1773 Number, 'isInteger',
1774 function isInteger(number) {
1775 if (Type(number) !== 'number') return false;
1776 if (number !== number || number === +Infinity || number === -Infinity) return false;
1777 var integer = ToInteger(number);
1778 if (integer !== number) return false;
1782 //
20.1.2.4 Number.isNaN ( number )
1785 function isNaN(number) {
1786 if (Type(number) !== 'number') return false;
1787 if (number !== number) return true;
1791 //
20.1.2.5 Number.isSafeInteger ( number )
1793 Number, 'isSafeInteger',
1794 function isSafeInteger(number) {
1795 if (Type(number) !== 'number') return false;
1796 if (number !== number || number === +Infinity || number === -Infinity) return false;
1797 var integer = ToInteger(number);
1798 if (integer !== number) return false;
1799 if (abs(integer) <= (
0x20000000000000 -
1)) //
2^
53-
1
1804 //
20.1.2.6 Number.MAX_SAFE_INTEGER
1806 Number, 'MAX_SAFE_INTEGER',
1807 9007199254740991); //
2^
53-
1
1809 //
20.1.2.7 Number.MAX_VALUE
1811 //
20.1.2.8 Number.MIN_SAFE_INTEGER
1813 Number, 'MIN_SAFE_INTEGER',
1814 -
9007199254740991); // -
2^
53+
1
1816 //
20.1.2.9 Number.MIN_VALUE
1817 //
20.1.2.10 Number.NaN
1818 //
20.1.2.11 Number.NEGATIVE_INFINITY
1820 //
20.1.2.12 Number.parseFloat ( string )
1821 define(Number, 'parseFloat', $parseFloat);
1823 //
20.1.2.13 Number.parseInt ( string, radix )
1824 define(Number, 'parseInt', $parseInt);
1826 //
20.1.2.14 Number.POSITIVE_INFINITY
1827 //
20.1.2.15 Number.prototype
1829 //
20.1.3 Properties of the Number Prototype Object
1830 //
20.1.3.1 Number.prototype.constructor
1831 //
20.1.3.2 Number.prototype.toExponential ( fractionDigits )
1832 //
20.1.3.3 Number.prototype.toFixed ( fractionDigits )
1833 //
20.1.3.4 Number.prototype.toLocaleString( [ reserved1 [ , reserved2 ] ])
1834 //
20.1.3.5 Number.prototype.toPrecision ( precision )
1835 //
20.1.3.6 Number.prototype.toString ( [ radix ] )
1836 //
20.1.3.7 Number.prototype.valueOf ( )
1837 //
20.1.4 Properties of Number Instances
1839 // ---------------------------------------
1840 //
20.2 The Math Object
1841 // ---------------------------------------
1843 //
20.2.1 Value Properties of the Math Object
1845 //
20.2.1.2 Math.LN10
1846 //
20.2.1.3 Math.LN2
1847 //
20.2.1.4 Math.LOG10E
1848 //
20.2.1.5 Math.LOG2E
1850 //
20.2.1.7 Math.SQRT1_2
1851 //
20.2.1.8 Math.SQRT2
1853 //
20.2.1.9 Math [ @@toStringTag ]
1854 define(Math, $$toStringTag, 'Math');
1856 //
20.2.2 Function Properties of the Math Object
1857 //
20.2.2.1 Math.abs ( x )
1858 //
20.2.2.2 Math.acos ( x )
1860 //
20.2.2.3 Math.acosh(x)
1865 return log(x + sqrt(x * x -
1));
1868 //
20.2.2.4 Math.asin ( x )
1870 //
20.2.2.5 Math.asinh( x )
1875 if (SameValue(x, -
0)) {
1878 var s = sqrt(x * x +
1);
1879 return (s === -x) ? log(
0) : log(x + s);
1882 //
20.2.2.6 Math.atan ( x )
1884 //
20.2.2.7 Math.atanh( x )
1889 return (x ===
0) ? x : log((
1 + x) / (
1 - x)) /
2;
1892 //
20.2.2.8 Math.atan2 ( y, x )
1894 //
20.2.2.9 Math.cbrt ( x )
1902 var r = pow(abs(x),
1/
3);
1904 return r + (r * (t-r) / (
2*r + t));
1907 //
20.2.2.10 Math.ceil ( x )
1909 //
20.2.2.11 Math.clz32 ( x )
1914 return (x &
0xf0) ? (x &
0x80 ?
0 : x &
0x40 ?
1 : x &
0x20 ?
2 :
3) :
1915 (x &
0x08 ?
4 : x &
0x04 ?
5 : x &
0x02 ?
6 : x &
0x01 ?
7 :
8);
1918 return x &
0xff000000 ? clz8(x
>> 24) :
1919 x &
0xff0000 ? clz8(x
>> 16) +
8 :
1920 x &
0xff00 ? clz8(x
>> 8) +
16 : clz8(x) +
24;
1925 //
20.2.2.12 Math.cos ( x )
1927 //
20.2.2.13 Math.cosh ( x )
1932 return (pow(E, x) + pow(E, -x)) /
2;
1935 //
20.2.2.14 Math.exp ( x )
1937 //
20.2.2.15 Math.expm1 ( x )
1942 // from: http://www.johndcook.com/cpp_log1p.html
1943 if (SameValue(x, -
0)) {
1945 } else if (abs(x) <
1e-5) {
1946 return x +
0.5 * x * x; // two terms of Taylor expansion
1952 //
20.2.2.16 Math.floor ( x )
1954 //
20.2.2.17 Math.fround ( x )
1957 function fround(x) {
1961 if (
1/x === +Infinity ||
1/x === -Infinity || x === +Infinity || x === -Infinity) {
1964 return (new Float32Array([x]))[
0];
1967 //
20.2.2.18 Math.hypot ( value1 [, value2 [ ... ] ] )
1972 var m =
0, sawNaN = false;
1973 for (var i =
0; i < arguments.length; ++i) {
1974 var n = abs(Number(arguments[i]));
1975 if (n === Infinity) return n;
1976 if (n !== n) sawNaN = true;
1980 if (sawNaN) return NaN;
1981 if (m ===
0) return +
0;
1983 for (i =
0; i < values.length; ++i) {
1984 var r = values[i] / m;
1987 return m * sqrt(sum);
1990 //
20.2.2.19 Math.imul ( x, y )
1993 function imul(x, y) {
1994 var a = ToUint32(x);
1995 var b = ToUint32(y);
1996 // (slow but accurate)
1997 var ah = (a
>>> 16) &
0xffff;
1998 var al = a &
0xffff;
1999 var bh = (b
>>> 16) &
0xffff;
2000 var bl = b &
0xffff;
2001 return ((al * bl) + (((ah * bl + al * bh) <<
16)
>>> 0)|
0);
2002 }, ('imul' in Math && Math.imul(
1,
0x80000000) ===
0) // Safari
7 bug
2005 //
20.2.2.20 Math.log ( x )
2007 //
20.2.2.21 Math.log1p ( x )
2012 // from: http://www.johndcook.com/cpp_expm1.html
2015 } else if (SameValue(x, -
0)) {
2017 } else if (abs(x)
> 1e-4) {
2020 return (-
0.5 * x +
1) * x;
2024 //
20.2.2.22 Math.log10 ( x )
2029 return log(x) * LOG10E;
2032 //
20.2.2.23 Math.log2 ( x )
2037 return log(x) * LOG2E;
2040 //
20.2.2.24 Math.max ( value1, value2 , ...values )
2041 //
20.2.2.25 Math.min ( value1, value2 , ...values )
2042 //
20.2.2.26 Math.pow ( x, y )
2043 //
20.2.2.27 Math.random ( )
2044 //
20.2.2.28 Math.round ( x )
2046 //
20.2.2.29 Math.sign(x)
2051 return x <
0 ? -
1 : x
> 0 ?
1 : x;
2054 //
20.2.2.30 Math.sin ( x )
2056 //
20.2.2.31 Math.sinh( x )
2061 return SameValue(x, -
0) ? x : (pow(E, x) - pow(E, -x)) /
2;
2064 //
20.2.2.32 Math.sqrt ( x )
2065 //
20.2.2.33 Math.tan ( x )
2067 //
20.2.2.34 Math.tanh ( x )
2072 var n = pow(E,
2 * x) -
1,
2073 d = pow(E,
2 * x) +
1;
2074 if (SameValue(x, -
0))
2076 return (n === d) ?
1 : n / d; // Handle Infinity/Infinity
2079 //
20.2.2.35 Math.trunc ( x )
2084 return $isNaN(x) ? NaN :
2085 x <
0 ? ceil(x) : floor(x);
2088 // ---------------------------------------
2089 //
20.3 Date Objects
2090 // ---------------------------------------
2092 //
20.3.1 Overview of Date Objects and Definitions of Abstract Operations
2093 //
20.3.1.1 Time Values and Time Range
2094 //
20.3.1.2 Day Number and Time within Day
2095 //
20.3.1.3 Year Number
2096 //
20.3.1.4 Month Number
2097 //
20.3.1.5 Date Number
2098 //
20.3.1.6 Week Day
2099 //
20.3.1.7 Local Time Zone Adjustment
2100 //
20.3.1.8 Daylight Saving Time Adjustment
2101 //
20.3.1.9 Local Time
2102 //
20.3.1.10 Hours, Minutes, Second, and Milliseconds
2103 //
20.3.1.11 MakeTime (hour, min, sec, ms)
2104 //
20.3.1.12 MakeDay (year, month, date)
2105 //
20.3.1.13 MakeDate (day, time)
2106 //
20.3.1.14 TimeClip (time)
2107 //
20.3.1.15 Date Time String Format
2108 //
20.3.1.15.1 Extended years
2109 //
20.3.2 The Date Constructor
2110 //
20.3.2.1 Date ( year, month [, date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
2111 //
20.3.2.2 Date ( value )
2112 //
20.3.2.3 Date ( )
2113 //
20.3.3 Properties of the Date Constructor
2114 //
20.3.3.1 Date.now ( )
2115 //
20.3.3.2 Date.parse (string)
2116 //
20.3.3.3 Date.prototype
2117 //
20.3.3.4 Date.UTC ( year, month [ , date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
2118 //
20.3.4 Properties of the Date Prototype Object
2119 //
20.3.4.1 Date.prototype.constructor
2120 //
20.3.4.2 Date.prototype.getDate ( )
2121 //
20.3.4.3 Date.prototype.getDay ( )
2122 //
20.3.4.4 Date.prototype.getFullYear ( )
2123 //
20.3.4.5 Date.prototype.getHours ( )
2124 //
20.3.4.6 Date.prototype.getMilliseconds ( )
2125 //
20.3.4.7 Date.prototype.getMinutes ( )
2126 //
20.3.4.8 Date.prototype.getMonth ( )
2127 //
20.3.4.9 Date.prototype.getSeconds ( )
2128 //
20.3.4.10 Date.prototype.getTime ( )
2129 //
20.3.4.11 Date.prototype.getTimezoneOffset ( )
2130 //
20.3.4.12 Date.prototype.getUTCDate ( )
2131 //
20.3.4.13 Date.prototype.getUTCDay ( )
2132 //
20.3.4.14 Date.prototype.getUTCFullYear ( )
2133 //
20.3.4.15 Date.prototype.getUTCHours ( )
2134 //
20.3.4.16 Date.prototype.getUTCMilliseconds ( )
2135 //
20.3.4.17 Date.prototype.getUTCMinutes ( )
2136 //
20.3.4.18 Date.prototype.getUTCMonth ( )
2137 //
20.3.4.19 Date.prototype.getUTCSeconds ( )
2138 //
20.3.4.20 Date.prototype.setDate ( date )
2139 //
20.3.4.21 Date.prototype.setFullYear ( year [ , month [ , date ] ] )
2140 //
20.3.4.22 Date.prototype.setHours ( hour [ , min [ , sec [ , ms ] ] ] )
2141 //
20.3.4.23 Date.prototype.setMilliseconds ( ms )
2142 //
20.3.4.24 Date.prototype.setMinutes ( min [ , sec [ , ms ] ] )
2143 //
20.3.4.25 Date.prototype.setMonth ( month [ , date ] )
2144 //
20.3.4.26 Date.prototype.setSeconds ( sec [ , ms ] )
2145 //
20.3.4.27 Date.prototype.setTime ( time )
2146 //
20.3.4.28 Date.prototype.setUTCDate ( date )
2147 //
20.3.4.29 Date.prototype.setUTCFullYear ( year [ , month [ , date ] ] )
2148 //
20.3.4.30 Date.prototype.setUTCHours ( hour [ , min [ , sec [ , ms ] ] ] )
2149 //
20.3.4.31 Date.prototype.setUTCMilliseconds ( ms )
2150 //
20.3.4.32 Date.prototype.setUTCMinutes ( min [ , sec [, ms ] ] )
2151 //
20.3.4.33 Date.prototype.setUTCMonth ( month [ , date ] )
2152 //
20.3.4.34 Date.prototype.setUTCSeconds ( sec [ , ms ] )
2153 //
20.3.4.35 Date.prototype.toDateString ( )
2154 //
20.3.4.36 Date.prototype.toISOString ( )
2155 //
20.3.4.37 Date.prototype.toJSON ( key )
2156 //
20.3.4.38 Date.prototype.toLocaleDateString ( [ reserved1 [ , reserved2 ] ] )
2157 //
20.3.4.39 Date.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
2158 //
20.3.4.40 Date.prototype.toLocaleTimeString ( [ reserved1 [ , reserved2 ] ] )
2159 //
20.3.4.41 Date.prototype.toString ( )
2160 //
20.3.4.42 Date.prototype.toTimeString ( )
2161 //
20.3.4.43 Date.prototype.toUTCString ( )
2162 //
20.3.4.44 Date.prototype.valueOf ( )
2163 //
20.3.4.45 Date.prototype [ @@toPrimitive ] ( hint )
2164 //
20.3.5 Properties of Date Instances
2166 // (No polyfillable changes from ES5)
2168 // ---------------------------------------
2169 //
21 Text Processing
2170 // ---------------------------------------
2172 var string_regexp_dispatch = (function() {
2173 var faux = {}, secret = Symbol();
2174 faux[Symbol.match] = function() { return secret; };
2175 return (
"").match(faux) === secret;
2178 //
21.1 String Objects
2179 //
21.1.1 The String Constructor
2180 //
21.1.1.1 String ( value )
2181 //
21.1.2 Properties of the String Constructor
2182 //
21.1.2.1 String.fromCharCode ( ...codeUnits )
2184 //
21.1.2.2 String.fromCodePoint ( ...codePoints )
2186 String, 'fromCodePoint',
2187 function fromCodePoint(/*...codePoints*/) {
2188 var codePoints = arguments,
2189 length = codePoints.length,
2192 while (nextIndex < length) {
2193 var next = codePoints[nextIndex];
2194 var nextCP = Number(next);
2195 if (!SameValue(nextCP, ToInteger(nextCP)) ||
2196 nextCP <
0 || nextCP
> 0x10FFFF) {
2197 throw RangeError('Invalid code point ' + nextCP);
2199 if (nextCP <
0x10000) {
2200 elements.push(String.fromCharCode(nextCP));
2203 elements.push(String.fromCharCode((nextCP
>> 10) +
0xD800));
2204 elements.push(String.fromCharCode((nextCP %
0x400) +
0xDC00));
2208 return elements.join('');
2211 //
21.1.2.3 String.prototype
2213 //
21.1.2.4 String.raw ( template , ...substitutions )
2216 function raw(template /*, ...substitutions*/) {
2217 var substitutions = [].slice.call(arguments,
1);
2219 var cooked = Object(template);
2220 var rawValue = cooked['raw'];
2221 var raw = Object(rawValue);
2222 var len = raw['length'];
2223 var literalSegments = ToLength(len);
2224 if (literalSegments <=
0) return '';
2225 var stringElements = [];
2228 var next = raw[nextIndex];
2229 var nextSeg = String(next);
2230 stringElements.push(nextSeg);
2231 if (nextIndex +
1 === literalSegments)
2232 return stringElements.join('');
2233 next = substitutions[nextIndex];
2234 var nextSub = String(next);
2235 stringElements.push(nextSub);
2236 nextIndex = nextIndex +
1;
2240 // See https://githib.com/inexorabletash/uate for a more useful version.
2242 //
21.1.3 Properties of the String Prototype Object
2243 //
21.1.3.1 String.prototype.charAt ( pos )
2244 //
21.1.3.2 String.prototype.charCodeAt ( pos )
2246 //
21.1.3.3 String.prototype.codePointAt ( pos )
2248 String.prototype, 'codePointAt',
2249 function codePointAt(pos) {
2250 var o = strict(this);
2252 var position = ToInteger(pos);
2253 var size = s.length;
2254 if (position <
0 || position
>= size) return undefined;
2255 var first = s.charCodeAt(position);
2256 if (first <
0xD800 || first
> 0xDBFF || position +
1 === size) return first;
2257 var second = s.charCodeAt(position +
1);
2258 if (second <
0xDC00 || second
> 0xDFFF) return first;
2259 return ((first -
0xD800) *
1024) + (second -
0xDC00) +
0x10000;
2262 //
21.1.3.4 String.prototype.concat ( ...args )
2263 //
21.1.3.5 String.prototype.constructor
2265 //
21.1.3.6 String.prototype.endsWith ( searchString [ , endPosition] )
2267 String.prototype, 'endsWith',
2268 function endsWith(searchString) {
2269 var endPosition = arguments[
1];
2271 var o = strict(this);
2273 var searchStr = String(searchString);
2275 var pos = (endPosition === undefined) ? len : ToInteger(endPosition);
2276 var end = min(max(pos,
0), len);
2277 var searchLength = searchStr.length;
2278 var start = end - searchLength;
2279 if (start <
0) return false;
2280 if (s.substring(start, start + searchLength) === searchStr) return true;
2284 //
21.1.3.7 String.prototype.includes ( searchString [ , position ] )
2286 String.prototype, 'includes',
2287 function includes(searchString) {
2288 var position = arguments[
1];
2290 var o = strict(this);
2292 var searchStr = String(searchString);
2293 var pos = ToInteger(position);
2295 var start = min(max(pos,
0), len);
2296 return s.indexOf(searchStr, start) !== -
1;
2299 //
21.1.3.8 String.prototype.indexOf ( searchString [ , position ] )
2300 //
21.1.3.9 String.prototype.lastIndexOf ( searchString [ , position ] )
2301 //
21.1.3.10 String.prototype.localeCompare ( that [, reserved1 [ , reserved2 ] ] )
2302 //
21.1.3.11 String.prototype.match ( regexp )
2304 String.prototype, 'match',
2305 function match(regexp) {
2306 var o = strict(this);
2308 if (HasProperty(regexp, $$match)) var rx = regexp;
2309 else rx = new RegExp(regexp);
2310 return rx[$$match](s);
2311 }, !string_regexp_dispatch);
2313 //
21.1.3.12 String.prototype.normalize ( [ form ] )
2315 // Not practical due to table sizes; if needed, pull in:
2316 // https://github.com/walling/unorm/
2318 //
21.1.3.13 String.prototype.repeat ( count )
2320 String.prototype, 'repeat',
2321 function repeat(count) {
2322 var o = strict(this);
2324 var n = ToInteger(count);
2325 if (n <
0) throw RangeError();
2326 if (n === Infinity) throw RangeError();
2327 var t = new Array(n +
1).join(s);
2331 //
21.1.3.14 String.prototype.replace (searchValue, replaceValue )
2333 String.prototype, 'replace',
2334 function replace(searchValue, replaceValue) {
2335 var o = strict(this);
2336 if (HasProperty(searchValue, $$replace))
2337 return searchValue[$$replace](o, replaceValue);
2338 return orig_replace.call(o, searchValue, replaceValue);
2339 }, !string_regexp_dispatch);
2341 //
21.1.3.15 String.prototype.search ( regexp )
2343 String.prototype, 'search',
2344 function search(regexp) {
2345 var o = strict(this);
2346 var string = String(o);
2347 if (HasProperty(regexp, $$search)) var rx = regexp;
2348 else rx = new RegExp(regexp);
2349 return rx[$$search](string);
2350 }, !string_regexp_dispatch);
2352 //
21.1.3.16 String.prototype.slice ( start, end )
2353 //
21.1.3.17 String.prototype.split ( separator, limit )
2355 String.prototype, 'split',
2356 function split(separator, limit) {
2357 var o = strict(this);
2358 if (HasProperty(separator, $$split))
2359 return separator[$$split](o, limit);
2360 return orig_split.call(o, separator, limit);
2361 }, !string_regexp_dispatch);
2363 //
21.1.3.18 String.prototype.startsWith ( searchString [, position ] )
2365 String.prototype, 'startsWith',
2366 function startsWith(searchString) {
2367 var position = arguments[
1];
2369 var o = strict(this);
2371 var searchStr = String(searchString);
2372 var pos = ToInteger(position);
2374 var start = min(max(pos,
0), len);
2375 var searchLength = searchStr.length;
2376 if (searchLength + start
> len) return false;
2377 if (s.substring(start, start + searchLength) === searchStr) return true;
2381 //
21.1.3.19 String.prototype.substring ( start, end )
2382 //
21.1.3.20 String.prototype.toLocaleLowerCase ( [ reserved1 [ , reserved2 ] ] )
2383 //
21.1.3.21 String.prototype.toLocaleUpperCase ([ reserved1 [ , reserved2 ] ] )
2384 //
21.1.3.22 String.prototype.toLowerCase ( )
2385 //
21.1.3.23 String.prototype.toString ( )
2386 //
21.1.3.24 String.prototype.toUpperCase ( )
2387 //
21.1.3.25 String.prototype.trim ( )
2388 //
21.1.3.26 String.prototype.valueOf ( )
2390 //
21.1.3.27 String.prototype [ @@iterator ]( )
2392 String.prototype, $$iterator,
2393 function entries() {
2394 return CreateStringIterator(this, 'value');
2397 //
21.1.4 Properties of String Instances
2400 //
21.1.5 String Iterator Objects
2402 function StringIterator() {}
2404 //
21.1.5.1 CreateStringIterator Abstract Operation
2405 function CreateStringIterator(string, kind) {
2406 var s = String(string);
2407 var iterator = new StringIterator;
2408 set_internal(iterator, '[[IteratedString]]', s);
2409 set_internal(iterator, '[[StringIteratorNextIndex]]',
0);
2410 set_internal(iterator, '[[StringIterationKind]]', kind);
2414 //
21.1.5.2 The %StringIteratorPrototype% Object
2415 var $StringIteratorPrototype$ = Object.create($IteratorPrototype$);
2416 StringIterator.prototype = $StringIteratorPrototype$;
2418 //
21.1.5.2.1 %StringIteratorPrototype%.next ( )
2420 $StringIteratorPrototype$, 'next',
2422 var o = ToObject(this);
2423 var s = String(o['[[IteratedString]]']),
2424 index = o['[[StringIteratorNextIndex]]'],
2427 set_internal(o, '[[StringIteratorNextIndex]]', Infinity);
2428 return CreateIterResultObject(undefined, true);
2430 var cp = s.codePointAt(index);
2431 set_internal(o, '[[StringIteratorNextIndex]]', index + (cp
> 0xFFFF ?
2 :
1));
2432 return CreateIterResultObject(String.fromCodePoint(cp), false);
2435 //
21.1.5.2.2 %StringIteratorPrototype% [ @@toStringTag ]
2436 define($StringIteratorPrototype$, $$toStringTag, 'String Iterator');
2438 //
21.1.5.3 Properties of String Iterator Instances
2440 // ---------------------------------------
2441 //
21.2 RegExp (Regular Expression) Objects
2442 // ---------------------------------------
2445 //
21.2.2 Pattern Semantics
2446 //
21.2.2.1 Notation
2448 //
21.2.2.3 Disjunction
2449 //
21.2.2.4 Alternative
2451 //
21.2.2.6 Assertion
2452 //
21.2.2.7 Quantifier
2454 //
21.2.2.9 AtomEscape
2455 //
21.2.2.10 CharacterEscape
2456 //
21.2.2.11 DecimalEscape
2457 //
21.2.2.12 CharacterClassEscape
2458 //
21.2.2.13 CharacterClass
2459 //
21.2.2.14 ClassRanges
2460 //
21.2.2.15 NonemptyClassRanges
2461 //
21.2.2.16 NonemptyClassRangesNoDash
2462 //
21.2.2.17 ClassAtom
2463 //
21.2.2.18 ClassAtomNoDash
2464 //
21.2.2.19 ClassEscape
2465 //
21.2.3 The RegExp Constructor
2466 //
21.2.3.1 RegExp ( pattern, flags )
2467 //
21.2.3.2 new RegExp( ...argumentsList )
2468 //
21.2.3.3 Abstract Operations for the RegExp Constructor
2469 //
21.2.4 Properties of the RegExp Constructor
2470 //
21.2.4.1 RegExp.prototype
2471 //
21.2.5 Properties of the RegExp Prototype Object
2472 //
21.2.5.1 RegExp.prototype.constructor
2473 //
21.2.5.2 RegExp.prototype.exec ( string )
2475 //
21.2.5.3 get RegExp.prototype.flags
2476 if (!('flags' in RegExp.prototype)) {
2477 Object.defineProperty(
2478 RegExp.prototype, 'flags', {
2480 var s = String(this);
2481 return s.substring(s.lastIndexOf('/') +
1);
2486 //
21.2.5.4 get RegExp.prototype.global
2487 //
21.2.5.5 get RegExp.prototype.ignoreCase
2489 //
21.2.5.6 RegExp.prototype [ @@match ] ( string )
2490 define(RegExp.prototype, $$match, function(string) {
2491 var o = strict(this);
2492 return orig_match.call(string, o);
2495 //
21.2.5.7 get RegExp.prototype.multiline
2497 //
21.2.5.8 RegExp.prototype [ @@replace ] ( string, replaceValue )
2498 define(RegExp.prototype, $$replace, function(string, replaceValue) {
2499 var o = strict(this);
2500 return orig_replace.call(string, o, replaceValue);
2503 //
21.2.5.9 RegExp.prototype [ @@search ] ( string )
2504 define(RegExp.prototype, $$search, function(string) {
2505 var o = strict(this);
2506 return orig_search.call(string, o);
2509 //
21.2.5.10 get RegExp.prototype.source
2511 //
21.2.5.11 RegExp.prototype [ @@split ] ( string, limit )
2512 define(RegExp.prototype, $$split, function(string, limit) {
2513 var o = strict(this);
2514 return orig_split.call(string, o, limit);
2517 //
21.2.5.12 get RegExp.prototype.sticky
2518 //
21.2.5.13 RegExp.prototype.test( S )
2519 //
21.2.5.14 RegExp.prototype.toString ( )
2520 //
21.2.5.15 get RegExp.prototype.unicode
2522 //
21.2.6 Properties of RegExp Instances
2523 //
21.2.6.1 lastIndex
2525 // (No polyfillable changes from ES5)
2527 // ---------------------------------------
2528 //
22 Indexed Collections
2529 // ---------------------------------------
2531 // ---------------------------------------
2532 //
22.1 Array Objects
2533 // ---------------------------------------
2535 //
22.1.1 The Array Constructor
2536 //
22.1.1.1 Array ( )
2537 //
22.1.1.2 Array (len)
2538 //
22.1.1.3 Array (...items )
2540 //
22.1.2 Properties of the Array Constructor
2542 //
22.1.2.1 Array.from ( items [ , mapfn [ , thisArg ] ] )
2545 function from(items) {
2546 var mapfn = arguments[
1];
2547 var thisArg = arguments[
2];
2549 var c = strict(this);
2550 if (mapfn === undefined) {
2551 var mapping = false;
2553 if (!IsCallable(mapfn)) throw TypeError();
2557 var usingIterator = GetMethod(items, $$iterator);
2558 if (usingIterator !== undefined) {
2559 if (IsConstructor(c)) {
2564 var iterator = GetIterator(items, usingIterator);
2567 var next = IteratorStep(iterator);
2568 if (next === false) {
2572 var nextValue = IteratorValue(next);
2574 var mappedValue = mapfn.call(t, nextValue);
2576 mappedValue = nextValue;
2581 var arrayLike = ToObject(items);
2582 var lenValue = arrayLike.length;
2583 var len = ToLength(lenValue);
2584 if (IsConstructor(c)) {
2591 var kValue = arrayLike[k];
2593 mappedValue = mapfn.call(t, kValue, k);
2595 mappedValue = kValue;
2603 //
22.1.2.2 Array.isArray ( arg )
2605 //
22.1.2.3 Array.of ( ...items )
2609 var items = arguments;
2611 var lenValue = items.length;
2612 var len = ToUint32(lenValue);
2613 var c = strict(this), a;
2614 if (IsConstructor(c)) {
2629 //
22.1.2.4 Array.prototype
2630 //
22.1.2.5 get Array [ @@species ]
2631 //
22.1.3 Properties of the Array Prototype Object
2632 //
22.1.3.1 Array.prototype.concat ( ...arguments )
2633 //
22.1.3.1.1 Runtime Semantics: IsConcatSpreadable ( O )
2634 //
22.1.3.2 Array.prototype.constructor
2635 //
22.1.3.3 Array.prototype.copyWithin (target, start [ , end ] )
2637 Array.prototype, 'copyWithin',
2638 function copyWithin(target, start/*, end*/) {
2639 var end = arguments[
2];
2641 var o = ToObject(this);
2642 var lenVal = o.length;
2643 var len = ToLength(lenVal);
2645 var relativeTarget = ToInteger(target);
2647 if (relativeTarget <
0)
2648 to = max(len + relativeTarget,
0);
2650 to = min(relativeTarget, len);
2651 var relativeStart = ToInteger(start);
2653 if (relativeStart <
0)
2654 from = max(len + relativeStart,
0);
2656 from = min(relativeStart, len);
2658 if (end === undefined)
2661 relativeEnd = ToInteger(end);
2663 if (relativeEnd <
0)
2664 final = max(len + relativeEnd,
0);
2666 final = min(relativeEnd, len);
2667 var count = min(final - from, len - to);
2669 if (from < to && to < from + count) {
2671 from = from + count -
1;
2672 to = to + count -
1;
2677 var fromKey = String(from);
2678 var toKey = String(to);
2679 var fromPresent = HasProperty(o, fromKey);
2681 var fromVal = o[fromKey];
2686 from = from + direction;
2687 to = to + direction;
2693 //
22.1.3.4 Array.prototype.entries ( )
2694 var nativeArrayIteratorMethods =
2695 ('entries' in Array.prototype && 'next' in [].entries());
2698 Array.prototype, 'entries',
2699 function entries() {
2700 return CreateArrayIterator(this, 'key+value');
2701 }, !nativeArrayIteratorMethods);
2703 //
22.1.3.5 Array.prototype.every ( callbackfn [ , thisArg] )
2705 //
22.1.3.6 Array.prototype.fill (value [ , start [ , end ] ] )
2707 Array.prototype, 'fill',
2708 function fill(value/*, start, end*/) {
2709 var start = arguments[
1],
2712 var o = ToObject(this);
2713 var lenVal = o.length;
2714 var len = ToLength(lenVal);
2716 var relativeStart = ToInteger(start);
2718 if (relativeStart <
0)
2719 k = max((len + relativeStart),
0);
2721 k = min(relativeStart, len);
2723 if (end === undefined)
2726 relativeEnd = ToInteger(end);
2728 if (relativeEnd <
0)
2729 final = max((len + relativeEnd),
0);
2731 final = min(relativeEnd, len);
2740 //
22.1.3.7 Array.prototype.filter ( callbackfn [ , thisArg ] )
2742 //
22.1.3.8 Array.prototype.find ( predicate [ , thisArg ] )
2744 Array.prototype, 'find',
2745 function find(predicate) {
2746 var o = ToObject(this);
2747 var lenValue = o.length;
2748 var len = ToInteger(lenValue);
2749 if (!IsCallable(predicate)) throw TypeError();
2750 var t = arguments.length
> 1 ? arguments[
1] : undefined;
2754 var kPresent = HasProperty(o, pk);
2757 var testResult = predicate.call(t, kValue, k, o);
2758 if (Boolean(testResult)) {
2767 //
22.1.3.9 Array.prototype.findIndex ( predicate [ , thisArg ] )
2769 Array.prototype, 'findIndex',
2770 function findIndex(predicate) {
2771 var o = ToObject(this);
2772 var lenValue = o.length;
2773 var len = ToLength(lenValue);
2774 if (!IsCallable(predicate)) throw TypeError();
2775 var t = arguments.length
> 1 ? arguments[
1] : undefined;
2779 var kPresent = HasProperty(o, pk);
2782 var testResult = predicate.call(t, kValue, k, o);
2783 if (Boolean(testResult)) {
2792 //
22.1.3.10 Array.prototype.forEach ( callbackfn [ , thisArg ] )
2793 //
22.1.3.11 Array.prototype.indexOf ( searchElement [ , fromIndex ] )
2794 //
22.1.3.12 Array.prototype.join (separator)
2796 //
22.1.3.13 Array.prototype.keys ( )
2798 Array.prototype, 'keys',
2800 return CreateArrayIterator(this, 'key');
2801 }, !nativeArrayIteratorMethods);
2803 //
22.1.3.14 Array.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
2804 //
22.1.3.15 Array.prototype.map ( callbackfn [ , thisArg ] )
2805 //
22.1.3.16 Array.prototype.pop ( )
2806 //
22.1.3.17 Array.prototype.push ( ...items )
2807 //
22.1.3.18 Array.prototype.reduce ( callbackfn [ , initialValue ] )
2808 //
22.1.3.19 Array.prototype.reduceRight ( callbackfn [ , initialValue ] )
2809 //
22.1.3.20 Array.prototype.reverse ( )
2810 //
22.1.3.21 Array.prototype.shift ( )
2811 //
22.1.3.22 Array.prototype.slice (start, end)
2812 //
22.1.3.23 Array.prototype.some ( callbackfn [ , thisArg ] )
2813 //
22.1.3.24 Array.prototype.sort (comparefn)
2814 //
22.1.3.25 Array.prototype.splice (start, deleteCount , ...items )
2815 //
22.1.3.26 Array.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
2816 //
22.1.3.27 Array.prototype.toString ( )
2817 //
22.1.3.28 Array.prototype.unshift ( ...items )
2819 //
22.1.3.29 Array.prototype.values ( )
2821 Array.prototype, 'values',
2823 return CreateArrayIterator(this, 'value');
2824 }, !nativeArrayIteratorMethods);
2826 //
22.1.3.30 Array.prototype [ @@iterator ] ( )
2828 Array.prototype, $$iterator,
2829 Array.prototype.values
2832 //
22.1.3.31 Array.prototype [ @@unscopables ]
2833 //
22.1.4 Properties of Array Instances
2836 //
22.1.5 Array Iterator Objects
2837 function ArrayIterator() {}
2839 //
22.1.5.1 CreateArrayIterator Abstract Operation
2840 function CreateArrayIterator(array, kind) {
2841 var o = ToObject(array);
2842 var iterator = new ArrayIterator;
2843 set_internal(iterator, '[[IteratedObject]]', o);
2844 set_internal(iterator, '[[ArrayIteratorNextIndex]]',
0);
2845 set_internal(iterator, '[[ArrayIterationKind]]', kind);
2849 //
22.1.5.2 The %ArrayIteratorPrototype% Object
2850 var $ArrayIteratorPrototype$ = Object.create($IteratorPrototype$);
2851 ArrayIterator.prototype = $ArrayIteratorPrototype$;
2853 //
22.1.5.2.1 %ArrayIteratorPrototype%. next( )
2855 $ArrayIteratorPrototype$, 'next',
2857 var o = strict(this);
2858 if (Type(o) !== 'object') throw TypeError();
2859 var a = o['[[IteratedObject]]'],
2860 index = o['[[ArrayIteratorNextIndex]]'],
2861 itemKind = o['[[ArrayIterationKind]]'],
2862 lenValue = a.length,
2863 len = ToUint32(lenValue),
2866 if (itemKind.indexOf('sparse') !== -
1) {
2868 while (!found && index < len) {
2869 elementKey = String(index);
2870 found = HasProperty(a, elementKey);
2877 set_internal(o, '[[ArrayIteratorNextIndex]]', Infinity);
2878 return CreateIterResultObject(undefined, true);
2881 set_internal(o, '[[ArrayIteratorNextIndex]]', index +
1);
2882 if (itemKind.indexOf('value') !== -
1)
2883 elementValue = a[elementKey];
2884 if (itemKind.indexOf('key+value') !== -
1)
2885 return CreateIterResultObject([elementKey, elementValue], false);
2886 if (itemKind.indexOf('key') !== -
1)
2887 return CreateIterResultObject(elementKey, false);
2888 if (itemKind === 'value')
2889 return CreateIterResultObject(elementValue, false);
2890 throw Error('Internal error');
2893 //
22.1.5.2.2 %ArrayIteratorPrototype% [ @@toStringTag ]
2894 define($ArrayIteratorPrototype$, $$toStringTag, 'Array Iterator');
2896 //
22.1.5.3 Properties of Array Iterator Instances
2899 // ---------------------------------------
2900 //
22.2 TypedArray Objects
2901 // ---------------------------------------
2903 // See typedarray.js for TypedArray polyfill
2905 ['Int8Array', 'Uint8Array', 'Uint8ClampedArray',
2906 'Int16Array', 'Uint16Array',
2907 'Int32Array', 'Uint32Array',
2908 'Float32Array', 'Float64Array'].forEach(function ($TypedArrayName$) {
2909 if (!($TypedArrayName$ in global))
2911 var $TypedArray$ = global[$TypedArrayName$];
2913 //
22.2.1 The %TypedArray% Intrinsic Object
2914 //
22.2.1.1 %TypedArray% ( length )
2915 //
22.2.1.2 %TypedArray% ( typedArray )
2916 //
22.2.1.3 %TypedArray% ( object )
2917 //
22.2.1.4 %TypedArray% ( buffer [ , byteOffset [ , length ] ] )
2918 //
22.2.1.5 %TypedArray% ( all other argument combinations )
2919 //
22.2.2 Properties of the %TypedArray% Intrinsic Object
2921 //
22.2.2.1 %TypedArray%.from ( source [ , mapfn [ , thisArg ] ] )
2923 $TypedArray$, 'from',
2924 function from(source) {
2925 var mapfn = arguments[
1];
2926 var thisArg = arguments[
2];
2928 var c = strict(this);
2929 if (!IsConstructor(c)) throw TypeError();
2930 if (mapfn === undefined) {
2931 var mapping = false;
2933 if (IsCallable(mapfn)) throw TypeError();
2937 var usingIterator = GetMethod(source, $$iterator);
2938 if (usingIterator !== undefined) {
2939 var iterator = GetIterator(source, usingIterator);
2942 while (next !== false) {
2943 next = IteratorStep(iterator);
2944 if (next !== false) {
2945 var nextValue = IteratorValue(next);
2946 values.push(nextValue);
2949 var len = values.length;
2950 var newObj = new c(len);
2953 var kValue = values.shift();
2955 var mappedValue = mapfn.call(t, kValue);
2957 mappedValue = kValue;
2959 newObj[k] = mappedValue;
2962 console.assert(values.length ===
0);
2965 var arrayLike = ToObject(source);
2966 var lenValue = arrayLike.length;
2967 len = ToLength(lenValue);
2968 newObj = new c(len);
2971 kValue = arrayLike[k];
2973 mappedValue = mapfn.call(t, kValue, k);
2975 mappedValue = kValue;
2977 newObj[k] = mappedValue;
2983 //
22.2.2.2 %TypedArray%.of ( ...items )
2987 var items = arguments;
2989 var len = items.length;
2990 var c = strict(this);
2991 var newObj = new c(len);
2994 newObj[k] = items[k];
3000 //
22.2.2.3 %TypedArray%.prototype
3001 //
22.2.2.4 get %TypedArray% [ @@species ]
3002 //
22.2.3 Properties of the %TypedArrayPrototype% Object
3003 //
22.2.3.1 get %TypedArray%.prototype.buffer
3004 //
22.2.3.2 get %TypedArray%.prototype.byteLength
3005 //
22.2.3.3 get %TypedArray%.prototype.byteOffset
3006 //
22.2.3.4 %TypedArray%.prototype.constructor
3008 //
22.2.3.5 %TypedArray%.prototype.copyWithin (target, start [, end ] )
3009 define($TypedArray$.prototype, 'copyWithin', Array.prototype.copyWithin);
3011 //
22.2.3.6 %TypedArray%.prototype.entries ( )
3012 define($TypedArray$.prototype, 'entries', Array.prototype.entries);
3014 //
22.2.3.7 %TypedArray%.prototype.every ( callbackfn [ , thisArg ] )
3015 define($TypedArray$.prototype, 'every', Array.prototype.every);
3017 //
22.2.3.8 %TypedArray%.prototype.fill (value [ , start [ , end ] ] )
3019 $TypedArray$.prototype, 'fill',
3020 //Array.prototype.fill // Doesn't work in Safari
7
3021 function fill(value/*, start, end*/) {
3022 var start = arguments[
1],
3025 var o = ToObject(this);
3026 var lenVal = o.length;
3027 var len = ToLength(lenVal);
3029 var relativeStart = ToInteger(start);
3031 if (relativeStart <
0) k = max((len + relativeStart),
0);
3032 else k = min(relativeStart, len);
3034 if (end === undefined) relativeEnd = len;
3035 else relativeEnd = ToInteger(end);
3037 if (relativeEnd <
0) final = max((len + relativeEnd),
0);
3038 else final = min(relativeEnd, len);
3047 //
22.2.3.9 %TypedArray%.prototype.filter ( callbackfn [ , thisArg ] )
3049 $TypedArray$.prototype, 'filter',
3050 function filter(callbackfn) {
3051 var thisArg = arguments[
1];
3053 var o = ToObject(this);
3054 var lenVal = o.length;
3055 var len = ToLength(lenVal);
3056 if (!IsCallable(callbackfn)) throw TypeError();
3058 var c = o.constructor;
3064 var selected = callbackfn.call(t, kValue, k, o);
3071 var a = new c(captured);
3073 for (var i =
0; i < kept.length; ++i) {
3081 //
22.2.3.10 %TypedArray%.prototype.find (predicate [ , thisArg ] )
3082 define($TypedArray$.prototype, 'find', Array.prototype.find);
3084 //
22.2.3.11 %TypedArray%.prototype.findIndex ( predicate [ , thisArg ] )
3085 define($TypedArray$.prototype, 'findIndex', Array.prototype.findIndex);
3087 //
22.2.3.12 %TypedArray%.prototype.forEach ( callbackfn [ , thisArg ] )
3088 define($TypedArray$.prototype, 'forEach', Array.prototype.forEach);
3090 //
22.2.3.13 %TypedArray%.prototype.indexOf (searchElement [ , fromIndex ] )
3091 define($TypedArray$.prototype, 'indexOf', Array.prototype.indexOf);
3093 //
22.2.3.14 %TypedArray%.prototype.join ( separator )
3094 define($TypedArray$.prototype, 'join', Array.prototype.join);
3096 //
22.2.3.15 %TypedArray%.prototype.keys ( )
3097 define($TypedArray$.prototype, 'keys', Array.prototype.keys);
3099 //
22.2.3.16 %TypedArray%.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
3100 define($TypedArray$.prototype, 'lastIndexOf', Array.prototype.lastIndexOf);
3102 //
22.2.3.17 get %TypedArray%.prototype.length
3104 //
22.2.3.18 %TypedArray%.prototype.map ( callbackfn [ , thisArg ] )
3106 $TypedArray$.prototype, 'map',
3107 function map(callbackfn) {
3108 var thisArg = arguments[
1];
3110 var o = ToObject(this);
3111 var lenValue = o.length;
3112 var len = ToLength(lenValue);
3113 if (!IsCallable(callbackfn)) throw TypeError();
3116 var c = o.constructor;
3117 if (IsConstructor(c))
3119 if (a === undefined)
3123 var kPresent = HasProperty(o, k);
3126 var mappedValue = callbackfn.call(t, kValue, k, o);
3134 //
22.2.3.19 %TypedArray%.prototype.reduce ( callbackfn [, initialValue] )
3135 define($TypedArray$.prototype, 'reduce', Array.prototype.reduce);
3137 //
22.2.3.20 %TypedArray%.prototype.reduceRight ( callbackfn [, initialValue] )
3138 define($TypedArray$.prototype, 'reduceRight', Array.prototype.reduceRight);
3140 //
22.2.3.21 %TypedArray%.prototype.reverse ( )
3141 define($TypedArray$.prototype, 'reverse', Array.prototype.reverse);
3143 //
22.2.3.22 %TypedArray%.prototype.set ( overloaded [ , offset ])
3144 //
22.2.3.22.1 %TypedArray%.prototype.set (array [ , offset ] )
3145 //
22.2.3.22.2 %TypedArray%.prototype.set(typedArray [, offset ] )
3147 //
22.2.3.23 %TypedArray%.prototype.slice ( start, end )
3149 $TypedArray$.prototype, 'slice',
3150 function slice(start, end) {
3151 var o = ToObject(this);
3152 var lenVal = o.length;
3153 var len = ToLength(lenVal);
3154 var relativeStart = ToInteger(start);
3155 var k = (relativeStart <
0) ? max(len + relativeStart,
0) : min(relativeStart, len);
3156 var relativeEnd = (end === undefined) ? len : ToInteger(end);
3157 var final = (relativeEnd <
0) ? max(len + relativeEnd,
0) : min(relativeEnd, len);
3158 var count = final - k;
3159 var c = o.constructor;
3160 if (IsConstructor(c)) {
3161 var a = new c(count);
3175 //
22.2.3.24 %TypedArray%.prototype.some ( callbackfn [ , thisArg ] )
3176 define($TypedArray$.prototype, 'some', Array.prototype.some);
3178 //
22.2.3.25 %TypedArray%.prototype.sort ( comparefn )
3180 $TypedArray$.prototype, 'sort',
3182 var comparefn = arguments[
0];
3184 function sortCompare(x, y) {
3185 console.assert(Type(x) === 'number' && Type(y) === 'number');
3186 if (x !== x && y !== y) return +
0;
3187 if (x !== x) return
1;
3188 if (y !== y) return -
1;
3189 if (comparefn !== undefined) {
3190 return comparefn(x, y);
3192 if (x < y) return -
1;
3193 if (x
> y) return
1;
3196 return Array.prototype.sort.call(this, sortCompare);
3199 //
22.2.3.26 %TypedArray%.prototype.subarray( [ begin [ , end ] ] )
3200 //
22.2.3.27 %TypedArray%.prototype.toLocaleString ([ reserved1 [ , reserved2 ] ])
3201 //
22.2.3.28 %TypedArray%.prototype.toString ( )
3203 //
22.2.3.29 %TypedArray%.prototype.values ( )
3204 define($TypedArray$.prototype, 'values', Array.prototype.values);
3206 //
22.2.3.30 %TypedArray%.prototype [ @@iterator ] ( )
3208 $TypedArray$.prototype, $$iterator,
3209 $TypedArray$.prototype.values
3212 //
22.2.3.31 get %TypedArray%.prototype [ @@toStringTag ]
3213 define($TypedArray$.prototype, $$toStringTag, $TypedArrayName$);
3215 //
22.2.4 The TypedArray Constructors
3216 //
22.2.4.1TypedArray( ... argumentsList)
3217 //
22.2.5 Properties of the TypedArray Constructors
3218 //
22.2.5.1 TypedArray.BYTES_PER_ELEMENT
3219 //
22.2.5.2 TypedArray.prototype
3220 //
22.2.6 Properties of TypedArray Prototype Objects
3221 //
22.2.6.1 TypedArray.prototype.BYTES_PER_ELEMENT
3222 //
22.2.6.2 TypedArray.prototype.constructor
3223 //
22.2.7 Properties of TypedArray Instances
3226 // ---------------------------------------
3227 //
23 Keyed Collection
3228 // ---------------------------------------
3230 // ---------------------------------------
3232 // ---------------------------------------
3235 //
23.1.1 The Map Constructor
3237 //
23.1.1.1 Map ( [ iterable ] )
3239 function Map(/*iterable*/) {
3240 var map = strict(this);
3241 var iterable = arguments[
0];
3243 if (Type(map) !== 'object') throw TypeError();
3244 if ('[[MapData]]' in map) throw TypeError();
3246 if (iterable !== undefined) {
3247 var adder = map['set'];
3248 if (!IsCallable(adder)) throw TypeError();
3249 var iter = GetIterator(ToObject(iterable));
3251 set_internal(map, '[[MapData]]', { keys: [], values: [] });
3252 if (iter === undefined) return map;
3254 var next = IteratorStep(iter);
3257 var nextItem = IteratorValue(next);
3258 if (Type(nextItem) !== 'object') throw TypeError();
3259 var k = nextItem[
0];
3260 var v = nextItem[
1];
3261 adder.call(map, k, v);
3267 if (!('Map' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3268 (function() { try { new global.Map([]); return false; } catch (_) { return true; } }()) ||
3269 (function() { try { return !new global.Map().entries().next; } catch (_) { return true; } }()) ||
3270 (new global.Map([['a',
1]]).size !==
1))
3274 function MapDataIndexOf(mapData, key) {
3276 if (key === key) return mapData.keys.indexOf(key);
3277 // Slow case for NaN
3278 for (i =
0; i < mapData.keys.length; i +=
1)
3279 if (SameValueZero(mapData.keys[i], key)) return i;
3283 //
23.1.1.2 new Map ( ... argumentsList )
3284 //
23.1.2 Properties of the Map Constructor
3285 //
23.1.2.1 Map.prototype
3286 var $MapPrototype$ = {};
3287 Map.prototype = $MapPrototype$;
3289 //
23.1.2.2 get Map [ @@species ]
3291 //
23.1.3 Properties of the Map Prototype Object
3292 //
23.1.3.1 Map.prototype.clear ()
3294 Map.prototype, 'clear',
3296 var m = strict(this);
3297 if (Type(m) !== 'object') throw TypeError();
3298 if (!('[[MapData]]' in m)) throw TypeError();
3299 if (m['[[MapData]]'] === undefined) throw TypeError();
3300 var entries = m['[[MapData]]'];
3301 entries.keys.length =
0;
3302 entries.values.length =
0;
3306 //
23.1.3.2 Map.prototype.constructor
3308 //
23.1.3.3 Map.prototype.delete ( key )
3310 Map.prototype, 'delete',
3311 function delete_(key) {
3312 var m = strict(this);
3313 if (Type(m) !== 'object') throw TypeError();
3314 if (!('[[MapData]]' in m)) throw TypeError();
3315 if (m['[[MapData]]'] === undefined) throw TypeError();
3316 var entries = m['[[MapData]]'];
3317 var i = MapDataIndexOf(entries, key);
3318 if (i <
0) return false;
3319 entries.keys[i] = empty;
3320 entries.values[i] = empty;
3324 //
23.1.3.4 Map.prototype.entries ( )
3326 Map.prototype, 'entries',
3327 function entries() {
3328 var m = strict(this);
3329 if (Type(m) !== 'object') throw TypeError();
3330 return CreateMapIterator(m, 'key+value');
3333 //
23.1.3.5 Map.prototype.forEach ( callbackfn [ , thisArg ] )
3335 Map.prototype, 'forEach',
3336 function forEach(callbackfn /*, thisArg*/) {
3337 var thisArg = arguments[
1];
3339 var m = strict(this);
3340 if (Type(m) !== 'object') throw TypeError();
3341 if (!('[[MapData]]' in m)) throw TypeError();
3342 if (m['[[MapData]]'] === undefined) throw TypeError();
3343 var entries = m['[[MapData]]'];
3345 if (!IsCallable(callbackfn)) {
3346 throw TypeError('First argument to forEach is not callable.');
3348 for (var i =
0; i < entries.keys.length; ++i) {
3349 if (entries.keys[i] !== empty) {
3350 callbackfn.call(thisArg, entries.values[i], entries.keys[i], m);
3356 //
23.1.3.6 Map.prototype.get ( key )
3358 Map.prototype, 'get',
3360 var m = strict(this);
3361 if (Type(m) !== 'object') throw TypeError();
3362 if (!('[[MapData]]' in m)) throw TypeError();
3363 if (m['[[MapData]]'] === undefined) throw TypeError();
3364 var entries = m['[[MapData]]'];
3365 var i = MapDataIndexOf(entries, key);
3366 if (i
>=
0) return entries.values[i];
3370 //
23.1.3.7 Map.prototype.has ( key )
3372 Map.prototype, 'has',
3374 var m = strict(this);
3375 if (Type(m) !== 'object') throw TypeError();
3376 if (!('[[MapData]]' in m)) throw TypeError();
3377 if (m['[[MapData]]'] === undefined) throw TypeError();
3378 var entries = m['[[MapData]]'];
3379 if (MapDataIndexOf(entries, key)
>=
0) return true;
3383 //
23.1.3.8 Map.prototype.keys ( )
3385 Map.prototype, 'keys',
3387 var m = strict(this);
3388 if (Type(m) !== 'object') throw TypeError();
3389 return CreateMapIterator(m, 'key');
3392 //
23.1.3.9 Map.prototype.set ( key , value )
3394 Map.prototype, 'set',
3395 function set(key, value) {
3396 var m = strict(this);
3397 if (Type(m) !== 'object') throw TypeError();
3398 if (!('[[MapData]]' in m)) throw TypeError();
3399 if (m['[[MapData]]'] === undefined) throw TypeError();
3400 var entries = m['[[MapData]]'];
3401 var i = MapDataIndexOf(entries, key);
3402 if (i <
0) i = entries.keys.length;
3403 if (SameValue(key, -
0)) key =
0;
3404 entries.keys[i] = key;
3405 entries.values[i] = value;
3409 //
23.1.3.10 get Map.prototype.size
3410 Object.defineProperty(
3411 Map.prototype, 'size', {
3413 var m = strict(this);
3414 if (Type(m) !== 'object') throw TypeError();
3415 if (!('[[MapData]]' in m)) throw TypeError();
3416 if (m['[[MapData]]'] === undefined) throw TypeError();
3417 var entries = m['[[MapData]]'];
3419 for (var i =
0; i < entries.keys.length; ++i) {
3420 if (entries.keys[i] !== empty)
3427 //
23.1.3.11 Map.prototype.values ( )
3429 Map.prototype, 'values',
3431 var m = strict(this);
3432 if (Type(m) !== 'object') throw TypeError();
3433 return CreateMapIterator(m, 'value');
3436 //
23.1.3.12 Map.prototype [ @@iterator ]( )
3438 Map.prototype, $$iterator,
3440 var m = strict(this);
3441 if (Type(m) !== 'object') throw TypeError();
3442 return CreateMapIterator(m, 'key+value');
3445 //
23.1.3.13 Map.prototype [ @@toStringTag ]
3446 define(global.Map.prototype, $$toStringTag, 'Map');
3448 //
23.1.4 Properties of Map Instances
3449 //
23.1.5 Map Iterator Objects
3452 function MapIterator() {}
3454 //
23.1.5.1 CreateMapIterator Abstract Operation
3455 function CreateMapIterator(map, kind) {
3456 if (Type(map) !== 'object') throw TypeError();
3457 if (!('[[MapData]]' in map)) throw TypeError();
3458 if (map['[[MapData]]'] === undefined) throw TypeError();
3459 var iterator = new MapIterator;
3460 set_internal(iterator, '[[Map]]', map);
3461 set_internal(iterator, '[[MapNextIndex]]',
0);
3462 set_internal(iterator, '[[MapIterationKind]]', kind);
3466 //
23.1.5.2 The %MapIteratorPrototype% Object
3467 var $MapIteratorPrototype$ = Object.create($IteratorPrototype$);
3468 MapIterator.prototype = $MapIteratorPrototype$;
3470 //
23.1.5.2.1 %MapIteratorPrototype%.next ( )
3472 $MapIteratorPrototype$, 'next',
3474 var o = strict(this);
3475 if (Type(o) !== 'object') throw TypeError();
3476 var m = o['[[Map]]'],
3477 index = o['[[MapNextIndex]]'],
3478 itemKind = o['[[MapIterationKind]]'],
3479 entries = m['[[MapData]]'];
3480 while (index < entries.keys.length) {
3481 var e = {key: entries.keys[index], value: entries.values[index]};
3483 set_internal(o, '[[MapNextIndex]]', index);
3484 if (e.key !== empty) {
3485 if (itemKind === 'key') {
3486 return CreateIterResultObject(e.key, false);
3487 } else if (itemKind === 'value') {
3488 return CreateIterResultObject(e.value, false);
3490 return CreateIterResultObject([e.key, e.value], false);
3494 return CreateIterResultObject(undefined, true);
3497 //
23.1.5.2.2 %MapIteratorPrototype% [ @@toStringTag ]
3498 define($MapIteratorPrototype$, $$toStringTag, 'Map Iterator');
3500 //
23.1.5.3 Properties of Map Iterator Instances
3503 // ---------------------------------------
3505 // ---------------------------------------
3508 //
23.2.1 The Set Constructor
3509 //
23.2.1.1 Set ( [ iterable ] )
3512 function Set(/*iterable*/) {
3513 var set = strict(this);
3514 var iterable = arguments[
0];
3516 if (Type(set) !== 'object') throw TypeError();
3517 if ('[[SetData]]' in set) throw TypeError();
3519 if (iterable !== undefined) {
3520 var adder = set['add'];
3521 if (!IsCallable(adder)) throw TypeError();
3522 var iter = GetIterator(ToObject(iterable));
3524 set_internal(set, '[[SetData]]', []);
3525 if (iter === undefined) return set;
3527 var next = IteratorStep(iter);
3530 var nextValue = IteratorValue(next);
3531 adder.call(set, nextValue);
3537 if (!('Set' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3538 (function() { try { return !new global.Set().entries().next; } catch (_) { return true; } }()) ||
3539 (new global.Set([
1]).size !==
1))
3542 function SetDataIndexOf(setData, key) {
3545 return setData.indexOf(key);
3546 // Slow case for NaN
3547 for (i =
0; i < setData.length; i +=
1)
3548 if (SameValueZero(setData[i], key)) return i;
3552 //
23.2.1.2 new Set ( ...argumentsList )
3553 //
23.2.2 Properties of the Set Constructor
3555 //
23.2.2.1 Set.prototype
3556 var $SetPrototype$ = {};
3557 Set.prototype = $SetPrototype$;
3559 //
23.2.2.2 get Set [ @@species ]
3560 //
23.2.3 Properties of the Set Prototype Object
3562 //
23.2.3.1 Set.prototype.add (value )
3564 Set.prototype, 'add',
3565 function add(value) {
3566 var s = strict(this);
3567 if (Type(s) !== 'object') throw TypeError();
3568 if (!('[[SetData]]' in s)) throw TypeError();
3569 if (s['[[SetData]]'] === undefined) throw TypeError();
3570 if (SameValue(value, -
0)) value =
0;
3571 var entries = s['[[SetData]]'];
3572 var i = SetDataIndexOf(entries, value);
3573 if (i <
0) i = s['[[SetData]]'].length;
3574 s['[[SetData]]'][i] = value;
3579 //
23.2.3.2 Set.prototype.clear ()
3581 Set.prototype, 'clear',
3583 var s = strict(this);
3584 if (Type(s) !== 'object') throw TypeError();
3585 if (!('[[SetData]]' in s)) throw TypeError();
3586 if (s['[[SetData]]'] === undefined) throw TypeError();
3587 var entries = s['[[SetData]]'];
3592 //
23.2.3.3 Set.prototype.constructor
3593 //
23.2.3.4 Set.prototype.delete ( value )
3595 Set.prototype, 'delete',
3596 function delete_(value) {
3597 var s = strict(this);
3598 if (Type(s) !== 'object') throw TypeError();
3599 if (!('[[SetData]]' in s)) throw TypeError();
3600 if (s['[[SetData]]'] === undefined) throw TypeError();
3601 var entries = s['[[SetData]]'];
3602 var i = SetDataIndexOf(entries, value);
3603 if (i <
0) return false;
3608 //
23.2.3.5 Set.prototype.entries ( )
3610 Set.prototype, 'entries',
3611 function entries() {
3612 var s = strict(this);
3613 if (Type(s) !== 'object') throw TypeError();
3614 return CreateSetIterator(s, 'key+value');
3617 //
23.2.3.6 Set.prototype.forEach ( callbackfn [ , thisArg ] )
3619 Set.prototype, 'forEach',
3620 function forEach(callbackfn/*, thisArg*/) {
3621 var thisArg = arguments[
1];
3623 var s = strict(this);
3624 if (Type(s) !== 'object') throw TypeError();
3625 if (!('[[SetData]]' in s)) throw TypeError();
3626 if (s['[[SetData]]'] === undefined) throw TypeError();
3627 var entries = s['[[SetData]]'];
3629 if (!IsCallable(callbackfn)) {
3630 throw TypeError('First argument to forEach is not callable.');
3632 for (var i =
0; i < entries.length; ++i) {
3633 if (entries[i] !== empty) {
3634 callbackfn.call(thisArg, entries[i], entries[i], s);
3639 //
23.2.3.7 Set.prototype.has ( value )
3641 Set.prototype, 'has',
3643 var s = strict(this);
3644 if (Type(s) !== 'object') throw TypeError();
3645 if (!('[[SetData]]' in s)) throw TypeError();
3646 if (s['[[SetData]]'] === undefined) throw TypeError();
3647 var entries = s['[[SetData]]'];
3648 return SetDataIndexOf(entries, key) !== -
1;
3651 //
23.2.3.8 Set.prototype.keys ( )
3652 // See Set.prototype.values
3654 //
23.2.3.9 get Set.prototype.size
3655 Object.defineProperty(
3656 Set.prototype, 'size', {
3658 var s = strict(this);
3659 if (Type(s) !== 'object') throw TypeError();
3660 if (!('[[SetData]]' in s)) throw TypeError();
3661 if (s['[[SetData]]'] === undefined) throw TypeError();
3662 var entries = s['[[SetData]]'];
3664 for (var i =
0; i < entries.length; ++i) {
3665 if (entries[i] !== empty)
3672 //
23.2.3.10 Set.prototype.values ( )
3674 Set.prototype, 'values',
3676 var s = strict(this);
3677 if (Type(s) !== 'object') throw TypeError();
3678 return CreateSetIterator(s, 'value');
3680 // NOTE: function name is still 'values':
3681 Set.prototype.keys = Set.prototype.values;
3683 //
23.2.3.11 Set.prototype [@@iterator ] ( )
3685 Set.prototype, $$iterator,
3687 var s = strict(this);
3688 if (Type(s) !== 'object') throw TypeError();
3689 return CreateSetIterator(s);
3692 //
23.2.3.12 Set.prototype [ @@toStringTag ]
3693 define(global.Set.prototype, $$toStringTag, 'Set');
3695 //
23.2.4 Properties of Set Instances
3696 //
23.2.5 Set Iterator Objects
3698 function SetIterator() {}
3700 //
23.2.5.1 CreateSetIterator Abstract Operation
3701 function CreateSetIterator(set, kind) {
3702 if (Type(set) !== 'object') throw TypeError();
3703 if (!('[[SetData]]' in set)) throw TypeError();
3704 if (set['[[SetData]]'] === undefined) throw TypeError();
3705 var iterator = new SetIterator;
3706 set_internal(iterator, '[[IteratedSet]]', set);
3707 set_internal(iterator, '[[SetNextIndex]]',
0);
3708 set_internal(iterator, '[[SetIterationKind]]', kind);
3712 //
23.2.5.2 The %SetIteratorPrototype% Object
3713 var $SetIteratorPrototype$ = Object.create($IteratorPrototype$);
3714 SetIterator.prototype = $SetIteratorPrototype$;
3716 //
23.2.5.2.1 %SetIteratorPrototype%.next( )
3718 $SetIteratorPrototype$, 'next',
3720 var o = strict(this);
3721 if (Type(o) !== 'object') throw TypeError();
3722 var s = o['[[IteratedSet]]'],
3723 index = o['[[SetNextIndex]]'],
3724 itemKind = o['[[SetIterationKind]]'],
3725 entries = s['[[SetData]]'];
3726 while (index < entries.length) {
3727 var e = entries[index];
3729 set_internal(o, '[[SetNextIndex]]', index);
3731 if (itemKind === 'key+value')
3732 return CreateIterResultObject([e, e], false);
3733 return CreateIterResultObject(e, false);
3736 return CreateIterResultObject(undefined, true);
3739 //
23.2.5.2.2 %SetIteratorPrototype% [ @@toStringTag ]
3740 define($SetIteratorPrototype$, $$toStringTag, 'Set Iterator');
3742 //
23.2.5.3 Properties of Set Iterator Instances
3746 // ---------------------------------------
3747 //
23.3 WeakMap Objects
3748 // ---------------------------------------
3751 //
23.3.1 The WeakMap Constructor
3752 //
23.3.1.1 WeakMap ( [ iterable ] )
3754 function WeakMap(/*iterable*/) {
3755 var map = strict(this);
3756 var iterable = arguments[
0];
3758 if (Type(map) !== 'object') throw TypeError();
3759 if ('[[WeakMapData]]' in map) throw TypeError();
3761 if (iterable !== undefined) {
3762 var adder = map['set'];
3763 if (!IsCallable(adder)) throw TypeError();
3764 var iter = GetIterator(ToObject(iterable));
3766 set_internal(map, '[[WeakMapData]]', new EphemeronTable);
3767 if (iter === undefined) return map;
3769 var next = IteratorStep(iter);
3772 var nextValue = IteratorValue(next);
3773 if (Type(nextValue) !== 'object') throw TypeError();
3774 var k = nextValue[
0];
3775 var v = nextValue[
1];
3776 adder.call(map, k, v);
3782 if (!('WeakMap' in global) || OVERRIDE_NATIVE_FOR_TESTING)
3783 global.WeakMap = WeakMap;
3785 //
23.3.2 Properties of the WeakMap Constructor
3786 //
23.3.2.1 WeakMap.prototype
3787 var $WeakMapPrototype$ = {};
3788 WeakMap.prototype = $WeakMapPrototype$;
3792 //
23.3.2.2 WeakMap[ @@create ] ( )
3793 //
23.3.3 Properties of the WeakMap Prototype Object
3795 //
23.3.3.1 WeakMap.prototype.constructor
3797 //
23.3.3.2 WeakMap.prototype.delete ( key )
3799 WeakMap.prototype, 'delete',
3800 function delete_(key) {
3801 var M = strict(this);
3802 if (Type(M) !== 'object') throw TypeError();
3803 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3804 if (Type(key) !== 'object') throw TypeError('Expected object');
3805 return M['[[WeakMapData]]'].remove(key);
3808 //
23.3.3.3 WeakMap.prototype.get ( key )
3810 WeakMap.prototype, 'get',
3811 function get(key, defaultValue) {
3812 var M = strict(this);
3813 if (Type(M) !== 'object') throw TypeError();
3814 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3815 if (Type(key) !== 'object') throw TypeError('Expected object');
3816 return M['[[WeakMapData]]'].get(key, defaultValue);
3819 //
23.3.3.4 WeakMap.prototype.has ( key )
3821 WeakMap.prototype, 'has',
3823 var M = strict(this);
3824 if (Type(M) !== 'object') throw TypeError();
3825 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3826 if (Type(key) !== 'object') throw TypeError('Expected object');
3827 return M['[[WeakMapData]]'].has(key);
3830 //
23.3.3.5 WeakMap.prototype.set ( key , value )
3832 WeakMap.prototype, 'set',
3833 function set(key, value) {
3834 var M = strict(this);
3835 if (Type(M) !== 'object') throw TypeError();
3836 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3837 if (Type(key) !== 'object') throw TypeError('Expected object');
3838 M['[[WeakMapData]]'].set(key, value);
3842 //
23.3.3.6 WeakMap.prototype [ @@toStringTag ]
3843 define(global.WeakMap.prototype, $$toStringTag, 'WeakMap');
3845 //
23.3.4 Properties of WeakMap Instances
3847 // Polyfills for incomplete native implementations:
3849 var wm = new global.WeakMap();
3850 var orig = global.WeakMap.prototype.set;
3851 define(global.WeakMap.prototype, 'set', function set() {
3852 orig.apply(this, arguments);
3854 }, wm.set({},
0) !== wm);
3858 // ---------------------------------------
3859 //
23.4 WeakSet Objects
3860 // ---------------------------------------
3863 //
23.4.1 The WeakSet Constructor
3864 //
23.4.1.1 WeakSet ( [ iterable ] )
3866 function WeakSet(/*iterable*/) {
3867 var set = strict(this);
3868 var iterable = arguments[
0];
3870 if (Type(set) !== 'object') throw TypeError();
3871 if ('[[WeakSetData]]' in set) throw TypeError();
3873 if (iterable !== undefined) {
3874 var adder = set['add'];
3875 if (!IsCallable(adder)) throw TypeError();
3876 var iter = GetIterator(ToObject(iterable));
3878 set_internal(set, '[[WeakSetData]]', new EphemeronTable);
3879 if (iter === undefined) return set;
3881 var next = IteratorStep(iter);
3884 var nextValue = IteratorValue(next);
3885 adder.call(set, nextValue);
3891 if (!('WeakSet' in global) || OVERRIDE_NATIVE_FOR_TESTING)
3892 global.WeakSet = WeakSet;
3894 //
23.4.2 Properties of the WeakSet Constructor
3895 //
23.4.2.1 WeakSet.prototype
3896 var $WeakSetPrototype$ = {};
3897 WeakSet.prototype = $WeakSetPrototype$;
3899 //
23.4.3 Properties of the WeakSet Prototype Object
3900 //
23.4.3.1 WeakSet.prototype.add (value )
3902 WeakSet.prototype, 'add',
3903 function add(value) {
3904 var S = strict(this);
3905 if (Type(S) !== 'object') throw TypeError();
3906 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3907 if (Type(value) !== 'object') throw TypeError('Expected object');
3908 S['[[WeakSetData]]'].set(value, true);
3912 //
23.4.3.2 WeakSet.prototype.constructor
3913 //
23.4.3.3 WeakSet.prototype.delete ( value )
3915 WeakSet.prototype, 'delete',
3916 function delete_(value) {
3917 var S = strict(this);
3918 if (Type(S) !== 'object') throw TypeError();
3919 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3920 if (Type(value) !== 'object') throw TypeError('Expected object');
3921 return S['[[WeakSetData]]'].remove(value);
3924 //
23.4.3.4 WeakSet.prototype.has ( value )
3926 WeakSet.prototype, 'has',
3928 var S = strict(this);
3929 if (Type(S) !== 'object') throw TypeError();
3930 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3931 if (Type(key) !== 'object') throw TypeError('Expected object');
3932 return S['[[WeakSetData]]'].has(key);
3935 //
23.4.3.5 WeakSet.prototype [ @@toStringTag ]
3936 define(global.WeakSet.prototype, $$toStringTag, 'WeakSet');
3938 //
23.4.4 Properties of WeakSet Instances
3940 // Polyfills for incomplete native implementations:
3942 var ws = new global.WeakSet();
3943 var orig = global.WeakSet.prototype.add;
3944 define(global.WeakSet.prototype, 'add', function add() {
3945 orig.apply(this, arguments);
3947 }, ws.add({}) !== ws);
3951 // ---------------------------------------
3952 //
24 Structured Data
3953 // ---------------------------------------
3955 // ---------------------------------------
3956 //
24.1 ArrayBuffer Objects
3957 // ---------------------------------------
3959 // See typedarray.js for TypedArray polyfill
3962 if (!('ArrayBuffer' in global))
3965 //
24.1.1 Abstract Operations For ArrayBuffer Objects
3966 //
24.1.1.1 AllocateArrayBuffer( constructor, byteLength )
3967 //
24.1.1.2 IsDetachedBuffer( arrayBuffer )
3968 //
24.1.1.3 DetachArrayBuffer( arrayBuffer )
3969 //
24.1.1.4 CloneArrayBuffer( srcBuffer, srcByteOffset [, cloneConstructor] )
3970 //
24.1.1.5 GetValueFromBuffer ( arrayBuffer, byteIndex, type, isLittleEndian )
3971 //
24.1.1.6 SetValueInBuffer ( arrayBuffer, byteIndex, type, value, isLittleEndian )
3972 //
24.1.2 The ArrayBuffer Constructor
3973 //
24.1.2.1 ArrayBuffer( length )
3974 //
24.1.3 Properties of the ArrayBuffer Constructor
3976 //
24.1.3.1 ArrayBuffer.isView ( arg )
3978 ArrayBuffer, 'isView',
3979 function isView(arg) {
3980 if (Type(arg) !== 'object') return false;
3981 if ('buffer' in arg && arg.buffer instanceof ArrayBuffer) return true;
3985 //
24.1.3.2 ArrayBuffer.prototype
3986 //
24.1.3.3 get ArrayBuffer [ @@species ]
3987 //
24.1.4 Properties of the ArrayBuffer Prototype Object
3988 //
24.1.4.1 get ArrayBuffer.prototype.byteLength
3989 //
24.1.4.2 ArrayBuffer.prototype.constructor
3990 //
24.1.4.3 ArrayBuffer.prototype.slice ( start , end)
3992 //
24.1.4.4 ArrayBuffer.prototype [ @@toStringTag ]
3993 define(ArrayBuffer.prototype, $$toStringTag, 'ArrayBuffer');
3995 //
24.1.5 Properties of the ArrayBuffer Instances
3998 // ---------------------------------------
3999 //
24.2 DataView Objects
4000 // ---------------------------------------
4002 // See typedarray.js for TypedArray polyfill
4005 if (!('DataView' in global))
4008 //
24.2.1 Abstract Operations For DataView Objects
4009 //
24.2.1.1 GetViewValue(view, requestIndex, isLittleEndian, type)
4010 //
24.2.1.2 SetViewValue(view, requestIndex, isLittleEndian, type, value)
4011 //
24.2.2 The DataView Constructor
4012 //
24.2.2.1 DataView (buffer [ , byteOffset [ , byteLength ] ] )
4013 //
24.2.3 Properties of the DataView Constructor
4014 //
24.2.3.1 DataView.prototype
4015 //
24.2.4 Properties of the DataView Prototype Object
4016 //
24.2.4.1 get DataView.prototype.buffer
4017 //
24.2.4.2 get DataView.prototype.byteLength
4018 //
24.2.4.3 get DataView.prototype.byteOffset
4019 //
24.2.4.4 DataView.prototype.constructor
4020 //
24.2.4.5 DataView.prototype.getFloat32 ( byteOffset [ , littleEndian ] )
4021 //
24.2.4.6 DataView.prototype.getFloat64 ( byteOffset [ , littleEndian ] )
4022 //
24.2.4.7 DataView.prototype.getInt8 ( byteOffset )
4023 //
24.2.4.8 DataView.prototype.getInt16 ( byteOffset [ , littleEndian ] )
4024 //
24.2.4.9 DataView.prototype.getInt32 ( byteOffset [ , littleEndian ] )
4025 //
24.2.4.10 DataView.prototype.getUint8 ( byteOffset )
4026 //
24.2.4.11 DataView.prototype.getUint16 ( byteOffset [ , littleEndian ] )
4027 //
24.2.4.12 DataView.prototype.getUint32 ( byteOffset [ , littleEndian ] )
4028 //
24.2.4.13 DataView.prototype.setFloat32 ( byteOffset, value [ , littleEndian ] )
4029 //
24.2.4.14 DataView.prototype.setFloat64 ( byteOffset, value [ , littleEndian ] )
4030 //
24.2.4.15 DataView.prototype.setInt8 ( byteOffset, value )
4031 //
24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
4032 //
24.2.4.17 DataView.prototype.setInt32 ( byteOffset, value [ , littleEndian ] )
4033 //
24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
4034 //
24.2.4.19 DataView.prototype.setUint16 ( byteOffset, value [ , littleEndian ] )
4035 //
24.2.4.20 DataView.prototype.setUint32 ( byteOffset, value [ , littleEndian ] )
4037 //
24.2.4.21 DataView.prototype[ @@toStringTag ]
4038 define(DataView.prototype, $$toStringTag, 'DataView');
4040 //
24.2.5 Properties of DataView Instances
4043 // ---------------------------------------
4044 //
24.3 The JSON Object
4045 // ---------------------------------------
4047 //
24.3.1 JSON.parse ( text [ , reviver ] )
4048 //
24.3.2 JSON.stringify ( value [ , replacer [ , space ] ] )
4049 //
24.3.3 JSON [ @@toStringTag ]
4050 define(JSON, $$toStringTag, 'JSON');
4052 // ---------------------------------------
4054 // ---------------------------------------
4056 //
25.1.1 Common Iteration Interfaces
4057 //
25.1.1.1 The Iterable Interface
4058 //
25.1.1.2 The Iterator Interface
4059 //
25.1.1.3 The IteratorResult Interface
4061 //
25.1.2 The %IteratorPrototype% Object
4062 // Defined earlier, so other prototypes can reference it.
4063 //
25.1.2.1 %IteratorPrototype% [ @@iterator ] ( )
4064 define($IteratorPrototype$, $$iterator, function() {
4069 // ---------------------------------------
4070 //
25.4 Promise Objects
4071 // ---------------------------------------
4074 //
25.4 Promise Objects
4076 //
25.4.1 Promise Abstract Operations
4078 //
25.4.1.1 PromiseCapability Records
4079 //
25.4.1.1.1 IfAbruptRejectPromise ( value, capability )
4081 function IfAbruptRejectPromise(value, capability) {
4082 var rejectResult = capability['[[Reject]]'].call(undefined, value);
4083 return capability['[[Promise]]'];
4086 //
25.4.1.2 PromiseReaction Records
4088 //
25.4.1.3 CreateResolvingFunctions ( promise )
4090 function CreateResolvingFunctions(promise) {
4091 var alreadyResolved = {'[[value]]': false};
4092 var resolve = PromiseResolveFunction();
4093 set_internal(resolve, '[[Promise]]', promise);
4094 set_internal(resolve, '[[AlreadyResolved]]', alreadyResolved);
4095 var reject = PromiseRejectFunction();
4096 set_internal(reject, '[[Promise]]', promise);
4097 set_internal(reject, '[[AlreadyResolved]]', alreadyResolved);
4098 return { '[[Resolve]]': resolve, '[[Reject]]': reject};
4101 //
25.4.1.3.1 Promise Reject Functions
4103 function PromiseRejectFunction() {
4104 var F = function(reason) {
4105 console.assert(Type(F['[[Promise]]']) === 'object');
4106 var promise = F['[[Promise]]'];
4107 var alreadyResolved = F['[[AlreadyResolved]]'];
4108 if (alreadyResolved['[[value]]']) return undefined;
4109 set_internal(alreadyResolved, '[[value]]', true);
4110 return RejectPromise(promise, reason);
4115 //
25.4.1.3.2 Promise Resolve Functions
4117 function PromiseResolveFunction() {
4118 var F = function(resolution) {
4119 console.assert(Type(F['[[Promise]]']) === 'object');
4120 var promise = F['[[Promise]]'];
4121 var alreadyResolved = F['[[AlreadyResolved]]'];
4122 if (alreadyResolved['[[value]]']) return undefined;
4123 set_internal(alreadyResolved, '[[value]]', true);
4125 if (SameValue(resolution, promise)) {
4126 var selfResolutionError = TypeError();
4127 return RejectPromise(promise, selfResolutionError);
4129 if (Type(resolution) !== 'object')
4130 return FulfillPromise(promise, resolution);
4132 var then = resolution['then'];
4134 return RejectPromise(promise, then);
4136 if (!IsCallable(then))
4137 return FulfillPromise(promise, resolution);
4138 EnqueueJob('PromiseJobs', PromiseResolveThenableJob, [promise, resolution, then]);
4144 //
25.4.1.4 FulfillPromise ( promise, value )
4146 function FulfillPromise(promise, value) {
4147 console.assert(promise['[[PromiseState]]'] === 'pending');
4148 var reactions = promise['[[PromiseFulfillReactions]]'];
4149 set_internal(promise, '[[PromiseResult]]', value);
4150 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
4151 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
4152 set_internal(promise, '[[PromiseState]]', 'fulfilled');
4153 return TriggerPromiseReactions(reactions, value);
4156 //
25.4.1.5 NewPromiseCapability ( C )
4158 function NewPromiseCapability(c) {
4159 // To keep Promise hermetic, this doesn't look much like the spec.
4160 return CreatePromiseCapabilityRecord(undefined, c);
4163 //
25.4.1.5.1 CreatePromiseCapabilityRecord ( promise, constructor )
4165 function CreatePromiseCapabilityRecord(promise, constructor) {
4166 // To keep Promise hermetic, this doesn't look much like the spec.
4167 console.assert(IsConstructor(constructor));
4168 var promiseCapability = {};
4169 set_internal(promiseCapability, '[[Promise]]', promise);
4170 set_internal(promiseCapability, '[[Resolve]]', undefined);
4171 set_internal(promiseCapability, '[[Reject]]', undefined);
4172 var executor = GetCapabilitiesExecutor();
4173 set_internal(executor, '[[Capability]]', promiseCapability);
4175 // NOTE: Differs from spec; object is constructed here
4176 var constructorResult = promise = new constructor(executor);
4177 set_internal(promiseCapability, '[[Promise]]', promise);
4179 if (!IsCallable(promiseCapability['[[Resolve]]'])) throw TypeError();
4180 if (!IsCallable(promiseCapability['[[Reject]]'])) throw TypeError();
4181 if (Type(constructorResult) === 'object' && !SameValue(promise, constructorResult)) throw TypeError();
4182 return promiseCapability;
4185 //
25.4.1.5.2 GetCapabilitiesExecutor Functions
4187 function GetCapabilitiesExecutor() {
4188 var F = function(resolve, reject) {
4189 console.assert(F['[[Capability]]']);
4190 var promiseCapability = F['[[Capability]]'];
4191 if (promiseCapability['[[Resolve]]'] !== undefined) throw TypeError();
4192 if (promiseCapability['[[Reject]]'] !== undefined) throw TypeError();
4193 set_internal(promiseCapability, '[[Resolve]]', resolve);
4194 set_internal(promiseCapability, '[[Reject]]', reject);
4200 //
25.4.1.6 IsPromise ( x )
4202 function IsPromise(x) {
4203 if (Type(x) !== 'object') return false;
4204 if (!('[[PromiseState]]' in x)) return false;
4205 if (x['[[PromiseState]]'] === undefined) return false;
4209 //
25.4.1.7 RejectPromise ( promise, reason )
4211 function RejectPromise(promise, reason) {
4212 console.assert(promise['[[PromiseState]]'] === 'pending');
4213 var reactions = promise['[[PromiseRejectReactions]]'];
4214 set_internal(promise, '[[PromiseResult]]', reason);
4215 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
4216 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
4217 set_internal(promise, '[[PromiseState]]', 'rejected');
4218 return TriggerPromiseReactions(reactions, reason);
4221 //
25.4.1.8 TriggerPromiseReactions ( reactions, argument )
4223 function TriggerPromiseReactions(reactions, argument) {
4224 for (var i =
0, len = reactions.length; i < len; ++i)
4225 EnqueueJob('PromiseJobs', PromiseReactionJob, [reactions[i], argument]);
4229 //
25.4.2 Promise Jobs
4231 //
25.4.2.1 PromiseReactionJob ( reaction, argument )
4233 function PromiseReactionJob(reaction, argument) {
4234 var promiseCapability = reaction['[[Capabilities]]'];
4235 var handler = reaction['[[Handler]]'];
4236 var handlerResult, status;
4238 if (handler === 'Identity') handlerResult = argument;
4239 else if (handler === 'Thrower') throw argument;
4240 else handlerResult = handler.call(undefined, argument);
4241 } catch (handlerResult) {
4242 status = promiseCapability['[[Reject]]'].call(undefined, handlerResult);
4243 NextJob(status); return;
4245 status = promiseCapability['[[Resolve]]'].call(undefined, handlerResult);
4249 //
25.4.2.2 PromiseResolveThenableJob ( promiseToResolve, thenable, then)
4251 function PromiseResolveThenableJob(promiseToResolve, thenable, then) {
4252 // SPEC BUG: promise vs. promiseToResolve
4253 var resolvingFunctions = CreateResolvingFunctions(promiseToResolve);
4255 var thenCallResult = then.call(thenable, resolvingFunctions['[[Resolve]]'],
4256 resolvingFunctions['[[Reject]]']);
4257 } catch (thenCallResult) {
4258 var status = resolvingFunctions['[[Reject]]'].call(undefined, thenCallResult);
4259 NextJob(status); return;
4261 NextJob(thenCallResult);
4264 //
25.4.3 The Promise Constructor
4266 //
25.4.3.1 Promise ( executor )
4268 function Promise(executor) {
4269 var config = { configurable: false, enumerable: false, writable: true, value: undefined };
4270 Object.defineProperty(this, '[[PromiseState]]', config);
4271 Object.defineProperty(this, '[[PromiseConstructor]]', config);
4272 Object.defineProperty(this, '[[PromiseResult]]', config);
4273 Object.defineProperty(this, '[[PromiseFulfillReactions]]', config);
4274 Object.defineProperty(this, '[[PromiseRejectReactions]]', config);
4277 if (Type(promise) !== 'object') throw new TypeError();
4278 if (!('[[PromiseState]]' in promise)) throw TypeError();
4279 if (promise['[[PromiseState]]'] !== undefined) throw TypeError();
4280 if (!IsCallable(executor)) throw TypeError();
4282 set_internal(promise, '[[PromiseConstructor]]', Promise);
4284 return InitializePromise(promise, executor);
4287 //
25.4.3.1.1 InitializePromise ( promise, executor )
4289 function InitializePromise(promise, executor) {
4290 console.assert('[[PromiseState]]' in promise);
4291 console.assert(IsCallable(executor));
4292 set_internal(promise, '[[PromiseState]]', 'pending');
4293 set_internal(promise, '[[PromiseFulfillReactions]]', []);
4294 set_internal(promise, '[[PromiseRejectReactions]]', []);
4295 var resolvingFunctions = CreateResolvingFunctions(promise);
4297 var completion = executor.call(undefined, resolvingFunctions['[[Resolve]]'],
4298 resolvingFunctions['[[Reject]]']);
4299 } catch (completion) {
4300 var status = resolvingFunctions['[[Reject]]'].call(undefined, completion);
4305 //
25.4.4 Properties of the Promise Constructor
4306 //
25.4.4.1 Promise.all ( iterable )
4308 define(Promise, 'all', function all(iterable) {
4309 var c = strict(this);
4310 var promiseCapability = NewPromiseCapability(c);
4312 var iterator = GetIterator(iterable);
4314 promiseCapability['[[Reject]]'].call(undefined, value);
4315 return promiseCapability['[[Promise]]'];
4318 var remainingElementsCount = { value:
1 };
4322 var next = IteratorStep(iterator);
4324 promiseCapability['[[Reject]]'].call(undefined, value);
4325 return promiseCapability['[[Promise]]'];
4328 remainingElementsCount.value -=
1;
4329 if (remainingElementsCount.value ===
0) {
4330 var resolveResult = promiseCapability['[[Resolve]]'].apply(undefined, values);
4334 return promiseCapability['[[Promise]]'];
4337 var nextValue = IteratorValue(next);
4339 promiseCapability['[[Reject]]'].call(undefined, value);
4340 return promiseCapability['[[Promise]]'];
4343 var nextPromise = c.resolve(nextValue);
4345 promiseCapability['[[Reject]]'].call(undefined, value);
4346 return promiseCapability['[[Promise]]'];
4348 var resolveElement = PromiseAllResolveElementFunction();
4349 set_internal(resolveElement, '[[AlreadyCalled]]', { value: false });
4350 set_internal(resolveElement, '[[Index]]', index);
4351 set_internal(resolveElement, '[[Values]]', values);
4352 set_internal(resolveElement, '[[Capabilities]]', promiseCapability);
4353 set_internal(resolveElement, '[[RemainingElements]]', remainingElementsCount);
4354 remainingElementsCount.value +=
1;
4356 var result = nextPromise.then(resolveElement, promiseCapability['[[Reject]]']);
4358 promiseCapability['[[Reject]]'].call(undefined, value);
4359 return promiseCapability['[[Promise]]'];
4365 //
25.4.4.1.1 Promise.all Resolve Element Functions
4367 function PromiseAllResolveElementFunction() {
4368 var F = function(x) {
4369 var alreadyCalled = F['[[AlreadyCalled]]'];
4370 if (alreadyCalled.value) return undefined;
4371 alreadyCalled.value = true;
4372 var index = F['[[Index]]'];
4373 var values = F['[[Values]]'];
4374 var promiseCapability = F['[[Capabilities]]'];
4375 var remainingElementsCount = F['[[RemainingElements]]'];
4379 promiseCapability['[[Reject]]'].call(undefined, result);
4380 return promiseCapability['[[Promise]]'];
4382 remainingElementsCount.value -=
1;
4383 if (remainingElementsCount.value ===
0)
4384 return promiseCapability['[[Resolve]]'].call(undefined, values);
4390 //
25.4.4.2 Promise.prototype
4392 Promise.prototype = {};
4394 //
25.4.4.3 Promise.race ( iterable )
4396 define(Promise, 'race', function race(iterable) {
4397 var c = strict(this);
4398 var promiseCapability = NewPromiseCapability(c);
4400 var iterator = GetIterator(iterable);
4402 promiseCapability['[[Reject]]'].call(undefined, value);
4403 return promiseCapability['[[Promise]]'];
4407 var next = IteratorStep(iterator);
4409 promiseCapability['[[Reject]]'].call(undefined, value);
4410 return promiseCapability['[[Promise]]'];
4412 if (!next) return promiseCapability['[[Promise]]'];
4414 var nextValue = IteratorValue(next);
4416 promiseCapability['[[Reject]]'].call(undefined, value);
4417 return promiseCapability['[[Promise]]'];
4420 var nextPromise = c.resolve(nextValue);
4422 promiseCapability['[[Reject]]'].call(undefined, value);
4423 return promiseCapability['[[Promise]]'];
4426 nextPromise.then(promiseCapability['[[Resolve]]'], promiseCapability['[[Reject]]']);
4428 promiseCapability['[[Reject]]'].call(undefined, value);
4429 return promiseCapability['[[Promise]]'];
4434 //
25.4.4.4 Promise.reject ( r )
4436 define(Promise, 'reject', function reject(r) {
4437 var c = strict(this);
4438 var promiseCapability = NewPromiseCapability(c);
4439 var rejectResult = promiseCapability['[[Reject]]'].call(undefined, r);
4440 return promiseCapability['[[Promise]]'];
4443 //
25.4.4.5 Promise.resolve ( x )
4445 define(Promise, 'resolve', function resolve(x) {
4446 var c = strict(this);
4448 var constructor = x['[[PromiseConstructor]]'];
4449 if (SameValue(constructor, c)) return x;
4451 var promiseCapability = NewPromiseCapability(c);
4452 var resolveResult = promiseCapability['[[Resolve]]'].call(undefined, x);
4453 return promiseCapability['[[Promise]]'];
4456 //
25.4.4.6 Promise [ @@create ] ( )
4457 //
25.4.4.6.1 AllocatePromise ( constructor )
4458 //
25.4.5 Properties of the Promise Prototype Object
4459 //
25.4.5.1 Promise.prototype.catch ( onRejected )
4461 define(Promise.prototype, 'catch', function catch_(onRejected) {
4463 return promise.then(undefined, onRejected);
4466 //
25.4.5.2 Promise.prototype.constructor
4468 Promise.prototype.constructor = Promise;
4470 //
25.4.5.3 Promise.prototype.then ( onFulfilled , onRejected )
4472 define(Promise.prototype, 'then', function then(onFulfilled, onRejected) {
4474 if (!IsPromise(promise)) throw TypeError();
4475 if (!IsCallable(onFulfilled)) onFulfilled = 'Identity';
4476 if (!IsCallable(onRejected)) onRejected = 'Thrower';
4477 var c = promise.constructor;
4478 var promiseCapability = NewPromiseCapability(c);
4479 var fulfillReaction = { '[[Capabilities]]': promiseCapability,
4480 '[[Handler]]': onFulfilled };
4481 var rejectReaction = { '[[Capabilities]]': promiseCapability,
4482 '[[Handler]]': onRejected };
4483 if (promise['[[PromiseState]]'] === 'pending') {
4484 promise['[[PromiseFulfillReactions]]'].push(fulfillReaction);
4485 promise['[[PromiseRejectReactions]]'].push(rejectReaction);
4486 } else if (promise['[[PromiseState]]'] === 'fulfilled') {
4487 var value = promise['[[PromiseResult]]'];
4488 EnqueueJob('PromiseJobs', PromiseReactionJob, [fulfillReaction, value]);
4489 } else if (promise['[[PromiseState]]'] === 'rejected') {
4490 var reason = promise['[[PromiseResult]]'];
4491 EnqueueJob('PromiseJobs', PromiseReactionJob, [rejectReaction, reason]);
4493 return promiseCapability['[[Promise]]'];
4496 //
25.4.6 Properties of Promise Instances
4498 if (!('Promise' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4499 global.Promise = Promise;
4501 // Patch early Promise.cast vs. Promise.resolve implementations
4502 if ('cast' in global.Promise) global.Promise.resolve = global.Promise.cast;
4505 //
25.4.5.1 Promise.prototype [ @@toStringTag ]
4506 define(Promise.prototype, $$toStringTag, 'Promise');
4508 // ---------------------------------------
4510 // ---------------------------------------
4513 //
26.1 The Reflect Object
4514 if (!('Reflect' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4515 global.Reflect = {};
4517 //
26.1.1 Reflect.apply ( target, thisArgument, argumentsList )
4520 function apply(target, thisArgument, argumentsList) {
4521 if (!IsCallable(target)) throw TypeError();
4522 return Function.prototype.apply.call(target, thisArgument, argumentsList);
4525 //
26.1.2 Reflect.construct ( target, argumentsList [, newTarget] )
4527 Reflect, 'construct',
4528 function construct(target, argumentsList) {
4529 return __cons(target, argumentsList);
4532 //
26.1.3 Reflect.defineProperty ( target, propertyKey, attributes )
4534 Reflect, 'defineProperty',
4535 function defineProperty(target, propertyKey, attributes) {
4537 Object.defineProperty(target, propertyKey, attributes);
4544 //
26.1.4 Reflect.deleteProperty ( target, propertyKey )
4546 Reflect, 'deleteProperty',
4547 function deleteProperty(target,name) {
4549 delete target[name];
4550 return !HasOwnProperty(target, name);
4556 //
26.1.5 Reflect.enumerate ( target )
4558 Reflect, 'enumerate',
4559 function enumerate(target) {
4560 target = ToObject(target);
4561 var iterator = Enumerate(target);
4565 //
26.1.6 Reflect.get ( target, propertyKey [ , receiver ])
4568 function get(target, name, receiver) {
4569 target = ToObject(target);
4570 name = String(name);
4571 receiver = (receiver === undefined) ? target : ToObject(receiver);
4572 var desc = getPropertyDescriptor(target, name);
4573 if (desc && 'get' in desc)
4574 return Function.prototype.call.call(desc['get'], receiver);
4575 return target[name];
4578 //
26.1.7 Reflect.getOwnPropertyDescriptor ( target, propertyKey )
4580 Reflect, 'getOwnPropertyDescriptor',
4581 Object.getOwnPropertyDescriptor);
4583 //
26.1.8 Reflect.getPrototypeOf ( target )
4585 Reflect, 'getPrototypeOf',
4586 Object.getPrototypeOf);
4588 //
26.1.9 Reflect.has ( target, propertyKey )
4591 function has(target,name) {
4592 return String(name) in ToObject(target);
4595 //
26.1.10 Reflect.isExtensible (target)
4597 Reflect, 'isExtensible',
4598 Object.isExtensible);
4600 //
26.1.11 Reflect.ownKeys ( target )
4603 function ownKeys(target) {
4604 var obj = ToObject(target);
4605 return Object.getOwnPropertyNames(obj);
4608 //
26.1.12 Reflect.preventExtensions ( target )
4610 Reflect, 'preventExtensions',
4611 function preventExtensions(target) {
4612 try { Object.preventExtensions(target); return true; } catch (_) { return false; }
4615 //
26.1.13 Reflect.set ( target, propertyKey, V [ , receiver ] )
4618 function set(target, name, value, receiver) {
4619 target = ToObject(target);
4620 name = String(name);
4621 receiver = (receiver === undefined) ? target : ToObject(receiver);
4622 var desc = getPropertyDescriptor(target, name);
4624 if (desc && 'set' in desc)
4625 Function.prototype.call.call(desc['set'], receiver, value);
4627 target[name] = value;
4634 //
26.1.14 Reflect.setPrototypeOf ( target, proto )
4636 Reflect, 'setPrototypeOf',
4637 function setPrototypeOf(target, proto) {
4639 target.__proto__ = proto;
4640 return Reflect.getPrototypeOf(target) === proto;
4648 // ---------------------------------------
4649 //
26.2 Proxy Objects
4650 // ---------------------------------------
4652 // Not polyfillable.
4656 // This helper is defined outside the main scope so that the use of
4657 // 'eval' does not taint the scope for minifiers.
4658 function __cons(t, a) {
4659 return eval('new t(' + a.map(function(_, i) { return 'a[' + i + ']'; }).join(',') + ')');
4662 <script>(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.foo = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&
&require;if(!u&&a)return a(o,!
0);if(i)return i(o,!
0);var f=new Error("Cannot find module '"+o+"'");throw f.
code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][
0].call(l.exports,function(e){var n=t[o][
1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&
&require;for(var o=
0;o
<r.length;o++)s(r[o]);return s})({
1:[function(require,module,exports){
4665 exports.byteLength = byteLength
4666 exports.toByteArray = toByteArray
4667 exports.fromByteArray = fromByteArray
4671 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
4673 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
4674 for (var i =
0, len = code.length; i < len; ++i) {
4676 revLookup[code.charCodeAt(i)] = i
4679 revLookup['-'.charCodeAt(
0)] =
62
4680 revLookup['_'.charCodeAt(
0)] =
63
4682 function placeHoldersCount (b64) {
4683 var len = b64.length
4685 throw new Error('Invalid string. Length must be a multiple of
4')
4688 // the number of equal signs (place holders)
4689 // if there are two placeholders, than the two characters before it
4690 // represent one byte
4691 // if there is only one, then the three characters before it represent
2 bytes
4692 // this is just a cheap hack to not do indexOf twice
4693 return b64[len -
2] === '=' ?
2 : b64[len -
1] === '=' ?
1 :
0
4696 function byteLength (b64) {
4697 // base64 is
4/
3 + up to two characters of the original data
4698 return b64.length *
3 /
4 - placeHoldersCount(b64)
4701 function toByteArray (b64) {
4702 var i, j, l, tmp, placeHolders, arr
4703 var len = b64.length
4704 placeHolders = placeHoldersCount(b64)
4706 arr = new Arr(len *
3 /
4 - placeHolders)
4708 // if there are placeholders, only get up to the last complete
4 chars
4709 l = placeHolders
> 0 ? len -
4 : len
4713 for (i =
0, j =
0; i < l; i +=
4, j +=
3) {
4714 tmp = (revLookup[b64.charCodeAt(i)] <<
18) | (revLookup[b64.charCodeAt(i +
1)] <<
12) | (revLookup[b64.charCodeAt(i +
2)] <<
6) | revLookup[b64.charCodeAt(i +
3)]
4715 arr[L++] = (tmp
>> 16) &
0xFF
4716 arr[L++] = (tmp
>> 8) &
0xFF
4717 arr[L++] = tmp &
0xFF
4720 if (placeHolders ===
2) {
4721 tmp = (revLookup[b64.charCodeAt(i)] <<
2) | (revLookup[b64.charCodeAt(i +
1)]
>> 4)
4722 arr[L++] = tmp &
0xFF
4723 } else if (placeHolders ===
1) {
4724 tmp = (revLookup[b64.charCodeAt(i)] <<
10) | (revLookup[b64.charCodeAt(i +
1)] <<
4) | (revLookup[b64.charCodeAt(i +
2)]
>> 2)
4725 arr[L++] = (tmp
>> 8) &
0xFF
4726 arr[L++] = tmp &
0xFF
4732 function tripletToBase64 (num) {
4733 return lookup[num
>> 18 &
0x3F] + lookup[num
>> 12 &
0x3F] + lookup[num
>> 6 &
0x3F] + lookup[num &
0x3F]
4736 function encodeChunk (uint8, start, end) {
4739 for (var i = start; i < end; i +=
3) {
4740 tmp = (uint8[i] <<
16) + (uint8[i +
1] <<
8) + (uint8[i +
2])
4741 output.push(tripletToBase64(tmp))
4743 return output.join('')
4746 function fromByteArray (uint8) {
4748 var len = uint8.length
4749 var extraBytes = len %
3 // if we have
1 byte left, pad
2 bytes
4752 var maxChunkLength =
16383 // must be multiple of
3
4754 // go through the array every three bytes, we'll deal with trailing stuff later
4755 for (var i =
0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
4756 parts.push(encodeChunk(uint8, i, (i + maxChunkLength)
> len2 ? len2 : (i + maxChunkLength)))
4759 // pad the end with zeros, but make sure to not forget the extra bytes
4760 if (extraBytes ===
1) {
4761 tmp = uint8[len -
1]
4762 output += lookup[tmp
>> 2]
4763 output += lookup[(tmp <<
4) &
0x3F]
4765 } else if (extraBytes ===
2) {
4766 tmp = (uint8[len -
2] <<
8) + (uint8[len -
1])
4767 output += lookup[tmp
>> 10]
4768 output += lookup[(tmp
>> 4) &
0x3F]
4769 output += lookup[(tmp <<
2) &
0x3F]
4775 return parts.join('')
4778 },{}],
2:[function(require,module,exports){
4780 * The buffer module from node.js, for the browser.
4782 * @author Feross Aboukhadijeh
<feross@feross.org
> <http://feross.org
>
4785 /* eslint-disable no-proto */
4789 var base64 = require('base64-js')
4790 var ieee754 = require('ieee754')
4792 exports.Buffer = Buffer
4793 exports.SlowBuffer = SlowBuffer
4794 exports.INSPECT_MAX_BYTES =
50
4796 var K_MAX_LENGTH =
0x7fffffff
4797 exports.kMaxLength = K_MAX_LENGTH
4800 * If `Buffer.TYPED_ARRAY_SUPPORT`:
4801 * === true Use Uint8Array implementation (fastest)
4802 * === false Print warning and recommend using `buffer` v4.x which has an Object
4803 * implementation (most compatible, even IE6)
4805 * Browsers that support typed arrays are IE
10+, Firefox
4+, Chrome
7+, Safari
5.1+,
4806 * Opera
11.6+, iOS
4.2+.
4808 * We report that the browser does not support typed arrays if the are not subclassable
4809 * using __proto__. Firefox
4-
29 lacks support for adding new properties to `Uint8Array`
4810 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=
695438). IE
10 lacks support
4811 * for __proto__ and has a buggy typed array implementation.
4813 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
4815 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
4816 typeof console.error === 'function') {
4818 'This browser lacks typed array (Uint8Array) support which is required by ' +
4819 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
4823 function typedArraySupport () {
4824 // Can typed array instances can be augmented?
4826 var arr = new Uint8Array(
1)
4827 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return
42 }}
4828 return arr.foo() ===
42
4834 function createBuffer (length) {
4835 if (length
> K_MAX_LENGTH) {
4836 throw new RangeError('Invalid typed array length')
4838 // Return an augmented `Uint8Array` instance
4839 var buf = new Uint8Array(length)
4840 buf.__proto__ = Buffer.prototype
4845 * The Buffer constructor returns instances of `Uint8Array` that have their
4846 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
4847 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
4848 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
4849 * returns a single octet.
4851 * The `Uint8Array` prototype remains unmodified.
4854 function Buffer (arg, encodingOrOffset, length) {
4856 if (typeof arg === 'number') {
4857 if (typeof encodingOrOffset === 'string') {
4859 'If encoding is specified then the first argument must be a string'
4862 return allocUnsafe(arg)
4864 return from(arg, encodingOrOffset, length)
4867 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/
97
4868 if (typeof Symbol !== 'undefined' && Symbol.species &&
4869 Buffer[Symbol.species] === Buffer) {
4870 Object.defineProperty(Buffer, Symbol.species, {
4878 Buffer.poolSize =
8192 // not used by this implementation
4880 function from (value, encodingOrOffset, length) {
4881 if (typeof value === 'number') {
4882 throw new TypeError('"value" argument must not be a number')
4885 if (value instanceof ArrayBuffer) {
4886 return fromArrayBuffer(value, encodingOrOffset, length)
4889 if (typeof value === 'string') {
4890 return fromString(value, encodingOrOffset)
4893 return fromObject(value)
4897 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
4898 * if value is a number.
4899 * Buffer.from(str[, encoding])
4900 * Buffer.from(array)
4901 * Buffer.from(buffer)
4902 * Buffer.from(arrayBuffer[, byteOffset[, length]])
4904 Buffer.from = function (value, encodingOrOffset, length) {
4905 return from(value, encodingOrOffset, length)
4908 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
4909 // https://github.com/feross/buffer/pull/
148
4910 Buffer.prototype.__proto__ = Uint8Array.prototype
4911 Buffer.__proto__ = Uint8Array
4913 function assertSize (size) {
4914 if (typeof size !== 'number') {
4915 throw new TypeError('"size" argument must be a number')
4916 } else if (size <
0) {
4917 throw new RangeError('"size" argument must not be negative')
4921 function alloc (size, fill, encoding) {
4924 return createBuffer(size)
4926 if (fill !== undefined) {
4927 // Only pay attention to encoding if it's a string. This
4928 // prevents accidentally sending in a number that would
4929 // be interpretted as a start offset.
4930 return typeof encoding === 'string'
4931 ? createBuffer(size).fill(fill, encoding)
4932 : createBuffer(size).fill(fill)
4934 return createBuffer(size)
4938 * Creates a new filled Buffer instance.
4939 * alloc(size[, fill[, encoding]])
4941 Buffer.alloc = function (size, fill, encoding) {
4942 return alloc(size, fill, encoding)
4945 function allocUnsafe (size) {
4947 return createBuffer(size <
0 ?
0 : checked(size) |
0)
4951 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
4953 Buffer.allocUnsafe = function (size) {
4954 return allocUnsafe(size)
4957 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
4959 Buffer.allocUnsafeSlow = function (size) {
4960 return allocUnsafe(size)
4963 function fromString (string, encoding) {
4964 if (typeof encoding !== 'string' || encoding === '') {
4968 if (!Buffer.isEncoding(encoding)) {
4969 throw new TypeError('"encoding" must be a valid string encoding')
4972 var length = byteLength(string, encoding) |
0
4973 var buf = createBuffer(length)
4975 var actual = buf.write(string, encoding)
4977 if (actual !== length) {
4978 // Writing a hex string, for example, that contains invalid characters will
4979 // cause everything after the first invalid character to be ignored. (e.g.
4980 // 'abxxcd' will be treated as 'ab')
4981 buf = buf.slice(
0, actual)
4987 function fromArrayLike (array) {
4988 var length = array.length <
0 ?
0 : checked(array.length) |
0
4989 var buf = createBuffer(length)
4990 for (var i =
0; i < length; i +=
1) {
4991 buf[i] = array[i] &
255
4996 function fromArrayBuffer (array, byteOffset, length) {
4997 if (byteOffset <
0 || array.byteLength < byteOffset) {
4998 throw new RangeError('\'offset\' is out of bounds')
5001 if (array.byteLength < byteOffset + (length ||
0)) {
5002 throw new RangeError('\'length\' is out of bounds')
5006 if (byteOffset === undefined && length === undefined) {
5007 buf = new Uint8Array(array)
5008 } else if (length === undefined) {
5009 buf = new Uint8Array(array, byteOffset)
5011 buf = new Uint8Array(array, byteOffset, length)
5014 // Return an augmented `Uint8Array` instance
5015 buf.__proto__ = Buffer.prototype
5019 function fromObject (obj) {
5020 if (Buffer.isBuffer(obj)) {
5021 var len = checked(obj.length) |
0
5022 var buf = createBuffer(len)
5024 if (buf.length ===
0) {
5028 obj.copy(buf,
0,
0, len)
5033 if (isArrayBufferView(obj) || 'length' in obj) {
5034 if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
5035 return createBuffer(
0)
5037 return fromArrayLike(obj)
5040 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
5041 return fromArrayLike(obj.data)
5045 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
5048 function checked (length) {
5049 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
5050 // length is NaN (which is otherwise coerced to zero.)
5051 if (length
>= K_MAX_LENGTH) {
5052 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
5053 'size:
0x' + K_MAX_LENGTH.toString(
16) + ' bytes')
5058 function SlowBuffer (length) {
5059 if (+length != length) { // eslint-disable-line eqeqeq
5062 return Buffer.alloc(+length)
5065 Buffer.isBuffer = function isBuffer (b) {
5066 return b != null && b._isBuffer === true
5069 Buffer.compare = function compare (a, b) {
5070 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
5071 throw new TypeError('Arguments must be Buffers')
5074 if (a === b) return
0
5079 for (var i =
0, len = Math.min(x, y); i < len; ++i) {
5080 if (a[i] !== b[i]) {
5087 if (x < y) return -
1
5092 Buffer.isEncoding = function isEncoding (encoding) {
5093 switch (String(encoding).toLowerCase()) {
5111 Buffer.concat = function concat (list, length) {
5112 if (!Array.isArray(list)) {
5113 throw new TypeError('"list" argument must be an Array of Buffers')
5116 if (list.length ===
0) {
5117 return Buffer.alloc(
0)
5121 if (length === undefined) {
5123 for (i =
0; i < list.length; ++i) {
5124 length += list[i].length
5128 var buffer = Buffer.allocUnsafe(length)
5130 for (i =
0; i < list.length; ++i) {
5132 if (!Buffer.isBuffer(buf)) {
5133 throw new TypeError('"list" argument must be an Array of Buffers')
5135 buf.copy(buffer, pos)
5141 function byteLength (string, encoding) {
5142 if (Buffer.isBuffer(string)) {
5143 return string.length
5145 if (isArrayBufferView(string) || string instanceof ArrayBuffer) {
5146 return string.byteLength
5148 if (typeof string !== 'string') {
5149 string = '' + string
5152 var len = string.length
5153 if (len ===
0) return
0
5155 // Use a for loop to avoid recursion
5156 var loweredCase = false
5166 return utf8ToBytes(string).length
5175 return base64ToBytes(string).length
5177 if (loweredCase) return utf8ToBytes(string).length // assume utf8
5178 encoding = ('' + encoding).toLowerCase()
5183 Buffer.byteLength = byteLength
5185 function slowToString (encoding, start, end) {
5186 var loweredCase = false
5188 // No need to verify that
"this.length <= MAX_UINT32" since it's a read-only
5189 // property of a typed array.
5191 // This behaves neither like String nor Uint8Array in that we set start/end
5192 // to their upper/lower bounds if the value passed is out of range.
5193 // undefined is handled specially as per ECMA-
262 6th Edition,
5194 // Section
13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
5195 if (start === undefined || start <
0) {
5198 // Return early if start
> this.length. Done here to prevent potential uint32
5199 // coercion fail below.
5200 if (start
> this.length) {
5204 if (end === undefined || end
> this.length) {
5212 // Force coersion to uint32. This will also coerce falsey/NaN values to
0.
5220 if (!encoding) encoding = 'utf8'
5225 return hexSlice(this, start, end)
5229 return utf8Slice(this, start, end)
5232 return asciiSlice(this, start, end)
5236 return latin1Slice(this, start, end)
5239 return base64Slice(this, start, end)
5245 return utf16leSlice(this, start, end)
5248 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
5249 encoding = (encoding + '').toLowerCase()
5255 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
5256 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
5257 // reliably in a browserify context because there could be multiple different
5258 // copies of the 'buffer' package in use. This method works even for Buffer
5259 // instances that were created from another copy of the `buffer` package.
5260 // See: https://github.com/feross/buffer/issues/
154
5261 Buffer.prototype._isBuffer = true
5263 function swap (b, n, m) {
5269 Buffer.prototype.swap16 = function swap16 () {
5270 var len = this.length
5271 if (len %
2 !==
0) {
5272 throw new RangeError('Buffer size must be a multiple of
16-bits')
5274 for (var i =
0; i < len; i +=
2) {
5275 swap(this, i, i +
1)
5280 Buffer.prototype.swap32 = function swap32 () {
5281 var len = this.length
5282 if (len %
4 !==
0) {
5283 throw new RangeError('Buffer size must be a multiple of
32-bits')
5285 for (var i =
0; i < len; i +=
4) {
5286 swap(this, i, i +
3)
5287 swap(this, i +
1, i +
2)
5292 Buffer.prototype.swap64 = function swap64 () {
5293 var len = this.length
5294 if (len %
8 !==
0) {
5295 throw new RangeError('Buffer size must be a multiple of
64-bits')
5297 for (var i =
0; i < len; i +=
8) {
5298 swap(this, i, i +
7)
5299 swap(this, i +
1, i +
6)
5300 swap(this, i +
2, i +
5)
5301 swap(this, i +
3, i +
4)
5306 Buffer.prototype.toString = function toString () {
5307 var length = this.length
5308 if (length ===
0) return ''
5309 if (arguments.length ===
0) return utf8Slice(this,
0, length)
5310 return slowToString.apply(this, arguments)
5313 Buffer.prototype.equals = function equals (b) {
5314 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
5315 if (this === b) return true
5316 return Buffer.compare(this, b) ===
0
5319 Buffer.prototype.inspect = function inspect () {
5321 var max = exports.INSPECT_MAX_BYTES
5322 if (this.length
> 0) {
5323 str = this.toString('hex',
0, max).match(/.{
2}/g).join(' ')
5324 if (this.length
> max) str += ' ... '
5326 return '
<Buffer ' + str + '
>'
5329 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
5330 if (!Buffer.isBuffer(target)) {
5331 throw new TypeError('Argument must be a Buffer')
5334 if (start === undefined) {
5337 if (end === undefined) {
5338 end = target ? target.length :
0
5340 if (thisStart === undefined) {
5343 if (thisEnd === undefined) {
5344 thisEnd = this.length
5347 if (start <
0 || end
> target.length || thisStart <
0 || thisEnd
> this.length) {
5348 throw new RangeError('out of range index')
5351 if (thisStart
>= thisEnd && start
>= end) {
5354 if (thisStart
>= thisEnd) {
5366 if (this === target) return
0
5368 var x = thisEnd - thisStart
5370 var len = Math.min(x, y)
5372 var thisCopy = this.slice(thisStart, thisEnd)
5373 var targetCopy = target.slice(start, end)
5375 for (var i =
0; i < len; ++i) {
5376 if (thisCopy[i] !== targetCopy[i]) {
5383 if (x < y) return -
1
5388 // Finds either the first index of `val` in `buffer` at offset
>= `byteOffset`,
5389 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
5392 // - buffer - a Buffer to search
5393 // - val - a string, Buffer, or number
5394 // - byteOffset - an index into `buffer`; will be clamped to an int32
5395 // - encoding - an optional encoding, relevant is val is a string
5396 // - dir - true for indexOf, false for lastIndexOf
5397 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
5398 // Empty buffer means no match
5399 if (buffer.length ===
0) return -
1
5401 // Normalize byteOffset
5402 if (typeof byteOffset === 'string') {
5403 encoding = byteOffset
5405 } else if (byteOffset
> 0x7fffffff) {
5406 byteOffset =
0x7fffffff
5407 } else if (byteOffset < -
0x80000000) {
5408 byteOffset = -
0x80000000
5410 byteOffset = +byteOffset // Coerce to Number.
5411 if (numberIsNaN(byteOffset)) {
5412 // byteOffset: it it's undefined, null, NaN,
"foo", etc, search whole buffer
5413 byteOffset = dir ?
0 : (buffer.length -
1)
5416 // Normalize byteOffset: negative offsets start from the end of the buffer
5417 if (byteOffset <
0) byteOffset = buffer.length + byteOffset
5418 if (byteOffset
>= buffer.length) {
5420 else byteOffset = buffer.length -
1
5421 } else if (byteOffset <
0) {
5422 if (dir) byteOffset =
0
5427 if (typeof val === 'string') {
5428 val = Buffer.from(val, encoding)
5431 // Finally, search either indexOf (if dir is true) or lastIndexOf
5432 if (Buffer.isBuffer(val)) {
5433 // Special case: looking for empty string/buffer always fails
5434 if (val.length ===
0) {
5437 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
5438 } else if (typeof val === 'number') {
5439 val = val &
0xFF // Search for a byte value [
0-
255]
5440 if (typeof Uint8Array.prototype.indexOf === 'function') {
5442 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
5444 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
5447 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
5450 throw new TypeError('val must be string, number or Buffer')
5453 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
5455 var arrLength = arr.length
5456 var valLength = val.length
5458 if (encoding !== undefined) {
5459 encoding = String(encoding).toLowerCase()
5460 if (encoding === 'ucs2' || encoding === 'ucs-
2' ||
5461 encoding === 'utf16le' || encoding === 'utf-
16le') {
5462 if (arr.length <
2 || val.length <
2) {
5472 function read (buf, i) {
5473 if (indexSize ===
1) {
5476 return buf.readUInt16BE(i * indexSize)
5483 for (i = byteOffset; i < arrLength; i++) {
5484 if (read(arr, i) === read(val, foundIndex === -
1 ?
0 : i - foundIndex)) {
5485 if (foundIndex === -
1) foundIndex = i
5486 if (i - foundIndex +
1 === valLength) return foundIndex * indexSize
5488 if (foundIndex !== -
1) i -= i - foundIndex
5493 if (byteOffset + valLength
> arrLength) byteOffset = arrLength - valLength
5494 for (i = byteOffset; i
>=
0; i--) {
5496 for (var j =
0; j < valLength; j++) {
5497 if (read(arr, i + j) !== read(val, j)) {
5509 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
5510 return this.indexOf(val, byteOffset, encoding) !== -
1
5513 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
5514 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
5517 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
5518 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
5521 function hexWrite (buf, string, offset, length) {
5522 offset = Number(offset) ||
0
5523 var remaining = buf.length - offset
5527 length = Number(length)
5528 if (length
> remaining) {
5533 // must be an even number of digits
5534 var strLen = string.length
5535 if (strLen %
2 !==
0) throw new TypeError('Invalid hex string')
5537 if (length
> strLen /
2) {
5540 for (var i =
0; i < length; ++i) {
5541 var parsed = parseInt(string.substr(i *
2,
2),
16)
5542 if (numberIsNaN(parsed)) return i
5543 buf[offset + i] = parsed
5548 function utf8Write (buf, string, offset, length) {
5549 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
5552 function asciiWrite (buf, string, offset, length) {
5553 return blitBuffer(asciiToBytes(string), buf, offset, length)
5556 function latin1Write (buf, string, offset, length) {
5557 return asciiWrite(buf, string, offset, length)
5560 function base64Write (buf, string, offset, length) {
5561 return blitBuffer(base64ToBytes(string), buf, offset, length)
5564 function ucs2Write (buf, string, offset, length) {
5565 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
5568 Buffer.prototype.write = function write (string, offset, length, encoding) {
5569 // Buffer#write(string)
5570 if (offset === undefined) {
5572 length = this.length
5574 // Buffer#write(string, encoding)
5575 } else if (length === undefined && typeof offset === 'string') {
5577 length = this.length
5579 // Buffer#write(string, offset[, length][, encoding])
5580 } else if (isFinite(offset)) {
5581 offset = offset
>>> 0
5582 if (isFinite(length)) {
5583 length = length
>>> 0
5584 if (encoding === undefined) encoding = 'utf8'
5591 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
5595 var remaining = this.length - offset
5596 if (length === undefined || length
> remaining) length = remaining
5598 if ((string.length
> 0 && (length <
0 || offset <
0)) || offset
> this.length) {
5599 throw new RangeError('Attempt to write outside buffer bounds')
5602 if (!encoding) encoding = 'utf8'
5604 var loweredCase = false
5608 return hexWrite(this, string, offset, length)
5612 return utf8Write(this, string, offset, length)
5615 return asciiWrite(this, string, offset, length)
5619 return latin1Write(this, string, offset, length)
5622 // Warning: maxLength not taken into account in base64Write
5623 return base64Write(this, string, offset, length)
5629 return ucs2Write(this, string, offset, length)
5632 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
5633 encoding = ('' + encoding).toLowerCase()
5639 Buffer.prototype.toJSON = function toJSON () {
5642 data: Array.prototype.slice.call(this._arr || this,
0)
5646 function base64Slice (buf, start, end) {
5647 if (start ===
0 && end === buf.length) {
5648 return base64.fromByteArray(buf)
5650 return base64.fromByteArray(buf.slice(start, end))
5654 function utf8Slice (buf, start, end) {
5655 end = Math.min(buf.length, end)
5660 var firstByte = buf[i]
5661 var codePoint = null
5662 var bytesPerSequence = (firstByte
> 0xEF) ?
4
5663 : (firstByte
> 0xDF) ?
3
5664 : (firstByte
> 0xBF) ?
2
5667 if (i + bytesPerSequence <= end) {
5668 var secondByte, thirdByte, fourthByte, tempCodePoint
5670 switch (bytesPerSequence) {
5672 if (firstByte <
0x80) {
5673 codePoint = firstByte
5677 secondByte = buf[i +
1]
5678 if ((secondByte &
0xC0) ===
0x80) {
5679 tempCodePoint = (firstByte &
0x1F) <<
0x6 | (secondByte &
0x3F)
5680 if (tempCodePoint
> 0x7F) {
5681 codePoint = tempCodePoint
5686 secondByte = buf[i +
1]
5687 thirdByte = buf[i +
2]
5688 if ((secondByte &
0xC0) ===
0x80 && (thirdByte &
0xC0) ===
0x80) {
5689 tempCodePoint = (firstByte &
0xF) <<
0xC | (secondByte &
0x3F) <<
0x6 | (thirdByte &
0x3F)
5690 if (tempCodePoint
> 0x7FF && (tempCodePoint <
0xD800 || tempCodePoint
> 0xDFFF)) {
5691 codePoint = tempCodePoint
5696 secondByte = buf[i +
1]
5697 thirdByte = buf[i +
2]
5698 fourthByte = buf[i +
3]
5699 if ((secondByte &
0xC0) ===
0x80 && (thirdByte &
0xC0) ===
0x80 && (fourthByte &
0xC0) ===
0x80) {
5700 tempCodePoint = (firstByte &
0xF) <<
0x12 | (secondByte &
0x3F) <<
0xC | (thirdByte &
0x3F) <<
0x6 | (fourthByte &
0x3F)
5701 if (tempCodePoint
> 0xFFFF && tempCodePoint <
0x110000) {
5702 codePoint = tempCodePoint
5708 if (codePoint === null) {
5709 // we did not generate a valid codePoint so insert a
5710 // replacement char (U+FFFD) and advance only
1 byte
5712 bytesPerSequence =
1
5713 } else if (codePoint
> 0xFFFF) {
5714 // encode to utf16 (surrogate pair dance)
5715 codePoint -=
0x10000
5716 res.push(codePoint
>>> 10 &
0x3FF |
0xD800)
5717 codePoint =
0xDC00 | codePoint &
0x3FF
5721 i += bytesPerSequence
5724 return decodeCodePointsArray(res)
5727 // Based on http://stackoverflow.com/a/
22747272/
680742, the browser with
5728 // the lowest limit is Chrome, with
0x10000 args.
5729 // We go
1 magnitude less, for safety
5730 var MAX_ARGUMENTS_LENGTH =
0x1000
5732 function decodeCodePointsArray (codePoints) {
5733 var len = codePoints.length
5734 if (len <= MAX_ARGUMENTS_LENGTH) {
5735 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
5738 // Decode in chunks to avoid
"call stack size exceeded".
5742 res += String.fromCharCode.apply(
5744 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
5750 function asciiSlice (buf, start, end) {
5752 end = Math.min(buf.length, end)
5754 for (var i = start; i < end; ++i) {
5755 ret += String.fromCharCode(buf[i] &
0x7F)
5760 function latin1Slice (buf, start, end) {
5762 end = Math.min(buf.length, end)
5764 for (var i = start; i < end; ++i) {
5765 ret += String.fromCharCode(buf[i])
5770 function hexSlice (buf, start, end) {
5771 var len = buf.length
5773 if (!start || start <
0) start =
0
5774 if (!end || end <
0 || end
> len) end = len
5777 for (var i = start; i < end; ++i) {
5778 out += toHex(buf[i])
5783 function utf16leSlice (buf, start, end) {
5784 var bytes = buf.slice(start, end)
5786 for (var i =
0; i < bytes.length; i +=
2) {
5787 res += String.fromCharCode(bytes[i] + (bytes[i +
1] *
256))
5792 Buffer.prototype.slice = function slice (start, end) {
5793 var len = this.length
5795 end = end === undefined ? len : ~~end
5799 if (start <
0) start =
0
5800 } else if (start
> len) {
5806 if (end <
0) end =
0
5807 } else if (end
> len) {
5811 if (end < start) end = start
5813 var newBuf = this.subarray(start, end)
5814 // Return an augmented `Uint8Array` instance
5815 newBuf.__proto__ = Buffer.prototype
5820 * Need to make sure that buffer isn't trying to write out of bounds.
5822 function checkOffset (offset, ext, length) {
5823 if ((offset %
1) !==
0 || offset <
0) throw new RangeError('offset is not uint')
5824 if (offset + ext
> length) throw new RangeError('Trying to access beyond buffer length')
5827 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
5828 offset = offset
>>> 0
5829 byteLength = byteLength
>>> 0
5830 if (!noAssert) checkOffset(offset, byteLength, this.length)
5832 var val = this[offset]
5835 while (++i < byteLength && (mul *=
0x100)) {
5836 val += this[offset + i] * mul
5842 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
5843 offset = offset
>>> 0
5844 byteLength = byteLength
>>> 0
5846 checkOffset(offset, byteLength, this.length)
5849 var val = this[offset + --byteLength]
5851 while (byteLength
> 0 && (mul *=
0x100)) {
5852 val += this[offset + --byteLength] * mul
5858 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
5859 offset = offset
>>> 0
5860 if (!noAssert) checkOffset(offset,
1, this.length)
5864 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
5865 offset = offset
>>> 0
5866 if (!noAssert) checkOffset(offset,
2, this.length)
5867 return this[offset] | (this[offset +
1] <<
8)
5870 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
5871 offset = offset
>>> 0
5872 if (!noAssert) checkOffset(offset,
2, this.length)
5873 return (this[offset] <<
8) | this[offset +
1]
5876 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
5877 offset = offset
>>> 0
5878 if (!noAssert) checkOffset(offset,
4, this.length)
5880 return ((this[offset]) |
5881 (this[offset +
1] <<
8) |
5882 (this[offset +
2] <<
16)) +
5883 (this[offset +
3] *
0x1000000)
5886 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
5887 offset = offset
>>> 0
5888 if (!noAssert) checkOffset(offset,
4, this.length)
5890 return (this[offset] *
0x1000000) +
5891 ((this[offset +
1] <<
16) |
5892 (this[offset +
2] <<
8) |
5896 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
5897 offset = offset
>>> 0
5898 byteLength = byteLength
>>> 0
5899 if (!noAssert) checkOffset(offset, byteLength, this.length)
5901 var val = this[offset]
5904 while (++i < byteLength && (mul *=
0x100)) {
5905 val += this[offset + i] * mul
5909 if (val
>= mul) val -= Math.pow(
2,
8 * byteLength)
5914 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
5915 offset = offset
>>> 0
5916 byteLength = byteLength
>>> 0
5917 if (!noAssert) checkOffset(offset, byteLength, this.length)
5921 var val = this[offset + --i]
5922 while (i
> 0 && (mul *=
0x100)) {
5923 val += this[offset + --i] * mul
5927 if (val
>= mul) val -= Math.pow(
2,
8 * byteLength)
5932 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
5933 offset = offset
>>> 0
5934 if (!noAssert) checkOffset(offset,
1, this.length)
5935 if (!(this[offset] &
0x80)) return (this[offset])
5936 return ((
0xff - this[offset] +
1) * -
1)
5939 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
5940 offset = offset
>>> 0
5941 if (!noAssert) checkOffset(offset,
2, this.length)
5942 var val = this[offset] | (this[offset +
1] <<
8)
5943 return (val &
0x8000) ? val |
0xFFFF0000 : val
5946 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
5947 offset = offset
>>> 0
5948 if (!noAssert) checkOffset(offset,
2, this.length)
5949 var val = this[offset +
1] | (this[offset] <<
8)
5950 return (val &
0x8000) ? val |
0xFFFF0000 : val
5953 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
5954 offset = offset
>>> 0
5955 if (!noAssert) checkOffset(offset,
4, this.length)
5957 return (this[offset]) |
5958 (this[offset +
1] <<
8) |
5959 (this[offset +
2] <<
16) |
5960 (this[offset +
3] <<
24)
5963 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
5964 offset = offset
>>> 0
5965 if (!noAssert) checkOffset(offset,
4, this.length)
5967 return (this[offset] <<
24) |
5968 (this[offset +
1] <<
16) |
5969 (this[offset +
2] <<
8) |
5973 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
5974 offset = offset
>>> 0
5975 if (!noAssert) checkOffset(offset,
4, this.length)
5976 return ieee754.read(this, offset, true,
23,
4)
5979 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
5980 offset = offset
>>> 0
5981 if (!noAssert) checkOffset(offset,
4, this.length)
5982 return ieee754.read(this, offset, false,
23,
4)
5985 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
5986 offset = offset
>>> 0
5987 if (!noAssert) checkOffset(offset,
8, this.length)
5988 return ieee754.read(this, offset, true,
52,
8)
5991 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
5992 offset = offset
>>> 0
5993 if (!noAssert) checkOffset(offset,
8, this.length)
5994 return ieee754.read(this, offset, false,
52,
8)
5997 function checkInt (buf, value, offset, ext, max, min) {
5998 if (!Buffer.isBuffer(buf)) throw new TypeError('
"buffer" argument must be a Buffer instance')
5999 if (value
> max || value < min) throw new RangeError('"value" argument is out of bounds')
6000 if (offset + ext
> buf.length) throw new RangeError('Index out of range')
6003 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
6005 offset = offset
>>> 0
6006 byteLength = byteLength
>>> 0
6008 var maxBytes = Math.pow(
2,
8 * byteLength) -
1
6009 checkInt(this, value, offset, byteLength, maxBytes,
0)
6014 this[offset] = value &
0xFF
6015 while (++i < byteLength && (mul *=
0x100)) {
6016 this[offset + i] = (value / mul) &
0xFF
6019 return offset + byteLength
6022 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
6024 offset = offset
>>> 0
6025 byteLength = byteLength
>>> 0
6027 var maxBytes = Math.pow(
2,
8 * byteLength) -
1
6028 checkInt(this, value, offset, byteLength, maxBytes,
0)
6031 var i = byteLength -
1
6033 this[offset + i] = value &
0xFF
6034 while (--i
>=
0 && (mul *=
0x100)) {
6035 this[offset + i] = (value / mul) &
0xFF
6038 return offset + byteLength
6041 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
6043 offset = offset
>>> 0
6044 if (!noAssert) checkInt(this, value, offset,
1,
0xff,
0)
6045 this[offset] = (value &
0xff)
6049 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
6051 offset = offset
>>> 0
6052 if (!noAssert) checkInt(this, value, offset,
2,
0xffff,
0)
6053 this[offset] = (value &
0xff)
6054 this[offset +
1] = (value
>>> 8)
6058 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
6060 offset = offset
>>> 0
6061 if (!noAssert) checkInt(this, value, offset,
2,
0xffff,
0)
6062 this[offset] = (value
>>> 8)
6063 this[offset +
1] = (value &
0xff)
6067 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
6069 offset = offset
>>> 0
6070 if (!noAssert) checkInt(this, value, offset,
4,
0xffffffff,
0)
6071 this[offset +
3] = (value
>>> 24)
6072 this[offset +
2] = (value
>>> 16)
6073 this[offset +
1] = (value
>>> 8)
6074 this[offset] = (value &
0xff)
6078 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
6080 offset = offset
>>> 0
6081 if (!noAssert) checkInt(this, value, offset,
4,
0xffffffff,
0)
6082 this[offset] = (value
>>> 24)
6083 this[offset +
1] = (value
>>> 16)
6084 this[offset +
2] = (value
>>> 8)
6085 this[offset +
3] = (value &
0xff)
6089 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
6091 offset = offset
>>> 0
6093 var limit = Math.pow(
2, (
8 * byteLength) -
1)
6095 checkInt(this, value, offset, byteLength, limit -
1, -limit)
6101 this[offset] = value &
0xFF
6102 while (++i < byteLength && (mul *=
0x100)) {
6103 if (value <
0 && sub ===
0 && this[offset + i -
1] !==
0) {
6106 this[offset + i] = ((value / mul)
>> 0) - sub &
0xFF
6109 return offset + byteLength
6112 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
6114 offset = offset
>>> 0
6116 var limit = Math.pow(
2, (
8 * byteLength) -
1)
6118 checkInt(this, value, offset, byteLength, limit -
1, -limit)
6121 var i = byteLength -
1
6124 this[offset + i] = value &
0xFF
6125 while (--i
>=
0 && (mul *=
0x100)) {
6126 if (value <
0 && sub ===
0 && this[offset + i +
1] !==
0) {
6129 this[offset + i] = ((value / mul)
>> 0) - sub &
0xFF
6132 return offset + byteLength
6135 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
6137 offset = offset
>>> 0
6138 if (!noAssert) checkInt(this, value, offset,
1,
0x7f, -
0x80)
6139 if (value <
0) value =
0xff + value +
1
6140 this[offset] = (value &
0xff)
6144 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
6146 offset = offset
>>> 0
6147 if (!noAssert) checkInt(this, value, offset,
2,
0x7fff, -
0x8000)
6148 this[offset] = (value &
0xff)
6149 this[offset +
1] = (value
>>> 8)
6153 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
6155 offset = offset
>>> 0
6156 if (!noAssert) checkInt(this, value, offset,
2,
0x7fff, -
0x8000)
6157 this[offset] = (value
>>> 8)
6158 this[offset +
1] = (value &
0xff)
6162 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
6164 offset = offset
>>> 0
6165 if (!noAssert) checkInt(this, value, offset,
4,
0x7fffffff, -
0x80000000)
6166 this[offset] = (value &
0xff)
6167 this[offset +
1] = (value
>>> 8)
6168 this[offset +
2] = (value
>>> 16)
6169 this[offset +
3] = (value
>>> 24)
6173 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
6175 offset = offset
>>> 0
6176 if (!noAssert) checkInt(this, value, offset,
4,
0x7fffffff, -
0x80000000)
6177 if (value <
0) value =
0xffffffff + value +
1
6178 this[offset] = (value
>>> 24)
6179 this[offset +
1] = (value
>>> 16)
6180 this[offset +
2] = (value
>>> 8)
6181 this[offset +
3] = (value &
0xff)
6185 function checkIEEE754 (buf, value, offset, ext, max, min) {
6186 if (offset + ext
> buf.length) throw new RangeError('Index out of range')
6187 if (offset <
0) throw new RangeError('Index out of range')
6190 function writeFloat (buf, value, offset, littleEndian, noAssert) {
6192 offset = offset
>>> 0
6194 checkIEEE754(buf, value, offset,
4,
3.4028234663852886e+38, -
3.4028234663852886e+38)
6196 ieee754.write(buf, value, offset, littleEndian,
23,
4)
6200 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
6201 return writeFloat(this, value, offset, true, noAssert)
6204 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
6205 return writeFloat(this, value, offset, false, noAssert)
6208 function writeDouble (buf, value, offset, littleEndian, noAssert) {
6210 offset = offset
>>> 0
6212 checkIEEE754(buf, value, offset,
8,
1.7976931348623157E+308, -
1.7976931348623157E+308)
6214 ieee754.write(buf, value, offset, littleEndian,
52,
8)
6218 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
6219 return writeDouble(this, value, offset, true, noAssert)
6222 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
6223 return writeDouble(this, value, offset, false, noAssert)
6226 // copy(targetBuffer, targetStart=
0, sourceStart=
0, sourceEnd=buffer.length)
6227 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
6228 if (!start) start =
0
6229 if (!end && end !==
0) end = this.length
6230 if (targetStart
>= target.length) targetStart = target.length
6231 if (!targetStart) targetStart =
0
6232 if (end
> 0 && end < start) end = start
6234 // Copy
0 bytes; we're done
6235 if (end === start) return
0
6236 if (target.length ===
0 || this.length ===
0) return
0
6238 // Fatal error conditions
6239 if (targetStart <
0) {
6240 throw new RangeError('targetStart out of bounds')
6242 if (start <
0 || start
>= this.length) throw new RangeError('sourceStart out of bounds')
6243 if (end <
0) throw new RangeError('sourceEnd out of bounds')
6246 if (end
> this.length) end = this.length
6247 if (target.length - targetStart < end - start) {
6248 end = target.length - targetStart + start
6251 var len = end - start
6254 if (this === target && start < targetStart && targetStart < end) {
6255 // descending copy from end
6256 for (i = len -
1; i
>=
0; --i) {
6257 target[i + targetStart] = this[i + start]
6259 } else if (len <
1000) {
6260 // ascending copy from start
6261 for (i =
0; i < len; ++i) {
6262 target[i + targetStart] = this[i + start]
6265 Uint8Array.prototype.set.call(
6267 this.subarray(start, start + len),
6276 // buffer.fill(number[, offset[, end]])
6277 // buffer.fill(buffer[, offset[, end]])
6278 // buffer.fill(string[, offset[, end]][, encoding])
6279 Buffer.prototype.fill = function fill (val, start, end, encoding) {
6280 // Handle string cases:
6281 if (typeof val === 'string') {
6282 if (typeof start === 'string') {
6286 } else if (typeof end === 'string') {
6290 if (val.length ===
1) {
6291 var code = val.charCodeAt(
0)
6296 if (encoding !== undefined && typeof encoding !== 'string') {
6297 throw new TypeError('encoding must be a string')
6299 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
6300 throw new TypeError('Unknown encoding: ' + encoding)
6302 } else if (typeof val === 'number') {
6306 // Invalid ranges are not set to a default, so can range check early.
6307 if (start <
0 || this.length < start || this.length < end) {
6308 throw new RangeError('Out of range index')
6316 end = end === undefined ? this.length : end
>>> 0
6321 if (typeof val === 'number') {
6322 for (i = start; i < end; ++i) {
6326 var bytes = Buffer.isBuffer(val)
6328 : new Buffer(val, encoding)
6329 var len = bytes.length
6330 for (i =
0; i < end - start; ++i) {
6331 this[i + start] = bytes[i % len]
6341 var INVALID_BASE64_RE = /[^+/
0-
9A-Za-z-_]/g
6343 function base64clean (str) {
6344 // Node strips out invalid characters like \n and \t from the string, base64-js does not
6345 str = str.trim().replace(INVALID_BASE64_RE, '')
6346 // Node converts strings with length <
2 to ''
6347 if (str.length <
2) return ''
6348 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
6349 while (str.length %
4 !==
0) {
6355 function toHex (n) {
6356 if (n <
16) return '
0' + n.toString(
16)
6357 return n.toString(
16)
6360 function utf8ToBytes (string, units) {
6361 units = units || Infinity
6363 var length = string.length
6364 var leadSurrogate = null
6367 for (var i =
0; i < length; ++i) {
6368 codePoint = string.charCodeAt(i)
6370 // is surrogate component
6371 if (codePoint
> 0xD7FF && codePoint <
0xE000) {
6372 // last char was a lead
6373 if (!leadSurrogate) {
6375 if (codePoint
> 0xDBFF) {
6377 if ((units -=
3)
> -
1) bytes.push(
0xEF,
0xBF,
0xBD)
6379 } else if (i +
1 === length) {
6381 if ((units -=
3)
> -
1) bytes.push(
0xEF,
0xBF,
0xBD)
6386 leadSurrogate = codePoint
6392 if (codePoint <
0xDC00) {
6393 if ((units -=
3)
> -
1) bytes.push(
0xEF,
0xBF,
0xBD)
6394 leadSurrogate = codePoint
6398 // valid surrogate pair
6399 codePoint = (leadSurrogate -
0xD800 <<
10 | codePoint -
0xDC00) +
0x10000
6400 } else if (leadSurrogate) {
6401 // valid bmp char, but last char was a lead
6402 if ((units -=
3)
> -
1) bytes.push(
0xEF,
0xBF,
0xBD)
6405 leadSurrogate = null
6408 if (codePoint <
0x80) {
6409 if ((units -=
1) <
0) break
6410 bytes.push(codePoint)
6411 } else if (codePoint <
0x800) {
6412 if ((units -=
2) <
0) break
6414 codePoint
>> 0x6 |
0xC0,
6415 codePoint &
0x3F |
0x80
6417 } else if (codePoint <
0x10000) {
6418 if ((units -=
3) <
0) break
6420 codePoint
>> 0xC |
0xE0,
6421 codePoint
>> 0x6 &
0x3F |
0x80,
6422 codePoint &
0x3F |
0x80
6424 } else if (codePoint <
0x110000) {
6425 if ((units -=
4) <
0) break
6427 codePoint
>> 0x12 |
0xF0,
6428 codePoint
>> 0xC &
0x3F |
0x80,
6429 codePoint
>> 0x6 &
0x3F |
0x80,
6430 codePoint &
0x3F |
0x80
6433 throw new Error('Invalid code point')
6440 function asciiToBytes (str) {
6442 for (var i =
0; i < str.length; ++i) {
6443 // Node's code seems to be doing this and not &
0x7F..
6444 byteArray.push(str.charCodeAt(i) &
0xFF)
6449 function utf16leToBytes (str, units) {
6452 for (var i =
0; i < str.length; ++i) {
6453 if ((units -=
2) <
0) break
6455 c = str.charCodeAt(i)
6465 function base64ToBytes (str) {
6466 return base64.toByteArray(base64clean(str))
6469 function blitBuffer (src, dst, offset, length) {
6470 for (var i =
0; i < length; ++i) {
6471 if ((i + offset
>= dst.length) || (i
>= src.length)) break
6472 dst[i + offset] = src[i]
6477 // Node
0.10 supports `ArrayBuffer` but lacks `ArrayBuffer.isView`
6478 function isArrayBufferView (obj) {
6479 return (typeof ArrayBuffer.isView === 'function') && ArrayBuffer.isView(obj)
6482 function numberIsNaN (obj) {
6483 return obj !== obj // eslint-disable-line no-self-compare
6486 },{"base64-js":
1,"ieee754":
3}],
3:[function(require,module,exports){
6487 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
6489 var eLen = nBytes *
8 - mLen -
1
6490 var eMax = (
1 << eLen) -
1
6491 var eBias = eMax
>> 1
6493 var i = isLE ? (nBytes -
1) :
0
6494 var d = isLE ? -
1 :
1
6495 var s = buffer[offset + i]
6499 e = s & ((
1 << (-nBits)) -
1)
6502 for (; nBits
> 0; e = e *
256 + buffer[offset + i], i += d, nBits -=
8) {}
6504 m = e & ((
1 << (-nBits)) -
1)
6507 for (; nBits
> 0; m = m *
256 + buffer[offset + i], i += d, nBits -=
8) {}
6511 } else if (e === eMax) {
6512 return m ? NaN : ((s ? -
1 :
1) * Infinity)
6514 m = m + Math.pow(
2, mLen)
6517 return (s ? -
1 :
1) * m * Math.pow(
2, e - mLen)
6520 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
6522 var eLen = nBytes *
8 - mLen -
1
6523 var eMax = (
1 << eLen) -
1
6524 var eBias = eMax
>> 1
6525 var rt = (mLen ===
23 ? Math.pow(
2, -
24) - Math.pow(
2, -
77) :
0)
6526 var i = isLE ?
0 : (nBytes -
1)
6527 var d = isLE ?
1 : -
1
6528 var s = value <
0 || (value ===
0 &&
1 / value <
0) ?
1 :
0
6530 value = Math.abs(value)
6532 if (isNaN(value) || value === Infinity) {
6533 m = isNaN(value) ?
1 :
0
6536 e = Math.floor(Math.log(value) / Math.LN2)
6537 if (value * (c = Math.pow(
2, -e)) <
1) {
6541 if (e + eBias
>=
1) {
6544 value += rt * Math.pow(
2,
1 - eBias)
6546 if (value * c
>=
2) {
6551 if (e + eBias
>= eMax) {
6554 } else if (e + eBias
>=
1) {
6555 m = (value * c -
1) * Math.pow(
2, mLen)
6558 m = value * Math.pow(
2, eBias -
1) * Math.pow(
2, mLen)
6563 for (; mLen
>=
8; buffer[offset + i] = m &
0xff, i += d, m /=
256, mLen -=
8) {}
6567 for (; eLen
> 0; buffer[offset + i] = e &
0xff, i += d, e /=
256, eLen -=
8) {}
6569 buffer[offset + i - d] |= s *
128
6572 },{}],
4:[function(require,module,exports){
6573 window.basex = require('base-x')
6574 },{
"base-x":
5}],
5:[function(require,module,exports){
6576 // Forked from https://github.com/cryptocoinjs/bs58
6577 // Originally written by Mike Hearn for BitcoinJ
6578 // Copyright (c)
2011 Google Inc
6579 // Ported to JavaScript by Stefan Thomas
6580 // Merged Buffer refactorings from base58-native by Stephen Pair
6581 // Copyright (c)
2013 BitPay Inc
6583 var Buffer = require('safe-buffer').Buffer
6585 module.exports = function base (ALPHABET) {
6586 var ALPHABET_MAP = {}
6587 var BASE = ALPHABET.length
6588 var LEADER = ALPHABET.charAt(
0)
6590 // pre-compute lookup table
6591 for (var z =
0; z < ALPHABET.length; z++) {
6592 var x = ALPHABET.charAt(z)
6594 if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')
6598 function encode (source) {
6599 if (source.length ===
0) return ''
6602 for (var i =
0; i < source.length; ++i) {
6603 for (var j =
0, carry = source[i]; j < digits.length; ++j) {
6604 carry += digits[j] <<
8
6605 digits[j] = carry % BASE
6606 carry = (carry / BASE) |
0
6610 digits.push(carry % BASE)
6611 carry = (carry / BASE) |
0
6617 // deal with leading zeros
6618 for (var k =
0; source[k] ===
0 && k < source.length -
1; ++k) string += ALPHABET[
0]
6619 // convert digits to a string
6620 for (var q = digits.length -
1; q
>=
0; --q) string += ALPHABET[digits[q]]
6625 function decodeUnsafe (string) {
6626 if (string.length ===
0) return Buffer.allocUnsafe(
0)
6629 for (var i =
0; i < string.length; i++) {
6630 var value = ALPHABET_MAP[string[i]]
6631 if (value === undefined) return
6633 for (var j =
0, carry = value; j < bytes.length; ++j) {
6634 carry += bytes[j] * BASE
6635 bytes[j] = carry &
0xff
6640 bytes.push(carry &
0xff)
6645 // deal with leading zeros
6646 for (var k =
0; string[k] === LEADER && k < string.length -
1; ++k) {
6650 return Buffer.from(bytes.reverse())
6653 function decode (string) {
6654 var buffer = decodeUnsafe(string)
6655 if (buffer) return buffer
6657 throw new Error('Non-base' + BASE + ' character')
6662 decodeUnsafe: decodeUnsafe,
6667 },{"safe-buffer":
6}],
6:[function(require,module,exports){
6668 module.exports = require('buffer')
6670 },{"buffer":
2}]},{},[
4])(
4)
6672 <script>(function (root) {
6675 /***** unorm.js *****/
6678 * UnicodeNormalizer
1.0.0
6679 * Copyright (c)
2008 Matsuza
6680 * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
6681 * $Date:
2008-
06-
05 16:
44:
17 +
0200 (Thu,
05 Jun
2008) $
6685 var DEFAULT_FEATURE = [null,
0, {}];
6686 var CACHE_THRESHOLD =
10;
6687 var SBase =
0xAC00, LBase =
0x1100, VBase =
0x1161, TBase =
0x11A7, LCount =
19, VCount =
21, TCount =
28;
6688 var NCount = VCount * TCount; //
588
6689 var SCount = LCount * NCount; //
11172
6691 var UChar = function(cp, feature){
6692 this.codepoint = cp;
6693 this.feature = feature;
6698 var cacheCounter = [];
6699 for (var i =
0; i <=
0xFF; ++i){
6700 cacheCounter[i] =
0;
6703 function fromCache(next, cp, needFeature){
6704 var ret = cache[cp];
6706 ret = next(cp, needFeature);
6707 if(!!ret.feature && ++cacheCounter[(cp
>> 8) &
0xFF]
> CACHE_THRESHOLD){
6714 function fromData(next, cp, needFeature){
6715 var hash = cp &
0xFF00;
6716 var dunit = UChar.udata[hash] || {};
6718 return f ? new UChar(cp, f) : new UChar(cp, DEFAULT_FEATURE);
6720 function fromCpOnly(next, cp, needFeature){
6721 return !!needFeature ? next(cp, needFeature) : new UChar(cp, null);
6723 function fromRuleBasedJamo(next, cp, needFeature){
6725 if(cp < LBase || (LBase + LCount <= cp && cp < SBase) || (SBase + SCount < cp)){
6726 return next(cp, needFeature);
6728 if(LBase <= cp && cp < LBase + LCount){
6730 var base = (cp - LBase) * VCount;
6731 for (j =
0; j < VCount; ++j){
6732 c[VBase + j] = SBase + TCount * (j + base);
6734 return new UChar(cp, [,,c]);
6737 var SIndex = cp - SBase;
6738 var TIndex = SIndex % TCount;
6741 feature[
0] = [SBase + SIndex - TIndex, TBase + TIndex];
6743 feature[
0] = [LBase + Math.floor(SIndex / NCount), VBase + Math.floor((SIndex % NCount) / TCount)];
6745 for (j =
1; j < TCount; ++j){
6746 feature[
2][TBase + j] = cp + j;
6749 return new UChar(cp, feature);
6751 function fromCpFilter(next, cp, needFeature){
6752 return cp <
60 ||
13311 < cp && cp <
42607 ? new UChar(cp, DEFAULT_FEATURE) : next(cp, needFeature);
6755 var strategies = [fromCpFilter, fromCache, fromCpOnly, fromRuleBasedJamo, fromData];
6757 UChar.fromCharCode = strategies.reduceRight(function (next, strategy) {
6758 return function (cp, needFeature) {
6759 return strategy(next, cp, needFeature);
6763 UChar.isHighSurrogate = function(cp){
6764 return cp
>=
0xD800 && cp <=
0xDBFF;
6766 UChar.isLowSurrogate = function(cp){
6767 return cp
>=
0xDC00 && cp <=
0xDFFF;
6770 UChar.prototype.prepFeature = function(){
6772 this.feature = UChar.fromCharCode(this.codepoint, true).feature;
6776 UChar.prototype.toString = function(){
6777 if(this.codepoint <
0x10000){
6778 return String.fromCharCode(this.codepoint);
6780 var x = this.codepoint -
0x10000;
6781 return String.fromCharCode(Math.floor(x /
0x400) +
0xD800, x %
0x400 +
0xDC00);
6785 UChar.prototype.getDecomp = function(){
6787 return this.feature[
0] || null;
6790 UChar.prototype.isCompatibility = function(){
6792 return !!this.feature[
1] && (this.feature[
1] & (
1 <<
8));
6794 UChar.prototype.isExclude = function(){
6796 return !!this.feature[
1] && (this.feature[
1] & (
1 <<
9));
6798 UChar.prototype.getCanonicalClass = function(){
6800 return !!this.feature[
1] ? (this.feature[
1] &
0xff) :
0;
6802 UChar.prototype.getComposite = function(following){
6804 if(!this.feature[
2]){
6807 var cp = this.feature[
2][following.codepoint];
6808 return cp ? UChar.fromCharCode(cp) : null;
6811 var UCharIterator = function(str){
6815 UCharIterator.prototype.next = function(){
6816 if(!!this.str && this.cursor < this.str.length){
6817 var cp = this.str.charCodeAt(this.cursor++);
6819 if(UChar.isHighSurrogate(cp) && this.cursor < this.str.length && UChar.isLowSurrogate((d = this.str.charCodeAt(this.cursor)))){
6820 cp = (cp -
0xD800) *
0x400 + (d -
0xDC00) +
0x10000;
6823 return UChar.fromCharCode(cp);
6830 var RecursDecompIterator = function(it, cano){
6832 this.canonical = cano;
6836 RecursDecompIterator.prototype.next = function(){
6837 function recursiveDecomp(cano, uchar){
6838 var decomp = uchar.getDecomp();
6839 if(!!decomp && !(cano && uchar.isCompatibility())){
6841 for(var i =
0; i < decomp.length; ++i){
6842 var a = recursiveDecomp(cano, UChar.fromCharCode(decomp[i]));
6843 ret = ret.concat(a);
6850 if(this.resBuf.length ===
0){
6851 var uchar = this.it.next();
6855 this.resBuf = recursiveDecomp(this.canonical, uchar);
6857 return this.resBuf.shift();
6860 var DecompIterator = function(it){
6865 DecompIterator.prototype.next = function(){
6867 if(this.resBuf.length ===
0){
6869 var uchar = this.it.next();
6873 cc = uchar.getCanonicalClass();
6874 var inspt = this.resBuf.length;
6876 for(; inspt
> 0; --inspt){
6877 var uchar2 = this.resBuf[inspt -
1];
6878 var cc2 = uchar2.getCanonicalClass();
6884 this.resBuf.splice(inspt,
0, uchar);
6887 return this.resBuf.shift();
6890 var CompIterator = function(it){
6894 this.lastClass = null;
6897 CompIterator.prototype.next = function(){
6898 while(this.resBuf.length ===
0){
6899 var uchar = this.it.next();
6901 this.resBuf = this.procBuf;
6905 if(this.procBuf.length ===
0){
6906 this.lastClass = uchar.getCanonicalClass();
6907 this.procBuf.push(uchar);
6909 var starter = this.procBuf[
0];
6910 var composite = starter.getComposite(uchar);
6911 var cc = uchar.getCanonicalClass();
6912 if(!!composite && (this.lastClass < cc || this.lastClass ===
0)){
6913 this.procBuf[
0] = composite;
6916 this.resBuf = this.procBuf;
6919 this.lastClass = cc;
6920 this.procBuf.push(uchar);
6924 return this.resBuf.shift();
6927 var createIterator = function(mode, str){
6930 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true));
6932 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false));
6934 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true)));
6936 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false)));
6938 throw mode +
" is invalid";
6940 var normalize = function(mode, str){
6941 var it = createIterator(mode, str);
6944 while(!!(uchar = it.next())){
6945 ret += uchar.toString();
6952 return normalize(
"NFD", str);
6956 return normalize(
"NFKD", str);
6960 return normalize(
"NFC", str);
6964 return normalize(
"NFKC", str);
6969 0:{
60:[,,{
824:
8814}],
61:[,,{
824:
8800}],
62:[,,{
824:
8815}],
65:[,,{
768:
192,
769:
193,
770:
194,
771:
195,
772:
256,
774:
258,
775:
550,
776:
196,
777:
7842,
778:
197,
780:
461,
783:
512,
785:
514,
803:
7840,
805:
7680,
808:
260}],
66:[,,{
775:
7682,
803:
7684,
817:
7686}],
67:[,,{
769:
262,
770:
264,
775:
266,
780:
268,
807:
199}],
68:[,,{
775:
7690,
780:
270,
803:
7692,
807:
7696,
813:
7698,
817:
7694}],
69:[,,{
768:
200,
769:
201,
770:
202,
771:
7868,
772:
274,
774:
276,
775:
278,
776:
203,
777:
7866,
780:
282,
783:
516,
785:
518,
803:
7864,
807:
552,
808:
280,
813:
7704,
816:
7706}],
70:[,,{
775:
7710}],
71:[,,{
769:
500,
770:
284,
772:
7712,
774:
286,
775:
288,
780:
486,
807:
290}],
72:[,,{
770:
292,
775:
7714,
776:
7718,
780:
542,
803:
7716,
807:
7720,
814:
7722}],
73:[,,{
768:
204,
769:
205,
770:
206,
771:
296,
772:
298,
774:
300,
775:
304,
776:
207,
777:
7880,
780:
463,
783:
520,
785:
522,
803:
7882,
808:
302,
816:
7724}],
74:[,,{
770:
308}],
75:[,,{
769:
7728,
780:
488,
803:
7730,
807:
310,
817:
7732}],
76:[,,{
769:
313,
780:
317,
803:
7734,
807:
315,
813:
7740,
817:
7738}],
77:[,,{
769:
7742,
775:
7744,
803:
7746}],
78:[,,{
768:
504,
769:
323,
771:
209,
775:
7748,
780:
327,
803:
7750,
807:
325,
813:
7754,
817:
7752}],
79:[,,{
768:
210,
769:
211,
770:
212,
771:
213,
772:
332,
774:
334,
775:
558,
776:
214,
777:
7886,
779:
336,
780:
465,
783:
524,
785:
526,
795:
416,
803:
7884,
808:
490}],
80:[,,{
769:
7764,
775:
7766}],
82:[,,{
769:
340,
775:
7768,
780:
344,
783:
528,
785:
530,
803:
7770,
807:
342,
817:
7774}],
83:[,,{
769:
346,
770:
348,
775:
7776,
780:
352,
803:
7778,
806:
536,
807:
350}],
84:[,,{
775:
7786,
780:
356,
803:
7788,
806:
538,
807:
354,
813:
7792,
817:
7790}],
85:[,,{
768:
217,
769:
218,
770:
219,
771:
360,
772:
362,
774:
364,
776:
220,
777:
7910,
778:
366,
779:
368,
780:
467,
783:
532,
785:
534,
795:
431,
803:
7908,
804:
7794,
808:
370,
813:
7798,
816:
7796}],
86:[,,{
771:
7804,
803:
7806}],
87:[,,{
768:
7808,
769:
7810,
770:
372,
775:
7814,
776:
7812,
803:
7816}],
88:[,,{
775:
7818,
776:
7820}],
89:[,,{
768:
7922,
769:
221,
770:
374,
771:
7928,
772:
562,
775:
7822,
776:
376,
777:
7926,
803:
7924}],
90:[,,{
769:
377,
770:
7824,
775:
379,
780:
381,
803:
7826,
817:
7828}],
97:[,,{
768:
224,
769:
225,
770:
226,
771:
227,
772:
257,
774:
259,
775:
551,
776:
228,
777:
7843,
778:
229,
780:
462,
783:
513,
785:
515,
803:
7841,
805:
7681,
808:
261}],
98:[,,{
775:
7683,
803:
7685,
817:
7687}],
99:[,,{
769:
263,
770:
265,
775:
267,
780:
269,
807:
231}],
100:[,,{
775:
7691,
780:
271,
803:
7693,
807:
7697,
813:
7699,
817:
7695}],
101:[,,{
768:
232,
769:
233,
770:
234,
771:
7869,
772:
275,
774:
277,
775:
279,
776:
235,
777:
7867,
780:
283,
783:
517,
785:
519,
803:
7865,
807:
553,
808:
281,
813:
7705,
816:
7707}],
102:[,,{
775:
7711}],
103:[,,{
769:
501,
770:
285,
772:
7713,
774:
287,
775:
289,
780:
487,
807:
291}],
104:[,,{
770:
293,
775:
7715,
776:
7719,
780:
543,
803:
7717,
807:
7721,
814:
7723,
817:
7830}],
105:[,,{
768:
236,
769:
237,
770:
238,
771:
297,
772:
299,
774:
301,
776:
239,
777:
7881,
780:
464,
783:
521,
785:
523,
803:
7883,
808:
303,
816:
7725}],
106:[,,{
770:
309,
780:
496}],
107:[,,{
769:
7729,
780:
489,
803:
7731,
807:
311,
817:
7733}],
108:[,,{
769:
314,
780:
318,
803:
7735,
807:
316,
813:
7741,
817:
7739}],
109:[,,{
769:
7743,
775:
7745,
803:
7747}],
110:[,,{
768:
505,
769:
324,
771:
241,
775:
7749,
780:
328,
803:
7751,
807:
326,
813:
7755,
817:
7753}],
111:[,,{
768:
242,
769:
243,
770:
244,
771:
245,
772:
333,
774:
335,
775:
559,
776:
246,
777:
7887,
779:
337,
780:
466,
783:
525,
785:
527,
795:
417,
803:
7885,
808:
491}],
112:[,,{
769:
7765,
775:
7767}],
114:[,,{
769:
341,
775:
7769,
780:
345,
783:
529,
785:
531,
803:
7771,
807:
343,
817:
7775}],
115:[,,{
769:
347,
770:
349,
775:
7777,
780:
353,
803:
7779,
806:
537,
807:
351}],
116:[,,{
775:
7787,
776:
7831,
780:
357,
803:
7789,
806:
539,
807:
355,
813:
7793,
817:
7791}],
117:[,,{
768:
249,
769:
250,
770:
251,
771:
361,
772:
363,
774:
365,
776:
252,
777:
7911,
778:
367,
779:
369,
780:
468,
783:
533,
785:
535,
795:
432,
803:
7909,
804:
7795,
808:
371,
813:
7799,
816:
7797}],
118:[,,{
771:
7805,
803:
7807}],
119:[,,{
768:
7809,
769:
7811,
770:
373,
775:
7815,
776:
7813,
778:
7832,
803:
7817}],
120:[,,{
775:
7819,
776:
7821}],
121:[,,{
768:
7923,
769:
253,
770:
375,
771:
7929,
772:
563,
775:
7823,
776:
255,
777:
7927,
778:
7833,
803:
7925}],
122:[,,{
769:
378,
770:
7825,
775:
380,
780:
382,
803:
7827,
817:
7829}],
160:[[
32],
256],
168:[[
32,
776],
256,{
768:
8173,
769:
901,
834:
8129}],
170:[[
97],
256],
175:[[
32,
772],
256],
178:[[
50],
256],
179:[[
51],
256],
180:[[
32,
769],
256],
181:[[
956],
256],
184:[[
32,
807],
256],
185:[[
49],
256],
186:[[
111],
256],
188:[[
49,
8260,
52],
256],
189:[[
49,
8260,
50],
256],
190:[[
51,
8260,
52],
256],
192:[[
65,
768]],
193:[[
65,
769]],
194:[[
65,
770],,{
768:
7846,
769:
7844,
771:
7850,
777:
7848}],
195:[[
65,
771]],
196:[[
65,
776],,{
772:
478}],
197:[[
65,
778],,{
769:
506}],
198:[,,{
769:
508,
772:
482}],
199:[[
67,
807],,{
769:
7688}],
200:[[
69,
768]],
201:[[
69,
769]],
202:[[
69,
770],,{
768:
7872,
769:
7870,
771:
7876,
777:
7874}],
203:[[
69,
776]],
204:[[
73,
768]],
205:[[
73,
769]],
206:[[
73,
770]],
207:[[
73,
776],,{
769:
7726}],
209:[[
78,
771]],
210:[[
79,
768]],
211:[[
79,
769]],
212:[[
79,
770],,{
768:
7890,
769:
7888,
771:
7894,
777:
7892}],
213:[[
79,
771],,{
769:
7756,
772:
556,
776:
7758}],
214:[[
79,
776],,{
772:
554}],
216:[,,{
769:
510}],
217:[[
85,
768]],
218:[[
85,
769]],
219:[[
85,
770]],
220:[[
85,
776],,{
768:
475,
769:
471,
772:
469,
780:
473}],
221:[[
89,
769]],
224:[[
97,
768]],
225:[[
97,
769]],
226:[[
97,
770],,{
768:
7847,
769:
7845,
771:
7851,
777:
7849}],
227:[[
97,
771]],
228:[[
97,
776],,{
772:
479}],
229:[[
97,
778],,{
769:
507}],
230:[,,{
769:
509,
772:
483}],
231:[[
99,
807],,{
769:
7689}],
232:[[
101,
768]],
233:[[
101,
769]],
234:[[
101,
770],,{
768:
7873,
769:
7871,
771:
7877,
777:
7875}],
235:[[
101,
776]],
236:[[
105,
768]],
237:[[
105,
769]],
238:[[
105,
770]],
239:[[
105,
776],,{
769:
7727}],
241:[[
110,
771]],
242:[[
111,
768]],
243:[[
111,
769]],
244:[[
111,
770],,{
768:
7891,
769:
7889,
771:
7895,
777:
7893}],
245:[[
111,
771],,{
769:
7757,
772:
557,
776:
7759}],
246:[[
111,
776],,{
772:
555}],
248:[,,{
769:
511}],
249:[[
117,
768]],
250:[[
117,
769]],
251:[[
117,
770]],
252:[[
117,
776],,{
768:
476,
769:
472,
772:
470,
780:
474}],
253:[[
121,
769]],
255:[[
121,
776]]},
6970 256:{
256:[[
65,
772]],
257:[[
97,
772]],
258:[[
65,
774],,{
768:
7856,
769:
7854,
771:
7860,
777:
7858}],
259:[[
97,
774],,{
768:
7857,
769:
7855,
771:
7861,
777:
7859}],
260:[[
65,
808]],
261:[[
97,
808]],
262:[[
67,
769]],
263:[[
99,
769]],
264:[[
67,
770]],
265:[[
99,
770]],
266:[[
67,
775]],
267:[[
99,
775]],
268:[[
67,
780]],
269:[[
99,
780]],
270:[[
68,
780]],
271:[[
100,
780]],
274:[[
69,
772],,{
768:
7700,
769:
7702}],
275:[[
101,
772],,{
768:
7701,
769:
7703}],
276:[[
69,
774]],
277:[[
101,
774]],
278:[[
69,
775]],
279:[[
101,
775]],
280:[[
69,
808]],
281:[[
101,
808]],
282:[[
69,
780]],
283:[[
101,
780]],
284:[[
71,
770]],
285:[[
103,
770]],
286:[[
71,
774]],
287:[[
103,
774]],
288:[[
71,
775]],
289:[[
103,
775]],
290:[[
71,
807]],
291:[[
103,
807]],
292:[[
72,
770]],
293:[[
104,
770]],
296:[[
73,
771]],
297:[[
105,
771]],
298:[[
73,
772]],
299:[[
105,
772]],
300:[[
73,
774]],
301:[[
105,
774]],
302:[[
73,
808]],
303:[[
105,
808]],
304:[[
73,
775]],
306:[[
73,
74],
256],
307:[[
105,
106],
256],
308:[[
74,
770]],
309:[[
106,
770]],
310:[[
75,
807]],
311:[[
107,
807]],
313:[[
76,
769]],
314:[[
108,
769]],
315:[[
76,
807]],
316:[[
108,
807]],
317:[[
76,
780]],
318:[[
108,
780]],
319:[[
76,
183],
256],
320:[[
108,
183],
256],
323:[[
78,
769]],
324:[[
110,
769]],
325:[[
78,
807]],
326:[[
110,
807]],
327:[[
78,
780]],
328:[[
110,
780]],
329:[[
700,
110],
256],
332:[[
79,
772],,{
768:
7760,
769:
7762}],
333:[[
111,
772],,{
768:
7761,
769:
7763}],
334:[[
79,
774]],
335:[[
111,
774]],
336:[[
79,
779]],
337:[[
111,
779]],
340:[[
82,
769]],
341:[[
114,
769]],
342:[[
82,
807]],
343:[[
114,
807]],
344:[[
82,
780]],
345:[[
114,
780]],
346:[[
83,
769],,{
775:
7780}],
347:[[
115,
769],,{
775:
7781}],
348:[[
83,
770]],
349:[[
115,
770]],
350:[[
83,
807]],
351:[[
115,
807]],
352:[[
83,
780],,{
775:
7782}],
353:[[
115,
780],,{
775:
7783}],
354:[[
84,
807]],
355:[[
116,
807]],
356:[[
84,
780]],
357:[[
116,
780]],
360:[[
85,
771],,{
769:
7800}],
361:[[
117,
771],,{
769:
7801}],
362:[[
85,
772],,{
776:
7802}],
363:[[
117,
772],,{
776:
7803}],
364:[[
85,
774]],
365:[[
117,
774]],
366:[[
85,
778]],
367:[[
117,
778]],
368:[[
85,
779]],
369:[[
117,
779]],
370:[[
85,
808]],
371:[[
117,
808]],
372:[[
87,
770]],
373:[[
119,
770]],
374:[[
89,
770]],
375:[[
121,
770]],
376:[[
89,
776]],
377:[[
90,
769]],
378:[[
122,
769]],
379:[[
90,
775]],
380:[[
122,
775]],
381:[[
90,
780]],
382:[[
122,
780]],
383:[[
115],
256,{
775:
7835}],
416:[[
79,
795],,{
768:
7900,
769:
7898,
771:
7904,
777:
7902,
803:
7906}],
417:[[
111,
795],,{
768:
7901,
769:
7899,
771:
7905,
777:
7903,
803:
7907}],
431:[[
85,
795],,{
768:
7914,
769:
7912,
771:
7918,
777:
7916,
803:
7920}],
432:[[
117,
795],,{
768:
7915,
769:
7913,
771:
7919,
777:
7917,
803:
7921}],
439:[,,{
780:
494}],
452:[[
68,
381],
256],
453:[[
68,
382],
256],
454:[[
100,
382],
256],
455:[[
76,
74],
256],
456:[[
76,
106],
256],
457:[[
108,
106],
256],
458:[[
78,
74],
256],
459:[[
78,
106],
256],
460:[[
110,
106],
256],
461:[[
65,
780]],
462:[[
97,
780]],
463:[[
73,
780]],
464:[[
105,
780]],
465:[[
79,
780]],
466:[[
111,
780]],
467:[[
85,
780]],
468:[[
117,
780]],
469:[[
220,
772]],
470:[[
252,
772]],
471:[[
220,
769]],
472:[[
252,
769]],
473:[[
220,
780]],
474:[[
252,
780]],
475:[[
220,
768]],
476:[[
252,
768]],
478:[[
196,
772]],
479:[[
228,
772]],
480:[[
550,
772]],
481:[[
551,
772]],
482:[[
198,
772]],
483:[[
230,
772]],
486:[[
71,
780]],
487:[[
103,
780]],
488:[[
75,
780]],
489:[[
107,
780]],
490:[[
79,
808],,{
772:
492}],
491:[[
111,
808],,{
772:
493}],
492:[[
490,
772]],
493:[[
491,
772]],
494:[[
439,
780]],
495:[[
658,
780]],
496:[[
106,
780]],
497:[[
68,
90],
256],
498:[[
68,
122],
256],
499:[[
100,
122],
256],
500:[[
71,
769]],
501:[[
103,
769]],
504:[[
78,
768]],
505:[[
110,
768]],
506:[[
197,
769]],
507:[[
229,
769]],
508:[[
198,
769]],
509:[[
230,
769]],
510:[[
216,
769]],
511:[[
248,
769]],
66045:[,
220]},
6971 512:{
512:[[
65,
783]],
513:[[
97,
783]],
514:[[
65,
785]],
515:[[
97,
785]],
516:[[
69,
783]],
517:[[
101,
783]],
518:[[
69,
785]],
519:[[
101,
785]],
520:[[
73,
783]],
521:[[
105,
783]],
522:[[
73,
785]],
523:[[
105,
785]],
524:[[
79,
783]],
525:[[
111,
783]],
526:[[
79,
785]],
527:[[
111,
785]],
528:[[
82,
783]],
529:[[
114,
783]],
530:[[
82,
785]],
531:[[
114,
785]],
532:[[
85,
783]],
533:[[
117,
783]],
534:[[
85,
785]],
535:[[
117,
785]],
536:[[
83,
806]],
537:[[
115,
806]],
538:[[
84,
806]],
539:[[
116,
806]],
542:[[
72,
780]],
543:[[
104,
780]],
550:[[
65,
775],,{
772:
480}],
551:[[
97,
775],,{
772:
481}],
552:[[
69,
807],,{
774:
7708}],
553:[[
101,
807],,{
774:
7709}],
554:[[
214,
772]],
555:[[
246,
772]],
556:[[
213,
772]],
557:[[
245,
772]],
558:[[
79,
775],,{
772:
560}],
559:[[
111,
775],,{
772:
561}],
560:[[
558,
772]],
561:[[
559,
772]],
562:[[
89,
772]],
563:[[
121,
772]],
658:[,,{
780:
495}],
688:[[
104],
256],
689:[[
614],
256],
690:[[
106],
256],
691:[[
114],
256],
692:[[
633],
256],
693:[[
635],
256],
694:[[
641],
256],
695:[[
119],
256],
696:[[
121],
256],
728:[[
32,
774],
256],
729:[[
32,
775],
256],
730:[[
32,
778],
256],
731:[[
32,
808],
256],
732:[[
32,
771],
256],
733:[[
32,
779],
256],
736:[[
611],
256],
737:[[
108],
256],
738:[[
115],
256],
739:[[
120],
256],
740:[[
661],
256],
66272:[,
220]},
6972 768:{
768:[,
230],
769:[,
230],
770:[,
230],
771:[,
230],
772:[,
230],
773:[,
230],
774:[,
230],
775:[,
230],
776:[,
230,{
769:
836}],
777:[,
230],
778:[,
230],
779:[,
230],
780:[,
230],
781:[,
230],
782:[,
230],
783:[,
230],
784:[,
230],
785:[,
230],
786:[,
230],
787:[,
230],
788:[,
230],
789:[,
232],
790:[,
220],
791:[,
220],
792:[,
220],
793:[,
220],
794:[,
232],
795:[,
216],
796:[,
220],
797:[,
220],
798:[,
220],
799:[,
220],
800:[,
220],
801:[,
202],
802:[,
202],
803:[,
220],
804:[,
220],
805:[,
220],
806:[,
220],
807:[,
202],
808:[,
202],
809:[,
220],
810:[,
220],
811:[,
220],
812:[,
220],
813:[,
220],
814:[,
220],
815:[,
220],
816:[,
220],
817:[,
220],
818:[,
220],
819:[,
220],
820:[,
1],
821:[,
1],
822:[,
1],
823:[,
1],
824:[,
1],
825:[,
220],
826:[,
220],
827:[,
220],
828:[,
220],
829:[,
230],
830:[,
230],
831:[,
230],
832:[[
768],
230],
833:[[
769],
230],
834:[,
230],
835:[[
787],
230],
836:[[
776,
769],
230],
837:[,
240],
838:[,
230],
839:[,
220],
840:[,
220],
841:[,
220],
842:[,
230],
843:[,
230],
844:[,
230],
845:[,
220],
846:[,
220],
848:[,
230],
849:[,
230],
850:[,
230],
851:[,
220],
852:[,
220],
853:[,
220],
854:[,
220],
855:[,
230],
856:[,
232],
857:[,
220],
858:[,
220],
859:[,
230],
860:[,
233],
861:[,
234],
862:[,
234],
863:[,
233],
864:[,
234],
865:[,
234],
866:[,
233],
867:[,
230],
868:[,
230],
869:[,
230],
870:[,
230],
871:[,
230],
872:[,
230],
873:[,
230],
874:[,
230],
875:[,
230],
876:[,
230],
877:[,
230],
878:[,
230],
879:[,
230],
884:[[
697]],
890:[[
32,
837],
256],
894:[[
59]],
900:[[
32,
769],
256],
901:[[
168,
769]],
902:[[
913,
769]],
903:[[
183]],
904:[[
917,
769]],
905:[[
919,
769]],
906:[[
921,
769]],
908:[[
927,
769]],
910:[[
933,
769]],
911:[[
937,
769]],
912:[[
970,
769]],
913:[,,{
768:
8122,
769:
902,
772:
8121,
774:
8120,
787:
7944,
788:
7945,
837:
8124}],
917:[,,{
768:
8136,
769:
904,
787:
7960,
788:
7961}],
919:[,,{
768:
8138,
769:
905,
787:
7976,
788:
7977,
837:
8140}],
921:[,,{
768:
8154,
769:
906,
772:
8153,
774:
8152,
776:
938,
787:
7992,
788:
7993}],
927:[,,{
768:
8184,
769:
908,
787:
8008,
788:
8009}],
929:[,,{
788:
8172}],
933:[,,{
768:
8170,
769:
910,
772:
8169,
774:
8168,
776:
939,
788:
8025}],
937:[,,{
768:
8186,
769:
911,
787:
8040,
788:
8041,
837:
8188}],
938:[[
921,
776]],
939:[[
933,
776]],
940:[[
945,
769],,{
837:
8116}],
941:[[
949,
769]],
942:[[
951,
769],,{
837:
8132}],
943:[[
953,
769]],
944:[[
971,
769]],
945:[,,{
768:
8048,
769:
940,
772:
8113,
774:
8112,
787:
7936,
788:
7937,
834:
8118,
837:
8115}],
949:[,,{
768:
8050,
769:
941,
787:
7952,
788:
7953}],
951:[,,{
768:
8052,
769:
942,
787:
7968,
788:
7969,
834:
8134,
837:
8131}],
953:[,,{
768:
8054,
769:
943,
772:
8145,
774:
8144,
776:
970,
787:
7984,
788:
7985,
834:
8150}],
959:[,,{
768:
8056,
769:
972,
787:
8000,
788:
8001}],
961:[,,{
787:
8164,
788:
8165}],
965:[,,{
768:
8058,
769:
973,
772:
8161,
774:
8160,
776:
971,
787:
8016,
788:
8017,
834:
8166}],
969:[,,{
768:
8060,
769:
974,
787:
8032,
788:
8033,
834:
8182,
837:
8179}],
970:[[
953,
776],,{
768:
8146,
769:
912,
834:
8151}],
971:[[
965,
776],,{
768:
8162,
769:
944,
834:
8167}],
972:[[
959,
769]],
973:[[
965,
769]],
974:[[
969,
769],,{
837:
8180}],
976:[[
946],
256],
977:[[
952],
256],
978:[[
933],
256,{
769:
979,
776:
980}],
979:[[
978,
769]],
980:[[
978,
776]],
981:[[
966],
256],
982:[[
960],
256],
1008:[[
954],
256],
1009:[[
961],
256],
1010:[[
962],
256],
1012:[[
920],
256],
1013:[[
949],
256],
1017:[[
931],
256],
66422:[,
230],
66423:[,
230],
66424:[,
230],
66425:[,
230],
66426:[,
230]},
6973 1024:{
1024:[[
1045,
768]],
1025:[[
1045,
776]],
1027:[[
1043,
769]],
1030:[,,{
776:
1031}],
1031:[[
1030,
776]],
1036:[[
1050,
769]],
1037:[[
1048,
768]],
1038:[[
1059,
774]],
1040:[,,{
774:
1232,
776:
1234}],
1043:[,,{
769:
1027}],
1045:[,,{
768:
1024,
774:
1238,
776:
1025}],
1046:[,,{
774:
1217,
776:
1244}],
1047:[,,{
776:
1246}],
1048:[,,{
768:
1037,
772:
1250,
774:
1049,
776:
1252}],
1049:[[
1048,
774]],
1050:[,,{
769:
1036}],
1054:[,,{
776:
1254}],
1059:[,,{
772:
1262,
774:
1038,
776:
1264,
779:
1266}],
1063:[,,{
776:
1268}],
1067:[,,{
776:
1272}],
1069:[,,{
776:
1260}],
1072:[,,{
774:
1233,
776:
1235}],
1075:[,,{
769:
1107}],
1077:[,,{
768:
1104,
774:
1239,
776:
1105}],
1078:[,,{
774:
1218,
776:
1245}],
1079:[,,{
776:
1247}],
1080:[,,{
768:
1117,
772:
1251,
774:
1081,
776:
1253}],
1081:[[
1080,
774]],
1082:[,,{
769:
1116}],
1086:[,,{
776:
1255}],
1091:[,,{
772:
1263,
774:
1118,
776:
1265,
779:
1267}],
1095:[,,{
776:
1269}],
1099:[,,{
776:
1273}],
1101:[,,{
776:
1261}],
1104:[[
1077,
768]],
1105:[[
1077,
776]],
1107:[[
1075,
769]],
1110:[,,{
776:
1111}],
1111:[[
1110,
776]],
1116:[[
1082,
769]],
1117:[[
1080,
768]],
1118:[[
1091,
774]],
1140:[,,{
783:
1142}],
1141:[,,{
783:
1143}],
1142:[[
1140,
783]],
1143:[[
1141,
783]],
1155:[,
230],
1156:[,
230],
1157:[,
230],
1158:[,
230],
1159:[,
230],
1217:[[
1046,
774]],
1218:[[
1078,
774]],
1232:[[
1040,
774]],
1233:[[
1072,
774]],
1234:[[
1040,
776]],
1235:[[
1072,
776]],
1238:[[
1045,
774]],
1239:[[
1077,
774]],
1240:[,,{
776:
1242}],
1241:[,,{
776:
1243}],
1242:[[
1240,
776]],
1243:[[
1241,
776]],
1244:[[
1046,
776]],
1245:[[
1078,
776]],
1246:[[
1047,
776]],
1247:[[
1079,
776]],
1250:[[
1048,
772]],
1251:[[
1080,
772]],
1252:[[
1048,
776]],
1253:[[
1080,
776]],
1254:[[
1054,
776]],
1255:[[
1086,
776]],
1256:[,,{
776:
1258}],
1257:[,,{
776:
1259}],
1258:[[
1256,
776]],
1259:[[
1257,
776]],
1260:[[
1069,
776]],
1261:[[
1101,
776]],
1262:[[
1059,
772]],
1263:[[
1091,
772]],
1264:[[
1059,
776]],
1265:[[
1091,
776]],
1266:[[
1059,
779]],
1267:[[
1091,
779]],
1268:[[
1063,
776]],
1269:[[
1095,
776]],
1272:[[
1067,
776]],
1273:[[
1099,
776]]},
6974 1280:{
1415:[[
1381,
1410],
256],
1425:[,
220],
1426:[,
230],
1427:[,
230],
1428:[,
230],
1429:[,
230],
1430:[,
220],
1431:[,
230],
1432:[,
230],
1433:[,
230],
1434:[,
222],
1435:[,
220],
1436:[,
230],
1437:[,
230],
1438:[,
230],
1439:[,
230],
1440:[,
230],
1441:[,
230],
1442:[,
220],
1443:[,
220],
1444:[,
220],
1445:[,
220],
1446:[,
220],
1447:[,
220],
1448:[,
230],
1449:[,
230],
1450:[,
220],
1451:[,
230],
1452:[,
230],
1453:[,
222],
1454:[,
228],
1455:[,
230],
1456:[,
10],
1457:[,
11],
1458:[,
12],
1459:[,
13],
1460:[,
14],
1461:[,
15],
1462:[,
16],
1463:[,
17],
1464:[,
18],
1465:[,
19],
1466:[,
19],
1467:[,
20],
1468:[,
21],
1469:[,
22],
1471:[,
23],
1473:[,
24],
1474:[,
25],
1476:[,
230],
1477:[,
220],
1479:[,
18]},
6975 1536:{
1552:[,
230],
1553:[,
230],
1554:[,
230],
1555:[,
230],
1556:[,
230],
1557:[,
230],
1558:[,
230],
1559:[,
230],
1560:[,
30],
1561:[,
31],
1562:[,
32],
1570:[[
1575,
1619]],
1571:[[
1575,
1620]],
1572:[[
1608,
1620]],
1573:[[
1575,
1621]],
1574:[[
1610,
1620]],
1575:[,,{
1619:
1570,
1620:
1571,
1621:
1573}],
1608:[,,{
1620:
1572}],
1610:[,,{
1620:
1574}],
1611:[,
27],
1612:[,
28],
1613:[,
29],
1614:[,
30],
1615:[,
31],
1616:[,
32],
1617:[,
33],
1618:[,
34],
1619:[,
230],
1620:[,
230],
1621:[,
220],
1622:[,
220],
1623:[,
230],
1624:[,
230],
1625:[,
230],
1626:[,
230],
1627:[,
230],
1628:[,
220],
1629:[,
230],
1630:[,
230],
1631:[,
220],
1648:[,
35],
1653:[[
1575,
1652],
256],
1654:[[
1608,
1652],
256],
1655:[[
1735,
1652],
256],
1656:[[
1610,
1652],
256],
1728:[[
1749,
1620]],
1729:[,,{
1620:
1730}],
1730:[[
1729,
1620]],
1746:[,,{
1620:
1747}],
1747:[[
1746,
1620]],
1749:[,,{
1620:
1728}],
1750:[,
230],
1751:[,
230],
1752:[,
230],
1753:[,
230],
1754:[,
230],
1755:[,
230],
1756:[,
230],
1759:[,
230],
1760:[,
230],
1761:[,
230],
1762:[,
230],
1763:[,
220],
1764:[,
230],
1767:[,
230],
1768:[,
230],
1770:[,
220],
1771:[,
230],
1772:[,
230],
1773:[,
220]},
6976 1792:{
1809:[,
36],
1840:[,
230],
1841:[,
220],
1842:[,
230],
1843:[,
230],
1844:[,
220],
1845:[,
230],
1846:[,
230],
1847:[,
220],
1848:[,
220],
1849:[,
220],
1850:[,
230],
1851:[,
220],
1852:[,
220],
1853:[,
230],
1854:[,
220],
1855:[,
230],
1856:[,
230],
1857:[,
230],
1858:[,
220],
1859:[,
230],
1860:[,
220],
1861:[,
230],
1862:[,
220],
1863:[,
230],
1864:[,
220],
1865:[,
230],
1866:[,
230],
2027:[,
230],
2028:[,
230],
2029:[,
230],
2030:[,
230],
2031:[,
230],
2032:[,
230],
2033:[,
230],
2034:[,
220],
2035:[,
230]},
6977 2048:{
2070:[,
230],
2071:[,
230],
2072:[,
230],
2073:[,
230],
2075:[,
230],
2076:[,
230],
2077:[,
230],
2078:[,
230],
2079:[,
230],
2080:[,
230],
2081:[,
230],
2082:[,
230],
2083:[,
230],
2085:[,
230],
2086:[,
230],
2087:[,
230],
2089:[,
230],
2090:[,
230],
2091:[,
230],
2092:[,
230],
2093:[,
230],
2137:[,
220],
2138:[,
220],
2139:[,
220],
2276:[,
230],
2277:[,
230],
2278:[,
220],
2279:[,
230],
2280:[,
230],
2281:[,
220],
2282:[,
230],
2283:[,
230],
2284:[,
230],
2285:[,
220],
2286:[,
220],
2287:[,
220],
2288:[,
27],
2289:[,
28],
2290:[,
29],
2291:[,
230],
2292:[,
230],
2293:[,
230],
2294:[,
220],
2295:[,
230],
2296:[,
230],
2297:[,
220],
2298:[,
220],
2299:[,
230],
2300:[,
230],
2301:[,
230],
2302:[,
230],
2303:[,
230]},
6978 2304:{
2344:[,,{
2364:
2345}],
2345:[[
2344,
2364]],
2352:[,,{
2364:
2353}],
2353:[[
2352,
2364]],
2355:[,,{
2364:
2356}],
2356:[[
2355,
2364]],
2364:[,
7],
2381:[,
9],
2385:[,
230],
2386:[,
220],
2387:[,
230],
2388:[,
230],
2392:[[
2325,
2364],
512],
2393:[[
2326,
2364],
512],
2394:[[
2327,
2364],
512],
2395:[[
2332,
2364],
512],
2396:[[
2337,
2364],
512],
2397:[[
2338,
2364],
512],
2398:[[
2347,
2364],
512],
2399:[[
2351,
2364],
512],
2492:[,
7],
2503:[,,{
2494:
2507,
2519:
2508}],
2507:[[
2503,
2494]],
2508:[[
2503,
2519]],
2509:[,
9],
2524:[[
2465,
2492],
512],
2525:[[
2466,
2492],
512],
2527:[[
2479,
2492],
512]},
6979 2560:{
2611:[[
2610,
2620],
512],
2614:[[
2616,
2620],
512],
2620:[,
7],
2637:[,
9],
2649:[[
2582,
2620],
512],
2650:[[
2583,
2620],
512],
2651:[[
2588,
2620],
512],
2654:[[
2603,
2620],
512],
2748:[,
7],
2765:[,
9],
68109:[,
220],
68111:[,
230],
68152:[,
230],
68153:[,
1],
68154:[,
220],
68159:[,
9],
68325:[,
230],
68326:[,
220]},
6980 2816:{
2876:[,
7],
2887:[,,{
2878:
2891,
2902:
2888,
2903:
2892}],
2888:[[
2887,
2902]],
2891:[[
2887,
2878]],
2892:[[
2887,
2903]],
2893:[,
9],
2908:[[
2849,
2876],
512],
2909:[[
2850,
2876],
512],
2962:[,,{
3031:
2964}],
2964:[[
2962,
3031]],
3014:[,,{
3006:
3018,
3031:
3020}],
3015:[,,{
3006:
3019}],
3018:[[
3014,
3006]],
3019:[[
3015,
3006]],
3020:[[
3014,
3031]],
3021:[,
9]},
6981 3072:{
3142:[,,{
3158:
3144}],
3144:[[
3142,
3158]],
3149:[,
9],
3157:[,
84],
3158:[,
91],
3260:[,
7],
3263:[,,{
3285:
3264}],
3264:[[
3263,
3285]],
3270:[,,{
3266:
3274,
3285:
3271,
3286:
3272}],
3271:[[
3270,
3285]],
3272:[[
3270,
3286]],
3274:[[
3270,
3266],,{
3285:
3275}],
3275:[[
3274,
3285]],
3277:[,
9]},
6982 3328:{
3398:[,,{
3390:
3402,
3415:
3404}],
3399:[,,{
3390:
3403}],
3402:[[
3398,
3390]],
3403:[[
3399,
3390]],
3404:[[
3398,
3415]],
3405:[,
9],
3530:[,
9],
3545:[,,{
3530:
3546,
3535:
3548,
3551:
3550}],
3546:[[
3545,
3530]],
3548:[[
3545,
3535],,{
3530:
3549}],
3549:[[
3548,
3530]],
3550:[[
3545,
3551]]},
6983 3584:{
3635:[[
3661,
3634],
256],
3640:[,
103],
3641:[,
103],
3642:[,
9],
3656:[,
107],
3657:[,
107],
3658:[,
107],
3659:[,
107],
3763:[[
3789,
3762],
256],
3768:[,
118],
3769:[,
118],
3784:[,
122],
3785:[,
122],
3786:[,
122],
3787:[,
122],
3804:[[
3755,
3737],
256],
3805:[[
3755,
3745],
256]},
6984 3840:{
3852:[[
3851],
256],
3864:[,
220],
3865:[,
220],
3893:[,
220],
3895:[,
220],
3897:[,
216],
3907:[[
3906,
4023],
512],
3917:[[
3916,
4023],
512],
3922:[[
3921,
4023],
512],
3927:[[
3926,
4023],
512],
3932:[[
3931,
4023],
512],
3945:[[
3904,
4021],
512],
3953:[,
129],
3954:[,
130],
3955:[[
3953,
3954],
512],
3956:[,
132],
3957:[[
3953,
3956],
512],
3958:[[
4018,
3968],
512],
3959:[[
4018,
3969],
256],
3960:[[
4019,
3968],
512],
3961:[[
4019,
3969],
256],
3962:[,
130],
3963:[,
130],
3964:[,
130],
3965:[,
130],
3968:[,
130],
3969:[[
3953,
3968],
512],
3970:[,
230],
3971:[,
230],
3972:[,
9],
3974:[,
230],
3975:[,
230],
3987:[[
3986,
4023],
512],
3997:[[
3996,
4023],
512],
4002:[[
4001,
4023],
512],
4007:[[
4006,
4023],
512],
4012:[[
4011,
4023],
512],
4025:[[
3984,
4021],
512],
4038:[,
220]},
6985 4096:{
4133:[,,{
4142:
4134}],
4134:[[
4133,
4142]],
4151:[,
7],
4153:[,
9],
4154:[,
9],
4237:[,
220],
4348:[[
4316],
256],
69702:[,
9],
69759:[,
9],
69785:[,,{
69818:
69786}],
69786:[[
69785,
69818]],
69787:[,,{
69818:
69788}],
69788:[[
69787,
69818]],
69797:[,,{
69818:
69803}],
69803:[[
69797,
69818]],
69817:[,
9],
69818:[,
7]},
6986 4352:{
69888:[,
230],
69889:[,
230],
69890:[,
230],
69934:[[
69937,
69927]],
69935:[[
69938,
69927]],
69937:[,,{
69927:
69934}],
69938:[,,{
69927:
69935}],
69939:[,
9],
69940:[,
9],
70003:[,
7],
70080:[,
9]},
6987 4608:{
70197:[,
9],
70198:[,
7],
70377:[,
7],
70378:[,
9]},
6988 4864:{
4957:[,
230],
4958:[,
230],
4959:[,
230],
70460:[,
7],
70471:[,,{
70462:
70475,
70487:
70476}],
70475:[[
70471,
70462]],
70476:[[
70471,
70487]],
70477:[,
9],
70502:[,
230],
70503:[,
230],
70504:[,
230],
70505:[,
230],
70506:[,
230],
70507:[,
230],
70508:[,
230],
70512:[,
230],
70513:[,
230],
70514:[,
230],
70515:[,
230],
70516:[,
230]},
6989 5120:{
70841:[,,{
70832:
70844,
70842:
70843,
70845:
70846}],
70843:[[
70841,
70842]],
70844:[[
70841,
70832]],
70846:[[
70841,
70845]],
70850:[,
9],
70851:[,
7]},
6990 5376:{
71096:[,,{
71087:
71098}],
71097:[,,{
71087:
71099}],
71098:[[
71096,
71087]],
71099:[[
71097,
71087]],
71103:[,
9],
71104:[,
7]},
6991 5632:{
71231:[,
9],
71350:[,
9],
71351:[,
7]},
6992 5888:{
5908:[,
9],
5940:[,
9],
6098:[,
9],
6109:[,
230]},
6994 6400:{
6457:[,
222],
6458:[,
230],
6459:[,
220]},
6995 6656:{
6679:[,
230],
6680:[,
220],
6752:[,
9],
6773:[,
230],
6774:[,
230],
6775:[,
230],
6776:[,
230],
6777:[,
230],
6778:[,
230],
6779:[,
230],
6780:[,
230],
6783:[,
220],
6832:[,
230],
6833:[,
230],
6834:[,
230],
6835:[,
230],
6836:[,
230],
6837:[,
220],
6838:[,
220],
6839:[,
220],
6840:[,
220],
6841:[,
220],
6842:[,
220],
6843:[,
230],
6844:[,
230],
6845:[,
220]},
6996 6912:{
6917:[,,{
6965:
6918}],
6918:[[
6917,
6965]],
6919:[,,{
6965:
6920}],
6920:[[
6919,
6965]],
6921:[,,{
6965:
6922}],
6922:[[
6921,
6965]],
6923:[,,{
6965:
6924}],
6924:[[
6923,
6965]],
6925:[,,{
6965:
6926}],
6926:[[
6925,
6965]],
6929:[,,{
6965:
6930}],
6930:[[
6929,
6965]],
6964:[,
7],
6970:[,,{
6965:
6971}],
6971:[[
6970,
6965]],
6972:[,,{
6965:
6973}],
6973:[[
6972,
6965]],
6974:[,,{
6965:
6976}],
6975:[,,{
6965:
6977}],
6976:[[
6974,
6965]],
6977:[[
6975,
6965]],
6978:[,,{
6965:
6979}],
6979:[[
6978,
6965]],
6980:[,
9],
7019:[,
230],
7020:[,
220],
7021:[,
230],
7022:[,
230],
7023:[,
230],
7024:[,
230],
7025:[,
230],
7026:[,
230],
7027:[,
230],
7082:[,
9],
7083:[,
9],
7142:[,
7],
7154:[,
9],
7155:[,
9]},
6997 7168:{
7223:[,
7],
7376:[,
230],
7377:[,
230],
7378:[,
230],
7380:[,
1],
7381:[,
220],
7382:[,
220],
7383:[,
220],
7384:[,
220],
7385:[,
220],
7386:[,
230],
7387:[,
230],
7388:[,
220],
7389:[,
220],
7390:[,
220],
7391:[,
220],
7392:[,
230],
7394:[,
1],
7395:[,
1],
7396:[,
1],
7397:[,
1],
7398:[,
1],
7399:[,
1],
7400:[,
1],
7405:[,
220],
7412:[,
230],
7416:[,
230],
7417:[,
230]},
6998 7424:{
7468:[[
65],
256],
7469:[[
198],
256],
7470:[[
66],
256],
7472:[[
68],
256],
7473:[[
69],
256],
7474:[[
398],
256],
7475:[[
71],
256],
7476:[[
72],
256],
7477:[[
73],
256],
7478:[[
74],
256],
7479:[[
75],
256],
7480:[[
76],
256],
7481:[[
77],
256],
7482:[[
78],
256],
7484:[[
79],
256],
7485:[[
546],
256],
7486:[[
80],
256],
7487:[[
82],
256],
7488:[[
84],
256],
7489:[[
85],
256],
7490:[[
87],
256],
7491:[[
97],
256],
7492:[[
592],
256],
7493:[[
593],
256],
7494:[[
7426],
256],
7495:[[
98],
256],
7496:[[
100],
256],
7497:[[
101],
256],
7498:[[
601],
256],
7499:[[
603],
256],
7500:[[
604],
256],
7501:[[
103],
256],
7503:[[
107],
256],
7504:[[
109],
256],
7505:[[
331],
256],
7506:[[
111],
256],
7507:[[
596],
256],
7508:[[
7446],
256],
7509:[[
7447],
256],
7510:[[
112],
256],
7511:[[
116],
256],
7512:[[
117],
256],
7513:[[
7453],
256],
7514:[[
623],
256],
7515:[[
118],
256],
7516:[[
7461],
256],
7517:[[
946],
256],
7518:[[
947],
256],
7519:[[
948],
256],
7520:[[
966],
256],
7521:[[
967],
256],
7522:[[
105],
256],
7523:[[
114],
256],
7524:[[
117],
256],
7525:[[
118],
256],
7526:[[
946],
256],
7527:[[
947],
256],
7528:[[
961],
256],
7529:[[
966],
256],
7530:[[
967],
256],
7544:[[
1085],
256],
7579:[[
594],
256],
7580:[[
99],
256],
7581:[[
597],
256],
7582:[[
240],
256],
7583:[[
604],
256],
7584:[[
102],
256],
7585:[[
607],
256],
7586:[[
609],
256],
7587:[[
613],
256],
7588:[[
616],
256],
7589:[[
617],
256],
7590:[[
618],
256],
7591:[[
7547],
256],
7592:[[
669],
256],
7593:[[
621],
256],
7594:[[
7557],
256],
7595:[[
671],
256],
7596:[[
625],
256],
7597:[[
624],
256],
7598:[[
626],
256],
7599:[[
627],
256],
7600:[[
628],
256],
7601:[[
629],
256],
7602:[[
632],
256],
7603:[[
642],
256],
7604:[[
643],
256],
7605:[[
427],
256],
7606:[[
649],
256],
7607:[[
650],
256],
7608:[[
7452],
256],
7609:[[
651],
256],
7610:[[
652],
256],
7611:[[
122],
256],
7612:[[
656],
256],
7613:[[
657],
256],
7614:[[
658],
256],
7615:[[
952],
256],
7616:[,
230],
7617:[,
230],
7618:[,
220],
7619:[,
230],
7620:[,
230],
7621:[,
230],
7622:[,
230],
7623:[,
230],
7624:[,
230],
7625:[,
230],
7626:[,
220],
7627:[,
230],
7628:[,
230],
7629:[,
234],
7630:[,
214],
7631:[,
220],
7632:[,
202],
7633:[,
230],
7634:[,
230],
7635:[,
230],
7636:[,
230],
7637:[,
230],
7638:[,
230],
7639:[,
230],
7640:[,
230],
7641:[,
230],
7642:[,
230],
7643:[,
230],
7644:[,
230],
7645:[,
230],
7646:[,
230],
7647:[,
230],
7648:[,
230],
7649:[,
230],
7650:[,
230],
7651:[,
230],
7652:[,
230],
7653:[,
230],
7654:[,
230],
7655:[,
230],
7656:[,
230],
7657:[,
230],
7658:[,
230],
7659:[,
230],
7660:[,
230],
7661:[,
230],
7662:[,
230],
7663:[,
230],
7664:[,
230],
7665:[,
230],
7666:[,
230],
7667:[,
230],
7668:[,
230],
7669:[,
230],
7676:[,
233],
7677:[,
220],
7678:[,
230],
7679:[,
220]},
6999 7680:{
7680:[[
65,
805]],
7681:[[
97,
805]],
7682:[[
66,
775]],
7683:[[
98,
775]],
7684:[[
66,
803]],
7685:[[
98,
803]],
7686:[[
66,
817]],
7687:[[
98,
817]],
7688:[[
199,
769]],
7689:[[
231,
769]],
7690:[[
68,
775]],
7691:[[
100,
775]],
7692:[[
68,
803]],
7693:[[
100,
803]],
7694:[[
68,
817]],
7695:[[
100,
817]],
7696:[[
68,
807]],
7697:[[
100,
807]],
7698:[[
68,
813]],
7699:[[
100,
813]],
7700:[[
274,
768]],
7701:[[
275,
768]],
7702:[[
274,
769]],
7703:[[
275,
769]],
7704:[[
69,
813]],
7705:[[
101,
813]],
7706:[[
69,
816]],
7707:[[
101,
816]],
7708:[[
552,
774]],
7709:[[
553,
774]],
7710:[[
70,
775]],
7711:[[
102,
775]],
7712:[[
71,
772]],
7713:[[
103,
772]],
7714:[[
72,
775]],
7715:[[
104,
775]],
7716:[[
72,
803]],
7717:[[
104,
803]],
7718:[[
72,
776]],
7719:[[
104,
776]],
7720:[[
72,
807]],
7721:[[
104,
807]],
7722:[[
72,
814]],
7723:[[
104,
814]],
7724:[[
73,
816]],
7725:[[
105,
816]],
7726:[[
207,
769]],
7727:[[
239,
769]],
7728:[[
75,
769]],
7729:[[
107,
769]],
7730:[[
75,
803]],
7731:[[
107,
803]],
7732:[[
75,
817]],
7733:[[
107,
817]],
7734:[[
76,
803],,{
772:
7736}],
7735:[[
108,
803],,{
772:
7737}],
7736:[[
7734,
772]],
7737:[[
7735,
772]],
7738:[[
76,
817]],
7739:[[
108,
817]],
7740:[[
76,
813]],
7741:[[
108,
813]],
7742:[[
77,
769]],
7743:[[
109,
769]],
7744:[[
77,
775]],
7745:[[
109,
775]],
7746:[[
77,
803]],
7747:[[
109,
803]],
7748:[[
78,
775]],
7749:[[
110,
775]],
7750:[[
78,
803]],
7751:[[
110,
803]],
7752:[[
78,
817]],
7753:[[
110,
817]],
7754:[[
78,
813]],
7755:[[
110,
813]],
7756:[[
213,
769]],
7757:[[
245,
769]],
7758:[[
213,
776]],
7759:[[
245,
776]],
7760:[[
332,
768]],
7761:[[
333,
768]],
7762:[[
332,
769]],
7763:[[
333,
769]],
7764:[[
80,
769]],
7765:[[
112,
769]],
7766:[[
80,
775]],
7767:[[
112,
775]],
7768:[[
82,
775]],
7769:[[
114,
775]],
7770:[[
82,
803],,{
772:
7772}],
7771:[[
114,
803],,{
772:
7773}],
7772:[[
7770,
772]],
7773:[[
7771,
772]],
7774:[[
82,
817]],
7775:[[
114,
817]],
7776:[[
83,
775]],
7777:[[
115,
775]],
7778:[[
83,
803],,{
775:
7784}],
7779:[[
115,
803],,{
775:
7785}],
7780:[[
346,
775]],
7781:[[
347,
775]],
7782:[[
352,
775]],
7783:[[
353,
775]],
7784:[[
7778,
775]],
7785:[[
7779,
775]],
7786:[[
84,
775]],
7787:[[
116,
775]],
7788:[[
84,
803]],
7789:[[
116,
803]],
7790:[[
84,
817]],
7791:[[
116,
817]],
7792:[[
84,
813]],
7793:[[
116,
813]],
7794:[[
85,
804]],
7795:[[
117,
804]],
7796:[[
85,
816]],
7797:[[
117,
816]],
7798:[[
85,
813]],
7799:[[
117,
813]],
7800:[[
360,
769]],
7801:[[
361,
769]],
7802:[[
362,
776]],
7803:[[
363,
776]],
7804:[[
86,
771]],
7805:[[
118,
771]],
7806:[[
86,
803]],
7807:[[
118,
803]],
7808:[[
87,
768]],
7809:[[
119,
768]],
7810:[[
87,
769]],
7811:[[
119,
769]],
7812:[[
87,
776]],
7813:[[
119,
776]],
7814:[[
87,
775]],
7815:[[
119,
775]],
7816:[[
87,
803]],
7817:[[
119,
803]],
7818:[[
88,
775]],
7819:[[
120,
775]],
7820:[[
88,
776]],
7821:[[
120,
776]],
7822:[[
89,
775]],
7823:[[
121,
775]],
7824:[[
90,
770]],
7825:[[
122,
770]],
7826:[[
90,
803]],
7827:[[
122,
803]],
7828:[[
90,
817]],
7829:[[
122,
817]],
7830:[[
104,
817]],
7831:[[
116,
776]],
7832:[[
119,
778]],
7833:[[
121,
778]],
7834:[[
97,
702],
256],
7835:[[
383,
775]],
7840:[[
65,
803],,{
770:
7852,
774:
7862}],
7841:[[
97,
803],,{
770:
7853,
774:
7863}],
7842:[[
65,
777]],
7843:[[
97,
777]],
7844:[[
194,
769]],
7845:[[
226,
769]],
7846:[[
194,
768]],
7847:[[
226,
768]],
7848:[[
194,
777]],
7849:[[
226,
777]],
7850:[[
194,
771]],
7851:[[
226,
771]],
7852:[[
7840,
770]],
7853:[[
7841,
770]],
7854:[[
258,
769]],
7855:[[
259,
769]],
7856:[[
258,
768]],
7857:[[
259,
768]],
7858:[[
258,
777]],
7859:[[
259,
777]],
7860:[[
258,
771]],
7861:[[
259,
771]],
7862:[[
7840,
774]],
7863:[[
7841,
774]],
7864:[[
69,
803],,{
770:
7878}],
7865:[[
101,
803],,{
770:
7879}],
7866:[[
69,
777]],
7867:[[
101,
777]],
7868:[[
69,
771]],
7869:[[
101,
771]],
7870:[[
202,
769]],
7871:[[
234,
769]],
7872:[[
202,
768]],
7873:[[
234,
768]],
7874:[[
202,
777]],
7875:[[
234,
777]],
7876:[[
202,
771]],
7877:[[
234,
771]],
7878:[[
7864,
770]],
7879:[[
7865,
770]],
7880:[[
73,
777]],
7881:[[
105,
777]],
7882:[[
73,
803]],
7883:[[
105,
803]],
7884:[[
79,
803],,{
770:
7896}],
7885:[[
111,
803],,{
770:
7897}],
7886:[[
79,
777]],
7887:[[
111,
777]],
7888:[[
212,
769]],
7889:[[
244,
769]],
7890:[[
212,
768]],
7891:[[
244,
768]],
7892:[[
212,
777]],
7893:[[
244,
777]],
7894:[[
212,
771]],
7895:[[
244,
771]],
7896:[[
7884,
770]],
7897:[[
7885,
770]],
7898:[[
416,
769]],
7899:[[
417,
769]],
7900:[[
416,
768]],
7901:[[
417,
768]],
7902:[[
416,
777]],
7903:[[
417,
777]],
7904:[[
416,
771]],
7905:[[
417,
771]],
7906:[[
416,
803]],
7907:[[
417,
803]],
7908:[[
85,
803]],
7909:[[
117,
803]],
7910:[[
85,
777]],
7911:[[
117,
777]],
7912:[[
431,
769]],
7913:[[
432,
769]],
7914:[[
431,
768]],
7915:[[
432,
768]],
7916:[[
431,
777]],
7917:[[
432,
777]],
7918:[[
431,
771]],
7919:[[
432,
771]],
7920:[[
431,
803]],
7921:[[
432,
803]],
7922:[[
89,
768]],
7923:[[
121,
768]],
7924:[[
89,
803]],
7925:[[
121,
803]],
7926:[[
89,
777]],
7927:[[
121,
777]],
7928:[[
89,
771]],
7929:[[
121,
771]]},
7000 7936:{
7936:[[
945,
787],,{
768:
7938,
769:
7940,
834:
7942,
837:
8064}],
7937:[[
945,
788],,{
768:
7939,
769:
7941,
834:
7943,
837:
8065}],
7938:[[
7936,
768],,{
837:
8066}],
7939:[[
7937,
768],,{
837:
8067}],
7940:[[
7936,
769],,{
837:
8068}],
7941:[[
7937,
769],,{
837:
8069}],
7942:[[
7936,
834],,{
837:
8070}],
7943:[[
7937,
834],,{
837:
8071}],
7944:[[
913,
787],,{
768:
7946,
769:
7948,
834:
7950,
837:
8072}],
7945:[[
913,
788],,{
768:
7947,
769:
7949,
834:
7951,
837:
8073}],
7946:[[
7944,
768],,{
837:
8074}],
7947:[[
7945,
768],,{
837:
8075}],
7948:[[
7944,
769],,{
837:
8076}],
7949:[[
7945,
769],,{
837:
8077}],
7950:[[
7944,
834],,{
837:
8078}],
7951:[[
7945,
834],,{
837:
8079}],
7952:[[
949,
787],,{
768:
7954,
769:
7956}],
7953:[[
949,
788],,{
768:
7955,
769:
7957}],
7954:[[
7952,
768]],
7955:[[
7953,
768]],
7956:[[
7952,
769]],
7957:[[
7953,
769]],
7960:[[
917,
787],,{
768:
7962,
769:
7964}],
7961:[[
917,
788],,{
768:
7963,
769:
7965}],
7962:[[
7960,
768]],
7963:[[
7961,
768]],
7964:[[
7960,
769]],
7965:[[
7961,
769]],
7968:[[
951,
787],,{
768:
7970,
769:
7972,
834:
7974,
837:
8080}],
7969:[[
951,
788],,{
768:
7971,
769:
7973,
834:
7975,
837:
8081}],
7970:[[
7968,
768],,{
837:
8082}],
7971:[[
7969,
768],,{
837:
8083}],
7972:[[
7968,
769],,{
837:
8084}],
7973:[[
7969,
769],,{
837:
8085}],
7974:[[
7968,
834],,{
837:
8086}],
7975:[[
7969,
834],,{
837:
8087}],
7976:[[
919,
787],,{
768:
7978,
769:
7980,
834:
7982,
837:
8088}],
7977:[[
919,
788],,{
768:
7979,
769:
7981,
834:
7983,
837:
8089}],
7978:[[
7976,
768],,{
837:
8090}],
7979:[[
7977,
768],,{
837:
8091}],
7980:[[
7976,
769],,{
837:
8092}],
7981:[[
7977,
769],,{
837:
8093}],
7982:[[
7976,
834],,{
837:
8094}],
7983:[[
7977,
834],,{
837:
8095}],
7984:[[
953,
787],,{
768:
7986,
769:
7988,
834:
7990}],
7985:[[
953,
788],,{
768:
7987,
769:
7989,
834:
7991}],
7986:[[
7984,
768]],
7987:[[
7985,
768]],
7988:[[
7984,
769]],
7989:[[
7985,
769]],
7990:[[
7984,
834]],
7991:[[
7985,
834]],
7992:[[
921,
787],,{
768:
7994,
769:
7996,
834:
7998}],
7993:[[
921,
788],,{
768:
7995,
769:
7997,
834:
7999}],
7994:[[
7992,
768]],
7995:[[
7993,
768]],
7996:[[
7992,
769]],
7997:[[
7993,
769]],
7998:[[
7992,
834]],
7999:[[
7993,
834]],
8000:[[
959,
787],,{
768:
8002,
769:
8004}],
8001:[[
959,
788],,{
768:
8003,
769:
8005}],
8002:[[
8000,
768]],
8003:[[
8001,
768]],
8004:[[
8000,
769]],
8005:[[
8001,
769]],
8008:[[
927,
787],,{
768:
8010,
769:
8012}],
8009:[[
927,
788],,{
768:
8011,
769:
8013}],
8010:[[
8008,
768]],
8011:[[
8009,
768]],
8012:[[
8008,
769]],
8013:[[
8009,
769]],
8016:[[
965,
787],,{
768:
8018,
769:
8020,
834:
8022}],
8017:[[
965,
788],,{
768:
8019,
769:
8021,
834:
8023}],
8018:[[
8016,
768]],
8019:[[
8017,
768]],
8020:[[
8016,
769]],
8021:[[
8017,
769]],
8022:[[
8016,
834]],
8023:[[
8017,
834]],
8025:[[
933,
788],,{
768:
8027,
769:
8029,
834:
8031}],
8027:[[
8025,
768]],
8029:[[
8025,
769]],
8031:[[
8025,
834]],
8032:[[
969,
787],,{
768:
8034,
769:
8036,
834:
8038,
837:
8096}],
8033:[[
969,
788],,{
768:
8035,
769:
8037,
834:
8039,
837:
8097}],
8034:[[
8032,
768],,{
837:
8098}],
8035:[[
8033,
768],,{
837:
8099}],
8036:[[
8032,
769],,{
837:
8100}],
8037:[[
8033,
769],,{
837:
8101}],
8038:[[
8032,
834],,{
837:
8102}],
8039:[[
8033,
834],,{
837:
8103}],
8040:[[
937,
787],,{
768:
8042,
769:
8044,
834:
8046,
837:
8104}],
8041:[[
937,
788],,{
768:
8043,
769:
8045,
834:
8047,
837:
8105}],
8042:[[
8040,
768],,{
837:
8106}],
8043:[[
8041,
768],,{
837:
8107}],
8044:[[
8040,
769],,{
837:
8108}],
8045:[[
8041,
769],,{
837:
8109}],
8046:[[
8040,
834],,{
837:
8110}],
8047:[[
8041,
834],,{
837:
8111}],
8048:[[
945,
768],,{
837:
8114}],
8049:[[
940]],
8050:[[
949,
768]],
8051:[[
941]],
8052:[[
951,
768],,{
837:
8130}],
8053:[[
942]],
8054:[[
953,
768]],
8055:[[
943]],
8056:[[
959,
768]],
8057:[[
972]],
8058:[[
965,
768]],
8059:[[
973]],
8060:[[
969,
768],,{
837:
8178}],
8061:[[
974]],
8064:[[
7936,
837]],
8065:[[
7937,
837]],
8066:[[
7938,
837]],
8067:[[
7939,
837]],
8068:[[
7940,
837]],
8069:[[
7941,
837]],
8070:[[
7942,
837]],
8071:[[
7943,
837]],
8072:[[
7944,
837]],
8073:[[
7945,
837]],
8074:[[
7946,
837]],
8075:[[
7947,
837]],
8076:[[
7948,
837]],
8077:[[
7949,
837]],
8078:[[
7950,
837]],
8079:[[
7951,
837]],
8080:[[
7968,
837]],
8081:[[
7969,
837]],
8082:[[
7970,
837]],
8083:[[
7971,
837]],
8084:[[
7972,
837]],
8085:[[
7973,
837]],
8086:[[
7974,
837]],
8087:[[
7975,
837]],
8088:[[
7976,
837]],
8089:[[
7977,
837]],
8090:[[
7978,
837]],
8091:[[
7979,
837]],
8092:[[
7980,
837]],
8093:[[
7981,
837]],
8094:[[
7982,
837]],
8095:[[
7983,
837]],
8096:[[
8032,
837]],
8097:[[
8033,
837]],
8098:[[
8034,
837]],
8099:[[
8035,
837]],
8100:[[
8036,
837]],
8101:[[
8037,
837]],
8102:[[
8038,
837]],
8103:[[
8039,
837]],
8104:[[
8040,
837]],
8105:[[
8041,
837]],
8106:[[
8042,
837]],
8107:[[
8043,
837]],
8108:[[
8044,
837]],
8109:[[
8045,
837]],
8110:[[
8046,
837]],
8111:[[
8047,
837]],
8112:[[
945,
774]],
8113:[[
945,
772]],
8114:[[
8048,
837]],
8115:[[
945,
837]],
8116:[[
940,
837]],
8118:[[
945,
834],,{
837:
8119}],
8119:[[
8118,
837]],
8120:[[
913,
774]],
8121:[[
913,
772]],
8122:[[
913,
768]],
8123:[[
902]],
8124:[[
913,
837]],
8125:[[
32,
787],
256],
8126:[[
953]],
8127:[[
32,
787],
256,{
768:
8141,
769:
8142,
834:
8143}],
8128:[[
32,
834],
256],
8129:[[
168,
834]],
8130:[[
8052,
837]],
8131:[[
951,
837]],
8132:[[
942,
837]],
8134:[[
951,
834],,{
837:
8135}],
8135:[[
8134,
837]],
8136:[[
917,
768]],
8137:[[
904]],
8138:[[
919,
768]],
8139:[[
905]],
8140:[[
919,
837]],
8141:[[
8127,
768]],
8142:[[
8127,
769]],
8143:[[
8127,
834]],
8144:[[
953,
774]],
8145:[[
953,
772]],
8146:[[
970,
768]],
8147:[[
912]],
8150:[[
953,
834]],
8151:[[
970,
834]],
8152:[[
921,
774]],
8153:[[
921,
772]],
8154:[[
921,
768]],
8155:[[
906]],
8157:[[
8190,
768]],
8158:[[
8190,
769]],
8159:[[
8190,
834]],
8160:[[
965,
774]],
8161:[[
965,
772]],
8162:[[
971,
768]],
8163:[[
944]],
8164:[[
961,
787]],
8165:[[
961,
788]],
8166:[[
965,
834]],
8167:[[
971,
834]],
8168:[[
933,
774]],
8169:[[
933,
772]],
8170:[[
933,
768]],
8171:[[
910]],
8172:[[
929,
788]],
8173:[[
168,
768]],
8174:[[
901]],
8175:[[
96]],
8178:[[
8060,
837]],
8179:[[
969,
837]],
8180:[[
974,
837]],
8182:[[
969,
834],,{
837:
8183}],
8183:[[
8182,
837]],
8184:[[
927,
768]],
8185:[[
908]],
8186:[[
937,
768]],
8187:[[
911]],
8188:[[
937,
837]],
8189:[[
180]],
8190:[[
32,
788],
256,{
768:
8157,
769:
8158,
834:
8159}]},
7001 8192:{
8192:[[
8194]],
8193:[[
8195]],
8194:[[
32],
256],
8195:[[
32],
256],
8196:[[
32],
256],
8197:[[
32],
256],
8198:[[
32],
256],
8199:[[
32],
256],
8200:[[
32],
256],
8201:[[
32],
256],
8202:[[
32],
256],
8209:[[
8208],
256],
8215:[[
32,
819],
256],
8228:[[
46],
256],
8229:[[
46,
46],
256],
8230:[[
46,
46,
46],
256],
8239:[[
32],
256],
8243:[[
8242,
8242],
256],
8244:[[
8242,
8242,
8242],
256],
8246:[[
8245,
8245],
256],
8247:[[
8245,
8245,
8245],
256],
8252:[[
33,
33],
256],
8254:[[
32,
773],
256],
8263:[[
63,
63],
256],
8264:[[
63,
33],
256],
8265:[[
33,
63],
256],
8279:[[
8242,
8242,
8242,
8242],
256],
8287:[[
32],
256],
8304:[[
48],
256],
8305:[[
105],
256],
8308:[[
52],
256],
8309:[[
53],
256],
8310:[[
54],
256],
8311:[[
55],
256],
8312:[[
56],
256],
8313:[[
57],
256],
8314:[[
43],
256],
8315:[[
8722],
256],
8316:[[
61],
256],
8317:[[
40],
256],
8318:[[
41],
256],
8319:[[
110],
256],
8320:[[
48],
256],
8321:[[
49],
256],
8322:[[
50],
256],
8323:[[
51],
256],
8324:[[
52],
256],
8325:[[
53],
256],
8326:[[
54],
256],
8327:[[
55],
256],
8328:[[
56],
256],
8329:[[
57],
256],
8330:[[
43],
256],
8331:[[
8722],
256],
8332:[[
61],
256],
8333:[[
40],
256],
8334:[[
41],
256],
8336:[[
97],
256],
8337:[[
101],
256],
8338:[[
111],
256],
8339:[[
120],
256],
8340:[[
601],
256],
8341:[[
104],
256],
8342:[[
107],
256],
8343:[[
108],
256],
8344:[[
109],
256],
8345:[[
110],
256],
8346:[[
112],
256],
8347:[[
115],
256],
8348:[[
116],
256],
8360:[[
82,
115],
256],
8400:[,
230],
8401:[,
230],
8402:[,
1],
8403:[,
1],
8404:[,
230],
8405:[,
230],
8406:[,
230],
8407:[,
230],
8408:[,
1],
8409:[,
1],
8410:[,
1],
8411:[,
230],
8412:[,
230],
8417:[,
230],
8421:[,
1],
8422:[,
1],
8423:[,
230],
8424:[,
220],
8425:[,
230],
8426:[,
1],
8427:[,
1],
8428:[,
220],
8429:[,
220],
8430:[,
220],
8431:[,
220],
8432:[,
230]},
7002 8448:{
8448:[[
97,
47,
99],
256],
8449:[[
97,
47,
115],
256],
8450:[[
67],
256],
8451:[[
176,
67],
256],
8453:[[
99,
47,
111],
256],
8454:[[
99,
47,
117],
256],
8455:[[
400],
256],
8457:[[
176,
70],
256],
8458:[[
103],
256],
8459:[[
72],
256],
8460:[[
72],
256],
8461:[[
72],
256],
8462:[[
104],
256],
8463:[[
295],
256],
8464:[[
73],
256],
8465:[[
73],
256],
8466:[[
76],
256],
8467:[[
108],
256],
8469:[[
78],
256],
8470:[[
78,
111],
256],
8473:[[
80],
256],
8474:[[
81],
256],
8475:[[
82],
256],
8476:[[
82],
256],
8477:[[
82],
256],
8480:[[
83,
77],
256],
8481:[[
84,
69,
76],
256],
8482:[[
84,
77],
256],
8484:[[
90],
256],
8486:[[
937]],
8488:[[
90],
256],
8490:[[
75]],
8491:[[
197]],
8492:[[
66],
256],
8493:[[
67],
256],
8495:[[
101],
256],
8496:[[
69],
256],
8497:[[
70],
256],
8499:[[
77],
256],
8500:[[
111],
256],
8501:[[
1488],
256],
8502:[[
1489],
256],
8503:[[
1490],
256],
8504:[[
1491],
256],
8505:[[
105],
256],
8507:[[
70,
65,
88],
256],
8508:[[
960],
256],
8509:[[
947],
256],
8510:[[
915],
256],
8511:[[
928],
256],
8512:[[
8721],
256],
8517:[[
68],
256],
8518:[[
100],
256],
8519:[[
101],
256],
8520:[[
105],
256],
8521:[[
106],
256],
8528:[[
49,
8260,
55],
256],
8529:[[
49,
8260,
57],
256],
8530:[[
49,
8260,
49,
48],
256],
8531:[[
49,
8260,
51],
256],
8532:[[
50,
8260,
51],
256],
8533:[[
49,
8260,
53],
256],
8534:[[
50,
8260,
53],
256],
8535:[[
51,
8260,
53],
256],
8536:[[
52,
8260,
53],
256],
8537:[[
49,
8260,
54],
256],
8538:[[
53,
8260,
54],
256],
8539:[[
49,
8260,
56],
256],
8540:[[
51,
8260,
56],
256],
8541:[[
53,
8260,
56],
256],
8542:[[
55,
8260,
56],
256],
8543:[[
49,
8260],
256],
8544:[[
73],
256],
8545:[[
73,
73],
256],
8546:[[
73,
73,
73],
256],
8547:[[
73,
86],
256],
8548:[[
86],
256],
8549:[[
86,
73],
256],
8550:[[
86,
73,
73],
256],
8551:[[
86,
73,
73,
73],
256],
8552:[[
73,
88],
256],
8553:[[
88],
256],
8554:[[
88,
73],
256],
8555:[[
88,
73,
73],
256],
8556:[[
76],
256],
8557:[[
67],
256],
8558:[[
68],
256],
8559:[[
77],
256],
8560:[[
105],
256],
8561:[[
105,
105],
256],
8562:[[
105,
105,
105],
256],
8563:[[
105,
118],
256],
8564:[[
118],
256],
8565:[[
118,
105],
256],
8566:[[
118,
105,
105],
256],
8567:[[
118,
105,
105,
105],
256],
8568:[[
105,
120],
256],
8569:[[
120],
256],
8570:[[
120,
105],
256],
8571:[[
120,
105,
105],
256],
8572:[[
108],
256],
8573:[[
99],
256],
8574:[[
100],
256],
8575:[[
109],
256],
8585:[[
48,
8260,
51],
256],
8592:[,,{
824:
8602}],
8594:[,,{
824:
8603}],
8596:[,,{
824:
8622}],
8602:[[
8592,
824]],
8603:[[
8594,
824]],
8622:[[
8596,
824]],
8653:[[
8656,
824]],
8654:[[
8660,
824]],
8655:[[
8658,
824]],
8656:[,,{
824:
8653}],
8658:[,,{
824:
8655}],
8660:[,,{
824:
8654}]},
7003 8704:{
8707:[,,{
824:
8708}],
8708:[[
8707,
824]],
8712:[,,{
824:
8713}],
8713:[[
8712,
824]],
8715:[,,{
824:
8716}],
8716:[[
8715,
824]],
8739:[,,{
824:
8740}],
8740:[[
8739,
824]],
8741:[,,{
824:
8742}],
8742:[[
8741,
824]],
8748:[[
8747,
8747],
256],
8749:[[
8747,
8747,
8747],
256],
8751:[[
8750,
8750],
256],
8752:[[
8750,
8750,
8750],
256],
8764:[,,{
824:
8769}],
8769:[[
8764,
824]],
8771:[,,{
824:
8772}],
8772:[[
8771,
824]],
8773:[,,{
824:
8775}],
8775:[[
8773,
824]],
8776:[,,{
824:
8777}],
8777:[[
8776,
824]],
8781:[,,{
824:
8813}],
8800:[[
61,
824]],
8801:[,,{
824:
8802}],
8802:[[
8801,
824]],
8804:[,,{
824:
8816}],
8805:[,,{
824:
8817}],
8813:[[
8781,
824]],
8814:[[
60,
824]],
8815:[[
62,
824]],
8816:[[
8804,
824]],
8817:[[
8805,
824]],
8818:[,,{
824:
8820}],
8819:[,,{
824:
8821}],
8820:[[
8818,
824]],
8821:[[
8819,
824]],
8822:[,,{
824:
8824}],
8823:[,,{
824:
8825}],
8824:[[
8822,
824]],
8825:[[
8823,
824]],
8826:[,,{
824:
8832}],
8827:[,,{
824:
8833}],
8828:[,,{
824:
8928}],
8829:[,,{
824:
8929}],
8832:[[
8826,
824]],
8833:[[
8827,
824]],
8834:[,,{
824:
8836}],
8835:[,,{
824:
8837}],
8836:[[
8834,
824]],
8837:[[
8835,
824]],
8838:[,,{
824:
8840}],
8839:[,,{
824:
8841}],
8840:[[
8838,
824]],
8841:[[
8839,
824]],
8849:[,,{
824:
8930}],
8850:[,,{
824:
8931}],
8866:[,,{
824:
8876}],
8872:[,,{
824:
8877}],
8873:[,,{
824:
8878}],
8875:[,,{
824:
8879}],
8876:[[
8866,
824]],
8877:[[
8872,
824]],
8878:[[
8873,
824]],
8879:[[
8875,
824]],
8882:[,,{
824:
8938}],
8883:[,,{
824:
8939}],
8884:[,,{
824:
8940}],
8885:[,,{
824:
8941}],
8928:[[
8828,
824]],
8929:[[
8829,
824]],
8930:[[
8849,
824]],
8931:[[
8850,
824]],
8938:[[
8882,
824]],
8939:[[
8883,
824]],
8940:[[
8884,
824]],
8941:[[
8885,
824]]},
7004 8960:{
9001:[[
12296]],
9002:[[
12297]]},
7005 9216:{
9312:[[
49],
256],
9313:[[
50],
256],
9314:[[
51],
256],
9315:[[
52],
256],
9316:[[
53],
256],
9317:[[
54],
256],
9318:[[
55],
256],
9319:[[
56],
256],
9320:[[
57],
256],
9321:[[
49,
48],
256],
9322:[[
49,
49],
256],
9323:[[
49,
50],
256],
9324:[[
49,
51],
256],
9325:[[
49,
52],
256],
9326:[[
49,
53],
256],
9327:[[
49,
54],
256],
9328:[[
49,
55],
256],
9329:[[
49,
56],
256],
9330:[[
49,
57],
256],
9331:[[
50,
48],
256],
9332:[[
40,
49,
41],
256],
9333:[[
40,
50,
41],
256],
9334:[[
40,
51,
41],
256],
9335:[[
40,
52,
41],
256],
9336:[[
40,
53,
41],
256],
9337:[[
40,
54,
41],
256],
9338:[[
40,
55,
41],
256],
9339:[[
40,
56,
41],
256],
9340:[[
40,
57,
41],
256],
9341:[[
40,
49,
48,
41],
256],
9342:[[
40,
49,
49,
41],
256],
9343:[[
40,
49,
50,
41],
256],
9344:[[
40,
49,
51,
41],
256],
9345:[[
40,
49,
52,
41],
256],
9346:[[
40,
49,
53,
41],
256],
9347:[[
40,
49,
54,
41],
256],
9348:[[
40,
49,
55,
41],
256],
9349:[[
40,
49,
56,
41],
256],
9350:[[
40,
49,
57,
41],
256],
9351:[[
40,
50,
48,
41],
256],
9352:[[
49,
46],
256],
9353:[[
50,
46],
256],
9354:[[
51,
46],
256],
9355:[[
52,
46],
256],
9356:[[
53,
46],
256],
9357:[[
54,
46],
256],
9358:[[
55,
46],
256],
9359:[[
56,
46],
256],
9360:[[
57,
46],
256],
9361:[[
49,
48,
46],
256],
9362:[[
49,
49,
46],
256],
9363:[[
49,
50,
46],
256],
9364:[[
49,
51,
46],
256],
9365:[[
49,
52,
46],
256],
9366:[[
49,
53,
46],
256],
9367:[[
49,
54,
46],
256],
9368:[[
49,
55,
46],
256],
9369:[[
49,
56,
46],
256],
9370:[[
49,
57,
46],
256],
9371:[[
50,
48,
46],
256],
9372:[[
40,
97,
41],
256],
9373:[[
40,
98,
41],
256],
9374:[[
40,
99,
41],
256],
9375:[[
40,
100,
41],
256],
9376:[[
40,
101,
41],
256],
9377:[[
40,
102,
41],
256],
9378:[[
40,
103,
41],
256],
9379:[[
40,
104,
41],
256],
9380:[[
40,
105,
41],
256],
9381:[[
40,
106,
41],
256],
9382:[[
40,
107,
41],
256],
9383:[[
40,
108,
41],
256],
9384:[[
40,
109,
41],
256],
9385:[[
40,
110,
41],
256],
9386:[[
40,
111,
41],
256],
9387:[[
40,
112,
41],
256],
9388:[[
40,
113,
41],
256],
9389:[[
40,
114,
41],
256],
9390:[[
40,
115,
41],
256],
9391:[[
40,
116,
41],
256],
9392:[[
40,
117,
41],
256],
9393:[[
40,
118,
41],
256],
9394:[[
40,
119,
41],
256],
9395:[[
40,
120,
41],
256],
9396:[[
40,
121,
41],
256],
9397:[[
40,
122,
41],
256],
9398:[[
65],
256],
9399:[[
66],
256],
9400:[[
67],
256],
9401:[[
68],
256],
9402:[[
69],
256],
9403:[[
70],
256],
9404:[[
71],
256],
9405:[[
72],
256],
9406:[[
73],
256],
9407:[[
74],
256],
9408:[[
75],
256],
9409:[[
76],
256],
9410:[[
77],
256],
9411:[[
78],
256],
9412:[[
79],
256],
9413:[[
80],
256],
9414:[[
81],
256],
9415:[[
82],
256],
9416:[[
83],
256],
9417:[[
84],
256],
9418:[[
85],
256],
9419:[[
86],
256],
9420:[[
87],
256],
9421:[[
88],
256],
9422:[[
89],
256],
9423:[[
90],
256],
9424:[[
97],
256],
9425:[[
98],
256],
9426:[[
99],
256],
9427:[[
100],
256],
9428:[[
101],
256],
9429:[[
102],
256],
9430:[[
103],
256],
9431:[[
104],
256],
9432:[[
105],
256],
9433:[[
106],
256],
9434:[[
107],
256],
9435:[[
108],
256],
9436:[[
109],
256],
9437:[[
110],
256],
9438:[[
111],
256],
9439:[[
112],
256],
9440:[[
113],
256],
9441:[[
114],
256],
9442:[[
115],
256],
9443:[[
116],
256],
9444:[[
117],
256],
9445:[[
118],
256],
9446:[[
119],
256],
9447:[[
120],
256],
9448:[[
121],
256],
9449:[[
122],
256],
9450:[[
48],
256]},
7006 10752:{
10764:[[
8747,
8747,
8747,
8747],
256],
10868:[[
58,
58,
61],
256],
10869:[[
61,
61],
256],
10870:[[
61,
61,
61],
256],
10972:[[
10973,
824],
512]},
7007 11264:{
11388:[[
106],
256],
11389:[[
86],
256],
11503:[,
230],
11504:[,
230],
11505:[,
230]},
7008 11520:{
11631:[[
11617],
256],
11647:[,
9],
11744:[,
230],
11745:[,
230],
11746:[,
230],
11747:[,
230],
11748:[,
230],
11749:[,
230],
11750:[,
230],
11751:[,
230],
11752:[,
230],
11753:[,
230],
11754:[,
230],
11755:[,
230],
11756:[,
230],
11757:[,
230],
11758:[,
230],
11759:[,
230],
11760:[,
230],
11761:[,
230],
11762:[,
230],
11763:[,
230],
11764:[,
230],
11765:[,
230],
11766:[,
230],
11767:[,
230],
11768:[,
230],
11769:[,
230],
11770:[,
230],
11771:[,
230],
11772:[,
230],
11773:[,
230],
11774:[,
230],
11775:[,
230]},
7009 11776:{
11935:[[
27597],
256],
12019:[[
40863],
256]},
7010 12032:{
12032:[[
19968],
256],
12033:[[
20008],
256],
12034:[[
20022],
256],
12035:[[
20031],
256],
12036:[[
20057],
256],
12037:[[
20101],
256],
12038:[[
20108],
256],
12039:[[
20128],
256],
12040:[[
20154],
256],
12041:[[
20799],
256],
12042:[[
20837],
256],
12043:[[
20843],
256],
12044:[[
20866],
256],
12045:[[
20886],
256],
12046:[[
20907],
256],
12047:[[
20960],
256],
12048:[[
20981],
256],
12049:[[
20992],
256],
12050:[[
21147],
256],
12051:[[
21241],
256],
12052:[[
21269],
256],
12053:[[
21274],
256],
12054:[[
21304],
256],
12055:[[
21313],
256],
12056:[[
21340],
256],
12057:[[
21353],
256],
12058:[[
21378],
256],
12059:[[
21430],
256],
12060:[[
21448],
256],
12061:[[
21475],
256],
12062:[[
22231],
256],
12063:[[
22303],
256],
12064:[[
22763],
256],
12065:[[
22786],
256],
12066:[[
22794],
256],
12067:[[
22805],
256],
12068:[[
22823],
256],
12069:[[
22899],
256],
12070:[[
23376],
256],
12071:[[
23424],
256],
12072:[[
23544],
256],
12073:[[
23567],
256],
12074:[[
23586],
256],
12075:[[
23608],
256],
12076:[[
23662],
256],
12077:[[
23665],
256],
12078:[[
24027],
256],
12079:[[
24037],
256],
12080:[[
24049],
256],
12081:[[
24062],
256],
12082:[[
24178],
256],
12083:[[
24186],
256],
12084:[[
24191],
256],
12085:[[
24308],
256],
12086:[[
24318],
256],
12087:[[
24331],
256],
12088:[[
24339],
256],
12089:[[
24400],
256],
12090:[[
24417],
256],
12091:[[
24435],
256],
12092:[[
24515],
256],
12093:[[
25096],
256],
12094:[[
25142],
256],
12095:[[
25163],
256],
12096:[[
25903],
256],
12097:[[
25908],
256],
12098:[[
25991],
256],
12099:[[
26007],
256],
12100:[[
26020],
256],
12101:[[
26041],
256],
12102:[[
26080],
256],
12103:[[
26085],
256],
12104:[[
26352],
256],
12105:[[
26376],
256],
12106:[[
26408],
256],
12107:[[
27424],
256],
12108:[[
27490],
256],
12109:[[
27513],
256],
12110:[[
27571],
256],
12111:[[
27595],
256],
12112:[[
27604],
256],
12113:[[
27611],
256],
12114:[[
27663],
256],
12115:[[
27668],
256],
12116:[[
27700],
256],
12117:[[
28779],
256],
12118:[[
29226],
256],
12119:[[
29238],
256],
12120:[[
29243],
256],
12121:[[
29247],
256],
12122:[[
29255],
256],
12123:[[
29273],
256],
12124:[[
29275],
256],
12125:[[
29356],
256],
12126:[[
29572],
256],
12127:[[
29577],
256],
12128:[[
29916],
256],
12129:[[
29926],
256],
12130:[[
29976],
256],
12131:[[
29983],
256],
12132:[[
29992],
256],
12133:[[
30000],
256],
12134:[[
30091],
256],
12135:[[
30098],
256],
12136:[[
30326],
256],
12137:[[
30333],
256],
12138:[[
30382],
256],
12139:[[
30399],
256],
12140:[[
30446],
256],
12141:[[
30683],
256],
12142:[[
30690],
256],
12143:[[
30707],
256],
12144:[[
31034],
256],
12145:[[
31160],
256],
12146:[[
31166],
256],
12147:[[
31348],
256],
12148:[[
31435],
256],
12149:[[
31481],
256],
12150:[[
31859],
256],
12151:[[
31992],
256],
12152:[[
32566],
256],
12153:[[
32593],
256],
12154:[[
32650],
256],
12155:[[
32701],
256],
12156:[[
32769],
256],
12157:[[
32780],
256],
12158:[[
32786],
256],
12159:[[
32819],
256],
12160:[[
32895],
256],
12161:[[
32905],
256],
12162:[[
33251],
256],
12163:[[
33258],
256],
12164:[[
33267],
256],
12165:[[
33276],
256],
12166:[[
33292],
256],
12167:[[
33307],
256],
12168:[[
33311],
256],
12169:[[
33390],
256],
12170:[[
33394],
256],
12171:[[
33400],
256],
12172:[[
34381],
256],
12173:[[
34411],
256],
12174:[[
34880],
256],
12175:[[
34892],
256],
12176:[[
34915],
256],
12177:[[
35198],
256],
12178:[[
35211],
256],
12179:[[
35282],
256],
12180:[[
35328],
256],
12181:[[
35895],
256],
12182:[[
35910],
256],
12183:[[
35925],
256],
12184:[[
35960],
256],
12185:[[
35997],
256],
12186:[[
36196],
256],
12187:[[
36208],
256],
12188:[[
36275],
256],
12189:[[
36523],
256],
12190:[[
36554],
256],
12191:[[
36763],
256],
12192:[[
36784],
256],
12193:[[
36789],
256],
12194:[[
37009],
256],
12195:[[
37193],
256],
12196:[[
37318],
256],
12197:[[
37324],
256],
12198:[[
37329],
256],
12199:[[
38263],
256],
12200:[[
38272],
256],
12201:[[
38428],
256],
12202:[[
38582],
256],
12203:[[
38585],
256],
12204:[[
38632],
256],
12205:[[
38737],
256],
12206:[[
38750],
256],
12207:[[
38754],
256],
12208:[[
38761],
256],
12209:[[
38859],
256],
12210:[[
38893],
256],
12211:[[
38899],
256],
12212:[[
38913],
256],
12213:[[
39080],
256],
12214:[[
39131],
256],
12215:[[
39135],
256],
12216:[[
39318],
256],
12217:[[
39321],
256],
12218:[[
39340],
256],
12219:[[
39592],
256],
12220:[[
39640],
256],
12221:[[
39647],
256],
12222:[[
39717],
256],
12223:[[
39727],
256],
12224:[[
39730],
256],
12225:[[
39740],
256],
12226:[[
39770],
256],
12227:[[
40165],
256],
12228:[[
40565],
256],
12229:[[
40575],
256],
12230:[[
40613],
256],
12231:[[
40635],
256],
12232:[[
40643],
256],
12233:[[
40653],
256],
12234:[[
40657],
256],
12235:[[
40697],
256],
12236:[[
40701],
256],
12237:[[
40718],
256],
12238:[[
40723],
256],
12239:[[
40736],
256],
12240:[[
40763],
256],
12241:[[
40778],
256],
12242:[[
40786],
256],
12243:[[
40845],
256],
12244:[[
40860],
256],
12245:[[
40864],
256]},
7011 12288:{
12288:[[
32],
256],
12330:[,
218],
12331:[,
228],
12332:[,
232],
12333:[,
222],
12334:[,
224],
12335:[,
224],
12342:[[
12306],
256],
12344:[[
21313],
256],
12345:[[
21316],
256],
12346:[[
21317],
256],
12358:[,,{
12441:
12436}],
12363:[,,{
12441:
12364}],
12364:[[
12363,
12441]],
12365:[,,{
12441:
12366}],
12366:[[
12365,
12441]],
12367:[,,{
12441:
12368}],
12368:[[
12367,
12441]],
12369:[,,{
12441:
12370}],
12370:[[
12369,
12441]],
12371:[,,{
12441:
12372}],
12372:[[
12371,
12441]],
12373:[,,{
12441:
12374}],
12374:[[
12373,
12441]],
12375:[,,{
12441:
12376}],
12376:[[
12375,
12441]],
12377:[,,{
12441:
12378}],
12378:[[
12377,
12441]],
12379:[,,{
12441:
12380}],
12380:[[
12379,
12441]],
12381:[,,{
12441:
12382}],
12382:[[
12381,
12441]],
12383:[,,{
12441:
12384}],
12384:[[
12383,
12441]],
12385:[,,{
12441:
12386}],
12386:[[
12385,
12441]],
12388:[,,{
12441:
12389}],
12389:[[
12388,
12441]],
12390:[,,{
12441:
12391}],
12391:[[
12390,
12441]],
12392:[,,{
12441:
12393}],
12393:[[
12392,
12441]],
12399:[,,{
12441:
12400,
12442:
12401}],
12400:[[
12399,
12441]],
12401:[[
12399,
12442]],
12402:[,,{
12441:
12403,
12442:
12404}],
12403:[[
12402,
12441]],
12404:[[
12402,
12442]],
12405:[,,{
12441:
12406,
12442:
12407}],
12406:[[
12405,
12441]],
12407:[[
12405,
12442]],
12408:[,,{
12441:
12409,
12442:
12410}],
12409:[[
12408,
12441]],
12410:[[
12408,
12442]],
12411:[,,{
12441:
12412,
12442:
12413}],
12412:[[
12411,
12441]],
12413:[[
12411,
12442]],
12436:[[
12358,
12441]],
12441:[,
8],
12442:[,
8],
12443:[[
32,
12441],
256],
12444:[[
32,
12442],
256],
12445:[,,{
12441:
12446}],
12446:[[
12445,
12441]],
12447:[[
12424,
12426],
256],
12454:[,,{
12441:
12532}],
12459:[,,{
12441:
12460}],
12460:[[
12459,
12441]],
12461:[,,{
12441:
12462}],
12462:[[
12461,
12441]],
12463:[,,{
12441:
12464}],
12464:[[
12463,
12441]],
12465:[,,{
12441:
12466}],
12466:[[
12465,
12441]],
12467:[,,{
12441:
12468}],
12468:[[
12467,
12441]],
12469:[,,{
12441:
12470}],
12470:[[
12469,
12441]],
12471:[,,{
12441:
12472}],
12472:[[
12471,
12441]],
12473:[,,{
12441:
12474}],
12474:[[
12473,
12441]],
12475:[,,{
12441:
12476}],
12476:[[
12475,
12441]],
12477:[,,{
12441:
12478}],
12478:[[
12477,
12441]],
12479:[,,{
12441:
12480}],
12480:[[
12479,
12441]],
12481:[,,{
12441:
12482}],
12482:[[
12481,
12441]],
12484:[,,{
12441:
12485}],
12485:[[
12484,
12441]],
12486:[,,{
12441:
12487}],
12487:[[
12486,
12441]],
12488:[,,{
12441:
12489}],
12489:[[
12488,
12441]],
12495:[,,{
12441:
12496,
12442:
12497}],
12496:[[
12495,
12441]],
12497:[[
12495,
12442]],
12498:[,,{
12441:
12499,
12442:
12500}],
12499:[[
12498,
12441]],
12500:[[
12498,
12442]],
12501:[,,{
12441:
12502,
12442:
12503}],
12502:[[
12501,
12441]],
12503:[[
12501,
12442]],
12504:[,,{
12441:
12505,
12442:
12506}],
12505:[[
12504,
12441]],
12506:[[
12504,
12442]],
12507:[,,{
12441:
12508,
12442:
12509}],
12508:[[
12507,
12441]],
12509:[[
12507,
12442]],
12527:[,,{
12441:
12535}],
12528:[,,{
12441:
12536}],
12529:[,,{
12441:
12537}],
12530:[,,{
12441:
12538}],
12532:[[
12454,
12441]],
12535:[[
12527,
12441]],
12536:[[
12528,
12441]],
12537:[[
12529,
12441]],
12538:[[
12530,
12441]],
12541:[,,{
12441:
12542}],
12542:[[
12541,
12441]],
12543:[[
12467,
12488],
256]},
7012 12544:{
12593:[[
4352],
256],
12594:[[
4353],
256],
12595:[[
4522],
256],
12596:[[
4354],
256],
12597:[[
4524],
256],
12598:[[
4525],
256],
12599:[[
4355],
256],
12600:[[
4356],
256],
12601:[[
4357],
256],
12602:[[
4528],
256],
12603:[[
4529],
256],
12604:[[
4530],
256],
12605:[[
4531],
256],
12606:[[
4532],
256],
12607:[[
4533],
256],
12608:[[
4378],
256],
12609:[[
4358],
256],
12610:[[
4359],
256],
12611:[[
4360],
256],
12612:[[
4385],
256],
12613:[[
4361],
256],
12614:[[
4362],
256],
12615:[[
4363],
256],
12616:[[
4364],
256],
12617:[[
4365],
256],
12618:[[
4366],
256],
12619:[[
4367],
256],
12620:[[
4368],
256],
12621:[[
4369],
256],
12622:[[
4370],
256],
12623:[[
4449],
256],
12624:[[
4450],
256],
12625:[[
4451],
256],
12626:[[
4452],
256],
12627:[[
4453],
256],
12628:[[
4454],
256],
12629:[[
4455],
256],
12630:[[
4456],
256],
12631:[[
4457],
256],
12632:[[
4458],
256],
12633:[[
4459],
256],
12634:[[
4460],
256],
12635:[[
4461],
256],
12636:[[
4462],
256],
12637:[[
4463],
256],
12638:[[
4464],
256],
12639:[[
4465],
256],
12640:[[
4466],
256],
12641:[[
4467],
256],
12642:[[
4468],
256],
12643:[[
4469],
256],
12644:[[
4448],
256],
12645:[[
4372],
256],
12646:[[
4373],
256],
12647:[[
4551],
256],
12648:[[
4552],
256],
12649:[[
4556],
256],
12650:[[
4558],
256],
12651:[[
4563],
256],
12652:[[
4567],
256],
12653:[[
4569],
256],
12654:[[
4380],
256],
12655:[[
4573],
256],
12656:[[
4575],
256],
12657:[[
4381],
256],
12658:[[
4382],
256],
12659:[[
4384],
256],
12660:[[
4386],
256],
12661:[[
4387],
256],
12662:[[
4391],
256],
12663:[[
4393],
256],
12664:[[
4395],
256],
12665:[[
4396],
256],
12666:[[
4397],
256],
12667:[[
4398],
256],
12668:[[
4399],
256],
12669:[[
4402],
256],
12670:[[
4406],
256],
12671:[[
4416],
256],
12672:[[
4423],
256],
12673:[[
4428],
256],
12674:[[
4593],
256],
12675:[[
4594],
256],
12676:[[
4439],
256],
12677:[[
4440],
256],
12678:[[
4441],
256],
12679:[[
4484],
256],
12680:[[
4485],
256],
12681:[[
4488],
256],
12682:[[
4497],
256],
12683:[[
4498],
256],
12684:[[
4500],
256],
12685:[[
4510],
256],
12686:[[
4513],
256],
12690:[[
19968],
256],
12691:[[
20108],
256],
12692:[[
19977],
256],
12693:[[
22235],
256],
12694:[[
19978],
256],
12695:[[
20013],
256],
12696:[[
19979],
256],
12697:[[
30002],
256],
12698:[[
20057],
256],
12699:[[
19993],
256],
12700:[[
19969],
256],
12701:[[
22825],
256],
12702:[[
22320],
256],
12703:[[
20154],
256]},
7013 12800:{
12800:[[
40,
4352,
41],
256],
12801:[[
40,
4354,
41],
256],
12802:[[
40,
4355,
41],
256],
12803:[[
40,
4357,
41],
256],
12804:[[
40,
4358,
41],
256],
12805:[[
40,
4359,
41],
256],
12806:[[
40,
4361,
41],
256],
12807:[[
40,
4363,
41],
256],
12808:[[
40,
4364,
41],
256],
12809:[[
40,
4366,
41],
256],
12810:[[
40,
4367,
41],
256],
12811:[[
40,
4368,
41],
256],
12812:[[
40,
4369,
41],
256],
12813:[[
40,
4370,
41],
256],
12814:[[
40,
4352,
4449,
41],
256],
12815:[[
40,
4354,
4449,
41],
256],
12816:[[
40,
4355,
4449,
41],
256],
12817:[[
40,
4357,
4449,
41],
256],
12818:[[
40,
4358,
4449,
41],
256],
12819:[[
40,
4359,
4449,
41],
256],
12820:[[
40,
4361,
4449,
41],
256],
12821:[[
40,
4363,
4449,
41],
256],
12822:[[
40,
4364,
4449,
41],
256],
12823:[[
40,
4366,
4449,
41],
256],
12824:[[
40,
4367,
4449,
41],
256],
12825:[[
40,
4368,
4449,
41],
256],
12826:[[
40,
4369,
4449,
41],
256],
12827:[[
40,
4370,
4449,
41],
256],
12828:[[
40,
4364,
4462,
41],
256],
12829:[[
40,
4363,
4457,
4364,
4453,
4523,
41],
256],
12830:[[
40,
4363,
4457,
4370,
4462,
41],
256],
12832:[[
40,
19968,
41],
256],
12833:[[
40,
20108,
41],
256],
12834:[[
40,
19977,
41],
256],
12835:[[
40,
22235,
41],
256],
12836:[[
40,
20116,
41],
256],
12837:[[
40,
20845,
41],
256],
12838:[[
40,
19971,
41],
256],
12839:[[
40,
20843,
41],
256],
12840:[[
40,
20061,
41],
256],
12841:[[
40,
21313,
41],
256],
12842:[[
40,
26376,
41],
256],
12843:[[
40,
28779,
41],
256],
12844:[[
40,
27700,
41],
256],
12845:[[
40,
26408,
41],
256],
12846:[[
40,
37329,
41],
256],
12847:[[
40,
22303,
41],
256],
12848:[[
40,
26085,
41],
256],
12849:[[
40,
26666,
41],
256],
12850:[[
40,
26377,
41],
256],
12851:[[
40,
31038,
41],
256],
12852:[[
40,
21517,
41],
256],
12853:[[
40,
29305,
41],
256],
12854:[[
40,
36001,
41],
256],
12855:[[
40,
31069,
41],
256],
12856:[[
40,
21172,
41],
256],
12857:[[
40,
20195,
41],
256],
12858:[[
40,
21628,
41],
256],
12859:[[
40,
23398,
41],
256],
12860:[[
40,
30435,
41],
256],
12861:[[
40,
20225,
41],
256],
12862:[[
40,
36039,
41],
256],
12863:[[
40,
21332,
41],
256],
12864:[[
40,
31085,
41],
256],
12865:[[
40,
20241,
41],
256],
12866:[[
40,
33258,
41],
256],
12867:[[
40,
33267,
41],
256],
12868:[[
21839],
256],
12869:[[
24188],
256],
12870:[[
25991],
256],
12871:[[
31631],
256],
12880:[[
80,
84,
69],
256],
12881:[[
50,
49],
256],
12882:[[
50,
50],
256],
12883:[[
50,
51],
256],
12884:[[
50,
52],
256],
12885:[[
50,
53],
256],
12886:[[
50,
54],
256],
12887:[[
50,
55],
256],
12888:[[
50,
56],
256],
12889:[[
50,
57],
256],
12890:[[
51,
48],
256],
12891:[[
51,
49],
256],
12892:[[
51,
50],
256],
12893:[[
51,
51],
256],
12894:[[
51,
52],
256],
12895:[[
51,
53],
256],
12896:[[
4352],
256],
12897:[[
4354],
256],
12898:[[
4355],
256],
12899:[[
4357],
256],
12900:[[
4358],
256],
12901:[[
4359],
256],
12902:[[
4361],
256],
12903:[[
4363],
256],
12904:[[
4364],
256],
12905:[[
4366],
256],
12906:[[
4367],
256],
12907:[[
4368],
256],
12908:[[
4369],
256],
12909:[[
4370],
256],
12910:[[
4352,
4449],
256],
12911:[[
4354,
4449],
256],
12912:[[
4355,
4449],
256],
12913:[[
4357,
4449],
256],
12914:[[
4358,
4449],
256],
12915:[[
4359,
4449],
256],
12916:[[
4361,
4449],
256],
12917:[[
4363,
4449],
256],
12918:[[
4364,
4449],
256],
12919:[[
4366,
4449],
256],
12920:[[
4367,
4449],
256],
12921:[[
4368,
4449],
256],
12922:[[
4369,
4449],
256],
12923:[[
4370,
4449],
256],
12924:[[
4366,
4449,
4535,
4352,
4457],
256],
12925:[[
4364,
4462,
4363,
4468],
256],
12926:[[
4363,
4462],
256],
12928:[[
19968],
256],
12929:[[
20108],
256],
12930:[[
19977],
256],
12931:[[
22235],
256],
12932:[[
20116],
256],
12933:[[
20845],
256],
12934:[[
19971],
256],
12935:[[
20843],
256],
12936:[[
20061],
256],
12937:[[
21313],
256],
12938:[[
26376],
256],
12939:[[
28779],
256],
12940:[[
27700],
256],
12941:[[
26408],
256],
12942:[[
37329],
256],
12943:[[
22303],
256],
12944:[[
26085],
256],
12945:[[
26666],
256],
12946:[[
26377],
256],
12947:[[
31038],
256],
12948:[[
21517],
256],
12949:[[
29305],
256],
12950:[[
36001],
256],
12951:[[
31069],
256],
12952:[[
21172],
256],
12953:[[
31192],
256],
12954:[[
30007],
256],
12955:[[
22899],
256],
12956:[[
36969],
256],
12957:[[
20778],
256],
12958:[[
21360],
256],
12959:[[
27880],
256],
12960:[[
38917],
256],
12961:[[
20241],
256],
12962:[[
20889],
256],
12963:[[
27491],
256],
12964:[[
19978],
256],
12965:[[
20013],
256],
12966:[[
19979],
256],
12967:[[
24038],
256],
12968:[[
21491],
256],
12969:[[
21307],
256],
12970:[[
23447],
256],
12971:[[
23398],
256],
12972:[[
30435],
256],
12973:[[
20225],
256],
12974:[[
36039],
256],
12975:[[
21332],
256],
12976:[[
22812],
256],
12977:[[
51,
54],
256],
12978:[[
51,
55],
256],
12979:[[
51,
56],
256],
12980:[[
51,
57],
256],
12981:[[
52,
48],
256],
12982:[[
52,
49],
256],
12983:[[
52,
50],
256],
12984:[[
52,
51],
256],
12985:[[
52,
52],
256],
12986:[[
52,
53],
256],
12987:[[
52,
54],
256],
12988:[[
52,
55],
256],
12989:[[
52,
56],
256],
12990:[[
52,
57],
256],
12991:[[
53,
48],
256],
12992:[[
49,
26376],
256],
12993:[[
50,
26376],
256],
12994:[[
51,
26376],
256],
12995:[[
52,
26376],
256],
12996:[[
53,
26376],
256],
12997:[[
54,
26376],
256],
12998:[[
55,
26376],
256],
12999:[[
56,
26376],
256],
13000:[[
57,
26376],
256],
13001:[[
49,
48,
26376],
256],
13002:[[
49,
49,
26376],
256],
13003:[[
49,
50,
26376],
256],
13004:[[
72,
103],
256],
13005:[[
101,
114,
103],
256],
13006:[[
101,
86],
256],
13007:[[
76,
84,
68],
256],
13008:[[
12450],
256],
13009:[[
12452],
256],
13010:[[
12454],
256],
13011:[[
12456],
256],
13012:[[
12458],
256],
13013:[[
12459],
256],
13014:[[
12461],
256],
13015:[[
12463],
256],
13016:[[
12465],
256],
13017:[[
12467],
256],
13018:[[
12469],
256],
13019:[[
12471],
256],
13020:[[
12473],
256],
13021:[[
12475],
256],
13022:[[
12477],
256],
13023:[[
12479],
256],
13024:[[
12481],
256],
13025:[[
12484],
256],
13026:[[
12486],
256],
13027:[[
12488],
256],
13028:[[
12490],
256],
13029:[[
12491],
256],
13030:[[
12492],
256],
13031:[[
12493],
256],
13032:[[
12494],
256],
13033:[[
12495],
256],
13034:[[
12498],
256],
13035:[[
12501],
256],
13036:[[
12504],
256],
13037:[[
12507],
256],
13038:[[
12510],
256],
13039:[[
12511],
256],
13040:[[
12512],
256],
13041:[[
12513],
256],
13042:[[
12514],
256],
13043:[[
12516],
256],
13044:[[
12518],
256],
13045:[[
12520],
256],
13046:[[
12521],
256],
13047:[[
12522],
256],
13048:[[
12523],
256],
13049:[[
12524],
256],
13050:[[
12525],
256],
13051:[[
12527],
256],
13052:[[
12528],
256],
13053:[[
12529],
256],
13054:[[
12530],
256]},
7014 13056:{
13056:[[
12450,
12497,
12540,
12488],
256],
13057:[[
12450,
12523,
12501,
12449],
256],
13058:[[
12450,
12531,
12506,
12450],
256],
13059:[[
12450,
12540,
12523],
256],
13060:[[
12452,
12491,
12531,
12464],
256],
13061:[[
12452,
12531,
12481],
256],
13062:[[
12454,
12457,
12531],
256],
13063:[[
12456,
12473,
12463,
12540,
12489],
256],
13064:[[
12456,
12540,
12459,
12540],
256],
13065:[[
12458,
12531,
12473],
256],
13066:[[
12458,
12540,
12512],
256],
13067:[[
12459,
12452,
12522],
256],
13068:[[
12459,
12521,
12483,
12488],
256],
13069:[[
12459,
12525,
12522,
12540],
256],
13070:[[
12460,
12525,
12531],
256],
13071:[[
12460,
12531,
12510],
256],
13072:[[
12462,
12460],
256],
13073:[[
12462,
12491,
12540],
256],
13074:[[
12461,
12517,
12522,
12540],
256],
13075:[[
12462,
12523,
12480,
12540],
256],
13076:[[
12461,
12525],
256],
13077:[[
12461,
12525,
12464,
12521,
12512],
256],
13078:[[
12461,
12525,
12513,
12540,
12488,
12523],
256],
13079:[[
12461,
12525,
12527,
12483,
12488],
256],
13080:[[
12464,
12521,
12512],
256],
13081:[[
12464,
12521,
12512,
12488,
12531],
256],
13082:[[
12463,
12523,
12476,
12452,
12525],
256],
13083:[[
12463,
12525,
12540,
12493],
256],
13084:[[
12465,
12540,
12473],
256],
13085:[[
12467,
12523,
12490],
256],
13086:[[
12467,
12540,
12509],
256],
13087:[[
12469,
12452,
12463,
12523],
256],
13088:[[
12469,
12531,
12481,
12540,
12512],
256],
13089:[[
12471,
12522,
12531,
12464],
256],
13090:[[
12475,
12531,
12481],
256],
13091:[[
12475,
12531,
12488],
256],
13092:[[
12480,
12540,
12473],
256],
13093:[[
12487,
12471],
256],
13094:[[
12489,
12523],
256],
13095:[[
12488,
12531],
256],
13096:[[
12490,
12494],
256],
13097:[[
12494,
12483,
12488],
256],
13098:[[
12495,
12452,
12484],
256],
13099:[[
12497,
12540,
12475,
12531,
12488],
256],
13100:[[
12497,
12540,
12484],
256],
13101:[[
12496,
12540,
12524,
12523],
256],
13102:[[
12500,
12450,
12473,
12488,
12523],
256],
13103:[[
12500,
12463,
12523],
256],
13104:[[
12500,
12467],
256],
13105:[[
12499,
12523],
256],
13106:[[
12501,
12449,
12521,
12483,
12489],
256],
13107:[[
12501,
12451,
12540,
12488],
256],
13108:[[
12502,
12483,
12471,
12455,
12523],
256],
13109:[[
12501,
12521,
12531],
256],
13110:[[
12504,
12463,
12479,
12540,
12523],
256],
13111:[[
12506,
12477],
256],
13112:[[
12506,
12491,
12498],
256],
13113:[[
12504,
12523,
12484],
256],
13114:[[
12506,
12531,
12473],
256],
13115:[[
12506,
12540,
12472],
256],
13116:[[
12505,
12540,
12479],
256],
13117:[[
12509,
12452,
12531,
12488],
256],
13118:[[
12508,
12523,
12488],
256],
13119:[[
12507,
12531],
256],
13120:[[
12509,
12531,
12489],
256],
13121:[[
12507,
12540,
12523],
256],
13122:[[
12507,
12540,
12531],
256],
13123:[[
12510,
12452,
12463,
12525],
256],
13124:[[
12510,
12452,
12523],
256],
13125:[[
12510,
12483,
12495],
256],
13126:[[
12510,
12523,
12463],
256],
13127:[[
12510,
12531,
12471,
12519,
12531],
256],
13128:[[
12511,
12463,
12525,
12531],
256],
13129:[[
12511,
12522],
256],
13130:[[
12511,
12522,
12496,
12540,
12523],
256],
13131:[[
12513,
12460],
256],
13132:[[
12513,
12460,
12488,
12531],
256],
13133:[[
12513,
12540,
12488,
12523],
256],
13134:[[
12516,
12540,
12489],
256],
13135:[[
12516,
12540,
12523],
256],
13136:[[
12518,
12450,
12531],
256],
13137:[[
12522,
12483,
12488,
12523],
256],
13138:[[
12522,
12521],
256],
13139:[[
12523,
12500,
12540],
256],
13140:[[
12523,
12540,
12502,
12523],
256],
13141:[[
12524,
12512],
256],
13142:[[
12524,
12531,
12488,
12466,
12531],
256],
13143:[[
12527,
12483,
12488],
256],
13144:[[
48,
28857],
256],
13145:[[
49,
28857],
256],
13146:[[
50,
28857],
256],
13147:[[
51,
28857],
256],
13148:[[
52,
28857],
256],
13149:[[
53,
28857],
256],
13150:[[
54,
28857],
256],
13151:[[
55,
28857],
256],
13152:[[
56,
28857],
256],
13153:[[
57,
28857],
256],
13154:[[
49,
48,
28857],
256],
13155:[[
49,
49,
28857],
256],
13156:[[
49,
50,
28857],
256],
13157:[[
49,
51,
28857],
256],
13158:[[
49,
52,
28857],
256],
13159:[[
49,
53,
28857],
256],
13160:[[
49,
54,
28857],
256],
13161:[[
49,
55,
28857],
256],
13162:[[
49,
56,
28857],
256],
13163:[[
49,
57,
28857],
256],
13164:[[
50,
48,
28857],
256],
13165:[[
50,
49,
28857],
256],
13166:[[
50,
50,
28857],
256],
13167:[[
50,
51,
28857],
256],
13168:[[
50,
52,
28857],
256],
13169:[[
104,
80,
97],
256],
13170:[[
100,
97],
256],
13171:[[
65,
85],
256],
13172:[[
98,
97,
114],
256],
13173:[[
111,
86],
256],
13174:[[
112,
99],
256],
13175:[[
100,
109],
256],
13176:[[
100,
109,
178],
256],
13177:[[
100,
109,
179],
256],
13178:[[
73,
85],
256],
13179:[[
24179,
25104],
256],
13180:[[
26157,
21644],
256],
13181:[[
22823,
27491],
256],
13182:[[
26126,
27835],
256],
13183:[[
26666,
24335,
20250,
31038],
256],
13184:[[
112,
65],
256],
13185:[[
110,
65],
256],
13186:[[
956,
65],
256],
13187:[[
109,
65],
256],
13188:[[
107,
65],
256],
13189:[[
75,
66],
256],
13190:[[
77,
66],
256],
13191:[[
71,
66],
256],
13192:[[
99,
97,
108],
256],
13193:[[
107,
99,
97,
108],
256],
13194:[[
112,
70],
256],
13195:[[
110,
70],
256],
13196:[[
956,
70],
256],
13197:[[
956,
103],
256],
13198:[[
109,
103],
256],
13199:[[
107,
103],
256],
13200:[[
72,
122],
256],
13201:[[
107,
72,
122],
256],
13202:[[
77,
72,
122],
256],
13203:[[
71,
72,
122],
256],
13204:[[
84,
72,
122],
256],
13205:[[
956,
8467],
256],
13206:[[
109,
8467],
256],
13207:[[
100,
8467],
256],
13208:[[
107,
8467],
256],
13209:[[
102,
109],
256],
13210:[[
110,
109],
256],
13211:[[
956,
109],
256],
13212:[[
109,
109],
256],
13213:[[
99,
109],
256],
13214:[[
107,
109],
256],
13215:[[
109,
109,
178],
256],
13216:[[
99,
109,
178],
256],
13217:[[
109,
178],
256],
13218:[[
107,
109,
178],
256],
13219:[[
109,
109,
179],
256],
13220:[[
99,
109,
179],
256],
13221:[[
109,
179],
256],
13222:[[
107,
109,
179],
256],
13223:[[
109,
8725,
115],
256],
13224:[[
109,
8725,
115,
178],
256],
13225:[[
80,
97],
256],
13226:[[
107,
80,
97],
256],
13227:[[
77,
80,
97],
256],
13228:[[
71,
80,
97],
256],
13229:[[
114,
97,
100],
256],
13230:[[
114,
97,
100,
8725,
115],
256],
13231:[[
114,
97,
100,
8725,
115,
178],
256],
13232:[[
112,
115],
256],
13233:[[
110,
115],
256],
13234:[[
956,
115],
256],
13235:[[
109,
115],
256],
13236:[[
112,
86],
256],
13237:[[
110,
86],
256],
13238:[[
956,
86],
256],
13239:[[
109,
86],
256],
13240:[[
107,
86],
256],
13241:[[
77,
86],
256],
13242:[[
112,
87],
256],
13243:[[
110,
87],
256],
13244:[[
956,
87],
256],
13245:[[
109,
87],
256],
13246:[[
107,
87],
256],
13247:[[
77,
87],
256],
13248:[[
107,
937],
256],
13249:[[
77,
937],
256],
13250:[[
97,
46,
109,
46],
256],
13251:[[
66,
113],
256],
13252:[[
99,
99],
256],
13253:[[
99,
100],
256],
13254:[[
67,
8725,
107,
103],
256],
13255:[[
67,
111,
46],
256],
13256:[[
100,
66],
256],
13257:[[
71,
121],
256],
13258:[[
104,
97],
256],
13259:[[
72,
80],
256],
13260:[[
105,
110],
256],
13261:[[
75,
75],
256],
13262:[[
75,
77],
256],
13263:[[
107,
116],
256],
13264:[[
108,
109],
256],
13265:[[
108,
110],
256],
13266:[[
108,
111,
103],
256],
13267:[[
108,
120],
256],
13268:[[
109,
98],
256],
13269:[[
109,
105,
108],
256],
13270:[[
109,
111,
108],
256],
13271:[[
80,
72],
256],
13272:[[
112,
46,
109,
46],
256],
13273:[[
80,
80,
77],
256],
13274:[[
80,
82],
256],
13275:[[
115,
114],
256],
13276:[[
83,
118],
256],
13277:[[
87,
98],
256],
13278:[[
86,
8725,
109],
256],
13279:[[
65,
8725,
109],
256],
13280:[[
49,
26085],
256],
13281:[[
50,
26085],
256],
13282:[[
51,
26085],
256],
13283:[[
52,
26085],
256],
13284:[[
53,
26085],
256],
13285:[[
54,
26085],
256],
13286:[[
55,
26085],
256],
13287:[[
56,
26085],
256],
13288:[[
57,
26085],
256],
13289:[[
49,
48,
26085],
256],
13290:[[
49,
49,
26085],
256],
13291:[[
49,
50,
26085],
256],
13292:[[
49,
51,
26085],
256],
13293:[[
49,
52,
26085],
256],
13294:[[
49,
53,
26085],
256],
13295:[[
49,
54,
26085],
256],
13296:[[
49,
55,
26085],
256],
13297:[[
49,
56,
26085],
256],
13298:[[
49,
57,
26085],
256],
13299:[[
50,
48,
26085],
256],
13300:[[
50,
49,
26085],
256],
13301:[[
50,
50,
26085],
256],
13302:[[
50,
51,
26085],
256],
13303:[[
50,
52,
26085],
256],
13304:[[
50,
53,
26085],
256],
13305:[[
50,
54,
26085],
256],
13306:[[
50,
55,
26085],
256],
13307:[[
50,
56,
26085],
256],
13308:[[
50,
57,
26085],
256],
13309:[[
51,
48,
26085],
256],
13310:[[
51,
49,
26085],
256],
13311:[[
103,
97,
108],
256]},
7015 27136:{
92912:[,
1],
92913:[,
1],
92914:[,
1],
92915:[,
1],
92916:[,
1]},
7016 27392:{
92976:[,
230],
92977:[,
230],
92978:[,
230],
92979:[,
230],
92980:[,
230],
92981:[,
230],
92982:[,
230]},
7017 42496:{
42607:[,
230],
42612:[,
230],
42613:[,
230],
42614:[,
230],
42615:[,
230],
42616:[,
230],
42617:[,
230],
42618:[,
230],
42619:[,
230],
42620:[,
230],
42621:[,
230],
42652:[[
1098],
256],
42653:[[
1100],
256],
42655:[,
230],
42736:[,
230],
42737:[,
230]},
7018 42752:{
42864:[[
42863],
256],
43000:[[
294],
256],
43001:[[
339],
256]},
7019 43008:{
43014:[,
9],
43204:[,
9],
43232:[,
230],
43233:[,
230],
43234:[,
230],
43235:[,
230],
43236:[,
230],
43237:[,
230],
43238:[,
230],
43239:[,
230],
43240:[,
230],
43241:[,
230],
43242:[,
230],
43243:[,
230],
43244:[,
230],
43245:[,
230],
43246:[,
230],
43247:[,
230],
43248:[,
230],
43249:[,
230]},
7020 43264:{
43307:[,
220],
43308:[,
220],
43309:[,
220],
43347:[,
9],
43443:[,
7],
43456:[,
9]},
7021 43520:{
43696:[,
230],
43698:[,
230],
43699:[,
230],
43700:[,
220],
43703:[,
230],
43704:[,
230],
43710:[,
230],
43711:[,
230],
43713:[,
230],
43766:[,
9]},
7022 43776:{
43868:[[
42791],
256],
43869:[[
43831],
256],
43870:[[
619],
256],
43871:[[
43858],
256],
44013:[,
9]},
7023 48128:{
113822:[,
1]},
7024 53504:{
119134:[[
119127,
119141],
512],
119135:[[
119128,
119141],
512],
119136:[[
119135,
119150],
512],
119137:[[
119135,
119151],
512],
119138:[[
119135,
119152],
512],
119139:[[
119135,
119153],
512],
119140:[[
119135,
119154],
512],
119141:[,
216],
119142:[,
216],
119143:[,
1],
119144:[,
1],
119145:[,
1],
119149:[,
226],
119150:[,
216],
119151:[,
216],
119152:[,
216],
119153:[,
216],
119154:[,
216],
119163:[,
220],
119164:[,
220],
119165:[,
220],
119166:[,
220],
119167:[,
220],
119168:[,
220],
119169:[,
220],
119170:[,
220],
119173:[,
230],
119174:[,
230],
119175:[,
230],
119176:[,
230],
119177:[,
230],
119178:[,
220],
119179:[,
220],
119210:[,
230],
119211:[,
230],
119212:[,
230],
119213:[,
230],
119227:[[
119225,
119141],
512],
119228:[[
119226,
119141],
512],
119229:[[
119227,
119150],
512],
119230:[[
119228,
119150],
512],
119231:[[
119227,
119151],
512],
119232:[[
119228,
119151],
512]},
7025 53760:{
119362:[,
230],
119363:[,
230],
119364:[,
230]},
7026 54272:{
119808:[[
65],
256],
119809:[[
66],
256],
119810:[[
67],
256],
119811:[[
68],
256],
119812:[[
69],
256],
119813:[[
70],
256],
119814:[[
71],
256],
119815:[[
72],
256],
119816:[[
73],
256],
119817:[[
74],
256],
119818:[[
75],
256],
119819:[[
76],
256],
119820:[[
77],
256],
119821:[[
78],
256],
119822:[[
79],
256],
119823:[[
80],
256],
119824:[[
81],
256],
119825:[[
82],
256],
119826:[[
83],
256],
119827:[[
84],
256],
119828:[[
85],
256],
119829:[[
86],
256],
119830:[[
87],
256],
119831:[[
88],
256],
119832:[[
89],
256],
119833:[[
90],
256],
119834:[[
97],
256],
119835:[[
98],
256],
119836:[[
99],
256],
119837:[[
100],
256],
119838:[[
101],
256],
119839:[[
102],
256],
119840:[[
103],
256],
119841:[[
104],
256],
119842:[[
105],
256],
119843:[[
106],
256],
119844:[[
107],
256],
119845:[[
108],
256],
119846:[[
109],
256],
119847:[[
110],
256],
119848:[[
111],
256],
119849:[[
112],
256],
119850:[[
113],
256],
119851:[[
114],
256],
119852:[[
115],
256],
119853:[[
116],
256],
119854:[[
117],
256],
119855:[[
118],
256],
119856:[[
119],
256],
119857:[[
120],
256],
119858:[[
121],
256],
119859:[[
122],
256],
119860:[[
65],
256],
119861:[[
66],
256],
119862:[[
67],
256],
119863:[[
68],
256],
119864:[[
69],
256],
119865:[[
70],
256],
119866:[[
71],
256],
119867:[[
72],
256],
119868:[[
73],
256],
119869:[[
74],
256],
119870:[[
75],
256],
119871:[[
76],
256],
119872:[[
77],
256],
119873:[[
78],
256],
119874:[[
79],
256],
119875:[[
80],
256],
119876:[[
81],
256],
119877:[[
82],
256],
119878:[[
83],
256],
119879:[[
84],
256],
119880:[[
85],
256],
119881:[[
86],
256],
119882:[[
87],
256],
119883:[[
88],
256],
119884:[[
89],
256],
119885:[[
90],
256],
119886:[[
97],
256],
119887:[[
98],
256],
119888:[[
99],
256],
119889:[[
100],
256],
119890:[[
101],
256],
119891:[[
102],
256],
119892:[[
103],
256],
119894:[[
105],
256],
119895:[[
106],
256],
119896:[[
107],
256],
119897:[[
108],
256],
119898:[[
109],
256],
119899:[[
110],
256],
119900:[[
111],
256],
119901:[[
112],
256],
119902:[[
113],
256],
119903:[[
114],
256],
119904:[[
115],
256],
119905:[[
116],
256],
119906:[[
117],
256],
119907:[[
118],
256],
119908:[[
119],
256],
119909:[[
120],
256],
119910:[[
121],
256],
119911:[[
122],
256],
119912:[[
65],
256],
119913:[[
66],
256],
119914:[[
67],
256],
119915:[[
68],
256],
119916:[[
69],
256],
119917:[[
70],
256],
119918:[[
71],
256],
119919:[[
72],
256],
119920:[[
73],
256],
119921:[[
74],
256],
119922:[[
75],
256],
119923:[[
76],
256],
119924:[[
77],
256],
119925:[[
78],
256],
119926:[[
79],
256],
119927:[[
80],
256],
119928:[[
81],
256],
119929:[[
82],
256],
119930:[[
83],
256],
119931:[[
84],
256],
119932:[[
85],
256],
119933:[[
86],
256],
119934:[[
87],
256],
119935:[[
88],
256],
119936:[[
89],
256],
119937:[[
90],
256],
119938:[[
97],
256],
119939:[[
98],
256],
119940:[[
99],
256],
119941:[[
100],
256],
119942:[[
101],
256],
119943:[[
102],
256],
119944:[[
103],
256],
119945:[[
104],
256],
119946:[[
105],
256],
119947:[[
106],
256],
119948:[[
107],
256],
119949:[[
108],
256],
119950:[[
109],
256],
119951:[[
110],
256],
119952:[[
111],
256],
119953:[[
112],
256],
119954:[[
113],
256],
119955:[[
114],
256],
119956:[[
115],
256],
119957:[[
116],
256],
119958:[[
117],
256],
119959:[[
118],
256],
119960:[[
119],
256],
119961:[[
120],
256],
119962:[[
121],
256],
119963:[[
122],
256],
119964:[[
65],
256],
119966:[[
67],
256],
119967:[[
68],
256],
119970:[[
71],
256],
119973:[[
74],
256],
119974:[[
75],
256],
119977:[[
78],
256],
119978:[[
79],
256],
119979:[[
80],
256],
119980:[[
81],
256],
119982:[[
83],
256],
119983:[[
84],
256],
119984:[[
85],
256],
119985:[[
86],
256],
119986:[[
87],
256],
119987:[[
88],
256],
119988:[[
89],
256],
119989:[[
90],
256],
119990:[[
97],
256],
119991:[[
98],
256],
119992:[[
99],
256],
119993:[[
100],
256],
119995:[[
102],
256],
119997:[[
104],
256],
119998:[[
105],
256],
119999:[[
106],
256],
120000:[[
107],
256],
120001:[[
108],
256],
120002:[[
109],
256],
120003:[[
110],
256],
120005:[[
112],
256],
120006:[[
113],
256],
120007:[[
114],
256],
120008:[[
115],
256],
120009:[[
116],
256],
120010:[[
117],
256],
120011:[[
118],
256],
120012:[[
119],
256],
120013:[[
120],
256],
120014:[[
121],
256],
120015:[[
122],
256],
120016:[[
65],
256],
120017:[[
66],
256],
120018:[[
67],
256],
120019:[[
68],
256],
120020:[[
69],
256],
120021:[[
70],
256],
120022:[[
71],
256],
120023:[[
72],
256],
120024:[[
73],
256],
120025:[[
74],
256],
120026:[[
75],
256],
120027:[[
76],
256],
120028:[[
77],
256],
120029:[[
78],
256],
120030:[[
79],
256],
120031:[[
80],
256],
120032:[[
81],
256],
120033:[[
82],
256],
120034:[[
83],
256],
120035:[[
84],
256],
120036:[[
85],
256],
120037:[[
86],
256],
120038:[[
87],
256],
120039:[[
88],
256],
120040:[[
89],
256],
120041:[[
90],
256],
120042:[[
97],
256],
120043:[[
98],
256],
120044:[[
99],
256],
120045:[[
100],
256],
120046:[[
101],
256],
120047:[[
102],
256],
120048:[[
103],
256],
120049:[[
104],
256],
120050:[[
105],
256],
120051:[[
106],
256],
120052:[[
107],
256],
120053:[[
108],
256],
120054:[[
109],
256],
120055:[[
110],
256],
120056:[[
111],
256],
120057:[[
112],
256],
120058:[[
113],
256],
120059:[[
114],
256],
120060:[[
115],
256],
120061:[[
116],
256],
120062:[[
117],
256],
120063:[[
118],
256]},
7027 54528:{
120064:[[
119],
256],
120065:[[
120],
256],
120066:[[
121],
256],
120067:[[
122],
256],
120068:[[
65],
256],
120069:[[
66],
256],
120071:[[
68],
256],
120072:[[
69],
256],
120073:[[
70],
256],
120074:[[
71],
256],
120077:[[
74],
256],
120078:[[
75],
256],
120079:[[
76],
256],
120080:[[
77],
256],
120081:[[
78],
256],
120082:[[
79],
256],
120083:[[
80],
256],
120084:[[
81],
256],
120086:[[
83],
256],
120087:[[
84],
256],
120088:[[
85],
256],
120089:[[
86],
256],
120090:[[
87],
256],
120091:[[
88],
256],
120092:[[
89],
256],
120094:[[
97],
256],
120095:[[
98],
256],
120096:[[
99],
256],
120097:[[
100],
256],
120098:[[
101],
256],
120099:[[
102],
256],
120100:[[
103],
256],
120101:[[
104],
256],
120102:[[
105],
256],
120103:[[
106],
256],
120104:[[
107],
256],
120105:[[
108],
256],
120106:[[
109],
256],
120107:[[
110],
256],
120108:[[
111],
256],
120109:[[
112],
256],
120110:[[
113],
256],
120111:[[
114],
256],
120112:[[
115],
256],
120113:[[
116],
256],
120114:[[
117],
256],
120115:[[
118],
256],
120116:[[
119],
256],
120117:[[
120],
256],
120118:[[
121],
256],
120119:[[
122],
256],
120120:[[
65],
256],
120121:[[
66],
256],
120123:[[
68],
256],
120124:[[
69],
256],
120125:[[
70],
256],
120126:[[
71],
256],
120128:[[
73],
256],
120129:[[
74],
256],
120130:[[
75],
256],
120131:[[
76],
256],
120132:[[
77],
256],
120134:[[
79],
256],
120138:[[
83],
256],
120139:[[
84],
256],
120140:[[
85],
256],
120141:[[
86],
256],
120142:[[
87],
256],
120143:[[
88],
256],
120144:[[
89],
256],
120146:[[
97],
256],
120147:[[
98],
256],
120148:[[
99],
256],
120149:[[
100],
256],
120150:[[
101],
256],
120151:[[
102],
256],
120152:[[
103],
256],
120153:[[
104],
256],
120154:[[
105],
256],
120155:[[
106],
256],
120156:[[
107],
256],
120157:[[
108],
256],
120158:[[
109],
256],
120159:[[
110],
256],
120160:[[
111],
256],
120161:[[
112],
256],
120162:[[
113],
256],
120163:[[
114],
256],
120164:[[
115],
256],
120165:[[
116],
256],
120166:[[
117],
256],
120167:[[
118],
256],
120168:[[
119],
256],
120169:[[
120],
256],
120170:[[
121],
256],
120171:[[
122],
256],
120172:[[
65],
256],
120173:[[
66],
256],
120174:[[
67],
256],
120175:[[
68],
256],
120176:[[
69],
256],
120177:[[
70],
256],
120178:[[
71],
256],
120179:[[
72],
256],
120180:[[
73],
256],
120181:[[
74],
256],
120182:[[
75],
256],
120183:[[
76],
256],
120184:[[
77],
256],
120185:[[
78],
256],
120186:[[
79],
256],
120187:[[
80],
256],
120188:[[
81],
256],
120189:[[
82],
256],
120190:[[
83],
256],
120191:[[
84],
256],
120192:[[
85],
256],
120193:[[
86],
256],
120194:[[
87],
256],
120195:[[
88],
256],
120196:[[
89],
256],
120197:[[
90],
256],
120198:[[
97],
256],
120199:[[
98],
256],
120200:[[
99],
256],
120201:[[
100],
256],
120202:[[
101],
256],
120203:[[
102],
256],
120204:[[
103],
256],
120205:[[
104],
256],
120206:[[
105],
256],
120207:[[
106],
256],
120208:[[
107],
256],
120209:[[
108],
256],
120210:[[
109],
256],
120211:[[
110],
256],
120212:[[
111],
256],
120213:[[
112],
256],
120214:[[
113],
256],
120215:[[
114],
256],
120216:[[
115],
256],
120217:[[
116],
256],
120218:[[
117],
256],
120219:[[
118],
256],
120220:[[
119],
256],
120221:[[
120],
256],
120222:[[
121],
256],
120223:[[
122],
256],
120224:[[
65],
256],
120225:[[
66],
256],
120226:[[
67],
256],
120227:[[
68],
256],
120228:[[
69],
256],
120229:[[
70],
256],
120230:[[
71],
256],
120231:[[
72],
256],
120232:[[
73],
256],
120233:[[
74],
256],
120234:[[
75],
256],
120235:[[
76],
256],
120236:[[
77],
256],
120237:[[
78],
256],
120238:[[
79],
256],
120239:[[
80],
256],
120240:[[
81],
256],
120241:[[
82],
256],
120242:[[
83],
256],
120243:[[
84],
256],
120244:[[
85],
256],
120245:[[
86],
256],
120246:[[
87],
256],
120247:[[
88],
256],
120248:[[
89],
256],
120249:[[
90],
256],
120250:[[
97],
256],
120251:[[
98],
256],
120252:[[
99],
256],
120253:[[
100],
256],
120254:[[
101],
256],
120255:[[
102],
256],
120256:[[
103],
256],
120257:[[
104],
256],
120258:[[
105],
256],
120259:[[
106],
256],
120260:[[
107],
256],
120261:[[
108],
256],
120262:[[
109],
256],
120263:[[
110],
256],
120264:[[
111],
256],
120265:[[
112],
256],
120266:[[
113],
256],
120267:[[
114],
256],
120268:[[
115],
256],
120269:[[
116],
256],
120270:[[
117],
256],
120271:[[
118],
256],
120272:[[
119],
256],
120273:[[
120],
256],
120274:[[
121],
256],
120275:[[
122],
256],
120276:[[
65],
256],
120277:[[
66],
256],
120278:[[
67],
256],
120279:[[
68],
256],
120280:[[
69],
256],
120281:[[
70],
256],
120282:[[
71],
256],
120283:[[
72],
256],
120284:[[
73],
256],
120285:[[
74],
256],
120286:[[
75],
256],
120287:[[
76],
256],
120288:[[
77],
256],
120289:[[
78],
256],
120290:[[
79],
256],
120291:[[
80],
256],
120292:[[
81],
256],
120293:[[
82],
256],
120294:[[
83],
256],
120295:[[
84],
256],
120296:[[
85],
256],
120297:[[
86],
256],
120298:[[
87],
256],
120299:[[
88],
256],
120300:[[
89],
256],
120301:[[
90],
256],
120302:[[
97],
256],
120303:[[
98],
256],
120304:[[
99],
256],
120305:[[
100],
256],
120306:[[
101],
256],
120307:[[
102],
256],
120308:[[
103],
256],
120309:[[
104],
256],
120310:[[
105],
256],
120311:[[
106],
256],
120312:[[
107],
256],
120313:[[
108],
256],
120314:[[
109],
256],
120315:[[
110],
256],
120316:[[
111],
256],
120317:[[
112],
256],
120318:[[
113],
256],
120319:[[
114],
256]},
7028 54784:{
120320:[[
115],
256],
120321:[[
116],
256],
120322:[[
117],
256],
120323:[[
118],
256],
120324:[[
119],
256],
120325:[[
120],
256],
120326:[[
121],
256],
120327:[[
122],
256],
120328:[[
65],
256],
120329:[[
66],
256],
120330:[[
67],
256],
120331:[[
68],
256],
120332:[[
69],
256],
120333:[[
70],
256],
120334:[[
71],
256],
120335:[[
72],
256],
120336:[[
73],
256],
120337:[[
74],
256],
120338:[[
75],
256],
120339:[[
76],
256],
120340:[[
77],
256],
120341:[[
78],
256],
120342:[[
79],
256],
120343:[[
80],
256],
120344:[[
81],
256],
120345:[[
82],
256],
120346:[[
83],
256],
120347:[[
84],
256],
120348:[[
85],
256],
120349:[[
86],
256],
120350:[[
87],
256],
120351:[[
88],
256],
120352:[[
89],
256],
120353:[[
90],
256],
120354:[[
97],
256],
120355:[[
98],
256],
120356:[[
99],
256],
120357:[[
100],
256],
120358:[[
101],
256],
120359:[[
102],
256],
120360:[[
103],
256],
120361:[[
104],
256],
120362:[[
105],
256],
120363:[[
106],
256],
120364:[[
107],
256],
120365:[[
108],
256],
120366:[[
109],
256],
120367:[[
110],
256],
120368:[[
111],
256],
120369:[[
112],
256],
120370:[[
113],
256],
120371:[[
114],
256],
120372:[[
115],
256],
120373:[[
116],
256],
120374:[[
117],
256],
120375:[[
118],
256],
120376:[[
119],
256],
120377:[[
120],
256],
120378:[[
121],
256],
120379:[[
122],
256],
120380:[[
65],
256],
120381:[[
66],
256],
120382:[[
67],
256],
120383:[[
68],
256],
120384:[[
69],
256],
120385:[[
70],
256],
120386:[[
71],
256],
120387:[[
72],
256],
120388:[[
73],
256],
120389:[[
74],
256],
120390:[[
75],
256],
120391:[[
76],
256],
120392:[[
77],
256],
120393:[[
78],
256],
120394:[[
79],
256],
120395:[[
80],
256],
120396:[[
81],
256],
120397:[[
82],
256],
120398:[[
83],
256],
120399:[[
84],
256],
120400:[[
85],
256],
120401:[[
86],
256],
120402:[[
87],
256],
120403:[[
88],
256],
120404:[[
89],
256],
120405:[[
90],
256],
120406:[[
97],
256],
120407:[[
98],
256],
120408:[[
99],
256],
120409:[[
100],
256],
120410:[[
101],
256],
120411:[[
102],
256],
120412:[[
103],
256],
120413:[[
104],
256],
120414:[[
105],
256],
120415:[[
106],
256],
120416:[[
107],
256],
120417:[[
108],
256],
120418:[[
109],
256],
120419:[[
110],
256],
120420:[[
111],
256],
120421:[[
112],
256],
120422:[[
113],
256],
120423:[[
114],
256],
120424:[[
115],
256],
120425:[[
116],
256],
120426:[[
117],
256],
120427:[[
118],
256],
120428:[[
119],
256],
120429:[[
120],
256],
120430:[[
121],
256],
120431:[[
122],
256],
120432:[[
65],
256],
120433:[[
66],
256],
120434:[[
67],
256],
120435:[[
68],
256],
120436:[[
69],
256],
120437:[[
70],
256],
120438:[[
71],
256],
120439:[[
72],
256],
120440:[[
73],
256],
120441:[[
74],
256],
120442:[[
75],
256],
120443:[[
76],
256],
120444:[[
77],
256],
120445:[[
78],
256],
120446:[[
79],
256],
120447:[[
80],
256],
120448:[[
81],
256],
120449:[[
82],
256],
120450:[[
83],
256],
120451:[[
84],
256],
120452:[[
85],
256],
120453:[[
86],
256],
120454:[[
87],
256],
120455:[[
88],
256],
120456:[[
89],
256],
120457:[[
90],
256],
120458:[[
97],
256],
120459:[[
98],
256],
120460:[[
99],
256],
120461:[[
100],
256],
120462:[[
101],
256],
120463:[[
102],
256],
120464:[[
103],
256],
120465:[[
104],
256],
120466:[[
105],
256],
120467:[[
106],
256],
120468:[[
107],
256],
120469:[[
108],
256],
120470:[[
109],
256],
120471:[[
110],
256],
120472:[[
111],
256],
120473:[[
112],
256],
120474:[[
113],
256],
120475:[[
114],
256],
120476:[[
115],
256],
120477:[[
116],
256],
120478:[[
117],
256],
120479:[[
118],
256],
120480:[[
119],
256],
120481:[[
120],
256],
120482:[[
121],
256],
120483:[[
122],
256],
120484:[[
305],
256],
120485:[[
567],
256],
120488:[[
913],
256],
120489:[[
914],
256],
120490:[[
915],
256],
120491:[[
916],
256],
120492:[[
917],
256],
120493:[[
918],
256],
120494:[[
919],
256],
120495:[[
920],
256],
120496:[[
921],
256],
120497:[[
922],
256],
120498:[[
923],
256],
120499:[[
924],
256],
120500:[[
925],
256],
120501:[[
926],
256],
120502:[[
927],
256],
120503:[[
928],
256],
120504:[[
929],
256],
120505:[[
1012],
256],
120506:[[
931],
256],
120507:[[
932],
256],
120508:[[
933],
256],
120509:[[
934],
256],
120510:[[
935],
256],
120511:[[
936],
256],
120512:[[
937],
256],
120513:[[
8711],
256],
120514:[[
945],
256],
120515:[[
946],
256],
120516:[[
947],
256],
120517:[[
948],
256],
120518:[[
949],
256],
120519:[[
950],
256],
120520:[[
951],
256],
120521:[[
952],
256],
120522:[[
953],
256],
120523:[[
954],
256],
120524:[[
955],
256],
120525:[[
956],
256],
120526:[[
957],
256],
120527:[[
958],
256],
120528:[[
959],
256],
120529:[[
960],
256],
120530:[[
961],
256],
120531:[[
962],
256],
120532:[[
963],
256],
120533:[[
964],
256],
120534:[[
965],
256],
120535:[[
966],
256],
120536:[[
967],
256],
120537:[[
968],
256],
120538:[[
969],
256],
120539:[[
8706],
256],
120540:[[
1013],
256],
120541:[[
977],
256],
120542:[[
1008],
256],
120543:[[
981],
256],
120544:[[
1009],
256],
120545:[[
982],
256],
120546:[[
913],
256],
120547:[[
914],
256],
120548:[[
915],
256],
120549:[[
916],
256],
120550:[[
917],
256],
120551:[[
918],
256],
120552:[[
919],
256],
120553:[[
920],
256],
120554:[[
921],
256],
120555:[[
922],
256],
120556:[[
923],
256],
120557:[[
924],
256],
120558:[[
925],
256],
120559:[[
926],
256],
120560:[[
927],
256],
120561:[[
928],
256],
120562:[[
929],
256],
120563:[[
1012],
256],
120564:[[
931],
256],
120565:[[
932],
256],
120566:[[
933],
256],
120567:[[
934],
256],
120568:[[
935],
256],
120569:[[
936],
256],
120570:[[
937],
256],
120571:[[
8711],
256],
120572:[[
945],
256],
120573:[[
946],
256],
120574:[[
947],
256],
120575:[[
948],
256]},
7029 55040:{
120576:[[
949],
256],
120577:[[
950],
256],
120578:[[
951],
256],
120579:[[
952],
256],
120580:[[
953],
256],
120581:[[
954],
256],
120582:[[
955],
256],
120583:[[
956],
256],
120584:[[
957],
256],
120585:[[
958],
256],
120586:[[
959],
256],
120587:[[
960],
256],
120588:[[
961],
256],
120589:[[
962],
256],
120590:[[
963],
256],
120591:[[
964],
256],
120592:[[
965],
256],
120593:[[
966],
256],
120594:[[
967],
256],
120595:[[
968],
256],
120596:[[
969],
256],
120597:[[
8706],
256],
120598:[[
1013],
256],
120599:[[
977],
256],
120600:[[
1008],
256],
120601:[[
981],
256],
120602:[[
1009],
256],
120603:[[
982],
256],
120604:[[
913],
256],
120605:[[
914],
256],
120606:[[
915],
256],
120607:[[
916],
256],
120608:[[
917],
256],
120609:[[
918],
256],
120610:[[
919],
256],
120611:[[
920],
256],
120612:[[
921],
256],
120613:[[
922],
256],
120614:[[
923],
256],
120615:[[
924],
256],
120616:[[
925],
256],
120617:[[
926],
256],
120618:[[
927],
256],
120619:[[
928],
256],
120620:[[
929],
256],
120621:[[
1012],
256],
120622:[[
931],
256],
120623:[[
932],
256],
120624:[[
933],
256],
120625:[[
934],
256],
120626:[[
935],
256],
120627:[[
936],
256],
120628:[[
937],
256],
120629:[[
8711],
256],
120630:[[
945],
256],
120631:[[
946],
256],
120632:[[
947],
256],
120633:[[
948],
256],
120634:[[
949],
256],
120635:[[
950],
256],
120636:[[
951],
256],
120637:[[
952],
256],
120638:[[
953],
256],
120639:[[
954],
256],
120640:[[
955],
256],
120641:[[
956],
256],
120642:[[
957],
256],
120643:[[
958],
256],
120644:[[
959],
256],
120645:[[
960],
256],
120646:[[
961],
256],
120647:[[
962],
256],
120648:[[
963],
256],
120649:[[
964],
256],
120650:[[
965],
256],
120651:[[
966],
256],
120652:[[
967],
256],
120653:[[
968],
256],
120654:[[
969],
256],
120655:[[
8706],
256],
120656:[[
1013],
256],
120657:[[
977],
256],
120658:[[
1008],
256],
120659:[[
981],
256],
120660:[[
1009],
256],
120661:[[
982],
256],
120662:[[
913],
256],
120663:[[
914],
256],
120664:[[
915],
256],
120665:[[
916],
256],
120666:[[
917],
256],
120667:[[
918],
256],
120668:[[
919],
256],
120669:[[
920],
256],
120670:[[
921],
256],
120671:[[
922],
256],
120672:[[
923],
256],
120673:[[
924],
256],
120674:[[
925],
256],
120675:[[
926],
256],
120676:[[
927],
256],
120677:[[
928],
256],
120678:[[
929],
256],
120679:[[
1012],
256],
120680:[[
931],
256],
120681:[[
932],
256],
120682:[[
933],
256],
120683:[[
934],
256],
120684:[[
935],
256],
120685:[[
936],
256],
120686:[[
937],
256],
120687:[[
8711],
256],
120688:[[
945],
256],
120689:[[
946],
256],
120690:[[
947],
256],
120691:[[
948],
256],
120692:[[
949],
256],
120693:[[
950],
256],
120694:[[
951],
256],
120695:[[
952],
256],
120696:[[
953],
256],
120697:[[
954],
256],
120698:[[
955],
256],
120699:[[
956],
256],
120700:[[
957],
256],
120701:[[
958],
256],
120702:[[
959],
256],
120703:[[
960],
256],
120704:[[
961],
256],
120705:[[
962],
256],
120706:[[
963],
256],
120707:[[
964],
256],
120708:[[
965],
256],
120709:[[
966],
256],
120710:[[
967],
256],
120711:[[
968],
256],
120712:[[
969],
256],
120713:[[
8706],
256],
120714:[[
1013],
256],
120715:[[
977],
256],
120716:[[
1008],
256],
120717:[[
981],
256],
120718:[[
1009],
256],
120719:[[
982],
256],
120720:[[
913],
256],
120721:[[
914],
256],
120722:[[
915],
256],
120723:[[
916],
256],
120724:[[
917],
256],
120725:[[
918],
256],
120726:[[
919],
256],
120727:[[
920],
256],
120728:[[
921],
256],
120729:[[
922],
256],
120730:[[
923],
256],
120731:[[
924],
256],
120732:[[
925],
256],
120733:[[
926],
256],
120734:[[
927],
256],
120735:[[
928],
256],
120736:[[
929],
256],
120737:[[
1012],
256],
120738:[[
931],
256],
120739:[[
932],
256],
120740:[[
933],
256],
120741:[[
934],
256],
120742:[[
935],
256],
120743:[[
936],
256],
120744:[[
937],
256],
120745:[[
8711],
256],
120746:[[
945],
256],
120747:[[
946],
256],
120748:[[
947],
256],
120749:[[
948],
256],
120750:[[
949],
256],
120751:[[
950],
256],
120752:[[
951],
256],
120753:[[
952],
256],
120754:[[
953],
256],
120755:[[
954],
256],
120756:[[
955],
256],
120757:[[
956],
256],
120758:[[
957],
256],
120759:[[
958],
256],
120760:[[
959],
256],
120761:[[
960],
256],
120762:[[
961],
256],
120763:[[
962],
256],
120764:[[
963],
256],
120765:[[
964],
256],
120766:[[
965],
256],
120767:[[
966],
256],
120768:[[
967],
256],
120769:[[
968],
256],
120770:[[
969],
256],
120771:[[
8706],
256],
120772:[[
1013],
256],
120773:[[
977],
256],
120774:[[
1008],
256],
120775:[[
981],
256],
120776:[[
1009],
256],
120777:[[
982],
256],
120778:[[
988],
256],
120779:[[
989],
256],
120782:[[
48],
256],
120783:[[
49],
256],
120784:[[
50],
256],
120785:[[
51],
256],
120786:[[
52],
256],
120787:[[
53],
256],
120788:[[
54],
256],
120789:[[
55],
256],
120790:[[
56],
256],
120791:[[
57],
256],
120792:[[
48],
256],
120793:[[
49],
256],
120794:[[
50],
256],
120795:[[
51],
256],
120796:[[
52],
256],
120797:[[
53],
256],
120798:[[
54],
256],
120799:[[
55],
256],
120800:[[
56],
256],
120801:[[
57],
256],
120802:[[
48],
256],
120803:[[
49],
256],
120804:[[
50],
256],
120805:[[
51],
256],
120806:[[
52],
256],
120807:[[
53],
256],
120808:[[
54],
256],
120809:[[
55],
256],
120810:[[
56],
256],
120811:[[
57],
256],
120812:[[
48],
256],
120813:[[
49],
256],
120814:[[
50],
256],
120815:[[
51],
256],
120816:[[
52],
256],
120817:[[
53],
256],
120818:[[
54],
256],
120819:[[
55],
256],
120820:[[
56],
256],
120821:[[
57],
256],
120822:[[
48],
256],
120823:[[
49],
256],
120824:[[
50],
256],
120825:[[
51],
256],
120826:[[
52],
256],
120827:[[
53],
256],
120828:[[
54],
256],
120829:[[
55],
256],
120830:[[
56],
256],
120831:[[
57],
256]},
7030 59392:{
125136:[,
220],
125137:[,
220],
125138:[,
220],
125139:[,
220],
125140:[,
220],
125141:[,
220],
125142:[,
220]},
7031 60928:{
126464:[[
1575],
256],
126465:[[
1576],
256],
126466:[[
1580],
256],
126467:[[
1583],
256],
126469:[[
1608],
256],
126470:[[
1586],
256],
126471:[[
1581],
256],
126472:[[
1591],
256],
126473:[[
1610],
256],
126474:[[
1603],
256],
126475:[[
1604],
256],
126476:[[
1605],
256],
126477:[[
1606],
256],
126478:[[
1587],
256],
126479:[[
1593],
256],
126480:[[
1601],
256],
126481:[[
1589],
256],
126482:[[
1602],
256],
126483:[[
1585],
256],
126484:[[
1588],
256],
126485:[[
1578],
256],
126486:[[
1579],
256],
126487:[[
1582],
256],
126488:[[
1584],
256],
126489:[[
1590],
256],
126490:[[
1592],
256],
126491:[[
1594],
256],
126492:[[
1646],
256],
126493:[[
1722],
256],
126494:[[
1697],
256],
126495:[[
1647],
256],
126497:[[
1576],
256],
126498:[[
1580],
256],
126500:[[
1607],
256],
126503:[[
1581],
256],
126505:[[
1610],
256],
126506:[[
1603],
256],
126507:[[
1604],
256],
126508:[[
1605],
256],
126509:[[
1606],
256],
126510:[[
1587],
256],
126511:[[
1593],
256],
126512:[[
1601],
256],
126513:[[
1589],
256],
126514:[[
1602],
256],
126516:[[
1588],
256],
126517:[[
1578],
256],
126518:[[
1579],
256],
126519:[[
1582],
256],
126521:[[
1590],
256],
126523:[[
1594],
256],
126530:[[
1580],
256],
126535:[[
1581],
256],
126537:[[
1610],
256],
126539:[[
1604],
256],
126541:[[
1606],
256],
126542:[[
1587],
256],
126543:[[
1593],
256],
126545:[[
1589],
256],
126546:[[
1602],
256],
126548:[[
1588],
256],
126551:[[
1582],
256],
126553:[[
1590],
256],
126555:[[
1594],
256],
126557:[[
1722],
256],
126559:[[
1647],
256],
126561:[[
1576],
256],
126562:[[
1580],
256],
126564:[[
1607],
256],
126567:[[
1581],
256],
126568:[[
1591],
256],
126569:[[
1610],
256],
126570:[[
1603],
256],
126572:[[
1605],
256],
126573:[[
1606],
256],
126574:[[
1587],
256],
126575:[[
1593],
256],
126576:[[
1601],
256],
126577:[[
1589],
256],
126578:[[
1602],
256],
126580:[[
1588],
256],
126581:[[
1578],
256],
126582:[[
1579],
256],
126583:[[
1582],
256],
126585:[[
1590],
256],
126586:[[
1592],
256],
126587:[[
1594],
256],
126588:[[
1646],
256],
126590:[[
1697],
256],
126592:[[
1575],
256],
126593:[[
1576],
256],
126594:[[
1580],
256],
126595:[[
1583],
256],
126596:[[
1607],
256],
126597:[[
1608],
256],
126598:[[
1586],
256],
126599:[[
1581],
256],
126600:[[
1591],
256],
126601:[[
1610],
256],
126603:[[
1604],
256],
126604:[[
1605],
256],
126605:[[
1606],
256],
126606:[[
1587],
256],
126607:[[
1593],
256],
126608:[[
1601],
256],
126609:[[
1589],
256],
126610:[[
1602],
256],
126611:[[
1585],
256],
126612:[[
1588],
256],
126613:[[
1578],
256],
126614:[[
1579],
256],
126615:[[
1582],
256],
126616:[[
1584],
256],
126617:[[
1590],
256],
126618:[[
1592],
256],
126619:[[
1594],
256],
126625:[[
1576],
256],
126626:[[
1580],
256],
126627:[[
1583],
256],
126629:[[
1608],
256],
126630:[[
1586],
256],
126631:[[
1581],
256],
126632:[[
1591],
256],
126633:[[
1610],
256],
126635:[[
1604],
256],
126636:[[
1605],
256],
126637:[[
1606],
256],
126638:[[
1587],
256],
126639:[[
1593],
256],
126640:[[
1601],
256],
126641:[[
1589],
256],
126642:[[
1602],
256],
126643:[[
1585],
256],
126644:[[
1588],
256],
126645:[[
1578],
256],
126646:[[
1579],
256],
126647:[[
1582],
256],
126648:[[
1584],
256],
126649:[[
1590],
256],
126650:[[
1592],
256],
126651:[[
1594],
256]},
7032 61696:{
127232:[[
48,
46],
256],
127233:[[
48,
44],
256],
127234:[[
49,
44],
256],
127235:[[
50,
44],
256],
127236:[[
51,
44],
256],
127237:[[
52,
44],
256],
127238:[[
53,
44],
256],
127239:[[
54,
44],
256],
127240:[[
55,
44],
256],
127241:[[
56,
44],
256],
127242:[[
57,
44],
256],
127248:[[
40,
65,
41],
256],
127249:[[
40,
66,
41],
256],
127250:[[
40,
67,
41],
256],
127251:[[
40,
68,
41],
256],
127252:[[
40,
69,
41],
256],
127253:[[
40,
70,
41],
256],
127254:[[
40,
71,
41],
256],
127255:[[
40,
72,
41],
256],
127256:[[
40,
73,
41],
256],
127257:[[
40,
74,
41],
256],
127258:[[
40,
75,
41],
256],
127259:[[
40,
76,
41],
256],
127260:[[
40,
77,
41],
256],
127261:[[
40,
78,
41],
256],
127262:[[
40,
79,
41],
256],
127263:[[
40,
80,
41],
256],
127264:[[
40,
81,
41],
256],
127265:[[
40,
82,
41],
256],
127266:[[
40,
83,
41],
256],
127267:[[
40,
84,
41],
256],
127268:[[
40,
85,
41],
256],
127269:[[
40,
86,
41],
256],
127270:[[
40,
87,
41],
256],
127271:[[
40,
88,
41],
256],
127272:[[
40,
89,
41],
256],
127273:[[
40,
90,
41],
256],
127274:[[
12308,
83,
12309],
256],
127275:[[
67],
256],
127276:[[
82],
256],
127277:[[
67,
68],
256],
127278:[[
87,
90],
256],
127280:[[
65],
256],
127281:[[
66],
256],
127282:[[
67],
256],
127283:[[
68],
256],
127284:[[
69],
256],
127285:[[
70],
256],
127286:[[
71],
256],
127287:[[
72],
256],
127288:[[
73],
256],
127289:[[
74],
256],
127290:[[
75],
256],
127291:[[
76],
256],
127292:[[
77],
256],
127293:[[
78],
256],
127294:[[
79],
256],
127295:[[
80],
256],
127296:[[
81],
256],
127297:[[
82],
256],
127298:[[
83],
256],
127299:[[
84],
256],
127300:[[
85],
256],
127301:[[
86],
256],
127302:[[
87],
256],
127303:[[
88],
256],
127304:[[
89],
256],
127305:[[
90],
256],
127306:[[
72,
86],
256],
127307:[[
77,
86],
256],
127308:[[
83,
68],
256],
127309:[[
83,
83],
256],
127310:[[
80,
80,
86],
256],
127311:[[
87,
67],
256],
127338:[[
77,
67],
256],
127339:[[
77,
68],
256],
127376:[[
68,
74],
256]},
7033 61952:{
127488:[[
12411,
12363],
256],
127489:[[
12467,
12467],
256],
127490:[[
12469],
256],
127504:[[
25163],
256],
127505:[[
23383],
256],
127506:[[
21452],
256],
127507:[[
12487],
256],
127508:[[
20108],
256],
127509:[[
22810],
256],
127510:[[
35299],
256],
127511:[[
22825],
256],
127512:[[
20132],
256],
127513:[[
26144],
256],
127514:[[
28961],
256],
127515:[[
26009],
256],
127516:[[
21069],
256],
127517:[[
24460],
256],
127518:[[
20877],
256],
127519:[[
26032],
256],
127520:[[
21021],
256],
127521:[[
32066],
256],
127522:[[
29983],
256],
127523:[[
36009],
256],
127524:[[
22768],
256],
127525:[[
21561],
256],
127526:[[
28436],
256],
127527:[[
25237],
256],
127528:[[
25429],
256],
127529:[[
19968],
256],
127530:[[
19977],
256],
127531:[[
36938],
256],
127532:[[
24038],
256],
127533:[[
20013],
256],
127534:[[
21491],
256],
127535:[[
25351],
256],
127536:[[
36208],
256],
127537:[[
25171],
256],
127538:[[
31105],
256],
127539:[[
31354],
256],
127540:[[
21512],
256],
127541:[[
28288],
256],
127542:[[
26377],
256],
127543:[[
26376],
256],
127544:[[
30003],
256],
127545:[[
21106],
256],
127546:[[
21942],
256],
127552:[[
12308,
26412,
12309],
256],
127553:[[
12308,
19977,
12309],
256],
127554:[[
12308,
20108,
12309],
256],
127555:[[
12308,
23433,
12309],
256],
127556:[[
12308,
28857,
12309],
256],
127557:[[
12308,
25171,
12309],
256],
127558:[[
12308,
30423,
12309],
256],
127559:[[
12308,
21213,
12309],
256],
127560:[[
12308,
25943,
12309],
256],
127568:[[
24471],
256],
127569:[[
21487],
256]},
7034 63488:{
194560:[[
20029]],
194561:[[
20024]],
194562:[[
20033]],
194563:[[
131362]],
194564:[[
20320]],
194565:[[
20398]],
194566:[[
20411]],
194567:[[
20482]],
194568:[[
20602]],
194569:[[
20633]],
194570:[[
20711]],
194571:[[
20687]],
194572:[[
13470]],
194573:[[
132666]],
194574:[[
20813]],
194575:[[
20820]],
194576:[[
20836]],
194577:[[
20855]],
194578:[[
132380]],
194579:[[
13497]],
194580:[[
20839]],
194581:[[
20877]],
194582:[[
132427]],
194583:[[
20887]],
194584:[[
20900]],
194585:[[
20172]],
194586:[[
20908]],
194587:[[
20917]],
194588:[[
168415]],
194589:[[
20981]],
194590:[[
20995]],
194591:[[
13535]],
194592:[[
21051]],
194593:[[
21062]],
194594:[[
21106]],
194595:[[
21111]],
194596:[[
13589]],
194597:[[
21191]],
194598:[[
21193]],
194599:[[
21220]],
194600:[[
21242]],
194601:[[
21253]],
194602:[[
21254]],
194603:[[
21271]],
194604:[[
21321]],
194605:[[
21329]],
194606:[[
21338]],
194607:[[
21363]],
194608:[[
21373]],
194609:[[
21375]],
194610:[[
21375]],
194611:[[
21375]],
194612:[[
133676]],
194613:[[
28784]],
194614:[[
21450]],
194615:[[
21471]],
194616:[[
133987]],
194617:[[
21483]],
194618:[[
21489]],
194619:[[
21510]],
194620:[[
21662]],
194621:[[
21560]],
194622:[[
21576]],
194623:[[
21608]],
194624:[[
21666]],
194625:[[
21750]],
194626:[[
21776]],
194627:[[
21843]],
194628:[[
21859]],
194629:[[
21892]],
194630:[[
21892]],
194631:[[
21913]],
194632:[[
21931]],
194633:[[
21939]],
194634:[[
21954]],
194635:[[
22294]],
194636:[[
22022]],
194637:[[
22295]],
194638:[[
22097]],
194639:[[
22132]],
194640:[[
20999]],
194641:[[
22766]],
194642:[[
22478]],
194643:[[
22516]],
194644:[[
22541]],
194645:[[
22411]],
194646:[[
22578]],
194647:[[
22577]],
194648:[[
22700]],
194649:[[
136420]],
194650:[[
22770]],
194651:[[
22775]],
194652:[[
22790]],
194653:[[
22810]],
194654:[[
22818]],
194655:[[
22882]],
194656:[[
136872]],
194657:[[
136938]],
194658:[[
23020]],
194659:[[
23067]],
194660:[[
23079]],
194661:[[
23000]],
194662:[[
23142]],
194663:[[
14062]],
194664:[[
14076]],
194665:[[
23304]],
194666:[[
23358]],
194667:[[
23358]],
194668:[[
137672]],
194669:[[
23491]],
194670:[[
23512]],
194671:[[
23527]],
194672:[[
23539]],
194673:[[
138008]],
194674:[[
23551]],
194675:[[
23558]],
194676:[[
24403]],
194677:[[
23586]],
194678:[[
14209]],
194679:[[
23648]],
194680:[[
23662]],
194681:[[
23744]],
194682:[[
23693]],
194683:[[
138724]],
194684:[[
23875]],
194685:[[
138726]],
194686:[[
23918]],
194687:[[
23915]],
194688:[[
23932]],
194689:[[
24033]],
194690:[[
24034]],
194691:[[
14383]],
194692:[[
24061]],
194693:[[
24104]],
194694:[[
24125]],
194695:[[
24169]],
194696:[[
14434]],
194697:[[
139651]],
194698:[[
14460]],
194699:[[
24240]],
194700:[[
24243]],
194701:[[
24246]],
194702:[[
24266]],
194703:[[
172946]],
194704:[[
24318]],
194705:[[
140081]],
194706:[[
140081]],
194707:[[
33281]],
194708:[[
24354]],
194709:[[
24354]],
194710:[[
14535]],
194711:[[
144056]],
194712:[[
156122]],
194713:[[
24418]],
194714:[[
24427]],
194715:[[
14563]],
194716:[[
24474]],
194717:[[
24525]],
194718:[[
24535]],
194719:[[
24569]],
194720:[[
24705]],
194721:[[
14650]],
194722:[[
14620]],
194723:[[
24724]],
194724:[[
141012]],
194725:[[
24775]],
194726:[[
24904]],
194727:[[
24908]],
194728:[[
24910]],
194729:[[
24908]],
194730:[[
24954]],
194731:[[
24974]],
194732:[[
25010]],
194733:[[
24996]],
194734:[[
25007]],
194735:[[
25054]],
194736:[[
25074]],
194737:[[
25078]],
194738:[[
25104]],
194739:[[
25115]],
194740:[[
25181]],
194741:[[
25265]],
194742:[[
25300]],
194743:[[
25424]],
194744:[[
142092]],
194745:[[
25405]],
194746:[[
25340]],
194747:[[
25448]],
194748:[[
25475]],
194749:[[
25572]],
194750:[[
142321]],
194751:[[
25634]],
194752:[[
25541]],
194753:[[
25513]],
194754:[[
14894]],
194755:[[
25705]],
194756:[[
25726]],
194757:[[
25757]],
194758:[[
25719]],
194759:[[
14956]],
194760:[[
25935]],
194761:[[
25964]],
194762:[[
143370]],
194763:[[
26083]],
194764:[[
26360]],
194765:[[
26185]],
194766:[[
15129]],
194767:[[
26257]],
194768:[[
15112]],
194769:[[
15076]],
194770:[[
20882]],
194771:[[
20885]],
194772:[[
26368]],
194773:[[
26268]],
194774:[[
32941]],
194775:[[
17369]],
194776:[[
26391]],
194777:[[
26395]],
194778:[[
26401]],
194779:[[
26462]],
194780:[[
26451]],
194781:[[
144323]],
194782:[[
15177]],
194783:[[
26618]],
194784:[[
26501]],
194785:[[
26706]],
194786:[[
26757]],
194787:[[
144493]],
194788:[[
26766]],
194789:[[
26655]],
194790:[[
26900]],
194791:[[
15261]],
194792:[[
26946]],
194793:[[
27043]],
194794:[[
27114]],
194795:[[
27304]],
194796:[[
145059]],
194797:[[
27355]],
194798:[[
15384]],
194799:[[
27425]],
194800:[[
145575]],
194801:[[
27476]],
194802:[[
15438]],
194803:[[
27506]],
194804:[[
27551]],
194805:[[
27578]],
194806:[[
27579]],
194807:[[
146061]],
194808:[[
138507]],
194809:[[
146170]],
194810:[[
27726]],
194811:[[
146620]],
194812:[[
27839]],
194813:[[
27853]],
194814:[[
27751]],
194815:[[
27926]]},
7035 63744:{
63744:[[
35912]],
63745:[[
26356]],
63746:[[
36554]],
63747:[[
36040]],
63748:[[
28369]],
63749:[[
20018]],
63750:[[
21477]],
63751:[[
40860]],
63752:[[
40860]],
63753:[[
22865]],
63754:[[
37329]],
63755:[[
21895]],
63756:[[
22856]],
63757:[[
25078]],
63758:[[
30313]],
63759:[[
32645]],
63760:[[
34367]],
63761:[[
34746]],
63762:[[
35064]],
63763:[[
37007]],
63764:[[
27138]],
63765:[[
27931]],
63766:[[
28889]],
63767:[[
29662]],
63768:[[
33853]],
63769:[[
37226]],
63770:[[
39409]],
63771:[[
20098]],
63772:[[
21365]],
63773:[[
27396]],
63774:[[
29211]],
63775:[[
34349]],
63776:[[
40478]],
63777:[[
23888]],
63778:[[
28651]],
63779:[[
34253]],
63780:[[
35172]],
63781:[[
25289]],
63782:[[
33240]],
63783:[[
34847]],
63784:[[
24266]],
63785:[[
26391]],
63786:[[
28010]],
63787:[[
29436]],
63788:[[
37070]],
63789:[[
20358]],
63790:[[
20919]],
63791:[[
21214]],
63792:[[
25796]],
63793:[[
27347]],
63794:[[
29200]],
63795:[[
30439]],
63796:[[
32769]],
63797:[[
34310]],
63798:[[
34396]],
63799:[[
36335]],
63800:[[
38706]],
63801:[[
39791]],
63802:[[
40442]],
63803:[[
30860]],
63804:[[
31103]],
63805:[[
32160]],
63806:[[
33737]],
63807:[[
37636]],
63808:[[
40575]],
63809:[[
35542]],
63810:[[
22751]],
63811:[[
24324]],
63812:[[
31840]],
63813:[[
32894]],
63814:[[
29282]],
63815:[[
30922]],
63816:[[
36034]],
63817:[[
38647]],
63818:[[
22744]],
63819:[[
23650]],
63820:[[
27155]],
63821:[[
28122]],
63822:[[
28431]],
63823:[[
32047]],
63824:[[
32311]],
63825:[[
38475]],
63826:[[
21202]],
63827:[[
32907]],
63828:[[
20956]],
63829:[[
20940]],
63830:[[
31260]],
63831:[[
32190]],
63832:[[
33777]],
63833:[[
38517]],
63834:[[
35712]],
63835:[[
25295]],
63836:[[
27138]],
63837:[[
35582]],
63838:[[
20025]],
63839:[[
23527]],
63840:[[
24594]],
63841:[[
29575]],
63842:[[
30064]],
63843:[[
21271]],
63844:[[
30971]],
63845:[[
20415]],
63846:[[
24489]],
63847:[[
19981]],
63848:[[
27852]],
63849:[[
25976]],
63850:[[
32034]],
63851:[[
21443]],
63852:[[
22622]],
63853:[[
30465]],
63854:[[
33865]],
63855:[[
35498]],
63856:[[
27578]],
63857:[[
36784]],
63858:[[
27784]],
63859:[[
25342]],
63860:[[
33509]],
63861:[[
25504]],
63862:[[
30053]],
63863:[[
20142]],
63864:[[
20841]],
63865:[[
20937]],
63866:[[
26753]],
63867:[[
31975]],
63868:[[
33391]],
63869:[[
35538]],
63870:[[
37327]],
63871:[[
21237]],
63872:[[
21570]],
63873:[[
22899]],
63874:[[
24300]],
63875:[[
26053]],
63876:[[
28670]],
63877:[[
31018]],
63878:[[
38317]],
63879:[[
39530]],
63880:[[
40599]],
63881:[[
40654]],
63882:[[
21147]],
63883:[[
26310]],
63884:[[
27511]],
63885:[[
36706]],
63886:[[
24180]],
63887:[[
24976]],
63888:[[
25088]],
63889:[[
25754]],
63890:[[
28451]],
63891:[[
29001]],
63892:[[
29833]],
63893:[[
31178]],
63894:[[
32244]],
63895:[[
32879]],
63896:[[
36646]],
63897:[[
34030]],
63898:[[
36899]],
63899:[[
37706]],
63900:[[
21015]],
63901:[[
21155]],
63902:[[
21693]],
63903:[[
28872]],
63904:[[
35010]],
63905:[[
35498]],
63906:[[
24265]],
63907:[[
24565]],
63908:[[
25467]],
63909:[[
27566]],
63910:[[
31806]],
63911:[[
29557]],
63912:[[
20196]],
63913:[[
22265]],
63914:[[
23527]],
63915:[[
23994]],
63916:[[
24604]],
63917:[[
29618]],
63918:[[
29801]],
63919:[[
32666]],
63920:[[
32838]],
63921:[[
37428]],
63922:[[
38646]],
63923:[[
38728]],
63924:[[
38936]],
63925:[[
20363]],
63926:[[
31150]],
63927:[[
37300]],
63928:[[
38584]],
63929:[[
24801]],
63930:[[
20102]],
63931:[[
20698]],
63932:[[
23534]],
63933:[[
23615]],
63934:[[
26009]],
63935:[[
27138]],
63936:[[
29134]],
63937:[[
30274]],
63938:[[
34044]],
63939:[[
36988]],
63940:[[
40845]],
63941:[[
26248]],
63942:[[
38446]],
63943:[[
21129]],
63944:[[
26491]],
63945:[[
26611]],
63946:[[
27969]],
63947:[[
28316]],
63948:[[
29705]],
63949:[[
30041]],
63950:[[
30827]],
63951:[[
32016]],
63952:[[
39006]],
63953:[[
20845]],
63954:[[
25134]],
63955:[[
38520]],
63956:[[
20523]],
63957:[[
23833]],
63958:[[
28138]],
63959:[[
36650]],
63960:[[
24459]],
63961:[[
24900]],
63962:[[
26647]],
63963:[[
29575]],
63964:[[
38534]],
63965:[[
21033]],
63966:[[
21519]],
63967:[[
23653]],
63968:[[
26131]],
63969:[[
26446]],
63970:[[
26792]],
63971:[[
27877]],
63972:[[
29702]],
63973:[[
30178]],
63974:[[
32633]],
63975:[[
35023]],
63976:[[
35041]],
63977:[[
37324]],
63978:[[
38626]],
63979:[[
21311]],
63980:[[
28346]],
63981:[[
21533]],
63982:[[
29136]],
63983:[[
29848]],
63984:[[
34298]],
63985:[[
38563]],
63986:[[
40023]],
63987:[[
40607]],
63988:[[
26519]],
63989:[[
28107]],
63990:[[
33256]],
63991:[[
31435]],
63992:[[
31520]],
63993:[[
31890]],
63994:[[
29376]],
63995:[[
28825]],
63996:[[
35672]],
63997:[[
20160]],
63998:[[
33590]],
63999:[[
21050]],
194816:[[
27966]],
194817:[[
28023]],
194818:[[
27969]],
194819:[[
28009]],
194820:[[
28024]],
194821:[[
28037]],
194822:[[
146718]],
194823:[[
27956]],
194824:[[
28207]],
194825:[[
28270]],
194826:[[
15667]],
194827:[[
28363]],
194828:[[
28359]],
194829:[[
147153]],
194830:[[
28153]],
194831:[[
28526]],
194832:[[
147294]],
194833:[[
147342]],
194834:[[
28614]],
194835:[[
28729]],
194836:[[
28702]],
194837:[[
28699]],
194838:[[
15766]],
194839:[[
28746]],
194840:[[
28797]],
194841:[[
28791]],
194842:[[
28845]],
194843:[[
132389]],
194844:[[
28997]],
194845:[[
148067]],
194846:[[
29084]],
194847:[[
148395]],
194848:[[
29224]],
194849:[[
29237]],
194850:[[
29264]],
194851:[[
149000]],
194852:[[
29312]],
194853:[[
29333]],
194854:[[
149301]],
194855:[[
149524]],
194856:[[
29562]],
194857:[[
29579]],
194858:[[
16044]],
194859:[[
29605]],
194860:[[
16056]],
194861:[[
16056]],
194862:[[
29767]],
194863:[[
29788]],
194864:[[
29809]],
194865:[[
29829]],
194866:[[
29898]],
194867:[[
16155]],
194868:[[
29988]],
194869:[[
150582]],
194870:[[
30014]],
194871:[[
150674]],
194872:[[
30064]],
194873:[[
139679]],
194874:[[
30224]],
194875:[[
151457]],
194876:[[
151480]],
194877:[[
151620]],
194878:[[
16380]],
194879:[[
16392]],
194880:[[
30452]],
194881:[[
151795]],
194882:[[
151794]],
194883:[[
151833]],
194884:[[
151859]],
194885:[[
30494]],
194886:[[
30495]],
194887:[[
30495]],
194888:[[
30538]],
194889:[[
16441]],
194890:[[
30603]],
194891:[[
16454]],
194892:[[
16534]],
194893:[[
152605]],
194894:[[
30798]],
194895:[[
30860]],
194896:[[
30924]],
194897:[[
16611]],
194898:[[
153126]],
194899:[[
31062]],
194900:[[
153242]],
194901:[[
153285]],
194902:[[
31119]],
194903:[[
31211]],
194904:[[
16687]],
194905:[[
31296]],
194906:[[
31306]],
194907:[[
31311]],
194908:[[
153980]],
194909:[[
154279]],
194910:[[
154279]],
194911:[[
31470]],
194912:[[
16898]],
194913:[[
154539]],
194914:[[
31686]],
194915:[[
31689]],
194916:[[
16935]],
194917:[[
154752]],
194918:[[
31954]],
194919:[[
17056]],
194920:[[
31976]],
194921:[[
31971]],
194922:[[
32000]],
194923:[[
155526]],
194924:[[
32099]],
194925:[[
17153]],
194926:[[
32199]],
194927:[[
32258]],
194928:[[
32325]],
194929:[[
17204]],
194930:[[
156200]],
194931:[[
156231]],
194932:[[
17241]],
194933:[[
156377]],
194934:[[
32634]],
194935:[[
156478]],
194936:[[
32661]],
194937:[[
32762]],
194938:[[
32773]],
194939:[[
156890]],
194940:[[
156963]],
194941:[[
32864]],
194942:[[
157096]],
194943:[[
32880]],
194944:[[
144223]],
194945:[[
17365]],
194946:[[
32946]],
194947:[[
33027]],
194948:[[
17419]],
194949:[[
33086]],
194950:[[
23221]],
194951:[[
157607]],
194952:[[
157621]],
194953:[[
144275]],
194954:[[
144284]],
194955:[[
33281]],
194956:[[
33284]],
194957:[[
36766]],
194958:[[
17515]],
194959:[[
33425]],
194960:[[
33419]],
194961:[[
33437]],
194962:[[
21171]],
194963:[[
33457]],
194964:[[
33459]],
194965:[[
33469]],
194966:[[
33510]],
194967:[[
158524]],
194968:[[
33509]],
194969:[[
33565]],
194970:[[
33635]],
194971:[[
33709]],
194972:[[
33571]],
194973:[[
33725]],
194974:[[
33767]],
194975:[[
33879]],
194976:[[
33619]],
194977:[[
33738]],
194978:[[
33740]],
194979:[[
33756]],
194980:[[
158774]],
194981:[[
159083]],
194982:[[
158933]],
194983:[[
17707]],
194984:[[
34033]],
194985:[[
34035]],
194986:[[
34070]],
194987:[[
160714]],
194988:[[
34148]],
194989:[[
159532]],
194990:[[
17757]],
194991:[[
17761]],
194992:[[
159665]],
194993:[[
159954]],
194994:[[
17771]],
194995:[[
34384]],
194996:[[
34396]],
194997:[[
34407]],
194998:[[
34409]],
194999:[[
34473]],
195000:[[
34440]],
195001:[[
34574]],
195002:[[
34530]],
195003:[[
34681]],
195004:[[
34600]],
195005:[[
34667]],
195006:[[
34694]],
195007:[[
17879]],
195008:[[
34785]],
195009:[[
34817]],
195010:[[
17913]],
195011:[[
34912]],
195012:[[
34915]],
195013:[[
161383]],
195014:[[
35031]],
195015:[[
35038]],
195016:[[
17973]],
195017:[[
35066]],
195018:[[
13499]],
195019:[[
161966]],
195020:[[
162150]],
195021:[[
18110]],
195022:[[
18119]],
195023:[[
35488]],
195024:[[
35565]],
195025:[[
35722]],
195026:[[
35925]],
195027:[[
162984]],
195028:[[
36011]],
195029:[[
36033]],
195030:[[
36123]],
195031:[[
36215]],
195032:[[
163631]],
195033:[[
133124]],
195034:[[
36299]],
195035:[[
36284]],
195036:[[
36336]],
195037:[[
133342]],
195038:[[
36564]],
195039:[[
36664]],
195040:[[
165330]],
195041:[[
165357]],
195042:[[
37012]],
195043:[[
37105]],
195044:[[
37137]],
195045:[[
165678]],
195046:[[
37147]],
195047:[[
37432]],
195048:[[
37591]],
195049:[[
37592]],
195050:[[
37500]],
195051:[[
37881]],
195052:[[
37909]],
195053:[[
166906]],
195054:[[
38283]],
195055:[[
18837]],
195056:[[
38327]],
195057:[[
167287]],
195058:[[
18918]],
195059:[[
38595]],
195060:[[
23986]],
195061:[[
38691]],
195062:[[
168261]],
195063:[[
168474]],
195064:[[
19054]],
195065:[[
19062]],
195066:[[
38880]],
195067:[[
168970]],
195068:[[
19122]],
195069:[[
169110]],
195070:[[
38923]],
195071:[[
38923]]},
7036 64000:{
64000:[[
20999]],
64001:[[
24230]],
64002:[[
25299]],
64003:[[
31958]],
64004:[[
23429]],
64005:[[
27934]],
64006:[[
26292]],
64007:[[
36667]],
64008:[[
34892]],
64009:[[
38477]],
64010:[[
35211]],
64011:[[
24275]],
64012:[[
20800]],
64013:[[
21952]],
64016:[[
22618]],
64018:[[
26228]],
64021:[[
20958]],
64022:[[
29482]],
64023:[[
30410]],
64024:[[
31036]],
64025:[[
31070]],
64026:[[
31077]],
64027:[[
31119]],
64028:[[
38742]],
64029:[[
31934]],
64030:[[
32701]],
64032:[[
34322]],
64034:[[
35576]],
64037:[[
36920]],
64038:[[
37117]],
64042:[[
39151]],
64043:[[
39164]],
64044:[[
39208]],
64045:[[
40372]],
64046:[[
37086]],
64047:[[
38583]],
64048:[[
20398]],
64049:[[
20711]],
64050:[[
20813]],
64051:[[
21193]],
64052:[[
21220]],
64053:[[
21329]],
64054:[[
21917]],
64055:[[
22022]],
64056:[[
22120]],
64057:[[
22592]],
64058:[[
22696]],
64059:[[
23652]],
64060:[[
23662]],
64061:[[
24724]],
64062:[[
24936]],
64063:[[
24974]],
64064:[[
25074]],
64065:[[
25935]],
64066:[[
26082]],
64067:[[
26257]],
64068:[[
26757]],
64069:[[
28023]],
64070:[[
28186]],
64071:[[
28450]],
64072:[[
29038]],
64073:[[
29227]],
64074:[[
29730]],
64075:[[
30865]],
64076:[[
31038]],
64077:[[
31049]],
64078:[[
31048]],
64079:[[
31056]],
64080:[[
31062]],
64081:[[
31069]],
64082:[[
31117]],
64083:[[
31118]],
64084:[[
31296]],
64085:[[
31361]],
64086:[[
31680]],
64087:[[
32244]],
64088:[[
32265]],
64089:[[
32321]],
64090:[[
32626]],
64091:[[
32773]],
64092:[[
33261]],
64093:[[
33401]],
64094:[[
33401]],
64095:[[
33879]],
64096:[[
35088]],
64097:[[
35222]],
64098:[[
35585]],
64099:[[
35641]],
64100:[[
36051]],
64101:[[
36104]],
64102:[[
36790]],
64103:[[
36920]],
64104:[[
38627]],
64105:[[
38911]],
64106:[[
38971]],
64107:[[
24693]],
64108:[[
148206]],
64109:[[
33304]],
64112:[[
20006]],
64113:[[
20917]],
64114:[[
20840]],
64115:[[
20352]],
64116:[[
20805]],
64117:[[
20864]],
64118:[[
21191]],
64119:[[
21242]],
64120:[[
21917]],
64121:[[
21845]],
64122:[[
21913]],
64123:[[
21986]],
64124:[[
22618]],
64125:[[
22707]],
64126:[[
22852]],
64127:[[
22868]],
64128:[[
23138]],
64129:[[
23336]],
64130:[[
24274]],
64131:[[
24281]],
64132:[[
24425]],
64133:[[
24493]],
64134:[[
24792]],
64135:[[
24910]],
64136:[[
24840]],
64137:[[
24974]],
64138:[[
24928]],
64139:[[
25074]],
64140:[[
25140]],
64141:[[
25540]],
64142:[[
25628]],
64143:[[
25682]],
64144:[[
25942]],
64145:[[
26228]],
64146:[[
26391]],
64147:[[
26395]],
64148:[[
26454]],
64149:[[
27513]],
64150:[[
27578]],
64151:[[
27969]],
64152:[[
28379]],
64153:[[
28363]],
64154:[[
28450]],
64155:[[
28702]],
64156:[[
29038]],
64157:[[
30631]],
64158:[[
29237]],
64159:[[
29359]],
64160:[[
29482]],
64161:[[
29809]],
64162:[[
29958]],
64163:[[
30011]],
64164:[[
30237]],
64165:[[
30239]],
64166:[[
30410]],
64167:[[
30427]],
64168:[[
30452]],
64169:[[
30538]],
64170:[[
30528]],
64171:[[
30924]],
64172:[[
31409]],
64173:[[
31680]],
64174:[[
31867]],
64175:[[
32091]],
64176:[[
32244]],
64177:[[
32574]],
64178:[[
32773]],
64179:[[
33618]],
64180:[[
33775]],
64181:[[
34681]],
64182:[[
35137]],
64183:[[
35206]],
64184:[[
35222]],
64185:[[
35519]],
64186:[[
35576]],
64187:[[
35531]],
64188:[[
35585]],
64189:[[
35582]],
64190:[[
35565]],
64191:[[
35641]],
64192:[[
35722]],
64193:[[
36104]],
64194:[[
36664]],
64195:[[
36978]],
64196:[[
37273]],
64197:[[
37494]],
64198:[[
38524]],
64199:[[
38627]],
64200:[[
38742]],
64201:[[
38875]],
64202:[[
38911]],
64203:[[
38923]],
64204:[[
38971]],
64205:[[
39698]],
64206:[[
40860]],
64207:[[
141386]],
64208:[[
141380]],
64209:[[
144341]],
64210:[[
15261]],
64211:[[
16408]],
64212:[[
16441]],
64213:[[
152137]],
64214:[[
154832]],
64215:[[
163539]],
64216:[[
40771]],
64217:[[
40846]],
195072:[[
38953]],
195073:[[
169398]],
195074:[[
39138]],
195075:[[
19251]],
195076:[[
39209]],
195077:[[
39335]],
195078:[[
39362]],
195079:[[
39422]],
195080:[[
19406]],
195081:[[
170800]],
195082:[[
39698]],
195083:[[
40000]],
195084:[[
40189]],
195085:[[
19662]],
195086:[[
19693]],
195087:[[
40295]],
195088:[[
172238]],
195089:[[
19704]],
195090:[[
172293]],
195091:[[
172558]],
195092:[[
172689]],
195093:[[
40635]],
195094:[[
19798]],
195095:[[
40697]],
195096:[[
40702]],
195097:[[
40709]],
195098:[[
40719]],
195099:[[
40726]],
195100:[[
40763]],
195101:[[
173568]]},
7037 64256:{
64256:[[
102,
102],
256],
64257:[[
102,
105],
256],
64258:[[
102,
108],
256],
64259:[[
102,
102,
105],
256],
64260:[[
102,
102,
108],
256],
64261:[[
383,
116],
256],
64262:[[
115,
116],
256],
64275:[[
1396,
1398],
256],
64276:[[
1396,
1381],
256],
64277:[[
1396,
1387],
256],
64278:[[
1406,
1398],
256],
64279:[[
1396,
1389],
256],
64285:[[
1497,
1460],
512],
64286:[,
26],
64287:[[
1522,
1463],
512],
64288:[[
1506],
256],
64289:[[
1488],
256],
64290:[[
1491],
256],
64291:[[
1492],
256],
64292:[[
1499],
256],
64293:[[
1500],
256],
64294:[[
1501],
256],
64295:[[
1512],
256],
64296:[[
1514],
256],
64297:[[
43],
256],
64298:[[
1513,
1473],
512],
64299:[[
1513,
1474],
512],
64300:[[
64329,
1473],
512],
64301:[[
64329,
1474],
512],
64302:[[
1488,
1463],
512],
64303:[[
1488,
1464],
512],
64304:[[
1488,
1468],
512],
64305:[[
1489,
1468],
512],
64306:[[
1490,
1468],
512],
64307:[[
1491,
1468],
512],
64308:[[
1492,
1468],
512],
64309:[[
1493,
1468],
512],
64310:[[
1494,
1468],
512],
64312:[[
1496,
1468],
512],
64313:[[
1497,
1468],
512],
64314:[[
1498,
1468],
512],
64315:[[
1499,
1468],
512],
64316:[[
1500,
1468],
512],
64318:[[
1502,
1468],
512],
64320:[[
1504,
1468],
512],
64321:[[
1505,
1468],
512],
64323:[[
1507,
1468],
512],
64324:[[
1508,
1468],
512],
64326:[[
1510,
1468],
512],
64327:[[
1511,
1468],
512],
64328:[[
1512,
1468],
512],
64329:[[
1513,
1468],
512],
64330:[[
1514,
1468],
512],
64331:[[
1493,
1465],
512],
64332:[[
1489,
1471],
512],
64333:[[
1499,
1471],
512],
64334:[[
1508,
1471],
512],
64335:[[
1488,
1500],
256],
64336:[[
1649],
256],
64337:[[
1649],
256],
64338:[[
1659],
256],
64339:[[
1659],
256],
64340:[[
1659],
256],
64341:[[
1659],
256],
64342:[[
1662],
256],
64343:[[
1662],
256],
64344:[[
1662],
256],
64345:[[
1662],
256],
64346:[[
1664],
256],
64347:[[
1664],
256],
64348:[[
1664],
256],
64349:[[
1664],
256],
64350:[[
1658],
256],
64351:[[
1658],
256],
64352:[[
1658],
256],
64353:[[
1658],
256],
64354:[[
1663],
256],
64355:[[
1663],
256],
64356:[[
1663],
256],
64357:[[
1663],
256],
64358:[[
1657],
256],
64359:[[
1657],
256],
64360:[[
1657],
256],
64361:[[
1657],
256],
64362:[[
1700],
256],
64363:[[
1700],
256],
64364:[[
1700],
256],
64365:[[
1700],
256],
64366:[[
1702],
256],
64367:[[
1702],
256],
64368:[[
1702],
256],
64369:[[
1702],
256],
64370:[[
1668],
256],
64371:[[
1668],
256],
64372:[[
1668],
256],
64373:[[
1668],
256],
64374:[[
1667],
256],
64375:[[
1667],
256],
64376:[[
1667],
256],
64377:[[
1667],
256],
64378:[[
1670],
256],
64379:[[
1670],
256],
64380:[[
1670],
256],
64381:[[
1670],
256],
64382:[[
1671],
256],
64383:[[
1671],
256],
64384:[[
1671],
256],
64385:[[
1671],
256],
64386:[[
1677],
256],
64387:[[
1677],
256],
64388:[[
1676],
256],
64389:[[
1676],
256],
64390:[[
1678],
256],
64391:[[
1678],
256],
64392:[[
1672],
256],
64393:[[
1672],
256],
64394:[[
1688],
256],
64395:[[
1688],
256],
64396:[[
1681],
256],
64397:[[
1681],
256],
64398:[[
1705],
256],
64399:[[
1705],
256],
64400:[[
1705],
256],
64401:[[
1705],
256],
64402:[[
1711],
256],
64403:[[
1711],
256],
64404:[[
1711],
256],
64405:[[
1711],
256],
64406:[[
1715],
256],
64407:[[
1715],
256],
64408:[[
1715],
256],
64409:[[
1715],
256],
64410:[[
1713],
256],
64411:[[
1713],
256],
64412:[[
1713],
256],
64413:[[
1713],
256],
64414:[[
1722],
256],
64415:[[
1722],
256],
64416:[[
1723],
256],
64417:[[
1723],
256],
64418:[[
1723],
256],
64419:[[
1723],
256],
64420:[[
1728],
256],
64421:[[
1728],
256],
64422:[[
1729],
256],
64423:[[
1729],
256],
64424:[[
1729],
256],
64425:[[
1729],
256],
64426:[[
1726],
256],
64427:[[
1726],
256],
64428:[[
1726],
256],
64429:[[
1726],
256],
64430:[[
1746],
256],
64431:[[
1746],
256],
64432:[[
1747],
256],
64433:[[
1747],
256],
64467:[[
1709],
256],
64468:[[
1709],
256],
64469:[[
1709],
256],
64470:[[
1709],
256],
64471:[[
1735],
256],
64472:[[
1735],
256],
64473:[[
1734],
256],
64474:[[
1734],
256],
64475:[[
1736],
256],
64476:[[
1736],
256],
64477:[[
1655],
256],
64478:[[
1739],
256],
64479:[[
1739],
256],
64480:[[
1733],
256],
64481:[[
1733],
256],
64482:[[
1737],
256],
64483:[[
1737],
256],
64484:[[
1744],
256],
64485:[[
1744],
256],
64486:[[
1744],
256],
64487:[[
1744],
256],
64488:[[
1609],
256],
64489:[[
1609],
256],
64490:[[
1574,
1575],
256],
64491:[[
1574,
1575],
256],
64492:[[
1574,
1749],
256],
64493:[[
1574,
1749],
256],
64494:[[
1574,
1608],
256],
64495:[[
1574,
1608],
256],
64496:[[
1574,
1735],
256],
64497:[[
1574,
1735],
256],
64498:[[
1574,
1734],
256],
64499:[[
1574,
1734],
256],
64500:[[
1574,
1736],
256],
64501:[[
1574,
1736],
256],
64502:[[
1574,
1744],
256],
64503:[[
1574,
1744],
256],
64504:[[
1574,
1744],
256],
64505:[[
1574,
1609],
256],
64506:[[
1574,
1609],
256],
64507:[[
1574,
1609],
256],
64508:[[
1740],
256],
64509:[[
1740],
256],
64510:[[
1740],
256],
64511:[[
1740],
256]},
7038 64512:{
64512:[[
1574,
1580],
256],
64513:[[
1574,
1581],
256],
64514:[[
1574,
1605],
256],
64515:[[
1574,
1609],
256],
64516:[[
1574,
1610],
256],
64517:[[
1576,
1580],
256],
64518:[[
1576,
1581],
256],
64519:[[
1576,
1582],
256],
64520:[[
1576,
1605],
256],
64521:[[
1576,
1609],
256],
64522:[[
1576,
1610],
256],
64523:[[
1578,
1580],
256],
64524:[[
1578,
1581],
256],
64525:[[
1578,
1582],
256],
64526:[[
1578,
1605],
256],
64527:[[
1578,
1609],
256],
64528:[[
1578,
1610],
256],
64529:[[
1579,
1580],
256],
64530:[[
1579,
1605],
256],
64531:[[
1579,
1609],
256],
64532:[[
1579,
1610],
256],
64533:[[
1580,
1581],
256],
64534:[[
1580,
1605],
256],
64535:[[
1581,
1580],
256],
64536:[[
1581,
1605],
256],
64537:[[
1582,
1580],
256],
64538:[[
1582,
1581],
256],
64539:[[
1582,
1605],
256],
64540:[[
1587,
1580],
256],
64541:[[
1587,
1581],
256],
64542:[[
1587,
1582],
256],
64543:[[
1587,
1605],
256],
64544:[[
1589,
1581],
256],
64545:[[
1589,
1605],
256],
64546:[[
1590,
1580],
256],
64547:[[
1590,
1581],
256],
64548:[[
1590,
1582],
256],
64549:[[
1590,
1605],
256],
64550:[[
1591,
1581],
256],
64551:[[
1591,
1605],
256],
64552:[[
1592,
1605],
256],
64553:[[
1593,
1580],
256],
64554:[[
1593,
1605],
256],
64555:[[
1594,
1580],
256],
64556:[[
1594,
1605],
256],
64557:[[
1601,
1580],
256],
64558:[[
1601,
1581],
256],
64559:[[
1601,
1582],
256],
64560:[[
1601,
1605],
256],
64561:[[
1601,
1609],
256],
64562:[[
1601,
1610],
256],
64563:[[
1602,
1581],
256],
64564:[[
1602,
1605],
256],
64565:[[
1602,
1609],
256],
64566:[[
1602,
1610],
256],
64567:[[
1603,
1575],
256],
64568:[[
1603,
1580],
256],
64569:[[
1603,
1581],
256],
64570:[[
1603,
1582],
256],
64571:[[
1603,
1604],
256],
64572:[[
1603,
1605],
256],
64573:[[
1603,
1609],
256],
64574:[[
1603,
1610],
256],
64575:[[
1604,
1580],
256],
64576:[[
1604,
1581],
256],
64577:[[
1604,
1582],
256],
64578:[[
1604,
1605],
256],
64579:[[
1604,
1609],
256],
64580:[[
1604,
1610],
256],
64581:[[
1605,
1580],
256],
64582:[[
1605,
1581],
256],
64583:[[
1605,
1582],
256],
64584:[[
1605,
1605],
256],
64585:[[
1605,
1609],
256],
64586:[[
1605,
1610],
256],
64587:[[
1606,
1580],
256],
64588:[[
1606,
1581],
256],
64589:[[
1606,
1582],
256],
64590:[[
1606,
1605],
256],
64591:[[
1606,
1609],
256],
64592:[[
1606,
1610],
256],
64593:[[
1607,
1580],
256],
64594:[[
1607,
1605],
256],
64595:[[
1607,
1609],
256],
64596:[[
1607,
1610],
256],
64597:[[
1610,
1580],
256],
64598:[[
1610,
1581],
256],
64599:[[
1610,
1582],
256],
64600:[[
1610,
1605],
256],
64601:[[
1610,
1609],
256],
64602:[[
1610,
1610],
256],
64603:[[
1584,
1648],
256],
64604:[[
1585,
1648],
256],
64605:[[
1609,
1648],
256],
64606:[[
32,
1612,
1617],
256],
64607:[[
32,
1613,
1617],
256],
64608:[[
32,
1614,
1617],
256],
64609:[[
32,
1615,
1617],
256],
64610:[[
32,
1616,
1617],
256],
64611:[[
32,
1617,
1648],
256],
64612:[[
1574,
1585],
256],
64613:[[
1574,
1586],
256],
64614:[[
1574,
1605],
256],
64615:[[
1574,
1606],
256],
64616:[[
1574,
1609],
256],
64617:[[
1574,
1610],
256],
64618:[[
1576,
1585],
256],
64619:[[
1576,
1586],
256],
64620:[[
1576,
1605],
256],
64621:[[
1576,
1606],
256],
64622:[[
1576,
1609],
256],
64623:[[
1576,
1610],
256],
64624:[[
1578,
1585],
256],
64625:[[
1578,
1586],
256],
64626:[[
1578,
1605],
256],
64627:[[
1578,
1606],
256],
64628:[[
1578,
1609],
256],
64629:[[
1578,
1610],
256],
64630:[[
1579,
1585],
256],
64631:[[
1579,
1586],
256],
64632:[[
1579,
1605],
256],
64633:[[
1579,
1606],
256],
64634:[[
1579,
1609],
256],
64635:[[
1579,
1610],
256],
64636:[[
1601,
1609],
256],
64637:[[
1601,
1610],
256],
64638:[[
1602,
1609],
256],
64639:[[
1602,
1610],
256],
64640:[[
1603,
1575],
256],
64641:[[
1603,
1604],
256],
64642:[[
1603,
1605],
256],
64643:[[
1603,
1609],
256],
64644:[[
1603,
1610],
256],
64645:[[
1604,
1605],
256],
64646:[[
1604,
1609],
256],
64647:[[
1604,
1610],
256],
64648:[[
1605,
1575],
256],
64649:[[
1605,
1605],
256],
64650:[[
1606,
1585],
256],
64651:[[
1606,
1586],
256],
64652:[[
1606,
1605],
256],
64653:[[
1606,
1606],
256],
64654:[[
1606,
1609],
256],
64655:[[
1606,
1610],
256],
64656:[[
1609,
1648],
256],
64657:[[
1610,
1585],
256],
64658:[[
1610,
1586],
256],
64659:[[
1610,
1605],
256],
64660:[[
1610,
1606],
256],
64661:[[
1610,
1609],
256],
64662:[[
1610,
1610],
256],
64663:[[
1574,
1580],
256],
64664:[[
1574,
1581],
256],
64665:[[
1574,
1582],
256],
64666:[[
1574,
1605],
256],
64667:[[
1574,
1607],
256],
64668:[[
1576,
1580],
256],
64669:[[
1576,
1581],
256],
64670:[[
1576,
1582],
256],
64671:[[
1576,
1605],
256],
64672:[[
1576,
1607],
256],
64673:[[
1578,
1580],
256],
64674:[[
1578,
1581],
256],
64675:[[
1578,
1582],
256],
64676:[[
1578,
1605],
256],
64677:[[
1578,
1607],
256],
64678:[[
1579,
1605],
256],
64679:[[
1580,
1581],
256],
64680:[[
1580,
1605],
256],
64681:[[
1581,
1580],
256],
64682:[[
1581,
1605],
256],
64683:[[
1582,
1580],
256],
64684:[[
1582,
1605],
256],
64685:[[
1587,
1580],
256],
64686:[[
1587,
1581],
256],
64687:[[
1587,
1582],
256],
64688:[[
1587,
1605],
256],
64689:[[
1589,
1581],
256],
64690:[[
1589,
1582],
256],
64691:[[
1589,
1605],
256],
64692:[[
1590,
1580],
256],
64693:[[
1590,
1581],
256],
64694:[[
1590,
1582],
256],
64695:[[
1590,
1605],
256],
64696:[[
1591,
1581],
256],
64697:[[
1592,
1605],
256],
64698:[[
1593,
1580],
256],
64699:[[
1593,
1605],
256],
64700:[[
1594,
1580],
256],
64701:[[
1594,
1605],
256],
64702:[[
1601,
1580],
256],
64703:[[
1601,
1581],
256],
64704:[[
1601,
1582],
256],
64705:[[
1601,
1605],
256],
64706:[[
1602,
1581],
256],
64707:[[
1602,
1605],
256],
64708:[[
1603,
1580],
256],
64709:[[
1603,
1581],
256],
64710:[[
1603,
1582],
256],
64711:[[
1603,
1604],
256],
64712:[[
1603,
1605],
256],
64713:[[
1604,
1580],
256],
64714:[[
1604,
1581],
256],
64715:[[
1604,
1582],
256],
64716:[[
1604,
1605],
256],
64717:[[
1604,
1607],
256],
64718:[[
1605,
1580],
256],
64719:[[
1605,
1581],
256],
64720:[[
1605,
1582],
256],
64721:[[
1605,
1605],
256],
64722:[[
1606,
1580],
256],
64723:[[
1606,
1581],
256],
64724:[[
1606,
1582],
256],
64725:[[
1606,
1605],
256],
64726:[[
1606,
1607],
256],
64727:[[
1607,
1580],
256],
64728:[[
1607,
1605],
256],
64729:[[
1607,
1648],
256],
64730:[[
1610,
1580],
256],
64731:[[
1610,
1581],
256],
64732:[[
1610,
1582],
256],
64733:[[
1610,
1605],
256],
64734:[[
1610,
1607],
256],
64735:[[
1574,
1605],
256],
64736:[[
1574,
1607],
256],
64737:[[
1576,
1605],
256],
64738:[[
1576,
1607],
256],
64739:[[
1578,
1605],
256],
64740:[[
1578,
1607],
256],
64741:[[
1579,
1605],
256],
64742:[[
1579,
1607],
256],
64743:[[
1587,
1605],
256],
64744:[[
1587,
1607],
256],
64745:[[
1588,
1605],
256],
64746:[[
1588,
1607],
256],
64747:[[
1603,
1604],
256],
64748:[[
1603,
1605],
256],
64749:[[
1604,
1605],
256],
64750:[[
1606,
1605],
256],
64751:[[
1606,
1607],
256],
64752:[[
1610,
1605],
256],
64753:[[
1610,
1607],
256],
64754:[[
1600,
1614,
1617],
256],
64755:[[
1600,
1615,
1617],
256],
64756:[[
1600,
1616,
1617],
256],
64757:[[
1591,
1609],
256],
64758:[[
1591,
1610],
256],
64759:[[
1593,
1609],
256],
64760:[[
1593,
1610],
256],
64761:[[
1594,
1609],
256],
64762:[[
1594,
1610],
256],
64763:[[
1587,
1609],
256],
64764:[[
1587,
1610],
256],
64765:[[
1588,
1609],
256],
64766:[[
1588,
1610],
256],
64767:[[
1581,
1609],
256]},
7039 64768:{
64768:[[
1581,
1610],
256],
64769:[[
1580,
1609],
256],
64770:[[
1580,
1610],
256],
64771:[[
1582,
1609],
256],
64772:[[
1582,
1610],
256],
64773:[[
1589,
1609],
256],
64774:[[
1589,
1610],
256],
64775:[[
1590,
1609],
256],
64776:[[
1590,
1610],
256],
64777:[[
1588,
1580],
256],
64778:[[
1588,
1581],
256],
64779:[[
1588,
1582],
256],
64780:[[
1588,
1605],
256],
64781:[[
1588,
1585],
256],
64782:[[
1587,
1585],
256],
64783:[[
1589,
1585],
256],
64784:[[
1590,
1585],
256],
64785:[[
1591,
1609],
256],
64786:[[
1591,
1610],
256],
64787:[[
1593,
1609],
256],
64788:[[
1593,
1610],
256],
64789:[[
1594,
1609],
256],
64790:[[
1594,
1610],
256],
64791:[[
1587,
1609],
256],
64792:[[
1587,
1610],
256],
64793:[[
1588,
1609],
256],
64794:[[
1588,
1610],
256],
64795:[[
1581,
1609],
256],
64796:[[
1581,
1610],
256],
64797:[[
1580,
1609],
256],
64798:[[
1580,
1610],
256],
64799:[[
1582,
1609],
256],
64800:[[
1582,
1610],
256],
64801:[[
1589,
1609],
256],
64802:[[
1589,
1610],
256],
64803:[[
1590,
1609],
256],
64804:[[
1590,
1610],
256],
64805:[[
1588,
1580],
256],
64806:[[
1588,
1581],
256],
64807:[[
1588,
1582],
256],
64808:[[
1588,
1605],
256],
64809:[[
1588,
1585],
256],
64810:[[
1587,
1585],
256],
64811:[[
1589,
1585],
256],
64812:[[
1590,
1585],
256],
64813:[[
1588,
1580],
256],
64814:[[
1588,
1581],
256],
64815:[[
1588,
1582],
256],
64816:[[
1588,
1605],
256],
64817:[[
1587,
1607],
256],
64818:[[
1588,
1607],
256],
64819:[[
1591,
1605],
256],
64820:[[
1587,
1580],
256],
64821:[[
1587,
1581],
256],
64822:[[
1587,
1582],
256],
64823:[[
1588,
1580],
256],
64824:[[
1588,
1581],
256],
64825:[[
1588,
1582],
256],
64826:[[
1591,
1605],
256],
64827:[[
1592,
1605],
256],
64828:[[
1575,
1611],
256],
64829:[[
1575,
1611],
256],
64848:[[
1578,
1580,
1605],
256],
64849:[[
1578,
1581,
1580],
256],
64850:[[
1578,
1581,
1580],
256],
64851:[[
1578,
1581,
1605],
256],
64852:[[
1578,
1582,
1605],
256],
64853:[[
1578,
1605,
1580],
256],
64854:[[
1578,
1605,
1581],
256],
64855:[[
1578,
1605,
1582],
256],
64856:[[
1580,
1605,
1581],
256],
64857:[[
1580,
1605,
1581],
256],
64858:[[
1581,
1605,
1610],
256],
64859:[[
1581,
1605,
1609],
256],
64860:[[
1587,
1581,
1580],
256],
64861:[[
1587,
1580,
1581],
256],
64862:[[
1587,
1580,
1609],
256],
64863:[[
1587,
1605,
1581],
256],
64864:[[
1587,
1605,
1581],
256],
64865:[[
1587,
1605,
1580],
256],
64866:[[
1587,
1605,
1605],
256],
64867:[[
1587,
1605,
1605],
256],
64868:[[
1589,
1581,
1581],
256],
64869:[[
1589,
1581,
1581],
256],
64870:[[
1589,
1605,
1605],
256],
64871:[[
1588,
1581,
1605],
256],
64872:[[
1588,
1581,
1605],
256],
64873:[[
1588,
1580,
1610],
256],
64874:[[
1588,
1605,
1582],
256],
64875:[[
1588,
1605,
1582],
256],
64876:[[
1588,
1605,
1605],
256],
64877:[[
1588,
1605,
1605],
256],
64878:[[
1590,
1581,
1609],
256],
64879:[[
1590,
1582,
1605],
256],
64880:[[
1590,
1582,
1605],
256],
64881:[[
1591,
1605,
1581],
256],
64882:[[
1591,
1605,
1581],
256],
64883:[[
1591,
1605,
1605],
256],
64884:[[
1591,
1605,
1610],
256],
64885:[[
1593,
1580,
1605],
256],
64886:[[
1593,
1605,
1605],
256],
64887:[[
1593,
1605,
1605],
256],
64888:[[
1593,
1605,
1609],
256],
64889:[[
1594,
1605,
1605],
256],
64890:[[
1594,
1605,
1610],
256],
64891:[[
1594,
1605,
1609],
256],
64892:[[
1601,
1582,
1605],
256],
64893:[[
1601,
1582,
1605],
256],
64894:[[
1602,
1605,
1581],
256],
64895:[[
1602,
1605,
1605],
256],
64896:[[
1604,
1581,
1605],
256],
64897:[[
1604,
1581,
1610],
256],
64898:[[
1604,
1581,
1609],
256],
64899:[[
1604,
1580,
1580],
256],
64900:[[
1604,
1580,
1580],
256],
64901:[[
1604,
1582,
1605],
256],
64902:[[
1604,
1582,
1605],
256],
64903:[[
1604,
1605,
1581],
256],
64904:[[
1604,
1605,
1581],
256],
64905:[[
1605,
1581,
1580],
256],
64906:[[
1605,
1581,
1605],
256],
64907:[[
1605,
1581,
1610],
256],
64908:[[
1605,
1580,
1581],
256],
64909:[[
1605,
1580,
1605],
256],
64910:[[
1605,
1582,
1580],
256],
64911:[[
1605,
1582,
1605],
256],
64914:[[
1605,
1580,
1582],
256],
64915:[[
1607,
1605,
1580],
256],
64916:[[
1607,
1605,
1605],
256],
64917:[[
1606,
1581,
1605],
256],
64918:[[
1606,
1581,
1609],
256],
64919:[[
1606,
1580,
1605],
256],
64920:[[
1606,
1580,
1605],
256],
64921:[[
1606,
1580,
1609],
256],
64922:[[
1606,
1605,
1610],
256],
64923:[[
1606,
1605,
1609],
256],
64924:[[
1610,
1605,
1605],
256],
64925:[[
1610,
1605,
1605],
256],
64926:[[
1576,
1582,
1610],
256],
64927:[[
1578,
1580,
1610],
256],
64928:[[
1578,
1580,
1609],
256],
64929:[[
1578,
1582,
1610],
256],
64930:[[
1578,
1582,
1609],
256],
64931:[[
1578,
1605,
1610],
256],
64932:[[
1578,
1605,
1609],
256],
64933:[[
1580,
1605,
1610],
256],
64934:[[
1580,
1581,
1609],
256],
64935:[[
1580,
1605,
1609],
256],
64936:[[
1587,
1582,
1609],
256],
64937:[[
1589,
1581,
1610],
256],
64938:[[
1588,
1581,
1610],
256],
64939:[[
1590,
1581,
1610],
256],
64940:[[
1604,
1580,
1610],
256],
64941:[[
1604,
1605,
1610],
256],
64942:[[
1610,
1581,
1610],
256],
64943:[[
1610,
1580,
1610],
256],
64944:[[
1610,
1605,
1610],
256],
64945:[[
1605,
1605,
1610],
256],
64946:[[
1602,
1605,
1610],
256],
64947:[[
1606,
1581,
1610],
256],
64948:[[
1602,
1605,
1581],
256],
64949:[[
1604,
1581,
1605],
256],
64950:[[
1593,
1605,
1610],
256],
64951:[[
1603,
1605,
1610],
256],
64952:[[
1606,
1580,
1581],
256],
64953:[[
1605,
1582,
1610],
256],
64954:[[
1604,
1580,
1605],
256],
64955:[[
1603,
1605,
1605],
256],
64956:[[
1604,
1580,
1605],
256],
64957:[[
1606,
1580,
1581],
256],
64958:[[
1580,
1581,
1610],
256],
64959:[[
1581,
1580,
1610],
256],
64960:[[
1605,
1580,
1610],
256],
64961:[[
1601,
1605,
1610],
256],
64962:[[
1576,
1581,
1610],
256],
64963:[[
1603,
1605,
1605],
256],
64964:[[
1593,
1580,
1605],
256],
64965:[[
1589,
1605,
1605],
256],
64966:[[
1587,
1582,
1610],
256],
64967:[[
1606,
1580,
1610],
256],
65008:[[
1589,
1604,
1746],
256],
65009:[[
1602,
1604,
1746],
256],
65010:[[
1575,
1604,
1604,
1607],
256],
65011:[[
1575,
1603,
1576,
1585],
256],
65012:[[
1605,
1581,
1605,
1583],
256],
65013:[[
1589,
1604,
1593,
1605],
256],
65014:[[
1585,
1587,
1608,
1604],
256],
65015:[[
1593,
1604,
1610,
1607],
256],
65016:[[
1608,
1587,
1604,
1605],
256],
65017:[[
1589,
1604,
1609],
256],
65018:[[
1589,
1604,
1609,
32,
1575,
1604,
1604,
1607,
32,
1593,
1604,
1610,
1607,
32,
1608,
1587,
1604,
1605],
256],
65019:[[
1580,
1604,
32,
1580,
1604,
1575,
1604,
1607],
256],
65020:[[
1585,
1740,
1575,
1604],
256]},
7040 65024:{
65040:[[
44],
256],
65041:[[
12289],
256],
65042:[[
12290],
256],
65043:[[
58],
256],
65044:[[
59],
256],
65045:[[
33],
256],
65046:[[
63],
256],
65047:[[
12310],
256],
65048:[[
12311],
256],
65049:[[
8230],
256],
65056:[,
230],
65057:[,
230],
65058:[,
230],
65059:[,
230],
65060:[,
230],
65061:[,
230],
65062:[,
230],
65063:[,
220],
65064:[,
220],
65065:[,
220],
65066:[,
220],
65067:[,
220],
65068:[,
220],
65069:[,
220],
65072:[[
8229],
256],
65073:[[
8212],
256],
65074:[[
8211],
256],
65075:[[
95],
256],
65076:[[
95],
256],
65077:[[
40],
256],
65078:[[
41],
256],
65079:[[
123],
256],
65080:[[
125],
256],
65081:[[
12308],
256],
65082:[[
12309],
256],
65083:[[
12304],
256],
65084:[[
12305],
256],
65085:[[
12298],
256],
65086:[[
12299],
256],
65087:[[
12296],
256],
65088:[[
12297],
256],
65089:[[
12300],
256],
65090:[[
12301],
256],
65091:[[
12302],
256],
65092:[[
12303],
256],
65095:[[
91],
256],
65096:[[
93],
256],
65097:[[
8254],
256],
65098:[[
8254],
256],
65099:[[
8254],
256],
65100:[[
8254],
256],
65101:[[
95],
256],
65102:[[
95],
256],
65103:[[
95],
256],
65104:[[
44],
256],
65105:[[
12289],
256],
65106:[[
46],
256],
65108:[[
59],
256],
65109:[[
58],
256],
65110:[[
63],
256],
65111:[[
33],
256],
65112:[[
8212],
256],
65113:[[
40],
256],
65114:[[
41],
256],
65115:[[
123],
256],
65116:[[
125],
256],
65117:[[
12308],
256],
65118:[[
12309],
256],
65119:[[
35],
256],
65120:[[
38],
256],
65121:[[
42],
256],
65122:[[
43],
256],
65123:[[
45],
256],
65124:[[
60],
256],
65125:[[
62],
256],
65126:[[
61],
256],
65128:[[
92],
256],
65129:[[
36],
256],
65130:[[
37],
256],
65131:[[
64],
256],
65136:[[
32,
1611],
256],
65137:[[
1600,
1611],
256],
65138:[[
32,
1612],
256],
65140:[[
32,
1613],
256],
65142:[[
32,
1614],
256],
65143:[[
1600,
1614],
256],
65144:[[
32,
1615],
256],
65145:[[
1600,
1615],
256],
65146:[[
32,
1616],
256],
65147:[[
1600,
1616],
256],
65148:[[
32,
1617],
256],
65149:[[
1600,
1617],
256],
65150:[[
32,
1618],
256],
65151:[[
1600,
1618],
256],
65152:[[
1569],
256],
65153:[[
1570],
256],
65154:[[
1570],
256],
65155:[[
1571],
256],
65156:[[
1571],
256],
65157:[[
1572],
256],
65158:[[
1572],
256],
65159:[[
1573],
256],
65160:[[
1573],
256],
65161:[[
1574],
256],
65162:[[
1574],
256],
65163:[[
1574],
256],
65164:[[
1574],
256],
65165:[[
1575],
256],
65166:[[
1575],
256],
65167:[[
1576],
256],
65168:[[
1576],
256],
65169:[[
1576],
256],
65170:[[
1576],
256],
65171:[[
1577],
256],
65172:[[
1577],
256],
65173:[[
1578],
256],
65174:[[
1578],
256],
65175:[[
1578],
256],
65176:[[
1578],
256],
65177:[[
1579],
256],
65178:[[
1579],
256],
65179:[[
1579],
256],
65180:[[
1579],
256],
65181:[[
1580],
256],
65182:[[
1580],
256],
65183:[[
1580],
256],
65184:[[
1580],
256],
65185:[[
1581],
256],
65186:[[
1581],
256],
65187:[[
1581],
256],
65188:[[
1581],
256],
65189:[[
1582],
256],
65190:[[
1582],
256],
65191:[[
1582],
256],
65192:[[
1582],
256],
65193:[[
1583],
256],
65194:[[
1583],
256],
65195:[[
1584],
256],
65196:[[
1584],
256],
65197:[[
1585],
256],
65198:[[
1585],
256],
65199:[[
1586],
256],
65200:[[
1586],
256],
65201:[[
1587],
256],
65202:[[
1587],
256],
65203:[[
1587],
256],
65204:[[
1587],
256],
65205:[[
1588],
256],
65206:[[
1588],
256],
65207:[[
1588],
256],
65208:[[
1588],
256],
65209:[[
1589],
256],
65210:[[
1589],
256],
65211:[[
1589],
256],
65212:[[
1589],
256],
65213:[[
1590],
256],
65214:[[
1590],
256],
65215:[[
1590],
256],
65216:[[
1590],
256],
65217:[[
1591],
256],
65218:[[
1591],
256],
65219:[[
1591],
256],
65220:[[
1591],
256],
65221:[[
1592],
256],
65222:[[
1592],
256],
65223:[[
1592],
256],
65224:[[
1592],
256],
65225:[[
1593],
256],
65226:[[
1593],
256],
65227:[[
1593],
256],
65228:[[
1593],
256],
65229:[[
1594],
256],
65230:[[
1594],
256],
65231:[[
1594],
256],
65232:[[
1594],
256],
65233:[[
1601],
256],
65234:[[
1601],
256],
65235:[[
1601],
256],
65236:[[
1601],
256],
65237:[[
1602],
256],
65238:[[
1602],
256],
65239:[[
1602],
256],
65240:[[
1602],
256],
65241:[[
1603],
256],
65242:[[
1603],
256],
65243:[[
1603],
256],
65244:[[
1603],
256],
65245:[[
1604],
256],
65246:[[
1604],
256],
65247:[[
1604],
256],
65248:[[
1604],
256],
65249:[[
1605],
256],
65250:[[
1605],
256],
65251:[[
1605],
256],
65252:[[
1605],
256],
65253:[[
1606],
256],
65254:[[
1606],
256],
65255:[[
1606],
256],
65256:[[
1606],
256],
65257:[[
1607],
256],
65258:[[
1607],
256],
65259:[[
1607],
256],
65260:[[
1607],
256],
65261:[[
1608],
256],
65262:[[
1608],
256],
65263:[[
1609],
256],
65264:[[
1609],
256],
65265:[[
1610],
256],
65266:[[
1610],
256],
65267:[[
1610],
256],
65268:[[
1610],
256],
65269:[[
1604,
1570],
256],
65270:[[
1604,
1570],
256],
65271:[[
1604,
1571],
256],
65272:[[
1604,
1571],
256],
65273:[[
1604,
1573],
256],
65274:[[
1604,
1573],
256],
65275:[[
1604,
1575],
256],
65276:[[
1604,
1575],
256]},
7041 65280:{
65281:[[
33],
256],
65282:[[
34],
256],
65283:[[
35],
256],
65284:[[
36],
256],
65285:[[
37],
256],
65286:[[
38],
256],
65287:[[
39],
256],
65288:[[
40],
256],
65289:[[
41],
256],
65290:[[
42],
256],
65291:[[
43],
256],
65292:[[
44],
256],
65293:[[
45],
256],
65294:[[
46],
256],
65295:[[
47],
256],
65296:[[
48],
256],
65297:[[
49],
256],
65298:[[
50],
256],
65299:[[
51],
256],
65300:[[
52],
256],
65301:[[
53],
256],
65302:[[
54],
256],
65303:[[
55],
256],
65304:[[
56],
256],
65305:[[
57],
256],
65306:[[
58],
256],
65307:[[
59],
256],
65308:[[
60],
256],
65309:[[
61],
256],
65310:[[
62],
256],
65311:[[
63],
256],
65312:[[
64],
256],
65313:[[
65],
256],
65314:[[
66],
256],
65315:[[
67],
256],
65316:[[
68],
256],
65317:[[
69],
256],
65318:[[
70],
256],
65319:[[
71],
256],
65320:[[
72],
256],
65321:[[
73],
256],
65322:[[
74],
256],
65323:[[
75],
256],
65324:[[
76],
256],
65325:[[
77],
256],
65326:[[
78],
256],
65327:[[
79],
256],
65328:[[
80],
256],
65329:[[
81],
256],
65330:[[
82],
256],
65331:[[
83],
256],
65332:[[
84],
256],
65333:[[
85],
256],
65334:[[
86],
256],
65335:[[
87],
256],
65336:[[
88],
256],
65337:[[
89],
256],
65338:[[
90],
256],
65339:[[
91],
256],
65340:[[
92],
256],
65341:[[
93],
256],
65342:[[
94],
256],
65343:[[
95],
256],
65344:[[
96],
256],
65345:[[
97],
256],
65346:[[
98],
256],
65347:[[
99],
256],
65348:[[
100],
256],
65349:[[
101],
256],
65350:[[
102],
256],
65351:[[
103],
256],
65352:[[
104],
256],
65353:[[
105],
256],
65354:[[
106],
256],
65355:[[
107],
256],
65356:[[
108],
256],
65357:[[
109],
256],
65358:[[
110],
256],
65359:[[
111],
256],
65360:[[
112],
256],
65361:[[
113],
256],
65362:[[
114],
256],
65363:[[
115],
256],
65364:[[
116],
256],
65365:[[
117],
256],
65366:[[
118],
256],
65367:[[
119],
256],
65368:[[
120],
256],
65369:[[
121],
256],
65370:[[
122],
256],
65371:[[
123],
256],
65372:[[
124],
256],
65373:[[
125],
256],
65374:[[
126],
256],
65375:[[
10629],
256],
65376:[[
10630],
256],
65377:[[
12290],
256],
65378:[[
12300],
256],
65379:[[
12301],
256],
65380:[[
12289],
256],
65381:[[
12539],
256],
65382:[[
12530],
256],
65383:[[
12449],
256],
65384:[[
12451],
256],
65385:[[
12453],
256],
65386:[[
12455],
256],
65387:[[
12457],
256],
65388:[[
12515],
256],
65389:[[
12517],
256],
65390:[[
12519],
256],
65391:[[
12483],
256],
65392:[[
12540],
256],
65393:[[
12450],
256],
65394:[[
12452],
256],
65395:[[
12454],
256],
65396:[[
12456],
256],
65397:[[
12458],
256],
65398:[[
12459],
256],
65399:[[
12461],
256],
65400:[[
12463],
256],
65401:[[
12465],
256],
65402:[[
12467],
256],
65403:[[
12469],
256],
65404:[[
12471],
256],
65405:[[
12473],
256],
65406:[[
12475],
256],
65407:[[
12477],
256],
65408:[[
12479],
256],
65409:[[
12481],
256],
65410:[[
12484],
256],
65411:[[
12486],
256],
65412:[[
12488],
256],
65413:[[
12490],
256],
65414:[[
12491],
256],
65415:[[
12492],
256],
65416:[[
12493],
256],
65417:[[
12494],
256],
65418:[[
12495],
256],
65419:[[
12498],
256],
65420:[[
12501],
256],
65421:[[
12504],
256],
65422:[[
12507],
256],
65423:[[
12510],
256],
65424:[[
12511],
256],
65425:[[
12512],
256],
65426:[[
12513],
256],
65427:[[
12514],
256],
65428:[[
12516],
256],
65429:[[
12518],
256],
65430:[[
12520],
256],
65431:[[
12521],
256],
65432:[[
12522],
256],
65433:[[
12523],
256],
65434:[[
12524],
256],
65435:[[
12525],
256],
65436:[[
12527],
256],
65437:[[
12531],
256],
65438:[[
12441],
256],
65439:[[
12442],
256],
65440:[[
12644],
256],
65441:[[
12593],
256],
65442:[[
12594],
256],
65443:[[
12595],
256],
65444:[[
12596],
256],
65445:[[
12597],
256],
65446:[[
12598],
256],
65447:[[
12599],
256],
65448:[[
12600],
256],
65449:[[
12601],
256],
65450:[[
12602],
256],
65451:[[
12603],
256],
65452:[[
12604],
256],
65453:[[
12605],
256],
65454:[[
12606],
256],
65455:[[
12607],
256],
65456:[[
12608],
256],
65457:[[
12609],
256],
65458:[[
12610],
256],
65459:[[
12611],
256],
65460:[[
12612],
256],
65461:[[
12613],
256],
65462:[[
12614],
256],
65463:[[
12615],
256],
65464:[[
12616],
256],
65465:[[
12617],
256],
65466:[[
12618],
256],
65467:[[
12619],
256],
65468:[[
12620],
256],
65469:[[
12621],
256],
65470:[[
12622],
256],
65474:[[
12623],
256],
65475:[[
12624],
256],
65476:[[
12625],
256],
65477:[[
12626],
256],
65478:[[
12627],
256],
65479:[[
12628],
256],
65482:[[
12629],
256],
65483:[[
12630],
256],
65484:[[
12631],
256],
65485:[[
12632],
256],
65486:[[
12633],
256],
65487:[[
12634],
256],
65490:[[
12635],
256],
65491:[[
12636],
256],
65492:[[
12637],
256],
65493:[[
12638],
256],
65494:[[
12639],
256],
65495:[[
12640],
256],
65498:[[
12641],
256],
65499:[[
12642],
256],
65500:[[
12643],
256],
65504:[[
162],
256],
65505:[[
163],
256],
65506:[[
172],
256],
65507:[[
175],
256],
65508:[[
166],
256],
65509:[[
165],
256],
65510:[[
8361],
256],
65512:[[
9474],
256],
65513:[[
8592],
256],
65514:[[
8593],
256],
65515:[[
8594],
256],
65516:[[
8595],
256],
65517:[[
9632],
256],
65518:[[
9675],
256]}
7045 /***** Module to export */
7053 /*globals module:true,define:true*/
7056 if (typeof module ===
"object") {
7057 module.exports = unorm;
7060 } else if (typeof define ===
"function" && define.amd) {
7061 define(
"unorm", function () {
7070 /***** Export as shim for String::normalize method *****/
7072 http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts#november_8_2013_draft_rev_21
7074 21.1.3.12 String.prototype.normalize(
form=
"NFC")
7075 When the normalize method is called with one argument form, the following steps are taken:
7077 1. Let O be CheckObjectCoercible(this value).
7078 2. Let S be ToString(O).
7079 3. ReturnIfAbrupt(S).
7080 4. If form is not provided or undefined let form be
"NFC".
7081 5. Let f be ToString(form).
7082 6. ReturnIfAbrupt(f).
7083 7. If f is not one of
"NFC",
"NFD",
"NFKC", or
"NFKD", then throw a RangeError Exception.
7084 8. Let ns be the String value is the result of normalizing S into the normalization form named by f as specified in Unicode Standard Annex #
15, UnicodeNormalizatoin Forms.
7087 The length property of the normalize method is
0.
7089 *NOTE* The normalize function is intentionally generic; it does not require that its this value be a String object. Therefore it can be transferred to other kinds of objects for use as a method.
7091 unorm.shimApplied = false;
7093 if (!String.prototype.normalize) {
7094 String.prototype.normalize = function(form) {
7095 var str =
"" + this;
7096 form = form === undefined ?
"NFC" : form;
7098 if (form ===
"NFC") {
7099 return unorm.nfc(str);
7100 } else if (form ===
"NFD") {
7101 return unorm.nfd(str);
7102 } else if (form ===
"NFKC") {
7103 return unorm.nfkc(str);
7104 } else if (form ===
"NFKD") {
7105 return unorm.nfkd(str);
7107 throw new RangeError(
"Invalid normalization form: " + form);
7111 unorm.shimApplied = true;
7115 <script>/*! jQuery v2.1
.1 | (c)
2005,
2014 jQuery Foundation, Inc. | jquery.org/license */
7116 !function(a,b){"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){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,
m="
2.1.1",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:
0,toArray:function(){return d.call(this)},get:function(a){return null!=a?
0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(
0)},last:function(){return this.eq(-
1)},eq:function(a){var b=this.length,c=+a+(
0>a?b:
0);return this.pushStack(c
>=
0&&b
>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.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||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i
>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!
1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void
0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!
0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)
>=
0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!
1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!
1:!
0},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?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(
1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=
0,f=a.length,g=s(a);if(c){if(g){for(;f
>e;e++)if(d=b.apply(a[e],c),d===!
1)break}else for(e in a)if(d=b.apply(a[e],c),d===!
1)break}else if(g){for(;f
>e;e++)if(d=b.call(a[e],e,a[e]),d===!
1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!
1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-
1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=
0,e=a.length;c
>d;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;g
>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=
0,g=a.length,h=s(a),i=[];if(h)for(;g
>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:
1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,
2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void
0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!
1:
1===a.nodeType&&b?!
0:"array"===c||
0===b||"number"==typeof b&&b
>0&&b-
1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,
u=
"sizzle"+-new Date,v=a.document,w=
0,x=
0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!
0),
0},
C=
"undefined",D=
1<
<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=
0,c=this.length;c
>b;b++)if(this[b]===a)return b;return-
1},
L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
M="[\\x20\\t\\r\\n\\f]",
N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),
P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",
Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([
>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[
>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{
1,
6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var
d="
0x"+b-
65536;return d!==d||c?b:
0>d?String.fromCharCode(d+
65536):String.fromCharCode(d
>>10|
55296,
1023&d|
56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=
0;while(a[c++]=b[d++]);a.length=c-
1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||
"string"!=typeof a)return d;if(
1!==(k=b.nodeType)&&
9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[
1]){if(
9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[
2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[
3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=
9===k&&a,
1===k&&
"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute(
"id"))?s=r.replace(bb,
"\\$&"):b.setAttribute(
"id",s),
s=
"[id='"+s+
"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(
",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute(
"id")}}}return i(a.replace(R,
"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+
" ")
>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!
0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!
1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&
1===a.nodeType&&
1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-
1;return a?
1:-
1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(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 ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!
1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&
9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!
1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.
className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.
innerHTML="
<div class='a'
></div><div class='a i'
></div>",a.firstChild.className="i
",2===a.getElementsByClassName("i
").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id
")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id
");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(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){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="<select msallowclip=''
><option selected=''
></option></select>",a.querySelectorAll("[msallowclip^='']
").length&&q.push("[*^$]=
"+M+"*(?:''|\
"\")
"),a.querySelectorAll("[selected]
").length||q.push("\\[
"+M+"*(?:value|
"+L+")
"),a.querySelectorAll(":checked
").length||q.push(":checked
")}),ib(function(a){var b=e.createElement("input
");b.setAttribute("type
","hidden
"),a.appendChild(b).setAttribute("name
","D
"),a.querySelectorAll("[name=d]
").length&&q.push("name
"+M+"*[*^$|!~]?=
"),a.querySelectorAll(":enabled
").length||q.push(":enabled
",":disabled
"),a.querySelectorAll("*,:x
"),q.push(",.*:
")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div
"),s.call(a,"[s!='']:x
"),r.push("!=
",Q)}),q=q.length&&new RegExp(q.join("|
")),r=r.length&&new RegExp(r.join("|
")),b=$.test(o.compareDocumentPosition),t=b||$.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===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$
1']
"),!(!c.matchesSelector||!p||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 fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.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},fb.error=function(a){throw new Error("Syntax error, unrecognized expression:
"+a)},fb.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=fb.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=fb.selectors={cacheLength:50,createPseudo:hb,match:X,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(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~=
"===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]||fb.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]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.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(cb,db).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("(^|
"+M+")
"+a+"(
"+M+"|$)
"))&&y(a,function(a){return b.test("string
"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class
")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.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+" ").indexOf(c)>-1:"|=
"===b?e===c||e.slice(0,c.length+1)===c+"-
":!1):!0}},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;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only
"===a&&!o&&"nextSibling
"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo:
"+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$
1"));return d[u]?hb(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),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang:
"+a),a=a.replace(cb,db).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:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!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 Z.test(a.nodeName)},input:function(a){return Y.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:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?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]=lb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=mb(b);function pb(){}pb.prototype=d.filters=d.pseudos,d.setFilters=new pb,g=fb.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=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[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?fb.error(a):z(a,i).slice(0)};function qb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(
1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((
1===b.nodeType||e)&&a(b,c,g))return!
0}else while(b=b[d])if(
1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[
0]===w&&h[
1]===f)return j[
2]=h[
2];if(i[d]=j,j[
2]=a(b,c,g))return!
0}}}function sb(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 tb(a,b,c){for(var d=
0,e=b.length;e
>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=
0,i=a.length,j=null!=b;i
>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(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?K.call(f,l):m[k])
>-
1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[
0].type],h=g||d.relative[" "],i=g?
1:
0,k=rb(function(a){return a===b},h,!
0),l=rb(function(a){return K.call(b,a)
>-
1},h,!
0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f
>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f
>e;e++)if(d.relative[a[e].type])break;return vb(i
>1&&sb(m),i
>1&&qb(a.slice(
0,i-
1).concat({value:
" "===a[i-
2].type?
"*":
""})).replace(R,
"$1"),c,e
>i&&wb(a.slice(i,e)),f
>e&&wb(a=a.slice(e)),f
>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length
>0,e=a.length
>0,f=function(f,g,h,i,k){var l,m,o,p=
0,
q=
"0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG(
"*",k),v=w+=null==t?
1:Math.random()||
.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=
0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=
0;while(o=b[m++])o(r,s,g,h);if(f){if(p
>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length
>0&&p+b.length
>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+
" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,
n=
"function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],
1===o.length){if(j=o[
0]=o[
0].slice(
0),j.length
>2&&
"ID"===(k=j[
0]).type&&c.getById&&
9===b.nodeType&&p&&d.relative[j[
1].type]){if(b=(d.find.ID(k.matches[
0].replace(cb,db),b)||[])[
0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?
0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[
0].replace(cb,db),ab.test(j[
0].type)&&ob(b.parentNode)||b))){if(j.splice(i,
1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split(
"").sort(B).join(
"")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return
1&a.compareDocumentPosition(n.createElement(
"div"))}),ib(function(a){return a.
innerHTML=
"<a href='#'></a>",
"#"===a.firstChild.getAttribute(
"href")})||jb(
"type|href|height|width",function(a,b,c){return c?void
0:a.getAttribute(b,
"type"===b.toLowerCase()?
1:
2)}),c.attributes&&ib(function(a){return a.
innerHTML=
"<input/>",a.firstChild.setAttribute(
"value",
""),
""===a.firstChild.getAttribute(
"value")})||jb(
"value",function(a,b,c){return c||
"input"!==a.nodeName.toLowerCase()?void
0:a.defaultValue}),ib(function(a){return null==a.getAttribute(
"disabled")})||jb(L,function(a,b,c){var d;return c?void
0:a[b]===!
0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);n.find=t,n.expr=t.selectors,n.expr[
":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/
?>(?:<\/\
1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)
>=
0!==c})}n.filter=function(a,b,c){var d=b[
0];return c&&(
a=":not("+a+")"),
1===b.length&&
1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return
1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=
0;c
>b;b++)if(n.contains(e[b],this))return!
0}));for(b=
0;c
>b;b++)n.find(a,e[b],d);return d=this.pushStack(c
>1?n.unique(d):d),d.selector=this.selector?this.selector+
" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!
1))},not:function(a){return this.pushStack(x(this,a||[],!
0))},is:function(a){return!!x(this,
"string"==typeof a&&u.test(a)?n(a):a||[],!
1).length}});var y,z=/^(?:\s*(<[\w\W]+
>)[^
>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(
c="<"===a[
0]&&"
>"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined
"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):
0;e
>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType
<11&&(g?g.index(c)
>-
1:
1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length
>1?n.unique(f):f)},index:function(a){return a?
"string"==typeof a?g.call(n(a),this[
0]):g.call(this,a.jquery?a[
0]:a):this[
0]&&this[
0].parentNode?this.first().prevAll().length:-
1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&
1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&
11!==b.nodeType?b:null},parents:function(a){return n.dir(a,
"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,
"parentNode",c)},next:function(a){return D(a,
"nextSibling")},prev:function(a){return D(a,
"previousSibling")},nextAll:function(a){return n.dir(a,
"nextSibling")},prevAll:function(a){return n.dir(a,
"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,
"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,
"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return
"Until"!==a.slice(-
5)&&(d=c),d&&
"string"==typeof d&&(e=n.filter(d,e)),this.length
>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!
0}),b}n.Callbacks=function(a){
a=
"string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!
0,g=e||
0,e=
0,f=h.length,d=!
0;h&&f
>g;g++)if(h[g].apply(l[
0],l[
1])===!
1&&a.stopOnFalse){b=!
1;break}d=!
1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))
>-
1)h.splice(c,
1),d&&(f
>=c&&f--,g
>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)
>-
1:!(!h||!h.length)},empty:function(){return h=[],f=
0,this},disable:function(){return h=i=b=void
0,this},disabled:function(){return!h},lock:function(){return i=void
0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],
c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[
1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[
0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[
2],h=f[
3];d[f[
1]]=g.add,h&&g.add(function(){c=h},b[
1^a][
2].disable,b[
2][
2].lock),e[f[
0]]=function(){return e[f[
0]+"With"](this===e?d:this,arguments),this},e[f[
0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=
0,c=d.call(arguments),e=c.length,f=
1!==e||a&&n.isFunction(a.promise)?e:
0,g=
1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length
>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e
>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e
>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!
1,readyWait:
1,holdReady:function(a){a?n.readyWait++:n.ready(!
0)},ready:function(a){(a===!
0?--n.readyWait:n.isReady)||(n.isReady=!
0,a!==!
0&&--n.readyWait
>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler(
"ready"),n(l).off(
"ready"))))}});function I(){l.removeEventListener(
"DOMContentLoaded",I,!
1),a.removeEventListener(
"load",I,!
1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),
"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener(
"DOMContentLoaded",I,!
1),a.addEventListener(
"load",I,!
1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=
0,i=a.length,j=null==c;if(
"object"===n.type(c)){e=!
0;for(h in c)n.access(a,b,h,c[h],!
0,f,g)}else if(void
0!==d&&(e=!
0,n.isFunction(d)||(g=!
0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i
>h;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};n.acceptData=function(a){return
1===a.nodeType||
9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},
0,{get:function(){return{}}}),this.expando=n.expando+Math.random()}K.uid=
1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return
0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void
0===b?c:c[b]},access:function(a,b,c){var d;return void
0===b||b&&"string"==typeof b&&void
0===c?(d=this.get(a,b),void
0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void
0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void
0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void
0===c&&
1===a.nodeType)if(
d="data-"+b.replace(O,"-$
1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{
c="true"===c?!
0:"false"===c?!
1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void
0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)
7117 },_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.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=M.get(f),
1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,
0===d.indexOf("data-")&&(d=n.camelCase(d.slice(
5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!
0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void
0===b){if(c=M.get(f,a),void
0!==c)return c;if(c=M.get(f,d),void
0!==c)return c;if(c=P(f,d,void
0),void
0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-
1!==a.indexOf("-")&&void
0!==c&&M.set(this,a,b)})},null,b,arguments.length
>1,null,!
0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||
"fx")+
"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void
0},dequeue:function(a,b){b=b||
"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.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 L.get(a,c)||L.access(a,c,{empty:n.Callbacks(
"once memory").add(function(){L.remove(a,[b+
"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=
2;return
"string"!=typeof a&&(b=a,
a=
"fx",c--),arguments.length
<c?n.queue(this[
0],a):void
0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),
"fx"===a&&
"inprogress"!==c[
0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||
"fx",[])},promise:function(a,b){var c,d=
1,e=n.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=L.get(f[g],a+
"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=[
"Top",
"Right",
"Bottom",
"Left"],S=function(a,b){return a=b||a,
"none"===n.css(a,
"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement(
"div")),c=l.createElement(
"input");c.setAttribute(
"type",
"radio"),c.setAttribute(
"checked",
"checked"),c.setAttribute(
"name",
"t"),b.appendChild(c),k.checkClone=b.cloneNode(!
0).cloneNode(!
0).lastChild.checked,b.
innerHTML=
"<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!
0).lastChild.defaultValue}();var
U=
"undefined";k.
focusinBubbles=
"onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!
0}function $(){return!
1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void
0}),b=(b||
"").match(E)||[
""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[
1],p=(h[
2]||
"").split(
".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(
".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=
0,l.setup&&l.setup.call(a,d,p,g)!==!
1||a.addEventListener&&a.addEventListener(o,g,!
1)),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),n.event.global[o]=!
0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||
"").match(E)||[
""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[
1],p=(h[
2]||
"").split(
".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[
2]&&new RegExp(
"(^|\\.)"+p.join(
"\\.(?:.*\\.|)")+
"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==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,p,r.handle)!==!
1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!
0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,
"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,
"type")?b.type:b,r=j.call(b,
"namespace")?b.namespace.split(
"."):[];if(g=h=d=d||l,
3!==d.nodeType&&
8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(
".")
>=
0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")
<0&&
"on"+q,b=b[n.expando]?b:new n.Event(q,
"object"==typeof b&&b),b.isTrigger=e?
2:
3,b.namespace=r.join(
"."),b.namespace_re=b.namespace?new RegExp(
"(^|\\.)"+r.join(
"\\.(?:.*\\.|)")+
"(\\.|$)"):null,b.result=void
0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!
1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=
0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f
>1?i:o.bindType||q,m=(L.get(g,
"events")||{})[b.type]&&L.get(g,
"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!
1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!
1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void
0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,
"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[
0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!
1){h=n.event.handlers.call(this,a,j),b=
0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=
0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void
0!==e&&(a.result=e)===!
1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||
"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!
0||
"click"!==a.type){for(d=[],c=
0;h
>c;c++)f=b[c],e=f.selector+" ",void
0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)
>=
0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h
<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:
"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(
" "),fixHooks:{},keyHooks:{props:
"char charCode key keyCode".split(
" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:
"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(
" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||
0)-(d&&d.clientLeft||e&&e.clientLeft||
0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||
0)-(d&&d.clientTop||e&&e.clientTop||
0)),a.which||void
0===f||(a.which=
1&f?
1:
2&f?
3:
4&f?
2:
0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),
3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!
0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!
1):void
0},delegateType:
"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!
1):void
0},delegateType:
"focusout"},click:{trigger:function(){return
"checkbox"===this.type&&this.click&&n.nodeName(this,
"input")?(this.click(),!
1):void
0},_default:function(a){return n.nodeName(a.target,
"a")}},beforeunload:{postDispatch:function(a){void
0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!
0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!
1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void
0===a.defaultPrevented&&a.returnValue===!
1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!
0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:
"mouseover",mouseleave:
"mouseout",pointerenter:
"pointerover",pointerleave:
"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:
"focusin",blur:
"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!
0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!
0),L.access(d,b,(e||
0)+
1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-
1;e?L.access(d,b,e):(d.removeEventListener(a,c,!
0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if(
"object"==typeof a){
"string"!=typeof b&&(c=c||b,b=void
0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void
0):null==d&&(
"string"==typeof b?(d=c,c=void
0):(d=c,c=b,b=void
0)),d===!
1)d=$;else if(!d)return this;return
1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,
1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(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=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[
0];return c?n.event.trigger(a,b,c,!
0):void
0}});var ab=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^
>]*)\
/>/gi,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)
>\s*$/g,ib={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,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return n.nodeName(a,"table
")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr
")?a.getElementsByTagName("tbody
")[0]||a.appendChild(a.ownerDocument.createElement("tbody
")):a}function kb(a){return a.type=(null!==a.getAttribute("type
"))+"/
"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type
"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(
1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=
0,d=j[e].length;d
>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void
0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!
0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||
1!==a.nodeType&&
11!==a.nodeType||n.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=
0,e=f.length;e
>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=
0,e=f.length;e
>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length
>0&&mb(g,!i&&ob(a,
"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=
0,o=a.length;o
>m;m++)if(e=a[m],e||
0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[
1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[
1]+e.replace(ab,"<$
1></$
2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=ob(k.appendChild(e),"script
"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.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 this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(ob(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(c,"script
")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(ob(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(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&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$
1></$
2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string
"==typeof p&&!k.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(ob(c,"script
"),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-
1].ownerDocument,n.map(f,lb),j=
0;g
>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-
1,h=
0;g
>=h;h++)c=h===g?this:this.clone(!
0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[
0]))?d.display:n.css(e[
0],"display");return e.detach(),f}function tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||n("
<iframe frameborder='
0' width='
0' height='
0'
/>")).appendTo(b.documentElement),b=qb[0].contentDocument,b.write(),b.close(),c=sb(a,b),qb.detach()),rb[a]=c),c}var ub=/^margin/,vb=new RegExp("^(
"+Q+")(?!px)[a-z%]+$
","i
"),wb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)};function xb(a,b,c){var d,e,f,g,h=a.style;return c=c||wb(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),vb.test(g)&&ub.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 yb(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div
"),f=l.createElement("div
");if(f.style){f.style.backgroundClip="content-box
",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box
"===f.style.backgroundClip,e.style.cssText="border:
0;width:
0;height:
0;top:
0;left:-
9999px;margin-top:
1px;position:absolute
",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:
1%;top:
1%;border:
1px;padding:
1px;width:
4px;position:absolute
",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%
"!==g.top,c="4px
"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div
"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:
0;border:
0;padding:
0",c.style.marginRight=c.style.width="0",f.style.width="1px
",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),b}})}}(),n.swap=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};var zb=/^(none|table(?!-c[ea]).+)/,Ab=new RegExp("^(
"+Q+")(.*)$
","i
"),Bb=new RegExp("^([+-])=(
"+Q+")
","i
"),Cb={position:"absolute
",visibility:"hidden
",display:"block
"},Db={letterSpacing:"0",fontWeight:"400"},Eb=["Webkit
","O
","Moz
","ms
"];function Fb(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Eb.length;while(e--)if(b=Eb[e]+c,b in a)return b;return d}function Gb(a,b,c){var d=Ab.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px
"):b}function Hb(a,b,c,d,e){for(var f=c===(d?"border
":"content
")?4:"width
"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!
0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!
0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!
0,e))):(g+=n.css(a,"padding"+R[f],!
0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!
0,e)));return g}function Ib(a,b,c){var d=!
0,
e="width"===b?a.offsetWidth:a.offsetHeight,f=wb(a),
g="border-box"===n.css(a,"boxSizing",!
1,f);if(
0>=e||null==e){if(e=xb(a,b,f),(
0>e||null==e)&&(e=a.style[b]),vb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||
0}return e+Hb(a,b,c||(g?"border":"content"),d,f)+"px"}function Jb(a,b){for(var c,d,e,f=[],g=
0,h=a.length;h
>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.
display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",tb(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=
0;h
>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xb(a,"opacity");return""===c?"
1":c}}}},cssNumber:{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=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void
0===c?g&&"get"in g&&void
0!==(e=g.get(a,!
1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Bb.exec(c))&&(c=(e[
1]+
1)*e[
2]+parseFloat(n.css(a,b)),
f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||
0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void
0===(c=g.set(a,c,d))||(i[b]=c)),void
0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!
0,c)),void
0===e&&(e=xb(a,b,d)),"normal"===e&&b in Db&&(e=Db[b]),""===c||c?(f=parseFloat(e),c===!
0||n.isNumeric(f)?f||
0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?zb.test(n.css(a,"display"))&&
0===a.offsetWidth?n.swap(a,Cb,function(){return Ib(a,b,d)}):Ib(a,b,d):void
0},set:function(a,c,d){var e=d&&wb(a);return Gb(a,c,d?Hb(a,b,d,"border-box"===n.css(a,"boxSizing",!
1,e),e):
0)}}}),n.cssHooks.marginRight=yb(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xb,[a,"marginRight"]):void
0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=
0,e={},
f="string"==typeof c?c.split(" "):[c];
4>d;d++)e[a+R[d]+b]=f[d]||f[d-
2]||f[
0];return e}},ub.test(a)||(n.cssHooks[a+b].set=Gb)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=
0;if(n.isArray(b)){for(d=wb(a),e=b.length;e
>g;g++)f[b[g]]=n.css(a,b[g],!
1,d);return f}return void
0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length
>1)},show:function(){return Jb(this,!
0)},hide:function(){return Jb(this)},toggle:function(a){return
"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Kb(a,b,c,d,e){return new Kb.prototype.init(a,b,c,d,e)}n.Tween=Kb,Kb.prototype={constructor:Kb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||
"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?
"":
"px")},cur:function(){var a=Kb.propHooks[this.prop];return a&&a.get?a.get(this):Kb.propHooks._default.get(this)},run:function(a){var b,c=Kb.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,
0,
1,this.options.duration):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):Kb.propHooks._default.set(this),this}},Kb.prototype.init.prototype=Kb.prototype,Kb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,
""),b&&
"auto"!==b?b:
0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Kb.propHooks.scrollTop=Kb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return
.5-Math.cos(a*Math.PI)/
2}},n.fx=Kb.prototype.init,n.fx.step={};var Lb,Mb,Nb=/^(?:toggle|show|hide)$/,Ob=new RegExp(
"^(?:([+-])=|)("+Q+
")([a-z%]*)$",
"i"),Pb=/queueHooks$/,Qb=[Vb],Rb={
"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Ob.exec(b),f=e&&e[
3]||(n.cssNumber[a]?
"":
"px"),g=(n.cssNumber[a]||
"px"!==f&&+d)&&Ob.exec(n.css(c.elem,a)),h=
1,i=
20;if(g&&g[
3]!==f){f=f||g[
3],e=e||[],g=+d||
1;do h=h||
".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&
1!==h&&--i)}return e&&(g=c.start=+g||+d||
0,c.unit=f,c.end=e[
1]?g+(e[
1]+
1)*e[
2]:+e[
2]),c}]};function Sb(){return setTimeout(function(){Lb=void
0}),Lb=n.now()}function Tb(a,b){var c,d=
0,e={height:a};for(b=b?
1:
0;
4>d;d+=
2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ub(a,b,c){for(var d,e=(Rb[b]||[]).concat(Rb["*"]),f=
0,g=e.length;g
>f;f++)if(d=e[f].call(c,b,a))return d}function Vb(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=
0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),
1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),
k="none"===j?L.get(a,"olddisplay")||tb(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.
display="inline-block")),c.overflow&&(o.
overflow="hidden",l.always(function(){o.overflow=c.overflow[
0],o.overflowX=c.overflow[
1],o.overflowY=c.overflow[
2]}));for(d in b)if(e=b[d],Nb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void
0===q[d])continue;p=!
0}m[d]=q&&q[d]||n.style(a,d)}else j=void
0;if(n.isEmptyObject(m))"inline"===("none"===j?tb(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ub(p?q[d]:
0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.
start="width"===d||"height"===d?
1:
0))}}function Wb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[
1],f=a[c]=f[
0]),c!==d&&(a[d]=f,delete a[c]),g=n.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 Xb(a,b,c){var d,e,f=
0,g=Qb.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!
1;for(var b=Lb||Sb(),c=Math.max(
0,j.startTime+j.duration-b),d=c/j.duration||
0,f=
1-d,g=
0,i=j.tweens.length;i
>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),
1>f&&i?c:(h.resolveWith(a,[j]),!
1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!
0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:Lb||Sb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.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;d
>c;c++)j.tweens[c].run(
1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wb(k,j.opts.specialEasing);g
>f;f++)if(d=Qb[f].call(j,a,k,j.opts))return d;return n.map(k,Ub,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xb,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=
0,e=a.length;e
>d;d++)c=a[d],Rb[c]=Rb[c]||[],Rb[c].unshift(b)},prefilter:function(a,b){b?Qb.unshift(a):Qb.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?
0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!
0)&&(d.
queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",
0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xb(this,n.extend({},a),f);(e||L.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=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pb.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)&&n.dequeue(this,a)})},finish:function(a){return a!==!
1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:
0;for(c.finish=!
0,n.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;g
>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Tb(b,!
0),a,d,e)}}),n.each({slideDown:Tb("show"),slideUp:Tb("hide"),slideToggle:Tb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=
0,c=n.timers;for(Lb=n.now();b
<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,
1);c.length||n.fx.stop(),Lb=void
0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=
13,n.fx.start=function(){Mb||(Mb=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Mb),Mb=null},n.fx.speeds={slow:
600,fast:
200,_default:
400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||
"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement(
"input"),b=l.createElement(
"select"),c=b.appendChild(l.createElement(
"option"));a.
type=
"checkbox",k.
checkOn=
""!==a.value,k.optSelected=c.selected,b.disabled=!
0,k.optDisabled=!c.disabled,a=l.createElement(
"input"),a.
value=
"t",a.
type=
"radio",k.
radioValue=
"t"===a.value}();var Yb,Zb,$b=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length
>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&
3!==f&&
8!==f&&
2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(
1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Zb:Yb)),void
0===c?d&&
"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void
0:e):null!==c?d&&
"set"in d&&void
0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+
""),c):void n.removeAttr(a,b))
7118 },removeAttr:function(a,b){var c,d,e=
0,f=b&&b.match(E);if(f&&
1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!
1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&
"radio"===b&&n.nodeName(a,
"input")){var c=a.value;return a.setAttribute(
"type",b),c&&(a.value=c),b}}}}}),Zb={set:function(a,b,c){return b===!
1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$b[b]||n.find.attr;$b[b]=function(a,b,d){var e,f;return d||(f=$b[b],$b[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$b[b]=f),e}});var _b=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length
>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{
"for":
"htmlFor",
"class":
"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&
3!==g&&
8!==g&&
2!==g)return f=
1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.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){return a.hasAttribute(
"tabindex")||_b.test(a.nodeName)||a.href?a.tabIndex:-
1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each([
"tabIndex",
"readOnly",
"maxLength",
"cellSpacing",
"cellPadding",
"rowSpan",
"colSpan",
"useMap",
"frameBorder",
"contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ac=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,
h=
"string"==typeof a&&a,i=
0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||
"").match(E)||[];j
>i;i++)if(c=this[i],d=
1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):" ")){f=
0;while(e=b[f++])d.indexOf(" "+e+" ")
<0&&(d+=e+
" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=
0===arguments.length||
"string"==typeof a&&a,i=
0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||
"").match(E)||[];j
>i;i++)if(c=this[i],d=
1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):"")){f=
0;while(e=b[f++])while(d.indexOf(" "+e+" ")
>=
0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=
0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!
1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var
b=" "+a+" ",c=
0,d=this.length;d
>c;c++)if(
1===this[c].nodeType&&(" "+this[c].className+" ").replace(ac," ").indexOf(b)
>=
0)return!
0;return!
1}});var bc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[
0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;
1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?
e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void
0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void
0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,
f="select-one"===a.type||
0>e,g=f?null:[],h=f?e+
1:d.length,i=
0>e?h:f?e:
0;h
>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)
>=
0)&&(c=!
0);return c||(a.selectedIndex=-
1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)
>=
0:void
0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length
>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},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)}});var cc=n.now(),dc=/\?/;n.parseJSON=function(a){return JSON.parse(a+
"")},n.parseXML=function(a){var b,c;if(!a||
"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,
"text/xml")}catch(d){b=void
0}return(!b||b.getElementsByTagName(
"parsererror").length)&&n.error(
"Invalid XML: "+a),b};var ec,fc,gc=/#.*$/,hc=/([?&])_=[^&]*/,ic=/^(.*?):[ \t]*([^\r\n]*)$/gm,jc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,kc=/^(?:GET|HEAD)$/,lc=/^\/\//,mc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,nc={},oc={},
pc=
"*/".concat(
"*");try{fc=location.href}catch(qc){fc=l.createElement(
"a"),fc.
href=
"",fc=fc.href}ec=mc.exec(fc.toLowerCase())||[];function rc(a){return function(b,c){
"string"!=typeof b&&(c=b,
b=
"*");var d,e=
0,f=b.toLowerCase().match(E)||[];if(n.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 sc(a,b,c,d){var e={},f=a===oc;function g(h){var i;return e[h]=!
0,n.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 tc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void
0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!
0,a,d),a}function uc(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}return f?(f!==i[
0]&&i.unshift(f),c[f]):void
0}function vc(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}}n.extend({active:
0,lastModified:{},etag:{},ajaxSettings:{url:fc,type:
"GET",isLocal:jc.test(ec[
1]),global:!
0,processData:!
0,async:!
0,contentType:
"application/x-www-form-urlencoded; charset=UTF-8",accepts:{
"*":pc,text:
"text/plain",html:
"text/html",xml:
"application/xml, text/xml",json:
"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:
"responseXML",text:
"responseText",json:
"responseJSON"},converters:{
"* text":String,
"text html":!
0,
"text json":n.parseJSON,
"text xml":n.parseXML},flatOptions:{url:!
0,context:!
0}},ajaxSetup:function(a,b){return b?tc(tc(a,n.ajaxSettings),b):tc(n.ajaxSettings,a)},ajaxPrefilter:rc(nc),ajaxTransport:rc(oc),ajax:function(a,b){
"object"==typeof a&&(b=a,a=void
0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks(
"once memory"),q=k.statusCode||{},r={},s={},t=
0,
u=
"canceled",v={readyState:
0,getResponseHeader:function(a){var b;if(
2===t){if(!f){f={};while(b=ic.exec(e))f[b[
1].toLowerCase()]=b[
2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return
2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(
2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(
0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||fc)+"").replace(gc,"").replace(lc,ec[
1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=mc.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[
1]===ec[
1]&&h[
2]===ec[
2]&&(h[
3]||("http:"===h[
1]?"
80":"
443"))===(ec[
3]||("http:"===ec[
1]?"
80":"
443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),sc(nc,k,b,v),
2===t)return v;i=k.global,i&&
0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!kc.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(dc.test(d)?"&":"?")+k.data,delete k.data),k.cache===!
1&&(k.url=hc.test(d)?d.replace(hc,"$
1_="+cc++):d+(dc.test(d)?"&":"?")+"
_="+cc++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!
1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[
0]&&k.accepts[k.dataTypes[
0]]?k.accepts[k.dataTypes[
0]]+("*"!==k.dataTypes[
0]?", "+pc+"; q=
0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!
1||
2===t))return v.abort();
u="abort";for(j in{success:
1,error:
1,complete:
1})v[j](k[j]);if(c=sc(oc,k,b,v)){v.readyState=
1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout
>0&&(g=setTimeout(function(){v.abort(
"timeout")},k.timeout));try{t=
1,c.send(r,x)}catch(w){if(!(
2>t))throw w;x(-
1,w)}}else x(-
1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;
2!==t&&(t=
2,g&&clearTimeout(g),c=void
0,e=h||"",v.readyState=a
>0?
4:
0,j=a
>=
200&&
300>a||
304===a,f&&(u=uc(k,v,f)),u=vc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),
204===a||"HEAD"===k.type?
x="nocontent":
304===a?
x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(
x="error",
0>a&&(a=
0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void
0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void
0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void
0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!
1,global:!
1,"throws":!
0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[
0]&&(b=n(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 this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=
0&&a.offsetHeight<=
0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var wc=/%
20/g,xc=/\[\]$/,yc=/\r?\n/g,zc=/^(?:submit|button|image|reset|file)$/i,Ac=/^(?:input|select|textarea|keygen)/i;function Bc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||xc.test(a)?d(a,e):Bc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Bc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void
0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Bc(c,a[c],b,e);return d.join("&").replace(wc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Ac.test(this.nodeName)&&!zc.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(yc,"\r\n")}}):{name:b.name,value:c.replace(yc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Cc=
0,Dc={},Ec={
0:
200,
1223:
204},Fc=n.ajaxSettings.xhr();a.ActiveXObject&&n(a).on("unload",function(){for(var a in Dc)Dc[a]()}),k.cors=!!Fc&&"withCredentials"in Fc,k.ajax=Fc=!!Fc,n.ajaxTransport(function(a){var b;return k.cors||Fc&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Cc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Dc[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Ec[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void
0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Dc[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void
0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void
0===a.cache&&(a.cache=!
1),a.crossDomain&&(a.
type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("
<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error
",c=function(a){b.remove(),c=null,a&&e("error
"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Gc=[],Hc=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback
",jsonpCallback:function(){var a=Gc.pop()||n.expando+"_
"+cc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp
",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Hc.test(b.url)?"url
":"string
"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded
")&&Hc.test(b.data)&&"data
");return h||"jsonp
"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Hc,"$
1"+e):b.jsonp!==!1&&(b.url+=(dc.test(b.url)?"&
":"?
")+b.jsonp+"=
"+e),b.converters["script json
"]=function(){return g||n.error(e+" was not called
"),g[0]},b.dataTypes[0]="json
",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Gc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script
"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string
"!=typeof a)return null;"boolean
"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Ic=n.fn.load;n.fn.load=function(a,b,c){if("string
"!=typeof a&&Ic)return Ic.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object
"==typeof b&&(e="POST
"),g.length>0&&n.ajax({url:a,type:e,dataType:"html
",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Jc=a.document.documentElement;function Kc(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position
"),l=n(a),m={};"static
"===k&&(a.style.position="relative
"),h=l.offset(),f=n.css(a,"top
"),i=n.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),n.isFunction(b)&&(b=b.call(a,c,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)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Kc(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed
"===n.css(c,"position
")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html
")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth
",!0),d.left+=n.css(a[0],"borderLeftWidth
",!0)),{top:b.top-d.top-n.css(c,"marginTop
",!0),left:b.left-d.left-n.css(c,"marginLeft
",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Jc;while(a&&!n.nodeName(a,"html
")&&"static
"===n.css(a,"position
"))a=a.offsetParent;return a||Jc})}}),n.each({scrollLeft:"pageXOffset
",scrollTop:"pageYOffset
"},function(b,c){var d="pageYOffset
"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Kc(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each(["top
","left
"],function(a,b){n.cssHooks[b]=yb(k.pixelPosition,function(a,c){return c?(c=xb(a,b),vb.test(c)?n(a).position()[b]+"px
":c):void 0})}),n.each({Height:"height
",Width:"width
"},function(a,b){n.each({padding:"inner
"+a,content:b,"":"outer
"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean
"!=typeof d),g=c||(d===!0||e===!0?"margin
":"border
");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client
"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll
"+a],e["scroll
"+a],b.body["offset
"+a],e["offset
"+a],e["client
"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function
"==typeof define&&define.amd&&define("jquery
",[],function(){return n});var Lc=a.jQuery,Mc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Mc),b&&a.jQuery===n&&(a.jQuery=Lc),n},typeof b===U&&(a.jQuery=a.$=n),n});
7121 * Bootstrap v3.2.0 (http://getbootstrap.com)
7122 * Copyright 2011-2014 Twitter, Inc.
7123 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
7125 if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void
0!==a.style[c])return{end:b[c]};return!
1}a.fn.emulateTransitionEnd=function(b){var c=!
1,d=this;a(this).one("bsTransitionEnd",function(){c=!
0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void
0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[
data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.
VERSION="
3.2.0",d.prototype.close=function(b){function c(){f.detach().trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",c).emulateTransitionEnd(
150):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),
f="object"==typeof b&
&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!
1};c.
VERSION="
3.2.0",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var
c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),d[e](null==f[b]?this.options[b]:f[b]),setTimeout(a.proxy(function(){"loadingText"==b?(this.isLoading=!
0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!
1,d.removeClass(c).removeAttr(c))},this),
0)},c.prototype.toggle=function(){var a=!
0,b=this.$element.closest('[
data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!
1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),
g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b).on("keydown.bs.carousel",a.proxy(this.keydown,this)),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.
VERSION="
3.2.0",c.DEFAULTS={interval:
5e3,pause:"hover",wrap:!
0},c.prototype.keydown=function(a){switch(a.which){case
37:this.prev();break;case
39:this.next();break;default:return}a.preventDefault()},c.prototype.cycle=function(b){return b||(this.paused=!
1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.to=function(b){var c=this,d=this.getItemIndex(this.$active=this.$element.find(".item.active"));return b
>this.$items.length-
1||
0>b?void
0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b
>d?"next":"prev",a(this.$items[b]))},c.prototype.pause=function(b){return b||(this.paused=!
0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!
0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void
0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void
0:this.slide("prev")},c.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,
g="next"==b?"left":"right",
h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}if(e.hasClass("active"))return this.sliding=!
1;var j=e[
0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:g});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!
0,f&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(e)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:g});return a.support.transition&&this.$element.hasClass("slide")?(e.addClass(b),e[
0].offsetWidth,d.addClass(g),e.addClass(g),d.one("bsTransitionEnd",function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!
1,setTimeout(function(){i.$element.trigger(m)},
0)}).emulateTransitionEnd(
1e3*d.css("transition-duration").slice(
0,-
1))):(d.removeClass("active"),e.addClass("active"),this.sliding=!
1,this.$element.trigger(m)),f&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!
1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}}),a(window).on("load",function(){a('[
data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b);!e&&f.toggle&&"show"==b&&(b=!b),e||d.data("bs.collapse",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};c.
VERSION="
3.2.0",c.DEFAULTS={toggle:!
0},c.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},c.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var c=a.Event("show.bs.collapse");if(this.$element.trigger(c),!c.isDefaultPrevented()){var d=this.$parent&&this.$parent.find("
> .panel
> .in");if(d&&d.length){var e=d.data("bs.collapse");if(e&&e.transitioning)return;b.call(d,"hide"),e||d.data("bs.collapse",null)}var f=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[f](
0),this.transitioning=
1;var g=function(){this.$element.removeClass("collapsing").addClass("collapse in")[f](""),this.transitioning=
0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return g.call(this);var h=a.camelCase(["scroll",f].join("-"));this.$element.one("bsTransitionEnd",a.proxy(g,this)).emulateTransitionEnd(
350)[f](this.$element[
0][h])}}},c.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[
0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=
1;var d=function(){this.transitioning=
0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](
0).one("bsTransitionEnd",a.proxy(d,this)).emulateTransitionEnd(
350):d.call(this)}}},c.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var d=a.fn.collapse;a.fn.collapse=b,a.fn.collapse.Constructor=c,a.fn.collapse.noConflict=function(){return a.fn.collapse=d,this},a(document).on("click.bs.collapse.data-api",'[
data-toggle="collapse"]',function(c){var d,e=a(this),f=e.attr("data-target")||c.preventDefault()||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),g=a(f),h=g.data("bs.collapse"),i=h?"toggle":e.data(),j=e.attr("data-parent"),k=j&&a(j);h&&h.transitioning||(k&&k.find('[
data-toggle="collapse"][
data-parent="'+j+'"]').not(e).addClass("collapsed"),e[g.hasClass("in")?"addClass":"removeClass"]("collapsed")),b.call(g,i)})}(jQuery),+function(a){"use strict";function b(b){b&&
3===b.which||(a(e).remove(),a(f).each(function(){var d=c(a(this)),e={relatedTarget:this};d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown",e)),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown",e))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var
e=".dropdown-backdrop",f='[
data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.
VERSION="
3.2.0",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('
<div class=
"dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!
1}},g.prototype.keydown=function(b){if(/(
38|
40|
27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g||g&&
27==b.keyCode)return
27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var
h=" li:not(.divider):visible a",i=e.find('[
role="menu"]'+h+', [
role="listbox"]'+h);if(i.length){var j=i.index(i.filter(":focus"));
38==b.keyCode&&j
>0&&j--,
40==b.keyCode&&j
<i.length-
1&&j++,~j||(j=
0),i.eq(j).trigger(
"focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on(
"click.bs.dropdown.data-api",b).on(
"click.bs.dropdown.data-api",
".dropdown form",function(a){a.stopPropagation()}).on(
"click.bs.dropdown.data-api",f,g.prototype.toggle).on(
"keydown.bs.dropdown.data-api",f+', [
role=
"menu"], [
role=
"listbox"]',g.prototype.keydown)}(jQuery),+function(a){
"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data(
"bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),
"object"==typeof b&&b);f||e.data(
"bs.modal",f=new c(this,g)),
"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$backdrop=this.isShown=null,this.scrollbarWidth=
0,this.options.remote&&this.$element.find(
".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger(
"loaded.bs.modal")},this))};c.
VERSION=
"3.2.0",c.DEFAULTS={backdrop:!
0,keyboard:!
0,show:!
0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var c=this,d=a.Event(
"show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!
0,this.checkScrollbar(),this.$body.addClass(
"modal-open"),this.setScrollbar(),this.escape(),this.$element.on(
"click.dismiss.bs.modal",'[
data-dismiss=
"modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass(
"fade");c.$element.parent().length||c.$element.appendTo(c.$body),c.$element.show().scrollTop(
0),d&&c.$element[
0].offsetWidth,c.$element.addClass(
"in").attr(
"aria-hidden",!
1),c.enforceFocus();var e=a.Event(
"shown.bs.modal",{relatedTarget:b});d?c.$element.find(
".modal-dialog").one(
"bsTransitionEnd",function(){c.$element.trigger(
"focus").trigger(e)}).emulateTransitionEnd(
300):c.$element.trigger(
"focus").trigger(e)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event(
"hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!
1,this.$body.removeClass(
"modal-open"),this.resetScrollbar(),this.escape(),a(document).off(
"focusin.bs.modal"),this.$element.removeClass(
"in").attr(
"aria-hidden",!
0).off(
"click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass(
"fade")?this.$element.one(
"bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(
300):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off(
"focusin.bs.modal").on(
"focusin.bs.modal",a.proxy(function(a){this.$element[
0]===a.target||this.$element.has(a.target).length||this.$element.trigger(
"focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on(
"keyup.dismiss.bs.modal",a.proxy(function(a){
27==a.which&&this.hide()},this)):this.isShown||this.$element.off(
"keyup.dismiss.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$element.trigger(
"hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var c=this,d=this.$element.hasClass(
"fade")?
"fade":
"";if(this.isShown&&this.options.backdrop){var e=a.support.transition&
&d;if(this.$backdrop=a('
<div class=
"modal-backdrop '+d+'" />').appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[
0].focus.call(this.$element[
0]):this.hide.call(this))},this)),e&&this.$backdrop[
0].offsetWidth,this.$backdrop.addClass("in"),!b)return;e?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(
150):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var f=function(){c.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",f).emulateTransitionEnd(
150):f()}else b&&b()},c.prototype.checkScrollbar=function(){document.body.clientWidth
>=window.innerWidth||(this.scrollbarWidth=this.scrollbarWidth||this.measureScrollbar())},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||
0,
10);this.scrollbarWidth&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.
className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[
0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[
data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),
f="object"==typeof b&
&b;(e||"destroy"!=b)&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};c.
VERSION="
3.2.0",c.DEFAULTS={animation:!
0,placement:"top",selector:!
1,template:'
<div class=
"tooltip" role=
"tooltip"><div class=
"tooltip-arrow"></div><div class=
"tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:
0,html:!
1,container:!
1,viewport:{selector:"body",padding:
0}},c.prototype.init=function(b,c,d){this.enabled=!
0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var
h="hover"==g?"mouseenter":"focusin",
i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.
hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show()},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.
hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var c=a.contains(document.documentElement,this.$element[
0]);if(b.isDefaultPrevented()||!c)return;var d=this,e=this.tip(),f=this.getUID(this.type);this.setContent(),e.attr("id",f),this.$element.attr("aria-describedby",f),this.options.animation&&e.addClass("fade");var
g="function"==typeof this.options.placement?this.options.placement.call(this,e[
0],this.$element[
0]):this.options.placement,h=/\s?auto?\s?/i,i=h.test(g);i&&(g=g.replace(h,"")||"top"),e.detach().css({top:
0,left:
0,display:"block"}).addClass(g).data("bs."+this.type,this),this.options.container?e.appendTo(this.options.container):e.insertAfter(this.$element);var j=this.getPosition(),k=e[
0].offsetWidth,l=e[
0].offsetHeight;if(i){var m=g,n=this.$element.parent(),o=this.getPosition(n);
g="bottom"==g&&j.top+j.height+l-o.scroll
>o.height?"top":"top"==g&&j.top-o.scroll-l
<0?
"bottom":
"right"==g&&j.right+k
>o.width?"left":"left"==g&&j.left-k
<o.left?
"right":g,e.removeClass(m).addClass(g)}var p=this.getCalculatedOffset(g,j,k,l);this.applyPlacement(p,g);var q=function(){d.$element.trigger(
"shown.bs."+d.type),d.hoverState=null};a.support.transition&&this.$tip.hasClass(
"fade")?e.one(
"bsTransitionEnd",q).emulateTransitionEnd(
150):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[
0].offsetWidth,f=d[
0].offsetHeight,g=parseInt(d.css(
"margin-top"),
10),h=parseInt(d.css(
"margin-left"),
10);isNaN(g)&&(g=
0),isNaN(h)&&(h=
0),b.top=b.top+g,b.left=b.left+h,a.offset.setOffset(d[
0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),
0),d.addClass(
"in");var i=d[
0].offsetWidth,j=d[
0].offsetHeight;
"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=k.left?
2*k.left-e+i:
2*k.top-f+j,m=k.left?
"left":
"top",n=k.left?
"offsetWidth":
"offsetHeight";d.offset(b),this.replaceArrow(l,d[
0][n],m)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?
50*(
1-a/b)+
"%":
"")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(
".tooltip-inner")[this.options.html?
"html":
"text"](b),a.removeClass(
"fade in top bottom left right")},c.prototype.hide=function(){function b(){
"in"!=c.hoverState&&d.detach(),c.$element.trigger(
"hidden.bs."+c.type)}var c=this,d=this.tip(),e=a.Event(
"hide.bs."+this.type);return this.$element.removeAttr(
"aria-describedby"),this.$element.trigger(e),e.isDefaultPrevented()?void
0:(d.removeClass(
"in"),a.support.transition&&this.$tip.hasClass(
"fade")?d.one(
"bsTransitionEnd",b).emulateTransitionEnd(
150):b(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr(
"title")||
"string"!=typeof a.attr(
"data-original-title"))&&a.attr(
"data-original-title",a.attr(
"title")||
"").attr(
"title",
"")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[
0],
d=
"BODY"==c.tagName;return a.extend({},
"function"==typeof c.getBoundingClientRect?c.getBoundingClientRect():null,{scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop(),width:d?a(window).width():b.outerWidth(),height:d?a(window).height():b.outerHeight()},d?{top:
0,left:
0}:b.offset())},c.prototype.getCalculatedOffset=function(a,b,c,d){return
"bottom"==a?{top:b.top+b.height,left:b.left+b.width/
2-c/
2}:
"top"==a?{top:b.top-d,left:b.left+b.width/
2-c/
2}:
"left"==a?{top:b.top+b.height/
2-d/
2,left:b.left-c}:{top:b.top+b.height/
2-d/
2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:
0,left:
0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||
0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h
<g.top?e.top=g.top-h:i
>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j
<g.left?e.left=g.left-j:k
>g.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[
0]):c.title)},c.prototype.getUID=function(a){do a+=~~(
1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.validate=function(){this.$element[
0].parentNode||(this.hide(),this.$element=null,this.options=null)},c.prototype.enable=function(){this.enabled=!
0},c.prototype.disable=function(){this.enabled=!
1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){clearTimeout(this.timeout),this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),
f="object"==typeof b&
&b;(e||"destroy"!=b)&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.
VERSION="
3.2.0",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'
<div class=
"popover" role=
"tooltip"><div class=
"arrow"></div><h3 class=
"popover-title"></h3><div class=
"popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").empty()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[
0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},c.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){var e=a.proxy(this.process,this);this.$body=a("body"),this.$scrollElement=a(a(c).is("body")?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li
> a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=
0,this.$scrollElement.on("scroll.bs.scrollspy",e),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),
f="object"==typeof c&
&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.
VERSION="
3.2.0",b.DEFAULTS={offset:
10},b.prototype.getScrollHeight=function(){return this.$scrollElement[
0].scrollHeight||Math.max(this.$body[
0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var
b="offset",c=
0;a.isWindow(this.$scrollElement[
0])||(
b="position",c=this.$scrollElement.scrollTop()),this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight();var d=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+c,e]]||null}).sort(function(a,b){return a[
0]-b[
0]}).each(function(){d.offsets.push(this[
0]),d.targets.push(this[
1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b
>=d)return g!=(a=f[f.length-
1])&&this.activate(a);if(g&&b<=e[
0])return g!=(a=f[
0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b
>=e[a]&&(!e[a+
1]||b<=e[a+
1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parentsUntil(this.options.target,".active").removeClass("active");var c=this.selector+'[
data-target="'+b+'"],'+this.selector+'[
href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[
data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.
VERSION="
3.2.0",c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[
0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.closest("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},c.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("
> .dropdown-menu
> .active").removeClass("active"),b.addClass("active"),g?(b[
0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("
> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one("bsTransitionEnd",e).emulateTransitionEnd(
150):e(),f.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this},a(document).on("click.bs.tab.data-api",'[
data-toggle="tab"], [
data-toggle="pill"]',function(c){c.preventDefault(),b.call(a(this),"show")})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),
f="object"==typeof b&
&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};c.
VERSION="
3.2.0",c.
RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:
0,target:window},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),
1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=a(document).height(),d=this.$target.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top(this.$element)),"function"==typeof h&&(h=f.bottom(this.$element));var i=null!=this.unpin&&d+this.unpin<=e.top?!
1:null!=h&&e.top+this.$element.height()
>=b-h?"bottom":null!=g&&g
>=d?"top":!
1;if(this.affixed!==i){null!=this.unpin&&this.$element.css("top","");var
j="affix"+(i?"-"+i:""),k=a.Event(j+".bs.affix");this.$element.trigger(k),k.isDefaultPrevented()||(this.affixed=i,this.
unpin="bottom"==i?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(j).trigger(a.Event(j.replace("affix","affixed"))),"bottom"==i&&this.$element.offset({top:b-this.$element.height()-h}))}}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[
data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},d.offsetBottom&&(d.offset.bottom=d.offsetBottom),d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
</script>
7126 <script>(function() {
7130 * Extend an Object with another Object's properties.
7132 * The source objects are specified as additional arguments.
7134 * @param dst Object the object to extend.
7136 * @return Object the final object.
7138 var _extend = function(dst) {
7139 var sources = Array.prototype.slice.call(arguments,
1);
7140 for (var i=
0; i
<sources.length; ++i) {
7141 var src = sources[i];
7142 for (var p in src) {
7143 if (src.hasOwnProperty(p)) dst[p] = src[p];
7151 * Defer execution of given function.
7152 * @param {Function} func
7154 var _defer = function(func) {
7155 if (typeof setImmediate === 'function') {
7156 return setImmediate(func);
7158 return setTimeout(func,
0);
7163 * Based on the algorithm at http://en.wikipedia.org/wiki/Levenshtein_distance.
7167 * Calculate levenshtein distance of the two strings.
7169 * @param str1 String the first string.
7170 * @param str2 String the second string.
7171 * @return Integer the levenshtein distance (
0 and above).
7173 get: function(str1, str2) {
7175 if (str1 === str2) return
0;
7176 if (str1.length ===
0) return str2.length;
7177 if (str2.length ===
0) return str1.length;
7180 var prevRow = new Array(str2.length +
1),
7181 curCol, nextCol, i, j, tmp;
7183 // initialise previous row
7184 for (i=
0; i
<prevRow.length; ++i) {
7188 // calculate current row distance from previous row
7189 for (i=
0; i
<str1.length; ++i) {
7192 for (j=
0; j
<str2.length; ++j) {
7196 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ?
0 :
1 );
7199 if (nextCol
> tmp) {
7203 tmp = prevRow[j +
1] +
1;
7204 if (nextCol
> tmp) {
7208 // copy current col value into previous (in preparation for next iteration)
7209 prevRow[j] = curCol;
7212 // copy last col value into previous (in preparation for next iteration)
7213 prevRow[j] = nextCol;
7220 * Asynchronously calculate levenshtein distance of the two strings.
7222 * @param str1 String the first string.
7223 * @param str2 String the second string.
7224 * @param cb Function callback function with signature: function(Error err, int distance)
7225 * @param [options] Object additional options.
7226 * @param [options.progress] Function progress callback with signature: function(percentComplete)
7228 getAsync: function(str1, str2, cb, options) {
7229 options = _extend({}, {
7234 if (str1 === str2) return cb(null,
0);
7235 if (str1.length ===
0) return cb(null, str2.length);
7236 if (str2.length ===
0) return cb(null, str1.length);
7239 var prevRow = new Array(str2.length +
1),
7242 startTime, currentTime;
7244 // initialise previous row
7245 for (i=
0; i
<prevRow.length; ++i) {
7253 var __calculate = function() {
7255 startTime = new Date().valueOf();
7256 currentTime = startTime;
7258 // keep going until one second has elapsed
7259 while (currentTime - startTime <
1000) {
7260 // reached end of current row?
7261 if (str2.length <= (++j)) {
7262 // copy current into previous (in preparation for next iteration)
7263 prevRow[j] = nextCol;
7265 // if already done all chars
7266 if (str1.length <= (++i)) {
7267 return cb(null, nextCol);
7269 // else if we have more left to do
7280 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ?
0 :
1 );
7283 if (nextCol
> tmp) {
7287 tmp = prevRow[j +
1] +
1;
7288 if (nextCol
> tmp) {
7292 // copy current into previous (in preparation for next iteration)
7293 prevRow[j] = curCol;
7296 currentTime = new Date().valueOf();
7299 // send a progress update?
7300 if (null !== options.progress) {
7302 options.progress.call(null, (i *
100.0/ str1.length));
7304 return cb('Progress callback: ' + err.toString());
7309 _defer(__calculate);
7318 if (typeof define !== "undefined" && define !== null && define.amd) {
7324 else if (typeof module !== "undefined" && module !== null && typeof exports !== "undefined" && module.exports === exports) {
7325 module.exports = Levenshtein;
7328 else if (typeof self !== "undefined" && typeof self.postMessage === 'function' && typeof self.importScripts === 'function') {
7329 self.Levenshtein = Levenshtein;
7331 // browser main thread
7332 else if (typeof window !== "undefined" && window !== null) {
7333 window.Levenshtein = Levenshtein;
7338 <script>(function(r){r.fn.qrcode=function(h){var s;function u(a){this.mode=s;this.data=a}function o(a,c){this.typeNumber=a;this.errorCorrectLevel=c;this.modules=null;this.moduleCount=
0;this.dataCache=null;this.dataList=[]}function q(a,c){if(void
0==a.length)throw Error(a.length+"/"+c);for(var d=
0;d
<a.length&&
0==a[d];)d++;this.num=Array(a.length-d+c);for(var b=
0;b
<a.length-d;b++)this.num[b]=a[b+d]}function p(a,c){this.totalCount=a;this.dataCount=c}function t(){this.buffer=[];this.length=
0}u.prototype={getLength:function(){return this.data.length},
7339 write:function(a){for(var c=
0;c
<this.data.length;c++)a.put(this.data.charCodeAt(c),
8)}};o.prototype={addData:function(a){this.dataList.push(new u(a));this.dataCache=null},isDark:function(a,c){if(
0>a||this.moduleCount<=a||
0>c||this.moduleCount<=c)throw Error(a+","+c);return this.modules[a][c]},getModuleCount:function(){return this.moduleCount},make:function(){if(
1>this.typeNumber){for(var a=
1,a=
1;
40>a;a++){for(var c=p.getRSBlocks(a,this.errorCorrectLevel),d=new t,b=
0,e=
0;e
<c.length;e++)b+=c[e].dataCount;
7340 for(e=
0;e
<this.dataList.length;e++)c=this.dataList[e],d.put(c.mode,
4),d.put(c.getLength(),j.getLengthInBits(c.mode,a)),c.write(d);if(d.getLengthInBits()<=
8*b)break}this.typeNumber=a}this.makeImpl(!
1,this.getBestMaskPattern())},makeImpl:function(a,c){this.moduleCount=
4*this.typeNumber+
17;this.modules=Array(this.moduleCount);for(var d=
0;d
<this.moduleCount;d++){this.modules[d]=Array(this.moduleCount);for(var b=
0;b
<this.moduleCount;b++)this.modules[d][b]=null}this.setupPositionProbePattern(
0,
0);this.setupPositionProbePattern(this.moduleCount-
7341 7,
0);this.setupPositionProbePattern(
0,this.moduleCount-
7);this.setupPositionAdjustPattern();this.setupTimingPattern();this.setupTypeInfo(a,c);
7<=this.typeNumber&&this.setupTypeNumber(a);null==this.dataCache&&(this.dataCache=o.createData(this.typeNumber,this.errorCorrectLevel,this.dataList));this.mapData(this.dataCache,c)},setupPositionProbePattern:function(a,c){for(var d=-
1;
7>=d;d++)if(!(-
1>=a+d||this.moduleCount<=a+d))for(var b=-
1;
7>=b;b++)-
1>=c+b||this.moduleCount<=c+b||(this.modules[a+d][c+b]=
7342 0<=d&&
6>=d&&(
0==b||
6==b)||
0<=b&&
6>=b&&(
0==d||
6==d)||
2<=d&&
4>=d&&
2<=b&&
4>=b?!
0:!
1)},getBestMaskPattern:function(){for(var a=
0,c=
0,d=
0;
8>d;d++){this.makeImpl(!
0,d);var b=j.getLostPoint(this);if(
0==d||a
>b)a=b,c=d}return c},createMovieClip:function(a,c,d){a=a.createEmptyMovieClip(c,d);this.make();for(c=
0;c
<this.modules.length;c++)for(var d=
1*c,b=
0;b
<this.modules[c].length;b++){var e=
1*b;this.modules[c][b]&&(a.beginFill(
0,
100),a.moveTo(e,d),a.lineTo(e+
1,d),a.lineTo(e+
1,d+
1),a.lineTo(e,d+
1),a.endFill())}return a},
7343 setupTimingPattern:function(){for(var a=
8;a
<this.moduleCount-
8;a++)null==this.modules[a][
6]&&(this.modules[a][
6]=
0==a%
2);for(a=
8;a
<this.moduleCount-
8;a++)null==this.modules[
6][a]&&(this.modules[
6][a]=
0==a%
2)},setupPositionAdjustPattern:function(){for(var a=j.getPatternPosition(this.typeNumber),c=
0;c
<a.length;c++)for(var d=
0;d
<a.length;d++){var b=a[c],e=a[d];if(null==this.modules[b][e])for(var f=-
2;
2>=f;f++)for(var i=-
2;
2>=i;i++)this.modules[b+f][e+i]=-
2==f||
2==f||-
2==i||
2==i||
0==f&&
0==i?!
0:!
1}},setupTypeNumber:function(a){for(var c=
7344 j.getBCHTypeNumber(this.typeNumber),d=
0;
18>d;d++){var b=!a&&
1==(c
>>d&
1);this.modules[Math.floor(d/
3)][d%
3+this.moduleCount-
8-
3]=b}for(d=
0;
18>d;d++)b=!a&&
1==(c
>>d&
1),this.modules[d%
3+this.moduleCount-
8-
3][Math.floor(d/
3)]=b},setupTypeInfo:function(a,c){for(var d=j.getBCHTypeInfo(this.errorCorrectLevel<
<3|c),b=
0;
15>b;b++){var e=!a&&
1==(d
>>b&
1);
6>b?this.modules[b][
8]=e:
8>b?this.modules[b+
1][
8]=e:this.modules[this.moduleCount-
15+b][
8]=e}for(b=
0;
15>b;b++)e=!a&&
1==(d
>>b&
1),
8>b?this.modules[
8][this.moduleCount-
7345 b-
1]=e:
9>b?this.modules[
8][
15-b-
1+
1]=e:this.modules[
8][
15-b-
1]=e;this.modules[this.moduleCount-
8][
8]=!a},mapData:function(a,c){for(var d=-
1,b=this.moduleCount-
1,e=
7,f=
0,i=this.moduleCount-
1;
0<i;i-=
2)for(
6==i&&i--;;){for(var g=
0;
2>g;g++)if(null==this.modules[b][i-g]){var n=!
1;f
<a.length&&(n=
1==(a[f]
>>>e&
1));j.getMask(c,b,i-g)&&(n=!n);this.modules[b][i-g]=n;e--; -
1==e&&(f++,e=
7)}b+=d;if(
0>b||this.moduleCount<=b){b-=d;d=-d;break}}}};o.PAD0=
236;o.PAD1=
17;o.createData=function(a,c,d){for(var c=p.getRSBlocks(a,
7346 c),b=new t,e=
0;e
<d.length;e++){var f=d[e];b.put(f.mode,
4);b.put(f.getLength(),j.getLengthInBits(f.mode,a));f.write(b)}for(e=a=
0;e
<c.length;e++)a+=c[e].dataCount;if(b.getLengthInBits()
>8*a)throw Error(
"code length overflow. ("+b.getLengthInBits()+
">"+
8*a+
")");for(b.getLengthInBits()+
4<=
8*a&&b.put(
0,
4);
0!=b.getLengthInBits()%
8;)b.putBit(!
1);for(;!(b.getLengthInBits()
>=
8*a);){b.put(o.PAD0,
8);if(b.getLengthInBits()
>=
8*a)break;b.put(o.PAD1,
8)}return o.createBytes(b,c)};o.createBytes=function(a,c){for(var d=
7347 0,b=
0,e=
0,f=Array(c.length),i=Array(c.length),g=
0;g
<c.length;g++){var n=c[g].dataCount,h=c[g].totalCount-n,b=Math.max(b,n),e=Math.max(e,h);f[g]=Array(n);for(var k=
0;k
<f[g].length;k++)f[g][k]=
255&a.buffer[k+d];d+=n;k=j.getErrorCorrectPolynomial(h);n=(new q(f[g],k.getLength()-
1)).mod(k);i[g]=Array(k.getLength()-
1);for(k=
0;k
<i[g].length;k++)h=k+n.getLength()-i[g].length,i[g][k]=
0<=h?n.get(h):
0}for(k=g=
0;k
<c.length;k++)g+=c[k].totalCount;d=Array(g);for(k=n=
0;k
<b;k++)for(g=
0;g
<c.length;g++)k
<f[g].length&&
7348 (d[n++]=f[g][k]);for(k=
0;k
<e;k++)for(g=
0;g
<c.length;g++)k
<i[g].length&&(d[n++]=i[g][k]);return d};s=
4;for(var j={PATTERN_POSITION_TABLE:[[],[
6,
18],[
6,
22],[
6,
26],[
6,
30],[
6,
34],[
6,
22,
38],[
6,
24,
42],[
6,
26,
46],[
6,
28,
50],[
6,
30,
54],[
6,
32,
58],[
6,
34,
62],[
6,
26,
46,
66],[
6,
26,
48,
70],[
6,
26,
50,
74],[
6,
30,
54,
78],[
6,
30,
56,
82],[
6,
30,
58,
86],[
6,
34,
62,
90],[
6,
28,
50,
72,
94],[
6,
26,
50,
74,
98],[
6,
30,
54,
78,
102],[
6,
28,
54,
80,
106],[
6,
32,
58,
84,
110],[
6,
30,
58,
86,
114],[
6,
34,
62,
90,
118],[
6,
26,
50,
74,
98,
122],[
6,
30,
54,
78,
102,
126],[
6,
26,
52,
7349 78,
104,
130],[
6,
30,
56,
82,
108,
134],[
6,
34,
60,
86,
112,
138],[
6,
30,
58,
86,
114,
142],[
6,
34,
62,
90,
118,
146],[
6,
30,
54,
78,
102,
126,
150],[
6,
24,
50,
76,
102,
128,
154],[
6,
28,
54,
80,
106,
132,
158],[
6,
32,
58,
84,
110,
136,
162],[
6,
26,
54,
82,
110,
138,
166],[
6,
30,
58,
86,
114,
142,
170]],G15:
1335,G18:
7973,G15_MASK:
21522,getBCHTypeInfo:function(a){for(var c=a<
<10;
0<=j.getBCHDigit(c)-j.getBCHDigit(j.G15);)c^=j.G15<
<j.getBCHDigit(c)-j.getBCHDigit(j.G15);return(a<
<10|c)^j.G15_MASK},getBCHTypeNumber:function(a){for(var c=a<
<12;
0<=j.getBCHDigit(c)-
7350 j.getBCHDigit(j.G18);)c^=j.G18<
<j.getBCHDigit(c)-j.getBCHDigit(j.G18);return a<
<12|c},getBCHDigit:function(a){for(var c=
0;
0!=a;)c++,a
>>>=
1;return c},getPatternPosition:function(a){return j.PATTERN_POSITION_TABLE[a-
1]},getMask:function(a,c,d){switch(a){case
0:return
0==(c+d)%
2;case
1:return
0==c%
2;case
2:return
0==d%
3;case
3:return
0==(c+d)%
3;case
4:return
0==(Math.floor(c/
2)+Math.floor(d/
3))%
2;case
5:return
0==c*d%
2+c*d%
3;case
6:return
0==(c*d%
2+c*d%
3)%
2;case
7:return
0==(c*d%
3+(c+d)%
2)%
2;default:throw Error("bad maskPattern:"+
7351 a);}},getErrorCorrectPolynomial:function(a){for(var c=new q([
1],
0),d=
0;d
<a;d++)c=c.multiply(new q([
1,l.gexp(d)],
0));return c},getLengthInBits:function(a,c){if(
1<=c&&
10>c)switch(a){case
1:return
10;case
2:return
9;case s:return
8;case
8:return
8;default:throw Error("mode:"+a);}else if(
27>c)switch(a){case
1:return
12;case
2:return
11;case s:return
16;case
8:return
10;default:throw Error("mode:"+a);}else if(
41>c)switch(a){case
1:return
14;case
2:return
13;case s:return
16;case
8:return
12;default:throw Error("mode:"+
7352 a);}else throw Error("type:"+c);},getLostPoint:function(a){for(var c=a.getModuleCount(),d=
0,b=
0;b
<c;b++)for(var e=
0;e
<c;e++){for(var f=
0,i=a.isDark(b,e),g=-
1;
1>=g;g++)if(!(
0>b+g||c<=b+g))for(var h=-
1;
1>=h;h++)
0>e+h||c<=e+h||
0==g&&
0==h||i==a.isDark(b+g,e+h)&&f++;
5<f&&(d+=
3+f-
5)}for(b=
0;b
<c-1;b++)for(e=
0;e
<c-1;e++)if(f=
0,a.isDark(b,e)&&f++,a.isDark(b+
1,e)&&f++,a.isDark(b,e+
1)&&f++,a.isDark(b+
1,e+
1)&&f++,
0==f||
4==f)d+=
3;for(b=
0;b
<c;b++)for(e=
0;e
<c-6;e++)a.isDark(b,e)&&!a.isDark(b,e+
1)&&a.isDark(b,e+
7353 2)&&a.isDark(b,e+
3)&&a.isDark(b,e+
4)&&!a.isDark(b,e+
5)&&a.isDark(b,e+
6)&&(d+=
40);for(e=
0;e
<c;e++)for(b=
0;b
<c-6;b++)a.isDark(b,e)&&!a.isDark(b+
1,e)&&a.isDark(b+
2,e)&&a.isDark(b+
3,e)&&a.isDark(b+
4,e)&&!a.isDark(b+
5,e)&&a.isDark(b+
6,e)&&(d+=
40);for(e=f=
0;e
<c;e++)for(b=
0;b
<c;b++)a.isDark(b,e)&&f++;a=Math.abs(
100*f/c/c-
50)/
5;return d+
10*a}},l={glog:function(a){if(
1>a)throw Error("glog("+a+")");return l.LOG_TABLE[a]},gexp:function(a){for(;
0>a;)a+=
255;for(;
256<=a;)a-=
255;return l.EXP_TABLE[a]},EXP_TABLE:Array(
256),
7354 LOG_TABLE:Array(
256)},m=
0;
8>m;m++)l.EXP_TABLE[m]=
1<
<m;for(m=
8;
256>m;m++)l.EXP_TABLE[m]=l.EXP_TABLE[m-
4]^l.EXP_TABLE[m-
5]^l.EXP_TABLE[m-
6]^l.EXP_TABLE[m-
8];for(m=
0;
255>m;m++)l.LOG_TABLE[l.EXP_TABLE[m]]=m;q.prototype={get:function(a){return this.num[a]},getLength:function(){return this.num.length},multiply:function(a){for(var c=Array(this.getLength()+a.getLength()-
1),d=
0;d
<this.getLength();d++)for(var b=
0;b
<a.getLength();b++)c[d+b]^=l.gexp(l.glog(this.get(d))+l.glog(a.get(b)));return new q(c,
0)},mod:function(a){if(
0>
7355 this.getLength()-a.getLength())return this;for(var c=l.glog(this.get(
0))-l.glog(a.get(
0)),d=Array(this.getLength()),b=
0;b
<this.getLength();b++)d[b]=this.get(b);for(b=
0;b
<a.getLength();b++)d[b]^=l.gexp(l.glog(a.get(b))+c);return(new q(d,
0)).mod(a)}};p.RS_BLOCK_TABLE=[[
1,
26,
19],[
1,
26,
16],[
1,
26,
13],[
1,
26,
9],[
1,
44,
34],[
1,
44,
28],[
1,
44,
22],[
1,
44,
16],[
1,
70,
55],[
1,
70,
44],[
2,
35,
17],[
2,
35,
13],[
1,
100,
80],[
2,
50,
32],[
2,
50,
24],[
4,
25,
9],[
1,
134,
108],[
2,
67,
43],[
2,
33,
15,
2,
34,
16],[
2,
33,
11,
2,
34,
12],[
2,
86,
68],[
4,
43,
27],
7356 [
4,
43,
19],[
4,
43,
15],[
2,
98,
78],[
4,
49,
31],[
2,
32,
14,
4,
33,
15],[
4,
39,
13,
1,
40,
14],[
2,
121,
97],[
2,
60,
38,
2,
61,
39],[
4,
40,
18,
2,
41,
19],[
4,
40,
14,
2,
41,
15],[
2,
146,
116],[
3,
58,
36,
2,
59,
37],[
4,
36,
16,
4,
37,
17],[
4,
36,
12,
4,
37,
13],[
2,
86,
68,
2,
87,
69],[
4,
69,
43,
1,
70,
44],[
6,
43,
19,
2,
44,
20],[
6,
43,
15,
2,
44,
16],[
4,
101,
81],[
1,
80,
50,
4,
81,
51],[
4,
50,
22,
4,
51,
23],[
3,
36,
12,
8,
37,
13],[
2,
116,
92,
2,
117,
93],[
6,
58,
36,
2,
59,
37],[
4,
46,
20,
6,
47,
21],[
7,
42,
14,
4,
43,
15],[
4,
133,
107],[
8,
59,
37,
1,
60,
38],[
8,
44,
20,
4,
45,
21],[
12,
33,
11,
4,
34,
12],[
3,
145,
115,
1,
146,
7357 116],[
4,
64,
40,
5,
65,
41],[
11,
36,
16,
5,
37,
17],[
11,
36,
12,
5,
37,
13],[
5,
109,
87,
1,
110,
88],[
5,
65,
41,
5,
66,
42],[
5,
54,
24,
7,
55,
25],[
11,
36,
12],[
5,
122,
98,
1,
123,
99],[
7,
73,
45,
3,
74,
46],[
15,
43,
19,
2,
44,
20],[
3,
45,
15,
13,
46,
16],[
1,
135,
107,
5,
136,
108],[
10,
74,
46,
1,
75,
47],[
1,
50,
22,
15,
51,
23],[
2,
42,
14,
17,
43,
15],[
5,
150,
120,
1,
151,
121],[
9,
69,
43,
4,
70,
44],[
17,
50,
22,
1,
51,
23],[
2,
42,
14,
19,
43,
15],[
3,
141,
113,
4,
142,
114],[
3,
70,
44,
11,
71,
45],[
17,
47,
21,
4,
48,
22],[
9,
39,
13,
16,
40,
14],[
3,
135,
107,
5,
136,
108],[
3,
67,
41,
13,
68,
42],[
15,
54,
24,
5,
55,
25],[
15,
7358 43,
15,
10,
44,
16],[
4,
144,
116,
4,
145,
117],[
17,
68,
42],[
17,
50,
22,
6,
51,
23],[
19,
46,
16,
6,
47,
17],[
2,
139,
111,
7,
140,
112],[
17,
74,
46],[
7,
54,
24,
16,
55,
25],[
34,
37,
13],[
4,
151,
121,
5,
152,
122],[
4,
75,
47,
14,
76,
48],[
11,
54,
24,
14,
55,
25],[
16,
45,
15,
14,
46,
16],[
6,
147,
117,
4,
148,
118],[
6,
73,
45,
14,
74,
46],[
11,
54,
24,
16,
55,
25],[
30,
46,
16,
2,
47,
17],[
8,
132,
106,
4,
133,
107],[
8,
75,
47,
13,
76,
48],[
7,
54,
24,
22,
55,
25],[
22,
45,
15,
13,
46,
16],[
10,
142,
114,
2,
143,
115],[
19,
74,
46,
4,
75,
47],[
28,
50,
22,
6,
51,
23],[
33,
46,
16,
4,
47,
17],[
8,
152,
122,
4,
153,
123],[
22,
73,
45,
7359 3,
74,
46],[
8,
53,
23,
26,
54,
24],[
12,
45,
15,
28,
46,
16],[
3,
147,
117,
10,
148,
118],[
3,
73,
45,
23,
74,
46],[
4,
54,
24,
31,
55,
25],[
11,
45,
15,
31,
46,
16],[
7,
146,
116,
7,
147,
117],[
21,
73,
45,
7,
74,
46],[
1,
53,
23,
37,
54,
24],[
19,
45,
15,
26,
46,
16],[
5,
145,
115,
10,
146,
116],[
19,
75,
47,
10,
76,
48],[
15,
54,
24,
25,
55,
25],[
23,
45,
15,
25,
46,
16],[
13,
145,
115,
3,
146,
116],[
2,
74,
46,
29,
75,
47],[
42,
54,
24,
1,
55,
25],[
23,
45,
15,
28,
46,
16],[
17,
145,
115],[
10,
74,
46,
23,
75,
47],[
10,
54,
24,
35,
55,
25],[
19,
45,
15,
35,
46,
16],[
17,
145,
115,
1,
146,
116],[
14,
74,
46,
21,
75,
47],[
29,
54,
24,
19,
7360 55,
25],[
11,
45,
15,
46,
46,
16],[
13,
145,
115,
6,
146,
116],[
14,
74,
46,
23,
75,
47],[
44,
54,
24,
7,
55,
25],[
59,
46,
16,
1,
47,
17],[
12,
151,
121,
7,
152,
122],[
12,
75,
47,
26,
76,
48],[
39,
54,
24,
14,
55,
25],[
22,
45,
15,
41,
46,
16],[
6,
151,
121,
14,
152,
122],[
6,
75,
47,
34,
76,
48],[
46,
54,
24,
10,
55,
25],[
2,
45,
15,
64,
46,
16],[
17,
152,
122,
4,
153,
123],[
29,
74,
46,
14,
75,
47],[
49,
54,
24,
10,
55,
25],[
24,
45,
15,
46,
46,
16],[
4,
152,
122,
18,
153,
123],[
13,
74,
46,
32,
75,
47],[
48,
54,
24,
14,
55,
25],[
42,
45,
15,
32,
46,
16],[
20,
147,
117,
4,
148,
118],[
40,
75,
47,
7,
76,
48],[
43,
54,
24,
22,
55,
25],[
10,
7361 45,
15,
67,
46,
16],[
19,
148,
118,
6,
149,
119],[
18,
75,
47,
31,
76,
48],[
34,
54,
24,
34,
55,
25],[
20,
45,
15,
61,
46,
16]];p.getRSBlocks=function(a,c){var d=p.getRsBlockTable(a,c);if(void
0==d)throw Error(
"bad rs block @ typeNumber:"+a+
"/errorCorrectLevel:"+c);for(var b=d.length/
3,e=[],f=
0;f
<b;f++)for(var h=d[
3*f+
0],g=d[
3*f+
1],j=d[
3*f+
2],l=
0;l
<h;l++)e.push(new p(g,j));return e};p.getRsBlockTable=function(a,c){switch(c){case
1:return p.RS_BLOCK_TABLE[
4*(a-
1)+
0];case
0:return p.RS_BLOCK_TABLE[
4*(a-
1)+
1];case
3:return p.RS_BLOCK_TABLE[
4*
7362 (a-
1)+
2];case
2:return p.RS_BLOCK_TABLE[
4*(a-
1)+
3]}};t.prototype={get:function(a){return
1==(this.buffer[Math.floor(a/
8)]
>>>7-a%
8&
1)},put:function(a,c){for(var d=
0;d
<c;d++)this.putBit(
1==(a
>>>c-d-
1&
1))},getLengthInBits:function(){return this.length},putBit:function(a){var c=Math.floor(this.length/
8);this.buffer.length<=c&&this.buffer.push(
0);a&&(this.buffer[c]|=
128>>>this.length%
8);this.length++}};"string"===typeof h&&(h={text:h});h=r.extend({},{render:"canvas",width:
256,height:
256,typeNumber:-
1,
7363 correctLevel:
3,background:"#ffffff",foreground:"#
000000"},h);return this.each(function(){var a;if("canvas"==h.render){a=new o(h.typeNumber,h.correctLevel);a.addData(h.text);a.make();var c=document.createElement("canvas");c.width=h.width;c.height=h.height;for(var d=c.getContext("
2d"),b=h.width/a.getModuleCount(),e=h.height/a.getModuleCount(),f=
0;f
<a.getModuleCount();f++)for(var i=
0;i
<a.getModuleCount();i++){d.fillStyle=a.isDark(f,i)?h.foreground:h.background;var g=Math.ceil((i+
1)*b)-Math.floor(i*b),
7364 j=Math.ceil((f+
1)*b)-Math.floor(f*b);d.fillRect(Math.round(i*b),Math.round(f*e),g,j)}}else{a=new o(h.typeNumber,h.correctLevel);a.addData(h.text);a.make();c=r(
"<table></table>").css(
"width",h.width+
"px").css(
"height",h.height+
"px").css(
"border",
"0px").css(
"border-collapse",
"collapse").css(
"background-color",h.background);d=h.width/a.getModuleCount();b=h.height/a.getModuleCount();for(e=
0;e
<a.getModuleCount();e++){f=r(
"<tr></tr>").css(
"height",b+
"px").appendTo(c);for(i=
0;i
<a.getModuleCount();i++)r(
"<td></td>").css(
"width",
7365 d+
"px").css(
"background-color",a.isDark(e,i)?h.foreground:h.background).appendTo(f)}}a=c;$(a).appendTo(this)})}})($);
7367 <script>(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.bitcoinjs = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&
&require;if(!u&&a)return a(o,!
0);if(i)return i(o,!
0);var f=new Error("Cannot find module '"+o+"'");throw f.
code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][
0].call(l.exports,function(e){var n=t[o][
1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&
&require;for(var o=
0;o
<r.length;o++)s(r[o]);return s})({
1:[function(require,module,exports){
7371 // compare and isBuffer taken from https://github.com/feross/buffer/blob/
680e9e5e488f22aac27599a57dc844a6315928dd/index.js
7375 * The buffer module from node.js, for the browser.
7377 * @author Feross Aboukhadijeh
<feross@feross.org
> <http://feross.org
>
7380 function compare(a, b) {
7388 for (var i =
0, len = Math.min(x, y); i < len; ++i) {
7389 if (a[i] !== b[i]) {
7404 function isBuffer(b) {
7405 if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {
7406 return global.Buffer.isBuffer(b);
7408 return !!(b != null && b._isBuffer);
7411 // based on node assert, original notice:
7413 // http://wiki.commonjs.org/wiki/Unit_Testing/
1.0
7415 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
7417 // Originally from narwhal.js (http://narwhaljs.org)
7418 // Copyright (c)
2009 Thomas Robinson
<280north.com
>
7420 // Permission is hereby granted, free of charge, to any person obtaining a copy
7421 // of this software and associated documentation files (the 'Software'), to
7422 // deal in the Software without restriction, including without limitation the
7423 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7424 // sell copies of the Software, and to permit persons to whom the Software is
7425 // furnished to do so, subject to the following conditions:
7427 // The above copyright notice and this permission notice shall be included in
7428 // all copies or substantial portions of the Software.
7430 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
7431 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
7432 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
7433 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
7434 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
7435 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
7437 var util = require('util/');
7438 var hasOwn = Object.prototype.hasOwnProperty;
7439 var pSlice = Array.prototype.slice;
7440 var functionsHaveNames = (function () {
7441 return function foo() {}.name === 'foo';
7443 function pToString (obj) {
7444 return Object.prototype.toString.call(obj);
7446 function isView(arrbuf) {
7447 if (isBuffer(arrbuf)) {
7450 if (typeof global.ArrayBuffer !== 'function') {
7453 if (typeof ArrayBuffer.isView === 'function') {
7454 return ArrayBuffer.isView(arrbuf);
7459 if (arrbuf instanceof DataView) {
7462 if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {
7467 //
1. The assert module provides functions that throw
7468 // AssertionError's when particular conditions are not met. The
7469 // assert module must conform to the following interface.
7471 var assert = module.exports = ok;
7473 //
2. The AssertionError is defined in assert.
7474 // new assert.AssertionError({ message: message,
7476 // expected: expected })
7478 var regex = /\s*function\s+([^\(\s]*)\s*/;
7479 // based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js
7480 function getName(func) {
7481 if (!util.isFunction(func)) {
7484 if (functionsHaveNames) {
7487 var str = func.toString();
7488 var match = str.match(regex);
7489 return match && match[
1];
7491 assert.AssertionError = function AssertionError(options) {
7492 this.name = 'AssertionError';
7493 this.actual = options.actual;
7494 this.expected = options.expected;
7495 this.operator = options.operator;
7496 if (options.message) {
7497 this.message = options.message;
7498 this.generatedMessage = false;
7500 this.message = getMessage(this);
7501 this.generatedMessage = true;
7503 var stackStartFunction = options.stackStartFunction || fail;
7504 if (Error.captureStackTrace) {
7505 Error.captureStackTrace(this, stackStartFunction);
7507 // non v8 browsers so we can have a stacktrace
7508 var err = new Error();
7510 var out = err.stack;
7512 // try to strip useless frames
7513 var fn_name = getName(stackStartFunction);
7514 var idx = out.indexOf('\n' + fn_name);
7516 // once we have located the function frame
7517 // we need to strip out everything before it (and its line)
7518 var next_line = out.indexOf('\n', idx +
1);
7519 out = out.substring(next_line +
1);
7527 // assert.AssertionError instanceof Error
7528 util.inherits(assert.AssertionError, Error);
7530 function truncate(s, n) {
7531 if (typeof s === 'string') {
7532 return s.length < n ? s : s.slice(
0, n);
7537 function inspect(something) {
7538 if (functionsHaveNames || !util.isFunction(something)) {
7539 return util.inspect(something);
7541 var rawname = getName(something);
7542 var name = rawname ? ': ' + rawname : '';
7543 return '[Function' + name + ']';
7545 function getMessage(self) {
7546 return truncate(inspect(self.actual),
128) + ' ' +
7547 self.operator + ' ' +
7548 truncate(inspect(self.expected),
128);
7551 // At present only the three keys mentioned above are used and
7552 // understood by the spec. Implementations or sub modules can pass
7553 // other keys to the AssertionError's constructor - they will be
7556 //
3. All of the following functions must throw an AssertionError
7557 // when a corresponding condition is not met, with a message that
7558 // may be undefined if not provided. All assertion methods provide
7559 // both the actual and expected values to the assertion error for
7560 // display purposes.
7562 function fail(actual, expected, message, operator, stackStartFunction) {
7563 throw new assert.AssertionError({
7568 stackStartFunction: stackStartFunction
7572 // EXTENSION! allows for well behaved errors defined elsewhere.
7575 //
4. Pure assertion tests whether a value is truthy, as determined
7577 // assert.ok(guard, message_opt);
7578 // This statement is equivalent to assert.equal(true, !!guard,
7579 // message_opt);. To test strictly for the value true, use
7580 // assert.strictEqual(true, guard, message_opt);.
7582 function ok(value, message) {
7583 if (!value) fail(value, true, message, '==', assert.ok);
7587 //
5. The equality assertion tests shallow, coercive equality with
7589 // assert.equal(actual, expected, message_opt);
7591 assert.equal = function equal(actual, expected, message) {
7592 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
7595 //
6. The non-equality assertion tests for whether two objects are not equal
7596 // with != assert.notEqual(actual, expected, message_opt);
7598 assert.notEqual = function notEqual(actual, expected, message) {
7599 if (actual == expected) {
7600 fail(actual, expected, message, '!=', assert.notEqual);
7604 //
7. The equivalence assertion tests a deep equality relation.
7605 // assert.deepEqual(actual, expected, message_opt);
7607 assert.deepEqual = function deepEqual(actual, expected, message) {
7608 if (!_deepEqual(actual, expected, false)) {
7609 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
7613 assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
7614 if (!_deepEqual(actual, expected, true)) {
7615 fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);
7619 function _deepEqual(actual, expected, strict, memos) {
7620 //
7.1. All identical values are equivalent, as determined by ===.
7621 if (actual === expected) {
7623 } else if (isBuffer(actual) && isBuffer(expected)) {
7624 return compare(actual, expected) ===
0;
7626 //
7.2. If the expected value is a Date object, the actual value is
7627 // equivalent if it is also a Date object that refers to the same time.
7628 } else if (util.isDate(actual) && util.isDate(expected)) {
7629 return actual.getTime() === expected.getTime();
7631 //
7.3 If the expected value is a RegExp object, the actual value is
7632 // equivalent if it is also a RegExp object with the same source and
7633 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
7634 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
7635 return actual.source === expected.source &&
7636 actual.global === expected.global &&
7637 actual.multiline === expected.multiline &&
7638 actual.lastIndex === expected.lastIndex &&
7639 actual.ignoreCase === expected.ignoreCase;
7641 //
7.4. Other pairs that do not both pass typeof value == 'object',
7642 // equivalence is determined by ==.
7643 } else if ((actual === null || typeof actual !== 'object') &&
7644 (expected === null || typeof expected !== 'object')) {
7645 return strict ? actual === expected : actual == expected;
7647 // If both values are instances of typed arrays, wrap their underlying
7648 // ArrayBuffers in a Buffer each to increase performance
7649 // This optimization requires the arrays to have the same type as checked by
7650 // Object.prototype.toString (aka pToString). Never perform binary
7651 // comparisons for Float*Arrays, though, since e.g. +
0 === -
0 but their
7652 // bit patterns are not identical.
7653 } else if (isView(actual) && isView(expected) &&
7654 pToString(actual) === pToString(expected) &&
7655 !(actual instanceof Float32Array ||
7656 actual instanceof Float64Array)) {
7657 return compare(new Uint8Array(actual.buffer),
7658 new Uint8Array(expected.buffer)) ===
0;
7660 //
7.5 For all other Object pairs, including Array objects, equivalence is
7661 // determined by having the same number of owned properties (as verified
7662 // with Object.prototype.hasOwnProperty.call), the same set of keys
7663 // (although not necessarily the same order), equivalent values for every
7664 // corresponding key, and an identical 'prototype' property. Note: this
7665 // accounts for both named and indexed properties on Arrays.
7666 } else if (isBuffer(actual) !== isBuffer(expected)) {
7669 memos = memos || {actual: [], expected: []};
7671 var actualIndex = memos.actual.indexOf(actual);
7672 if (actualIndex !== -
1) {
7673 if (actualIndex === memos.expected.indexOf(expected)) {
7678 memos.actual.push(actual);
7679 memos.expected.push(expected);
7681 return objEquiv(actual, expected, strict, memos);
7685 function isArguments(object) {
7686 return Object.prototype.toString.call(object) == '[object Arguments]';
7689 function objEquiv(a, b, strict, actualVisitedObjects) {
7690 if (a === null || a === undefined || b === null || b === undefined)
7692 // if one is a primitive, the other must be same
7693 if (util.isPrimitive(a) || util.isPrimitive(b))
7695 if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))
7697 var aIsArgs = isArguments(a);
7698 var bIsArgs = isArguments(b);
7699 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
7704 return _deepEqual(a, b, strict);
7706 var ka = objectKeys(a);
7707 var kb = objectKeys(b);
7709 // having the same number of owned properties (keys incorporates
7711 if (ka.length !== kb.length)
7713 //the same set of keys (although not necessarily the same order),
7717 for (i = ka.length -
1; i
>=
0; i--) {
7718 if (ka[i] !== kb[i])
7721 //equivalent values for every corresponding key, and
7722 //~~~possibly expensive deep test
7723 for (i = ka.length -
1; i
>=
0; i--) {
7725 if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))
7731 //
8. The non-equivalence assertion tests for any deep inequality.
7732 // assert.notDeepEqual(actual, expected, message_opt);
7734 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
7735 if (_deepEqual(actual, expected, false)) {
7736 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
7740 assert.notDeepStrictEqual = notDeepStrictEqual;
7741 function notDeepStrictEqual(actual, expected, message) {
7742 if (_deepEqual(actual, expected, true)) {
7743 fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);
7748 //
9. The strict equality assertion tests strict equality, as determined by ===.
7749 // assert.strictEqual(actual, expected, message_opt);
7751 assert.strictEqual = function strictEqual(actual, expected, message) {
7752 if (actual !== expected) {
7753 fail(actual, expected, message, '===', assert.strictEqual);
7757 //
10. The strict non-equality assertion tests for strict inequality, as
7758 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
7760 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
7761 if (actual === expected) {
7762 fail(actual, expected, message, '!==', assert.notStrictEqual);
7766 function expectedException(actual, expected) {
7767 if (!actual || !expected) {
7771 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
7772 return expected.test(actual);
7776 if (actual instanceof expected) {
7780 // Ignore. The instanceof check doesn't work for arrow functions.
7783 if (Error.isPrototypeOf(expected)) {
7787 return expected.call({}, actual) === true;
7790 function _tryBlock(block) {
7800 function _throws(shouldThrow, block, expected, message) {
7803 if (typeof block !== 'function') {
7804 throw new TypeError('"block" argument must be a function');
7807 if (typeof expected === 'string') {
7812 actual = _tryBlock(block);
7814 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
7815 (message ? ' ' + message : '.');
7817 if (shouldThrow && !actual) {
7818 fail(actual, expected, 'Missing expected exception' + message);
7821 var userProvidedMessage = typeof message === 'string';
7822 var isUnwantedException = !shouldThrow && util.isError(actual);
7823 var isUnexpectedException = !shouldThrow && actual && !expected;
7825 if ((isUnwantedException &&
7826 userProvidedMessage &&
7827 expectedException(actual, expected)) ||
7828 isUnexpectedException) {
7829 fail(actual, expected, 'Got unwanted exception' + message);
7832 if ((shouldThrow && actual && expected &&
7833 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
7838 //
11. Expected to throw an error:
7839 // assert.throws(block, Error_opt, message_opt);
7841 assert.throws = function(block, /*optional*/error, /*optional*/message) {
7842 _throws(true, block, error, message);
7845 // EXTENSION! This is annoying to write outside this module.
7846 assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {
7847 _throws(false, block, error, message);
7850 assert.ifError = function(err) { if (err) throw err; };
7852 var objectKeys = Object.keys || function (obj) {
7854 for (var key in obj) {
7855 if (hasOwn.call(obj, key)) keys.push(key);
7860 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
7861 },{"util/":
33}],
2:[function(require,module,exports){
7864 exports.byteLength = byteLength
7865 exports.toByteArray = toByteArray
7866 exports.fromByteArray = fromByteArray
7870 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
7872 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
7873 for (var i =
0, len = code.length; i < len; ++i) {
7875 revLookup[code.charCodeAt(i)] = i
7878 revLookup['-'.charCodeAt(
0)] =
62
7879 revLookup['_'.charCodeAt(
0)] =
63
7881 function placeHoldersCount (b64) {
7882 var len = b64.length
7884 throw new Error('Invalid string. Length must be a multiple of
4')
7887 // the number of equal signs (place holders)
7888 // if there are two placeholders, than the two characters before it
7889 // represent one byte
7890 // if there is only one, then the three characters before it represent
2 bytes
7891 // this is just a cheap hack to not do indexOf twice
7892 return b64[len -
2] === '=' ?
2 : b64[len -
1] === '=' ?
1 :
0
7895 function byteLength (b64) {
7896 // base64 is
4/
3 + up to two characters of the original data
7897 return b64.length *
3 /
4 - placeHoldersCount(b64)
7900 function toByteArray (b64) {
7901 var i, j, l, tmp, placeHolders, arr
7902 var len = b64.length
7903 placeHolders = placeHoldersCount(b64)
7905 arr = new Arr(len *
3 /
4 - placeHolders)
7907 // if there are placeholders, only get up to the last complete
4 chars
7908 l = placeHolders
> 0 ? len -
4 : len
7912 for (i =
0, j =
0; i < l; i +=
4, j +=
3) {
7913 tmp = (revLookup[b64.charCodeAt(i)] <<
18) | (revLookup[b64.charCodeAt(i +
1)] <<
12) | (revLookup[b64.charCodeAt(i +
2)] <<
6) | revLookup[b64.charCodeAt(i +
3)]
7914 arr[L++] = (tmp
>> 16) &
0xFF
7915 arr[L++] = (tmp
>> 8) &
0xFF
7916 arr[L++] = tmp &
0xFF
7919 if (placeHolders ===
2) {
7920 tmp = (revLookup[b64.charCodeAt(i)] <<
2) | (revLookup[b64.charCodeAt(i +
1)]
>> 4)
7921 arr[L++] = tmp &
0xFF
7922 } else if (placeHolders ===
1) {
7923 tmp = (revLookup[b64.charCodeAt(i)] <<
10) | (revLookup[b64.charCodeAt(i +
1)] <<
4) | (revLookup[b64.charCodeAt(i +
2)]
>> 2)
7924 arr[L++] = (tmp
>> 8) &
0xFF
7925 arr[L++] = tmp &
0xFF
7931 function tripletToBase64 (num) {
7932 return lookup[num
>> 18 &
0x3F] + lookup[num
>> 12 &
0x3F] + lookup[num
>> 6 &
0x3F] + lookup[num &
0x3F]
7935 function encodeChunk (uint8, start, end) {
7938 for (var i = start; i < end; i +=
3) {
7939 tmp = (uint8[i] <<
16) + (uint8[i +
1] <<
8) + (uint8[i +
2])
7940 output.push(tripletToBase64(tmp))
7942 return output.join('')
7945 function fromByteArray (uint8) {
7947 var len = uint8.length
7948 var extraBytes = len %
3 // if we have
1 byte left, pad
2 bytes
7951 var maxChunkLength =
16383 // must be multiple of
3
7953 // go through the array every three bytes, we'll deal with trailing stuff later
7954 for (var i =
0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
7955 parts.push(encodeChunk(uint8, i, (i + maxChunkLength)
> len2 ? len2 : (i + maxChunkLength)))
7958 // pad the end with zeros, but make sure to not forget the extra bytes
7959 if (extraBytes ===
1) {
7960 tmp = uint8[len -
1]
7961 output += lookup[tmp
>> 2]
7962 output += lookup[(tmp <<
4) &
0x3F]
7964 } else if (extraBytes ===
2) {
7965 tmp = (uint8[len -
2] <<
8) + (uint8[len -
1])
7966 output += lookup[tmp
>> 10]
7967 output += lookup[(tmp
>> 4) &
0x3F]
7968 output += lookup[(tmp <<
2) &
0x3F]
7974 return parts.join('')
7977 },{}],
3:[function(require,module,exports){
7979 },{}],
4:[function(require,module,exports){
7983 var buffer = require('buffer');
7984 var Buffer = buffer.Buffer;
7985 var SlowBuffer = buffer.SlowBuffer;
7986 var MAX_LEN = buffer.kMaxLength ||
2147483647;
7987 exports.alloc = function alloc(size, fill, encoding) {
7988 if (typeof Buffer.alloc === 'function') {
7989 return Buffer.alloc(size, fill, encoding);
7991 if (typeof encoding === 'number') {
7992 throw new TypeError('encoding must not be number');
7994 if (typeof size !== 'number') {
7995 throw new TypeError('size must be a number');
7997 if (size
> MAX_LEN) {
7998 throw new RangeError('size is too large');
8002 if (_fill === undefined) {
8006 var buf = new Buffer(size);
8007 if (typeof _fill === 'string') {
8008 var fillBuf = new Buffer(_fill, enc);
8009 var flen = fillBuf.length;
8011 while (++i < size) {
8012 buf[i] = fillBuf[i % flen];
8019 exports.allocUnsafe = function allocUnsafe(size) {
8020 if (typeof Buffer.allocUnsafe === 'function') {
8021 return Buffer.allocUnsafe(size);
8023 if (typeof size !== 'number') {
8024 throw new TypeError('size must be a number');
8026 if (size
> MAX_LEN) {
8027 throw new RangeError('size is too large');
8029 return new Buffer(size);
8031 exports.from = function from(value, encodingOrOffset, length) {
8032 if (typeof Buffer.from === 'function' && (!global.Uint8Array || Uint8Array.from !== Buffer.from)) {
8033 return Buffer.from(value, encodingOrOffset, length);
8035 if (typeof value === 'number') {
8036 throw new TypeError('"value" argument must not be a number');
8038 if (typeof value === 'string') {
8039 return new Buffer(value, encodingOrOffset);
8041 if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
8042 var offset = encodingOrOffset;
8043 if (arguments.length ===
1) {
8044 return new Buffer(value);
8046 if (typeof offset === 'undefined') {
8050 if (typeof len === 'undefined') {
8051 len = value.byteLength - offset;
8053 if (offset
>= value.byteLength) {
8054 throw new RangeError('\'offset\' is out of bounds');
8056 if (len
> value.byteLength - offset) {
8057 throw new RangeError('\'length\' is out of bounds');
8059 return new Buffer(value.slice(offset, offset + len));
8061 if (Buffer.isBuffer(value)) {
8062 var out = new Buffer(value.length);
8063 value.copy(out,
0,
0, value.length);
8067 if (Array.isArray(value) || (typeof ArrayBuffer !== 'undefined' && value.buffer instanceof ArrayBuffer) || 'length' in value) {
8068 return new Buffer(value);
8070 if (value.type === 'Buffer' && Array.isArray(value.data)) {
8071 return new Buffer(value.data);
8075 throw new TypeError('First argument must be a string, Buffer, ' + 'ArrayBuffer, Array, or array-like object.');
8077 exports.allocUnsafeSlow = function allocUnsafeSlow(size) {
8078 if (typeof Buffer.allocUnsafeSlow === 'function') {
8079 return Buffer.allocUnsafeSlow(size);
8081 if (typeof size !== 'number') {
8082 throw new TypeError('size must be a number');
8084 if (size
>= MAX_LEN) {
8085 throw new RangeError('size is too large');
8087 return new SlowBuffer(size);
8090 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
8091 },{"buffer":
5}],
5:[function(require,module,exports){
8093 * The buffer module from node.js, for the browser.
8095 * @author Feross Aboukhadijeh
<feross@feross.org
> <http://feross.org
>
8098 /* eslint-disable no-proto */
8102 var base64 = require('base64-js')
8103 var ieee754 = require('ieee754')
8105 exports.Buffer = Buffer
8106 exports.SlowBuffer = SlowBuffer
8107 exports.INSPECT_MAX_BYTES =
50
8109 var K_MAX_LENGTH =
0x7fffffff
8110 exports.kMaxLength = K_MAX_LENGTH
8113 * If `Buffer.TYPED_ARRAY_SUPPORT`:
8114 * === true Use Uint8Array implementation (fastest)
8115 * === false Print warning and recommend using `buffer` v4.x which has an Object
8116 * implementation (most compatible, even IE6)
8118 * Browsers that support typed arrays are IE
10+, Firefox
4+, Chrome
7+, Safari
5.1+,
8119 * Opera
11.6+, iOS
4.2+.
8121 * We report that the browser does not support typed arrays if the are not subclassable
8122 * using __proto__. Firefox
4-
29 lacks support for adding new properties to `Uint8Array`
8123 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=
695438). IE
10 lacks support
8124 * for __proto__ and has a buggy typed array implementation.
8126 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
8128 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
8129 typeof console.error === 'function') {
8131 'This browser lacks typed array (Uint8Array) support which is required by ' +
8132 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
8136 function typedArraySupport () {
8137 // Can typed array instances can be augmented?
8139 var arr = new Uint8Array(
1)
8140 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return
42 }}
8141 return arr.foo() ===
42
8147 function createBuffer (length) {
8148 if (length
> K_MAX_LENGTH) {
8149 throw new RangeError('Invalid typed array length')
8151 // Return an augmented `Uint8Array` instance
8152 var buf = new Uint8Array(length)
8153 buf.__proto__ = Buffer.prototype
8158 * The Buffer constructor returns instances of `Uint8Array` that have their
8159 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
8160 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
8161 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
8162 * returns a single octet.
8164 * The `Uint8Array` prototype remains unmodified.
8167 function Buffer (arg, encodingOrOffset, length) {
8169 if (typeof arg === 'number') {
8170 if (typeof encodingOrOffset === 'string') {
8172 'If encoding is specified then the first argument must be a string'
8175 return allocUnsafe(arg)
8177 return from(arg, encodingOrOffset, length)
8180 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/
97
8181 if (typeof Symbol !== 'undefined' && Symbol.species &&
8182 Buffer[Symbol.species] === Buffer) {
8183 Object.defineProperty(Buffer, Symbol.species, {
8191 Buffer.poolSize =
8192 // not used by this implementation
8193 function from (value, encodingOrOffset, length) {
8194 if (typeof value === 'number') {
8195 throw new TypeError('"value" argument must not be a number')
8198 if (value instanceof ArrayBuffer) {
8199 return fromArrayBuffer(value, encodingOrOffset, length)
8202 if (typeof value === 'string') {
8203 return fromString(value, encodingOrOffset)
8206 return fromObject(value)
8210 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
8211 * if value is a number.
8212 * Buffer.from(str[, encoding])
8213 * Buffer.from(array)
8214 * Buffer.from(buffer)
8215 * Buffer.from(arrayBuffer[, byteOffset[, length]])
8217 Buffer.from = function (value, encodingOrOffset, length) {
8218 return from(value, encodingOrOffset, length)
8221 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
8222 // https://github.com/feross/buffer/pull/
148
8223 Buffer.prototype.__proto__ = Uint8Array.prototype
8224 Buffer.__proto__ = Uint8Array
8226 function assertSize (size) {
8227 if (typeof size !== 'number') {
8228 throw new TypeError('"size" argument must be a number')
8229 } else if (size <
0) {
8230 throw new RangeError('"size" argument must not be negative')
8234 function alloc (size, fill, encoding) {
8237 return createBuffer(size)
8239 if (fill !== undefined) {
8240 // Only pay attention to encoding if it's a string. This
8241 // prevents accidentally sending in a number that would
8242 // be interpretted as a start offset.
8243 return typeof encoding === 'string'
8244 ? createBuffer(size).fill(fill, encoding)
8245 : createBuffer(size).fill(fill)
8247 return createBuffer(size)
8251 * Creates a new filled Buffer instance.
8252 * alloc(size[, fill[, encoding]])
8254 Buffer.alloc = function (size, fill, encoding) {
8255 return alloc(size, fill, encoding)
8258 function allocUnsafe (size) {
8260 return createBuffer(size <
0 ?
0 : checked(size) |
0)
8264 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
8266 Buffer.allocUnsafe = function (size) {
8267 return allocUnsafe(size)
8270 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
8272 Buffer.allocUnsafeSlow = function (size) {
8273 return allocUnsafe(size)
8276 function fromString (string, encoding) {
8277 if (typeof encoding !== 'string' || encoding === '') {
8281 if (!Buffer.isEncoding(encoding)) {
8282 throw new TypeError('"encoding" must be a valid string encoding')
8285 var length = byteLength(string, encoding) |
0
8286 var buf = createBuffer(length)
8288 var actual = buf.write(string, encoding)
8290 if (actual !== length) {
8291 // Writing a hex string, for example, that contains invalid characters will
8292 // cause everything after the first invalid character to be ignored. (e.g.
8293 // 'abxxcd' will be treated as 'ab')
8294 buf = buf.slice(
0, actual)
8300 function fromArrayLike (array) {
8301 var length = array.length <
0 ?
0 : checked(array.length) |
0
8302 var buf = createBuffer(length)
8303 for (var i =
0; i < length; i +=
1) {
8304 buf[i] = array[i] &
255
8309 function fromArrayBuffer (array, byteOffset, length) {
8310 if (byteOffset <
0 || array.byteLength < byteOffset) {
8311 throw new RangeError('\'offset\' is out of bounds')
8314 if (array.byteLength < byteOffset + (length ||
0)) {
8315 throw new RangeError('\'length\' is out of bounds')
8319 if (byteOffset === undefined && length === undefined) {
8320 buf = new Uint8Array(array)
8321 } else if (length === undefined) {
8322 buf = new Uint8Array(array, byteOffset)
8324 buf = new Uint8Array(array, byteOffset, length)
8327 // Return an augmented `Uint8Array` instance
8328 buf.__proto__ = Buffer.prototype
8332 function fromObject (obj) {
8333 if (Buffer.isBuffer(obj)) {
8334 var len = checked(obj.length) |
0
8335 var buf = createBuffer(len)
8337 if (buf.length ===
0) {
8341 obj.copy(buf,
0,
0, len)
8346 if (isArrayBufferView(obj) || 'length' in obj) {
8347 if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
8348 return createBuffer(
0)
8350 return fromArrayLike(obj)
8353 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
8354 return fromArrayLike(obj.data)
8358 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
8361 function checked (length) {
8362 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
8363 // length is NaN (which is otherwise coerced to zero.)
8364 if (length
>= K_MAX_LENGTH) {
8365 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
8366 'size:
0x' + K_MAX_LENGTH.toString(
16) + ' bytes')
8371 function SlowBuffer (length) {
8372 if (+length != length) { // eslint-disable-line eqeqeq
8375 return Buffer.alloc(+length)
8378 Buffer.isBuffer = function isBuffer (b) {
8379 return b != null && b._isBuffer === true
8382 Buffer.compare = function compare (a, b) {
8383 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
8384 throw new TypeError('Arguments must be Buffers')
8387 if (a === b) return
0
8392 for (var i =
0, len = Math.min(x, y); i < len; ++i) {
8393 if (a[i] !== b[i]) {
8400 if (x < y) return -
1
8405 Buffer.isEncoding = function isEncoding (encoding) {
8406 switch (String(encoding).toLowerCase()) {
8424 Buffer.concat = function concat (list, length) {
8425 if (!Array.isArray(list)) {
8426 throw new TypeError('"list" argument must be an Array of Buffers')
8429 if (list.length ===
0) {
8430 return Buffer.alloc(
0)
8434 if (length === undefined) {
8436 for (i =
0; i < list.length; ++i) {
8437 length += list[i].length
8441 var buffer = Buffer.allocUnsafe(length)
8443 for (i =
0; i < list.length; ++i) {
8445 if (!Buffer.isBuffer(buf)) {
8446 throw new TypeError('"list" argument must be an Array of Buffers')
8448 buf.copy(buffer, pos)
8454 function byteLength (string, encoding) {
8455 if (Buffer.isBuffer(string)) {
8456 return string.length
8458 if (isArrayBufferView(string) || string instanceof ArrayBuffer) {
8459 return string.byteLength
8461 if (typeof string !== 'string') {
8462 string = '' + string
8465 var len = string.length
8466 if (len ===
0) return
0
8468 // Use a for loop to avoid recursion
8469 var loweredCase = false
8479 return utf8ToBytes(string).length
8488 return base64ToBytes(string).length
8490 if (loweredCase) return utf8ToBytes(string).length // assume utf8
8491 encoding = ('' + encoding).toLowerCase()
8496 Buffer.byteLength = byteLength
8498 function slowToString (encoding, start, end) {
8499 var loweredCase = false
8501 // No need to verify that
"this.length <= MAX_UINT32" since it's a read-only
8502 // property of a typed array.
8504 // This behaves neither like String nor Uint8Array in that we set start/end
8505 // to their upper/lower bounds if the value passed is out of range.
8506 // undefined is handled specially as per ECMA-
262 6th Edition,
8507 // Section
13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
8508 if (start === undefined || start <
0) {
8511 // Return early if start
> this.length. Done here to prevent potential uint32
8512 // coercion fail below.
8513 if (start
> this.length) {
8517 if (end === undefined || end
> this.length) {
8525 // Force coersion to uint32. This will also coerce falsey/NaN values to
0.
8533 if (!encoding) encoding = 'utf8'
8538 return hexSlice(this, start, end)
8542 return utf8Slice(this, start, end)
8545 return asciiSlice(this, start, end)
8549 return latin1Slice(this, start, end)
8552 return base64Slice(this, start, end)
8558 return utf16leSlice(this, start, end)
8561 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
8562 encoding = (encoding + '').toLowerCase()
8568 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
8569 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
8570 // reliably in a browserify context because there could be multiple different
8571 // copies of the 'buffer' package in use. This method works even for Buffer
8572 // instances that were created from another copy of the `buffer` package.
8573 // See: https://github.com/feross/buffer/issues/
154
8574 Buffer.prototype._isBuffer = true
8576 function swap (b, n, m) {
8582 Buffer.prototype.swap16 = function swap16 () {
8583 var len = this.length
8584 if (len %
2 !==
0) {
8585 throw new RangeError('Buffer size must be a multiple of
16-bits')
8587 for (var i =
0; i < len; i +=
2) {
8588 swap(this, i, i +
1)
8593 Buffer.prototype.swap32 = function swap32 () {
8594 var len = this.length
8595 if (len %
4 !==
0) {
8596 throw new RangeError('Buffer size must be a multiple of
32-bits')
8598 for (var i =
0; i < len; i +=
4) {
8599 swap(this, i, i +
3)
8600 swap(this, i +
1, i +
2)
8605 Buffer.prototype.swap64 = function swap64 () {
8606 var len = this.length
8607 if (len %
8 !==
0) {
8608 throw new RangeError('Buffer size must be a multiple of
64-bits')
8610 for (var i =
0; i < len; i +=
8) {
8611 swap(this, i, i +
7)
8612 swap(this, i +
1, i +
6)
8613 swap(this, i +
2, i +
5)
8614 swap(this, i +
3, i +
4)
8619 Buffer.prototype.toString = function toString () {
8620 var length = this.length
8621 if (length ===
0) return ''
8622 if (arguments.length ===
0) return utf8Slice(this,
0, length)
8623 return slowToString.apply(this, arguments)
8626 Buffer.prototype.equals = function equals (b) {
8627 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
8628 if (this === b) return true
8629 return Buffer.compare(this, b) ===
0
8632 Buffer.prototype.inspect = function inspect () {
8634 var max = exports.INSPECT_MAX_BYTES
8635 if (this.length
> 0) {
8636 str = this.toString('hex',
0, max).match(/.{
2}/g).join(' ')
8637 if (this.length
> max) str += ' ... '
8639 return '
<Buffer ' + str + '
>'
8642 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
8643 if (!Buffer.isBuffer(target)) {
8644 throw new TypeError('Argument must be a Buffer')
8647 if (start === undefined) {
8650 if (end === undefined) {
8651 end = target ? target.length :
0
8653 if (thisStart === undefined) {
8656 if (thisEnd === undefined) {
8657 thisEnd = this.length
8660 if (start <
0 || end
> target.length || thisStart <
0 || thisEnd
> this.length) {
8661 throw new RangeError('out of range index')
8664 if (thisStart
>= thisEnd && start
>= end) {
8667 if (thisStart
>= thisEnd) {
8679 if (this === target) return
0
8681 var x = thisEnd - thisStart
8683 var len = Math.min(x, y)
8685 var thisCopy = this.slice(thisStart, thisEnd)
8686 var targetCopy = target.slice(start, end)
8688 for (var i =
0; i < len; ++i) {
8689 if (thisCopy[i] !== targetCopy[i]) {
8696 if (x < y) return -
1
8701 // Finds either the first index of `val` in `buffer` at offset
>= `byteOffset`,
8702 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
8705 // - buffer - a Buffer to search
8706 // - val - a string, Buffer, or number
8707 // - byteOffset - an index into `buffer`; will be clamped to an int32
8708 // - encoding - an optional encoding, relevant is val is a string
8709 // - dir - true for indexOf, false for lastIndexOf
8710 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
8711 // Empty buffer means no match
8712 if (buffer.length ===
0) return -
1
8714 // Normalize byteOffset
8715 if (typeof byteOffset === 'string') {
8716 encoding = byteOffset
8718 } else if (byteOffset
> 0x7fffffff) {
8719 byteOffset =
0x7fffffff
8720 } else if (byteOffset < -
0x80000000) {
8721 byteOffset = -
0x80000000
8723 byteOffset = +byteOffset // Coerce to Number.
8724 if (numberIsNaN(byteOffset)) {
8725 // byteOffset: it it's undefined, null, NaN,
"foo", etc, search whole buffer
8726 byteOffset = dir ?
0 : (buffer.length -
1)
8729 // Normalize byteOffset: negative offsets start from the end of the buffer
8730 if (byteOffset <
0) byteOffset = buffer.length + byteOffset
8731 if (byteOffset
>= buffer.length) {
8733 else byteOffset = buffer.length -
1
8734 } else if (byteOffset <
0) {
8735 if (dir) byteOffset =
0
8740 if (typeof val === 'string') {
8741 val = Buffer.from(val, encoding)
8744 // Finally, search either indexOf (if dir is true) or lastIndexOf
8745 if (Buffer.isBuffer(val)) {
8746 // Special case: looking for empty string/buffer always fails
8747 if (val.length ===
0) {
8750 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
8751 } else if (typeof val === 'number') {
8752 val = val &
0xFF // Search for a byte value [
0-
255]
8753 if (typeof Uint8Array.prototype.indexOf === 'function') {
8755 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
8757 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
8760 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
8763 throw new TypeError('val must be string, number or Buffer')
8766 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
8768 var arrLength = arr.length
8769 var valLength = val.length
8771 if (encoding !== undefined) {
8772 encoding = String(encoding).toLowerCase()
8773 if (encoding === 'ucs2' || encoding === 'ucs-
2' ||
8774 encoding === 'utf16le' || encoding === 'utf-
16le') {
8775 if (arr.length <
2 || val.length <
2) {
8785 function read (buf, i) {
8786 if (indexSize ===
1) {
8789 return buf.readUInt16BE(i * indexSize)
8796 for (i = byteOffset; i < arrLength; i++) {
8797 if (read(arr, i) === read(val, foundIndex === -
1 ?
0 : i - foundIndex)) {
8798 if (foundIndex === -
1) foundIndex = i
8799 if (i - foundIndex +
1 === valLength) return foundIndex * indexSize
8801 if (foundIndex !== -
1) i -= i - foundIndex
8806 if (byteOffset + valLength
> arrLength) byteOffset = arrLength - valLength
8807 for (i = byteOffset; i
>=
0; i--) {
8809 for (var j =
0; j < valLength; j++) {
8810 if (read(arr, i + j) !== read(val, j)) {
8822 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
8823 return this.indexOf(val, byteOffset, encoding) !== -
1
8826 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
8827 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
8830 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
8831 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
8834 function hexWrite (buf, string, offset, length) {
8835 offset = Number(offset) ||
0
8836 var remaining = buf.length - offset
8840 length = Number(length)
8841 if (length
> remaining) {
8846 // must be an even number of digits
8847 var strLen = string.length
8848 if (strLen %
2 !==
0) throw new TypeError('Invalid hex string')
8850 if (length
> strLen /
2) {
8853 for (var i =
0; i < length; ++i) {
8854 var parsed = parseInt(string.substr(i *
2,
2),
16)
8855 if (numberIsNaN(parsed)) return i
8856 buf[offset + i] = parsed
8861 function utf8Write (buf, string, offset, length) {
8862 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
8865 function asciiWrite (buf, string, offset, length) {
8866 return blitBuffer(asciiToBytes(string), buf, offset, length)
8869 function latin1Write (buf, string, offset, length) {
8870 return asciiWrite(buf, string, offset, length)
8873 function base64Write (buf, string, offset, length) {
8874 return blitBuffer(base64ToBytes(string), buf, offset, length)
8877 function ucs2Write (buf, string, offset, length) {
8878 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
8881 Buffer.prototype.write = function write (string, offset, length, encoding) {
8882 // Buffer#write(string)
8883 if (offset === undefined) {
8885 length = this.length
8887 // Buffer#write(string, encoding)
8888 } else if (length === undefined && typeof offset === 'string') {
8890 length = this.length
8892 // Buffer#write(string, offset[, length][, encoding])
8893 } else if (isFinite(offset)) {
8894 offset = offset
>>> 0
8895 if (isFinite(length)) {
8896 length = length
>>> 0
8897 if (encoding === undefined) encoding = 'utf8'
8904 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
8908 var remaining = this.length - offset
8909 if (length === undefined || length
> remaining) length = remaining
8911 if ((string.length
> 0 && (length <
0 || offset <
0)) || offset
> this.length) {
8912 throw new RangeError('Attempt to write outside buffer bounds')
8915 if (!encoding) encoding = 'utf8'
8917 var loweredCase = false
8921 return hexWrite(this, string, offset, length)
8925 return utf8Write(this, string, offset, length)
8928 return asciiWrite(this, string, offset, length)
8932 return latin1Write(this, string, offset, length)
8935 // Warning: maxLength not taken into account in base64Write
8936 return base64Write(this, string, offset, length)
8942 return ucs2Write(this, string, offset, length)
8945 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
8946 encoding = ('' + encoding).toLowerCase()
8952 Buffer.prototype.toJSON = function toJSON () {
8955 data: Array.prototype.slice.call(this._arr || this,
0)
8959 function base64Slice (buf, start, end) {
8960 if (start ===
0 && end === buf.length) {
8961 return base64.fromByteArray(buf)
8963 return base64.fromByteArray(buf.slice(start, end))
8967 function utf8Slice (buf, start, end) {
8968 end = Math.min(buf.length, end)
8973 var firstByte = buf[i]
8974 var codePoint = null
8975 var bytesPerSequence = (firstByte
> 0xEF) ?
4
8976 : (firstByte
> 0xDF) ?
3
8977 : (firstByte
> 0xBF) ?
2
8980 if (i + bytesPerSequence <= end) {
8981 var secondByte, thirdByte, fourthByte, tempCodePoint
8983 switch (bytesPerSequence) {
8985 if (firstByte <
0x80) {
8986 codePoint = firstByte
8990 secondByte = buf[i +
1]
8991 if ((secondByte &
0xC0) ===
0x80) {
8992 tempCodePoint = (firstByte &
0x1F) <<
0x6 | (secondByte &
0x3F)
8993 if (tempCodePoint
> 0x7F) {
8994 codePoint = tempCodePoint
8999 secondByte = buf[i +
1]
9000 thirdByte = buf[i +
2]
9001 if ((secondByte &
0xC0) ===
0x80 && (thirdByte &
0xC0) ===
0x80) {
9002 tempCodePoint = (firstByte &
0xF) <<
0xC | (secondByte &
0x3F) <<
0x6 | (thirdByte &
0x3F)
9003 if (tempCodePoint
> 0x7FF && (tempCodePoint <
0xD800 || tempCodePoint
> 0xDFFF)) {
9004 codePoint = tempCodePoint
9009 secondByte = buf[i +
1]
9010 thirdByte = buf[i +
2]
9011 fourthByte = buf[i +
3]
9012 if ((secondByte &
0xC0) ===
0x80 && (thirdByte &
0xC0) ===
0x80 && (fourthByte &
0xC0) ===
0x80) {
9013 tempCodePoint = (firstByte &
0xF) <<
0x12 | (secondByte &
0x3F) <<
0xC | (thirdByte &
0x3F) <<
0x6 | (fourthByte &
0x3F)
9014 if (tempCodePoint
> 0xFFFF && tempCodePoint <
0x110000) {
9015 codePoint = tempCodePoint
9021 if (codePoint === null) {
9022 // we did not generate a valid codePoint so insert a
9023 // replacement char (U+FFFD) and advance only
1 byte
9025 bytesPerSequence =
1
9026 } else if (codePoint
> 0xFFFF) {
9027 // encode to utf16 (surrogate pair dance)
9028 codePoint -=
0x10000
9029 res.push(codePoint
>>> 10 &
0x3FF |
0xD800)
9030 codePoint =
0xDC00 | codePoint &
0x3FF
9034 i += bytesPerSequence
9037 return decodeCodePointsArray(res)
9040 // Based on http://stackoverflow.com/a/
22747272/
680742, the browser with
9041 // the lowest limit is Chrome, with
0x10000 args.
9042 // We go
1 magnitude less, for safety
9043 var MAX_ARGUMENTS_LENGTH =
0x1000
9045 function decodeCodePointsArray (codePoints) {
9046 var len = codePoints.length
9047 if (len <= MAX_ARGUMENTS_LENGTH) {
9048 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
9051 // Decode in chunks to avoid
"call stack size exceeded".
9055 res += String.fromCharCode.apply(
9057 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
9063 function asciiSlice (buf, start, end) {
9065 end = Math.min(buf.length, end)
9067 for (var i = start; i < end; ++i) {
9068 ret += String.fromCharCode(buf[i] &
0x7F)
9073 function latin1Slice (buf, start, end) {
9075 end = Math.min(buf.length, end)
9077 for (var i = start; i < end; ++i) {
9078 ret += String.fromCharCode(buf[i])
9083 function hexSlice (buf, start, end) {
9084 var len = buf.length
9086 if (!start || start <
0) start =
0
9087 if (!end || end <
0 || end
> len) end = len
9090 for (var i = start; i < end; ++i) {
9091 out += toHex(buf[i])
9096 function utf16leSlice (buf, start, end) {
9097 var bytes = buf.slice(start, end)
9099 for (var i =
0; i < bytes.length; i +=
2) {
9100 res += String.fromCharCode(bytes[i] + (bytes[i +
1] *
256))
9105 Buffer.prototype.slice = function slice (start, end) {
9106 var len = this.length
9108 end = end === undefined ? len : ~~end
9112 if (start <
0) start =
0
9113 } else if (start
> len) {
9119 if (end <
0) end =
0
9120 } else if (end
> len) {
9124 if (end < start) end = start
9126 var newBuf = this.subarray(start, end)
9127 // Return an augmented `Uint8Array` instance
9128 newBuf.__proto__ = Buffer.prototype
9133 * Need to make sure that buffer isn't trying to write out of bounds.
9135 function checkOffset (offset, ext, length) {
9136 if ((offset %
1) !==
0 || offset <
0) throw new RangeError('offset is not uint')
9137 if (offset + ext
> length) throw new RangeError('Trying to access beyond buffer length')
9140 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
9141 offset = offset
>>> 0
9142 byteLength = byteLength
>>> 0
9143 if (!noAssert) checkOffset(offset, byteLength, this.length)
9145 var val = this[offset]
9148 while (++i < byteLength && (mul *=
0x100)) {
9149 val += this[offset + i] * mul
9155 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
9156 offset = offset
>>> 0
9157 byteLength = byteLength
>>> 0
9159 checkOffset(offset, byteLength, this.length)
9162 var val = this[offset + --byteLength]
9164 while (byteLength
> 0 && (mul *=
0x100)) {
9165 val += this[offset + --byteLength] * mul
9171 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
9172 offset = offset
>>> 0
9173 if (!noAssert) checkOffset(offset,
1, this.length)
9177 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
9178 offset = offset
>>> 0
9179 if (!noAssert) checkOffset(offset,
2, this.length)
9180 return this[offset] | (this[offset +
1] <<
8)
9183 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
9184 offset = offset
>>> 0
9185 if (!noAssert) checkOffset(offset,
2, this.length)
9186 return (this[offset] <<
8) | this[offset +
1]
9189 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
9190 offset = offset
>>> 0
9191 if (!noAssert) checkOffset(offset,
4, this.length)
9193 return ((this[offset]) |
9194 (this[offset +
1] <<
8) |
9195 (this[offset +
2] <<
16)) +
9196 (this[offset +
3] *
0x1000000)
9199 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
9200 offset = offset
>>> 0
9201 if (!noAssert) checkOffset(offset,
4, this.length)
9203 return (this[offset] *
0x1000000) +
9204 ((this[offset +
1] <<
16) |
9205 (this[offset +
2] <<
8) |
9209 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
9210 offset = offset
>>> 0
9211 byteLength = byteLength
>>> 0
9212 if (!noAssert) checkOffset(offset, byteLength, this.length)
9214 var val = this[offset]
9217 while (++i < byteLength && (mul *=
0x100)) {
9218 val += this[offset + i] * mul
9222 if (val
>= mul) val -= Math.pow(
2,
8 * byteLength)
9227 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
9228 offset = offset
>>> 0
9229 byteLength = byteLength
>>> 0
9230 if (!noAssert) checkOffset(offset, byteLength, this.length)
9234 var val = this[offset + --i]
9235 while (i
> 0 && (mul *=
0x100)) {
9236 val += this[offset + --i] * mul
9240 if (val
>= mul) val -= Math.pow(
2,
8 * byteLength)
9245 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
9246 offset = offset
>>> 0
9247 if (!noAssert) checkOffset(offset,
1, this.length)
9248 if (!(this[offset] &
0x80)) return (this[offset])
9249 return ((
0xff - this[offset] +
1) * -
1)
9252 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
9253 offset = offset
>>> 0
9254 if (!noAssert) checkOffset(offset,
2, this.length)
9255 var val = this[offset] | (this[offset +
1] <<
8)
9256 return (val &
0x8000) ? val |
0xFFFF0000 : val
9259 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
9260 offset = offset
>>> 0
9261 if (!noAssert) checkOffset(offset,
2, this.length)
9262 var val = this[offset +
1] | (this[offset] <<
8)
9263 return (val &
0x8000) ? val |
0xFFFF0000 : val
9266 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
9267 offset = offset
>>> 0
9268 if (!noAssert) checkOffset(offset,
4, this.length)
9270 return (this[offset]) |
9271 (this[offset +
1] <<
8) |
9272 (this[offset +
2] <<
16) |
9273 (this[offset +
3] <<
24)
9276 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
9277 offset = offset
>>> 0
9278 if (!noAssert) checkOffset(offset,
4, this.length)
9280 return (this[offset] <<
24) |
9281 (this[offset +
1] <<
16) |
9282 (this[offset +
2] <<
8) |
9286 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
9287 offset = offset
>>> 0
9288 if (!noAssert) checkOffset(offset,
4, this.length)
9289 return ieee754.read(this, offset, true,
23,
4)
9292 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
9293 offset = offset
>>> 0
9294 if (!noAssert) checkOffset(offset,
4, this.length)
9295 return ieee754.read(this, offset, false,
23,
4)
9298 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
9299 offset = offset
>>> 0
9300 if (!noAssert) checkOffset(offset,
8, this.length)
9301 return ieee754.read(this, offset, true,
52,
8)
9304 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
9305 offset = offset
>>> 0
9306 if (!noAssert) checkOffset(offset,
8, this.length)
9307 return ieee754.read(this, offset, false,
52,
8)
9310 function checkInt (buf, value, offset, ext, max, min) {
9311 if (!Buffer.isBuffer(buf)) throw new TypeError('
"buffer" argument must be a Buffer instance')
9312 if (value
> max || value < min) throw new RangeError('"value" argument is out of bounds')
9313 if (offset + ext
> buf.length) throw new RangeError('Index out of range')
9316 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
9318 offset = offset
>>> 0
9319 byteLength = byteLength
>>> 0
9321 var maxBytes = Math.pow(
2,
8 * byteLength) -
1
9322 checkInt(this, value, offset, byteLength, maxBytes,
0)
9327 this[offset] = value &
0xFF
9328 while (++i < byteLength && (mul *=
0x100)) {
9329 this[offset + i] = (value / mul) &
0xFF
9332 return offset + byteLength
9335 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
9337 offset = offset
>>> 0
9338 byteLength = byteLength
>>> 0
9340 var maxBytes = Math.pow(
2,
8 * byteLength) -
1
9341 checkInt(this, value, offset, byteLength, maxBytes,
0)
9344 var i = byteLength -
1
9346 this[offset + i] = value &
0xFF
9347 while (--i
>=
0 && (mul *=
0x100)) {
9348 this[offset + i] = (value / mul) &
0xFF
9351 return offset + byteLength
9354 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
9356 offset = offset
>>> 0
9357 if (!noAssert) checkInt(this, value, offset,
1,
0xff,
0)
9358 this[offset] = (value &
0xff)
9362 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
9364 offset = offset
>>> 0
9365 if (!noAssert) checkInt(this, value, offset,
2,
0xffff,
0)
9366 this[offset] = (value &
0xff)
9367 this[offset +
1] = (value
>>> 8)
9371 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
9373 offset = offset
>>> 0
9374 if (!noAssert) checkInt(this, value, offset,
2,
0xffff,
0)
9375 this[offset] = (value
>>> 8)
9376 this[offset +
1] = (value &
0xff)
9380 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
9382 offset = offset
>>> 0
9383 if (!noAssert) checkInt(this, value, offset,
4,
0xffffffff,
0)
9384 this[offset +
3] = (value
>>> 24)
9385 this[offset +
2] = (value
>>> 16)
9386 this[offset +
1] = (value
>>> 8)
9387 this[offset] = (value &
0xff)
9391 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
9393 offset = offset
>>> 0
9394 if (!noAssert) checkInt(this, value, offset,
4,
0xffffffff,
0)
9395 this[offset] = (value
>>> 24)
9396 this[offset +
1] = (value
>>> 16)
9397 this[offset +
2] = (value
>>> 8)
9398 this[offset +
3] = (value &
0xff)
9402 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
9404 offset = offset
>>> 0
9406 var limit = Math.pow(
2, (
8 * byteLength) -
1)
9408 checkInt(this, value, offset, byteLength, limit -
1, -limit)
9414 this[offset] = value &
0xFF
9415 while (++i < byteLength && (mul *=
0x100)) {
9416 if (value <
0 && sub ===
0 && this[offset + i -
1] !==
0) {
9419 this[offset + i] = ((value / mul)
>> 0) - sub &
0xFF
9422 return offset + byteLength
9425 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
9427 offset = offset
>>> 0
9429 var limit = Math.pow(
2, (
8 * byteLength) -
1)
9431 checkInt(this, value, offset, byteLength, limit -
1, -limit)
9434 var i = byteLength -
1
9437 this[offset + i] = value &
0xFF
9438 while (--i
>=
0 && (mul *=
0x100)) {
9439 if (value <
0 && sub ===
0 && this[offset + i +
1] !==
0) {
9442 this[offset + i] = ((value / mul)
>> 0) - sub &
0xFF
9445 return offset + byteLength
9448 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
9450 offset = offset
>>> 0
9451 if (!noAssert) checkInt(this, value, offset,
1,
0x7f, -
0x80)
9452 if (value <
0) value =
0xff + value +
1
9453 this[offset] = (value &
0xff)
9457 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
9459 offset = offset
>>> 0
9460 if (!noAssert) checkInt(this, value, offset,
2,
0x7fff, -
0x8000)
9461 this[offset] = (value &
0xff)
9462 this[offset +
1] = (value
>>> 8)
9466 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
9468 offset = offset
>>> 0
9469 if (!noAssert) checkInt(this, value, offset,
2,
0x7fff, -
0x8000)
9470 this[offset] = (value
>>> 8)
9471 this[offset +
1] = (value &
0xff)
9475 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
9477 offset = offset
>>> 0
9478 if (!noAssert) checkInt(this, value, offset,
4,
0x7fffffff, -
0x80000000)
9479 this[offset] = (value &
0xff)
9480 this[offset +
1] = (value
>>> 8)
9481 this[offset +
2] = (value
>>> 16)
9482 this[offset +
3] = (value
>>> 24)
9486 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
9488 offset = offset
>>> 0
9489 if (!noAssert) checkInt(this, value, offset,
4,
0x7fffffff, -
0x80000000)
9490 if (value <
0) value =
0xffffffff + value +
1
9491 this[offset] = (value
>>> 24)
9492 this[offset +
1] = (value
>>> 16)
9493 this[offset +
2] = (value
>>> 8)
9494 this[offset +
3] = (value &
0xff)
9498 function checkIEEE754 (buf, value, offset, ext, max, min) {
9499 if (offset + ext
> buf.length) throw new RangeError('Index out of range')
9500 if (offset <
0) throw new RangeError('Index out of range')
9503 function writeFloat (buf, value, offset, littleEndian, noAssert) {
9505 offset = offset
>>> 0
9507 checkIEEE754(buf, value, offset,
4,
3.4028234663852886e+38, -
3.4028234663852886e+38)
9509 ieee754.write(buf, value, offset, littleEndian,
23,
4)
9513 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
9514 return writeFloat(this, value, offset, true, noAssert)
9517 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
9518 return writeFloat(this, value, offset, false, noAssert)
9521 function writeDouble (buf, value, offset, littleEndian, noAssert) {
9523 offset = offset
>>> 0
9525 checkIEEE754(buf, value, offset,
8,
1.7976931348623157E+308, -
1.7976931348623157E+308)
9527 ieee754.write(buf, value, offset, littleEndian,
52,
8)
9531 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
9532 return writeDouble(this, value, offset, true, noAssert)
9535 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
9536 return writeDouble(this, value, offset, false, noAssert)
9539 // copy(targetBuffer, targetStart=
0, sourceStart=
0, sourceEnd=buffer.length)
9540 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
9541 if (!start) start =
0
9542 if (!end && end !==
0) end = this.length
9543 if (targetStart
>= target.length) targetStart = target.length
9544 if (!targetStart) targetStart =
0
9545 if (end
> 0 && end < start) end = start
9547 // Copy
0 bytes; we're done
9548 if (end === start) return
0
9549 if (target.length ===
0 || this.length ===
0) return
0
9551 // Fatal error conditions
9552 if (targetStart <
0) {
9553 throw new RangeError('targetStart out of bounds')
9555 if (start <
0 || start
>= this.length) throw new RangeError('sourceStart out of bounds')
9556 if (end <
0) throw new RangeError('sourceEnd out of bounds')
9559 if (end
> this.length) end = this.length
9560 if (target.length - targetStart < end - start) {
9561 end = target.length - targetStart + start
9564 var len = end - start
9567 if (this === target && start < targetStart && targetStart < end) {
9568 // descending copy from end
9569 for (i = len -
1; i
>=
0; --i) {
9570 target[i + targetStart] = this[i + start]
9572 } else if (len <
1000) {
9573 // ascending copy from start
9574 for (i =
0; i < len; ++i) {
9575 target[i + targetStart] = this[i + start]
9578 Uint8Array.prototype.set.call(
9580 this.subarray(start, start + len),
9589 // buffer.fill(number[, offset[, end]])
9590 // buffer.fill(buffer[, offset[, end]])
9591 // buffer.fill(string[, offset[, end]][, encoding])
9592 Buffer.prototype.fill = function fill (val, start, end, encoding) {
9593 // Handle string cases:
9594 if (typeof val === 'string') {
9595 if (typeof start === 'string') {
9599 } else if (typeof end === 'string') {
9603 if (val.length ===
1) {
9604 var code = val.charCodeAt(
0)
9609 if (encoding !== undefined && typeof encoding !== 'string') {
9610 throw new TypeError('encoding must be a string')
9612 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
9613 throw new TypeError('Unknown encoding: ' + encoding)
9615 } else if (typeof val === 'number') {
9619 // Invalid ranges are not set to a default, so can range check early.
9620 if (start <
0 || this.length < start || this.length < end) {
9621 throw new RangeError('Out of range index')
9629 end = end === undefined ? this.length : end
>>> 0
9634 if (typeof val === 'number') {
9635 for (i = start; i < end; ++i) {
9639 var bytes = Buffer.isBuffer(val)
9641 : new Buffer(val, encoding)
9642 var len = bytes.length
9643 for (i =
0; i < end - start; ++i) {
9644 this[i + start] = bytes[i % len]
9654 var INVALID_BASE64_RE = /[^+/
0-
9A-Za-z-_]/g
9656 function base64clean (str) {
9657 // Node strips out invalid characters like \n and \t from the string, base64-js does not
9658 str = str.trim().replace(INVALID_BASE64_RE, '')
9659 // Node converts strings with length <
2 to ''
9660 if (str.length <
2) return ''
9661 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
9662 while (str.length %
4 !==
0) {
9668 function toHex (n) {
9669 if (n <
16) return '
0' + n.toString(
16)
9670 return n.toString(
16)
9673 function utf8ToBytes (string, units) {
9674 units = units || Infinity
9676 var length = string.length
9677 var leadSurrogate = null
9680 for (var i =
0; i < length; ++i) {
9681 codePoint = string.charCodeAt(i)
9683 // is surrogate component
9684 if (codePoint
> 0xD7FF && codePoint <
0xE000) {
9685 // last char was a lead
9686 if (!leadSurrogate) {
9688 if (codePoint
> 0xDBFF) {
9690 if ((units -=
3)
> -
1) bytes.push(
0xEF,
0xBF,
0xBD)
9692 } else if (i +
1 === length) {
9694 if ((units -=
3)
> -
1) bytes.push(
0xEF,
0xBF,
0xBD)
9699 leadSurrogate = codePoint
9705 if (codePoint <
0xDC00) {
9706 if ((units -=
3)
> -
1) bytes.push(
0xEF,
0xBF,
0xBD)
9707 leadSurrogate = codePoint
9711 // valid surrogate pair
9712 codePoint = (leadSurrogate -
0xD800 <<
10 | codePoint -
0xDC00) +
0x10000
9713 } else if (leadSurrogate) {
9714 // valid bmp char, but last char was a lead
9715 if ((units -=
3)
> -
1) bytes.push(
0xEF,
0xBF,
0xBD)
9718 leadSurrogate = null
9721 if (codePoint <
0x80) {
9722 if ((units -=
1) <
0) break
9723 bytes.push(codePoint)
9724 } else if (codePoint <
0x800) {
9725 if ((units -=
2) <
0) break
9727 codePoint
>> 0x6 |
0xC0,
9728 codePoint &
0x3F |
0x80
9730 } else if (codePoint <
0x10000) {
9731 if ((units -=
3) <
0) break
9733 codePoint
>> 0xC |
0xE0,
9734 codePoint
>> 0x6 &
0x3F |
0x80,
9735 codePoint &
0x3F |
0x80
9737 } else if (codePoint <
0x110000) {
9738 if ((units -=
4) <
0) break
9740 codePoint
>> 0x12 |
0xF0,
9741 codePoint
>> 0xC &
0x3F |
0x80,
9742 codePoint
>> 0x6 &
0x3F |
0x80,
9743 codePoint &
0x3F |
0x80
9746 throw new Error('Invalid code point')
9753 function asciiToBytes (str) {
9755 for (var i =
0; i < str.length; ++i) {
9756 // Node's code seems to be doing this and not &
0x7F..
9757 byteArray.push(str.charCodeAt(i) &
0xFF)
9762 function utf16leToBytes (str, units) {
9765 for (var i =
0; i < str.length; ++i) {
9766 if ((units -=
2) <
0) break
9768 c = str.charCodeAt(i)
9778 function base64ToBytes (str) {
9779 return base64.toByteArray(base64clean(str))
9782 function blitBuffer (src, dst, offset, length) {
9783 for (var i =
0; i < length; ++i) {
9784 if ((i + offset
>= dst.length) || (i
>= src.length)) break
9785 dst[i + offset] = src[i]
9790 // Node
0.10 supports `ArrayBuffer` but lacks `ArrayBuffer.isView`
9791 function isArrayBufferView (obj) {
9792 return (typeof ArrayBuffer.isView === 'function') && ArrayBuffer.isView(obj)
9795 function numberIsNaN (obj) {
9796 return obj !== obj // eslint-disable-line no-self-compare
9799 },{"base64-js":
2,"ieee754":
8}],
6:[function(require,module,exports){
9801 // Copyright Joyent, Inc. and other Node contributors.
9803 // Permission is hereby granted, free of charge, to any person obtaining a
9804 // copy of this software and associated documentation files (the
9805 // "Software"), to deal in the Software without restriction, including
9806 // without limitation the rights to use, copy, modify, merge, publish,
9807 // distribute, sublicense, and/or sell copies of the Software, and to permit
9808 // persons to whom the Software is furnished to do so, subject to the
9809 // following conditions:
9811 // The above copyright notice and this permission notice shall be included
9812 // in all copies or substantial portions of the Software.
9814 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
9815 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
9816 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
9817 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
9818 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
9819 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
9820 // USE OR OTHER DEALINGS IN THE SOFTWARE.
9822 // NOTE: These type checking functions intentionally don't use `instanceof`
9823 // because it is fragile and can be easily faked with `Object.create()`.
9825 function isArray(arg) {
9826 if (Array.isArray) {
9827 return Array.isArray(arg);
9829 return objectToString(arg) === '[object Array]';
9831 exports.isArray = isArray;
9833 function isBoolean(arg) {
9834 return typeof arg === 'boolean';
9836 exports.isBoolean = isBoolean;
9838 function isNull(arg) {
9839 return arg === null;
9841 exports.isNull = isNull;
9843 function isNullOrUndefined(arg) {
9846 exports.isNullOrUndefined = isNullOrUndefined;
9848 function isNumber(arg) {
9849 return typeof arg === 'number';
9851 exports.isNumber = isNumber;
9853 function isString(arg) {
9854 return typeof arg === 'string';
9856 exports.isString = isString;
9858 function isSymbol(arg) {
9859 return typeof arg === 'symbol';
9861 exports.isSymbol = isSymbol;
9863 function isUndefined(arg) {
9864 return arg === void
0;
9866 exports.isUndefined = isUndefined;
9868 function isRegExp(re) {
9869 return objectToString(re) === '[object RegExp]';
9871 exports.isRegExp = isRegExp;
9873 function isObject(arg) {
9874 return typeof arg === 'object' && arg !== null;
9876 exports.isObject = isObject;
9878 function isDate(d) {
9879 return objectToString(d) === '[object Date]';
9881 exports.isDate = isDate;
9883 function isError(e) {
9884 return (objectToString(e) === '[object Error]' || e instanceof Error);
9886 exports.isError = isError;
9888 function isFunction(arg) {
9889 return typeof arg === 'function';
9891 exports.isFunction = isFunction;
9893 function isPrimitive(arg) {
9894 return arg === null ||
9895 typeof arg === 'boolean' ||
9896 typeof arg === 'number' ||
9897 typeof arg === 'string' ||
9898 typeof arg === 'symbol' || // ES6 symbol
9899 typeof arg === 'undefined';
9901 exports.isPrimitive = isPrimitive;
9903 exports.isBuffer = Buffer.isBuffer;
9905 function objectToString(o) {
9906 return Object.prototype.toString.call(o);
9909 }).call(this,{"isBuffer":require("../../is-buffer/index.js")})
9910 },{"../../is-buffer/index.js":
10}],
7:[function(require,module,exports){
9911 // Copyright Joyent, Inc. and other Node contributors.
9913 // Permission is hereby granted, free of charge, to any person obtaining a
9914 // copy of this software and associated documentation files (the
9915 // "Software"), to deal in the Software without restriction, including
9916 // without limitation the rights to use, copy, modify, merge, publish,
9917 // distribute, sublicense, and/or sell copies of the Software, and to permit
9918 // persons to whom the Software is furnished to do so, subject to the
9919 // following conditions:
9921 // The above copyright notice and this permission notice shall be included
9922 // in all copies or substantial portions of the Software.
9924 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
9925 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
9926 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
9927 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
9928 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
9929 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
9930 // USE OR OTHER DEALINGS IN THE SOFTWARE.
9932 function EventEmitter() {
9933 this._events = this._events || {};
9934 this._maxListeners = this._maxListeners || undefined;
9936 module.exports = EventEmitter;
9938 // Backwards-compat with node
0.10.x
9939 EventEmitter.EventEmitter = EventEmitter;
9941 EventEmitter.prototype._events = undefined;
9942 EventEmitter.prototype._maxListeners = undefined;
9944 // By default EventEmitters will print a warning if more than
10 listeners are
9945 // added to it. This is a useful default which helps finding memory leaks.
9946 EventEmitter.defaultMaxListeners =
10;
9948 // Obviously not all Emitters should be limited to
10. This function allows
9949 // that to be increased. Set to zero for unlimited.
9950 EventEmitter.prototype.setMaxListeners = function(n) {
9951 if (!isNumber(n) || n <
0 || isNaN(n))
9952 throw TypeError('n must be a positive number');
9953 this._maxListeners = n;
9957 EventEmitter.prototype.emit = function(type) {
9958 var er, handler, len, args, i, listeners;
9963 // If there is no 'error' event listener then throw.
9964 if (type === 'error') {
9965 if (!this._events.error ||
9966 (isObject(this._events.error) && !this._events.error.length)) {
9968 if (er instanceof Error) {
9969 throw er; // Unhandled 'error' event
9971 // At least give some kind of context to the user
9972 var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
9979 handler = this._events[type];
9981 if (isUndefined(handler))
9984 if (isFunction(handler)) {
9985 switch (arguments.length) {
9991 handler.call(this, arguments[
1]);
9994 handler.call(this, arguments[
1], arguments[
2]);
9998 args = Array.prototype.slice.call(arguments,
1);
9999 handler.apply(this, args);
10001 } else if (isObject(handler)) {
10002 args = Array.prototype.slice.call(arguments,
1);
10003 listeners = handler.slice();
10004 len = listeners.length;
10005 for (i =
0; i < len; i++)
10006 listeners[i].apply(this, args);
10012 EventEmitter.prototype.addListener = function(type, listener) {
10015 if (!isFunction(listener))
10016 throw TypeError('listener must be a function');
10021 // To avoid recursion in the case that type === "newListener"! Before
10022 // adding it to the listeners, first emit "newListener".
10023 if (this._events.newListener)
10024 this.emit('newListener', type,
10025 isFunction(listener.listener) ?
10026 listener.listener : listener);
10028 if (!this._events[type])
10029 // Optimize the case of one listener. Don't need the extra array object.
10030 this._events[type] = listener;
10031 else if (isObject(this._events[type]))
10032 // If we've already got an array, just append.
10033 this._events[type].push(listener);
10035 // Adding the second element, need to change to array.
10036 this._events[type] = [this._events[type], listener];
10038 // Check for listener leak
10039 if (isObject(this._events[type]) && !this._events[type].warned) {
10040 if (!isUndefined(this._maxListeners)) {
10041 m = this._maxListeners;
10043 m = EventEmitter.defaultMaxListeners;
10046 if (m && m
> 0 && this._events[type].length
> m) {
10047 this._events[type].warned = true;
10048 console.error('(node) warning: possible EventEmitter memory ' +
10049 'leak detected. %d listeners added. ' +
10050 'Use emitter.setMaxListeners() to increase limit.',
10051 this._events[type].length);
10052 if (typeof console.trace === 'function') {
10053 // not supported in IE
10
10062 EventEmitter.prototype.on = EventEmitter.prototype.addListener;
10064 EventEmitter.prototype.once = function(type, listener) {
10065 if (!isFunction(listener))
10066 throw TypeError('listener must be a function');
10071 this.removeListener(type, g);
10075 listener.apply(this, arguments);
10079 g.listener = listener;
10085 // emits a 'removeListener' event iff the listener was removed
10086 EventEmitter.prototype.removeListener = function(type, listener) {
10087 var list, position, length, i;
10089 if (!isFunction(listener))
10090 throw TypeError('listener must be a function');
10092 if (!this._events || !this._events[type])
10095 list = this._events[type];
10096 length = list.length;
10099 if (list === listener ||
10100 (isFunction(list.listener) && list.listener === listener)) {
10101 delete this._events[type];
10102 if (this._events.removeListener)
10103 this.emit('removeListener', type, listener);
10105 } else if (isObject(list)) {
10106 for (i = length; i--
> 0;) {
10107 if (list[i] === listener ||
10108 (list[i].listener && list[i].listener === listener)) {
10117 if (list.length ===
1) {
10119 delete this._events[type];
10121 list.splice(position,
1);
10124 if (this._events.removeListener)
10125 this.emit('removeListener', type, listener);
10131 EventEmitter.prototype.removeAllListeners = function(type) {
10132 var key, listeners;
10137 // not listening for removeListener, no need to emit
10138 if (!this._events.removeListener) {
10139 if (arguments.length ===
0)
10141 else if (this._events[type])
10142 delete this._events[type];
10146 // emit removeListener for all listeners on all events
10147 if (arguments.length ===
0) {
10148 for (key in this._events) {
10149 if (key === 'removeListener') continue;
10150 this.removeAllListeners(key);
10152 this.removeAllListeners('removeListener');
10157 listeners = this._events[type];
10159 if (isFunction(listeners)) {
10160 this.removeListener(type, listeners);
10161 } else if (listeners) {
10163 while (listeners.length)
10164 this.removeListener(type, listeners[listeners.length -
1]);
10166 delete this._events[type];
10171 EventEmitter.prototype.listeners = function(type) {
10173 if (!this._events || !this._events[type])
10175 else if (isFunction(this._events[type]))
10176 ret = [this._events[type]];
10178 ret = this._events[type].slice();
10182 EventEmitter.prototype.listenerCount = function(type) {
10183 if (this._events) {
10184 var evlistener = this._events[type];
10186 if (isFunction(evlistener))
10188 else if (evlistener)
10189 return evlistener.length;
10194 EventEmitter.listenerCount = function(emitter, type) {
10195 return emitter.listenerCount(type);
10198 function isFunction(arg) {
10199 return typeof arg === 'function';
10202 function isNumber(arg) {
10203 return typeof arg === 'number';
10206 function isObject(arg) {
10207 return typeof arg === 'object' && arg !== null;
10210 function isUndefined(arg) {
10211 return arg === void
0;
10214 },{}],
8:[function(require,module,exports){
10215 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
10217 var eLen = nBytes *
8 - mLen -
1
10218 var eMax = (
1 << eLen) -
1
10219 var eBias = eMax
>> 1
10221 var i = isLE ? (nBytes -
1) :
0
10222 var d = isLE ? -
1 :
1
10223 var s = buffer[offset + i]
10227 e = s & ((
1 << (-nBits)) -
1)
10230 for (; nBits
> 0; e = e *
256 + buffer[offset + i], i += d, nBits -=
8) {}
10232 m = e & ((
1 << (-nBits)) -
1)
10235 for (; nBits
> 0; m = m *
256 + buffer[offset + i], i += d, nBits -=
8) {}
10239 } else if (e === eMax) {
10240 return m ? NaN : ((s ? -
1 :
1) * Infinity)
10242 m = m + Math.pow(
2, mLen)
10245 return (s ? -
1 :
1) * m * Math.pow(
2, e - mLen)
10248 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
10250 var eLen = nBytes *
8 - mLen -
1
10251 var eMax = (
1 << eLen) -
1
10252 var eBias = eMax
>> 1
10253 var rt = (mLen ===
23 ? Math.pow(
2, -
24) - Math.pow(
2, -
77) :
0)
10254 var i = isLE ?
0 : (nBytes -
1)
10255 var d = isLE ?
1 : -
1
10256 var s = value <
0 || (value ===
0 &&
1 / value <
0) ?
1 :
0
10258 value = Math.abs(value)
10260 if (isNaN(value) || value === Infinity) {
10261 m = isNaN(value) ?
1 :
0
10264 e = Math.floor(Math.log(value) / Math.LN2)
10265 if (value * (c = Math.pow(
2, -e)) <
1) {
10269 if (e + eBias
>=
1) {
10272 value += rt * Math.pow(
2,
1 - eBias)
10274 if (value * c
>=
2) {
10279 if (e + eBias
>= eMax) {
10282 } else if (e + eBias
>=
1) {
10283 m = (value * c -
1) * Math.pow(
2, mLen)
10286 m = value * Math.pow(
2, eBias -
1) * Math.pow(
2, mLen)
10291 for (; mLen
>=
8; buffer[offset + i] = m &
0xff, i += d, m /=
256, mLen -=
8) {}
10293 e = (e << mLen) | m
10295 for (; eLen
> 0; buffer[offset + i] = e &
0xff, i += d, e /=
256, eLen -=
8) {}
10297 buffer[offset + i - d] |= s *
128
10300 },{}],
9:[function(require,module,exports){
10301 if (typeof Object.create === 'function') {
10302 // implementation from standard node.js 'util' module
10303 module.exports = function inherits(ctor, superCtor) {
10304 ctor.super_ = superCtor
10305 ctor.prototype = Object.create(superCtor.prototype, {
10315 // old school shim for old browsers
10316 module.exports = function inherits(ctor, superCtor) {
10317 ctor.super_ = superCtor
10318 var TempCtor = function () {}
10319 TempCtor.prototype = superCtor.prototype
10320 ctor.prototype = new TempCtor()
10321 ctor.prototype.constructor = ctor
10325 },{}],
10:[function(require,module,exports){
10327 * Determine if an object is a Buffer
10329 * @author Feross Aboukhadijeh
<feross@feross.org
> <http://feross.org
>
10333 // The _isBuffer check is for Safari
5-
7 support, because it's missing
10334 // Object.prototype.constructor. Remove this eventually
10335 module.exports = function (obj) {
10336 return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
10339 function isBuffer (obj) {
10340 return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
10343 // For Node v0.10 support. Remove this eventually.
10344 function isSlowBuffer (obj) {
10345 return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(
0,
0))
10348 },{}],
11:[function(require,module,exports){
10349 var toString = {}.toString;
10351 module.exports = Array.isArray || function (arr) {
10352 return toString.call(arr) == '[object Array]';
10355 },{}],
12:[function(require,module,exports){
10356 (function (process){
10359 if (!process.version ||
10360 process.version.indexOf('v0.') ===
0 ||
10361 process.version.indexOf('v1.') ===
0 && process.version.indexOf('v1.8.') !==
0) {
10362 module.exports = nextTick;
10364 module.exports = process.nextTick;
10367 function nextTick(fn, arg1, arg2, arg3) {
10368 if (typeof fn !== 'function') {
10369 throw new TypeError('"callback" argument must be a function');
10371 var len = arguments.length;
10376 return process.nextTick(fn);
10378 return process.nextTick(function afterTickOne() {
10379 fn.call(null, arg1);
10382 return process.nextTick(function afterTickTwo() {
10383 fn.call(null, arg1, arg2);
10386 return process.nextTick(function afterTickThree() {
10387 fn.call(null, arg1, arg2, arg3);
10390 args = new Array(len -
1);
10392 while (i < args.length) {
10393 args[i++] = arguments[i];
10395 return process.nextTick(function afterTick() {
10396 fn.apply(null, args);
10401 }).call(this,require('_process'))
10402 },{"_process":
13}],
13:[function(require,module,exports){
10403 // shim for using process in browser
10404 var process = module.exports = {};
10406 // cached from whatever global is present so that test runners that stub it
10407 // don't break things. But we need to wrap it in a try catch in case it is
10408 // wrapped in strict mode code which doesn't define any globals. It's inside a
10409 // function because try/catches deoptimize in certain engines.
10411 var cachedSetTimeout;
10412 var cachedClearTimeout;
10414 function defaultSetTimout() {
10415 throw new Error('setTimeout has not been defined');
10417 function defaultClearTimeout () {
10418 throw new Error('clearTimeout has not been defined');
10422 if (typeof setTimeout === 'function') {
10423 cachedSetTimeout = setTimeout;
10425 cachedSetTimeout = defaultSetTimout;
10428 cachedSetTimeout = defaultSetTimout;
10431 if (typeof clearTimeout === 'function') {
10432 cachedClearTimeout = clearTimeout;
10434 cachedClearTimeout = defaultClearTimeout;
10437 cachedClearTimeout = defaultClearTimeout;
10440 function runTimeout(fun) {
10441 if (cachedSetTimeout === setTimeout) {
10442 //normal enviroments in sane situations
10443 return setTimeout(fun,
0);
10445 // if setTimeout wasn't available but was latter defined
10446 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
10447 cachedSetTimeout = setTimeout;
10448 return setTimeout(fun,
0);
10451 // when when somebody has screwed with setTimeout but no I.E. maddness
10452 return cachedSetTimeout(fun,
0);
10455 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
10456 return cachedSetTimeout.call(null, fun,
0);
10458 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
10459 return cachedSetTimeout.call(this, fun,
0);
10465 function runClearTimeout(marker) {
10466 if (cachedClearTimeout === clearTimeout) {
10467 //normal enviroments in sane situations
10468 return clearTimeout(marker);
10470 // if clearTimeout wasn't available but was latter defined
10471 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
10472 cachedClearTimeout = clearTimeout;
10473 return clearTimeout(marker);
10476 // when when somebody has screwed with setTimeout but no I.E. maddness
10477 return cachedClearTimeout(marker);
10480 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
10481 return cachedClearTimeout.call(null, marker);
10483 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
10484 // Some versions of I.E. have different rules for clearTimeout vs setTimeout
10485 return cachedClearTimeout.call(this, marker);
10493 var draining = false;
10495 var queueIndex = -
1;
10497 function cleanUpNextTick() {
10498 if (!draining || !currentQueue) {
10502 if (currentQueue.length) {
10503 queue = currentQueue.concat(queue);
10507 if (queue.length) {
10512 function drainQueue() {
10516 var timeout = runTimeout(cleanUpNextTick);
10519 var len = queue.length;
10521 currentQueue = queue;
10523 while (++queueIndex < len) {
10524 if (currentQueue) {
10525 currentQueue[queueIndex].run();
10529 len = queue.length;
10531 currentQueue = null;
10533 runClearTimeout(timeout);
10536 process.nextTick = function (fun) {
10537 var args = new Array(arguments.length -
1);
10538 if (arguments.length
> 1) {
10539 for (var i =
1; i < arguments.length; i++) {
10540 args[i -
1] = arguments[i];
10543 queue.push(new Item(fun, args));
10544 if (queue.length ===
1 && !draining) {
10545 runTimeout(drainQueue);
10549 // v8 likes predictible objects
10550 function Item(fun, array) {
10552 this.array = array;
10554 Item.prototype.run = function () {
10555 this.fun.apply(null, this.array);
10557 process.title = 'browser';
10558 process.browser = true;
10561 process.version = ''; // empty string to avoid regexp issues
10562 process.versions = {};
10567 process.addListener = noop;
10568 process.once = noop;
10569 process.off = noop;
10570 process.removeListener = noop;
10571 process.removeAllListeners = noop;
10572 process.emit = noop;
10573 process.prependListener = noop;
10574 process.prependOnceListener = noop;
10576 process.listeners = function (name) { return [] }
10578 process.binding = function (name) {
10579 throw new Error('process.binding is not supported');
10582 process.cwd = function () { return '/' };
10583 process.chdir = function (dir) {
10584 throw new Error('process.chdir is not supported');
10586 process.umask = function() { return
0; };
10588 },{}],
14:[function(require,module,exports){
10589 module.exports = require('./lib/_stream_duplex.js');
10591 },{
"./lib/_stream_duplex.js":
15}],
15:[function(require,module,exports){
10592 // a duplex stream is just a stream that is both readable and writable.
10593 // Since JS doesn't have multiple prototypal inheritance, this class
10594 // prototypally inherits from Readable, and then parasitically from
10601 var objectKeys = Object.keys || function (obj) {
10603 for (var key in obj) {
10609 module.exports = Duplex;
10612 var processNextTick = require('process-nextick-args');
10616 var util = require('core-util-is');
10617 util.inherits = require('inherits');
10620 var Readable = require('./_stream_readable');
10621 var Writable = require('./_stream_writable');
10623 util.inherits(Duplex, Readable);
10625 var keys = objectKeys(Writable.prototype);
10626 for (var v =
0; v < keys.length; v++) {
10627 var method = keys[v];
10628 if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
10631 function Duplex(options) {
10632 if (!(this instanceof Duplex)) return new Duplex(options);
10634 Readable.call(this, options);
10635 Writable.call(this, options);
10637 if (options && options.readable === false) this.readable = false;
10639 if (options && options.writable === false) this.writable = false;
10641 this.allowHalfOpen = true;
10642 if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
10644 this.once('end', onend);
10647 // the no-half-open enforcer
10649 // if we allow half-open state, or if the writable side ended,
10651 if (this.allowHalfOpen || this._writableState.ended) return;
10653 // no more data can be written.
10654 // But allow more writes to happen in this tick.
10655 processNextTick(onEndNT, this);
10658 function onEndNT(self) {
10662 function forEach(xs, f) {
10663 for (var i =
0, l = xs.length; i < l; i++) {
10667 },{"./_stream_readable":
17,"./_stream_writable":
19,"core-util-is":
6,"inherits":
9,"process-nextick-args":
12}],
16:[function(require,module,exports){
10668 // a passthrough stream.
10669 // basically just the most minimal sort of Transform stream.
10670 // Every written chunk gets output as-is.
10674 module.exports = PassThrough;
10676 var Transform = require('./_stream_transform');
10679 var util = require('core-util-is');
10680 util.inherits = require('inherits');
10683 util.inherits(PassThrough, Transform);
10685 function PassThrough(options) {
10686 if (!(this instanceof PassThrough)) return new PassThrough(options);
10688 Transform.call(this, options);
10691 PassThrough.prototype._transform = function (chunk, encoding, cb) {
10694 },{"./_stream_transform":
18,"core-util-is":
6,"inherits":
9}],
17:[function(require,module,exports){
10695 (function (process){
10698 module.exports = Readable;
10701 var processNextTick = require('process-nextick-args');
10705 var isArray = require('isarray');
10712 Readable.ReadableState = ReadableState;
10715 var EE = require('events').EventEmitter;
10717 var EElistenerCount = function (emitter, type) {
10718 return emitter.listeners(type).length;
10723 var Stream = require('./internal/streams/stream');
10726 var Buffer = require('buffer').Buffer;
10728 var bufferShim = require('buffer-shims');
10732 var util = require('core-util-is');
10733 util.inherits = require('inherits');
10737 var debugUtil = require('util');
10738 var debug = void
0;
10739 if (debugUtil && debugUtil.debuglog) {
10740 debug = debugUtil.debuglog('stream');
10742 debug = function () {};
10746 var BufferList = require('./internal/streams/BufferList');
10749 util.inherits(Readable, Stream);
10751 var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];
10753 function prependListener(emitter, event, fn) {
10754 // Sadly this is not cacheable as some libraries bundle their own
10755 // event emitter implementation with them.
10756 if (typeof emitter.prependListener === 'function') {
10757 return emitter.prependListener(event, fn);
10759 // This is a hack to make sure that our error handler is attached before any
10760 // userland ones. NEVER DO THIS. This is here only because this code needs
10761 // to continue to work with older versions of Node.js that do not include
10762 // the prependListener() method. The goal is to eventually remove this hack.
10763 if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];
10767 function ReadableState(options, stream) {
10768 Duplex = Duplex || require('./_stream_duplex');
10770 options = options || {};
10772 // object stream flag. Used to make read(n) ignore n and to
10773 // make all the buffer merging and length checks go away
10774 this.objectMode = !!options.objectMode;
10776 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
10778 // the point at which it stops calling _read() to fill the buffer
10779 // Note:
0 is a valid value, means "don't call _read preemptively ever"
10780 var hwm = options.highWaterMark;
10781 var defaultHwm = this.objectMode ?
16 :
16 *
1024;
10782 this.highWaterMark = hwm || hwm ===
0 ? hwm : defaultHwm;
10785 this.highWaterMark = ~~this.highWaterMark;
10787 // A linked list is used to store data chunks instead of an array because the
10788 // linked list can remove elements from the beginning faster than
10790 this.buffer = new BufferList();
10793 this.pipesCount =
0;
10794 this.flowing = null;
10795 this.ended = false;
10796 this.endEmitted = false;
10797 this.reading = false;
10799 // a flag to be able to tell if the onwrite cb is called immediately,
10800 // or on a later tick. We set this to true at first, because any
10801 // actions that shouldn't happen until "later" should generally also
10802 // not happen before the first write call.
10805 // whenever we return null, then we set a flag to say
10806 // that we're awaiting a 'readable' event emission.
10807 this.needReadable = false;
10808 this.emittedReadable = false;
10809 this.readableListening = false;
10810 this.resumeScheduled = false;
10812 // Crypto is kind of old and crusty. Historically, its default string
10813 // encoding is 'binary' so we have to make this configurable.
10814 // Everything else in the universe uses 'utf8', though.
10815 this.defaultEncoding = options.defaultEncoding || 'utf8';
10817 // when piping, we only care about 'readable' events that happen
10818 // after read()ing all the bytes and not getting any pushback.
10819 this.ranOut = false;
10821 // the number of writers that are awaiting a drain event in .pipe()s
10822 this.awaitDrain =
0;
10824 // if true, a maybeReadMore has been scheduled
10825 this.readingMore = false;
10827 this.decoder = null;
10828 this.encoding = null;
10829 if (options.encoding) {
10830 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
10831 this.decoder = new StringDecoder(options.encoding);
10832 this.encoding = options.encoding;
10836 function Readable(options) {
10837 Duplex = Duplex || require('./_stream_duplex');
10839 if (!(this instanceof Readable)) return new Readable(options);
10841 this._readableState = new ReadableState(options, this);
10844 this.readable = true;
10846 if (options && typeof options.read === 'function') this._read = options.read;
10851 // Manually shove something into the read() buffer.
10852 // This returns true if the highWaterMark has not been hit yet,
10853 // similar to how Writable.write() returns true if you should
10854 // write() some more.
10855 Readable.prototype.push = function (chunk, encoding) {
10856 var state = this._readableState;
10858 if (!state.objectMode && typeof chunk === 'string') {
10859 encoding = encoding || state.defaultEncoding;
10860 if (encoding !== state.encoding) {
10861 chunk = bufferShim.from(chunk, encoding);
10866 return readableAddChunk(this, state, chunk, encoding, false);
10869 // Unshift should *always* be something directly out of read()
10870 Readable.prototype.unshift = function (chunk) {
10871 var state = this._readableState;
10872 return readableAddChunk(this, state, chunk, '', true);
10875 Readable.prototype.isPaused = function () {
10876 return this._readableState.flowing === false;
10879 function readableAddChunk(stream, state, chunk, encoding, addToFront) {
10880 var er = chunkInvalid(state, chunk);
10882 stream.emit('error', er);
10883 } else if (chunk === null) {
10884 state.reading = false;
10885 onEofChunk(stream, state);
10886 } else if (state.objectMode || chunk && chunk.length
> 0) {
10887 if (state.ended && !addToFront) {
10888 var e = new Error('stream.push() after EOF');
10889 stream.emit('error', e);
10890 } else if (state.endEmitted && addToFront) {
10891 var _e = new Error('stream.unshift() after end event');
10892 stream.emit('error', _e);
10895 if (state.decoder && !addToFront && !encoding) {
10896 chunk = state.decoder.write(chunk);
10897 skipAdd = !state.objectMode && chunk.length ===
0;
10900 if (!addToFront) state.reading = false;
10902 // Don't add to the buffer if we've decoded to an empty string chunk and
10903 // we're not in object mode
10905 // if we want the data now, just emit it.
10906 if (state.flowing && state.length ===
0 && !state.sync) {
10907 stream.emit('data', chunk);
10910 // update the buffer info.
10911 state.length += state.objectMode ?
1 : chunk.length;
10912 if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
10914 if (state.needReadable) emitReadable(stream);
10918 maybeReadMore(stream, state);
10920 } else if (!addToFront) {
10921 state.reading = false;
10924 return needMoreData(state);
10927 // if it's past the high water mark, we can push in some more.
10928 // Also, if we have no data yet, we can stand some
10929 // more bytes. This is to work around cases where hwm=
0,
10930 // such as the repl. Also, if the push() triggered a
10931 // readable event, and the user called read(largeNumber) such that
10932 // needReadable was set, then we ought to push more, so that another
10933 // 'readable' event will be triggered.
10934 function needMoreData(state) {
10935 return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length ===
0);
10938 // backwards compatibility.
10939 Readable.prototype.setEncoding = function (enc) {
10940 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
10941 this._readableState.decoder = new StringDecoder(enc);
10942 this._readableState.encoding = enc;
10946 // Don't raise the hwm
> 8MB
10947 var MAX_HWM =
0x800000;
10948 function computeNewHighWaterMark(n) {
10949 if (n
>= MAX_HWM) {
10952 // Get the next highest power of
2 to prevent increasing hwm excessively in
10965 // This function is designed to be inlinable, so please take care when making
10966 // changes to the function body.
10967 function howMuchToRead(n, state) {
10968 if (n <=
0 || state.length ===
0 && state.ended) return
0;
10969 if (state.objectMode) return
1;
10971 // Only flow one buffer at a time
10972 if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
10974 // If we're asking for more than the current hwm, then raise the hwm.
10975 if (n
> state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
10976 if (n <= state.length) return n;
10977 // Don't have enough
10978 if (!state.ended) {
10979 state.needReadable = true;
10982 return state.length;
10985 // you can override either this method, or the async _read(n) below.
10986 Readable.prototype.read = function (n) {
10988 n = parseInt(n,
10);
10989 var state = this._readableState;
10992 if (n !==
0) state.emittedReadable = false;
10994 // if we're doing read(
0) to trigger a readable event, but we
10995 // already have a bunch of data in the buffer, then just trigger
10996 // the 'readable' event and move on.
10997 if (n ===
0 && state.needReadable && (state.length
>= state.highWaterMark || state.ended)) {
10998 debug('read: emitReadable', state.length, state.ended);
10999 if (state.length ===
0 && state.ended) endReadable(this);else emitReadable(this);
11003 n = howMuchToRead(n, state);
11005 // if we've ended, and we're now clear, then finish it up.
11006 if (n ===
0 && state.ended) {
11007 if (state.length ===
0) endReadable(this);
11011 // All the actual chunk generation logic needs to be
11012 // *below* the call to _read. The reason is that in certain
11013 // synthetic stream cases, such as passthrough streams, _read
11014 // may be a completely synchronous operation which may change
11015 // the state of the read buffer, providing enough data when
11016 // before there was *not* enough.
11018 // So, the steps are:
11019 //
1. Figure out what the state of things will be after we do
11020 // a read from the buffer.
11022 //
2. If that resulting state will trigger a _read, then call _read.
11023 // Note that this may be asynchronous, or synchronous. Yes, it is
11024 // deeply ugly to write APIs this way, but that still doesn't mean
11025 // that the Readable class should behave improperly, as streams are
11026 // designed to be sync/async agnostic.
11027 // Take note if the _read call is sync or async (ie, if the read call
11028 // has returned yet), so that we know whether or not it's safe to emit
11031 //
3. Actually pull the requested chunks out of the buffer and return.
11033 // if we need a readable event, then we need to do some reading.
11034 var doRead = state.needReadable;
11035 debug('need readable', doRead);
11037 // if we currently have less than the highWaterMark, then also read some
11038 if (state.length ===
0 || state.length - n < state.highWaterMark) {
11040 debug('length less than watermark', doRead);
11043 // however, if we've ended, then there's no point, and if we're already
11044 // reading, then it's unnecessary.
11045 if (state.ended || state.reading) {
11047 debug('reading or ended', doRead);
11048 } else if (doRead) {
11050 state.reading = true;
11052 // if the length is currently zero, then we *need* a readable event.
11053 if (state.length ===
0) state.needReadable = true;
11054 // call internal read method
11055 this._read(state.highWaterMark);
11056 state.sync = false;
11057 // If _read pushed data synchronously, then `reading` will be false,
11058 // and we need to re-evaluate how much data we can return to the user.
11059 if (!state.reading) n = howMuchToRead(nOrig, state);
11063 if (n
> 0) ret = fromList(n, state);else ret = null;
11065 if (ret === null) {
11066 state.needReadable = true;
11072 if (state.length ===
0) {
11073 // If we have nothing in the buffer, then we want to know
11074 // as soon as we *do* get something into the buffer.
11075 if (!state.ended) state.needReadable = true;
11077 // If we tried to read() past the EOF, then emit end on the next tick.
11078 if (nOrig !== n && state.ended) endReadable(this);
11081 if (ret !== null) this.emit('data', ret);
11086 function chunkInvalid(state, chunk) {
11088 if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {
11089 er = new TypeError('Invalid non-string/buffer chunk');
11094 function onEofChunk(stream, state) {
11095 if (state.ended) return;
11096 if (state.decoder) {
11097 var chunk = state.decoder.end();
11098 if (chunk && chunk.length) {
11099 state.buffer.push(chunk);
11100 state.length += state.objectMode ?
1 : chunk.length;
11103 state.ended = true;
11105 // emit 'readable' now to make sure it gets picked up.
11106 emitReadable(stream);
11109 // Don't emit readable right away in sync mode, because this can trigger
11110 // another read() call =
> stack overflow. This way, it might trigger
11111 // a nextTick recursion warning, but that's not so bad.
11112 function emitReadable(stream) {
11113 var state = stream._readableState;
11114 state.needReadable = false;
11115 if (!state.emittedReadable) {
11116 debug('emitReadable', state.flowing);
11117 state.emittedReadable = true;
11118 if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
11122 function emitReadable_(stream) {
11123 debug('emit readable');
11124 stream.emit('readable');
11128 // at this point, the user has presumably seen the 'readable' event,
11129 // and called read() to consume some data. that may have triggered
11130 // in turn another _read(n) call, in which case reading = true if
11131 // it's in progress.
11132 // However, if we're not ended, or reading, and the length < hwm,
11133 // then go ahead and try to read some more preemptively.
11134 function maybeReadMore(stream, state) {
11135 if (!state.readingMore) {
11136 state.readingMore = true;
11137 processNextTick(maybeReadMore_, stream, state);
11141 function maybeReadMore_(stream, state) {
11142 var len = state.length;
11143 while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
11144 debug('maybeReadMore read
0');
11146 if (len === state.length)
11147 // didn't get any data, stop spinning.
11148 break;else len = state.length;
11150 state.readingMore = false;
11153 // abstract method. to be overridden in specific implementation classes.
11154 // call cb(er, data) where data is <= n in length.
11155 // for virtual (non-string, non-buffer) streams, "length" is somewhat
11156 // arbitrary, and perhaps not very meaningful.
11157 Readable.prototype._read = function (n) {
11158 this.emit('error', new Error('_read() is not implemented'));
11161 Readable.prototype.pipe = function (dest, pipeOpts) {
11163 var state = this._readableState;
11165 switch (state.pipesCount) {
11167 state.pipes = dest;
11170 state.pipes = [state.pipes, dest];
11173 state.pipes.push(dest);
11176 state.pipesCount +=
1;
11177 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
11179 var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
11181 var endFn = doEnd ? onend : cleanup;
11182 if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
11184 dest.on('unpipe', onunpipe);
11185 function onunpipe(readable) {
11187 if (readable === src) {
11197 // when the dest drains, it reduces the awaitDrain counter
11198 // on the source. This would be more elegant with a .once()
11199 // handler in flow(), but adding and removing repeatedly is
11201 var ondrain = pipeOnDrain(src);
11202 dest.on('drain', ondrain);
11204 var cleanedUp = false;
11205 function cleanup() {
11207 // cleanup event handlers once the pipe is broken
11208 dest.removeListener('close', onclose);
11209 dest.removeListener('finish', onfinish);
11210 dest.removeListener('drain', ondrain);
11211 dest.removeListener('error', onerror);
11212 dest.removeListener('unpipe', onunpipe);
11213 src.removeListener('end', onend);
11214 src.removeListener('end', cleanup);
11215 src.removeListener('data', ondata);
11219 // if the reader is waiting for a drain event from this
11220 // specific writer, then it would cause it to never start
11222 // So, if this is awaiting a drain, then we just call it now.
11223 // If we don't know, then assume that we are waiting for one.
11224 if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
11227 // If the user pushes more data while we're writing to dest then we'll end up
11228 // in ondata again. However, we only want to increase awaitDrain once because
11229 // dest will only emit one 'drain' event for the multiple writes.
11230 // =
> Introduce a guard on increasing awaitDrain.
11231 var increasedAwaitDrain = false;
11232 src.on('data', ondata);
11233 function ondata(chunk) {
11235 increasedAwaitDrain = false;
11236 var ret = dest.write(chunk);
11237 if (false === ret && !increasedAwaitDrain) {
11238 // If the user unpiped during `dest.write()`, it is possible
11239 // to get stuck in a permanently paused state if that write
11240 // also returned false.
11241 // =
> Check whether `dest` is still a piping destination.
11242 if ((state.pipesCount ===
1 && state.pipes === dest || state.pipesCount
> 1 && indexOf(state.pipes, dest) !== -
1) && !cleanedUp) {
11243 debug('false write response, pause', src._readableState.awaitDrain);
11244 src._readableState.awaitDrain++;
11245 increasedAwaitDrain = true;
11251 // if the dest has an error, then stop piping into it.
11252 // however, don't suppress the throwing behavior for this.
11253 function onerror(er) {
11254 debug('onerror', er);
11256 dest.removeListener('error', onerror);
11257 if (EElistenerCount(dest, 'error') ===
0) dest.emit('error', er);
11260 // Make sure our error handler is attached before userland ones.
11261 prependListener(dest, 'error', onerror);
11263 // Both close and finish should trigger unpipe, but only once.
11264 function onclose() {
11265 dest.removeListener('finish', onfinish);
11268 dest.once('close', onclose);
11269 function onfinish() {
11271 dest.removeListener('close', onclose);
11274 dest.once('finish', onfinish);
11276 function unpipe() {
11281 // tell the dest that it's being piped to
11282 dest.emit('pipe', src);
11284 // start the flow if it hasn't been started already.
11285 if (!state.flowing) {
11286 debug('pipe resume');
11293 function pipeOnDrain(src) {
11294 return function () {
11295 var state = src._readableState;
11296 debug('pipeOnDrain', state.awaitDrain);
11297 if (state.awaitDrain) state.awaitDrain--;
11298 if (state.awaitDrain ===
0 && EElistenerCount(src, 'data')) {
11299 state.flowing = true;
11305 Readable.prototype.unpipe = function (dest) {
11306 var state = this._readableState;
11308 // if we're not piping anywhere, then do nothing.
11309 if (state.pipesCount ===
0) return this;
11311 // just one destination. most common case.
11312 if (state.pipesCount ===
1) {
11313 // passed in one, but it's not the right one.
11314 if (dest && dest !== state.pipes) return this;
11316 if (!dest) dest = state.pipes;
11319 state.pipes = null;
11320 state.pipesCount =
0;
11321 state.flowing = false;
11322 if (dest) dest.emit('unpipe', this);
11326 // slow case. multiple pipe destinations.
11330 var dests = state.pipes;
11331 var len = state.pipesCount;
11332 state.pipes = null;
11333 state.pipesCount =
0;
11334 state.flowing = false;
11336 for (var i =
0; i < len; i++) {
11337 dests[i].emit('unpipe', this);
11341 // try to find the right one.
11342 var index = indexOf(state.pipes, dest);
11343 if (index === -
1) return this;
11345 state.pipes.splice(index,
1);
11346 state.pipesCount -=
1;
11347 if (state.pipesCount ===
1) state.pipes = state.pipes[
0];
11349 dest.emit('unpipe', this);
11354 // set up data events if they are asked for
11355 // Ensure readable listeners eventually get something
11356 Readable.prototype.on = function (ev, fn) {
11357 var res = Stream.prototype.on.call(this, ev, fn);
11359 if (ev === 'data') {
11360 // Start flowing on next tick if stream isn't explicitly paused
11361 if (this._readableState.flowing !== false) this.resume();
11362 } else if (ev === 'readable') {
11363 var state = this._readableState;
11364 if (!state.endEmitted && !state.readableListening) {
11365 state.readableListening = state.needReadable = true;
11366 state.emittedReadable = false;
11367 if (!state.reading) {
11368 processNextTick(nReadingNextTick, this);
11369 } else if (state.length) {
11370 emitReadable(this, state);
11377 Readable.prototype.addListener = Readable.prototype.on;
11379 function nReadingNextTick(self) {
11380 debug('readable nexttick read
0');
11384 // pause() and resume() are remnants of the legacy readable stream API
11385 // If the user uses them, then switch into old mode.
11386 Readable.prototype.resume = function () {
11387 var state = this._readableState;
11388 if (!state.flowing) {
11390 state.flowing = true;
11391 resume(this, state);
11396 function resume(stream, state) {
11397 if (!state.resumeScheduled) {
11398 state.resumeScheduled = true;
11399 processNextTick(resume_, stream, state);
11403 function resume_(stream, state) {
11404 if (!state.reading) {
11405 debug('resume read
0');
11409 state.resumeScheduled = false;
11410 state.awaitDrain =
0;
11411 stream.emit('resume');
11413 if (state.flowing && !state.reading) stream.read(
0);
11416 Readable.prototype.pause = function () {
11417 debug('call pause flowing=%j', this._readableState.flowing);
11418 if (false !== this._readableState.flowing) {
11420 this._readableState.flowing = false;
11421 this.emit('pause');
11426 function flow(stream) {
11427 var state = stream._readableState;
11428 debug('flow', state.flowing);
11429 while (state.flowing && stream.read() !== null) {}
11432 // wrap an old-style stream as the async data source.
11433 // This is *not* part of the readable stream interface.
11434 // It is an ugly unfortunate mess of history.
11435 Readable.prototype.wrap = function (stream) {
11436 var state = this._readableState;
11437 var paused = false;
11440 stream.on('end', function () {
11441 debug('wrapped end');
11442 if (state.decoder && !state.ended) {
11443 var chunk = state.decoder.end();
11444 if (chunk && chunk.length) self.push(chunk);
11450 stream.on('data', function (chunk) {
11451 debug('wrapped data');
11452 if (state.decoder) chunk = state.decoder.write(chunk);
11454 // don't skip over falsy values in objectMode
11455 if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
11457 var ret = self.push(chunk);
11464 // proxy all the other methods.
11465 // important when wrapping filters and duplexes.
11466 for (var i in stream) {
11467 if (this[i] === undefined && typeof stream[i] === 'function') {
11468 this[i] = function (method) {
11469 return function () {
11470 return stream[method].apply(stream, arguments);
11476 // proxy certain important events.
11477 for (var n =
0; n < kProxyEvents.length; n++) {
11478 stream.on(kProxyEvents[n], self.emit.bind(self, kProxyEvents[n]));
11481 // when we try to consume some more bytes, simply unpause the
11482 // underlying stream.
11483 self._read = function (n) {
11484 debug('wrapped _read', n);
11494 // exposed for testing purposes only.
11495 Readable._fromList = fromList;
11497 // Pluck off n bytes from an array of buffers.
11498 // Length is the combined lengths of all the buffers in the list.
11499 // This function is designed to be inlinable, so please take care when making
11500 // changes to the function body.
11501 function fromList(n, state) {
11502 // nothing buffered
11503 if (state.length ===
0) return null;
11506 if (state.objectMode) ret = state.buffer.shift();else if (!n || n
>= state.length) {
11507 // read it all, truncate the list
11508 if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length ===
1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);
11509 state.buffer.clear();
11511 // read part of list
11512 ret = fromListPartial(n, state.buffer, state.decoder);
11518 // Extracts only enough buffered data to satisfy the amount requested.
11519 // This function is designed to be inlinable, so please take care when making
11520 // changes to the function body.
11521 function fromListPartial(n, list, hasStrings) {
11523 if (n < list.head.data.length) {
11524 // slice is the same for buffers and strings
11525 ret = list.head.data.slice(
0, n);
11526 list.head.data = list.head.data.slice(n);
11527 } else if (n === list.head.data.length) {
11528 // first chunk is a perfect match
11529 ret = list.shift();
11531 // result spans more than one buffer
11532 ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
11537 // Copies a specified amount of characters from the list of buffered data
11539 // This function is designed to be inlinable, so please take care when making
11540 // changes to the function body.
11541 function copyFromBufferString(n, list) {
11546 while (p = p.next) {
11548 var nb = n
> str.length ? str.length : n;
11549 if (nb === str.length) ret += str;else ret += str.slice(
0, n);
11552 if (nb === str.length) {
11554 if (p.next) list.head = p.next;else list.head = list.tail = null;
11557 p.data = str.slice(nb);
11567 // Copies a specified amount of bytes from the list of buffered data chunks.
11568 // This function is designed to be inlinable, so please take care when making
11569 // changes to the function body.
11570 function copyFromBuffer(n, list) {
11571 var ret = bufferShim.allocUnsafe(n);
11575 n -= p.data.length;
11576 while (p = p.next) {
11578 var nb = n
> buf.length ? buf.length : n;
11579 buf.copy(ret, ret.length - n,
0, nb);
11582 if (nb === buf.length) {
11584 if (p.next) list.head = p.next;else list.head = list.tail = null;
11587 p.data = buf.slice(nb);
11597 function endReadable(stream) {
11598 var state = stream._readableState;
11600 // If we get here before consuming all the bytes, then that is a
11601 // bug in node. Should never happen.
11602 if (state.length
> 0) throw new Error('
"endReadable()" called on non-empty stream');
11604 if (!state.endEmitted) {
11605 state.ended = true;
11606 processNextTick(endReadableNT, state, stream);
11610 function endReadableNT(state, stream) {
11611 // Check that we didn't get one last unshift.
11612 if (!state.endEmitted && state.length ===
0) {
11613 state.endEmitted = true;
11614 stream.readable = false;
11615 stream.emit('end');
11619 function forEach(xs, f) {
11620 for (var i =
0, l = xs.length; i < l; i++) {
11625 function indexOf(xs, x) {
11626 for (var i =
0, l = xs.length; i < l; i++) {
11627 if (xs[i] === x) return i;
11631 }).call(this,require('_process'))
11632 },{
"./_stream_duplex":
15,
"./internal/streams/BufferList":
20,
"./internal/streams/stream":
21,
"_process":
13,
"buffer":
5,
"buffer-shims":
4,
"core-util-is":
6,
"events":
7,
"inherits":
9,
"isarray":
11,
"process-nextick-args":
12,
"string_decoder/":
22,
"util":
3}],
18:[function(require,module,exports){
11633 // a transform stream is a readable/writable stream where you do
11634 // something with the data. Sometimes it's called a
"filter",
11635 // but that's not a great name for it, since that implies a thing where
11636 // some bits pass through, and others are simply ignored. (That would
11637 // be a valid example of a transform, of course.)
11639 // While the output is causally related to the input, it's not a
11640 // necessarily symmetric or synchronous transformation. For example,
11641 // a zlib stream might take multiple plain-text writes(), and then
11642 // emit a single compressed chunk some time in the future.
11644 // Here's how this works:
11646 // The Transform stream has all the aspects of the readable and writable
11647 // stream classes. When you write(chunk), that calls _write(chunk,cb)
11648 // internally, and returns false if there's a lot of pending writes
11649 // buffered up. When you call read(), that calls _read(n) until
11650 // there's enough pending readable data buffered up.
11652 // In a transform stream, the written data is placed in a buffer. When
11653 // _read(n) is called, it transforms the queued up data, calling the
11654 // buffered _write cb's as it consumes chunks. If consuming a single
11655 // written chunk would result in multiple output chunks, then the first
11656 // outputted bit calls the readcb, and subsequent chunks just go into
11657 // the read buffer, and will cause it to emit 'readable' if necessary.
11659 // This way, back-pressure is actually determined by the reading side,
11660 // since _read has to be called to start processing a new chunk. However,
11661 // a pathological inflate type of transform can cause excessive buffering
11662 // here. For example, imagine a stream where every byte of input is
11663 // interpreted as an integer from
0-
255, and then results in that many
11664 // bytes of output. Writing the
4 bytes {ff,ff,ff,ff} would result in
11665 //
1kb of data being output. In this case, you could write a very small
11666 // amount of input, and end up with a very large amount of output. In
11667 // such a pathological inflating mechanism, there'd be no way to tell
11668 // the system to stop doing the transform. A single
4MB write could
11669 // cause the system to run out of memory.
11671 // However, even in such a pathological case, only a single written chunk
11672 // would be consumed, and then the rest would wait (un-transformed) until
11673 // the results of the previous transformed chunk were consumed.
11677 module.exports = Transform;
11679 var Duplex = require('./_stream_duplex');
11682 var util = require('core-util-is');
11683 util.inherits = require('inherits');
11686 util.inherits(Transform, Duplex);
11688 function TransformState(stream) {
11689 this.afterTransform = function (er, data) {
11690 return afterTransform(stream, er, data);
11693 this.needTransform = false;
11694 this.transforming = false;
11695 this.writecb = null;
11696 this.writechunk = null;
11697 this.writeencoding = null;
11700 function afterTransform(stream, er, data) {
11701 var ts = stream._transformState;
11702 ts.transforming = false;
11704 var cb = ts.writecb;
11706 if (!cb) return stream.emit('error', new Error('no writecb in Transform class'));
11708 ts.writechunk = null;
11711 if (data !== null && data !== undefined) stream.push(data);
11715 var rs = stream._readableState;
11716 rs.reading = false;
11717 if (rs.needReadable || rs.length < rs.highWaterMark) {
11718 stream._read(rs.highWaterMark);
11722 function Transform(options) {
11723 if (!(this instanceof Transform)) return new Transform(options);
11725 Duplex.call(this, options);
11727 this._transformState = new TransformState(this);
11731 // start out asking for a readable event once data is transformed.
11732 this._readableState.needReadable = true;
11734 // we have implemented the _read method, and done the other things
11735 // that Readable wants before the first _read call, so unset the
11736 // sync guard flag.
11737 this._readableState.sync = false;
11740 if (typeof options.transform === 'function') this._transform = options.transform;
11742 if (typeof options.flush === 'function') this._flush = options.flush;
11745 // When the writable side finishes, then flush out anything remaining.
11746 this.once('prefinish', function () {
11747 if (typeof this._flush === 'function') this._flush(function (er, data) {
11748 done(stream, er, data);
11749 });else done(stream);
11753 Transform.prototype.push = function (chunk, encoding) {
11754 this._transformState.needTransform = false;
11755 return Duplex.prototype.push.call(this, chunk, encoding);
11758 // This is the part where you do stuff!
11759 // override this function in implementation classes.
11760 // 'chunk' is an input chunk.
11762 // Call `push(newChunk)` to pass along transformed output
11763 // to the readable side. You may call 'push' zero or more times.
11765 // Call `cb(err)` when you are done with this chunk. If you pass
11766 // an error, then that'll put the hurt on the whole operation. If you
11767 // never call cb(), then you'll never get another chunk.
11768 Transform.prototype._transform = function (chunk, encoding, cb) {
11769 throw new Error('_transform() is not implemented');
11772 Transform.prototype._write = function (chunk, encoding, cb) {
11773 var ts = this._transformState;
11775 ts.writechunk = chunk;
11776 ts.writeencoding = encoding;
11777 if (!ts.transforming) {
11778 var rs = this._readableState;
11779 if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
11783 // Doesn't matter what the args are here.
11784 // _transform does all the work.
11785 // That we got here means that the readable side wants more data.
11786 Transform.prototype._read = function (n) {
11787 var ts = this._transformState;
11789 if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
11790 ts.transforming = true;
11791 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
11793 // mark that we need a transform, so that any data that comes in
11794 // will get processed, now that we've asked for it.
11795 ts.needTransform = true;
11799 function done(stream, er, data) {
11800 if (er) return stream.emit('error', er);
11802 if (data !== null && data !== undefined) stream.push(data);
11804 // if there's nothing in the write buffer, then that means
11805 // that nothing more will ever be provided
11806 var ws = stream._writableState;
11807 var ts = stream._transformState;
11809 if (ws.length) throw new Error('Calling transform done when ws.length !=
0');
11811 if (ts.transforming) throw new Error('Calling transform done when still transforming');
11813 return stream.push(null);
11815 },{"./_stream_duplex":
15,"core-util-is":
6,"inherits":
9}],
19:[function(require,module,exports){
11816 (function (process){
11817 // A bit simpler than readable streams.
11818 // Implement an async ._write(chunk, encoding, cb), and it'll handle all
11819 // the drain event emission and buffering.
11823 module.exports = Writable;
11826 var processNextTick = require('process-nextick-args');
11830 var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(
0,
5))
> -
1 ? setImmediate : processNextTick;
11837 Writable.WritableState = WritableState;
11840 var util = require('core-util-is');
11841 util.inherits = require('inherits');
11845 var internalUtil = {
11846 deprecate: require('util-deprecate')
11851 var Stream = require('./internal/streams/stream');
11854 var Buffer = require('buffer').Buffer;
11856 var bufferShim = require('buffer-shims');
11859 util.inherits(Writable, Stream);
11863 function WriteReq(chunk, encoding, cb) {
11864 this.chunk = chunk;
11865 this.encoding = encoding;
11866 this.callback = cb;
11870 function WritableState(options, stream) {
11871 Duplex = Duplex || require('./_stream_duplex');
11873 options = options || {};
11875 // object stream flag to indicate whether or not this stream
11876 // contains buffers or objects.
11877 this.objectMode = !!options.objectMode;
11879 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
11881 // the point at which write() starts returning false
11882 // Note:
0 is a valid value, means that we always return false if
11883 // the entire buffer is not flushed immediately on write()
11884 var hwm = options.highWaterMark;
11885 var defaultHwm = this.objectMode ?
16 :
16 *
1024;
11886 this.highWaterMark = hwm || hwm ===
0 ? hwm : defaultHwm;
11889 this.highWaterMark = ~~this.highWaterMark;
11891 // drain event flag.
11892 this.needDrain = false;
11893 // at the start of calling end()
11894 this.ending = false;
11895 // when end() has been called, and returned
11896 this.ended = false;
11897 // when 'finish' is emitted
11898 this.finished = false;
11900 // should we decode strings into buffers before passing to _write?
11901 // this is here so that some node-core streams can optimize string
11902 // handling at a lower level.
11903 var noDecode = options.decodeStrings === false;
11904 this.decodeStrings = !noDecode;
11906 // Crypto is kind of old and crusty. Historically, its default string
11907 // encoding is 'binary' so we have to make this configurable.
11908 // Everything else in the universe uses 'utf8', though.
11909 this.defaultEncoding = options.defaultEncoding || 'utf8';
11911 // not an actual buffer we keep track of, but a measurement
11912 // of how much we're waiting to get pushed to some underlying
11916 // a flag to see when we're in the middle of a write.
11917 this.writing = false;
11919 // when true all writes will be buffered until .uncork() call
11922 // a flag to be able to tell if the onwrite cb is called immediately,
11923 // or on a later tick. We set this to true at first, because any
11924 // actions that shouldn't happen until "later" should generally also
11925 // not happen before the first write call.
11928 // a flag to know if we're processing previously buffered items, which
11929 // may call the _write() callback in the same tick, so that we don't
11930 // end up in an overlapped onwrite situation.
11931 this.bufferProcessing = false;
11933 // the callback that's passed to _write(chunk,cb)
11934 this.onwrite = function (er) {
11935 onwrite(stream, er);
11938 // the callback that the user supplies to write(chunk,encoding,cb)
11939 this.writecb = null;
11941 // the amount that is being written when _write is called.
11944 this.bufferedRequest = null;
11945 this.lastBufferedRequest = null;
11947 // number of pending user-supplied write callbacks
11948 // this must be
0 before 'finish' can be emitted
11949 this.pendingcb =
0;
11951 // emit prefinish if the only thing we're waiting for is _write cbs
11952 // This is relevant for synchronous Transform streams
11953 this.prefinished = false;
11955 // True if the error was already emitted and should not be thrown again
11956 this.errorEmitted = false;
11958 // count buffered requests
11959 this.bufferedRequestCount =
0;
11961 // allocate the first CorkedRequest, there is always
11962 // one allocated and free to use, and we maintain at most two
11963 this.corkedRequestsFree = new CorkedRequest(this);
11966 WritableState.prototype.getBuffer = function getBuffer() {
11967 var current = this.bufferedRequest;
11971 current = current.next;
11978 Object.defineProperty(WritableState.prototype, 'buffer', {
11979 get: internalUtil.deprecate(function () {
11980 return this.getBuffer();
11981 }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.')
11986 // Test _writableState for inheritance to account for Duplex streams,
11987 // whose prototype chain only points to Readable.
11988 var realHasInstance;
11989 if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
11990 realHasInstance = Function.prototype[Symbol.hasInstance];
11991 Object.defineProperty(Writable, Symbol.hasInstance, {
11992 value: function (object) {
11993 if (realHasInstance.call(this, object)) return true;
11995 return object && object._writableState instanceof WritableState;
11999 realHasInstance = function (object) {
12000 return object instanceof this;
12004 function Writable(options) {
12005 Duplex = Duplex || require('./_stream_duplex');
12007 // Writable ctor is applied to Duplexes, too.
12008 // `realHasInstance` is necessary because using plain `instanceof`
12009 // would return false, as no `_writableState` property is attached.
12011 // Trying to use the custom `instanceof` for Writable here will also break the
12012 // Node.js LazyTransform implementation, which has a non-trivial getter for
12013 // `_writableState` that would lead to infinite recursion.
12014 if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
12015 return new Writable(options);
12018 this._writableState = new WritableState(options, this);
12021 this.writable = true;
12024 if (typeof options.write === 'function') this._write = options.write;
12026 if (typeof options.writev === 'function') this._writev = options.writev;
12032 // Otherwise people can pipe Writable streams, which is just wrong.
12033 Writable.prototype.pipe = function () {
12034 this.emit('error', new Error('Cannot pipe, not readable'));
12037 function writeAfterEnd(stream, cb) {
12038 var er = new Error('write after end');
12039 // TODO: defer error events consistently everywhere, not just the cb
12040 stream.emit('error', er);
12041 processNextTick(cb, er);
12044 // Checks that a user-supplied chunk is valid, especially for the particular
12045 // mode the stream is in. Currently this means that `null` is never accepted
12046 // and undefined/non-string values are only allowed in object mode.
12047 function validChunk(stream, state, chunk, cb) {
12051 if (chunk === null) {
12052 er = new TypeError('May not write null values to stream');
12053 } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
12054 er = new TypeError('Invalid non-string/buffer chunk');
12057 stream.emit('error', er);
12058 processNextTick(cb, er);
12064 Writable.prototype.write = function (chunk, encoding, cb) {
12065 var state = this._writableState;
12067 var isBuf = Buffer.isBuffer(chunk);
12069 if (typeof encoding === 'function') {
12074 if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
12076 if (typeof cb !== 'function') cb = nop;
12078 if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {
12080 ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
12086 Writable.prototype.cork = function () {
12087 var state = this._writableState;
12092 Writable.prototype.uncork = function () {
12093 var state = this._writableState;
12095 if (state.corked) {
12098 if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
12102 Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
12103 // node::ParseEncoding() requires lower case.
12104 if (typeof encoding === 'string') encoding = encoding.toLowerCase();
12105 if (!(['hex', 'utf8', 'utf-
8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-
2', 'utf16le', 'utf-
16le', 'raw'].indexOf((encoding + '').toLowerCase())
> -
1)) throw new TypeError('Unknown encoding: ' + encoding);
12106 this._writableState.defaultEncoding = encoding;
12110 function decodeChunk(state, chunk, encoding) {
12111 if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
12112 chunk = bufferShim.from(chunk, encoding);
12117 // if we're already writing something, then just put this
12118 // in the queue, and wait our turn. Otherwise, call _write
12119 // If we return false, then we need a drain event, so set that flag.
12120 function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
12122 chunk = decodeChunk(state, chunk, encoding);
12123 if (Buffer.isBuffer(chunk)) encoding = 'buffer';
12125 var len = state.objectMode ?
1 : chunk.length;
12127 state.length += len;
12129 var ret = state.length < state.highWaterMark;
12130 // we must ensure that previous needDrain will not be reset to false.
12131 if (!ret) state.needDrain = true;
12133 if (state.writing || state.corked) {
12134 var last = state.lastBufferedRequest;
12135 state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);
12137 last.next = state.lastBufferedRequest;
12139 state.bufferedRequest = state.lastBufferedRequest;
12141 state.bufferedRequestCount +=
1;
12143 doWrite(stream, state, false, len, chunk, encoding, cb);
12149 function doWrite(stream, state, writev, len, chunk, encoding, cb) {
12150 state.writelen = len;
12151 state.writecb = cb;
12152 state.writing = true;
12154 if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
12155 state.sync = false;
12158 function onwriteError(stream, state, sync, er, cb) {
12160 if (sync) processNextTick(cb, er);else cb(er);
12162 stream._writableState.errorEmitted = true;
12163 stream.emit('error', er);
12166 function onwriteStateUpdate(state) {
12167 state.writing = false;
12168 state.writecb = null;
12169 state.length -= state.writelen;
12170 state.writelen =
0;
12173 function onwrite(stream, er) {
12174 var state = stream._writableState;
12175 var sync = state.sync;
12176 var cb = state.writecb;
12178 onwriteStateUpdate(state);
12180 if (er) onwriteError(stream, state, sync, er, cb);else {
12181 // Check if we're actually ready to finish, but don't emit yet
12182 var finished = needFinish(state);
12184 if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
12185 clearBuffer(stream, state);
12190 asyncWrite(afterWrite, stream, state, finished, cb);
12193 afterWrite(stream, state, finished, cb);
12198 function afterWrite(stream, state, finished, cb) {
12199 if (!finished) onwriteDrain(stream, state);
12202 finishMaybe(stream, state);
12205 // Must force callback to be called on nextTick, so that we don't
12206 // emit 'drain' before the write() consumer gets the 'false' return
12207 // value, and has a chance to attach a 'drain' listener.
12208 function onwriteDrain(stream, state) {
12209 if (state.length ===
0 && state.needDrain) {
12210 state.needDrain = false;
12211 stream.emit('drain');
12215 // if there's something in the buffer waiting, then process it
12216 function clearBuffer(stream, state) {
12217 state.bufferProcessing = true;
12218 var entry = state.bufferedRequest;
12220 if (stream._writev && entry && entry.next) {
12221 // Fast case, write everything using _writev()
12222 var l = state.bufferedRequestCount;
12223 var buffer = new Array(l);
12224 var holder = state.corkedRequestsFree;
12225 holder.entry = entry;
12229 buffer[count] = entry;
12230 entry = entry.next;
12234 doWrite(stream, state, true, state.length, buffer, '', holder.finish);
12236 // doWrite is almost always async, defer these to save a bit of time
12237 // as the hot path ends with doWrite
12239 state.lastBufferedRequest = null;
12241 state.corkedRequestsFree = holder.next;
12242 holder.next = null;
12244 state.corkedRequestsFree = new CorkedRequest(state);
12247 // Slow case, write chunks one-by-one
12249 var chunk = entry.chunk;
12250 var encoding = entry.encoding;
12251 var cb = entry.callback;
12252 var len = state.objectMode ?
1 : chunk.length;
12254 doWrite(stream, state, false, len, chunk, encoding, cb);
12255 entry = entry.next;
12256 // if we didn't call the onwrite immediately, then
12257 // it means that we need to wait until it does.
12258 // also, that means that the chunk and cb are currently
12259 // being processed, so move the buffer counter past them.
12260 if (state.writing) {
12265 if (entry === null) state.lastBufferedRequest = null;
12268 state.bufferedRequestCount =
0;
12269 state.bufferedRequest = entry;
12270 state.bufferProcessing = false;
12273 Writable.prototype._write = function (chunk, encoding, cb) {
12274 cb(new Error('_write() is not implemented'));
12277 Writable.prototype._writev = null;
12279 Writable.prototype.end = function (chunk, encoding, cb) {
12280 var state = this._writableState;
12282 if (typeof chunk === 'function') {
12286 } else if (typeof encoding === 'function') {
12291 if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
12293 // .end() fully uncorks
12294 if (state.corked) {
12299 // ignore unnecessary end() calls.
12300 if (!state.ending && !state.finished) endWritable(this, state, cb);
12303 function needFinish(state) {
12304 return state.ending && state.length ===
0 && state.bufferedRequest === null && !state.finished && !state.writing;
12307 function prefinish(stream, state) {
12308 if (!state.prefinished) {
12309 state.prefinished = true;
12310 stream.emit('prefinish');
12314 function finishMaybe(stream, state) {
12315 var need = needFinish(state);
12317 if (state.pendingcb ===
0) {
12318 prefinish(stream, state);
12319 state.finished = true;
12320 stream.emit('finish');
12322 prefinish(stream, state);
12328 function endWritable(stream, state, cb) {
12329 state.ending = true;
12330 finishMaybe(stream, state);
12332 if (state.finished) processNextTick(cb);else stream.once('finish', cb);
12334 state.ended = true;
12335 stream.writable = false;
12338 // It seems a linked list but it is not
12339 // there will be only
2 of these for each stream
12340 function CorkedRequest(state) {
12345 this.finish = function (err) {
12346 var entry = _this.entry;
12347 _this.entry = null;
12349 var cb = entry.callback;
12352 entry = entry.next;
12354 if (state.corkedRequestsFree) {
12355 state.corkedRequestsFree.next = _this;
12357 state.corkedRequestsFree = _this;
12361 }).call(this,require('_process'))
12362 },{"./_stream_duplex":
15,"./internal/streams/stream":
21,"_process":
13,"buffer":
5,"buffer-shims":
4,"core-util-is":
6,"inherits":
9,"process-nextick-args":
12,"util-deprecate":
30}],
20:[function(require,module,exports){
12365 var Buffer = require('buffer').Buffer;
12367 var bufferShim = require('buffer-shims');
12370 module.exports = BufferList;
12372 function BufferList() {
12378 BufferList.prototype.push = function (v) {
12379 var entry = { data: v, next: null };
12380 if (this.length
> 0) this.tail.next = entry;else this.head = entry;
12385 BufferList.prototype.unshift = function (v) {
12386 var entry = { data: v, next: this.head };
12387 if (this.length ===
0) this.tail = entry;
12392 BufferList.prototype.shift = function () {
12393 if (this.length ===
0) return;
12394 var ret = this.head.data;
12395 if (this.length ===
1) this.head = this.tail = null;else this.head = this.head.next;
12400 BufferList.prototype.clear = function () {
12401 this.head = this.tail = null;
12405 BufferList.prototype.join = function (s) {
12406 if (this.length ===
0) return '';
12408 var ret = '' + p.data;
12409 while (p = p.next) {
12414 BufferList.prototype.concat = function (n) {
12415 if (this.length ===
0) return bufferShim.alloc(
0);
12416 if (this.length ===
1) return this.head.data;
12417 var ret = bufferShim.allocUnsafe(n
>>> 0);
12421 p.data.copy(ret, i);
12422 i += p.data.length;
12427 },{
"buffer":
5,
"buffer-shims":
4}],
21:[function(require,module,exports){
12428 module.exports = require('events').EventEmitter;
12430 },{
"events":
7}],
22:[function(require,module,exports){
12433 var Buffer = require('safe-buffer').Buffer;
12435 var isEncoding = Buffer.isEncoding || function (encoding) {
12436 encoding = '' + encoding;
12437 switch (encoding && encoding.toLowerCase()) {
12438 case 'hex':case 'utf8':case 'utf-
8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-
2':case 'utf16le':case 'utf-
16le':case 'raw':
12445 function _normalizeEncoding(enc) {
12446 if (!enc) return 'utf8';
12466 if (retried) return; // undefined
12467 enc = ('' + enc).toLowerCase();
12473 // Do not cache `Buffer.isEncoding` when checking encoding names as some
12474 // modules monkey-patch it to support additional encodings
12475 function normalizeEncoding(enc) {
12476 var nenc = _normalizeEncoding(enc);
12477 if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);
12478 return nenc || enc;
12481 // StringDecoder provides an interface for efficiently splitting a series of
12482 // buffers into a series of JS strings without breaking apart multi-byte
12484 exports.StringDecoder = StringDecoder;
12485 function StringDecoder(encoding) {
12486 this.encoding = normalizeEncoding(encoding);
12488 switch (this.encoding) {
12490 this.text = utf16Text;
12491 this.end = utf16End;
12495 this.fillLast = utf8FillLast;
12499 this.text = base64Text;
12500 this.end = base64End;
12504 this.write = simpleWrite;
12505 this.end = simpleEnd;
12509 this.lastTotal =
0;
12510 this.lastChar = Buffer.allocUnsafe(nb);
12513 StringDecoder.prototype.write = function (buf) {
12514 if (buf.length ===
0) return '';
12517 if (this.lastNeed) {
12518 r = this.fillLast(buf);
12519 if (r === undefined) return '';
12525 if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);
12529 StringDecoder.prototype.end = utf8End;
12531 // Returns only complete characters in a Buffer
12532 StringDecoder.prototype.text = utf8Text;
12534 // Attempts to complete a partial non-UTF-
8 character using bytes from a Buffer
12535 StringDecoder.prototype.fillLast = function (buf) {
12536 if (this.lastNeed <= buf.length) {
12537 buf.copy(this.lastChar, this.lastTotal - this.lastNeed,
0, this.lastNeed);
12538 return this.lastChar.toString(this.encoding,
0, this.lastTotal);
12540 buf.copy(this.lastChar, this.lastTotal - this.lastNeed,
0, buf.length);
12541 this.lastNeed -= buf.length;
12544 // Checks the type of a UTF-
8 byte, whether it's ASCII, a leading byte, or a
12545 // continuation byte.
12546 function utf8CheckByte(byte) {
12547 if (byte <=
0x7F) return
0;else if (byte
>> 5 ===
0x06) return
2;else if (byte
>> 4 ===
0x0E) return
3;else if (byte
>> 3 ===
0x1E) return
4;
12551 // Checks at most
3 bytes at the end of a Buffer in order to detect an
12552 // incomplete multi-byte UTF-
8 character. The total number of bytes (
2,
3, or
4)
12553 // needed to complete the UTF-
8 character (if applicable) are returned.
12554 function utf8CheckIncomplete(self, buf, i) {
12555 var j = buf.length -
1;
12556 if (j < i) return
0;
12557 var nb = utf8CheckByte(buf[j]);
12559 if (nb
> 0) self.lastNeed = nb -
1;
12562 if (--j < i) return
0;
12563 nb = utf8CheckByte(buf[j]);
12565 if (nb
> 0) self.lastNeed = nb -
2;
12568 if (--j < i) return
0;
12569 nb = utf8CheckByte(buf[j]);
12572 if (nb ===
2) nb =
0;else self.lastNeed = nb -
3;
12579 // Validates as many continuation bytes for a multi-byte UTF-
8 character as
12580 // needed or are available. If we see a non-continuation byte where we expect
12581 // one, we
"replace" the validated continuation bytes we've seen so far with
12582 // UTF-
8 replacement characters ('\ufffd'), to match v8's UTF-
8 decoding
12583 // behavior. The continuation byte check is included three times in the case
12584 // where all of the continuation bytes for a character exist in the same buffer.
12585 // It is also done this way as a slight performance increase instead of using a
12587 function utf8CheckExtraBytes(self, buf, p) {
12588 if ((buf[
0] &
0xC0) !==
0x80) {
12590 return '\ufffd'.repeat(p);
12592 if (self.lastNeed
> 1 && buf.length
> 1) {
12593 if ((buf[
1] &
0xC0) !==
0x80) {
12595 return '\ufffd'.repeat(p +
1);
12597 if (self.lastNeed
> 2 && buf.length
> 2) {
12598 if ((buf[
2] &
0xC0) !==
0x80) {
12600 return '\ufffd'.repeat(p +
2);
12606 // Attempts to complete a multi-byte UTF-
8 character using bytes from a Buffer.
12607 function utf8FillLast(buf) {
12608 var p = this.lastTotal - this.lastNeed;
12609 var r = utf8CheckExtraBytes(this, buf, p);
12610 if (r !== undefined) return r;
12611 if (this.lastNeed <= buf.length) {
12612 buf.copy(this.lastChar, p,
0, this.lastNeed);
12613 return this.lastChar.toString(this.encoding,
0, this.lastTotal);
12615 buf.copy(this.lastChar, p,
0, buf.length);
12616 this.lastNeed -= buf.length;
12619 // Returns all complete UTF-
8 characters in a Buffer. If the Buffer ended on a
12620 // partial character, the character's bytes are buffered until the required
12621 // number of bytes are available.
12622 function utf8Text(buf, i) {
12623 var total = utf8CheckIncomplete(this, buf, i);
12624 if (!this.lastNeed) return buf.toString('utf8', i);
12625 this.lastTotal = total;
12626 var end = buf.length - (total - this.lastNeed);
12627 buf.copy(this.lastChar,
0, end);
12628 return buf.toString('utf8', i, end);
12631 // For UTF-
8, a replacement character for each buffered byte of a (partial)
12632 // character needs to be added to the output.
12633 function utf8End(buf) {
12634 var r = buf && buf.length ? this.write(buf) : '';
12635 if (this.lastNeed) return r + '\ufffd'.repeat(this.lastTotal - this.lastNeed);
12639 // UTF-
16LE typically needs two bytes per character, but even if we have an even
12640 // number of bytes available, we need to check if we end on a leading/high
12641 // surrogate. In that case, we need to wait for the next two bytes in order to
12642 // decode the last character properly.
12643 function utf16Text(buf, i) {
12644 if ((buf.length - i) %
2 ===
0) {
12645 var r = buf.toString('utf16le', i);
12647 var c = r.charCodeAt(r.length -
1);
12648 if (c
>=
0xD800 && c <=
0xDBFF) {
12650 this.lastTotal =
4;
12651 this.lastChar[
0] = buf[buf.length -
2];
12652 this.lastChar[
1] = buf[buf.length -
1];
12653 return r.slice(
0, -
1);
12659 this.lastTotal =
2;
12660 this.lastChar[
0] = buf[buf.length -
1];
12661 return buf.toString('utf16le', i, buf.length -
1);
12664 // For UTF-
16LE we do not explicitly append special replacement characters if we
12665 // end on a partial character, we simply let v8 handle that.
12666 function utf16End(buf) {
12667 var r = buf && buf.length ? this.write(buf) : '';
12668 if (this.lastNeed) {
12669 var end = this.lastTotal - this.lastNeed;
12670 return r + this.lastChar.toString('utf16le',
0, end);
12675 function base64Text(buf, i) {
12676 var n = (buf.length - i) %
3;
12677 if (n ===
0) return buf.toString('base64', i);
12678 this.lastNeed =
3 - n;
12679 this.lastTotal =
3;
12681 this.lastChar[
0] = buf[buf.length -
1];
12683 this.lastChar[
0] = buf[buf.length -
2];
12684 this.lastChar[
1] = buf[buf.length -
1];
12686 return buf.toString('base64', i, buf.length - n);
12689 function base64End(buf) {
12690 var r = buf && buf.length ? this.write(buf) : '';
12691 if (this.lastNeed) return r + this.lastChar.toString('base64',
0,
3 - this.lastNeed);
12695 // Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)
12696 function simpleWrite(buf) {
12697 return buf.toString(this.encoding);
12700 function simpleEnd(buf) {
12701 return buf && buf.length ? this.write(buf) : '';
12703 },{"safe-buffer":
27}],
23:[function(require,module,exports){
12704 module.exports = require('./readable').PassThrough
12706 },{"./readable":
24}],
24:[function(require,module,exports){
12707 exports = module.exports = require('./lib/_stream_readable.js');
12708 exports.Stream = exports;
12709 exports.Readable = exports;
12710 exports.Writable = require('./lib/_stream_writable.js');
12711 exports.Duplex = require('./lib/_stream_duplex.js');
12712 exports.Transform = require('./lib/_stream_transform.js');
12713 exports.PassThrough = require('./lib/_stream_passthrough.js');
12715 },{"./lib/_stream_duplex.js":
15,"./lib/_stream_passthrough.js":
16,"./lib/_stream_readable.js":
17,"./lib/_stream_transform.js":
18,"./lib/_stream_writable.js":
19}],
25:[function(require,module,exports){
12716 module.exports = require('./readable').Transform
12718 },{"./readable":
24}],
26:[function(require,module,exports){
12719 module.exports = require('./lib/_stream_writable.js');
12721 },{"./lib/_stream_writable.js":
19}],
27:[function(require,module,exports){
12722 module.exports = require('buffer')
12724 },{"buffer":
5}],
28:[function(require,module,exports){
12725 // Copyright Joyent, Inc. and other Node contributors.
12727 // Permission is hereby granted, free of charge, to any person obtaining a
12728 // copy of this software and associated documentation files (the
12729 // "Software"), to deal in the Software without restriction, including
12730 // without limitation the rights to use, copy, modify, merge, publish,
12731 // distribute, sublicense, and/or sell copies of the Software, and to permit
12732 // persons to whom the Software is furnished to do so, subject to the
12733 // following conditions:
12735 // The above copyright notice and this permission notice shall be included
12736 // in all copies or substantial portions of the Software.
12738 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
12739 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
12740 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
12741 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
12742 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
12743 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
12744 // USE OR OTHER DEALINGS IN THE SOFTWARE.
12746 module.exports = Stream;
12748 var EE = require('events').EventEmitter;
12749 var inherits = require('inherits');
12751 inherits(Stream, EE);
12752 Stream.Readable = require('readable-stream/readable.js');
12753 Stream.Writable = require('readable-stream/writable.js');
12754 Stream.Duplex = require('readable-stream/duplex.js');
12755 Stream.Transform = require('readable-stream/transform.js');
12756 Stream.PassThrough = require('readable-stream/passthrough.js');
12758 // Backwards-compat with node
0.4.x
12759 Stream.Stream = Stream;
12763 // old-style streams. Note that the pipe method (the only relevant
12764 // part of this class) is overridden in the Readable class.
12766 function Stream() {
12770 Stream.prototype.pipe = function(dest, options) {
12773 function ondata(chunk) {
12774 if (dest.writable) {
12775 if (false === dest.write(chunk) && source.pause) {
12781 source.on('data', ondata);
12783 function ondrain() {
12784 if (source.readable && source.resume) {
12789 dest.on('drain', ondrain);
12791 // If the 'end' option is not supplied, dest.end() will be called when
12792 // source gets the 'end' or 'close' events. Only dest.end() once.
12793 if (!dest._isStdio && (!options || options.end !== false)) {
12794 source.on('end', onend);
12795 source.on('close', onclose);
12798 var didOnEnd = false;
12800 if (didOnEnd) return;
12807 function onclose() {
12808 if (didOnEnd) return;
12811 if (typeof dest.destroy === 'function') dest.destroy();
12814 // don't leave dangling pipes when there are errors.
12815 function onerror(er) {
12817 if (EE.listenerCount(this, 'error') ===
0) {
12818 throw er; // Unhandled stream error in pipe.
12822 source.on('error', onerror);
12823 dest.on('error', onerror);
12825 // remove all the event listeners that were added.
12826 function cleanup() {
12827 source.removeListener('data', ondata);
12828 dest.removeListener('drain', ondrain);
12830 source.removeListener('end', onend);
12831 source.removeListener('close', onclose);
12833 source.removeListener('error', onerror);
12834 dest.removeListener('error', onerror);
12836 source.removeListener('end', cleanup);
12837 source.removeListener('close', cleanup);
12839 dest.removeListener('close', cleanup);
12842 source.on('end', cleanup);
12843 source.on('close', cleanup);
12845 dest.on('close', cleanup);
12847 dest.emit('pipe', source);
12849 // Allow for unix-like usage: A.pipe(B).pipe(C)
12853 },{"events":
7,"inherits":
9,"readable-stream/duplex.js":
14,"readable-stream/passthrough.js":
23,"readable-stream/readable.js":
24,"readable-stream/transform.js":
25,"readable-stream/writable.js":
26}],
29:[function(require,module,exports){
12854 // Copyright Joyent, Inc. and other Node contributors.
12856 // Permission is hereby granted, free of charge, to any person obtaining a
12857 // copy of this software and associated documentation files (the
12858 // "Software"), to deal in the Software without restriction, including
12859 // without limitation the rights to use, copy, modify, merge, publish,
12860 // distribute, sublicense, and/or sell copies of the Software, and to permit
12861 // persons to whom the Software is furnished to do so, subject to the
12862 // following conditions:
12864 // The above copyright notice and this permission notice shall be included
12865 // in all copies or substantial portions of the Software.
12867 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
12868 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
12869 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
12870 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
12871 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
12872 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
12873 // USE OR OTHER DEALINGS IN THE SOFTWARE.
12875 var Buffer = require('buffer').Buffer;
12877 var isBufferEncoding = Buffer.isEncoding
12878 || function(encoding) {
12879 switch (encoding && encoding.toLowerCase()) {
12880 case 'hex': case 'utf8': case 'utf-
8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-
2': case 'utf16le': case 'utf-
16le': case 'raw': return true;
12881 default: return false;
12886 function assertEncoding(encoding) {
12887 if (encoding && !isBufferEncoding(encoding)) {
12888 throw new Error('Unknown encoding: ' + encoding);
12892 // StringDecoder provides an interface for efficiently splitting a series of
12893 // buffers into a series of JS strings without breaking apart multi-byte
12894 // characters. CESU-
8 is handled as part of the UTF-
8 encoding.
12896 // @TODO Handling all encodings inside a single object makes it very difficult
12897 // to reason about this code, so it should be split up in the future.
12898 // @TODO There should be a utf8-strict encoding that rejects invalid UTF-
8 code
12899 // points as used by CESU-
8.
12900 var StringDecoder = exports.StringDecoder = function(encoding) {
12901 this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
12902 assertEncoding(encoding);
12903 switch (this.encoding) {
12905 // CESU-
8 represents each of Surrogate Pair by
3-bytes
12906 this.surrogateSize =
3;
12910 // UTF-
16 represents each of Surrogate Pair by
2-bytes
12911 this.surrogateSize =
2;
12912 this.detectIncompleteChar = utf16DetectIncompleteChar;
12915 // Base-
64 stores
3 bytes in
4 chars, and pads the remainder.
12916 this.surrogateSize =
3;
12917 this.detectIncompleteChar = base64DetectIncompleteChar;
12920 this.write = passThroughWrite;
12924 // Enough space to store all bytes of a single character. UTF-
8 needs
4
12925 // bytes, but CESU-
8 may require up to
6 (
3 bytes per surrogate).
12926 this.charBuffer = new Buffer(
6);
12927 // Number of bytes received for the current incomplete multi-byte character.
12928 this.charReceived =
0;
12929 // Number of bytes expected for the current incomplete multi-byte character.
12930 this.charLength =
0;
12934 // write decodes the given buffer and returns it as JS string that is
12935 // guaranteed to not contain any partial multi-byte characters. Any partial
12936 // character found at the end of the buffer is buffered up, and will be
12937 // returned when calling write again with the remaining bytes.
12939 // Note: Converting a Buffer containing an orphan surrogate to a String
12940 // currently works, but converting a String to a Buffer (via `new Buffer`, or
12941 // Buffer#write) will replace incomplete surrogates with the unicode
12942 // replacement character. See https://codereview.chromium.org/
121173009/ .
12943 StringDecoder.prototype.write = function(buffer) {
12945 // if our last write ended with an incomplete multibyte character
12946 while (this.charLength) {
12947 // determine how many remaining bytes this buffer has to offer for this char
12948 var available = (buffer.length
>= this.charLength - this.charReceived) ?
12949 this.charLength - this.charReceived :
12952 // add the new bytes to the char buffer
12953 buffer.copy(this.charBuffer, this.charReceived,
0, available);
12954 this.charReceived += available;
12956 if (this.charReceived < this.charLength) {
12957 // still not enough chars in this buffer? wait for more ...
12961 // remove bytes belonging to the current character from the buffer
12962 buffer = buffer.slice(available, buffer.length);
12964 // get the character that was split
12965 charStr = this.charBuffer.slice(
0, this.charLength).toString(this.encoding);
12967 // CESU-
8: lead surrogate (D800-DBFF) is also the incomplete character
12968 var charCode = charStr.charCodeAt(charStr.length -
1);
12969 if (charCode
>=
0xD800 && charCode <=
0xDBFF) {
12970 this.charLength += this.surrogateSize;
12974 this.charReceived = this.charLength =
0;
12976 // if there are no more bytes in this buffer, just emit our char
12977 if (buffer.length ===
0) {
12983 // determine and set charLength / charReceived
12984 this.detectIncompleteChar(buffer);
12986 var end = buffer.length;
12987 if (this.charLength) {
12988 // buffer the incomplete character bytes we got
12989 buffer.copy(this.charBuffer,
0, buffer.length - this.charReceived, end);
12990 end -= this.charReceived;
12993 charStr += buffer.toString(this.encoding,
0, end);
12995 var end = charStr.length -
1;
12996 var charCode = charStr.charCodeAt(end);
12997 // CESU-
8: lead surrogate (D800-DBFF) is also the incomplete character
12998 if (charCode
>=
0xD800 && charCode <=
0xDBFF) {
12999 var size = this.surrogateSize;
13000 this.charLength += size;
13001 this.charReceived += size;
13002 this.charBuffer.copy(this.charBuffer, size,
0, size);
13003 buffer.copy(this.charBuffer,
0,
0, size);
13004 return charStr.substring(
0, end);
13007 // or just emit the charStr
13011 // detectIncompleteChar determines if there is an incomplete UTF-
8 character at
13012 // the end of the given buffer. If so, it sets this.charLength to the byte
13013 // length that character, and sets this.charReceived to the number of bytes
13014 // that are available for this character.
13015 StringDecoder.prototype.detectIncompleteChar = function(buffer) {
13016 // determine how many bytes we have to check at the end of this buffer
13017 var i = (buffer.length
>=
3) ?
3 : buffer.length;
13019 // Figure out if one of the last i bytes of our buffer announces an
13020 // incomplete char.
13021 for (; i
> 0; i--) {
13022 var c = buffer[buffer.length - i];
13024 // See http://en.wikipedia.org/wiki/UTF-
8#Description
13027 if (i ==
1 && c
>> 5 ==
0x06) {
13028 this.charLength =
2;
13033 if (i <=
2 && c
>> 4 ==
0x0E) {
13034 this.charLength =
3;
13039 if (i <=
3 && c
>> 3 ==
0x1E) {
13040 this.charLength =
4;
13044 this.charReceived = i;
13047 StringDecoder.prototype.end = function(buffer) {
13049 if (buffer && buffer.length)
13050 res = this.write(buffer);
13052 if (this.charReceived) {
13053 var cr = this.charReceived;
13054 var buf = this.charBuffer;
13055 var enc = this.encoding;
13056 res += buf.slice(
0, cr).toString(enc);
13062 function passThroughWrite(buffer) {
13063 return buffer.toString(this.encoding);
13066 function utf16DetectIncompleteChar(buffer) {
13067 this.charReceived = buffer.length %
2;
13068 this.charLength = this.charReceived ?
2 :
0;
13071 function base64DetectIncompleteChar(buffer) {
13072 this.charReceived = buffer.length %
3;
13073 this.charLength = this.charReceived ?
3 :
0;
13076 },{
"buffer":
5}],
30:[function(require,module,exports){
13077 (function (global){
13083 module.exports = deprecate;
13086 * Mark that a method should not be used.
13087 * Returns a modified function which warns once by default.
13089 * If `localStorage.noDeprecation = true` is set, then it is a no-op.
13091 * If `localStorage.throwDeprecation = true` is set, then deprecated functions
13092 * will throw an Error when invoked.
13094 * If `localStorage.traceDeprecation = true` is set, then deprecated functions
13095 * will invoke `console.trace()` instead of `console.error()`.
13097 * @param {Function} fn - the function to deprecate
13098 * @param {String} msg - the string to print to the console when `fn` is invoked
13099 * @returns {Function} a new
"deprecated" version of `fn`
13103 function deprecate (fn, msg) {
13104 if (config('noDeprecation')) {
13108 var warned = false;
13109 function deprecated() {
13111 if (config('throwDeprecation')) {
13112 throw new Error(msg);
13113 } else if (config('traceDeprecation')) {
13114 console.trace(msg);
13120 return fn.apply(this, arguments);
13127 * Checks `localStorage` for boolean values for the given `name`.
13129 * @param {String} name
13130 * @returns {Boolean}
13134 function config (name) {
13135 // accessing global.localStorage can trigger a DOMException in sandboxed iframes
13137 if (!global.localStorage) return false;
13141 var val = global.localStorage[name];
13142 if (null == val) return false;
13143 return String(val).toLowerCase() === 'true';
13146 }).call(this,typeof global !==
"undefined" ? global : typeof self !==
"undefined" ? self : typeof window !==
"undefined" ? window : {})
13147 },{}],
31:[function(require,module,exports){
13148 arguments[
4][
9][
0].apply(exports,arguments)
13149 },{
"dup":
9}],
32:[function(require,module,exports){
13150 module.exports = function isBuffer(arg) {
13151 return arg && typeof arg === 'object'
13152 && typeof arg.copy === 'function'
13153 && typeof arg.fill === 'function'
13154 && typeof arg.readUInt8 === 'function';
13156 },{}],
33:[function(require,module,exports){
13157 (function (process,global){
13158 // Copyright Joyent, Inc. and other Node contributors.
13160 // Permission is hereby granted, free of charge, to any person obtaining a
13161 // copy of this software and associated documentation files (the
13162 //
"Software"), to deal in the Software without restriction, including
13163 // without limitation the rights to use, copy, modify, merge, publish,
13164 // distribute, sublicense, and/or sell copies of the Software, and to permit
13165 // persons to whom the Software is furnished to do so, subject to the
13166 // following conditions:
13168 // The above copyright notice and this permission notice shall be included
13169 // in all copies or substantial portions of the Software.
13171 // THE SOFTWARE IS PROVIDED
"AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13172 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13173 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
13174 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
13175 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
13176 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
13177 // USE OR OTHER DEALINGS IN THE SOFTWARE.
13179 var formatRegExp = /%[sdj%]/g;
13180 exports.format = function(f) {
13181 if (!isString(f)) {
13183 for (var i =
0; i < arguments.length; i++) {
13184 objects.push(inspect(arguments[i]));
13186 return objects.join(' ');
13190 var args = arguments;
13191 var len = args.length;
13192 var str = String(f).replace(formatRegExp, function(x) {
13193 if (x === '%%') return '%';
13194 if (i
>= len) return x;
13196 case '%s': return String(args[i++]);
13197 case '%d': return Number(args[i++]);
13200 return JSON.stringify(args[i++]);
13202 return '[Circular]';
13208 for (var x = args[i]; i < len; x = args[++i]) {
13209 if (isNull(x) || !isObject(x)) {
13212 str += ' ' + inspect(x);
13219 // Mark that a method should not be used.
13220 // Returns a modified function which warns once by default.
13221 // If --no-deprecation is set, then it is a no-op.
13222 exports.deprecate = function(fn, msg) {
13223 // Allow for deprecating things in the process of starting up.
13224 if (isUndefined(global.process)) {
13225 return function() {
13226 return exports.deprecate(fn, msg).apply(this, arguments);
13230 if (process.noDeprecation === true) {
13234 var warned = false;
13235 function deprecated() {
13237 if (process.throwDeprecation) {
13238 throw new Error(msg);
13239 } else if (process.traceDeprecation) {
13240 console.trace(msg);
13242 console.error(msg);
13246 return fn.apply(this, arguments);
13255 exports.debuglog = function(set) {
13256 if (isUndefined(debugEnviron))
13257 debugEnviron = process.env.NODE_DEBUG || '';
13258 set = set.toUpperCase();
13259 if (!debugs[set]) {
13260 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
13261 var pid = process.pid;
13262 debugs[set] = function() {
13263 var msg = exports.format.apply(exports, arguments);
13264 console.error('%s %d: %s', set, pid, msg);
13267 debugs[set] = function() {};
13270 return debugs[set];
13275 * Echos the value of a value. Trys to print the value out
13276 * in the best way possible given the different types.
13278 * @param {Object} obj The object to print out.
13279 * @param {Object} opts Optional options object that alters the output.
13281 /* legacy: obj, showHidden, depth, colors*/
13282 function inspect(obj, opts) {
13286 stylize: stylizeNoColor
13289 if (arguments.length
>=
3) ctx.depth = arguments[
2];
13290 if (arguments.length
>=
4) ctx.colors = arguments[
3];
13291 if (isBoolean(opts)) {
13293 ctx.showHidden = opts;
13295 // got an "options" object
13296 exports._extend(ctx, opts);
13298 // set default options
13299 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
13300 if (isUndefined(ctx.depth)) ctx.depth =
2;
13301 if (isUndefined(ctx.colors)) ctx.colors = false;
13302 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
13303 if (ctx.colors) ctx.stylize = stylizeWithColor;
13304 return formatValue(ctx, obj, ctx.depth);
13306 exports.inspect = inspect;
13309 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
13312 'italic' : [
3,
23],
13313 'underline' : [
4,
24],
13314 'inverse' : [
7,
27],
13315 'white' : [
37,
39],
13317 'black' : [
30,
39],
13320 'green' : [
32,
39],
13321 'magenta' : [
35,
39],
13323 'yellow' : [
33,
39]
13326 // Don't use 'blue' not visible on cmd.exe
13329 'number': 'yellow',
13330 'boolean': 'yellow',
13331 'undefined': 'grey',
13335 // "name": intentionally not styling
13340 function stylizeWithColor(str, styleType) {
13341 var style = inspect.styles[styleType];
13344 return '\u001b[' + inspect.colors[style][
0] + 'm' + str +
13345 '\u001b[' + inspect.colors[style][
1] + 'm';
13352 function stylizeNoColor(str, styleType) {
13357 function arrayToHash(array) {
13360 array.forEach(function(val, idx) {
13368 function formatValue(ctx, value, recurseTimes) {
13369 // Provide a hook for user-specified inspect functions.
13370 // Check that value is an object with an inspect function on it
13371 if (ctx.customInspect &&
13373 isFunction(value.inspect) &&
13374 // Filter out the util module, it's inspect function is special
13375 value.inspect !== exports.inspect &&
13376 // Also filter out any prototype objects using the circular check.
13377 !(value.constructor && value.constructor.prototype === value)) {
13378 var ret = value.inspect(recurseTimes, ctx);
13379 if (!isString(ret)) {
13380 ret = formatValue(ctx, ret, recurseTimes);
13385 // Primitive types cannot have properties
13386 var primitive = formatPrimitive(ctx, value);
13391 // Look up the keys of the object.
13392 var keys = Object.keys(value);
13393 var visibleKeys = arrayToHash(keys);
13395 if (ctx.showHidden) {
13396 keys = Object.getOwnPropertyNames(value);
13399 // IE doesn't make error fields non-enumerable
13400 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs
.94).aspx
13402 && (keys.indexOf('message')
>=
0 || keys.indexOf('description')
>=
0)) {
13403 return formatError(value);
13406 // Some type of object without properties can be shortcutted.
13407 if (keys.length ===
0) {
13408 if (isFunction(value)) {
13409 var name = value.name ? ': ' + value.name : '';
13410 return ctx.stylize('[Function' + name + ']', 'special');
13412 if (isRegExp(value)) {
13413 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
13415 if (isDate(value)) {
13416 return ctx.stylize(Date.prototype.toString.call(value), 'date');
13418 if (isError(value)) {
13419 return formatError(value);
13423 var base = '', array = false, braces = ['{', '}'];
13425 // Make Array say that they are Array
13426 if (isArray(value)) {
13428 braces = ['[', ']'];
13431 // Make functions say that they are functions
13432 if (isFunction(value)) {
13433 var n = value.name ? ': ' + value.name : '';
13434 base = ' [Function' + n + ']';
13437 // Make RegExps say that they are RegExps
13438 if (isRegExp(value)) {
13439 base = ' ' + RegExp.prototype.toString.call(value);
13442 // Make dates with properties first say the date
13443 if (isDate(value)) {
13444 base = ' ' + Date.prototype.toUTCString.call(value);
13447 // Make error with message first say the error
13448 if (isError(value)) {
13449 base = ' ' + formatError(value);
13452 if (keys.length ===
0 && (!array || value.length ==
0)) {
13453 return braces[
0] + base + braces[
1];
13456 if (recurseTimes <
0) {
13457 if (isRegExp(value)) {
13458 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
13460 return ctx.stylize('[Object]', 'special');
13464 ctx.seen.push(value);
13468 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
13470 output = keys.map(function(key) {
13471 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
13477 return reduceToSingleString(output, base, braces);
13481 function formatPrimitive(ctx, value) {
13482 if (isUndefined(value))
13483 return ctx.stylize('undefined', 'undefined');
13484 if (isString(value)) {
13485 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
13486 .replace(/'/g, "\\'")
13487 .replace(/\\"/g, '"') + '\'';
13488 return ctx.stylize(simple, 'string');
13490 if (isNumber(value))
13491 return ctx.stylize('' + value, 'number');
13492 if (isBoolean(value))
13493 return ctx.stylize('' + value, 'boolean');
13494 // For some reason typeof null is "object", so special case here.
13496 return ctx.stylize('null', 'null');
13500 function formatError(value) {
13501 return '[' + Error.prototype.toString.call(value) + ']';
13505 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
13507 for (var i =
0, l = value.length; i < l; ++i) {
13508 if (hasOwnProperty(value, String(i))) {
13509 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
13515 keys.forEach(function(key) {
13516 if (!key.match(/^\d+$/)) {
13517 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
13525 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
13526 var name, str, desc;
13527 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
13530 str = ctx.stylize('[Getter/Setter]', 'special');
13532 str = ctx.stylize('[Getter]', 'special');
13536 str = ctx.stylize('[Setter]', 'special');
13539 if (!hasOwnProperty(visibleKeys, key)) {
13540 name = '[' + key + ']';
13543 if (ctx.seen.indexOf(desc.value) <
0) {
13544 if (isNull(recurseTimes)) {
13545 str = formatValue(ctx, desc.value, null);
13547 str = formatValue(ctx, desc.value, recurseTimes -
1);
13549 if (str.indexOf('\n')
> -
1) {
13551 str = str.split('\n').map(function(line) {
13553 }).join('\n').substr(
2);
13555 str = '\n' + str.split('\n').map(function(line) {
13561 str = ctx.stylize('[Circular]', 'special');
13564 if (isUndefined(name)) {
13565 if (array && key.match(/^\d+$/)) {
13568 name = JSON.stringify('' + key);
13569 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-
9]*)"$/)) {
13570 name = name.substr(
1, name.length -
2);
13571 name = ctx.stylize(name, 'name');
13573 name = name.replace(/'/g, "\\'")
13574 .replace(/\\"/g, '"')
13575 .replace(/(^"|"$)/g, "'");
13576 name = ctx.stylize(name, 'string');
13580 return name + ': ' + str;
13584 function reduceToSingleString(output, base, braces) {
13585 var numLinesEst =
0;
13586 var length = output.reduce(function(prev, cur) {
13588 if (cur.indexOf('\n')
>=
0) numLinesEst++;
13589 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length +
1;
13594 (base === '' ? '' : base + '\n ') +
13596 output.join(',\n ') +
13601 return braces[
0] + base + ' ' + output.join(', ') + ' ' + braces[
1];
13605 // NOTE: These type checking functions intentionally don't use `instanceof`
13606 // because it is fragile and can be easily faked with `Object.create()`.
13607 function isArray(ar) {
13608 return Array.isArray(ar);
13610 exports.isArray = isArray;
13612 function isBoolean(arg) {
13613 return typeof arg === 'boolean';
13615 exports.isBoolean = isBoolean;
13617 function isNull(arg) {
13618 return arg === null;
13620 exports.isNull = isNull;
13622 function isNullOrUndefined(arg) {
13623 return arg == null;
13625 exports.isNullOrUndefined = isNullOrUndefined;
13627 function isNumber(arg) {
13628 return typeof arg === 'number';
13630 exports.isNumber = isNumber;
13632 function isString(arg) {
13633 return typeof arg === 'string';
13635 exports.isString = isString;
13637 function isSymbol(arg) {
13638 return typeof arg === 'symbol';
13640 exports.isSymbol = isSymbol;
13642 function isUndefined(arg) {
13643 return arg === void
0;
13645 exports.isUndefined = isUndefined;
13647 function isRegExp(re) {
13648 return isObject(re) && objectToString(re) === '[object RegExp]';
13650 exports.isRegExp = isRegExp;
13652 function isObject(arg) {
13653 return typeof arg === 'object' && arg !== null;
13655 exports.isObject = isObject;
13657 function isDate(d) {
13658 return isObject(d) && objectToString(d) === '[object Date]';
13660 exports.isDate = isDate;
13662 function isError(e) {
13663 return isObject(e) &&
13664 (objectToString(e) === '[object Error]' || e instanceof Error);
13666 exports.isError = isError;
13668 function isFunction(arg) {
13669 return typeof arg === 'function';
13671 exports.isFunction = isFunction;
13673 function isPrimitive(arg) {
13674 return arg === null ||
13675 typeof arg === 'boolean' ||
13676 typeof arg === 'number' ||
13677 typeof arg === 'string' ||
13678 typeof arg === 'symbol' || // ES6 symbol
13679 typeof arg === 'undefined';
13681 exports.isPrimitive = isPrimitive;
13683 exports.isBuffer = require('./support/isBuffer');
13685 function objectToString(o) {
13686 return Object.prototype.toString.call(o);
13691 return n <
10 ? '
0' + n.toString(
10) : n.toString(
10);
13695 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
13696 'Oct', 'Nov', 'Dec'];
13699 function timestamp() {
13700 var d = new Date();
13701 var time = [pad(d.getHours()),
13702 pad(d.getMinutes()),
13703 pad(d.getSeconds())].join(':');
13704 return [d.getDate(), months[d.getMonth()], time].join(' ');
13708 // log is just a thin wrapper to console.log that prepends a timestamp
13709 exports.log = function() {
13710 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
13715 * Inherit the prototype methods from one constructor into another.
13717 * The Function.prototype.inherits from lang.js rewritten as a standalone
13718 * function (not on Function.prototype). NOTE: If this file is to be loaded
13719 * during bootstrapping this function needs to be rewritten using some native
13720 * functions as prototype setup using normal JavaScript does not work as
13721 * expected during bootstrapping (see mirror.js in r114903).
13723 * @param {function} ctor Constructor function which needs to inherit the
13725 * @param {function} superCtor Constructor function to inherit prototype from.
13727 exports.inherits = require('inherits');
13729 exports._extend = function(origin, add) {
13730 // Don't do anything if add isn't an object
13731 if (!add || !isObject(add)) return origin;
13733 var keys = Object.keys(add);
13734 var i = keys.length;
13736 origin[keys[i]] = add[keys[i]];
13741 function hasOwnProperty(obj, prop) {
13742 return Object.prototype.hasOwnProperty.call(obj, prop);
13745 }).call(this,require('_process'),typeof global !==
"undefined" ? global : typeof self !==
"undefined" ? self : typeof window !==
"undefined" ? window : {})
13746 },{
"./support/isBuffer":
32,
"_process":
13,
"inherits":
31}],
34:[function(require,module,exports){
13748 base58: require('bs58'),
13749 bitcoin: require('bitcoinjs-lib'),
13750 ecurve: require('ecurve'),
13751 BigInteger: require('bigi'),
13752 Buffer: require('buffer'),
13753 elliptic: require('elliptic'),
13754 bs58check: require('bs58check'),
13757 module.exports = bitcoin;
13759 },{
"bigi":
39,
"bitcoinjs-lib":
52,
"bs58":
83,
"bs58check":
85,
"buffer":
5,
"ecurve":
94,
"elliptic":
97}],
35:[function(require,module,exports){
13761 // Forked from https://github.com/cryptocoinjs/bs58
13762 // Originally written by Mike Hearn for BitcoinJ
13763 // Copyright (c)
2011 Google Inc
13764 // Ported to JavaScript by Stefan Thomas
13765 // Merged Buffer refactorings from base58-native by Stephen Pair
13766 // Copyright (c)
2013 BitPay Inc
13768 var Buffer = require('safe-buffer').Buffer
13770 module.exports = function base (ALPHABET) {
13771 var ALPHABET_MAP = {}
13772 var BASE = ALPHABET.length
13773 var LEADER = ALPHABET.charAt(
0)
13775 // pre-compute lookup table
13776 for (var z =
0; z < ALPHABET.length; z++) {
13777 var x = ALPHABET.charAt(z)
13779 if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')
13780 ALPHABET_MAP[x] = z
13783 function encode (source) {
13784 if (source.length ===
0) return ''
13787 for (var i =
0; i < source.length; ++i) {
13788 for (var j =
0, carry = source[i]; j < digits.length; ++j) {
13789 carry += digits[j] <<
8
13790 digits[j] = carry % BASE
13791 carry = (carry / BASE) |
0
13794 while (carry
> 0) {
13795 digits.push(carry % BASE)
13796 carry = (carry / BASE) |
0
13802 // deal with leading zeros
13803 for (var k =
0; source[k] ===
0 && k < source.length -
1; ++k) string += ALPHABET[
0]
13804 // convert digits to a string
13805 for (var q = digits.length -
1; q
>=
0; --q) string += ALPHABET[digits[q]]
13810 function decodeUnsafe (string) {
13811 if (string.length ===
0) return Buffer.allocUnsafe(
0)
13814 for (var i =
0; i < string.length; i++) {
13815 var value = ALPHABET_MAP[string[i]]
13816 if (value === undefined) return
13818 for (var j =
0, carry = value; j < bytes.length; ++j) {
13819 carry += bytes[j] * BASE
13820 bytes[j] = carry &
0xff
13824 while (carry
> 0) {
13825 bytes.push(carry &
0xff)
13830 // deal with leading zeros
13831 for (var k =
0; string[k] === LEADER && k < string.length -
1; ++k) {
13835 return Buffer.from(bytes.reverse())
13838 function decode (string) {
13839 var buffer = decodeUnsafe(string)
13840 if (buffer) return buffer
13842 throw new Error('Non-base' + BASE + ' character')
13847 decodeUnsafe: decodeUnsafe,
13852 },{"safe-buffer":
128}],
36:[function(require,module,exports){
13854 let ALPHABET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l'
13856 // pre-compute lookup table
13857 let ALPHABET_MAP = {}
13858 for (let z =
0; z < ALPHABET.length; z++) {
13859 let x = ALPHABET.charAt(z)
13861 if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')
13862 ALPHABET_MAP[x] = z
13865 function polymodStep (pre) {
13867 return ((pre &
0x1FFFFFF) <<
5) ^
13868 (-((b
>> 0) &
1) &
0x3b6a57b2) ^
13869 (-((b
>> 1) &
1) &
0x26508e6d) ^
13870 (-((b
>> 2) &
1) &
0x1ea119fa) ^
13871 (-((b
>> 3) &
1) &
0x3d4233dd) ^
13872 (-((b
>> 4) &
1) &
0x2a1462b3)
13875 function prefixChk (prefix) {
13877 for (let i =
0; i < prefix.length; ++i) {
13878 let c = prefix.charCodeAt(i)
13879 if (c <
33 || c
> 126) throw new Error('Invalid prefix (' + prefix + ')')
13881 chk = polymodStep(chk) ^ (c
>> 5)
13883 chk = polymodStep(chk)
13885 for (let i =
0; i < prefix.length; ++i) {
13886 let v = prefix.charCodeAt(i)
13887 chk = polymodStep(chk) ^ (v &
0x1f)
13892 function encode (prefix, words) {
13894 if ((prefix.length +
7 + words.length)
> 90) throw new TypeError('Exceeds Bech32 maximum length')
13895 prefix = prefix.toLowerCase()
13897 // determine chk mod
13898 let chk = prefixChk(prefix)
13899 let result = prefix + '
1'
13900 for (let i =
0; i < words.length; ++i) {
13902 if ((x
>> 5) !==
0) throw new Error('Non
5-bit word')
13904 chk = polymodStep(chk) ^ x
13905 result += ALPHABET.charAt(x)
13908 for (let i =
0; i <
6; ++i) {
13909 chk = polymodStep(chk)
13913 for (let i =
0; i <
6; ++i) {
13914 let v = (chk
>> ((
5 - i) *
5)) &
0x1f
13915 result += ALPHABET.charAt(v)
13921 function decode (str) {
13922 if (str.length <
8) throw new TypeError(str + ' too short')
13923 if (str.length
> 90) throw new TypeError(str + ' too long')
13925 // don't allow mixed case
13926 let lowered = str.toLowerCase()
13927 let uppered = str.toUpperCase()
13928 if (str !== lowered && str !== uppered) throw new Error('Mixed-case string ' + str)
13931 let split = str.lastIndexOf('
1')
13932 if (split ===
0) throw new Error('Missing prefix for ' + str)
13934 let prefix = str.slice(
0, split)
13935 let wordChars = str.slice(split +
1)
13936 if (wordChars.length <
6) throw new Error('Data too short')
13938 let chk = prefixChk(prefix)
13940 for (let i =
0; i < wordChars.length; ++i) {
13941 let c = wordChars.charAt(i)
13942 let v = ALPHABET_MAP[c]
13943 if (v === undefined) throw new Error('Unknown character ' + c)
13944 chk = polymodStep(chk) ^ v
13946 // not in the checksum?
13947 if (i +
6 >= wordChars.length) continue
13951 if (chk !==
1) throw new Error('Invalid checksum for ' + str)
13952 return { prefix, words }
13955 function convert (data, inBits, outBits, pad) {
13958 let maxV = (
1 << outBits) -
1
13961 for (let i =
0; i < data.length; ++i) {
13962 value = (value << inBits) | data[i]
13965 while (bits
>= outBits) {
13967 result.push((value
>> bits) & maxV)
13973 result.push((value << (outBits - bits)) & maxV)
13976 if (bits
>= inBits) throw new Error('Excess padding')
13977 if ((value << (outBits - bits)) & maxV) throw new Error('Non-zero padding')
13983 function toWords (bytes) {
13984 return convert(bytes,
8,
5, true)
13987 function fromWords (words) {
13988 return convert(words,
5,
8, false)
13991 module.exports = { decode, encode, toWords, fromWords }
13993 },{}],
37:[function(require,module,exports){
13994 // (public) Constructor
13995 function BigInteger(a, b, c) {
13996 if (!(this instanceof BigInteger))
13997 return new BigInteger(a, b, c)
14000 if ("number" == typeof a) this.fromNumber(a, b, c)
14001 else if (b == null && "string" != typeof a) this.fromString(a,
256)
14002 else this.fromString(a, b)
14006 var proto = BigInteger.prototype
14008 // duck-typed isBigInteger
14009 proto.__bigi = require('../package.json').version
14010 BigInteger.isBigInteger = function (obj, check_ver) {
14011 return obj && obj.__bigi && (!check_ver || obj.__bigi === proto.__bigi)
14017 // am: Compute w_j += (x*this_i), propagate carries,
14018 // c is initial carry, returns final carry.
14019 // c <
3*dvalue, x <
2*dvalue, this_i < dvalue
14020 // We need to select the fastest one that works in this environment.
14022 // am1: use a single mult and divide to get the high bits,
14023 // max digit bits should be
26 because
14024 // max internal value =
2*dvalue^
2-
2*dvalue (<
2^
53)
14025 function am1(i, x, w, j, c, n) {
14027 var v = x * this[i++] + w[j] + c
14028 c = Math.floor(v /
0x4000000)
14029 w[j++] = v &
0x3ffffff
14033 // am2 avoids a big mult-and-extract completely.
14034 // Max digit bits should be <=
30 because we do bitwise ops
14035 // on values up to
2*hdvalue^
2-hdvalue-
1 (<
2^
31)
14036 function am2(i, x, w, j, c, n) {
14037 var xl = x &
0x7fff,
14040 var l = this[i] &
0x7fff
14041 var h = this[i++]
>> 15
14042 var m = xh * l + h * xl
14043 l = xl * l + ((m &
0x7fff) <<
15) + w[j] + (c &
0x3fffffff)
14044 c = (l
>>> 30) + (m
>>> 15) + xh * h + (c
>>> 30)
14045 w[j++] = l &
0x3fffffff
14049 // Alternately, set max digit bits to
28 since some
14050 // browsers slow down when dealing with
32-bit numbers.
14051 function am3(i, x, w, j, c, n) {
14052 var xl = x &
0x3fff,
14055 var l = this[i] &
0x3fff
14056 var h = this[i++]
>> 14
14057 var m = xh * l + h * xl
14058 l = xl * l + ((m &
0x3fff) <<
14) + w[j] + c
14059 c = (l
>> 28) + (m
>> 14) + xh * h
14060 w[j++] = l &
0xfffffff
14066 BigInteger.prototype.am = am1
14069 BigInteger.prototype.DB = dbits
14070 BigInteger.prototype.DM = ((
1 << dbits) -
1)
14071 var DV = BigInteger.prototype.DV = (
1 << dbits)
14074 BigInteger.prototype.FV = Math.pow(
2, BI_FP)
14075 BigInteger.prototype.F1 = BI_FP - dbits
14076 BigInteger.prototype.F2 =
2 * dbits - BI_FP
14078 // Digit conversions
14079 var BI_RM =
"0123456789abcdefghijklmnopqrstuvwxyz"
14080 var BI_RC = new Array()
14082 rr =
"0".charCodeAt(
0)
14083 for (vv =
0; vv <=
9; ++vv) BI_RC[rr++] = vv
14084 rr =
"a".charCodeAt(
0)
14085 for (vv =
10; vv <
36; ++vv) BI_RC[rr++] = vv
14086 rr =
"A".charCodeAt(
0)
14087 for (vv =
10; vv <
36; ++vv) BI_RC[rr++] = vv
14089 function int2char(n) {
14090 return BI_RM.charAt(n)
14093 function intAt(s, i) {
14094 var c = BI_RC[s.charCodeAt(i)]
14095 return (c == null) ? -
1 : c
14098 // (protected) copy this to r
14099 function bnpCopyTo(r) {
14100 for (var i = this.t -
1; i
>=
0; --i) r[i] = this[i]
14105 // (protected) set from integer value x, -DV <= x < DV
14106 function bnpFromInt(x) {
14108 this.s = (x <
0) ? -
1 :
0
14109 if (x
> 0) this[
0] = x
14110 else if (x < -
1) this[
0] = x + DV
14114 // return bigint initialized to value
14116 var r = new BigInteger()
14121 // (protected) set from string and radix
14122 function bnpFromString(s, b) {
14127 else if (b ==
8) k =
3
14128 else if (b ==
256) k =
8; // byte array
14129 else if (b ==
2) k =
1
14130 else if (b ==
32) k =
5
14131 else if (b ==
4) k =
2
14133 self.fromRadix(s, b)
14142 var x = (k ==
8) ? s[i] &
0xff : intAt(s, i)
14144 if (s.charAt(i) == "-") mi = true
14150 else if (sh + k
> self.DB) {
14151 self[self.t -
1] |= (x & ((
1 << (self.DB - sh)) -
1)) << sh
14152 self[self.t++] = (x
>> (self.DB - sh))
14154 self[self.t -
1] |= x << sh
14156 if (sh
>= self.DB) sh -= self.DB
14158 if (k ==
8 && (s[
0] &
0x80) !=
0) {
14160 if (sh
> 0) self[self.t -
1] |= ((
1 << (self.DB - sh)) -
1) << sh
14163 if (mi) BigInteger.ZERO.subTo(self, self)
14166 // (protected) clamp off excess high words
14167 function bnpClamp() {
14168 var c = this.s & this.DM
14169 while (this.t
> 0 && this[this.t -
1] == c)--this.t
14172 // (public) return string representation in given radix
14173 function bnToString(b) {
14175 if (self.s <
0) return
"-" + self.negate()
14179 else if (b ==
8) k =
3
14180 else if (b ==
2) k =
1
14181 else if (b ==
32) k =
5
14182 else if (b ==
4) k =
2
14183 else return self.toRadix(b)
14184 var km = (
1 << k) -
1,
14188 var p = self.DB - (i * self.DB) % k
14190 if (p < self.DB && (d = self[i]
>> p)
> 0) {
14196 d = (self[i] & ((
1 << p) -
1)) << (k - p)
14197 d |= self[--i]
>> (p += self.DB - k)
14199 d = (self[i]
>> (p -= k)) & km
14205 if (d
> 0) m = true
14206 if (m) r += int2char(d)
14213 function bnNegate() {
14214 var r = new BigInteger()
14215 BigInteger.ZERO.subTo(this, r)
14221 return (this.s <
0) ? this.negate() : this
14224 // (public) return + if this
> a, - if this < a,
0 if equal
14225 function bnCompareTo(a) {
14226 var r = this.s - a.s
14227 if (r !=
0) return r
14230 if (r !=
0) return (this.s <
0) ? -r : r
14232 if ((r = this[i] - a[i]) !=
0) return r
14236 // returns bit length of the integer x
14237 function nbits(x) {
14240 if ((t = x
>>> 16) !=
0) {
14244 if ((t = x
>> 8) !=
0) {
14248 if ((t = x
>> 4) !=
0) {
14252 if ((t = x
>> 2) !=
0) {
14256 if ((t = x
>> 1) !=
0) {
14263 // (public) return the number of bits in
"this"
14264 function bnBitLength() {
14265 if (this.t <=
0) return
0
14266 return this.DB * (this.t -
1) + nbits(this[this.t -
1] ^ (this.s & this.DM))
14269 // (public) return the number of bytes in
"this"
14270 function bnByteLength() {
14271 return this.bitLength()
>> 3
14274 // (protected) r = this << n*DB
14275 function bnpDLShiftTo(n, r) {
14277 for (i = this.t -
1; i
>=
0; --i) r[i + n] = this[i]
14278 for (i = n -
1; i
>=
0; --i) r[i] =
0
14283 // (protected) r = this
>> n*DB
14284 function bnpDRShiftTo(n, r) {
14285 for (var i = n; i < this.t; ++i) r[i - n] = this[i]
14286 r.t = Math.max(this.t - n,
0)
14290 // (protected) r = this << n
14291 function bnpLShiftTo(n, r) {
14293 var bs = n % self.DB
14294 var cbs = self.DB - bs
14295 var bm = (
1 << cbs) -
1
14296 var ds = Math.floor(n / self.DB),
14297 c = (self.s << bs) & self.DM,
14299 for (i = self.t -
1; i
>=
0; --i) {
14300 r[i + ds +
1] = (self[i]
>> cbs) | c
14301 c = (self[i] & bm) << bs
14303 for (i = ds -
1; i
>=
0; --i) r[i] =
0
14305 r.t = self.t + ds +
1
14310 // (protected) r = this
>> n
14311 function bnpRShiftTo(n, r) {
14314 var ds = Math.floor(n / self.DB)
14315 if (ds
>= self.t) {
14319 var bs = n % self.DB
14320 var cbs = self.DB - bs
14321 var bm = (
1 << bs) -
1
14322 r[
0] = self[ds]
>> bs
14323 for (var i = ds +
1; i < self.t; ++i) {
14324 r[i - ds -
1] |= (self[i] & bm) << cbs
14325 r[i - ds] = self[i]
>> bs
14327 if (bs
> 0) r[self.t - ds -
1] |= (self.s & bm) << cbs
14332 // (protected) r = this - a
14333 function bnpSubTo(a, r) {
14337 m = Math.min(a.t, self.t)
14339 c += self[i] - a[i]
14340 r[i++] = c & self.DM
14343 if (a.t < self.t) {
14345 while (i < self.t) {
14347 r[i++] = c & self.DM
14355 r[i++] = c & self.DM
14360 r.s = (c <
0) ? -
1 :
0
14361 if (c < -
1) r[i++] = self.DV + c
14362 else if (c
> 0) r[i++] = c
14367 // (protected) r = this * a, r != this,a (HAC
14.12)
14368 //
"this" should be the larger one if appropriate.
14369 function bnpMultiplyTo(a, r) {
14370 var x = this.abs(),
14374 while (--i
>=
0) r[i] =
0
14375 for (i =
0; i < y.t; ++i) r[i + x.t] = x.am(
0, y[i], r, i,
0, x.t)
14378 if (this.s != a.s) BigInteger.ZERO.subTo(r, r)
14381 // (protected) r = this^
2, r != this (HAC
14.16)
14382 function bnpSquareTo(r) {
14384 var i = r.t =
2 * x.t
14385 while (--i
>=
0) r[i] =
0
14386 for (i =
0; i < x.t -
1; ++i) {
14387 var c = x.am(i, x[i], r,
2 * i,
0,
1)
14388 if ((r[i + x.t] += x.am(i +
1,
2 * x[i], r,
2 * i +
1, c, x.t - i -
1))
>= x.DV) {
14393 if (r.t
> 0) r[r.t -
1] += x.am(i, x[i], r,
2 * i,
0,
1)
14398 // (protected) divide this by m, quotient and remainder to q, r (HAC
14.20)
14399 // r != q, this != m. q or r may be null.
14400 function bnpDivRemTo(m, q, r) {
14403 if (pm.t <=
0) return
14404 var pt = self.abs()
14406 if (q != null) q.fromInt(
0)
14407 if (r != null) self.copyTo(r)
14410 if (r == null) r = new BigInteger()
14411 var y = new BigInteger(),
14414 var nsh = self.DB - nbits(pm[pm.t -
1]); // normalize modulus
14416 pm.lShiftTo(nsh, y)
14417 pt.lShiftTo(nsh, r)
14424 if (y0 ==
0) return
14425 var yt = y0 * (
1 << self.F1) + ((ys
> 1) ? y[ys -
2]
>> self.F2 :
0)
14426 var d1 = self.FV / yt,
14427 d2 = (
1 << self.F1) / yt,
14431 t = (q == null) ? new BigInteger() : q
14433 if (r.compareTo(t)
>=
0) {
14437 BigInteger.ONE.dlShiftTo(ys, t)
14438 t.subTo(y, y); // "negative" y so we can replace sub with am later
14439 while (y.t < ys) y[y.t++] =
0
14441 // Estimate quotient digit
14442 var qd = (r[--i] == y0) ? self.DM : Math.floor(r[i] * d1 + (r[i -
1] + e) * d2)
14443 if ((r[i] += y.am(
0, qd, r, j,
0, ys)) < qd) { // Try it out
14446 while (r[i] < --qd) r.subTo(t, r)
14451 if (ts != ms) BigInteger.ZERO.subTo(q, q)
14455 if (nsh
> 0) r.rShiftTo(nsh, r); // Denormalize remainder
14456 if (ts <
0) BigInteger.ZERO.subTo(r, r)
14459 // (public) this mod a
14460 function bnMod(a) {
14461 var r = new BigInteger()
14463 .divRemTo(a, null, r)
14464 if (this.s <
0 && r.compareTo(BigInteger.ZERO)
> 0) a.subTo(r, r)
14468 // Modular reduction using
"classic" algorithm
14469 function Classic(m) {
14473 function cConvert(x) {
14474 if (x.s <
0 || x.compareTo(this.m)
>=
0) return x.mod(this.m)
14478 function cRevert(x) {
14482 function cReduce(x) {
14483 x.divRemTo(this.m, null, x)
14486 function cMulTo(x, y, r) {
14491 function cSqrTo(x, r) {
14496 Classic.prototype.convert = cConvert
14497 Classic.prototype.revert = cRevert
14498 Classic.prototype.reduce = cReduce
14499 Classic.prototype.mulTo = cMulTo
14500 Classic.prototype.sqrTo = cSqrTo
14502 // (protected) return "-
1/this %
2^DB"; useful for Mont. reduction
14506 // xy(
2-xy) = (
1+km)(
1-km)
14507 // x[y(
2-xy)] =
1-k^
2m^
2
14508 // x[y(
2-xy)] ==
1 (mod m^
2)
14509 // if y is
1/x mod m, then y(
2-xy) is
1/x mod m^
2
14510 // should reduce x and y(
2-xy) by m^
2 at each step to keep size bounded.
14511 // JS multiply "overflows" differently from C/C++, so care is needed here.
14512 function bnpInvDigit() {
14513 if (this.t <
1) return
0
14515 if ((x &
1) ==
0) return
0
14516 var y = x &
3; // y ==
1/x mod
2^
2
14517 y = (y * (
2 - (x &
0xf) * y)) &
0xf; // y ==
1/x mod
2^
4
14518 y = (y * (
2 - (x &
0xff) * y)) &
0xff; // y ==
1/x mod
2^
8
14519 y = (y * (
2 - (((x &
0xffff) * y) &
0xffff))) &
0xffff; // y ==
1/x mod
2^
16
14520 // last step - calculate inverse mod DV directly
14521 // assumes
16 < DB <=
32 and assumes ability to handle
48-bit ints
14522 y = (y * (
2 - x * y % this.DV)) % this.DV; // y ==
1/x mod
2^dbits
14523 // we really want the negative inverse, and -DV < y < DV
14524 return (y
> 0) ? this.DV - y : -y
14527 // Montgomery reduction
14528 function Montgomery(m) {
14530 this.mp = m.invDigit()
14531 this.mpl = this.mp &
0x7fff
14532 this.mph = this.mp
>> 15
14533 this.um = (
1 << (m.DB -
15)) -
1
14538 function montConvert(x) {
14539 var r = new BigInteger()
14541 .dlShiftTo(this.m.t, r)
14542 r.divRemTo(this.m, null, r)
14543 if (x.s <
0 && r.compareTo(BigInteger.ZERO)
> 0) this.m.subTo(r, r)
14548 function montRevert(x) {
14549 var r = new BigInteger()
14555 // x = x/R mod m (HAC
14.32)
14556 function montReduce(x) {
14557 while (x.t <= this.mt2) // pad x so am has enough room later
14559 for (var i =
0; i < this.m.t; ++i) {
14560 // faster way of calculating u0 = x[i]*mp mod DV
14561 var j = x[i] &
0x7fff
14562 var u0 = (j * this.mpl + (((j * this.mph + (x[i]
>> 15) * this.mpl) & this.um) <<
15)) & x.DM
14563 // use am to combine the multiply-shift-add into one call
14565 x[j] += this.m.am(
0, u0, x, i,
0, this.m.t)
14567 while (x[j]
>= x.DV) {
14573 x.drShiftTo(this.m.t, x)
14574 if (x.compareTo(this.m)
>=
0) x.subTo(this.m, x)
14577 // r = "x^
2/R mod m"; x != r
14578 function montSqrTo(x, r) {
14583 // r = "xy/R mod m"; x,y != r
14584 function montMulTo(x, y, r) {
14589 Montgomery.prototype.convert = montConvert
14590 Montgomery.prototype.revert = montRevert
14591 Montgomery.prototype.reduce = montReduce
14592 Montgomery.prototype.mulTo = montMulTo
14593 Montgomery.prototype.sqrTo = montSqrTo
14595 // (protected) true iff this is even
14596 function bnpIsEven() {
14597 return ((this.t
> 0) ? (this[
0] &
1) : this.s) ==
0
14600 // (protected) this^e, e <
2^
32, doing sqr and mul with
"r" (HAC
14.79)
14601 function bnpExp(e, z) {
14602 if (e
> 0xffffffff || e <
1) return BigInteger.ONE
14603 var r = new BigInteger(),
14604 r2 = new BigInteger(),
14605 g = z.convert(this),
14610 if ((e & (
1 << i))
> 0) z.mulTo(r2, g, r)
14620 // (public) this^e % m,
0 <= e <
2^
32
14621 function bnModPowInt(e, m) {
14623 if (e <
256 || m.isEven()) z = new Classic(m)
14624 else z = new Montgomery(m)
14625 return this.exp(e, z)
14629 proto.copyTo = bnpCopyTo
14630 proto.fromInt = bnpFromInt
14631 proto.fromString = bnpFromString
14632 proto.clamp = bnpClamp
14633 proto.dlShiftTo = bnpDLShiftTo
14634 proto.drShiftTo = bnpDRShiftTo
14635 proto.lShiftTo = bnpLShiftTo
14636 proto.rShiftTo = bnpRShiftTo
14637 proto.subTo = bnpSubTo
14638 proto.multiplyTo = bnpMultiplyTo
14639 proto.squareTo = bnpSquareTo
14640 proto.divRemTo = bnpDivRemTo
14641 proto.invDigit = bnpInvDigit
14642 proto.isEven = bnpIsEven
14646 proto.toString = bnToString
14647 proto.negate = bnNegate
14649 proto.compareTo = bnCompareTo
14650 proto.bitLength = bnBitLength
14651 proto.byteLength = bnByteLength
14653 proto.modPowInt = bnModPowInt
14656 function bnClone() {
14657 var r = new BigInteger()
14662 // (public) return value as integer
14663 function bnIntValue() {
14665 if (this.t ==
1) return this[
0] - this.DV
14666 else if (this.t ==
0) return -
1
14667 } else if (this.t ==
1) return this[
0]
14668 else if (this.t ==
0) return
0
14669 // assumes
16 < DB <
32
14670 return ((this[
1] & ((
1 << (
32 - this.DB)) -
1)) << this.DB) | this[
0]
14673 // (public) return value as byte
14674 function bnByteValue() {
14675 return (this.t ==
0) ? this.s : (this[
0] <<
24)
>> 24
14678 // (public) return value as short (assumes DB
>=
16)
14679 function bnShortValue() {
14680 return (this.t ==
0) ? this.s : (this[
0] <<
16)
>> 16
14683 // (protected) return x s.t. r^x < DV
14684 function bnpChunkSize(r) {
14685 return Math.floor(Math.LN2 * this.DB / Math.log(r))
14688 // (public)
0 if this ==
0,
1 if this
> 0
14689 function bnSigNum() {
14690 if (this.s <
0) return -
1
14691 else if (this.t <=
0 || (this.t ==
1 && this[
0] <=
0)) return
0
14695 // (protected) convert to radix string
14696 function bnpToRadix(b) {
14697 if (b == null) b =
10
14698 if (this.signum() ==
0 || b <
2 || b
> 36) return
"0"
14699 var cs = this.chunkSize(b)
14700 var a = Math.pow(b, cs)
14702 y = new BigInteger(),
14703 z = new BigInteger(),
14705 this.divRemTo(d, y, z)
14706 while (y.signum()
> 0) {
14707 r = (a + z.intValue())
14710 y.divRemTo(d, y, z)
14712 return z.intValue()
14716 // (protected) convert from radix string
14717 function bnpFromRadix(s, b) {
14720 if (b == null) b =
10
14721 var cs = self.chunkSize(b)
14722 var d = Math.pow(b, cs),
14726 for (var i =
0; i < s.length; ++i) {
14727 var x = intAt(s, i)
14729 if (s.charAt(i) ==
"-" && self.signum() ==
0) mi = true
14735 self.dAddOffset(w,
0)
14741 self.dMultiply(Math.pow(b, j))
14742 self.dAddOffset(w,
0)
14744 if (mi) BigInteger.ZERO.subTo(self, self)
14747 // (protected) alternate constructor
14748 function bnpFromNumber(a, b, c) {
14750 if (
"number" == typeof b) {
14751 // new BigInteger(int,int,RNG)
14752 if (a <
2) self.fromInt(
1)
14754 self.fromNumber(a, c)
14755 if (!self.testBit(a -
1)) // force MSB set
14756 self.bitwiseTo(BigInteger.ONE.shiftLeft(a -
1), op_or, self)
14757 if (self.isEven()) self.dAddOffset(
1,
0); // force odd
14758 while (!self.isProbablePrime(b)) {
14759 self.dAddOffset(
2,
0)
14760 if (self.bitLength()
> a) self.subTo(BigInteger.ONE.shiftLeft(a -
1), self)
14764 // new BigInteger(int,RNG)
14765 var x = new Array(),
14767 x.length = (a
>> 3) +
1
14769 if (t
> 0) x[
0] &= ((
1 << t) -
1)
14771 self.fromString(x,
256)
14775 // (public) convert to bigendian byte array
14776 function bnToByteArray() {
14781 var p = self.DB - (i * self.DB) %
8,
14784 if (p < self.DB && (d = self[i]
>> p) != (self.s & self.DM)
>> p)
14785 r[k++] = d | (self.s << (self.DB - p))
14788 d = (self[i] & ((
1 << p) -
1)) << (
8 - p)
14789 d |= self[--i]
>> (p += self.DB -
8)
14791 d = (self[i]
>> (p -=
8)) &
0xff
14797 if ((d &
0x80) !=
0) d |= -
256
14798 if (k ===
0 && (self.s &
0x80) != (d &
0x80))++k
14799 if (k
> 0 || d != self.s) r[k++] = d
14805 function bnEquals(a) {
14806 return (this.compareTo(a) ==
0)
14809 function bnMin(a) {
14810 return (this.compareTo(a) <
0) ? this : a
14813 function bnMax(a) {
14814 return (this.compareTo(a)
> 0) ? this : a
14817 // (protected) r = this op a (bitwise)
14818 function bnpBitwiseTo(a, op, r) {
14820 var i, f, m = Math.min(a.t, self.t)
14821 for (i =
0; i < m; ++i) r[i] = op(self[i], a[i])
14822 if (a.t < self.t) {
14824 for (i = m; i < self.t; ++i) r[i] = op(self[i], f)
14827 f = self.s & self.DM
14828 for (i = m; i < a.t; ++i) r[i] = op(f, a[i])
14831 r.s = op(self.s, a.s)
14835 // (public) this & a
14836 function op_and(x, y) {
14840 function bnAnd(a) {
14841 var r = new BigInteger()
14842 this.bitwiseTo(a, op_and, r)
14846 // (public) this | a
14847 function op_or(x, y) {
14852 var r = new BigInteger()
14853 this.bitwiseTo(a, op_or, r)
14857 // (public) this ^ a
14858 function op_xor(x, y) {
14862 function bnXor(a) {
14863 var r = new BigInteger()
14864 this.bitwiseTo(a, op_xor, r)
14868 // (public) this & ~a
14869 function op_andnot(x, y) {
14873 function bnAndNot(a) {
14874 var r = new BigInteger()
14875 this.bitwiseTo(a, op_andnot, r)
14881 var r = new BigInteger()
14882 for (var i =
0; i < this.t; ++i) r[i] = this.DM & ~this[i]
14888 // (public) this << n
14889 function bnShiftLeft(n) {
14890 var r = new BigInteger()
14891 if (n <
0) this.rShiftTo(-n, r)
14892 else this.lShiftTo(n, r)
14896 // (public) this
>> n
14897 function bnShiftRight(n) {
14898 var r = new BigInteger()
14899 if (n <
0) this.lShiftTo(-n, r)
14900 else this.rShiftTo(n, r)
14904 // return index of lowest
1-bit in x, x <
2^
31
14906 if (x ==
0) return -
1
14908 if ((x &
0xffff) ==
0) {
14912 if ((x &
0xff) ==
0) {
14916 if ((x &
0xf) ==
0) {
14920 if ((x &
3) ==
0) {
14924 if ((x &
1) ==
0)++r
14928 // (public) returns index of lowest
1-bit (or -
1 if none)
14929 function bnGetLowestSetBit() {
14930 for (var i =
0; i < this.t; ++i)
14931 if (this[i] !=
0) return i * this.DB + lbit(this[i])
14932 if (this.s <
0) return this.t * this.DB
14936 // return number of
1 bits in x
14946 // (public) return number of set bits
14947 function bnBitCount() {
14949 x = this.s & this.DM
14950 for (var i =
0; i < this.t; ++i) r += cbit(this[i] ^ x)
14954 // (public) true iff nth bit is set
14955 function bnTestBit(n) {
14956 var j = Math.floor(n / this.DB)
14957 if (j
>= this.t) return (this.s !=
0)
14958 return ((this[j] & (
1 << (n % this.DB))) !=
0)
14961 // (protected) this op (
1<
<n)
14962 function bnpChangeBit(n, op) {
14963 var r = BigInteger.ONE.shiftLeft(n)
14964 this.bitwiseTo(r, op, r)
14968 // (public) this | (
1<
<n)
14969 function bnSetBit(n) {
14970 return this.changeBit(n, op_or)
14973 // (public) this & ~(
1<
<n)
14974 function bnClearBit(n) {
14975 return this.changeBit(n, op_andnot)
14978 // (public) this ^ (
1<
<n)
14979 function bnFlipBit(n) {
14980 return this.changeBit(n, op_xor)
14983 // (protected) r = this + a
14984 function bnpAddTo(a, r) {
14989 m = Math.min(a.t, self.t)
14991 c += self[i] + a[i]
14992 r[i++] = c & self.DM
14995 if (a.t < self.t) {
14997 while (i < self.t) {
14999 r[i++] = c & self.DM
15007 r[i++] = c & self.DM
15012 r.s = (c <
0) ? -
1 :
0
15013 if (c
> 0) r[i++] = c
15014 else if (c < -
1) r[i++] = self.DV + c
15019 // (public) this + a
15020 function bnAdd(a) {
15021 var r = new BigInteger()
15026 // (public) this - a
15027 function bnSubtract(a) {
15028 var r = new BigInteger()
15033 // (public) this * a
15034 function bnMultiply(a) {
15035 var r = new BigInteger()
15036 this.multiplyTo(a, r)
15041 function bnSquare() {
15042 var r = new BigInteger()
15047 // (public) this / a
15048 function bnDivide(a) {
15049 var r = new BigInteger()
15050 this.divRemTo(a, r, null)
15054 // (public) this % a
15055 function bnRemainder(a) {
15056 var r = new BigInteger()
15057 this.divRemTo(a, null, r)
15061 // (public) [this/a,this%a]
15062 function bnDivideAndRemainder(a) {
15063 var q = new BigInteger(),
15064 r = new BigInteger()
15065 this.divRemTo(a, q, r)
15066 return new Array(q, r)
15069 // (protected) this *= n, this
>=
0,
1 < n < DV
15070 function bnpDMultiply(n) {
15071 this[this.t] = this.am(
0, n -
1, this,
0,
0, this.t)
15076 // (protected) this += n << w words, this
>=
0
15077 function bnpDAddOffset(n, w) {
15079 while (this.t <= w) this[this.t++] =
0
15081 while (this[w]
>= this.DV) {
15083 if (++w
>= this.t) this[this.t++] =
0
15088 // A "null" reducer
15089 function NullExp() {}
15095 function nMulTo(x, y, r) {
15099 function nSqrTo(x, r) {
15103 NullExp.prototype.convert = nNop
15104 NullExp.prototype.revert = nNop
15105 NullExp.prototype.mulTo = nMulTo
15106 NullExp.prototype.sqrTo = nSqrTo
15109 function bnPow(e) {
15110 return this.exp(e, new NullExp())
15113 // (protected) r = lower n words of "this * a", a.t <= n
15114 // "this" should be the larger one if appropriate.
15115 function bnpMultiplyLowerTo(a, n, r) {
15116 var i = Math.min(this.t + a.t, n)
15117 r.s =
0; // assumes a,this
>=
0
15119 while (i
> 0) r[--i] =
0
15121 for (j = r.t - this.t; i < j; ++i) r[i + this.t] = this.am(
0, a[i], r, i,
0, this.t)
15122 for (j = Math.min(a.t, n); i < j; ++i) this.am(
0, a[i], r, i,
0, n - i)
15126 // (protected) r =
"this * a" without lower n words, n
> 0
15127 //
"this" should be the larger one if appropriate.
15128 function bnpMultiplyUpperTo(a, n, r) {
15130 var i = r.t = this.t + a.t - n
15131 r.s =
0; // assumes a,this
>=
0
15132 while (--i
>=
0) r[i] =
0
15133 for (i = Math.max(n - this.t,
0); i < a.t; ++i)
15134 r[this.t + i - n] = this.am(n - i, a[i], r,
0,
0, this.t + i - n)
15139 // Barrett modular reduction
15140 function Barrett(m) {
15142 this.r2 = new BigInteger()
15143 this.q3 = new BigInteger()
15144 BigInteger.ONE.dlShiftTo(
2 * m.t, this.r2)
15145 this.mu = this.r2.divide(m)
15149 function barrettConvert(x) {
15150 if (x.s <
0 || x.t
> 2 * this.m.t) return x.mod(this.m)
15151 else if (x.compareTo(this.m) <
0) return x
15153 var r = new BigInteger()
15160 function barrettRevert(x) {
15164 // x = x mod m (HAC
14.42)
15165 function barrettReduce(x) {
15167 x.drShiftTo(self.m.t -
1, self.r2)
15168 if (x.t
> self.m.t +
1) {
15172 self.mu.multiplyUpperTo(self.r2, self.m.t +
1, self.q3)
15173 self.m.multiplyLowerTo(self.q3, self.m.t +
1, self.r2)
15174 while (x.compareTo(self.r2) <
0) x.dAddOffset(
1, self.m.t +
1)
15175 x.subTo(self.r2, x)
15176 while (x.compareTo(self.m)
>=
0) x.subTo(self.m, x)
15179 // r = x^
2 mod m; x != r
15180 function barrettSqrTo(x, r) {
15185 // r = x*y mod m; x,y != r
15186 function barrettMulTo(x, y, r) {
15191 Barrett.prototype.convert = barrettConvert
15192 Barrett.prototype.revert = barrettRevert
15193 Barrett.prototype.reduce = barrettReduce
15194 Barrett.prototype.mulTo = barrettMulTo
15195 Barrett.prototype.sqrTo = barrettSqrTo
15197 // (public) this^e % m (HAC
14.85)
15198 function bnModPow(e, m) {
15199 var i = e.bitLength(),
15202 if (i <=
0) return r
15203 else if (i <
18) k =
1
15204 else if (i <
48) k =
3
15205 else if (i <
144) k =
4
15206 else if (i <
768) k =
5
15210 else if (m.isEven())
15213 z = new Montgomery(m)
15216 var g = new Array(),
15220 g[
1] = z.convert(this)
15222 var g2 = new BigInteger()
15225 g[n] = new BigInteger()
15226 z.mulTo(g2, g[n -
2], g[n])
15233 r2 = new BigInteger(),
15235 i = nbits(e[j]) -
1
15237 if (i
>= k1) w = (e[j]
>> (i - k1)) & km
15239 w = (e[j] & ((
1 << (i +
1)) -
1)) << (k1 - i)
15240 if (j
> 0) w |= e[j -
1]
>> (this.DB + i - k1)
15244 while ((w &
1) ==
0) {
15248 if ((i -= n) <
0) {
15252 if (is1) { // ret ==
1, don't bother squaring or multiplying it
15261 if (n
> 0) z.sqrTo(r, r2)
15267 z.mulTo(r2, g[w], r)
15270 while (j
>=
0 && (e[j] & (
1 << i)) ==
0) {
15284 // (public) gcd(this,a) (HAC
14.54)
15285 function bnGCD(a) {
15286 var x = (this.s <
0) ? this.negate() : this.clone()
15287 var y = (a.s <
0) ? a.negate() : a.clone()
15288 if (x.compareTo(y) <
0) {
15293 var i = x.getLowestSetBit(),
15294 g = y.getLowestSetBit()
15295 if (g <
0) return x
15301 while (x.signum()
> 0) {
15302 if ((i = x.getLowestSetBit())
> 0) x.rShiftTo(i, x)
15303 if ((i = y.getLowestSetBit())
> 0) y.rShiftTo(i, y)
15304 if (x.compareTo(y)
>=
0) {
15312 if (g
> 0) y.lShiftTo(g, y)
15316 // (protected) this % n, n <
2^
26
15317 function bnpModInt(n) {
15318 if (n <=
0) return
0
15319 var d = this.DV % n,
15320 r = (this.s <
0) ? n -
1 :
0
15322 if (d ==
0) r = this[
0] % n
15324 for (var i = this.t -
1; i
>=
0; --i) r = (d * r + this[i]) % n
15328 // (public)
1/this % m (HAC
14.61)
15329 function bnModInverse(m) {
15330 var ac = m.isEven()
15331 if (this.signum() ===
0) throw new Error('division by zero')
15332 if ((this.isEven() && ac) || m.signum() ==
0) return BigInteger.ZERO
15339 while (u.signum() !=
0) {
15340 while (u.isEven()) {
15343 if (!a.isEven() || !b.isEven()) {
15348 } else if (!b.isEven()) b.subTo(m, b)
15351 while (v.isEven()) {
15354 if (!c.isEven() || !d.isEven()) {
15359 } else if (!d.isEven()) d.subTo(m, d)
15362 if (u.compareTo(v)
>=
0) {
15364 if (ac) a.subTo(c, a)
15368 if (ac) c.subTo(a, c)
15372 if (v.compareTo(BigInteger.ONE) !=
0) return BigInteger.ZERO
15373 while (d.compareTo(m)
>=
0) d.subTo(m, d)
15374 while (d.signum() <
0) d.addTo(m, d)
15379 2,
3,
5,
7,
11,
13,
17,
19,
23,
29,
31,
37,
41,
43,
47,
53,
59,
61,
67,
71,
15380 73,
79,
83,
89,
97,
101,
103,
107,
109,
113,
127,
131,
137,
139,
149,
151,
15381 157,
163,
167,
173,
179,
181,
191,
193,
197,
199,
211,
223,
227,
229,
233,
15382 239,
241,
251,
257,
263,
269,
271,
277,
281,
283,
293,
307,
311,
313,
317,
15383 331,
337,
347,
349,
353,
359,
367,
373,
379,
383,
389,
397,
401,
409,
419,
15384 421,
431,
433,
439,
443,
449,
457,
461,
463,
467,
479,
487,
491,
499,
503,
15385 509,
521,
523,
541,
547,
557,
563,
569,
571,
577,
587,
593,
599,
601,
607,
15386 613,
617,
619,
631,
641,
643,
647,
653,
659,
661,
673,
677,
683,
691,
701,
15387 709,
719,
727,
733,
739,
743,
751,
757,
761,
769,
773,
787,
797,
809,
811,
15388 821,
823,
827,
829,
839,
853,
857,
859,
863,
877,
881,
883,
887,
907,
911,
15389 919,
929,
937,
941,
947,
953,
967,
971,
977,
983,
991,
997
15392 var lplim = (
1 <<
26) / lowprimes[lowprimes.length -
1]
15394 // (public) test primality with certainty
>=
1-
.5^t
15395 function bnIsProbablePrime(t) {
15396 var i, x = this.abs()
15397 if (x.t ==
1 && x[
0] <= lowprimes[lowprimes.length -
1]) {
15398 for (i =
0; i < lowprimes.length; ++i)
15399 if (x[
0] == lowprimes[i]) return true
15402 if (x.isEven()) return false
15404 while (i < lowprimes.length) {
15405 var m = lowprimes[i],
15407 while (j < lowprimes.length && m < lplim) m *= lowprimes[j++]
15409 while (i < j) if (m % lowprimes[i++] ==
0) return false
15411 return x.millerRabin(t)
15414 // (protected) true if probably prime (HAC
4.24, Miller-Rabin)
15415 function bnpMillerRabin(t) {
15416 var n1 = this.subtract(BigInteger.ONE)
15417 var k = n1.getLowestSetBit()
15418 if (k <=
0) return false
15419 var r = n1.shiftRight(k)
15421 if (t
> lowprimes.length) t = lowprimes.length
15422 var a = new BigInteger(null)
15424 for (var i =
0; i < t; ++i) {
15426 j = lowprimes[Math.floor(Math.random() * lowprimes.length)]
15427 if (bases.indexOf(j) == -
1) break
15431 var y = a.modPow(r, this)
15432 if (y.compareTo(BigInteger.ONE) !=
0 && y.compareTo(n1) !=
0) {
15434 while (j++ < k && y.compareTo(n1) !=
0) {
15435 y = y.modPowInt(
2, this)
15436 if (y.compareTo(BigInteger.ONE) ==
0) return false
15438 if (y.compareTo(n1) !=
0) return false
15445 proto.chunkSize = bnpChunkSize
15446 proto.toRadix = bnpToRadix
15447 proto.fromRadix = bnpFromRadix
15448 proto.fromNumber = bnpFromNumber
15449 proto.bitwiseTo = bnpBitwiseTo
15450 proto.changeBit = bnpChangeBit
15451 proto.addTo = bnpAddTo
15452 proto.dMultiply = bnpDMultiply
15453 proto.dAddOffset = bnpDAddOffset
15454 proto.multiplyLowerTo = bnpMultiplyLowerTo
15455 proto.multiplyUpperTo = bnpMultiplyUpperTo
15456 proto.modInt = bnpModInt
15457 proto.millerRabin = bnpMillerRabin
15460 proto.clone = bnClone
15461 proto.intValue = bnIntValue
15462 proto.byteValue = bnByteValue
15463 proto.shortValue = bnShortValue
15464 proto.signum = bnSigNum
15465 proto.toByteArray = bnToByteArray
15466 proto.equals = bnEquals
15472 proto.andNot = bnAndNot
15474 proto.shiftLeft = bnShiftLeft
15475 proto.shiftRight = bnShiftRight
15476 proto.getLowestSetBit = bnGetLowestSetBit
15477 proto.bitCount = bnBitCount
15478 proto.testBit = bnTestBit
15479 proto.setBit = bnSetBit
15480 proto.clearBit = bnClearBit
15481 proto.flipBit = bnFlipBit
15483 proto.subtract = bnSubtract
15484 proto.multiply = bnMultiply
15485 proto.divide = bnDivide
15486 proto.remainder = bnRemainder
15487 proto.divideAndRemainder = bnDivideAndRemainder
15488 proto.modPow = bnModPow
15489 proto.modInverse = bnModInverse
15492 proto.isProbablePrime = bnIsProbablePrime
15494 // JSBN-specific extension
15495 proto.square = bnSquare
15498 BigInteger.ZERO = nbv(
0)
15499 BigInteger.ONE = nbv(
1)
15500 BigInteger.valueOf = nbv
15502 module.exports = BigInteger
15504 },{"../package.json":
40}],
38:[function(require,module,exports){
15505 (function (Buffer){
15506 // FIXME: Kind of a weird way to throw exceptions, consider removing
15507 var assert = require('assert')
15508 var BigInteger = require('./bigi')
15511 * Turns a byte array into a big integer.
15513 * This function will interpret a byte array as a big integer in big
15516 BigInteger.fromByteArrayUnsigned = function(byteArray) {
15517 // BigInteger expects a DER integer conformant byte array
15518 if (byteArray[
0] &
0x80) {
15519 return new BigInteger([
0].concat(byteArray))
15522 return new BigInteger(byteArray)
15526 * Returns a byte array representation of the big integer.
15528 * This returns the absolute of the contained value in big endian
15529 * form. A value of zero results in an empty array.
15531 BigInteger.prototype.toByteArrayUnsigned = function() {
15532 var byteArray = this.toByteArray()
15533 return byteArray[
0] ===
0 ? byteArray.slice(
1) : byteArray
15536 BigInteger.fromDERInteger = function(byteArray) {
15537 return new BigInteger(byteArray)
15541 * Converts BigInteger to a DER integer representation.
15543 * The format for this value uses the most significant bit as a sign
15544 * bit. If the most significant bit is already set and the integer is
15545 * positive, a
0x00 is prepended.
15560 *
62300 =
> 0x00f35c
15561 * -
62300 =
> 0xff0ca4
15563 BigInteger.prototype.toDERInteger = BigInteger.prototype.toByteArray
15565 BigInteger.fromBuffer = function(buffer) {
15566 // BigInteger expects a DER integer conformant byte array
15567 if (buffer[
0] &
0x80) {
15568 var byteArray = Array.prototype.slice.call(buffer)
15570 return new BigInteger([
0].concat(byteArray))
15573 return new BigInteger(buffer)
15576 BigInteger.fromHex = function(hex) {
15577 if (hex === '') return BigInteger.ZERO
15579 assert.equal(hex, hex.match(/^[A-Fa-f0-
9]+/), 'Invalid hex string')
15580 assert.equal(hex.length %
2,
0, 'Incomplete hex')
15581 return new BigInteger(hex,
16)
15584 BigInteger.prototype.toBuffer = function(size) {
15585 var byteArray = this.toByteArrayUnsigned()
15588 var padding = size - byteArray.length
15589 while (zeros.length < padding) zeros.push(
0)
15591 return new Buffer(zeros.concat(byteArray))
15594 BigInteger.prototype.toHex = function(size) {
15595 return this.toBuffer(size).toString('hex')
15598 }).call(this,require(
"buffer").Buffer)
15599 },{
"./bigi":
37,
"assert":
1,
"buffer":
5}],
39:[function(require,module,exports){
15600 var BigInteger = require('./bigi')
15603 require('./convert')
15605 module.exports = BigInteger
15606 },{
"./bigi":
37,
"./convert":
38}],
40:[function(require,module,exports){
15611 "/home/ian/git/bitcoin/bitcoinjs-lib-browser"
15614 "_from":
"bigi@latest",
15615 "_id":
"bigi@1.4.2",
15617 "_installable": true,
15618 "_location":
"/bigi",
15619 "_nodeVersion":
"6.1.0",
15620 "_npmOperationalInternal": {
15621 "host":
"packages-12-west.internal.npmjs.com",
15622 "tmp":
"tmp/bigi-1.4.2.tgz_1469584192413_0.6801238611806184"
15625 "email":
"jprichardson@gmail.com",
15626 "name":
"jprichardson"
15628 "_npmVersion":
"3.8.6",
15629 "_phantomChildren": {},
15643 "_resolved":
"https://registry.npmjs.org/bigi/-/bigi-1.4.2.tgz",
15644 "_shasum":
"9c665a95f88b8b08fc05cfd731f561859d725825",
15645 "_shrinkwrap": null,
15647 "_where":
"/home/ian/git/bitcoin/bitcoinjs-lib-browser",
15649 "url":
"https://github.com/cryptocoinjs/bigi/issues"
15651 "dependencies": {},
15652 "description":
"Big integers.",
15653 "devDependencies": {
15654 "coveralls":
"^2.11.2",
15655 "istanbul":
"^0.3.5",
15656 "jshint":
"^2.5.1",
15658 "mochify":
"^2.1.0"
15662 "shasum":
"9c665a95f88b8b08fc05cfd731f561859d725825",
15663 "tarball":
"https://registry.npmjs.org/bigi/-/bigi-1.4.2.tgz"
15665 "gitHead":
"c25308081c896ff84702303722bf5ecd8b3f78e3",
15666 "homepage":
"https://github.com/cryptocoinjs/bigi#readme",
15684 "main":
"./lib/index.js",
15687 "email":
"boydb@midnightdesign.ws",
15688 "name":
"midnightlightning"
15691 "email":
"sidazhang89@gmail.com",
15692 "name":
"sidazhang"
15695 "email":
"npm@shesek.info",
15699 "email":
"jprichardson@gmail.com",
15700 "name":
"jprichardson"
15704 "optionalDependencies": {},
15705 "readme":
"ERROR: No README data found!",
15708 "url":
"git+https://github.com/cryptocoinjs/bigi.git"
15711 "browser-test":
"mochify --wd -R spec",
15712 "coverage":
"istanbul cover ./node_modules/.bin/_mocha -- --reporter list test/*.js",
15713 "coveralls":
"npm run-script coverage && node ./node_modules/.bin/coveralls < coverage/lcov.info",
15714 "jshint":
"jshint --config jshint.json lib/*.js ; true",
15715 "test":
"_mocha -- test/*.js",
15723 "safari/6.0..latest",
15724 "iphone/6.0..latest",
15725 "android-browser/4.2..latest"
15727 "files":
"test/*.js",
15733 },{}],
41:[function(require,module,exports){
15734 // Reference https://github.com/bitcoin/bips/blob/master/bip-
0066.mediawiki
15735 // Format:
0x30 [total-length]
0x02 [R-length] [R]
0x02 [S-length] [S]
15736 // NOTE: SIGHASH byte ignored AND restricted, truncate before use
15738 var Buffer = require('safe-buffer').Buffer
15740 function check (buffer) {
15741 if (buffer.length <
8) return false
15742 if (buffer.length
> 72) return false
15743 if (buffer[
0] !==
0x30) return false
15744 if (buffer[
1] !== buffer.length -
2) return false
15745 if (buffer[
2] !==
0x02) return false
15747 var lenR = buffer[
3]
15748 if (lenR ===
0) return false
15749 if (
5 + lenR
>= buffer.length) return false
15750 if (buffer[
4 + lenR] !==
0x02) return false
15752 var lenS = buffer[
5 + lenR]
15753 if (lenS ===
0) return false
15754 if ((
6 + lenR + lenS) !== buffer.length) return false
15756 if (buffer[
4] &
0x80) return false
15757 if (lenR
> 1 && (buffer[
4] ===
0x00) && !(buffer[
5] &
0x80)) return false
15759 if (buffer[lenR +
6] &
0x80) return false
15760 if (lenS
> 1 && (buffer[lenR +
6] ===
0x00) && !(buffer[lenR +
7] &
0x80)) return false
15764 function decode (buffer) {
15765 if (buffer.length <
8) throw new Error('DER sequence length is too short')
15766 if (buffer.length
> 72) throw new Error('DER sequence length is too long')
15767 if (buffer[
0] !==
0x30) throw new Error('Expected DER sequence')
15768 if (buffer[
1] !== buffer.length -
2) throw new Error('DER sequence length is invalid')
15769 if (buffer[
2] !==
0x02) throw new Error('Expected DER integer')
15771 var lenR = buffer[
3]
15772 if (lenR ===
0) throw new Error('R length is zero')
15773 if (
5 + lenR
>= buffer.length) throw new Error('R length is too long')
15774 if (buffer[
4 + lenR] !==
0x02) throw new Error('Expected DER integer (
2)')
15776 var lenS = buffer[
5 + lenR]
15777 if (lenS ===
0) throw new Error('S length is zero')
15778 if ((
6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')
15780 if (buffer[
4] &
0x80) throw new Error('R value is negative')
15781 if (lenR
> 1 && (buffer[
4] ===
0x00) && !(buffer[
5] &
0x80)) throw new Error('R value excessively padded')
15783 if (buffer[lenR +
6] &
0x80) throw new Error('S value is negative')
15784 if (lenS
> 1 && (buffer[lenR +
6] ===
0x00) && !(buffer[lenR +
7] &
0x80)) throw new Error('S value excessively padded')
15786 // non-BIP66 - extract R, S values
15788 r: buffer.slice(
4,
4 + lenR),
15789 s: buffer.slice(
6 + lenR)
15794 * Expects r and s to be positive DER integers.
15796 * The DER format uses the most significant bit as a sign bit (&
0x80).
15797 * If the significant bit is set AND the integer is positive, a
0x00 is prepended.
15812 *
62300 =
> 0x00f35c
15813 * -
62300 =
> 0xff0ca4
15815 function encode (r, s) {
15816 var lenR = r.length
15817 var lenS = s.length
15818 if (lenR ===
0) throw new Error('R length is zero')
15819 if (lenS ===
0) throw new Error('S length is zero')
15820 if (lenR
> 33) throw new Error('R length is too long')
15821 if (lenS
> 33) throw new Error('S length is too long')
15822 if (r[
0] &
0x80) throw new Error('R value is negative')
15823 if (s[
0] &
0x80) throw new Error('S value is negative')
15824 if (lenR
> 1 && (r[
0] ===
0x00) && !(r[
1] &
0x80)) throw new Error('R value excessively padded')
15825 if (lenS
> 1 && (s[
0] ===
0x00) && !(s[
1] &
0x80)) throw new Error('S value excessively padded')
15827 var signature = Buffer.allocUnsafe(
6 + lenR + lenS)
15829 //
0x30 [total-length]
0x02 [R-length] [R]
0x02 [S-length] [S]
15830 signature[
0] =
0x30
15831 signature[
1] = signature.length -
2
15832 signature[
2] =
0x02
15833 signature[
3] = r.length
15834 r.copy(signature,
4)
15835 signature[
4 + lenR] =
0x02
15836 signature[
5 + lenR] = s.length
15837 s.copy(signature,
6 + lenR)
15848 },{
"safe-buffer":
128}],
42:[function(require,module,exports){
15852 "OP_PUSHDATA1":
76,
15853 "OP_PUSHDATA2":
77,
15854 "OP_PUSHDATA4":
78,
15880 "OP_VERNOTIF":
102,
15886 "OP_TOALTSTACK":
107,
15887 "OP_FROMALTSTACK":
108,
15917 "OP_EQUALVERIFY":
136,
15918 "OP_RESERVED1":
137,
15919 "OP_RESERVED2":
138,
15928 "OP_0NOTEQUAL":
146,
15939 "OP_NUMEQUAL":
156,
15940 "OP_NUMEQUALVERIFY":
157,
15941 "OP_NUMNOTEQUAL":
158,
15942 "OP_LESSTHAN":
159,
15943 "OP_GREATERTHAN":
160,
15944 "OP_LESSTHANOREQUAL":
161,
15945 "OP_GREATERTHANOREQUAL":
162,
15951 "OP_RIPEMD160":
166,
15956 "OP_CODESEPARATOR":
171,
15957 "OP_CHECKSIG":
172,
15958 "OP_CHECKSIGVERIFY":
173,
15959 "OP_CHECKMULTISIG":
174,
15960 "OP_CHECKMULTISIGVERIFY":
175,
15964 "OP_CHECKLOCKTIMEVERIFY":
177,
15975 "OP_PUBKEYHASH":
253,
15977 "OP_INVALIDOPCODE":
255
15980 },{}],
43:[function(require,module,exports){
15981 var OPS = require('./index.json')
15984 for (var op in OPS) {
15989 module.exports = map
15991 },{
"./index.json":
42}],
44:[function(require,module,exports){
15992 var Buffer = require('safe-buffer').Buffer
15993 var bech32 = require('bech32')
15994 var bs58check = require('bs58check')
15995 var bscript = require('./script')
15996 var btemplates = require('./templates')
15997 var networks = require('./networks')
15998 var typeforce = require('typeforce')
15999 var types = require('./types')
16001 function fromBase58Check (address) {
16002 var payload = bs58check.decode(address)
16004 // TODO:
4.0.0, move to
"toOutputScript"
16005 if (payload.length <
21) throw new TypeError(address + ' is too short')
16006 if (payload.length
> 21) throw new TypeError(address + ' is too long')
16008 var version = payload.readUInt8(
0)
16009 var hash = payload.slice(
1)
16011 return { version: version, hash: hash }
16014 function fromBech32 (address) {
16015 var result = bech32.decode(address)
16016 var data = bech32.fromWords(result.words.slice(
1))
16019 version: result.words[
0],
16020 prefix: result.prefix,
16021 data: Buffer.from(data)
16025 function toBase58Check (hash, version) {
16026 typeforce(types.tuple(types.Hash160bit, types.UInt8), arguments)
16028 var payload = Buffer.allocUnsafe(
21)
16029 payload.writeUInt8(version,
0)
16030 hash.copy(payload,
1)
16032 return bs58check.encode(payload)
16035 function toBech32 (data, version, prefix) {
16036 var words = bech32.toWords(data)
16037 words.unshift(version)
16039 return bech32.encode(prefix, words)
16042 function fromOutputScript (outputScript, network) {
16043 network = network || networks.bitcoin
16045 if (btemplates.pubKeyHash.output.check(outputScript)) return toBase58Check(bscript.compile(outputScript).slice(
3,
23), network.pubKeyHash)
16046 if (btemplates.scriptHash.output.check(outputScript)) return toBase58Check(bscript.compile(outputScript).slice(
2,
22), network.scriptHash)
16047 if (btemplates.witnessPubKeyHash.output.check(outputScript)) return toBech32(bscript.compile(outputScript).slice(
2,
22),
0, network.bech32)
16048 if (btemplates.witnessScriptHash.output.check(outputScript)) return toBech32(bscript.compile(outputScript).slice(
2,
34),
0, network.bech32)
16050 throw new Error(bscript.toASM(outputScript) + ' has no matching Address')
16053 function toOutputScript (address, network) {
16054 network = network || networks.bitcoin
16058 decode = fromBase58Check(address)
16062 if (decode.version === network.pubKeyHash) return btemplates.pubKeyHash.output.encode(decode.hash)
16063 if (decode.version === network.scriptHash) return btemplates.scriptHash.output.encode(decode.hash)
16066 decode = fromBech32(address)
16070 if (decode.prefix !== network.bech32) throw new Error(address + ' has an invalid prefix')
16071 if (decode.version ===
0) {
16072 if (decode.data.length ===
20) return btemplates.witnessPubKeyHash.output.encode(decode.data)
16073 if (decode.data.length ===
32) return btemplates.witnessScriptHash.output.encode(decode.data)
16078 throw new Error(address + ' has no matching Script')
16082 fromBase58Check: fromBase58Check,
16083 fromBech32: fromBech32,
16084 fromOutputScript: fromOutputScript,
16085 toBase58Check: toBase58Check,
16086 toBech32: toBech32,
16087 toOutputScript: toOutputScript
16090 },{
"./networks":
53,
"./script":
54,
"./templates":
56,
"./types":
80,
"bech32":
36,
"bs58check":
85,
"safe-buffer":
128,
"typeforce":
139}],
45:[function(require,module,exports){
16091 var Buffer = require('safe-buffer').Buffer
16092 var bcrypto = require('./crypto')
16093 var fastMerkleRoot = require('merkle-lib/fastRoot')
16094 var typeforce = require('typeforce')
16095 var types = require('./types')
16096 var varuint = require('varuint-bitcoin')
16098 var Transaction = require('./transaction')
16100 function Block () {
16102 this.prevHash = null
16103 this.merkleRoot = null
16109 Block.fromBuffer = function (buffer) {
16110 if (buffer.length <
80) throw new Error('Buffer too small (<
80 bytes)')
16113 function readSlice (n) {
16115 return buffer.slice(offset - n, offset)
16118 function readUInt32 () {
16119 var i = buffer.readUInt32LE(offset)
16124 function readInt32 () {
16125 var i = buffer.readInt32LE(offset)
16130 var block = new Block()
16131 block.version = readInt32()
16132 block.prevHash = readSlice(
32)
16133 block.merkleRoot = readSlice(
32)
16134 block.timestamp = readUInt32()
16135 block.bits = readUInt32()
16136 block.nonce = readUInt32()
16138 if (buffer.length ===
80) return block
16140 function readVarInt () {
16141 var vi = varuint.decode(buffer, offset)
16142 offset += varuint.decode.bytes
16146 function readTransaction () {
16147 var tx = Transaction.fromBuffer(buffer.slice(offset), true)
16148 offset += tx.byteLength()
16152 var nTransactions = readVarInt()
16153 block.transactions = []
16155 for (var i =
0; i < nTransactions; ++i) {
16156 var tx = readTransaction()
16157 block.transactions.push(tx)
16163 Block.prototype.byteLength = function (headersOnly) {
16164 if (headersOnly || !this.transactions) return
80
16166 return
80 + varuint.encodingLength(this.transactions.length) + this.transactions.reduce(function (a, x) {
16167 return a + x.byteLength()
16171 Block.fromHex = function (hex) {
16172 return Block.fromBuffer(Buffer.from(hex, 'hex'))
16175 Block.prototype.getHash = function () {
16176 return bcrypto.hash256(this.toBuffer(true))
16179 Block.prototype.getId = function () {
16180 return this.getHash().reverse().toString('hex')
16183 Block.prototype.getUTCDate = function () {
16184 var date = new Date(
0) // epoch
16185 date.setUTCSeconds(this.timestamp)
16190 // TODO: buffer, offset compatibility
16191 Block.prototype.toBuffer = function (headersOnly) {
16192 var buffer = Buffer.allocUnsafe(this.byteLength(headersOnly))
16195 function writeSlice (slice) {
16196 slice.copy(buffer, offset)
16197 offset += slice.length
16200 function writeInt32 (i) {
16201 buffer.writeInt32LE(i, offset)
16204 function writeUInt32 (i) {
16205 buffer.writeUInt32LE(i, offset)
16209 writeInt32(this.version)
16210 writeSlice(this.prevHash)
16211 writeSlice(this.merkleRoot)
16212 writeUInt32(this.timestamp)
16213 writeUInt32(this.bits)
16214 writeUInt32(this.nonce)
16216 if (headersOnly || !this.transactions) return buffer
16218 varuint.encode(this.transactions.length, buffer, offset)
16219 offset += varuint.encode.bytes
16221 this.transactions.forEach(function (tx) {
16222 var txSize = tx.byteLength() // TODO: extract from toBuffer?
16223 tx.toBuffer(buffer, offset)
16230 Block.prototype.toHex = function (headersOnly) {
16231 return this.toBuffer(headersOnly).toString('hex')
16234 Block.calculateTarget = function (bits) {
16235 var exponent = ((bits &
0xff000000)
>> 24) -
3
16236 var mantissa = bits &
0x007fffff
16237 var target = Buffer.alloc(
32,
0)
16238 target.writeUInt32BE(mantissa,
28 - exponent)
16242 Block.calculateMerkleRoot = function (transactions) {
16243 typeforce([{ getHash: types.Function }], transactions)
16244 if (transactions.length ===
0) throw TypeError('Cannot compute merkle root for zero transactions')
16246 var hashes = transactions.map(function (transaction) {
16247 return transaction.getHash()
16250 return fastMerkleRoot(hashes, bcrypto.hash256)
16253 Block.prototype.checkMerkleRoot = function () {
16254 if (!this.transactions) return false
16256 var actualMerkleRoot = Block.calculateMerkleRoot(this.transactions)
16257 return this.merkleRoot.compare(actualMerkleRoot) ===
0
16260 Block.prototype.checkProofOfWork = function () {
16261 var hash = this.getHash().reverse()
16262 var target = Block.calculateTarget(this.bits)
16264 return hash.compare(target) <=
0
16267 module.exports = Block
16269 },{
"./crypto":
47,
"./transaction":
78,
"./types":
80,
"merkle-lib/fastRoot":
122,
"safe-buffer":
128,
"typeforce":
139,
"varuint-bitcoin":
141}],
46:[function(require,module,exports){
16270 var pushdata = require('pushdata-bitcoin')
16271 var varuint = require('varuint-bitcoin')
16273 // https://github.com/feross/buffer/blob/master/index.js#L1127
16274 function verifuint (value, max) {
16275 if (typeof value !== 'number') throw new Error('cannot write a non-number as a number')
16276 if (value <
0) throw new Error('specified a negative value for writing an unsigned value')
16277 if (value
> max) throw new Error('RangeError: value out of range')
16278 if (Math.floor(value) !== value) throw new Error('value has a fractional component')
16281 function readUInt64LE (buffer, offset) {
16282 var a = buffer.readUInt32LE(offset)
16283 var b = buffer.readUInt32LE(offset +
4)
16286 verifuint(b + a,
0x001fffffffffffff)
16291 function writeUInt64LE (buffer, value, offset) {
16292 verifuint(value,
0x001fffffffffffff)
16294 buffer.writeInt32LE(value & -
1, offset)
16295 buffer.writeUInt32LE(Math.floor(value /
0x100000000), offset +
4)
16299 // TODO: remove in
4.0.0?
16300 function readVarInt (buffer, offset) {
16301 var result = varuint.decode(buffer, offset)
16305 size: varuint.decode.bytes
16309 // TODO: remove in
4.0.0?
16310 function writeVarInt (buffer, number, offset) {
16311 varuint.encode(number, buffer, offset)
16312 return varuint.encode.bytes
16316 pushDataSize: pushdata.encodingLength,
16317 readPushDataInt: pushdata.decode,
16318 readUInt64LE: readUInt64LE,
16319 readVarInt: readVarInt,
16320 varIntBuffer: varuint.encode,
16321 varIntSize: varuint.encodingLength,
16322 writePushDataInt: pushdata.encode,
16323 writeUInt64LE: writeUInt64LE,
16324 writeVarInt: writeVarInt
16327 },{"pushdata-bitcoin":
125,"varuint-bitcoin":
141}],
47:[function(require,module,exports){
16328 var createHash = require('create-hash')
16330 function ripemd160 (buffer) {
16331 return createHash('rmd160').update(buffer).digest()
16334 function sha1 (buffer) {
16335 return createHash('sha1').update(buffer).digest()
16338 function sha256 (buffer) {
16339 return createHash('sha256').update(buffer).digest()
16342 function hash160 (buffer) {
16343 return ripemd160(sha256(buffer))
16346 function hash256 (buffer) {
16347 return sha256(sha256(buffer))
16353 ripemd160: ripemd160,
16358 },{"create-hash":
87}],
48:[function(require,module,exports){
16359 var Buffer = require('safe-buffer').Buffer
16360 var createHmac = require('create-hmac')
16361 var typeforce = require('typeforce')
16362 var types = require('./types')
16364 var BigInteger = require('bigi')
16365 var ECSignature = require('./ecsignature')
16367 var ZERO = Buffer.alloc(
1,
0)
16368 var ONE = Buffer.alloc(
1,
1)
16370 var ecurve = require('ecurve')
16371 var secp256k1 = ecurve.getCurveByName('secp256k1')
16373 // https://tools.ietf.org/html/rfc6979#section-
3.2
16374 function deterministicGenerateK (hash, x, checkSig) {
16375 typeforce(types.tuple(
16377 types.Buffer256bit,
16381 // Step A, ignored as hash already provided
16384 var k = Buffer.alloc(
32,
0)
16385 var v = Buffer.alloc(
32,
1)
16388 k = createHmac('sha256', k)
16396 v = createHmac('sha256', k).update(v).digest()
16399 k = createHmac('sha256', k)
16407 v = createHmac('sha256', k).update(v).digest()
16409 // Step H1/H2a, ignored as tlen === qlen (
256 bit)
16411 v = createHmac('sha256', k).update(v).digest()
16413 var T = BigInteger.fromBuffer(v)
16415 // Step H3, repeat until T is within the interval [
1, n -
1] and is suitable for ECDSA
16416 while (T.signum() <=
0 || T.compareTo(secp256k1.n)
>=
0 || !checkSig(T)) {
16417 k = createHmac('sha256', k)
16422 v = createHmac('sha256', k).update(v).digest()
16424 // Step H1/H2a, again, ignored as tlen === qlen (
256 bit)
16426 v = createHmac('sha256', k).update(v).digest()
16427 T = BigInteger.fromBuffer(v)
16433 var N_OVER_TWO = secp256k1.n.shiftRight(
1)
16435 function sign (hash, d) {
16436 typeforce(types.tuple(types.Hash256bit, types.BigInt), arguments)
16438 var x = d.toBuffer(
32)
16439 var e = BigInteger.fromBuffer(hash)
16440 var n = secp256k1.n
16441 var G = secp256k1.G
16444 deterministicGenerateK(hash, x, function (k) {
16445 var Q = G.multiply(k)
16447 if (secp256k1.isInfinity(Q)) return false
16449 r = Q.affineX.mod(n)
16450 if (r.signum() ===
0) return false
16452 s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n)
16453 if (s.signum() ===
0) return false
16458 // enforce low S values, see bip62: 'low s values in signatures'
16459 if (s.compareTo(N_OVER_TWO)
> 0) {
16463 return new ECSignature(r, s)
16466 function verify (hash, signature, Q) {
16467 typeforce(types.tuple(
16473 var n = secp256k1.n
16474 var G = secp256k1.G
16476 var r = signature.r
16477 var s = signature.s
16479 //
1.4.1 Enforce r and s are both integers in the interval [
1, n −
1]
16480 if (r.signum() <=
0 || r.compareTo(n)
>=
0) return false
16481 if (s.signum() <=
0 || s.compareTo(n)
>=
0) return false
16483 //
1.4.2 H = Hash(M), already done by the user
16485 var e = BigInteger.fromBuffer(hash)
16488 var sInv = s.modInverse(n)
16490 //
1.4.4 Compute u1 = es^−
1 mod n
16491 // u2 = rs^−
1 mod n
16492 var u1 = e.multiply(sInv).mod(n)
16493 var u2 = r.multiply(sInv).mod(n)
16495 //
1.4.5 Compute R = (xR, yR)
16497 var R = G.multiplyTwo(u1, Q, u2)
16499 //
1.4.5 (cont.) Enforce R is not at infinity
16500 if (secp256k1.isInfinity(R)) return false
16502 //
1.4.6 Convert the field element R.x to an integer
16505 //
1.4.7 Set v = xR mod n
16508 //
1.4.8 If v = r, output "valid", and if v != r, output "invalid"
16513 deterministicGenerateK: deterministicGenerateK,
16521 },{"./ecsignature":
50,"./types":
80,"bigi":
39,"create-hmac":
90,"ecurve":
94,"safe-buffer":
128,"typeforce":
139}],
49:[function(require,module,exports){
16522 var baddress = require('./address')
16523 var bcrypto = require('./crypto')
16524 var ecdsa = require('./ecdsa')
16525 var randomBytes = require('randombytes')
16526 var typeforce = require('typeforce')
16527 var types = require('./types')
16528 var wif = require('wif')
16530 var NETWORKS = require('./networks')
16531 var BigInteger = require('bigi')
16533 var ecurve = require('ecurve')
16534 var secp256k1 = ecdsa.__curve
16536 function ECPair (d, Q, options) {
16539 compressed: types.maybe(types.Boolean),
16540 network: types.maybe(types.Network)
16544 options = options || {}
16547 if (d.signum() <=
0) throw new Error('Private key must be greater than
0')
16548 if (d.compareTo(secp256k1.n)
>=
0) throw new Error('Private key must be less than the curve order')
16549 if (Q) throw new TypeError('Unexpected publicKey parameter')
16553 typeforce(types.ECPoint, Q)
16558 this.compressed = options.compressed === undefined ? true : options.compressed
16559 this.network = options.network || NETWORKS.bitcoin
16562 Object.defineProperty(ECPair.prototype, 'Q', {
16564 if (!this.__Q && this.d) {
16565 this.__Q = secp256k1.G.multiply(this.d)
16572 ECPair.fromPublicKeyBuffer = function (buffer, network) {
16573 var Q = ecurve.Point.decodeFrom(secp256k1, buffer)
16575 return new ECPair(null, Q, {
16576 compressed: Q.compressed,
16581 ECPair.fromWIF = function (string, network) {
16582 var decoded = wif.decode(string)
16583 var version = decoded.version
16585 // list of networks?
16586 if (types.Array(network)) {
16587 network = network.filter(function (x) {
16588 return version === x.wif
16591 if (!network) throw new Error('Unknown network version')
16593 // otherwise, assume a network object (or default to bitcoin)
16595 network = network || NETWORKS.bitcoin
16597 if (version !== network.wif) throw new Error('Invalid network version')
16600 var d = BigInteger.fromBuffer(decoded.privateKey)
16602 return new ECPair(d, null, {
16603 compressed: decoded.compressed,
16608 ECPair.makeRandom = function (options) {
16609 options = options || {}
16611 var rng = options.rng || randomBytes
16615 var buffer = rng(
32)
16616 typeforce(types.Buffer256bit, buffer)
16618 d = BigInteger.fromBuffer(buffer)
16619 } while (d.signum() <=
0 || d.compareTo(secp256k1.n)
>=
0)
16621 return new ECPair(d, null, options)
16624 ECPair.prototype.getAddress = function () {
16625 return baddress.toBase58Check(bcrypto.hash160(this.getPublicKeyBuffer()), this.getNetwork().pubKeyHash)
16628 ECPair.prototype.getNetwork = function () {
16629 return this.network
16632 ECPair.prototype.getPublicKeyBuffer = function () {
16633 return this.Q.getEncoded(this.compressed)
16636 ECPair.prototype.sign = function (hash) {
16637 if (!this.d) throw new Error('Missing private key')
16639 return ecdsa.sign(hash, this.d)
16642 ECPair.prototype.toWIF = function () {
16643 if (!this.d) throw new Error('Missing private key')
16645 return wif.encode(this.network.wif, this.d.toBuffer(
32), this.compressed)
16648 ECPair.prototype.verify = function (hash, signature) {
16649 return ecdsa.verify(hash, signature, this.Q)
16652 module.exports = ECPair
16654 },{"./address":
44,"./crypto":
47,"./ecdsa":
48,"./networks":
53,"./types":
80,"bigi":
39,"ecurve":
94,"randombytes":
126,"typeforce":
139,"wif":
142}],
50:[function(require,module,exports){
16655 (function (Buffer){
16656 var bip66 = require('bip66')
16657 var typeforce = require('typeforce')
16658 var types = require('./types')
16660 var BigInteger = require('bigi')
16662 function ECSignature (r, s) {
16663 typeforce(types.tuple(types.BigInt, types.BigInt), arguments)
16669 ECSignature.parseCompact = function (buffer) {
16670 typeforce(types.BufferN(
65), buffer)
16672 var flagByte = buffer.readUInt8(
0) -
27
16673 if (flagByte !== (flagByte &
7)) throw new Error('Invalid signature parameter')
16675 var compressed = !!(flagByte &
4)
16676 var recoveryParam = flagByte &
3
16677 var signature = ECSignature.fromRSBuffer(buffer.slice(
1))
16680 compressed: compressed,
16682 signature: signature
16686 ECSignature.fromRSBuffer = function (buffer) {
16687 typeforce(types.BufferN(
64), buffer)
16689 var r = BigInteger.fromBuffer(buffer.slice(
0,
32))
16690 var s = BigInteger.fromBuffer(buffer.slice(
32,
64))
16691 return new ECSignature(r, s)
16694 ECSignature.fromDER = function (buffer) {
16695 var decode = bip66.decode(buffer)
16696 var r = BigInteger.fromDERInteger(decode.r)
16697 var s = BigInteger.fromDERInteger(decode.s)
16699 return new ECSignature(r, s)
16702 // BIP62:
1 byte hashType flag (only
0x01,
0x02,
0x03,
0x81,
0x82 and
0x83 are allowed)
16703 ECSignature.parseScriptSignature = function (buffer) {
16704 var hashType = buffer.readUInt8(buffer.length -
1)
16705 var hashTypeMod = hashType & ~
0x80
16707 if (hashTypeMod <=
0x00 || hashTypeMod
>=
0x04) throw new Error('Invalid hashType ' + hashType)
16710 signature: ECSignature.fromDER(buffer.slice(
0, -
1)),
16715 ECSignature.prototype.toCompact = function (i, compressed) {
16722 var buffer = Buffer.alloc(
65)
16723 buffer.writeUInt8(i,
0)
16724 this.toRSBuffer(buffer,
1)
16728 ECSignature.prototype.toDER = function () {
16729 var r = Buffer.from(this.r.toDERInteger())
16730 var s = Buffer.from(this.s.toDERInteger())
16732 return bip66.encode(r, s)
16735 ECSignature.prototype.toRSBuffer = function (buffer, offset) {
16736 buffer = buffer || Buffer.alloc(
64)
16737 this.r.toBuffer(
32).copy(buffer, offset)
16738 this.s.toBuffer(
32).copy(buffer, offset +
32)
16742 ECSignature.prototype.toScriptSignature = function (hashType) {
16743 var hashTypeMod = hashType & ~
0x80
16744 if (hashTypeMod <=
0 || hashTypeMod
>=
4) throw new Error('Invalid hashType ' + hashType)
16746 var hashTypeBuffer = Buffer.alloc(
1)
16747 hashTypeBuffer.writeUInt8(hashType,
0)
16749 return Buffer.concat([this.toDER(), hashTypeBuffer])
16752 module.exports = ECSignature
16754 }).call(this,require("buffer").Buffer)
16755 },{"./types":
80,"bigi":
39,"bip66":
41,"buffer":
5,"typeforce":
139}],
51:[function(require,module,exports){
16756 var Buffer = require('safe-buffer').Buffer
16757 var base58check = require('bs58check')
16758 var bcrypto = require('./crypto')
16759 var createHmac = require('create-hmac')
16760 var typeforce = require('typeforce')
16761 var types = require('./types')
16762 var NETWORKS = require('./networks')
16764 var BigInteger = require('bigi')
16765 var ECPair = require('./ecpair')
16767 var ecurve = require('ecurve')
16768 var curve = ecurve.getCurveByName('secp256k1')
16770 function HDNode (keyPair, chainCode) {
16771 typeforce(types.tuple('ECPair', types.Buffer256bit), arguments)
16773 if (!keyPair.compressed) throw new TypeError('BIP32 only allows compressed keyPairs')
16775 this.keyPair = keyPair
16776 this.chainCode = chainCode
16779 this.parentFingerprint =
0x00000000
16782 HDNode.HIGHEST_BIT =
0x80000000
16784 HDNode.MASTER_SECRET = Buffer.from('Bitcoin seed', 'utf8')
16786 HDNode.fromSeedBuffer = function (seed, network) {
16787 typeforce(types.tuple(types.Buffer, types.maybe(types.Network)), arguments)
16789 if (seed.length <
16) throw new TypeError('Seed should be at least
128 bits')
16790 if (seed.length
> 64) throw new TypeError('Seed should be at most
512 bits')
16792 var I = createHmac('sha512', HDNode.MASTER_SECRET).update(seed).digest()
16793 var IL = I.slice(
0,
32)
16794 var IR = I.slice(
32)
16796 // In case IL is
0 or
>= n, the master key is invalid
16797 // This is handled by the ECPair constructor
16798 var pIL = BigInteger.fromBuffer(IL)
16799 var keyPair = new ECPair(pIL, null, {
16803 return new HDNode(keyPair, IR)
16806 HDNode.fromSeedHex = function (hex, network) {
16807 return HDNode.fromSeedBuffer(Buffer.from(hex, 'hex'), network)
16810 HDNode.fromBase58 = function (string, networks) {
16811 var buffer = base58check.decode(string)
16812 if (buffer.length !==
78) throw new Error('Invalid buffer length')
16814 //
4 bytes: version bytes
16815 var version = buffer.readUInt32BE(
0)
16818 // list of networks?
16819 if (Array.isArray(networks)) {
16820 network = networks.filter(function (x) {
16821 return version === x.bip32.private ||
16822 version === x.bip32.public
16825 if (!network) throw new Error('Unknown network version')
16827 // otherwise, assume a network object (or default to bitcoin)
16829 network = networks || NETWORKS.bitcoin
16832 if (version !== network.bip32.private &&
16833 version !== network.bip32.public) throw new Error('Invalid network version')
16835 //
1 byte: depth:
0x00 for master nodes,
0x01 for level-
1 descendants, ...
16836 var depth = buffer[
4]
16838 //
4 bytes: the fingerprint of the parent's key (
0x00000000 if master key)
16839 var parentFingerprint = buffer.readUInt32BE(
5)
16841 if (parentFingerprint !==
0x00000000) throw new Error('Invalid parent fingerprint')
16844 //
4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
16845 // This is encoded in MSB order. (
0x00000000 if master key)
16846 var index = buffer.readUInt32BE(
9)
16847 if (depth ===
0 && index !==
0) throw new Error('Invalid index')
16849 //
32 bytes: the chain code
16850 var chainCode = buffer.slice(
13,
45)
16853 //
33 bytes: private key data (
0x00 + k)
16854 if (version === network.bip32.private) {
16855 if (buffer.readUInt8(
45) !==
0x00) throw new Error('Invalid private key')
16857 var d = BigInteger.fromBuffer(buffer.slice(
46,
78))
16858 keyPair = new ECPair(d, null, { network: network })
16860 //
33 bytes: public key data (
0x02 + X or
0x03 + X)
16862 var Q = ecurve.Point.decodeFrom(curve, buffer.slice(
45,
78))
16863 // Q.compressed is assumed, if somehow this assumption is broken, `new HDNode` will throw
16865 // Verify that the X coordinate in the public point corresponds to a point on the curve.
16866 // If not, the extended public key is invalid.
16869 keyPair = new ECPair(null, Q, { network: network })
16872 var hd = new HDNode(keyPair, chainCode)
16875 hd.parentFingerprint = parentFingerprint
16880 HDNode.prototype.getAddress = function () {
16881 return this.keyPair.getAddress()
16884 HDNode.prototype.getIdentifier = function () {
16885 return bcrypto.hash160(this.keyPair.getPublicKeyBuffer())
16888 HDNode.prototype.getFingerprint = function () {
16889 return this.getIdentifier().slice(
0,
4)
16892 HDNode.prototype.getNetwork = function () {
16893 return this.keyPair.getNetwork()
16896 HDNode.prototype.getPublicKeyBuffer = function () {
16897 return this.keyPair.getPublicKeyBuffer()
16900 HDNode.prototype.neutered = function () {
16901 var neuteredKeyPair = new ECPair(null, this.keyPair.Q, {
16902 network: this.keyPair.network
16905 var neutered = new HDNode(neuteredKeyPair, this.chainCode)
16906 neutered.depth = this.depth
16907 neutered.index = this.index
16908 neutered.parentFingerprint = this.parentFingerprint
16913 HDNode.prototype.sign = function (hash) {
16914 return this.keyPair.sign(hash)
16917 HDNode.prototype.verify = function (hash, signature) {
16918 return this.keyPair.verify(hash, signature)
16921 HDNode.prototype.toBase58 = function (__isPrivate) {
16922 if (__isPrivate !== undefined) throw new TypeError('Unsupported argument in
2.0.0')
16925 var network = this.keyPair.network
16926 var version = (!this.isNeutered()) ? network.bip32.private : network.bip32.public
16927 var buffer = Buffer.allocUnsafe(
78)
16929 //
4 bytes: version bytes
16930 buffer.writeUInt32BE(version,
0)
16932 //
1 byte: depth:
0x00 for master nodes,
0x01 for level-
1 descendants, ....
16933 buffer.writeUInt8(this.depth,
4)
16935 //
4 bytes: the fingerprint of the parent's key (
0x00000000 if master key)
16936 buffer.writeUInt32BE(this.parentFingerprint,
5)
16938 //
4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
16939 // This is encoded in big endian. (
0x00000000 if master key)
16940 buffer.writeUInt32BE(this.index,
9)
16942 //
32 bytes: the chain code
16943 this.chainCode.copy(buffer,
13)
16945 //
33 bytes: the public key or private key data
16946 if (!this.isNeutered()) {
16947 //
0x00 + k for private keys
16948 buffer.writeUInt8(
0,
45)
16949 this.keyPair.d.toBuffer(
32).copy(buffer,
46)
16951 //
33 bytes: the public key
16953 // X9.62 encoding for public keys
16954 this.keyPair.getPublicKeyBuffer().copy(buffer,
45)
16957 return base58check.encode(buffer)
16960 // https://github.com/bitcoin/bips/blob/master/bip-
0032.mediawiki#child-key-derivation-ckd-functions
16961 HDNode.prototype.derive = function (index) {
16962 typeforce(types.UInt32, index)
16964 var isHardened = index
>= HDNode.HIGHEST_BIT
16965 var data = Buffer.allocUnsafe(
37)
16969 if (this.isNeutered()) throw new TypeError('Could not derive hardened child key')
16971 // data =
0x00 || ser256(kpar) || ser32(index)
16973 this.keyPair.d.toBuffer(
32).copy(data,
1)
16974 data.writeUInt32BE(index,
33)
16978 // data = serP(point(kpar)) || ser32(index)
16979 // = serP(Kpar) || ser32(index)
16980 this.keyPair.getPublicKeyBuffer().copy(data,
0)
16981 data.writeUInt32BE(index,
33)
16984 var I = createHmac('sha512', this.chainCode).update(data).digest()
16985 var IL = I.slice(
0,
32)
16986 var IR = I.slice(
32)
16988 var pIL = BigInteger.fromBuffer(IL)
16990 // In case parse256(IL)
>= n, proceed with the next value for i
16991 if (pIL.compareTo(curve.n)
>=
0) {
16992 return this.derive(index +
1)
16995 // Private parent key -
> private child key
16997 if (!this.isNeutered()) {
16998 // ki = parse256(IL) + kpar (mod n)
16999 var ki = pIL.add(this.keyPair.d).mod(curve.n)
17001 // In case ki ==
0, proceed with the next value for i
17002 if (ki.signum() ===
0) {
17003 return this.derive(index +
1)
17006 derivedKeyPair = new ECPair(ki, null, {
17007 network: this.keyPair.network
17010 // Public parent key -
> public child key
17012 // Ki = point(parse256(IL)) + Kpar
17014 var Ki = curve.G.multiply(pIL).add(this.keyPair.Q)
17016 // In case Ki is the point at infinity, proceed with the next value for i
17017 if (curve.isInfinity(Ki)) {
17018 return this.derive(index +
1)
17021 derivedKeyPair = new ECPair(null, Ki, {
17022 network: this.keyPair.network
17026 var hd = new HDNode(derivedKeyPair, IR)
17027 hd.depth = this.depth +
1
17029 hd.parentFingerprint = this.getFingerprint().readUInt32BE(
0)
17034 HDNode.prototype.deriveHardened = function (index) {
17035 typeforce(types.UInt31, index)
17037 // Only derives hardened private keys by default
17038 return this.derive(index + HDNode.HIGHEST_BIT)
17041 // Private === not neutered
17042 // Public === neutered
17043 HDNode.prototype.isNeutered = function () {
17044 return !(this.keyPair.d)
17047 HDNode.prototype.derivePath = function (path) {
17048 typeforce(types.BIP32Path, path)
17050 var splitPath = path.split('/')
17051 if (splitPath[
0] === 'm') {
17052 if (this.parentFingerprint) {
17053 throw new Error('Not a master node')
17056 splitPath = splitPath.slice(
1)
17059 return splitPath.reduce(function (prevHd, indexStr) {
17061 if (indexStr.slice(-
1) === "'") {
17062 index = parseInt(indexStr.slice(
0, -
1),
10)
17063 return prevHd.deriveHardened(index)
17065 index = parseInt(indexStr,
10)
17066 return prevHd.derive(index)
17071 module.exports = HDNode
17073 },{"./crypto":
47,"./ecpair":
49,"./networks":
53,"./types":
80,"bigi":
39,"bs58check":
85,"create-hmac":
90,"ecurve":
94,"safe-buffer":
128,"typeforce":
139}],
52:[function(require,module,exports){
17074 var script = require('./script')
17076 var templates = require('./templates')
17077 for (var key in templates) {
17078 script[key] = templates[key]
17082 bufferutils: require('./bufferutils'), // TODO: remove in
4.0.0
17084 Block: require('./block'),
17085 ECPair: require('./ecpair'),
17086 ECSignature: require('./ecsignature'),
17087 HDNode: require('./hdnode'),
17088 Transaction: require('./transaction'),
17089 TransactionBuilder: require('./transaction_builder'),
17091 address: require('./address'),
17092 crypto: require('./crypto'),
17093 networks: require('./networks'),
17094 opcodes: require('bitcoin-ops'),
17098 },{"./address":
44,"./block":
45,"./bufferutils":
46,"./crypto":
47,"./ecpair":
49,"./ecsignature":
50,"./hdnode":
51,"./networks":
53,"./script":
54,"./templates":
56,"./transaction":
78,"./transaction_builder":
79,"bitcoin-ops":
42}],
53:[function(require,module,exports){
17099 // https://en.bitcoin.it/wiki/List_of_address_prefixes
17100 // Dogecoin BIP32 is a proposed standard: https://bitcointalk.org/index.php?topic=
409731
17104 messagePrefix: '\x18Bitcoin Signed Message:\n',
17107 public:
0x0488b21e,
17108 private:
0x0488ade4
17115 messagePrefix: '\x18Bitcoin Signed Message:\n',
17118 public:
0x043587cf,
17119 private:
0x04358394
17126 messagePrefix: '\x19Litecoin Signed Message:\n',
17128 public:
0x019da462,
17129 private:
0x019d9cfe
17137 },{}],
54:[function(require,module,exports){
17138 var Buffer = require('safe-buffer').Buffer
17139 var bip66 = require('bip66')
17140 var pushdata = require('pushdata-bitcoin')
17141 var typeforce = require('typeforce')
17142 var types = require('./types')
17143 var scriptNumber = require('./script_number')
17145 var OPS = require('bitcoin-ops')
17146 var REVERSE_OPS = require('bitcoin-ops/map')
17147 var OP_INT_BASE = OPS.OP_RESERVED // OP_1 -
1
17149 function isOPInt (value) {
17150 return types.Number(value) &&
17151 ((value === OPS.OP_0) ||
17152 (value
>= OPS.OP_1 && value <= OPS.OP_16) ||
17153 (value === OPS.OP_1NEGATE))
17156 function isPushOnlyChunk (value) {
17157 return types.Buffer(value) || isOPInt(value)
17160 function isPushOnly (value) {
17161 return types.Array(value) && value.every(isPushOnlyChunk)
17164 function asMinimalOP (buffer) {
17165 if (buffer.length ===
0) return OPS.OP_0
17166 if (buffer.length !==
1) return
17167 if (buffer[
0]
>=
1 && buffer[
0] <=
16) return OP_INT_BASE + buffer[
0]
17168 if (buffer[
0] ===
0x81) return OPS.OP_1NEGATE
17171 function compile (chunks) {
17173 if (Buffer.isBuffer(chunks)) return chunks
17175 typeforce(types.Array, chunks)
17177 var bufferSize = chunks.reduce(function (accum, chunk) {
17179 if (Buffer.isBuffer(chunk)) {
17180 // adhere to BIP62.3, minimal push policy
17181 if (chunk.length ===
1 && asMinimalOP(chunk) !== undefined) {
17185 return accum + pushdata.encodingLength(chunk.length) + chunk.length
17192 var buffer = Buffer.allocUnsafe(bufferSize)
17195 chunks.forEach(function (chunk) {
17197 if (Buffer.isBuffer(chunk)) {
17198 // adhere to BIP62.3, minimal push policy
17199 var opcode = asMinimalOP(chunk)
17200 if (opcode !== undefined) {
17201 buffer.writeUInt8(opcode, offset)
17206 offset += pushdata.encode(buffer, chunk.length, offset)
17207 chunk.copy(buffer, offset)
17208 offset += chunk.length
17212 buffer.writeUInt8(chunk, offset)
17217 if (offset !== buffer.length) throw new Error('Could not decode chunks')
17221 function decompile (buffer) {
17223 if (types.Array(buffer)) return buffer
17225 typeforce(types.Buffer, buffer)
17230 while (i < buffer.length) {
17231 var opcode = buffer[i]
17234 if ((opcode
> OPS.OP_0) && (opcode <= OPS.OP_PUSHDATA4)) {
17235 var d = pushdata.decode(buffer, i)
17237 // did reading a pushDataInt fail? empty script
17238 if (d === null) return []
17241 // attempt to read too much data? empty script
17242 if (i + d.number
> buffer.length) return []
17244 var data = buffer.slice(i, i + d.number)
17247 // decompile minimally
17248 var op = asMinimalOP(data)
17249 if (op !== undefined) {
17257 chunks.push(opcode)
17266 function toASM (chunks) {
17267 if (Buffer.isBuffer(chunks)) {
17268 chunks = decompile(chunks)
17271 return chunks.map(function (chunk) {
17273 if (Buffer.isBuffer(chunk)) {
17274 var op = asMinimalOP(chunk)
17275 if (op === undefined) return chunk.toString('hex')
17280 return REVERSE_OPS[chunk]
17284 function fromASM (asm) {
17285 typeforce(types.String, asm)
17287 return compile(asm.split(' ').map(function (chunkStr) {
17289 if (OPS[chunkStr] !== undefined) return OPS[chunkStr]
17290 typeforce(types.Hex, chunkStr)
17293 return Buffer.from(chunkStr, 'hex')
17297 function toStack (chunks) {
17298 chunks = decompile(chunks)
17299 typeforce(isPushOnly, chunks)
17301 return chunks.map(function (op) {
17302 if (Buffer.isBuffer(op)) return op
17303 if (op === OPS.OP_0) return Buffer.allocUnsafe(
0)
17305 return scriptNumber.encode(op - OP_INT_BASE)
17309 function isCanonicalPubKey (buffer) {
17310 if (!Buffer.isBuffer(buffer)) return false
17311 if (buffer.length <
33) return false
17313 switch (buffer[
0]) {
17316 return buffer.length ===
33
17318 return buffer.length ===
65
17324 function isDefinedHashType (hashType) {
17325 var hashTypeMod = hashType & ~
0x80
17327 // return hashTypeMod
> SIGHASH_ALL && hashTypeMod < SIGHASH_SINGLE
17328 return hashTypeMod
> 0x00 && hashTypeMod <
0x04
17331 function isCanonicalSignature (buffer) {
17332 if (!Buffer.isBuffer(buffer)) return false
17333 if (!isDefinedHashType(buffer[buffer.length -
1])) return false
17335 return bip66.check(buffer.slice(
0, -
1))
17340 decompile: decompile,
17345 number: require('./script_number'),
17347 isCanonicalPubKey: isCanonicalPubKey,
17348 isCanonicalSignature: isCanonicalSignature,
17349 isPushOnly: isPushOnly,
17350 isDefinedHashType: isDefinedHashType
17353 },{
"./script_number":
55,
"./types":
80,
"bip66":
41,
"bitcoin-ops":
42,
"bitcoin-ops/map":
43,
"pushdata-bitcoin":
125,
"safe-buffer":
128,
"typeforce":
139}],
55:[function(require,module,exports){
17354 var Buffer = require('safe-buffer').Buffer
17356 function decode (buffer, maxLength, minimal) {
17357 maxLength = maxLength ||
4
17358 minimal = minimal === undefined ? true : minimal
17360 var length = buffer.length
17361 if (length ===
0) return
0
17362 if (length
> maxLength) throw new TypeError('Script number overflow')
17364 if ((buffer[length -
1] &
0x7f) ===
0) {
17365 if (length <=
1 || (buffer[length -
2] &
0x80) ===
0) throw new Error('Non-minimally encoded script number')
17370 if (length ===
5) {
17371 var a = buffer.readUInt32LE(
0)
17372 var b = buffer.readUInt8(
4)
17374 if (b &
0x80) return -(((b & ~
0x80) *
0x100000000) + a)
17375 return (b *
0x100000000) + a
17380 //
32-bit /
24-bit /
16-bit /
8-bit
17381 for (var i =
0; i < length; ++i) {
17382 result |= buffer[i] << (
8 * i)
17385 if (buffer[length -
1] &
0x80) return -(result & ~(
0x80 << (
8 * (length -
1))))
17389 function scriptNumSize (i) {
17390 return i
> 0x7fffffff ?
5
17398 function encode (number) {
17399 var value = Math.abs(number)
17400 var size = scriptNumSize(value)
17401 var buffer = Buffer.allocUnsafe(size)
17402 var negative = number <
0
17404 for (var i =
0; i < size; ++i) {
17405 buffer.writeUInt8(value &
0xff, i)
17409 if (buffer[size -
1] &
0x80) {
17410 buffer.writeUInt8(negative ?
0x80 :
0x00, size -
1)
17411 } else if (negative) {
17412 buffer[size -
1] |=
0x80
17423 },{"safe-buffer":
128}],
56:[function(require,module,exports){
17424 var decompile = require('../script').decompile
17425 var multisig = require('./multisig')
17426 var nullData = require('./nulldata')
17427 var pubKey = require('./pubkey')
17428 var pubKeyHash = require('./pubkeyhash')
17429 var scriptHash = require('./scripthash')
17430 var witnessPubKeyHash = require('./witnesspubkeyhash')
17431 var witnessScriptHash = require('./witnessscripthash')
17432 var witnessCommitment = require('./witnesscommitment')
17435 MULTISIG: 'multisig',
17436 NONSTANDARD: 'nonstandard',
17437 NULLDATA: 'nulldata',
17439 P2PKH: 'pubkeyhash',
17440 P2SH: 'scripthash',
17441 P2WPKH: 'witnesspubkeyhash',
17442 P2WSH: 'witnessscripthash',
17443 WITNESS_COMMITMENT: 'witnesscommitment'
17446 function classifyOutput (script) {
17447 if (witnessPubKeyHash.output.check(script)) return types.P2WPKH
17448 if (witnessScriptHash.output.check(script)) return types.P2WSH
17449 if (pubKeyHash.output.check(script)) return types.P2PKH
17450 if (scriptHash.output.check(script)) return types.P2SH
17452 // XXX: optimization, below functions .decompile before use
17453 var chunks = decompile(script)
17454 if (multisig.output.check(chunks)) return types.MULTISIG
17455 if (pubKey.output.check(chunks)) return types.P2PK
17456 if (witnessCommitment.output.check(chunks)) return types.WITNESS_COMMITMENT
17457 if (nullData.output.check(chunks)) return types.NULLDATA
17459 return types.NONSTANDARD
17462 function classifyInput (script, allowIncomplete) {
17463 // XXX: optimization, below functions .decompile before use
17464 var chunks = decompile(script)
17466 if (pubKeyHash.input.check(chunks)) return types.P2PKH
17467 if (scriptHash.input.check(chunks, allowIncomplete)) return types.P2SH
17468 if (multisig.input.check(chunks, allowIncomplete)) return types.MULTISIG
17469 if (pubKey.input.check(chunks)) return types.P2PK
17471 return types.NONSTANDARD
17474 function classifyWitness (script, allowIncomplete) {
17475 // XXX: optimization, below functions .decompile before use
17476 var chunks = decompile(script)
17478 if (witnessPubKeyHash.input.check(chunks)) return types.P2WPKH
17479 if (witnessScriptHash.input.check(chunks, allowIncomplete)) return types.P2WSH
17481 return types.NONSTANDARD
17485 classifyInput: classifyInput,
17486 classifyOutput: classifyOutput,
17487 classifyWitness: classifyWitness,
17488 multisig: multisig,
17489 nullData: nullData,
17491 pubKeyHash: pubKeyHash,
17492 scriptHash: scriptHash,
17493 witnessPubKeyHash: witnessPubKeyHash,
17494 witnessScriptHash: witnessScriptHash,
17495 witnessCommitment: witnessCommitment,
17499 },{"../script":
54,"./multisig":
57,"./nulldata":
60,"./pubkey":
61,"./pubkeyhash":
64,"./scripthash":
67,"./witnesscommitment":
70,"./witnesspubkeyhash":
72,"./witnessscripthash":
75}],
57:[function(require,module,exports){
17501 input: require('./input'),
17502 output: require('./output')
17505 },{"./input":
58,"./output":
59}],
58:[function(require,module,exports){
17506 // OP_0 [signatures ...]
17508 var Buffer = require('safe-buffer').Buffer
17509 var bscript = require('../../script')
17510 var p2mso = require('./output')
17511 var typeforce = require('typeforce')
17512 var OPS = require('bitcoin-ops')
17514 function partialSignature (value) {
17515 return value === OPS.OP_0 || bscript.isCanonicalSignature(value)
17518 function check (script, allowIncomplete) {
17519 var chunks = bscript.decompile(script)
17520 if (chunks.length <
2) return false
17521 if (chunks[
0] !== OPS.OP_0) return false
17523 if (allowIncomplete) {
17524 return chunks.slice(
1).every(partialSignature)
17527 return chunks.slice(
1).every(bscript.isCanonicalSignature)
17529 check.toJSON = function () { return 'multisig input' }
17531 var EMPTY_BUFFER = Buffer.allocUnsafe(
0)
17533 function encodeStack (signatures, scriptPubKey) {
17534 typeforce([partialSignature], signatures)
17536 if (scriptPubKey) {
17537 var scriptData = p2mso.decode(scriptPubKey)
17539 if (signatures.length < scriptData.m) {
17540 throw new TypeError('Not enough signatures provided')
17543 if (signatures.length
> scriptData.pubKeys.length) {
17544 throw new TypeError('Too many signatures provided')
17548 return [].concat(EMPTY_BUFFER, signatures.map(function (sig) {
17549 if (sig === OPS.OP_0) {
17550 return EMPTY_BUFFER
17556 function encode (signatures, scriptPubKey) {
17557 return bscript.compile(encodeStack(signatures, scriptPubKey))
17560 function decodeStack (stack, allowIncomplete) {
17561 typeforce(check, stack, allowIncomplete)
17562 return stack.slice(
1)
17565 function decode (buffer, allowIncomplete) {
17566 var stack = bscript.decompile(buffer)
17567 return decodeStack(stack, allowIncomplete)
17573 decodeStack: decodeStack,
17575 encodeStack: encodeStack
17578 },{"../../script":
54,"./output":
59,"bitcoin-ops":
42,"safe-buffer":
128,"typeforce":
139}],
59:[function(require,module,exports){
17579 // m [pubKeys ...] n OP_CHECKMULTISIG
17581 var bscript = require('../../script')
17582 var types = require('../../types')
17583 var typeforce = require('typeforce')
17584 var OPS = require('bitcoin-ops')
17585 var OP_INT_BASE = OPS.OP_RESERVED // OP_1 -
1
17587 function check (script, allowIncomplete) {
17588 var chunks = bscript.decompile(script)
17590 if (chunks.length <
4) return false
17591 if (chunks[chunks.length -
1] !== OPS.OP_CHECKMULTISIG) return false
17592 if (!types.Number(chunks[
0])) return false
17593 if (!types.Number(chunks[chunks.length -
2])) return false
17594 var m = chunks[
0] - OP_INT_BASE
17595 var n = chunks[chunks.length -
2] - OP_INT_BASE
17597 if (m <=
0) return false
17598 if (n
> 16) return false
17599 if (m
> n) return false
17600 if (n !== chunks.length -
3) return false
17601 if (allowIncomplete) return true
17603 var keys = chunks.slice(
1, -
2)
17604 return keys.every(bscript.isCanonicalPubKey)
17606 check.toJSON = function () { return 'multi-sig output' }
17608 function encode (m, pubKeys) {
17611 pubKeys: [bscript.isCanonicalPubKey]
17617 var n = pubKeys.length
17618 if (n < m) throw new TypeError('Not enough pubKeys provided')
17620 return bscript.compile([].concat(
17624 OPS.OP_CHECKMULTISIG
17628 function decode (buffer, allowIncomplete) {
17629 var chunks = bscript.decompile(buffer)
17630 typeforce(check, chunks, allowIncomplete)
17633 m: chunks[
0] - OP_INT_BASE,
17634 pubKeys: chunks.slice(
1, -
2)
17644 },{"../../script":
54,"../../types":
80,"bitcoin-ops":
42,"typeforce":
139}],
60:[function(require,module,exports){
17645 // OP_RETURN {data}
17647 var bscript = require('../script')
17648 var types = require('../types')
17649 var typeforce = require('typeforce')
17650 var OPS = require('bitcoin-ops')
17652 function check (script) {
17653 var buffer = bscript.compile(script)
17655 return buffer.length
> 1 &&
17656 buffer[
0] === OPS.OP_RETURN
17658 check.toJSON = function () { return 'null data output' }
17660 function encode (data) {
17661 typeforce(types.Buffer, data)
17663 return bscript.compile([OPS.OP_RETURN, data])
17666 function decode (buffer) {
17667 typeforce(check, buffer)
17669 return buffer.slice(
2)
17680 },{
"../script":
54,
"../types":
80,
"bitcoin-ops":
42,
"typeforce":
139}],
61:[function(require,module,exports){
17681 arguments[
4][
57][
0].apply(exports,arguments)
17682 },{
"./input":
62,
"./output":
63,
"dup":
57}],
62:[function(require,module,exports){
17685 var bscript = require('../../script')
17686 var typeforce = require('typeforce')
17688 function check (script) {
17689 var chunks = bscript.decompile(script)
17691 return chunks.length ===
1 &&
17692 bscript.isCanonicalSignature(chunks[
0])
17694 check.toJSON = function () { return 'pubKey input' }
17696 function encodeStack (signature) {
17697 typeforce(bscript.isCanonicalSignature, signature)
17701 function encode (signature) {
17702 return bscript.compile(encodeStack(signature))
17705 function decodeStack (stack) {
17706 typeforce(check, stack)
17710 function decode (buffer) {
17711 var stack = bscript.decompile(buffer)
17712 return decodeStack(stack)
17718 decodeStack: decodeStack,
17720 encodeStack: encodeStack
17723 },{
"../../script":
54,
"typeforce":
139}],
63:[function(require,module,exports){
17724 // {pubKey} OP_CHECKSIG
17726 var bscript = require('../../script')
17727 var typeforce = require('typeforce')
17728 var OPS = require('bitcoin-ops')
17730 function check (script) {
17731 var chunks = bscript.decompile(script)
17733 return chunks.length ===
2 &&
17734 bscript.isCanonicalPubKey(chunks[
0]) &&
17735 chunks[
1] === OPS.OP_CHECKSIG
17737 check.toJSON = function () { return 'pubKey output' }
17739 function encode (pubKey) {
17740 typeforce(bscript.isCanonicalPubKey, pubKey)
17742 return bscript.compile([pubKey, OPS.OP_CHECKSIG])
17745 function decode (buffer) {
17746 var chunks = bscript.decompile(buffer)
17747 typeforce(check, chunks)
17758 },{
"../../script":
54,
"bitcoin-ops":
42,
"typeforce":
139}],
64:[function(require,module,exports){
17759 arguments[
4][
57][
0].apply(exports,arguments)
17760 },{
"./input":
65,
"./output":
66,
"dup":
57}],
65:[function(require,module,exports){
17761 // {signature} {pubKey}
17763 var bscript = require('../../script')
17764 var typeforce = require('typeforce')
17766 function check (script) {
17767 var chunks = bscript.decompile(script)
17769 return chunks.length ===
2 &&
17770 bscript.isCanonicalSignature(chunks[
0]) &&
17771 bscript.isCanonicalPubKey(chunks[
1])
17773 check.toJSON = function () { return 'pubKeyHash input' }
17775 function encodeStack (signature, pubKey) {
17777 signature: bscript.isCanonicalSignature,
17778 pubKey: bscript.isCanonicalPubKey
17780 signature: signature,
17784 return [signature, pubKey]
17787 function encode (signature, pubKey) {
17788 return bscript.compile(encodeStack(signature, pubKey))
17791 function decodeStack (stack) {
17792 typeforce(check, stack)
17795 signature: stack[
0],
17800 function decode (buffer) {
17801 var stack = bscript.decompile(buffer)
17802 return decodeStack(stack)
17808 decodeStack: decodeStack,
17810 encodeStack: encodeStack
17813 },{
"../../script":
54,
"typeforce":
139}],
66:[function(require,module,exports){
17814 // OP_DUP OP_HASH160 {pubKeyHash} OP_EQUALVERIFY OP_CHECKSIG
17816 var bscript = require('../../script')
17817 var types = require('../../types')
17818 var typeforce = require('typeforce')
17819 var OPS = require('bitcoin-ops')
17821 function check (script) {
17822 var buffer = bscript.compile(script)
17824 return buffer.length ===
25 &&
17825 buffer[
0] === OPS.OP_DUP &&
17826 buffer[
1] === OPS.OP_HASH160 &&
17827 buffer[
2] ===
0x14 &&
17828 buffer[
23] === OPS.OP_EQUALVERIFY &&
17829 buffer[
24] === OPS.OP_CHECKSIG
17831 check.toJSON = function () { return 'pubKeyHash output' }
17833 function encode (pubKeyHash) {
17834 typeforce(types.Hash160bit, pubKeyHash)
17836 return bscript.compile([
17840 OPS.OP_EQUALVERIFY,
17845 function decode (buffer) {
17846 typeforce(check, buffer)
17848 return buffer.slice(
3,
23)
17857 },{
"../../script":
54,
"../../types":
80,
"bitcoin-ops":
42,
"typeforce":
139}],
67:[function(require,module,exports){
17858 arguments[
4][
57][
0].apply(exports,arguments)
17859 },{
"./input":
68,
"./output":
69,
"dup":
57}],
68:[function(require,module,exports){
17860 //
<scriptSig> {serialized scriptPubKey script}
17862 var Buffer = require('safe-buffer').Buffer
17863 var bscript = require('../../script')
17864 var typeforce = require('typeforce')
17866 var p2ms = require('../multisig/')
17867 var p2pk = require('../pubkey/')
17868 var p2pkh = require('../pubkeyhash/')
17869 var p2wpkho = require('../witnesspubkeyhash/output')
17870 var p2wsho = require('../witnessscripthash/output')
17872 function check (script, allowIncomplete) {
17873 var chunks = bscript.decompile(script)
17874 if (chunks.length <
1) return false
17876 var lastChunk = chunks[chunks.length -
1]
17877 if (!Buffer.isBuffer(lastChunk)) return false
17879 var scriptSigChunks = bscript.decompile(bscript.compile(chunks.slice(
0, -
1)))
17880 var redeemScriptChunks = bscript.decompile(lastChunk)
17882 // is redeemScript a valid script?
17883 if (redeemScriptChunks.length ===
0) return false
17885 // is redeemScriptSig push only?
17886 if (!bscript.isPushOnly(scriptSigChunks)) return false
17889 if (chunks.length ===
1) {
17890 return p2wsho.check(redeemScriptChunks) ||
17891 p2wpkho.check(redeemScriptChunks)
17895 if (p2pkh.input.check(scriptSigChunks) &&
17896 p2pkh.output.check(redeemScriptChunks)) return true
17898 if (p2ms.input.check(scriptSigChunks, allowIncomplete) &&
17899 p2ms.output.check(redeemScriptChunks)) return true
17901 if (p2pk.input.check(scriptSigChunks) &&
17902 p2pk.output.check(redeemScriptChunks)) return true
17906 check.toJSON = function () { return 'scriptHash input' }
17908 function encodeStack (redeemScriptStack, redeemScript) {
17909 var serializedScriptPubKey = bscript.compile(redeemScript)
17911 return [].concat(redeemScriptStack, serializedScriptPubKey)
17914 function encode (redeemScriptSig, redeemScript) {
17915 var redeemScriptStack = bscript.decompile(redeemScriptSig)
17917 return bscript.compile(encodeStack(redeemScriptStack, redeemScript))
17920 function decodeStack (stack) {
17921 typeforce(check, stack)
17924 redeemScriptStack: stack.slice(
0, -
1),
17925 redeemScript: stack[stack.length -
1]
17929 function decode (buffer) {
17930 var stack = bscript.decompile(buffer)
17931 var result = decodeStack(stack)
17932 result.redeemScriptSig = bscript.compile(result.redeemScriptStack)
17933 delete result.redeemScriptStack
17940 decodeStack: decodeStack,
17942 encodeStack: encodeStack
17945 },{"../../script":
54,"../multisig/":
57,"../pubkey/":
61,"../pubkeyhash/":
64,"../witnesspubkeyhash/output":
74,"../witnessscripthash/output":
77,"safe-buffer":
128,"typeforce":
139}],
69:[function(require,module,exports){
17946 // OP_HASH160 {scriptHash} OP_EQUAL
17948 var bscript = require('../../script')
17949 var types = require('../../types')
17950 var typeforce = require('typeforce')
17951 var OPS = require('bitcoin-ops')
17953 function check (script) {
17954 var buffer = bscript.compile(script)
17956 return buffer.length ===
23 &&
17957 buffer[
0] === OPS.OP_HASH160 &&
17958 buffer[
1] ===
0x14 &&
17959 buffer[
22] === OPS.OP_EQUAL
17961 check.toJSON = function () { return 'scriptHash output' }
17963 function encode (scriptHash) {
17964 typeforce(types.Hash160bit, scriptHash)
17966 return bscript.compile([OPS.OP_HASH160, scriptHash, OPS.OP_EQUAL])
17969 function decode (buffer) {
17970 typeforce(check, buffer)
17972 return buffer.slice(
2,
22)
17981 },{"../../script":
54,"../../types":
80,"bitcoin-ops":
42,"typeforce":
139}],
70:[function(require,module,exports){
17983 output: require('./output')
17986 },{"./output":
71}],
71:[function(require,module,exports){
17987 // OP_RETURN {aa21a9ed} {commitment}
17989 var Buffer = require('safe-buffer').Buffer
17990 var bscript = require('../../script')
17991 var types = require('../../types')
17992 var typeforce = require('typeforce')
17993 var OPS = require('bitcoin-ops')
17995 var HEADER = Buffer.from('aa21a9ed', 'hex')
17997 function check (script) {
17998 var buffer = bscript.compile(script)
18000 return buffer.length
> 37 &&
18001 buffer[
0] === OPS.OP_RETURN &&
18002 buffer[
1] ===
0x24 &&
18003 buffer.slice(
2,
6).equals(HEADER)
18006 check.toJSON = function () { return 'Witness commitment output' }
18008 function encode (commitment) {
18009 typeforce(types.Hash256bit, commitment)
18011 var buffer = Buffer.allocUnsafe(
36)
18012 HEADER.copy(buffer,
0)
18013 commitment.copy(buffer,
4)
18015 return bscript.compile([OPS.OP_RETURN, buffer])
18018 function decode (buffer) {
18019 typeforce(check, buffer)
18021 return bscript.decompile(buffer)[
1].slice(
4,
36)
18030 },{
"../../script":
54,
"../../types":
80,
"bitcoin-ops":
42,
"safe-buffer":
128,
"typeforce":
139}],
72:[function(require,module,exports){
18031 arguments[
4][
57][
0].apply(exports,arguments)
18032 },{
"./input":
73,
"./output":
74,
"dup":
57}],
73:[function(require,module,exports){
18033 // {signature} {pubKey}
18035 var bscript = require('../../script')
18036 var typeforce = require('typeforce')
18038 function isCompressedCanonicalPubKey (pubKey) {
18039 return bscript.isCanonicalPubKey(pubKey) && pubKey.length ===
33
18042 function check (script) {
18043 var chunks = bscript.decompile(script)
18045 return chunks.length ===
2 &&
18046 bscript.isCanonicalSignature(chunks[
0]) &&
18047 isCompressedCanonicalPubKey(chunks[
1])
18049 check.toJSON = function () { return 'witnessPubKeyHash input' }
18051 function encodeStack (signature, pubKey) {
18053 signature: bscript.isCanonicalSignature,
18054 pubKey: isCompressedCanonicalPubKey
18056 signature: signature,
18060 return [signature, pubKey]
18063 function decodeStack (stack) {
18064 typeforce(check, stack)
18067 signature: stack[
0],
18074 decodeStack: decodeStack,
18075 encodeStack: encodeStack
18078 },{
"../../script":
54,
"typeforce":
139}],
74:[function(require,module,exports){
18079 // OP_0 {pubKeyHash}
18081 var bscript = require('../../script')
18082 var types = require('../../types')
18083 var typeforce = require('typeforce')
18084 var OPS = require('bitcoin-ops')
18086 function check (script) {
18087 var buffer = bscript.compile(script)
18089 return buffer.length ===
22 &&
18090 buffer[
0] === OPS.OP_0 &&
18093 check.toJSON = function () { return 'Witness pubKeyHash output' }
18095 function encode (pubKeyHash) {
18096 typeforce(types.Hash160bit, pubKeyHash)
18098 return bscript.compile([OPS.OP_0, pubKeyHash])
18101 function decode (buffer) {
18102 typeforce(check, buffer)
18104 return buffer.slice(
2)
18113 },{
"../../script":
54,
"../../types":
80,
"bitcoin-ops":
42,
"typeforce":
139}],
75:[function(require,module,exports){
18114 arguments[
4][
57][
0].apply(exports,arguments)
18115 },{
"./input":
76,
"./output":
77,
"dup":
57}],
76:[function(require,module,exports){
18116 (function (Buffer){
18117 //
<scriptSig> {serialized scriptPubKey script}
18119 var bscript = require('../../script')
18120 var types = require('../../types')
18121 var typeforce = require('typeforce')
18123 var p2ms = require('../multisig/')
18124 var p2pk = require('../pubkey/')
18125 var p2pkh = require('../pubkeyhash/')
18127 function check (chunks, allowIncomplete) {
18128 typeforce(types.Array, chunks)
18129 if (chunks.length <
1) return false
18131 var witnessScript = chunks[chunks.length -
1]
18132 if (!Buffer.isBuffer(witnessScript)) return false
18134 var witnessScriptChunks = bscript.decompile(witnessScript)
18136 // is witnessScript a valid script?
18137 if (witnessScriptChunks.length ===
0) return false
18139 var witnessRawScriptSig = bscript.compile(chunks.slice(
0, -
1))
18142 if (p2pkh.input.check(witnessRawScriptSig) &&
18143 p2pkh.output.check(witnessScriptChunks)) return true
18145 if (p2ms.input.check(witnessRawScriptSig, allowIncomplete) &&
18146 p2ms.output.check(witnessScriptChunks)) return true
18148 if (p2pk.input.check(witnessRawScriptSig) &&
18149 p2pk.output.check(witnessScriptChunks)) return true
18153 check.toJSON = function () { return 'witnessScriptHash input' }
18155 function encodeStack (witnessData, witnessScript) {
18157 witnessData: [types.Buffer],
18158 witnessScript: types.Buffer
18160 witnessData: witnessData,
18161 witnessScript: witnessScript
18164 return [].concat(witnessData, witnessScript)
18167 function decodeStack (chunks) {
18168 typeforce(check, chunks)
18170 witnessData: chunks.slice(
0, -
1),
18171 witnessScript: chunks[chunks.length -
1]
18177 decodeStack: decodeStack,
18178 encodeStack: encodeStack
18181 }).call(this,{"isBuffer":require("../../../../../../../../.nvm/versions/node/v6.0
.0/lib/node_modules/browserify/node_modules/is-buffer/index.js")})
18182 },{"../../../../../../../../.nvm/versions/node/v6.0
.0/lib/node_modules/browserify/node_modules/is-buffer/index.js":
10,"../../script":
54,"../../types":
80,"../multisig/":
57,"../pubkey/":
61,"../pubkeyhash/":
64,"typeforce":
139}],
77:[function(require,module,exports){
18183 // OP_0 {scriptHash}
18185 var bscript = require('../../script')
18186 var types = require('../../types')
18187 var typeforce = require('typeforce')
18188 var OPS = require('bitcoin-ops')
18190 function check (script) {
18191 var buffer = bscript.compile(script)
18193 return buffer.length ===
34 &&
18194 buffer[
0] === OPS.OP_0 &&
18197 check.toJSON = function () { return 'Witness scriptHash output' }
18199 function encode (scriptHash) {
18200 typeforce(types.Hash256bit, scriptHash)
18202 return bscript.compile([OPS.OP_0, scriptHash])
18205 function decode (buffer) {
18206 typeforce(check, buffer)
18208 return buffer.slice(
2)
18217 },{"../../script":
54,"../../types":
80,"bitcoin-ops":
42,"typeforce":
139}],
78:[function(require,module,exports){
18218 var Buffer = require('safe-buffer').Buffer
18219 var bcrypto = require('./crypto')
18220 var bscript = require('./script')
18221 var bufferutils = require('./bufferutils')
18222 var opcodes = require('bitcoin-ops')
18223 var typeforce = require('typeforce')
18224 var types = require('./types')
18225 var varuint = require('varuint-bitcoin')
18227 function varSliceSize (someScript) {
18228 var length = someScript.length
18230 return varuint.encodingLength(length) + length
18233 function vectorSize (someVector) {
18234 var length = someVector.length
18236 return varuint.encodingLength(length) + someVector.reduce(function (sum, witness) {
18237 return sum + varSliceSize(witness)
18241 function Transaction () {
18248 Transaction.DEFAULT_SEQUENCE =
0xffffffff
18249 Transaction.SIGHASH_ALL =
0x01
18250 Transaction.SIGHASH_NONE =
0x02
18251 Transaction.SIGHASH_SINGLE =
0x03
18252 Transaction.SIGHASH_ANYONECANPAY =
0x80
18253 Transaction.ADVANCED_TRANSACTION_MARKER =
0x00
18254 Transaction.ADVANCED_TRANSACTION_FLAG =
0x01
18256 var EMPTY_SCRIPT = Buffer.allocUnsafe(
0)
18257 var EMPTY_WITNESS = []
18258 var ZERO = Buffer.from('
0000000000000000000000000000000000000000000000000000000000000000', 'hex')
18259 var ONE = Buffer.from('
0000000000000000000000000000000000000000000000000000000000000001', 'hex')
18260 var VALUE_UINT64_MAX = Buffer.from('ffffffffffffffff', 'hex')
18261 var BLANK_OUTPUT = {
18262 script: EMPTY_SCRIPT,
18263 valueBuffer: VALUE_UINT64_MAX
18266 Transaction.fromBuffer = function (buffer, __noStrict) {
18268 function readSlice (n) {
18270 return buffer.slice(offset - n, offset)
18273 function readUInt32 () {
18274 var i = buffer.readUInt32LE(offset)
18279 function readInt32 () {
18280 var i = buffer.readInt32LE(offset)
18285 function readUInt64 () {
18286 var i = bufferutils.readUInt64LE(buffer, offset)
18291 function readVarInt () {
18292 var vi = varuint.decode(buffer, offset)
18293 offset += varuint.decode.bytes
18297 function readVarSlice () {
18298 return readSlice(readVarInt())
18301 function readVector () {
18302 var count = readVarInt()
18304 for (var i =
0; i < count; i++) vector.push(readVarSlice())
18308 var tx = new Transaction()
18309 tx.version = readInt32()
18311 var marker = buffer.readUInt8(offset)
18312 var flag = buffer.readUInt8(offset +
1)
18314 var hasWitnesses = false
18315 if (marker === Transaction.ADVANCED_TRANSACTION_MARKER &&
18316 flag === Transaction.ADVANCED_TRANSACTION_FLAG) {
18318 hasWitnesses = true
18321 var vinLen = readVarInt()
18322 for (var i =
0; i < vinLen; ++i) {
18324 hash: readSlice(
32),
18325 index: readUInt32(),
18326 script: readVarSlice(),
18327 sequence: readUInt32(),
18328 witness: EMPTY_WITNESS
18332 var voutLen = readVarInt()
18333 for (i =
0; i < voutLen; ++i) {
18335 value: readUInt64(),
18336 script: readVarSlice()
18340 if (hasWitnesses) {
18341 for (i =
0; i < vinLen; ++i) {
18342 tx.ins[i].witness = readVector()
18345 // was this pointless?
18346 if (!tx.hasWitnesses()) throw new Error('Transaction has superfluous witness data')
18349 tx.locktime = readUInt32()
18351 if (__noStrict) return tx
18352 if (offset !== buffer.length) throw new Error('Transaction has unexpected data')
18357 Transaction.fromHex = function (hex) {
18358 return Transaction.fromBuffer(Buffer.from(hex, 'hex'))
18361 Transaction.isCoinbaseHash = function (buffer) {
18362 typeforce(types.Hash256bit, buffer)
18363 for (var i =
0; i <
32; ++i) {
18364 if (buffer[i] !==
0) return false
18369 Transaction.prototype.isCoinbase = function () {
18370 return this.ins.length ===
1 && Transaction.isCoinbaseHash(this.ins[
0].hash)
18373 Transaction.prototype.addInput = function (hash, index, sequence, scriptSig) {
18374 typeforce(types.tuple(
18377 types.maybe(types.UInt32),
18378 types.maybe(types.Buffer)
18381 if (types.Null(sequence)) {
18382 sequence = Transaction.DEFAULT_SEQUENCE
18385 // Add the input and return the input's index
18386 return (this.ins.push({
18389 script: scriptSig || EMPTY_SCRIPT,
18390 sequence: sequence,
18391 witness: EMPTY_WITNESS
18395 Transaction.prototype.addOutput = function (scriptPubKey, value) {
18396 typeforce(types.tuple(types.Buffer, types.Satoshi), arguments)
18398 // Add the output and return the output's index
18399 return (this.outs.push({
18400 script: scriptPubKey,
18405 Transaction.prototype.hasWitnesses = function () {
18406 return this.ins.some(function (x) {
18407 return x.witness.length !==
0
18411 Transaction.prototype.weight = function () {
18412 var base = this.__byteLength(false)
18413 var total = this.__byteLength(true)
18414 return base *
3 + total
18417 Transaction.prototype.virtualSize = function () {
18418 return Math.ceil(this.weight() /
4)
18421 Transaction.prototype.byteLength = function () {
18422 return this.__byteLength(true)
18425 Transaction.prototype.__byteLength = function (__allowWitness) {
18426 var hasWitnesses = __allowWitness && this.hasWitnesses()
18429 (hasWitnesses ?
10 :
8) +
18430 varuint.encodingLength(this.ins.length) +
18431 varuint.encodingLength(this.outs.length) +
18432 this.ins.reduce(function (sum, input) { return sum +
40 + varSliceSize(input.script) },
0) +
18433 this.outs.reduce(function (sum, output) { return sum +
8 + varSliceSize(output.script) },
0) +
18434 (hasWitnesses ? this.ins.reduce(function (sum, input) { return sum + vectorSize(input.witness) },
0) :
0)
18438 Transaction.prototype.clone = function () {
18439 var newTx = new Transaction()
18440 newTx.version = this.version
18441 newTx.locktime = this.locktime
18443 newTx.ins = this.ins.map(function (txIn) {
18447 script: txIn.script,
18448 sequence: txIn.sequence,
18449 witness: txIn.witness
18453 newTx.outs = this.outs.map(function (txOut) {
18455 script: txOut.script,
18464 * Hash transaction for signing a specific input.
18466 * Bitcoin uses a different hash for each signed transaction input.
18467 * This method copies the transaction, makes the necessary changes based on the
18468 * hashType, and then hashes the result.
18469 * This hash can then be used to sign the provided transaction input.
18471 Transaction.prototype.hashForSignature = function (inIndex, prevOutScript, hashType) {
18472 typeforce(types.tuple(types.UInt32, types.Buffer, /* types.UInt8 */ types.Number), arguments)
18474 // https://github.com/bitcoin/bitcoin/blob/master/src/test/sighash_tests.cpp#L29
18475 if (inIndex
>= this.ins.length) return ONE
18477 // ignore OP_CODESEPARATOR
18478 var ourScript = bscript.compile(bscript.decompile(prevOutScript).filter(function (x) {
18479 return x !== opcodes.OP_CODESEPARATOR
18482 var txTmp = this.clone()
18484 // SIGHASH_NONE: ignore all outputs? (wildcard payee)
18485 if ((hashType &
0x1f) === Transaction.SIGHASH_NONE) {
18488 // ignore sequence numbers (except at inIndex)
18489 txTmp.ins.forEach(function (input, i) {
18490 if (i === inIndex) return
18495 // SIGHASH_SINGLE: ignore all outputs, except at the same index?
18496 } else if ((hashType &
0x1f) === Transaction.SIGHASH_SINGLE) {
18497 // https://github.com/bitcoin/bitcoin/blob/master/src/test/sighash_tests.cpp#L60
18498 if (inIndex
>= this.outs.length) return ONE
18500 // truncate outputs after
18501 txTmp.outs.length = inIndex +
1
18503 // "blank" outputs before
18504 for (var i =
0; i < inIndex; i++) {
18505 txTmp.outs[i] = BLANK_OUTPUT
18508 // ignore sequence numbers (except at inIndex)
18509 txTmp.ins.forEach(function (input, y) {
18510 if (y === inIndex) return
18516 // SIGHASH_ANYONECANPAY: ignore inputs entirely?
18517 if (hashType & Transaction.SIGHASH_ANYONECANPAY) {
18518 txTmp.ins = [txTmp.ins[inIndex]]
18519 txTmp.ins[
0].script = ourScript
18521 // SIGHASH_ALL: only ignore input scripts
18523 // "blank" others input scripts
18524 txTmp.ins.forEach(function (input) { input.script = EMPTY_SCRIPT })
18525 txTmp.ins[inIndex].script = ourScript
18528 // serialize and hash
18529 var buffer = Buffer.allocUnsafe(txTmp.__byteLength(false) +
4)
18530 buffer.writeInt32LE(hashType, buffer.length -
4)
18531 txTmp.__toBuffer(buffer,
0, false)
18533 return bcrypto.hash256(buffer)
18536 Transaction.prototype.hashForWitnessV0 = function (inIndex, prevOutScript, value, hashType) {
18537 typeforce(types.tuple(types.UInt32, types.Buffer, types.Satoshi, types.UInt32), arguments)
18539 var tbuffer, toffset
18540 function writeSlice (slice) { toffset += slice.copy(tbuffer, toffset) }
18541 function writeUInt32 (i) { toffset = tbuffer.writeUInt32LE(i, toffset) }
18542 function writeUInt64 (i) { toffset = bufferutils.writeUInt64LE(tbuffer, i, toffset) }
18543 function writeVarInt (i) {
18544 varuint.encode(i, tbuffer, toffset)
18545 toffset += varuint.encode.bytes
18547 function writeVarSlice (slice) { writeVarInt(slice.length); writeSlice(slice) }
18549 var hashOutputs = ZERO
18550 var hashPrevouts = ZERO
18551 var hashSequence = ZERO
18553 if (!(hashType & Transaction.SIGHASH_ANYONECANPAY)) {
18554 tbuffer = Buffer.allocUnsafe(
36 * this.ins.length)
18557 this.ins.forEach(function (txIn) {
18558 writeSlice(txIn.hash)
18559 writeUInt32(txIn.index)
18562 hashPrevouts = bcrypto.hash256(tbuffer)
18565 if (!(hashType & Transaction.SIGHASH_ANYONECANPAY) &&
18566 (hashType &
0x1f) !== Transaction.SIGHASH_SINGLE &&
18567 (hashType &
0x1f) !== Transaction.SIGHASH_NONE) {
18568 tbuffer = Buffer.allocUnsafe(
4 * this.ins.length)
18571 this.ins.forEach(function (txIn) {
18572 writeUInt32(txIn.sequence)
18575 hashSequence = bcrypto.hash256(tbuffer)
18578 if ((hashType &
0x1f) !== Transaction.SIGHASH_SINGLE &&
18579 (hashType &
0x1f) !== Transaction.SIGHASH_NONE) {
18580 var txOutsSize = this.outs.reduce(function (sum, output) {
18581 return sum +
8 + varSliceSize(output.script)
18584 tbuffer = Buffer.allocUnsafe(txOutsSize)
18587 this.outs.forEach(function (out) {
18588 writeUInt64(out.value)
18589 writeVarSlice(out.script)
18592 hashOutputs = bcrypto.hash256(tbuffer)
18593 } else if ((hashType &
0x1f) === Transaction.SIGHASH_SINGLE && inIndex < this.outs.length) {
18594 var output = this.outs[inIndex]
18596 tbuffer = Buffer.allocUnsafe(
8 + varSliceSize(output.script))
18598 writeUInt64(output.value)
18599 writeVarSlice(output.script)
18601 hashOutputs = bcrypto.hash256(tbuffer)
18604 tbuffer = Buffer.allocUnsafe(
156 + varSliceSize(prevOutScript))
18607 var input = this.ins[inIndex]
18608 writeUInt32(this.version)
18609 writeSlice(hashPrevouts)
18610 writeSlice(hashSequence)
18611 writeSlice(input.hash)
18612 writeUInt32(input.index)
18613 writeVarSlice(prevOutScript)
18615 writeUInt32(input.sequence)
18616 writeSlice(hashOutputs)
18617 writeUInt32(this.locktime)
18618 writeUInt32(hashType)
18619 return bcrypto.hash256(tbuffer)
18622 Transaction.prototype.getHash = function () {
18623 return bcrypto.hash256(this.__toBuffer(undefined, undefined, false))
18626 Transaction.prototype.getId = function () {
18627 // transaction hash's are displayed in reverse order
18628 return this.getHash().reverse().toString('hex')
18631 Transaction.prototype.toBuffer = function (buffer, initialOffset) {
18632 return this.__toBuffer(buffer, initialOffset, true)
18635 Transaction.prototype.__toBuffer = function (buffer, initialOffset, __allowWitness) {
18636 if (!buffer) buffer = Buffer.allocUnsafe(this.__byteLength(__allowWitness))
18638 var offset = initialOffset ||
0
18639 function writeSlice (slice) { offset += slice.copy(buffer, offset) }
18640 function writeUInt8 (i) { offset = buffer.writeUInt8(i, offset) }
18641 function writeUInt32 (i) { offset = buffer.writeUInt32LE(i, offset) }
18642 function writeInt32 (i) { offset = buffer.writeInt32LE(i, offset) }
18643 function writeUInt64 (i) { offset = bufferutils.writeUInt64LE(buffer, i, offset) }
18644 function writeVarInt (i) {
18645 varuint.encode(i, buffer, offset)
18646 offset += varuint.encode.bytes
18648 function writeVarSlice (slice) { writeVarInt(slice.length); writeSlice(slice) }
18649 function writeVector (vector) { writeVarInt(vector.length); vector.forEach(writeVarSlice) }
18651 writeInt32(this.version)
18653 var hasWitnesses = __allowWitness && this.hasWitnesses()
18655 if (hasWitnesses) {
18656 writeUInt8(Transaction.ADVANCED_TRANSACTION_MARKER)
18657 writeUInt8(Transaction.ADVANCED_TRANSACTION_FLAG)
18660 writeVarInt(this.ins.length)
18662 this.ins.forEach(function (txIn) {
18663 writeSlice(txIn.hash)
18664 writeUInt32(txIn.index)
18665 writeVarSlice(txIn.script)
18666 writeUInt32(txIn.sequence)
18669 writeVarInt(this.outs.length)
18670 this.outs.forEach(function (txOut) {
18671 if (!txOut.valueBuffer) {
18672 writeUInt64(txOut.value)
18674 writeSlice(txOut.valueBuffer)
18677 writeVarSlice(txOut.script)
18680 if (hasWitnesses) {
18681 this.ins.forEach(function (input) {
18682 writeVector(input.witness)
18686 writeUInt32(this.locktime)
18688 // avoid slicing unless necessary
18689 if (initialOffset !== undefined) return buffer.slice(initialOffset, offset)
18693 Transaction.prototype.toHex = function () {
18694 return this.toBuffer().toString('hex')
18697 Transaction.prototype.setInputScript = function (index, scriptSig) {
18698 typeforce(types.tuple(types.Number, types.Buffer), arguments)
18700 this.ins[index].script = scriptSig
18703 Transaction.prototype.setWitness = function (index, witness) {
18704 typeforce(types.tuple(types.Number, [types.Buffer]), arguments)
18706 this.ins[index].witness = witness
18709 module.exports = Transaction
18711 },{"./bufferutils":
46,"./crypto":
47,"./script":
54,"./types":
80,"bitcoin-ops":
42,"safe-buffer":
128,"typeforce":
139,"varuint-bitcoin":
141}],
79:[function(require,module,exports){
18712 var Buffer = require('safe-buffer').Buffer
18713 var baddress = require('./address')
18714 var bcrypto = require('./crypto')
18715 var bscript = require('./script')
18716 var btemplates = require('./templates')
18717 var networks = require('./networks')
18718 var ops = require('bitcoin-ops')
18719 var typeforce = require('typeforce')
18720 var types = require('./types')
18721 var scriptTypes = btemplates.types
18722 var SIGNABLE = [btemplates.types.P2PKH, btemplates.types.P2PK, btemplates.types.MULTISIG]
18723 var P2SH = SIGNABLE.concat([btemplates.types.P2WPKH, btemplates.types.P2WSH])
18725 var ECPair = require('./ecpair')
18726 var ECSignature = require('./ecsignature')
18727 var Transaction = require('./transaction')
18729 function supportedType (type) {
18730 return SIGNABLE.indexOf(type) !== -
1
18733 function supportedP2SHType (type) {
18734 return P2SH.indexOf(type) !== -
1
18737 function extractChunks (type, chunks, script) {
18739 var signatures = []
18741 case scriptTypes.P2PKH:
18742 // if (redeemScript) throw new Error('Nonstandard... P2SH(P2PKH)')
18743 pubKeys = chunks.slice(
1)
18744 signatures = chunks.slice(
0,
1)
18747 case scriptTypes.P2PK:
18748 pubKeys[
0] = script ? btemplates.pubKey.output.decode(script) : undefined
18749 signatures = chunks.slice(
0,
1)
18752 case scriptTypes.MULTISIG:
18754 var multisig = btemplates.multisig.output.decode(script)
18755 pubKeys = multisig.pubKeys
18758 signatures = chunks.slice(
1).map(function (chunk) {
18759 return chunk.length ===
0 ? undefined : chunk
18766 signatures: signatures
18769 function expandInput (scriptSig, witnessStack) {
18770 if (scriptSig.length ===
0 && witnessStack.length ===
0) return {}
18778 var witnessScriptType
18779 var redeemScriptType
18780 var witness = false
18786 var scriptSigChunks = bscript.decompile(scriptSig)
18787 var sigType = btemplates.classifyInput(scriptSigChunks, true)
18788 if (sigType === scriptTypes.P2SH) {
18790 redeemScript = scriptSigChunks[scriptSigChunks.length -
1]
18791 redeemScriptType = btemplates.classifyOutput(redeemScript)
18792 prevOutScript = btemplates.scriptHash.output.encode(bcrypto.hash160(redeemScript))
18793 prevOutType = scriptTypes.P2SH
18794 script = redeemScript
18797 var classifyWitness = btemplates.classifyWitness(witnessStack, true)
18798 if (classifyWitness === scriptTypes.P2WSH) {
18799 witnessScript = witnessStack[witnessStack.length -
1]
18800 witnessScriptType = btemplates.classifyOutput(witnessScript)
18803 if (scriptSig.length ===
0) {
18804 prevOutScript = btemplates.witnessScriptHash.output.encode(bcrypto.sha256(witnessScript))
18805 prevOutType = scriptTypes.P2WSH
18806 if (redeemScript !== undefined) {
18807 throw new Error('Redeem script given when unnecessary')
18811 if (!redeemScript) {
18812 throw new Error('No redeemScript provided for P2WSH, but scriptSig non-empty')
18814 witnessProgram = btemplates.witnessScriptHash.output.encode(bcrypto.sha256(witnessScript))
18815 if (!redeemScript.equals(witnessProgram)) {
18816 throw new Error('Redeem script didn\'t match witnessScript')
18820 if (!supportedType(btemplates.classifyOutput(witnessScript))) {
18821 throw new Error('unsupported witness script')
18824 script = witnessScript
18825 scriptType = witnessScriptType
18826 chunks = witnessStack.slice(
0, -
1)
18827 } else if (classifyWitness === scriptTypes.P2WPKH) {
18829 var key = witnessStack[witnessStack.length -
1]
18830 var keyHash = bcrypto.hash160(key)
18831 if (scriptSig.length ===
0) {
18832 prevOutScript = btemplates.witnessPubKeyHash.output.encode(keyHash)
18833 prevOutType = scriptTypes.P2WPKH
18834 if (typeof redeemScript !== 'undefined') {
18835 throw new Error('Redeem script given when unnecessary')
18838 if (!redeemScript) {
18839 throw new Error('No redeemScript provided for P2WPKH, but scriptSig wasn\'t empty')
18841 witnessProgram = btemplates.witnessPubKeyHash.output.encode(keyHash)
18842 if (!redeemScript.equals(witnessProgram)) {
18843 throw new Error('Redeem script did not have the right witness program')
18847 scriptType = scriptTypes.P2PKH
18848 chunks = witnessStack
18849 } else if (redeemScript) {
18850 if (!supportedP2SHType(redeemScriptType)) {
18851 throw new Error('Bad redeemscript!')
18854 script = redeemScript
18855 scriptType = redeemScriptType
18856 chunks = scriptSigChunks.slice(
0, -
1)
18858 prevOutType = scriptType = btemplates.classifyInput(scriptSig)
18859 chunks = scriptSigChunks
18862 var expanded = extractChunks(scriptType, chunks, script)
18865 pubKeys: expanded.pubKeys,
18866 signatures: expanded.signatures,
18867 prevOutScript: prevOutScript,
18868 prevOutType: prevOutType,
18869 signType: scriptType,
18870 signScript: script,
18871 witness: Boolean(witness)
18875 result.redeemScript = redeemScript
18876 result.redeemScriptType = redeemScriptType
18880 result.witnessScript = witnessScript
18881 result.witnessScriptType = witnessScriptType
18887 // could be done in expandInput, but requires the original Transaction for hashForSignature
18888 function fixMultisigOrder (input, transaction, vin) {
18889 if (input.redeemScriptType !== scriptTypes.MULTISIG || !input.redeemScript) return
18890 if (input.pubKeys.length === input.signatures.length) return
18892 var unmatched = input.signatures.concat()
18894 input.signatures = input.pubKeys.map(function (pubKey) {
18895 var keyPair = ECPair.fromPublicKeyBuffer(pubKey)
18898 // check for a signature
18899 unmatched.some(function (signature, i) {
18900 // skip if undefined || OP_0
18901 if (!signature) return false
18903 // TODO: avoid O(n) hashForSignature
18904 var parsed = ECSignature.parseScriptSignature(signature)
18905 var hash = transaction.hashForSignature(vin, input.redeemScript, parsed.hashType)
18907 // skip if signature does not match pubKey
18908 if (!keyPair.verify(hash, parsed.signature)) return false
18910 // remove matched signature from unmatched
18911 unmatched[i] = undefined
18921 function expandOutput (script, scriptType, ourPubKey) {
18922 typeforce(types.Buffer, script)
18924 var scriptChunks = bscript.decompile(script)
18926 scriptType = btemplates.classifyOutput(script)
18931 switch (scriptType) {
18932 // does our hash160(pubKey) match the output scripts?
18933 case scriptTypes.P2PKH:
18934 if (!ourPubKey) break
18936 var pkh1 = scriptChunks[
2]
18937 var pkh2 = bcrypto.hash160(ourPubKey)
18938 if (pkh1.equals(pkh2)) pubKeys = [ourPubKey]
18941 // does our hash160(pubKey) match the output scripts?
18942 case scriptTypes.P2WPKH:
18943 if (!ourPubKey) break
18945 var wpkh1 = scriptChunks[
1]
18946 var wpkh2 = bcrypto.hash160(ourPubKey)
18947 if (wpkh1.equals(wpkh2)) pubKeys = [ourPubKey]
18950 case scriptTypes.P2PK:
18951 pubKeys = scriptChunks.slice(
0,
1)
18954 case scriptTypes.MULTISIG:
18955 pubKeys = scriptChunks.slice(
1, -
2)
18958 default: return { scriptType: scriptType }
18963 scriptType: scriptType,
18964 signatures: pubKeys.map(function () { return undefined })
18968 function checkP2SHInput (input, redeemScriptHash) {
18969 if (input.prevOutType) {
18970 if (input.prevOutType !== scriptTypes.P2SH) throw new Error('PrevOutScript must be P2SH')
18972 var prevOutScriptScriptHash = bscript.decompile(input.prevOutScript)[
1]
18973 if (!prevOutScriptScriptHash.equals(redeemScriptHash)) throw new Error('Inconsistent hash160(RedeemScript)')
18977 function checkP2WSHInput (input, witnessScriptHash) {
18978 if (input.prevOutType) {
18979 if (input.prevOutType !== scriptTypes.P2WSH) throw new Error('PrevOutScript must be P2WSH')
18981 var scriptHash = bscript.decompile(input.prevOutScript)[
1]
18982 if (!scriptHash.equals(witnessScriptHash)) throw new Error('Inconsistent sha25(WitnessScript)')
18986 function prepareInput (input, kpPubKey, redeemScript, witnessValue, witnessScript) {
18993 var redeemScriptHash
18995 var witness = false
18998 var witnessScriptHash
19003 if (redeemScript && witnessScript) {
19004 redeemScriptHash = bcrypto.hash160(redeemScript)
19005 witnessScriptHash = bcrypto.sha256(witnessScript)
19006 checkP2SHInput(input, redeemScriptHash)
19008 if (!redeemScript.equals(btemplates.witnessScriptHash.output.encode(witnessScriptHash))) throw new Error('Witness script inconsistent with redeem script')
19010 expanded = expandOutput(witnessScript, undefined, kpPubKey)
19011 if (!expanded.pubKeys) throw new Error('WitnessScript not supported "' + bscript.toASM(redeemScript) + '"')
19013 prevOutType = btemplates.types.P2SH
19014 prevOutScript = btemplates.scriptHash.output.encode(redeemScriptHash)
19015 p2sh = witness = p2wsh = true
19016 p2shType = btemplates.types.P2WSH
19017 signType = witnessType = expanded.scriptType
19018 signScript = witnessScript
19019 } else if (redeemScript) {
19020 redeemScriptHash = bcrypto.hash160(redeemScript)
19021 checkP2SHInput(input, redeemScriptHash)
19023 expanded = expandOutput(redeemScript, undefined, kpPubKey)
19024 if (!expanded.pubKeys) throw new Error('RedeemScript not supported "' + bscript.toASM(redeemScript) + '"')
19026 prevOutType = btemplates.types.P2SH
19027 prevOutScript = btemplates.scriptHash.output.encode(redeemScriptHash)
19029 signType = p2shType = expanded.scriptType
19030 signScript = redeemScript
19031 witness = signType === btemplates.types.P2WPKH
19032 } else if (witnessScript) {
19033 witnessScriptHash = bcrypto.sha256(witnessScript)
19034 checkP2WSHInput(input, witnessScriptHash)
19036 expanded = expandOutput(witnessScript, undefined, kpPubKey)
19037 if (!expanded.pubKeys) throw new Error('WitnessScript not supported "' + bscript.toASM(redeemScript) + '"')
19039 prevOutType = btemplates.types.P2WSH
19040 prevOutScript = btemplates.witnessScriptHash.output.encode(witnessScriptHash)
19041 witness = p2wsh = true
19042 signType = witnessType = expanded.scriptType
19043 signScript = witnessScript
19044 } else if (input.prevOutType) {
19045 // embedded scripts are not possible without a redeemScript
19046 if (input.prevOutType === scriptTypes.P2SH ||
19047 input.prevOutType === scriptTypes.P2WSH) {
19048 throw new Error('PrevOutScript is ' + input.prevOutType + ', requires redeemScript')
19051 prevOutType = input.prevOutType
19052 prevOutScript = input.prevOutScript
19053 expanded = expandOutput(input.prevOutScript, input.prevOutType, kpPubKey)
19054 if (!expanded.pubKeys) return
19056 witness = (input.prevOutType === scriptTypes.P2WPKH)
19057 signType = prevOutType
19058 signScript = prevOutScript
19060 prevOutScript = btemplates.pubKeyHash.output.encode(bcrypto.hash160(kpPubKey))
19061 expanded = expandOutput(prevOutScript, scriptTypes.P2PKH, kpPubKey)
19063 prevOutType = scriptTypes.P2PKH
19065 signType = prevOutType
19066 signScript = prevOutScript
19069 if (signType === scriptTypes.P2WPKH) {
19070 signScript = btemplates.pubKeyHash.output.encode(btemplates.witnessPubKeyHash.output.decode(signScript))
19074 input.redeemScript = redeemScript
19075 input.redeemScriptType = p2shType
19079 input.witnessScript = witnessScript
19080 input.witnessScriptType = witnessType
19083 input.pubKeys = expanded.pubKeys
19084 input.signatures = expanded.signatures
19085 input.signScript = signScript
19086 input.signType = signType
19087 input.prevOutScript = prevOutScript
19088 input.prevOutType = prevOutType
19089 input.witness = witness
19092 function buildStack (type, signatures, pubKeys, allowIncomplete) {
19093 if (type === scriptTypes.P2PKH) {
19094 if (signatures.length ===
1 && Buffer.isBuffer(signatures[
0]) && pubKeys.length ===
1) return btemplates.pubKeyHash.input.encodeStack(signatures[
0], pubKeys[
0])
19095 } else if (type === scriptTypes.P2PK) {
19096 if (signatures.length ===
1 && Buffer.isBuffer(signatures[
0])) return btemplates.pubKey.input.encodeStack(signatures[
0])
19097 } else if (type === scriptTypes.MULTISIG) {
19098 if (signatures.length
> 0) {
19099 signatures = signatures.map(function (signature) {
19100 return signature || ops.OP_0
19102 if (!allowIncomplete) {
19103 // remove blank signatures
19104 signatures = signatures.filter(function (x) { return x !== ops.OP_0 })
19107 return btemplates.multisig.input.encodeStack(signatures)
19110 throw new Error('Not yet supported')
19113 if (!allowIncomplete) throw new Error('Not enough signatures provided')
19117 function buildInput (input, allowIncomplete) {
19118 var scriptType = input.prevOutType
19122 if (supportedType(scriptType)) {
19123 sig = buildStack(scriptType, input.signatures, input.pubKeys, allowIncomplete)
19127 if (scriptType === btemplates.types.P2SH) {
19128 // We can remove this error later when we have a guarantee prepareInput
19129 // rejects unsignable scripts - it MUST be signable at this point.
19130 if (!allowIncomplete && !supportedP2SHType(input.redeemScriptType)) {
19131 throw new Error('Impossible to sign this type')
19134 if (supportedType(input.redeemScriptType)) {
19135 sig = buildStack(input.redeemScriptType, input.signatures, input.pubKeys, allowIncomplete)
19138 // If it wasn't SIGNABLE, it's witness, defer to that
19139 if (input.redeemScriptType) {
19141 scriptType = input.redeemScriptType
19145 switch (scriptType) {
19146 // P2WPKH is a special case of P2PKH
19147 case btemplates.types.P2WPKH:
19148 witness = buildStack(btemplates.types.P2PKH, input.signatures, input.pubKeys, allowIncomplete)
19151 case btemplates.types.P2WSH:
19152 // We can remove this check later
19153 if (!allowIncomplete && !supportedType(input.witnessScriptType)) {
19154 throw new Error('Impossible to sign this type')
19157 if (supportedType(input.witnessScriptType)) {
19158 witness = buildStack(input.witnessScriptType, input.signatures, input.pubKeys, allowIncomplete)
19159 witness.push(input.witnessScript)
19160 scriptType = input.witnessScriptType
19166 // append redeemScript if necessary
19168 sig.push(input.redeemScript)
19173 script: bscript.compile(sig),
19178 function TransactionBuilder (network, maximumFeeRate) {
19179 this.prevTxMap = {}
19180 this.network = network || networks.bitcoin
19182 // WARNING: This is __NOT__ to be relied on, its just another potential safety mechanism (safety in-depth)
19183 this.maximumFeeRate = maximumFeeRate ||
1000
19186 this.tx = new Transaction()
19189 TransactionBuilder.prototype.setLockTime = function (locktime) {
19190 typeforce(types.UInt32, locktime)
19192 // if any signatures exist, throw
19193 if (this.inputs.some(function (input) {
19194 if (!input.signatures) return false
19196 return input.signatures.some(function (s) { return s })
19198 throw new Error('No, this would invalidate signatures')
19201 this.tx.locktime = locktime
19204 TransactionBuilder.prototype.setVersion = function (version) {
19205 typeforce(types.UInt32, version)
19207 // XXX: this might eventually become more complex depending on what the versions represent
19208 this.tx.version = version
19211 TransactionBuilder.fromTransaction = function (transaction, network) {
19212 var txb = new TransactionBuilder(network)
19214 // Copy transaction fields
19215 txb.setVersion(transaction.version)
19216 txb.setLockTime(transaction.locktime)
19218 // Copy outputs (done first to avoid signature invalidation)
19219 transaction.outs.forEach(function (txOut) {
19220 txb.addOutput(txOut.script, txOut.value)
19224 transaction.ins.forEach(function (txIn) {
19225 txb.__addInputUnsafe(txIn.hash, txIn.index, {
19226 sequence: txIn.sequence,
19227 script: txIn.script,
19228 witness: txIn.witness
19232 // fix some things not possible through the public API
19233 txb.inputs.forEach(function (input, i) {
19234 fixMultisigOrder(input, transaction, i)
19240 TransactionBuilder.prototype.addInput = function (txHash, vout, sequence, prevOutScript) {
19241 if (!this.__canModifyInputs()) {
19242 throw new Error('No, this would invalidate signatures')
19247 // is it a hex string?
19248 if (typeof txHash === 'string') {
19249 // transaction hashs's are displayed in reverse order, un-reverse it
19250 txHash = Buffer.from(txHash, 'hex').reverse()
19252 // is it a Transaction object?
19253 } else if (txHash instanceof Transaction) {
19254 var txOut = txHash.outs[vout]
19255 prevOutScript = txOut.script
19256 value = txOut.value
19258 txHash = txHash.getHash()
19261 return this.__addInputUnsafe(txHash, vout, {
19262 sequence: sequence,
19263 prevOutScript: prevOutScript,
19268 TransactionBuilder.prototype.__addInputUnsafe = function (txHash, vout, options) {
19269 if (Transaction.isCoinbaseHash(txHash)) {
19270 throw new Error('coinbase inputs not supported')
19273 var prevTxOut = txHash.toString('hex') + ':' + vout
19274 if (this.prevTxMap[prevTxOut] !== undefined) throw new Error('Duplicate TxOut: ' + prevTxOut)
19278 // derive what we can from the scriptSig
19279 if (options.script !== undefined) {
19280 input = expandInput(options.script, options.witness || [])
19283 // if an input value was given, retain it
19284 if (options.value !== undefined) {
19285 input.value = options.value
19288 // derive what we can from the previous transactions output script
19289 if (!input.prevOutScript && options.prevOutScript) {
19292 if (!input.pubKeys && !input.signatures) {
19293 var expanded = expandOutput(options.prevOutScript)
19295 if (expanded.pubKeys) {
19296 input.pubKeys = expanded.pubKeys
19297 input.signatures = expanded.signatures
19300 prevOutType = expanded.scriptType
19303 input.prevOutScript = options.prevOutScript
19304 input.prevOutType = prevOutType || btemplates.classifyOutput(options.prevOutScript)
19307 var vin = this.tx.addInput(txHash, vout, options.sequence, options.scriptSig)
19308 this.inputs[vin] = input
19309 this.prevTxMap[prevTxOut] = vin
19313 TransactionBuilder.prototype.addOutput = function (scriptPubKey, value) {
19314 if (!this.__canModifyOutputs()) {
19315 throw new Error('No, this would invalidate signatures')
19318 // Attempt to get a script if it's a base58 address string
19319 if (typeof scriptPubKey === 'string') {
19320 scriptPubKey = baddress.toOutputScript(scriptPubKey, this.network)
19323 return this.tx.addOutput(scriptPubKey, value)
19326 TransactionBuilder.prototype.build = function () {
19327 return this.__build(false)
19329 TransactionBuilder.prototype.buildIncomplete = function () {
19330 return this.__build(true)
19333 TransactionBuilder.prototype.__build = function (allowIncomplete) {
19334 if (!allowIncomplete) {
19335 if (!this.tx.ins.length) throw new Error('Transaction has no inputs')
19336 if (!this.tx.outs.length) throw new Error('Transaction has no outputs')
19339 var tx = this.tx.clone()
19340 // Create script signatures from inputs
19341 this.inputs.forEach(function (input, i) {
19342 var scriptType = input.witnessScriptType || input.redeemScriptType || input.prevOutType
19343 if (!scriptType && !allowIncomplete) throw new Error('Transaction is not complete')
19344 var result = buildInput(input, allowIncomplete)
19346 // skip if no result
19347 if (!allowIncomplete) {
19348 if (!supportedType(result.type) && result.type !== btemplates.types.P2WPKH) {
19349 throw new Error(result.type + ' not supported')
19353 tx.setInputScript(i, result.script)
19354 tx.setWitness(i, result.witness)
19357 if (!allowIncomplete) {
19358 // do not rely on this, its merely a last resort
19359 if (this.__overMaximumFees(tx.virtualSize())) {
19360 throw new Error('Transaction has absurd fees')
19367 function canSign (input) {
19368 return input.prevOutScript !== undefined &&
19369 input.signScript !== undefined &&
19370 input.pubKeys !== undefined &&
19371 input.signatures !== undefined &&
19372 input.signatures.length === input.pubKeys.length &&
19373 input.pubKeys.length
> 0 &&
19375 input.witness === false ||
19376 (input.witness === true && input.value !== undefined)
19380 TransactionBuilder.prototype.sign = function (vin, keyPair, redeemScript, hashType, witnessValue, witnessScript) {
19381 // TODO: remove keyPair.network matching in
4.0.0
19382 if (keyPair.network && keyPair.network !== this.network) throw new TypeError('Inconsistent network')
19383 if (!this.inputs[vin]) throw new Error('No input at index: ' + vin)
19384 hashType = hashType || Transaction.SIGHASH_ALL
19386 var input = this.inputs[vin]
19388 // if redeemScript was previously provided, enforce consistency
19389 if (input.redeemScript !== undefined &&
19391 !input.redeemScript.equals(redeemScript)) {
19392 throw new Error('Inconsistent redeemScript')
19395 var kpPubKey = keyPair.publicKey || keyPair.getPublicKeyBuffer()
19396 if (!canSign(input)) {
19397 if (witnessValue !== undefined) {
19398 if (input.value !== undefined && input.value !== witnessValue) throw new Error('Input didn\'t match witnessValue')
19399 typeforce(types.Satoshi, witnessValue)
19400 input.value = witnessValue
19403 if (!canSign(input)) prepareInput(input, kpPubKey, redeemScript, witnessValue, witnessScript)
19404 if (!canSign(input)) throw Error(input.prevOutType + ' not supported')
19409 if (input.witness) {
19410 signatureHash = this.tx.hashForWitnessV0(vin, input.signScript, input.value, hashType)
19412 signatureHash = this.tx.hashForSignature(vin, input.signScript, hashType)
19415 // enforce in order signing of public keys
19416 var signed = input.pubKeys.some(function (pubKey, i) {
19417 if (!kpPubKey.equals(pubKey)) return false
19418 if (input.signatures[i]) throw new Error('Signature already exists')
19419 if (kpPubKey.length !==
33 &&
19420 input.signType === scriptTypes.P2WPKH) throw new Error('BIP143 rejects uncompressed public keys in P2WPKH or P2WSH')
19422 var signature = keyPair.sign(signatureHash)
19423 if (Buffer.isBuffer(signature)) signature = ECSignature.fromRSBuffer(signature)
19425 input.signatures[i] = signature.toScriptSignature(hashType)
19429 if (!signed) throw new Error('Key pair cannot sign for this input')
19432 function signatureHashType (buffer) {
19433 return buffer.readUInt8(buffer.length -
1)
19436 TransactionBuilder.prototype.__canModifyInputs = function () {
19437 return this.inputs.every(function (input) {
19439 if (input.signatures === undefined) return true
19441 return input.signatures.every(function (signature) {
19442 if (!signature) return true
19443 var hashType = signatureHashType(signature)
19445 // if SIGHASH_ANYONECANPAY is set, signatures would not
19446 // be invalidated by more inputs
19447 return hashType & Transaction.SIGHASH_ANYONECANPAY
19452 TransactionBuilder.prototype.__canModifyOutputs = function () {
19453 var nInputs = this.tx.ins.length
19454 var nOutputs = this.tx.outs.length
19456 return this.inputs.every(function (input) {
19457 if (input.signatures === undefined) return true
19459 return input.signatures.every(function (signature) {
19460 if (!signature) return true
19461 var hashType = signatureHashType(signature)
19463 var hashTypeMod = hashType &
0x1f
19464 if (hashTypeMod === Transaction.SIGHASH_NONE) return true
19465 if (hashTypeMod === Transaction.SIGHASH_SINGLE) {
19466 // if SIGHASH_SINGLE is set, and nInputs
> nOutputs
19467 // some signatures would be invalidated by the addition
19469 return nInputs <= nOutputs
19475 TransactionBuilder.prototype.__overMaximumFees = function (bytes) {
19476 // not all inputs will have .value defined
19477 var incoming = this.inputs.reduce(function (a, x) { return a + (x.value
>>> 0) },
0)
19479 // but all outputs do, and if we have any input value
19480 // we can immediately determine if the outputs are too small
19481 var outgoing = this.tx.outs.reduce(function (a, x) { return a + x.value },
0)
19482 var fee = incoming - outgoing
19483 var feeRate = fee / bytes
19485 return feeRate
> this.maximumFeeRate
19488 module.exports = TransactionBuilder
19490 },{"./address":
44,"./crypto":
47,"./ecpair":
49,"./ecsignature":
50,"./networks":
53,"./script":
54,"./templates":
56,"./transaction":
78,"./types":
80,"bitcoin-ops":
42,"safe-buffer":
128,"typeforce":
139}],
80:[function(require,module,exports){
19491 var typeforce = require('typeforce')
19493 var UINT31_MAX = Math.pow(
2,
31) -
1
19494 function UInt31 (value) {
19495 return typeforce.UInt32(value) && value <= UINT31_MAX
19498 function BIP32Path (value) {
19499 return typeforce.String(value) && value.match(/^(m\/)?(\d+'?\/)*\d+'?$/)
19501 BIP32Path.toJSON = function () { return 'BIP32 derivation path' }
19503 var SATOSHI_MAX =
21 *
1e14
19504 function Satoshi (value) {
19505 return typeforce.UInt53(value) && value <= SATOSHI_MAX
19508 // external dependent types
19509 var BigInt = typeforce.quacksLike('BigInteger')
19510 var ECPoint = typeforce.quacksLike('Point')
19512 // exposed, external API
19513 var ECSignature = typeforce.compile({ r: BigInt, s: BigInt })
19514 var Network = typeforce.compile({
19515 messagePrefix: typeforce.oneOf(typeforce.Buffer, typeforce.String),
19517 public: typeforce.UInt32,
19518 private: typeforce.UInt32
19520 pubKeyHash: typeforce.UInt8,
19521 scriptHash: typeforce.UInt8,
19522 wif: typeforce.UInt8
19525 // extend typeforce types with ours
19528 BIP32Path: BIP32Path,
19529 Buffer256bit: typeforce.BufferN(
32),
19531 ECSignature: ECSignature,
19532 Hash160bit: typeforce.BufferN(
20),
19533 Hash256bit: typeforce.BufferN(
32),
19539 for (var typeName in typeforce) {
19540 types[typeName] = typeforce[typeName]
19543 module.exports = types
19545 },{"typeforce":
139}],
81:[function(require,module,exports){
19546 (function (module, exports) {
19550 function assert (val, msg) {
19551 if (!val) throw new Error(msg || 'Assertion failed');
19554 // Could use `inherits` module, but don't want to move from single file
19555 // architecture yet.
19556 function inherits (ctor, superCtor) {
19557 ctor.super_ = superCtor;
19558 var TempCtor = function () {};
19559 TempCtor.prototype = superCtor.prototype;
19560 ctor.prototype = new TempCtor();
19561 ctor.prototype.constructor = ctor;
19566 function BN (number, base, endian) {
19567 if (BN.isBN(number)) {
19575 // Reduction context
19578 if (number !== null) {
19579 if (base === 'le' || base === 'be') {
19584 this._init(number ||
0, base ||
10, endian || 'be');
19587 if (typeof module === 'object') {
19588 module.exports = BN;
19598 Buffer = require('buf' + 'fer').Buffer;
19602 BN.isBN = function isBN (num) {
19603 if (num instanceof BN) {
19607 return num !== null && typeof num === 'object' &&
19608 num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
19611 BN.max = function max (left, right) {
19612 if (left.cmp(right)
> 0) return left;
19616 BN.min = function min (left, right) {
19617 if (left.cmp(right) <
0) return left;
19621 BN.prototype._init = function init (number, base, endian) {
19622 if (typeof number === 'number') {
19623 return this._initNumber(number, base, endian);
19626 if (typeof number === 'object') {
19627 return this._initArray(number, base, endian);
19630 if (base === 'hex') {
19633 assert(base === (base |
0) && base
>=
2 && base <=
36);
19635 number = number.toString().replace(/\s+/g, '');
19637 if (number[
0] === '-') {
19642 this._parseHex(number, start);
19644 this._parseBase(number, base, start);
19647 if (number[
0] === '-') {
19653 if (endian !== 'le') return;
19655 this._initArray(this.toArray(), base, endian);
19658 BN.prototype._initNumber = function _initNumber (number, base, endian) {
19663 if (number <
0x4000000) {
19664 this.words = [ number &
0x3ffffff ];
19666 } else if (number <
0x10000000000000) {
19668 number &
0x3ffffff,
19669 (number /
0x4000000) &
0x3ffffff
19673 assert(number <
0x20000000000000); //
2 ^
53 (unsafe)
19675 number &
0x3ffffff,
19676 (number /
0x4000000) &
0x3ffffff,
19682 if (endian !== 'le') return;
19684 // Reverse the bytes
19685 this._initArray(this.toArray(), base, endian);
19688 BN.prototype._initArray = function _initArray (number, base, endian) {
19689 // Perhaps a Uint8Array
19690 assert(typeof number.length === 'number');
19691 if (number.length <=
0) {
19692 this.words = [
0 ];
19697 this.length = Math.ceil(number.length /
3);
19698 this.words = new Array(this.length);
19699 for (var i =
0; i < this.length; i++) {
19705 if (endian === 'be') {
19706 for (i = number.length -
1, j =
0; i
>=
0; i -=
3) {
19707 w = number[i] | (number[i -
1] <<
8) | (number[i -
2] <<
16);
19708 this.words[j] |= (w << off) &
0x3ffffff;
19709 this.words[j +
1] = (w
>>> (
26 - off)) &
0x3ffffff;
19716 } else if (endian === 'le') {
19717 for (i =
0, j =
0; i < number.length; i +=
3) {
19718 w = number[i] | (number[i +
1] <<
8) | (number[i +
2] <<
16);
19719 this.words[j] |= (w << off) &
0x3ffffff;
19720 this.words[j +
1] = (w
>>> (
26 - off)) &
0x3ffffff;
19728 return this.strip();
19731 function parseHex (str, start, end) {
19733 var len = Math.min(str.length, end);
19734 for (var i = start; i < len; i++) {
19735 var c = str.charCodeAt(i) -
48;
19740 if (c
>=
49 && c <=
54) {
19744 } else if (c
>=
17 && c <=
22) {
19755 BN.prototype._parseHex = function _parseHex (number, start) {
19756 // Create possibly bigger array to ensure that it fits the number
19757 this.length = Math.ceil((number.length - start) /
6);
19758 this.words = new Array(this.length);
19759 for (var i =
0; i < this.length; i++) {
19764 // Scan
24-bit chunks and add them to the number
19766 for (i = number.length -
6, j =
0; i
>= start; i -=
6) {
19767 w = parseHex(number, i, i +
6);
19768 this.words[j] |= (w << off) &
0x3ffffff;
19769 // NOTE: `
0x3fffff` is intentional here,
26bits max shift +
24bit hex limb
19770 this.words[j +
1] |= w
>>> (
26 - off) &
0x3fffff;
19777 if (i +
6 !== start) {
19778 w = parseHex(number, start, i +
6);
19779 this.words[j] |= (w << off) &
0x3ffffff;
19780 this.words[j +
1] |= w
>>> (
26 - off) &
0x3fffff;
19785 function parseBase (str, start, end, mul) {
19787 var len = Math.min(str.length, end);
19788 for (var i = start; i < len; i++) {
19789 var c = str.charCodeAt(i) -
48;
19798 } else if (c
>=
17) {
19809 BN.prototype._parseBase = function _parseBase (number, base, start) {
19810 // Initialize as zero
19811 this.words = [
0 ];
19814 // Find length of limb in base
19815 for (var limbLen =
0, limbPow =
1; limbPow <=
0x3ffffff; limbPow *= base) {
19819 limbPow = (limbPow / base) |
0;
19821 var total = number.length - start;
19822 var mod = total % limbLen;
19823 var end = Math.min(total, total - mod) + start;
19826 for (var i = start; i < end; i += limbLen) {
19827 word = parseBase(number, i, i + limbLen, base);
19829 this.imuln(limbPow);
19830 if (this.words[
0] + word <
0x4000000) {
19831 this.words[
0] += word;
19839 word = parseBase(number, i, number.length, base);
19841 for (i =
0; i < mod; i++) {
19846 if (this.words[
0] + word <
0x4000000) {
19847 this.words[
0] += word;
19854 BN.prototype.copy = function copy (dest) {
19855 dest.words = new Array(this.length);
19856 for (var i =
0; i < this.length; i++) {
19857 dest.words[i] = this.words[i];
19859 dest.length = this.length;
19860 dest.negative = this.negative;
19861 dest.red = this.red;
19864 BN.prototype.clone = function clone () {
19865 var r = new BN(null);
19870 BN.prototype._expand = function _expand (size) {
19871 while (this.length < size) {
19872 this.words[this.length++] =
0;
19877 // Remove leading `
0` from `this`
19878 BN.prototype.strip = function strip () {
19879 while (this.length
> 1 && this.words[this.length -
1] ===
0) {
19882 return this._normSign();
19885 BN.prototype._normSign = function _normSign () {
19887 if (this.length ===
1 && this.words[
0] ===
0) {
19893 BN.prototype.inspect = function inspect () {
19894 return (this.red ? '
<BN-R: ' : '
<BN: ') + this.toString(
16) + '
>';
19900 var groupSizes = [];
19901 var groupBases = [];
19905 while (++i < BN.wordSize) {
19914 while (++base <
36 +
1) {
19917 while (groupBase < (
1 << BN.wordSize) / base) {
19921 groupSizes[base] = groupSize;
19922 groupBases[base] = groupBase;
19944 '
0000000000000000',
19945 '
00000000000000000',
19946 '
000000000000000000',
19947 '
0000000000000000000',
19948 '
00000000000000000000',
19949 '
000000000000000000000',
19950 '
0000000000000000000000',
19951 '
00000000000000000000000',
19952 '
000000000000000000000000',
19953 '
0000000000000000000000000'
19958 25,
16,
12,
11,
10,
9,
8,
19959 8,
7,
7,
7,
7,
6,
6,
19960 6,
6,
6,
6,
6,
5,
5,
19961 5,
5,
5,
5,
5,
5,
5,
19962 5,
5,
5,
5,
5,
5,
5
19967 33554432,
43046721,
16777216,
48828125,
60466176,
40353607,
16777216,
19968 43046721,
10000000,
19487171,
35831808,
62748517,
7529536,
11390625,
19969 16777216,
24137569,
34012224,
47045881,
64000000,
4084101,
5153632,
19970 6436343,
7962624,
9765625,
11881376,
14348907,
17210368,
20511149,
19971 24300000,
28629151,
33554432,
39135393,
45435424,
52521875,
60466176
19974 BN.prototype.toString = function toString (base, padding) {
19976 padding = padding |
0 ||
1;
19979 if (base ===
16 || base === 'hex') {
19983 for (var i =
0; i < this.length; i++) {
19984 var w = this.words[i];
19985 var word = (((w << off) | carry) &
0xffffff).toString(
16);
19986 carry = (w
>>> (
24 - off)) &
0xffffff;
19987 if (carry !==
0 || i !== this.length -
1) {
19988 out = zeros[
6 - word.length] + word + out;
19999 out = carry.toString(
16) + out;
20001 while (out.length % padding !==
0) {
20004 if (this.negative !==
0) {
20010 if (base === (base |
0) && base
>=
2 && base <=
36) {
20011 // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));
20012 var groupSize = groupSizes[base];
20013 // var groupBase = Math.pow(base, groupSize);
20014 var groupBase = groupBases[base];
20016 var c = this.clone();
20018 while (!c.isZero()) {
20019 var r = c.modn(groupBase).toString(base);
20020 c = c.idivn(groupBase);
20023 out = zeros[groupSize - r.length] + r + out;
20028 if (this.isZero()) {
20031 while (out.length % padding !==
0) {
20034 if (this.negative !==
0) {
20040 assert(false, 'Base should be between
2 and
36');
20043 BN.prototype.toNumber = function toNumber () {
20044 var ret = this.words[
0];
20045 if (this.length ===
2) {
20046 ret += this.words[
1] *
0x4000000;
20047 } else if (this.length ===
3 && this.words[
2] ===
0x01) {
20048 // NOTE: at this stage it is known that the top bit is set
20049 ret +=
0x10000000000000 + (this.words[
1] *
0x4000000);
20050 } else if (this.length
> 2) {
20051 assert(false, 'Number can only safely store up to
53 bits');
20053 return (this.negative !==
0) ? -ret : ret;
20056 BN.prototype.toJSON = function toJSON () {
20057 return this.toString(
16);
20060 BN.prototype.toBuffer = function toBuffer (endian, length) {
20061 assert(typeof Buffer !== 'undefined');
20062 return this.toArrayLike(Buffer, endian, length);
20065 BN.prototype.toArray = function toArray (endian, length) {
20066 return this.toArrayLike(Array, endian, length);
20069 BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {
20070 var byteLength = this.byteLength();
20071 var reqLength = length || Math.max(
1, byteLength);
20072 assert(byteLength <= reqLength, 'byte array longer than desired length');
20073 assert(reqLength
> 0, 'Requested array length <=
0');
20076 var littleEndian = endian === 'le';
20077 var res = new ArrayType(reqLength);
20080 var q = this.clone();
20081 if (!littleEndian) {
20082 // Assume big-endian
20083 for (i =
0; i < reqLength - byteLength; i++) {
20087 for (i =
0; !q.isZero(); i++) {
20091 res[reqLength - i -
1] = b;
20094 for (i =
0; !q.isZero(); i++) {
20101 for (; i < reqLength; i++) {
20110 BN.prototype._countBits = function _countBits (w) {
20111 return
32 - Math.clz32(w);
20114 BN.prototype._countBits = function _countBits (w) {
20137 BN.prototype._zeroBits = function _zeroBits (w) {
20139 if (w ===
0) return
26;
20143 if ((t &
0x1fff) ===
0) {
20147 if ((t &
0x7f) ===
0) {
20151 if ((t &
0xf) ===
0) {
20155 if ((t &
0x3) ===
0) {
20159 if ((t &
0x1) ===
0) {
20165 // Return number of used bits in a BN
20166 BN.prototype.bitLength = function bitLength () {
20167 var w = this.words[this.length -
1];
20168 var hi = this._countBits(w);
20169 return (this.length -
1) *
26 + hi;
20172 function toBitArray (num) {
20173 var w = new Array(num.bitLength());
20175 for (var bit =
0; bit < w.length; bit++) {
20176 var off = (bit /
26) |
0;
20177 var wbit = bit %
26;
20179 w[bit] = (num.words[off] & (
1 << wbit))
>>> wbit;
20185 // Number of trailing zero bits
20186 BN.prototype.zeroBits = function zeroBits () {
20187 if (this.isZero()) return
0;
20190 for (var i =
0; i < this.length; i++) {
20191 var b = this._zeroBits(this.words[i]);
20193 if (b !==
26) break;
20198 BN.prototype.byteLength = function byteLength () {
20199 return Math.ceil(this.bitLength() /
8);
20202 BN.prototype.toTwos = function toTwos (width) {
20203 if (this.negative !==
0) {
20204 return this.abs().inotn(width).iaddn(
1);
20206 return this.clone();
20209 BN.prototype.fromTwos = function fromTwos (width) {
20210 if (this.testn(width -
1)) {
20211 return this.notn(width).iaddn(
1).ineg();
20213 return this.clone();
20216 BN.prototype.isNeg = function isNeg () {
20217 return this.negative !==
0;
20220 // Return negative clone of `this`
20221 BN.prototype.neg = function neg () {
20222 return this.clone().ineg();
20225 BN.prototype.ineg = function ineg () {
20226 if (!this.isZero()) {
20227 this.negative ^=
1;
20233 // Or `num` with `this` in-place
20234 BN.prototype.iuor = function iuor (num) {
20235 while (this.length < num.length) {
20236 this.words[this.length++] =
0;
20239 for (var i =
0; i < num.length; i++) {
20240 this.words[i] = this.words[i] | num.words[i];
20243 return this.strip();
20246 BN.prototype.ior = function ior (num) {
20247 assert((this.negative | num.negative) ===
0);
20248 return this.iuor(num);
20251 // Or `num` with `this`
20252 BN.prototype.or = function or (num) {
20253 if (this.length
> num.length) return this.clone().ior(num);
20254 return num.clone().ior(this);
20257 BN.prototype.uor = function uor (num) {
20258 if (this.length
> num.length) return this.clone().iuor(num);
20259 return num.clone().iuor(this);
20262 // And `num` with `this` in-place
20263 BN.prototype.iuand = function iuand (num) {
20264 // b = min-length(num, this)
20266 if (this.length
> num.length) {
20272 for (var i =
0; i < b.length; i++) {
20273 this.words[i] = this.words[i] & num.words[i];
20276 this.length = b.length;
20278 return this.strip();
20281 BN.prototype.iand = function iand (num) {
20282 assert((this.negative | num.negative) ===
0);
20283 return this.iuand(num);
20286 // And `num` with `this`
20287 BN.prototype.and = function and (num) {
20288 if (this.length
> num.length) return this.clone().iand(num);
20289 return num.clone().iand(this);
20292 BN.prototype.uand = function uand (num) {
20293 if (this.length
> num.length) return this.clone().iuand(num);
20294 return num.clone().iuand(this);
20297 // Xor `num` with `this` in-place
20298 BN.prototype.iuxor = function iuxor (num) {
20299 // a.length
> b.length
20302 if (this.length
> num.length) {
20310 for (var i =
0; i < b.length; i++) {
20311 this.words[i] = a.words[i] ^ b.words[i];
20315 for (; i < a.length; i++) {
20316 this.words[i] = a.words[i];
20320 this.length = a.length;
20322 return this.strip();
20325 BN.prototype.ixor = function ixor (num) {
20326 assert((this.negative | num.negative) ===
0);
20327 return this.iuxor(num);
20330 // Xor `num` with `this`
20331 BN.prototype.xor = function xor (num) {
20332 if (this.length
> num.length) return this.clone().ixor(num);
20333 return num.clone().ixor(this);
20336 BN.prototype.uxor = function uxor (num) {
20337 if (this.length
> num.length) return this.clone().iuxor(num);
20338 return num.clone().iuxor(this);
20341 // Not ``this`` with ``width`` bitwidth
20342 BN.prototype.inotn = function inotn (width) {
20343 assert(typeof width === 'number' && width
>=
0);
20345 var bytesNeeded = Math.ceil(width /
26) |
0;
20346 var bitsLeft = width %
26;
20348 // Extend the buffer with leading zeroes
20349 this._expand(bytesNeeded);
20351 if (bitsLeft
> 0) {
20355 // Handle complete words
20356 for (var i =
0; i < bytesNeeded; i++) {
20357 this.words[i] = ~this.words[i] &
0x3ffffff;
20360 // Handle the residue
20361 if (bitsLeft
> 0) {
20362 this.words[i] = ~this.words[i] & (
0x3ffffff >> (
26 - bitsLeft));
20365 // And remove leading zeroes
20366 return this.strip();
20369 BN.prototype.notn = function notn (width) {
20370 return this.clone().inotn(width);
20373 // Set `bit` of `this`
20374 BN.prototype.setn = function setn (bit, val) {
20375 assert(typeof bit === 'number' && bit
>=
0);
20377 var off = (bit /
26) |
0;
20378 var wbit = bit %
26;
20380 this._expand(off +
1);
20383 this.words[off] = this.words[off] | (
1 << wbit);
20385 this.words[off] = this.words[off] & ~(
1 << wbit);
20388 return this.strip();
20391 // Add `num` to `this` in-place
20392 BN.prototype.iadd = function iadd (num) {
20395 // negative + positive
20396 if (this.negative !==
0 && num.negative ===
0) {
20398 r = this.isub(num);
20399 this.negative ^=
1;
20400 return this._normSign();
20402 // positive + negative
20403 } else if (this.negative ===
0 && num.negative !==
0) {
20405 r = this.isub(num);
20407 return r._normSign();
20410 // a.length
> b.length
20412 if (this.length
> num.length) {
20421 for (var i =
0; i < b.length; i++) {
20422 r = (a.words[i] |
0) + (b.words[i] |
0) + carry;
20423 this.words[i] = r &
0x3ffffff;
20426 for (; carry !==
0 && i < a.length; i++) {
20427 r = (a.words[i] |
0) + carry;
20428 this.words[i] = r &
0x3ffffff;
20432 this.length = a.length;
20434 this.words[this.length] = carry;
20436 // Copy the rest of the words
20437 } else if (a !== this) {
20438 for (; i < a.length; i++) {
20439 this.words[i] = a.words[i];
20446 // Add `num` to `this`
20447 BN.prototype.add = function add (num) {
20449 if (num.negative !==
0 && this.negative ===
0) {
20451 res = this.sub(num);
20454 } else if (num.negative ===
0 && this.negative !==
0) {
20456 res = num.sub(this);
20461 if (this.length
> num.length) return this.clone().iadd(num);
20463 return num.clone().iadd(this);
20466 // Subtract `num` from `this` in-place
20467 BN.prototype.isub = function isub (num) {
20468 // this - (-num) = this + num
20469 if (num.negative !==
0) {
20471 var r = this.iadd(num);
20473 return r._normSign();
20475 // -this - num = -(this + num)
20476 } else if (this.negative !==
0) {
20480 return this._normSign();
20483 // At this point both numbers are positive
20484 var cmp = this.cmp(num);
20486 // Optimization - zeroify
20505 for (var i =
0; i < b.length; i++) {
20506 r = (a.words[i] |
0) - (b.words[i] |
0) + carry;
20508 this.words[i] = r &
0x3ffffff;
20510 for (; carry !==
0 && i < a.length; i++) {
20511 r = (a.words[i] |
0) + carry;
20513 this.words[i] = r &
0x3ffffff;
20516 // Copy rest of the words
20517 if (carry ===
0 && i < a.length && a !== this) {
20518 for (; i < a.length; i++) {
20519 this.words[i] = a.words[i];
20523 this.length = Math.max(this.length, i);
20529 return this.strip();
20532 // Subtract `num` from `this`
20533 BN.prototype.sub = function sub (num) {
20534 return this.clone().isub(num);
20537 function smallMulTo (self, num, out) {
20538 out.negative = num.negative ^ self.negative;
20539 var len = (self.length + num.length) |
0;
20541 len = (len -
1) |
0;
20543 // Peel one iteration (compiler can't do it, because of code complexity)
20544 var a = self.words[
0] |
0;
20545 var b = num.words[
0] |
0;
20548 var lo = r &
0x3ffffff;
20549 var carry = (r /
0x4000000) |
0;
20552 for (var k =
1; k < len; k++) {
20553 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
20554 // note that ncarry could be
>=
0x3ffffff
20555 var ncarry = carry
>>> 26;
20556 var rword = carry &
0x3ffffff;
20557 var maxJ = Math.min(k, num.length -
1);
20558 for (var j = Math.max(
0, k - self.length +
1); j <= maxJ; j++) {
20559 var i = (k - j) |
0;
20560 a = self.words[i] |
0;
20561 b = num.words[j] |
0;
20563 ncarry += (r /
0x4000000) |
0;
20564 rword = r &
0x3ffffff;
20566 out.words[k] = rword |
0;
20567 carry = ncarry |
0;
20570 out.words[k] = carry |
0;
20575 return out.strip();
20578 // TODO(indutny): it may be reasonable to omit it for users who don't need
20579 // to work with
256-bit numbers, otherwise it gives
20% improvement for
256-bit
20580 // multiplication (like elliptic secp256k1).
20581 var comb10MulTo = function comb10MulTo (self, num, out) {
20582 var a = self.words;
20590 var al0 = a0 &
0x1fff;
20591 var ah0 = a0
>>> 13;
20593 var al1 = a1 &
0x1fff;
20594 var ah1 = a1
>>> 13;
20596 var al2 = a2 &
0x1fff;
20597 var ah2 = a2
>>> 13;
20599 var al3 = a3 &
0x1fff;
20600 var ah3 = a3
>>> 13;
20602 var al4 = a4 &
0x1fff;
20603 var ah4 = a4
>>> 13;
20605 var al5 = a5 &
0x1fff;
20606 var ah5 = a5
>>> 13;
20608 var al6 = a6 &
0x1fff;
20609 var ah6 = a6
>>> 13;
20611 var al7 = a7 &
0x1fff;
20612 var ah7 = a7
>>> 13;
20614 var al8 = a8 &
0x1fff;
20615 var ah8 = a8
>>> 13;
20617 var al9 = a9 &
0x1fff;
20618 var ah9 = a9
>>> 13;
20620 var bl0 = b0 &
0x1fff;
20621 var bh0 = b0
>>> 13;
20623 var bl1 = b1 &
0x1fff;
20624 var bh1 = b1
>>> 13;
20626 var bl2 = b2 &
0x1fff;
20627 var bh2 = b2
>>> 13;
20629 var bl3 = b3 &
0x1fff;
20630 var bh3 = b3
>>> 13;
20632 var bl4 = b4 &
0x1fff;
20633 var bh4 = b4
>>> 13;
20635 var bl5 = b5 &
0x1fff;
20636 var bh5 = b5
>>> 13;
20638 var bl6 = b6 &
0x1fff;
20639 var bh6 = b6
>>> 13;
20641 var bl7 = b7 &
0x1fff;
20642 var bh7 = b7
>>> 13;
20644 var bl8 = b8 &
0x1fff;
20645 var bh8 = b8
>>> 13;
20647 var bl9 = b9 &
0x1fff;
20648 var bh9 = b9
>>> 13;
20650 out.negative = self.negative ^ num.negative;
20653 lo = Math.imul(al0, bl0);
20654 mid = Math.imul(al0, bh0);
20655 mid = (mid + Math.imul(ah0, bl0)) |
0;
20656 hi = Math.imul(ah0, bh0);
20657 var w0 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
20658 c = (((hi + (mid
>>> 13)) |
0) + (w0
>>> 26)) |
0;
20661 lo = Math.imul(al1, bl0);
20662 mid = Math.imul(al1, bh0);
20663 mid = (mid + Math.imul(ah1, bl0)) |
0;
20664 hi = Math.imul(ah1, bh0);
20665 lo = (lo + Math.imul(al0, bl1)) |
0;
20666 mid = (mid + Math.imul(al0, bh1)) |
0;
20667 mid = (mid + Math.imul(ah0, bl1)) |
0;
20668 hi = (hi + Math.imul(ah0, bh1)) |
0;
20669 var w1 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
20670 c = (((hi + (mid
>>> 13)) |
0) + (w1
>>> 26)) |
0;
20673 lo = Math.imul(al2, bl0);
20674 mid = Math.imul(al2, bh0);
20675 mid = (mid + Math.imul(ah2, bl0)) |
0;
20676 hi = Math.imul(ah2, bh0);
20677 lo = (lo + Math.imul(al1, bl1)) |
0;
20678 mid = (mid + Math.imul(al1, bh1)) |
0;
20679 mid = (mid + Math.imul(ah1, bl1)) |
0;
20680 hi = (hi + Math.imul(ah1, bh1)) |
0;
20681 lo = (lo + Math.imul(al0, bl2)) |
0;
20682 mid = (mid + Math.imul(al0, bh2)) |
0;
20683 mid = (mid + Math.imul(ah0, bl2)) |
0;
20684 hi = (hi + Math.imul(ah0, bh2)) |
0;
20685 var w2 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
20686 c = (((hi + (mid
>>> 13)) |
0) + (w2
>>> 26)) |
0;
20689 lo = Math.imul(al3, bl0);
20690 mid = Math.imul(al3, bh0);
20691 mid = (mid + Math.imul(ah3, bl0)) |
0;
20692 hi = Math.imul(ah3, bh0);
20693 lo = (lo + Math.imul(al2, bl1)) |
0;
20694 mid = (mid + Math.imul(al2, bh1)) |
0;
20695 mid = (mid + Math.imul(ah2, bl1)) |
0;
20696 hi = (hi + Math.imul(ah2, bh1)) |
0;
20697 lo = (lo + Math.imul(al1, bl2)) |
0;
20698 mid = (mid + Math.imul(al1, bh2)) |
0;
20699 mid = (mid + Math.imul(ah1, bl2)) |
0;
20700 hi = (hi + Math.imul(ah1, bh2)) |
0;
20701 lo = (lo + Math.imul(al0, bl3)) |
0;
20702 mid = (mid + Math.imul(al0, bh3)) |
0;
20703 mid = (mid + Math.imul(ah0, bl3)) |
0;
20704 hi = (hi + Math.imul(ah0, bh3)) |
0;
20705 var w3 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
20706 c = (((hi + (mid
>>> 13)) |
0) + (w3
>>> 26)) |
0;
20709 lo = Math.imul(al4, bl0);
20710 mid = Math.imul(al4, bh0);
20711 mid = (mid + Math.imul(ah4, bl0)) |
0;
20712 hi = Math.imul(ah4, bh0);
20713 lo = (lo + Math.imul(al3, bl1)) |
0;
20714 mid = (mid + Math.imul(al3, bh1)) |
0;
20715 mid = (mid + Math.imul(ah3, bl1)) |
0;
20716 hi = (hi + Math.imul(ah3, bh1)) |
0;
20717 lo = (lo + Math.imul(al2, bl2)) |
0;
20718 mid = (mid + Math.imul(al2, bh2)) |
0;
20719 mid = (mid + Math.imul(ah2, bl2)) |
0;
20720 hi = (hi + Math.imul(ah2, bh2)) |
0;
20721 lo = (lo + Math.imul(al1, bl3)) |
0;
20722 mid = (mid + Math.imul(al1, bh3)) |
0;
20723 mid = (mid + Math.imul(ah1, bl3)) |
0;
20724 hi = (hi + Math.imul(ah1, bh3)) |
0;
20725 lo = (lo + Math.imul(al0, bl4)) |
0;
20726 mid = (mid + Math.imul(al0, bh4)) |
0;
20727 mid = (mid + Math.imul(ah0, bl4)) |
0;
20728 hi = (hi + Math.imul(ah0, bh4)) |
0;
20729 var w4 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
20730 c = (((hi + (mid
>>> 13)) |
0) + (w4
>>> 26)) |
0;
20733 lo = Math.imul(al5, bl0);
20734 mid = Math.imul(al5, bh0);
20735 mid = (mid + Math.imul(ah5, bl0)) |
0;
20736 hi = Math.imul(ah5, bh0);
20737 lo = (lo + Math.imul(al4, bl1)) |
0;
20738 mid = (mid + Math.imul(al4, bh1)) |
0;
20739 mid = (mid + Math.imul(ah4, bl1)) |
0;
20740 hi = (hi + Math.imul(ah4, bh1)) |
0;
20741 lo = (lo + Math.imul(al3, bl2)) |
0;
20742 mid = (mid + Math.imul(al3, bh2)) |
0;
20743 mid = (mid + Math.imul(ah3, bl2)) |
0;
20744 hi = (hi + Math.imul(ah3, bh2)) |
0;
20745 lo = (lo + Math.imul(al2, bl3)) |
0;
20746 mid = (mid + Math.imul(al2, bh3)) |
0;
20747 mid = (mid + Math.imul(ah2, bl3)) |
0;
20748 hi = (hi + Math.imul(ah2, bh3)) |
0;
20749 lo = (lo + Math.imul(al1, bl4)) |
0;
20750 mid = (mid + Math.imul(al1, bh4)) |
0;
20751 mid = (mid + Math.imul(ah1, bl4)) |
0;
20752 hi = (hi + Math.imul(ah1, bh4)) |
0;
20753 lo = (lo + Math.imul(al0, bl5)) |
0;
20754 mid = (mid + Math.imul(al0, bh5)) |
0;
20755 mid = (mid + Math.imul(ah0, bl5)) |
0;
20756 hi = (hi + Math.imul(ah0, bh5)) |
0;
20757 var w5 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
20758 c = (((hi + (mid
>>> 13)) |
0) + (w5
>>> 26)) |
0;
20761 lo = Math.imul(al6, bl0);
20762 mid = Math.imul(al6, bh0);
20763 mid = (mid + Math.imul(ah6, bl0)) |
0;
20764 hi = Math.imul(ah6, bh0);
20765 lo = (lo + Math.imul(al5, bl1)) |
0;
20766 mid = (mid + Math.imul(al5, bh1)) |
0;
20767 mid = (mid + Math.imul(ah5, bl1)) |
0;
20768 hi = (hi + Math.imul(ah5, bh1)) |
0;
20769 lo = (lo + Math.imul(al4, bl2)) |
0;
20770 mid = (mid + Math.imul(al4, bh2)) |
0;
20771 mid = (mid + Math.imul(ah4, bl2)) |
0;
20772 hi = (hi + Math.imul(ah4, bh2)) |
0;
20773 lo = (lo + Math.imul(al3, bl3)) |
0;
20774 mid = (mid + Math.imul(al3, bh3)) |
0;
20775 mid = (mid + Math.imul(ah3, bl3)) |
0;
20776 hi = (hi + Math.imul(ah3, bh3)) |
0;
20777 lo = (lo + Math.imul(al2, bl4)) |
0;
20778 mid = (mid + Math.imul(al2, bh4)) |
0;
20779 mid = (mid + Math.imul(ah2, bl4)) |
0;
20780 hi = (hi + Math.imul(ah2, bh4)) |
0;
20781 lo = (lo + Math.imul(al1, bl5)) |
0;
20782 mid = (mid + Math.imul(al1, bh5)) |
0;
20783 mid = (mid + Math.imul(ah1, bl5)) |
0;
20784 hi = (hi + Math.imul(ah1, bh5)) |
0;
20785 lo = (lo + Math.imul(al0, bl6)) |
0;
20786 mid = (mid + Math.imul(al0, bh6)) |
0;
20787 mid = (mid + Math.imul(ah0, bl6)) |
0;
20788 hi = (hi + Math.imul(ah0, bh6)) |
0;
20789 var w6 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
20790 c = (((hi + (mid
>>> 13)) |
0) + (w6
>>> 26)) |
0;
20793 lo = Math.imul(al7, bl0);
20794 mid = Math.imul(al7, bh0);
20795 mid = (mid + Math.imul(ah7, bl0)) |
0;
20796 hi = Math.imul(ah7, bh0);
20797 lo = (lo + Math.imul(al6, bl1)) |
0;
20798 mid = (mid + Math.imul(al6, bh1)) |
0;
20799 mid = (mid + Math.imul(ah6, bl1)) |
0;
20800 hi = (hi + Math.imul(ah6, bh1)) |
0;
20801 lo = (lo + Math.imul(al5, bl2)) |
0;
20802 mid = (mid + Math.imul(al5, bh2)) |
0;
20803 mid = (mid + Math.imul(ah5, bl2)) |
0;
20804 hi = (hi + Math.imul(ah5, bh2)) |
0;
20805 lo = (lo + Math.imul(al4, bl3)) |
0;
20806 mid = (mid + Math.imul(al4, bh3)) |
0;
20807 mid = (mid + Math.imul(ah4, bl3)) |
0;
20808 hi = (hi + Math.imul(ah4, bh3)) |
0;
20809 lo = (lo + Math.imul(al3, bl4)) |
0;
20810 mid = (mid + Math.imul(al3, bh4)) |
0;
20811 mid = (mid + Math.imul(ah3, bl4)) |
0;
20812 hi = (hi + Math.imul(ah3, bh4)) |
0;
20813 lo = (lo + Math.imul(al2, bl5)) |
0;
20814 mid = (mid + Math.imul(al2, bh5)) |
0;
20815 mid = (mid + Math.imul(ah2, bl5)) |
0;
20816 hi = (hi + Math.imul(ah2, bh5)) |
0;
20817 lo = (lo + Math.imul(al1, bl6)) |
0;
20818 mid = (mid + Math.imul(al1, bh6)) |
0;
20819 mid = (mid + Math.imul(ah1, bl6)) |
0;
20820 hi = (hi + Math.imul(ah1, bh6)) |
0;
20821 lo = (lo + Math.imul(al0, bl7)) |
0;
20822 mid = (mid + Math.imul(al0, bh7)) |
0;
20823 mid = (mid + Math.imul(ah0, bl7)) |
0;
20824 hi = (hi + Math.imul(ah0, bh7)) |
0;
20825 var w7 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
20826 c = (((hi + (mid
>>> 13)) |
0) + (w7
>>> 26)) |
0;
20829 lo = Math.imul(al8, bl0);
20830 mid = Math.imul(al8, bh0);
20831 mid = (mid + Math.imul(ah8, bl0)) |
0;
20832 hi = Math.imul(ah8, bh0);
20833 lo = (lo + Math.imul(al7, bl1)) |
0;
20834 mid = (mid + Math.imul(al7, bh1)) |
0;
20835 mid = (mid + Math.imul(ah7, bl1)) |
0;
20836 hi = (hi + Math.imul(ah7, bh1)) |
0;
20837 lo = (lo + Math.imul(al6, bl2)) |
0;
20838 mid = (mid + Math.imul(al6, bh2)) |
0;
20839 mid = (mid + Math.imul(ah6, bl2)) |
0;
20840 hi = (hi + Math.imul(ah6, bh2)) |
0;
20841 lo = (lo + Math.imul(al5, bl3)) |
0;
20842 mid = (mid + Math.imul(al5, bh3)) |
0;
20843 mid = (mid + Math.imul(ah5, bl3)) |
0;
20844 hi = (hi + Math.imul(ah5, bh3)) |
0;
20845 lo = (lo + Math.imul(al4, bl4)) |
0;
20846 mid = (mid + Math.imul(al4, bh4)) |
0;
20847 mid = (mid + Math.imul(ah4, bl4)) |
0;
20848 hi = (hi + Math.imul(ah4, bh4)) |
0;
20849 lo = (lo + Math.imul(al3, bl5)) |
0;
20850 mid = (mid + Math.imul(al3, bh5)) |
0;
20851 mid = (mid + Math.imul(ah3, bl5)) |
0;
20852 hi = (hi + Math.imul(ah3, bh5)) |
0;
20853 lo = (lo + Math.imul(al2, bl6)) |
0;
20854 mid = (mid + Math.imul(al2, bh6)) |
0;
20855 mid = (mid + Math.imul(ah2, bl6)) |
0;
20856 hi = (hi + Math.imul(ah2, bh6)) |
0;
20857 lo = (lo + Math.imul(al1, bl7)) |
0;
20858 mid = (mid + Math.imul(al1, bh7)) |
0;
20859 mid = (mid + Math.imul(ah1, bl7)) |
0;
20860 hi = (hi + Math.imul(ah1, bh7)) |
0;
20861 lo = (lo + Math.imul(al0, bl8)) |
0;
20862 mid = (mid + Math.imul(al0, bh8)) |
0;
20863 mid = (mid + Math.imul(ah0, bl8)) |
0;
20864 hi = (hi + Math.imul(ah0, bh8)) |
0;
20865 var w8 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
20866 c = (((hi + (mid
>>> 13)) |
0) + (w8
>>> 26)) |
0;
20869 lo = Math.imul(al9, bl0);
20870 mid = Math.imul(al9, bh0);
20871 mid = (mid + Math.imul(ah9, bl0)) |
0;
20872 hi = Math.imul(ah9, bh0);
20873 lo = (lo + Math.imul(al8, bl1)) |
0;
20874 mid = (mid + Math.imul(al8, bh1)) |
0;
20875 mid = (mid + Math.imul(ah8, bl1)) |
0;
20876 hi = (hi + Math.imul(ah8, bh1)) |
0;
20877 lo = (lo + Math.imul(al7, bl2)) |
0;
20878 mid = (mid + Math.imul(al7, bh2)) |
0;
20879 mid = (mid + Math.imul(ah7, bl2)) |
0;
20880 hi = (hi + Math.imul(ah7, bh2)) |
0;
20881 lo = (lo + Math.imul(al6, bl3)) |
0;
20882 mid = (mid + Math.imul(al6, bh3)) |
0;
20883 mid = (mid + Math.imul(ah6, bl3)) |
0;
20884 hi = (hi + Math.imul(ah6, bh3)) |
0;
20885 lo = (lo + Math.imul(al5, bl4)) |
0;
20886 mid = (mid + Math.imul(al5, bh4)) |
0;
20887 mid = (mid + Math.imul(ah5, bl4)) |
0;
20888 hi = (hi + Math.imul(ah5, bh4)) |
0;
20889 lo = (lo + Math.imul(al4, bl5)) |
0;
20890 mid = (mid + Math.imul(al4, bh5)) |
0;
20891 mid = (mid + Math.imul(ah4, bl5)) |
0;
20892 hi = (hi + Math.imul(ah4, bh5)) |
0;
20893 lo = (lo + Math.imul(al3, bl6)) |
0;
20894 mid = (mid + Math.imul(al3, bh6)) |
0;
20895 mid = (mid + Math.imul(ah3, bl6)) |
0;
20896 hi = (hi + Math.imul(ah3, bh6)) |
0;
20897 lo = (lo + Math.imul(al2, bl7)) |
0;
20898 mid = (mid + Math.imul(al2, bh7)) |
0;
20899 mid = (mid + Math.imul(ah2, bl7)) |
0;
20900 hi = (hi + Math.imul(ah2, bh7)) |
0;
20901 lo = (lo + Math.imul(al1, bl8)) |
0;
20902 mid = (mid + Math.imul(al1, bh8)) |
0;
20903 mid = (mid + Math.imul(ah1, bl8)) |
0;
20904 hi = (hi + Math.imul(ah1, bh8)) |
0;
20905 lo = (lo + Math.imul(al0, bl9)) |
0;
20906 mid = (mid + Math.imul(al0, bh9)) |
0;
20907 mid = (mid + Math.imul(ah0, bl9)) |
0;
20908 hi = (hi + Math.imul(ah0, bh9)) |
0;
20909 var w9 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
20910 c = (((hi + (mid
>>> 13)) |
0) + (w9
>>> 26)) |
0;
20913 lo = Math.imul(al9, bl1);
20914 mid = Math.imul(al9, bh1);
20915 mid = (mid + Math.imul(ah9, bl1)) |
0;
20916 hi = Math.imul(ah9, bh1);
20917 lo = (lo + Math.imul(al8, bl2)) |
0;
20918 mid = (mid + Math.imul(al8, bh2)) |
0;
20919 mid = (mid + Math.imul(ah8, bl2)) |
0;
20920 hi = (hi + Math.imul(ah8, bh2)) |
0;
20921 lo = (lo + Math.imul(al7, bl3)) |
0;
20922 mid = (mid + Math.imul(al7, bh3)) |
0;
20923 mid = (mid + Math.imul(ah7, bl3)) |
0;
20924 hi = (hi + Math.imul(ah7, bh3)) |
0;
20925 lo = (lo + Math.imul(al6, bl4)) |
0;
20926 mid = (mid + Math.imul(al6, bh4)) |
0;
20927 mid = (mid + Math.imul(ah6, bl4)) |
0;
20928 hi = (hi + Math.imul(ah6, bh4)) |
0;
20929 lo = (lo + Math.imul(al5, bl5)) |
0;
20930 mid = (mid + Math.imul(al5, bh5)) |
0;
20931 mid = (mid + Math.imul(ah5, bl5)) |
0;
20932 hi = (hi + Math.imul(ah5, bh5)) |
0;
20933 lo = (lo + Math.imul(al4, bl6)) |
0;
20934 mid = (mid + Math.imul(al4, bh6)) |
0;
20935 mid = (mid + Math.imul(ah4, bl6)) |
0;
20936 hi = (hi + Math.imul(ah4, bh6)) |
0;
20937 lo = (lo + Math.imul(al3, bl7)) |
0;
20938 mid = (mid + Math.imul(al3, bh7)) |
0;
20939 mid = (mid + Math.imul(ah3, bl7)) |
0;
20940 hi = (hi + Math.imul(ah3, bh7)) |
0;
20941 lo = (lo + Math.imul(al2, bl8)) |
0;
20942 mid = (mid + Math.imul(al2, bh8)) |
0;
20943 mid = (mid + Math.imul(ah2, bl8)) |
0;
20944 hi = (hi + Math.imul(ah2, bh8)) |
0;
20945 lo = (lo + Math.imul(al1, bl9)) |
0;
20946 mid = (mid + Math.imul(al1, bh9)) |
0;
20947 mid = (mid + Math.imul(ah1, bl9)) |
0;
20948 hi = (hi + Math.imul(ah1, bh9)) |
0;
20949 var w10 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
20950 c = (((hi + (mid
>>> 13)) |
0) + (w10
>>> 26)) |
0;
20953 lo = Math.imul(al9, bl2);
20954 mid = Math.imul(al9, bh2);
20955 mid = (mid + Math.imul(ah9, bl2)) |
0;
20956 hi = Math.imul(ah9, bh2);
20957 lo = (lo + Math.imul(al8, bl3)) |
0;
20958 mid = (mid + Math.imul(al8, bh3)) |
0;
20959 mid = (mid + Math.imul(ah8, bl3)) |
0;
20960 hi = (hi + Math.imul(ah8, bh3)) |
0;
20961 lo = (lo + Math.imul(al7, bl4)) |
0;
20962 mid = (mid + Math.imul(al7, bh4)) |
0;
20963 mid = (mid + Math.imul(ah7, bl4)) |
0;
20964 hi = (hi + Math.imul(ah7, bh4)) |
0;
20965 lo = (lo + Math.imul(al6, bl5)) |
0;
20966 mid = (mid + Math.imul(al6, bh5)) |
0;
20967 mid = (mid + Math.imul(ah6, bl5)) |
0;
20968 hi = (hi + Math.imul(ah6, bh5)) |
0;
20969 lo = (lo + Math.imul(al5, bl6)) |
0;
20970 mid = (mid + Math.imul(al5, bh6)) |
0;
20971 mid = (mid + Math.imul(ah5, bl6)) |
0;
20972 hi = (hi + Math.imul(ah5, bh6)) |
0;
20973 lo = (lo + Math.imul(al4, bl7)) |
0;
20974 mid = (mid + Math.imul(al4, bh7)) |
0;
20975 mid = (mid + Math.imul(ah4, bl7)) |
0;
20976 hi = (hi + Math.imul(ah4, bh7)) |
0;
20977 lo = (lo + Math.imul(al3, bl8)) |
0;
20978 mid = (mid + Math.imul(al3, bh8)) |
0;
20979 mid = (mid + Math.imul(ah3, bl8)) |
0;
20980 hi = (hi + Math.imul(ah3, bh8)) |
0;
20981 lo = (lo + Math.imul(al2, bl9)) |
0;
20982 mid = (mid + Math.imul(al2, bh9)) |
0;
20983 mid = (mid + Math.imul(ah2, bl9)) |
0;
20984 hi = (hi + Math.imul(ah2, bh9)) |
0;
20985 var w11 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
20986 c = (((hi + (mid
>>> 13)) |
0) + (w11
>>> 26)) |
0;
20989 lo = Math.imul(al9, bl3);
20990 mid = Math.imul(al9, bh3);
20991 mid = (mid + Math.imul(ah9, bl3)) |
0;
20992 hi = Math.imul(ah9, bh3);
20993 lo = (lo + Math.imul(al8, bl4)) |
0;
20994 mid = (mid + Math.imul(al8, bh4)) |
0;
20995 mid = (mid + Math.imul(ah8, bl4)) |
0;
20996 hi = (hi + Math.imul(ah8, bh4)) |
0;
20997 lo = (lo + Math.imul(al7, bl5)) |
0;
20998 mid = (mid + Math.imul(al7, bh5)) |
0;
20999 mid = (mid + Math.imul(ah7, bl5)) |
0;
21000 hi = (hi + Math.imul(ah7, bh5)) |
0;
21001 lo = (lo + Math.imul(al6, bl6)) |
0;
21002 mid = (mid + Math.imul(al6, bh6)) |
0;
21003 mid = (mid + Math.imul(ah6, bl6)) |
0;
21004 hi = (hi + Math.imul(ah6, bh6)) |
0;
21005 lo = (lo + Math.imul(al5, bl7)) |
0;
21006 mid = (mid + Math.imul(al5, bh7)) |
0;
21007 mid = (mid + Math.imul(ah5, bl7)) |
0;
21008 hi = (hi + Math.imul(ah5, bh7)) |
0;
21009 lo = (lo + Math.imul(al4, bl8)) |
0;
21010 mid = (mid + Math.imul(al4, bh8)) |
0;
21011 mid = (mid + Math.imul(ah4, bl8)) |
0;
21012 hi = (hi + Math.imul(ah4, bh8)) |
0;
21013 lo = (lo + Math.imul(al3, bl9)) |
0;
21014 mid = (mid + Math.imul(al3, bh9)) |
0;
21015 mid = (mid + Math.imul(ah3, bl9)) |
0;
21016 hi = (hi + Math.imul(ah3, bh9)) |
0;
21017 var w12 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
21018 c = (((hi + (mid
>>> 13)) |
0) + (w12
>>> 26)) |
0;
21021 lo = Math.imul(al9, bl4);
21022 mid = Math.imul(al9, bh4);
21023 mid = (mid + Math.imul(ah9, bl4)) |
0;
21024 hi = Math.imul(ah9, bh4);
21025 lo = (lo + Math.imul(al8, bl5)) |
0;
21026 mid = (mid + Math.imul(al8, bh5)) |
0;
21027 mid = (mid + Math.imul(ah8, bl5)) |
0;
21028 hi = (hi + Math.imul(ah8, bh5)) |
0;
21029 lo = (lo + Math.imul(al7, bl6)) |
0;
21030 mid = (mid + Math.imul(al7, bh6)) |
0;
21031 mid = (mid + Math.imul(ah7, bl6)) |
0;
21032 hi = (hi + Math.imul(ah7, bh6)) |
0;
21033 lo = (lo + Math.imul(al6, bl7)) |
0;
21034 mid = (mid + Math.imul(al6, bh7)) |
0;
21035 mid = (mid + Math.imul(ah6, bl7)) |
0;
21036 hi = (hi + Math.imul(ah6, bh7)) |
0;
21037 lo = (lo + Math.imul(al5, bl8)) |
0;
21038 mid = (mid + Math.imul(al5, bh8)) |
0;
21039 mid = (mid + Math.imul(ah5, bl8)) |
0;
21040 hi = (hi + Math.imul(ah5, bh8)) |
0;
21041 lo = (lo + Math.imul(al4, bl9)) |
0;
21042 mid = (mid + Math.imul(al4, bh9)) |
0;
21043 mid = (mid + Math.imul(ah4, bl9)) |
0;
21044 hi = (hi + Math.imul(ah4, bh9)) |
0;
21045 var w13 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
21046 c = (((hi + (mid
>>> 13)) |
0) + (w13
>>> 26)) |
0;
21049 lo = Math.imul(al9, bl5);
21050 mid = Math.imul(al9, bh5);
21051 mid = (mid + Math.imul(ah9, bl5)) |
0;
21052 hi = Math.imul(ah9, bh5);
21053 lo = (lo + Math.imul(al8, bl6)) |
0;
21054 mid = (mid + Math.imul(al8, bh6)) |
0;
21055 mid = (mid + Math.imul(ah8, bl6)) |
0;
21056 hi = (hi + Math.imul(ah8, bh6)) |
0;
21057 lo = (lo + Math.imul(al7, bl7)) |
0;
21058 mid = (mid + Math.imul(al7, bh7)) |
0;
21059 mid = (mid + Math.imul(ah7, bl7)) |
0;
21060 hi = (hi + Math.imul(ah7, bh7)) |
0;
21061 lo = (lo + Math.imul(al6, bl8)) |
0;
21062 mid = (mid + Math.imul(al6, bh8)) |
0;
21063 mid = (mid + Math.imul(ah6, bl8)) |
0;
21064 hi = (hi + Math.imul(ah6, bh8)) |
0;
21065 lo = (lo + Math.imul(al5, bl9)) |
0;
21066 mid = (mid + Math.imul(al5, bh9)) |
0;
21067 mid = (mid + Math.imul(ah5, bl9)) |
0;
21068 hi = (hi + Math.imul(ah5, bh9)) |
0;
21069 var w14 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
21070 c = (((hi + (mid
>>> 13)) |
0) + (w14
>>> 26)) |
0;
21073 lo = Math.imul(al9, bl6);
21074 mid = Math.imul(al9, bh6);
21075 mid = (mid + Math.imul(ah9, bl6)) |
0;
21076 hi = Math.imul(ah9, bh6);
21077 lo = (lo + Math.imul(al8, bl7)) |
0;
21078 mid = (mid + Math.imul(al8, bh7)) |
0;
21079 mid = (mid + Math.imul(ah8, bl7)) |
0;
21080 hi = (hi + Math.imul(ah8, bh7)) |
0;
21081 lo = (lo + Math.imul(al7, bl8)) |
0;
21082 mid = (mid + Math.imul(al7, bh8)) |
0;
21083 mid = (mid + Math.imul(ah7, bl8)) |
0;
21084 hi = (hi + Math.imul(ah7, bh8)) |
0;
21085 lo = (lo + Math.imul(al6, bl9)) |
0;
21086 mid = (mid + Math.imul(al6, bh9)) |
0;
21087 mid = (mid + Math.imul(ah6, bl9)) |
0;
21088 hi = (hi + Math.imul(ah6, bh9)) |
0;
21089 var w15 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
21090 c = (((hi + (mid
>>> 13)) |
0) + (w15
>>> 26)) |
0;
21093 lo = Math.imul(al9, bl7);
21094 mid = Math.imul(al9, bh7);
21095 mid = (mid + Math.imul(ah9, bl7)) |
0;
21096 hi = Math.imul(ah9, bh7);
21097 lo = (lo + Math.imul(al8, bl8)) |
0;
21098 mid = (mid + Math.imul(al8, bh8)) |
0;
21099 mid = (mid + Math.imul(ah8, bl8)) |
0;
21100 hi = (hi + Math.imul(ah8, bh8)) |
0;
21101 lo = (lo + Math.imul(al7, bl9)) |
0;
21102 mid = (mid + Math.imul(al7, bh9)) |
0;
21103 mid = (mid + Math.imul(ah7, bl9)) |
0;
21104 hi = (hi + Math.imul(ah7, bh9)) |
0;
21105 var w16 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
21106 c = (((hi + (mid
>>> 13)) |
0) + (w16
>>> 26)) |
0;
21109 lo = Math.imul(al9, bl8);
21110 mid = Math.imul(al9, bh8);
21111 mid = (mid + Math.imul(ah9, bl8)) |
0;
21112 hi = Math.imul(ah9, bh8);
21113 lo = (lo + Math.imul(al8, bl9)) |
0;
21114 mid = (mid + Math.imul(al8, bh9)) |
0;
21115 mid = (mid + Math.imul(ah8, bl9)) |
0;
21116 hi = (hi + Math.imul(ah8, bh9)) |
0;
21117 var w17 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
21118 c = (((hi + (mid
>>> 13)) |
0) + (w17
>>> 26)) |
0;
21121 lo = Math.imul(al9, bl9);
21122 mid = Math.imul(al9, bh9);
21123 mid = (mid + Math.imul(ah9, bl9)) |
0;
21124 hi = Math.imul(ah9, bh9);
21125 var w18 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
21126 c = (((hi + (mid
>>> 13)) |
0) + (w18
>>> 26)) |
0;
21156 comb10MulTo = smallMulTo;
21159 function bigMulTo (self, num, out) {
21160 out.negative = num.negative ^ self.negative;
21161 out.length = self.length + num.length;
21165 for (var k =
0; k < out.length -
1; k++) {
21166 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
21167 // note that ncarry could be
>=
0x3ffffff
21168 var ncarry = hncarry;
21170 var rword = carry &
0x3ffffff;
21171 var maxJ = Math.min(k, num.length -
1);
21172 for (var j = Math.max(
0, k - self.length +
1); j <= maxJ; j++) {
21174 var a = self.words[i] |
0;
21175 var b = num.words[j] |
0;
21178 var lo = r &
0x3ffffff;
21179 ncarry = (ncarry + ((r /
0x4000000) |
0)) |
0;
21180 lo = (lo + rword) |
0;
21181 rword = lo &
0x3ffffff;
21182 ncarry = (ncarry + (lo
>>> 26)) |
0;
21184 hncarry += ncarry
>>> 26;
21185 ncarry &=
0x3ffffff;
21187 out.words[k] = rword;
21192 out.words[k] = carry;
21197 return out.strip();
21200 function jumboMulTo (self, num, out) {
21201 var fftm = new FFTM();
21202 return fftm.mulp(self, num, out);
21205 BN.prototype.mulTo = function mulTo (num, out) {
21207 var len = this.length + num.length;
21208 if (this.length ===
10 && num.length ===
10) {
21209 res = comb10MulTo(this, num, out);
21210 } else if (len <
63) {
21211 res = smallMulTo(this, num, out);
21212 } else if (len <
1024) {
21213 res = bigMulTo(this, num, out);
21215 res = jumboMulTo(this, num, out);
21221 // Cooley-Tukey algorithm for FFT
21222 // slightly revisited to rely on looping instead of recursion
21224 function FFTM (x, y) {
21229 FFTM.prototype.makeRBT = function makeRBT (N) {
21230 var t = new Array(N);
21231 var l = BN.prototype._countBits(N) -
1;
21232 for (var i =
0; i < N; i++) {
21233 t[i] = this.revBin(i, l, N);
21239 // Returns binary-reversed representation of `x`
21240 FFTM.prototype.revBin = function revBin (x, l, N) {
21241 if (x ===
0 || x === N -
1) return x;
21244 for (var i =
0; i < l; i++) {
21245 rb |= (x &
1) << (l - i -
1);
21252 // Performs "tweedling" phase, therefore 'emulating'
21253 // behaviour of the recursive algorithm
21254 FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {
21255 for (var i =
0; i < N; i++) {
21256 rtws[i] = rws[rbt[i]];
21257 itws[i] = iws[rbt[i]];
21261 FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {
21262 this.permute(rbt, rws, iws, rtws, itws, N);
21264 for (var s =
1; s < N; s <<=
1) {
21267 var rtwdf = Math.cos(
2 * Math.PI / l);
21268 var itwdf = Math.sin(
2 * Math.PI / l);
21270 for (var p =
0; p < N; p += l) {
21271 var rtwdf_ = rtwdf;
21272 var itwdf_ = itwdf;
21274 for (var j =
0; j < s; j++) {
21275 var re = rtws[p + j];
21276 var ie = itws[p + j];
21278 var ro = rtws[p + j + s];
21279 var io = itws[p + j + s];
21281 var rx = rtwdf_ * ro - itwdf_ * io;
21283 io = rtwdf_ * io + itwdf_ * ro;
21286 rtws[p + j] = re + ro;
21287 itws[p + j] = ie + io;
21289 rtws[p + j + s] = re - ro;
21290 itws[p + j + s] = ie - io;
21292 /* jshint maxdepth : false */
21294 rx = rtwdf * rtwdf_ - itwdf * itwdf_;
21296 itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
21304 FFTM.prototype.guessLen13b = function guessLen13b (n, m) {
21305 var N = Math.max(m, n) |
1;
21308 for (N = N /
2 |
0; N; N = N
>>> 1) {
21312 return
1 << i +
1 + odd;
21315 FFTM.prototype.conjugate = function conjugate (rws, iws, N) {
21316 if (N <=
1) return;
21318 for (var i =
0; i < N /
2; i++) {
21321 rws[i] = rws[N - i -
1];
21322 rws[N - i -
1] = t;
21326 iws[i] = -iws[N - i -
1];
21327 iws[N - i -
1] = -t;
21331 FFTM.prototype.normalize13b = function normalize13b (ws, N) {
21333 for (var i =
0; i < N /
2; i++) {
21334 var w = Math.round(ws[
2 * i +
1] / N) *
0x2000 +
21335 Math.round(ws[
2 * i] / N) +
21338 ws[i] = w &
0x3ffffff;
21340 if (w <
0x4000000) {
21343 carry = w /
0x4000000 |
0;
21350 FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {
21352 for (var i =
0; i < len; i++) {
21353 carry = carry + (ws[i] |
0);
21355 rws[
2 * i] = carry &
0x1fff; carry = carry
>>> 13;
21356 rws[
2 * i +
1] = carry &
0x1fff; carry = carry
>>> 13;
21360 for (i =
2 * len; i < N; ++i) {
21364 assert(carry ===
0);
21365 assert((carry & ~
0x1fff) ===
0);
21368 FFTM.prototype.stub = function stub (N) {
21369 var ph = new Array(N);
21370 for (var i =
0; i < N; i++) {
21377 FFTM.prototype.mulp = function mulp (x, y, out) {
21378 var N =
2 * this.guessLen13b(x.length, y.length);
21380 var rbt = this.makeRBT(N);
21382 var _ = this.stub(N);
21384 var rws = new Array(N);
21385 var rwst = new Array(N);
21386 var iwst = new Array(N);
21388 var nrws = new Array(N);
21389 var nrwst = new Array(N);
21390 var niwst = new Array(N);
21392 var rmws = out.words;
21395 this.convert13b(x.words, x.length, rws, N);
21396 this.convert13b(y.words, y.length, nrws, N);
21398 this.transform(rws, _, rwst, iwst, N, rbt);
21399 this.transform(nrws, _, nrwst, niwst, N, rbt);
21401 for (var i =
0; i < N; i++) {
21402 var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
21403 iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
21407 this.conjugate(rwst, iwst, N);
21408 this.transform(rwst, iwst, rmws, _, N, rbt);
21409 this.conjugate(rmws, _, N);
21410 this.normalize13b(rmws, N);
21412 out.negative = x.negative ^ y.negative;
21413 out.length = x.length + y.length;
21414 return out.strip();
21417 // Multiply `this` by `num`
21418 BN.prototype.mul = function mul (num) {
21419 var out = new BN(null);
21420 out.words = new Array(this.length + num.length);
21421 return this.mulTo(num, out);
21424 // Multiply employing FFT
21425 BN.prototype.mulf = function mulf (num) {
21426 var out = new BN(null);
21427 out.words = new Array(this.length + num.length);
21428 return jumboMulTo(this, num, out);
21431 // In-place Multiplication
21432 BN.prototype.imul = function imul (num) {
21433 return this.clone().mulTo(num, this);
21436 BN.prototype.imuln = function imuln (num) {
21437 assert(typeof num === 'number');
21438 assert(num <
0x4000000);
21442 for (var i =
0; i < this.length; i++) {
21443 var w = (this.words[i] |
0) * num;
21444 var lo = (w &
0x3ffffff) + (carry &
0x3ffffff);
21446 carry += (w /
0x4000000) |
0;
21447 // NOTE: lo is
27bit maximum
21448 carry += lo
>>> 26;
21449 this.words[i] = lo &
0x3ffffff;
21453 this.words[i] = carry;
21460 BN.prototype.muln = function muln (num) {
21461 return this.clone().imuln(num);
21465 BN.prototype.sqr = function sqr () {
21466 return this.mul(this);
21469 // `this` * `this` in-place
21470 BN.prototype.isqr = function isqr () {
21471 return this.imul(this.clone());
21474 // Math.pow(`this`, `num`)
21475 BN.prototype.pow = function pow (num) {
21476 var w = toBitArray(num);
21477 if (w.length ===
0) return new BN(
1);
21479 // Skip leading zeroes
21481 for (var i =
0; i < w.length; i++, res = res.sqr()) {
21482 if (w[i] !==
0) break;
21485 if (++i < w.length) {
21486 for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
21487 if (w[i] ===
0) continue;
21496 // Shift-left in-place
21497 BN.prototype.iushln = function iushln (bits) {
21498 assert(typeof bits === 'number' && bits
>=
0);
21500 var s = (bits - r) /
26;
21501 var carryMask = (
0x3ffffff >>> (
26 - r)) << (
26 - r);
21507 for (i =
0; i < this.length; i++) {
21508 var newCarry = this.words[i] & carryMask;
21509 var c = ((this.words[i] |
0) - newCarry) << r;
21510 this.words[i] = c | carry;
21511 carry = newCarry
>>> (
26 - r);
21515 this.words[i] = carry;
21521 for (i = this.length -
1; i
>=
0; i--) {
21522 this.words[i + s] = this.words[i];
21525 for (i =
0; i < s; i++) {
21532 return this.strip();
21535 BN.prototype.ishln = function ishln (bits) {
21536 // TODO(indutny): implement me
21537 assert(this.negative ===
0);
21538 return this.iushln(bits);
21541 // Shift-right in-place
21542 // NOTE: `hint` is a lowest bit before trailing zeroes
21543 // NOTE: if `extended` is present - it will be filled with destroyed bits
21544 BN.prototype.iushrn = function iushrn (bits, hint, extended) {
21545 assert(typeof bits === 'number' && bits
>=
0);
21548 h = (hint - (hint %
26)) /
26;
21554 var s = Math.min((bits - r) /
26, this.length);
21555 var mask =
0x3ffffff ^ ((
0x3ffffff >>> r) << r);
21556 var maskedWords = extended;
21559 h = Math.max(
0, h);
21561 // Extended mode, copy masked part
21563 for (var i =
0; i < s; i++) {
21564 maskedWords.words[i] = this.words[i];
21566 maskedWords.length = s;
21570 // No-op, we should not move anything at all
21571 } else if (this.length
> s) {
21573 for (i =
0; i < this.length; i++) {
21574 this.words[i] = this.words[i + s];
21582 for (i = this.length -
1; i
>=
0 && (carry !==
0 || i
>= h); i--) {
21583 var word = this.words[i] |
0;
21584 this.words[i] = (carry << (
26 - r)) | (word
>>> r);
21585 carry = word & mask;
21588 // Push carried bits as a mask
21589 if (maskedWords && carry !==
0) {
21590 maskedWords.words[maskedWords.length++] = carry;
21593 if (this.length ===
0) {
21598 return this.strip();
21601 BN.prototype.ishrn = function ishrn (bits, hint, extended) {
21602 // TODO(indutny): implement me
21603 assert(this.negative ===
0);
21604 return this.iushrn(bits, hint, extended);
21608 BN.prototype.shln = function shln (bits) {
21609 return this.clone().ishln(bits);
21612 BN.prototype.ushln = function ushln (bits) {
21613 return this.clone().iushln(bits);
21617 BN.prototype.shrn = function shrn (bits) {
21618 return this.clone().ishrn(bits);
21621 BN.prototype.ushrn = function ushrn (bits) {
21622 return this.clone().iushrn(bits);
21625 // Test if n bit is set
21626 BN.prototype.testn = function testn (bit) {
21627 assert(typeof bit === 'number' && bit
>=
0);
21629 var s = (bit - r) /
26;
21632 // Fast case: bit is much higher than all existing words
21633 if (this.length <= s) return false;
21635 // Check bit and return
21636 var w = this.words[s];
21641 // Return only lowers bits of number (in-place)
21642 BN.prototype.imaskn = function imaskn (bits) {
21643 assert(typeof bits === 'number' && bits
>=
0);
21645 var s = (bits - r) /
26;
21647 assert(this.negative ===
0, 'imaskn works only with positive numbers');
21649 if (this.length <= s) {
21656 this.length = Math.min(s, this.length);
21659 var mask =
0x3ffffff ^ ((
0x3ffffff >>> r) << r);
21660 this.words[this.length -
1] &= mask;
21663 return this.strip();
21666 // Return only lowers bits of number
21667 BN.prototype.maskn = function maskn (bits) {
21668 return this.clone().imaskn(bits);
21671 // Add plain number `num` to `this`
21672 BN.prototype.iaddn = function iaddn (num) {
21673 assert(typeof num === 'number');
21674 assert(num <
0x4000000);
21675 if (num <
0) return this.isubn(-num);
21677 // Possible sign change
21678 if (this.negative !==
0) {
21679 if (this.length ===
1 && (this.words[
0] |
0) < num) {
21680 this.words[
0] = num - (this.words[
0] |
0);
21691 // Add without checks
21692 return this._iaddn(num);
21695 BN.prototype._iaddn = function _iaddn (num) {
21696 this.words[
0] += num;
21699 for (var i =
0; i < this.length && this.words[i]
>=
0x4000000; i++) {
21700 this.words[i] -=
0x4000000;
21701 if (i === this.length -
1) {
21702 this.words[i +
1] =
1;
21704 this.words[i +
1]++;
21707 this.length = Math.max(this.length, i +
1);
21712 // Subtract plain number `num` from `this`
21713 BN.prototype.isubn = function isubn (num) {
21714 assert(typeof num === 'number');
21715 assert(num <
0x4000000);
21716 if (num <
0) return this.iaddn(-num);
21718 if (this.negative !==
0) {
21725 this.words[
0] -= num;
21727 if (this.length ===
1 && this.words[
0] <
0) {
21728 this.words[
0] = -this.words[
0];
21732 for (var i =
0; i < this.length && this.words[i] <
0; i++) {
21733 this.words[i] +=
0x4000000;
21734 this.words[i +
1] -=
1;
21738 return this.strip();
21741 BN.prototype.addn = function addn (num) {
21742 return this.clone().iaddn(num);
21745 BN.prototype.subn = function subn (num) {
21746 return this.clone().isubn(num);
21749 BN.prototype.iabs = function iabs () {
21755 BN.prototype.abs = function abs () {
21756 return this.clone().iabs();
21759 BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {
21760 var len = num.length + shift;
21767 for (i =
0; i < num.length; i++) {
21768 w = (this.words[i + shift] |
0) + carry;
21769 var right = (num.words[i] |
0) * mul;
21770 w -= right &
0x3ffffff;
21771 carry = (w
>> 26) - ((right /
0x4000000) |
0);
21772 this.words[i + shift] = w &
0x3ffffff;
21774 for (; i < this.length - shift; i++) {
21775 w = (this.words[i + shift] |
0) + carry;
21777 this.words[i + shift] = w &
0x3ffffff;
21780 if (carry ===
0) return this.strip();
21782 // Subtraction overflow
21783 assert(carry === -
1);
21785 for (i =
0; i < this.length; i++) {
21786 w = -(this.words[i] |
0) + carry;
21788 this.words[i] = w &
0x3ffffff;
21792 return this.strip();
21795 BN.prototype._wordDiv = function _wordDiv (num, mode) {
21796 var shift = this.length - num.length;
21798 var a = this.clone();
21802 var bhi = b.words[b.length -
1] |
0;
21803 var bhiBits = this._countBits(bhi);
21804 shift =
26 - bhiBits;
21806 b = b.ushln(shift);
21808 bhi = b.words[b.length -
1] |
0;
21811 // Initialize quotient
21812 var m = a.length - b.length;
21815 if (mode !== 'mod') {
21818 q.words = new Array(q.length);
21819 for (var i =
0; i < q.length; i++) {
21824 var diff = a.clone()._ishlnsubmul(b,
1, m);
21825 if (diff.negative ===
0) {
21832 for (var j = m -
1; j
>=
0; j--) {
21833 var qj = (a.words[b.length + j] |
0) *
0x4000000 +
21834 (a.words[b.length + j -
1] |
0);
21836 // NOTE: (qj / bhi) is (
0x3ffffff *
0x4000000 +
0x3ffffff) /
0x2000000 max
21838 qj = Math.min((qj / bhi) |
0,
0x3ffffff);
21840 a._ishlnsubmul(b, qj, j);
21841 while (a.negative !==
0) {
21844 a._ishlnsubmul(b,
1, j);
21859 if (mode !== 'div' && shift !==
0) {
21869 // NOTE:
1) `mode` can be set to `mod` to request mod only,
21870 // to `div` to request div only, or be absent to
21871 // request both div & mod
21872 //
2) `positive` is true if unsigned mod is requested
21873 BN.prototype.divmod = function divmod (num, mode, positive) {
21874 assert(!num.isZero());
21876 if (this.isZero()) {
21884 if (this.negative !==
0 && num.negative ===
0) {
21885 res = this.neg().divmod(num, mode);
21887 if (mode !== 'mod') {
21888 div = res.div.neg();
21891 if (mode !== 'div') {
21892 mod = res.mod.neg();
21893 if (positive && mod.negative !==
0) {
21904 if (this.negative ===
0 && num.negative !==
0) {
21905 res = this.divmod(num.neg(), mode);
21907 if (mode !== 'mod') {
21908 div = res.div.neg();
21917 if ((this.negative & num.negative) !==
0) {
21918 res = this.neg().divmod(num.neg(), mode);
21920 if (mode !== 'div') {
21921 mod = res.mod.neg();
21922 if (positive && mod.negative !==
0) {
21933 // Both numbers are positive at this point
21935 // Strip both numbers to approximate shift value
21936 if (num.length
> this.length || this.cmp(num) <
0) {
21943 // Very short reduction
21944 if (num.length ===
1) {
21945 if (mode === 'div') {
21947 div: this.divn(num.words[
0]),
21952 if (mode === 'mod') {
21955 mod: new BN(this.modn(num.words[
0]))
21960 div: this.divn(num.words[
0]),
21961 mod: new BN(this.modn(num.words[
0]))
21965 return this._wordDiv(num, mode);
21968 // Find `this` / `num`
21969 BN.prototype.div = function div (num) {
21970 return this.divmod(num, 'div', false).div;
21973 // Find `this` % `num`
21974 BN.prototype.mod = function mod (num) {
21975 return this.divmod(num, 'mod', false).mod;
21978 BN.prototype.umod = function umod (num) {
21979 return this.divmod(num, 'mod', true).mod;
21982 // Find Round(`this` / `num`)
21983 BN.prototype.divRound = function divRound (num) {
21984 var dm = this.divmod(num);
21986 // Fast case - exact division
21987 if (dm.mod.isZero()) return dm.div;
21989 var mod = dm.div.negative !==
0 ? dm.mod.isub(num) : dm.mod;
21991 var half = num.ushrn(
1);
21992 var r2 = num.andln(
1);
21993 var cmp = mod.cmp(half);
21996 if (cmp <
0 || r2 ===
1 && cmp ===
0) return dm.div;
21999 return dm.div.negative !==
0 ? dm.div.isubn(
1) : dm.div.iaddn(
1);
22002 BN.prototype.modn = function modn (num) {
22003 assert(num <=
0x3ffffff);
22004 var p = (
1 <<
26) % num;
22007 for (var i = this.length -
1; i
>=
0; i--) {
22008 acc = (p * acc + (this.words[i] |
0)) % num;
22014 // In-place division by number
22015 BN.prototype.idivn = function idivn (num) {
22016 assert(num <=
0x3ffffff);
22019 for (var i = this.length -
1; i
>=
0; i--) {
22020 var w = (this.words[i] |
0) + carry *
0x4000000;
22021 this.words[i] = (w / num) |
0;
22025 return this.strip();
22028 BN.prototype.divn = function divn (num) {
22029 return this.clone().idivn(num);
22032 BN.prototype.egcd = function egcd (p) {
22033 assert(p.negative ===
0);
22034 assert(!p.isZero());
22039 if (x.negative !==
0) {
22045 // A * x + B * y = x
22049 // C * x + D * y = y
22055 while (x.isEven() && y.isEven()) {
22061 var yp = y.clone();
22062 var xp = x.clone();
22064 while (!x.isZero()) {
22065 for (var i =
0, im =
1; (x.words[
0] & im) ===
0 && i <
26; ++i, im <<=
1);
22069 if (A.isOdd() || B.isOdd()) {
22079 for (var j =
0, jm =
1; (y.words[
0] & jm) ===
0 && j <
26; ++j, jm <<=
1);
22083 if (C.isOdd() || D.isOdd()) {
22093 if (x.cmp(y)
>=
0) {
22111 // This is reduced incarnation of the binary EEA
22112 // above, designated to invert members of the
22113 // _prime_ fields F(p) at a maximal speed
22114 BN.prototype._invmp = function _invmp (p) {
22115 assert(p.negative ===
0);
22116 assert(!p.isZero());
22121 if (a.negative !==
0) {
22127 var x1 = new BN(
1);
22128 var x2 = new BN(
0);
22130 var delta = b.clone();
22132 while (a.cmpn(
1)
> 0 && b.cmpn(
1)
> 0) {
22133 for (var i =
0, im =
1; (a.words[
0] & im) ===
0 && i <
26; ++i, im <<=
1);
22145 for (var j =
0, jm =
1; (b.words[
0] & jm) ===
0 && j <
26; ++j, jm <<=
1);
22157 if (a.cmp(b)
>=
0) {
22167 if (a.cmpn(
1) ===
0) {
22173 if (res.cmpn(
0) <
0) {
22180 BN.prototype.gcd = function gcd (num) {
22181 if (this.isZero()) return num.abs();
22182 if (num.isZero()) return this.abs();
22184 var a = this.clone();
22185 var b = num.clone();
22189 // Remove common factor of two
22190 for (var shift =
0; a.isEven() && b.isEven(); shift++) {
22196 while (a.isEven()) {
22199 while (b.isEven()) {
22205 // Swap `a` and `b` to make `a` always bigger than `b`
22209 } else if (r ===
0 || b.cmpn(
1) ===
0) {
22216 return b.iushln(shift);
22219 // Invert number in the field F(num)
22220 BN.prototype.invm = function invm (num) {
22221 return this.egcd(num).a.umod(num);
22224 BN.prototype.isEven = function isEven () {
22225 return (this.words[
0] &
1) ===
0;
22228 BN.prototype.isOdd = function isOdd () {
22229 return (this.words[
0] &
1) ===
1;
22232 // And first word and num
22233 BN.prototype.andln = function andln (num) {
22234 return this.words[
0] & num;
22237 // Increment at the bit position in-line
22238 BN.prototype.bincn = function bincn (bit) {
22239 assert(typeof bit === 'number');
22241 var s = (bit - r) /
26;
22244 // Fast case: bit is much higher than all existing words
22245 if (this.length <= s) {
22246 this._expand(s +
1);
22247 this.words[s] |= q;
22251 // Add bit and propagate, if needed
22253 for (var i = s; carry !==
0 && i < this.length; i++) {
22254 var w = this.words[i] |
0;
22261 this.words[i] = carry;
22267 BN.prototype.isZero = function isZero () {
22268 return this.length ===
1 && this.words[
0] ===
0;
22271 BN.prototype.cmpn = function cmpn (num) {
22272 var negative = num <
0;
22274 if (this.negative !==
0 && !negative) return -
1;
22275 if (this.negative ===
0 && negative) return
1;
22280 if (this.length
> 1) {
22287 assert(num <=
0x3ffffff, 'Number is too big');
22289 var w = this.words[
0] |
0;
22290 res = w === num ?
0 : w < num ? -
1 :
1;
22292 if (this.negative !==
0) return -res |
0;
22296 // Compare two numbers and return:
22297 //
1 - if `this`
> `num`
22298 //
0 - if `this` == `num`
22299 // -
1 - if `this` < `num`
22300 BN.prototype.cmp = function cmp (num) {
22301 if (this.negative !==
0 && num.negative ===
0) return -
1;
22302 if (this.negative ===
0 && num.negative !==
0) return
1;
22304 var res = this.ucmp(num);
22305 if (this.negative !==
0) return -res |
0;
22309 // Unsigned comparison
22310 BN.prototype.ucmp = function ucmp (num) {
22311 // At this point both numbers have the same sign
22312 if (this.length
> num.length) return
1;
22313 if (this.length < num.length) return -
1;
22316 for (var i = this.length -
1; i
>=
0; i--) {
22317 var a = this.words[i] |
0;
22318 var b = num.words[i] |
0;
22320 if (a === b) continue;
22323 } else if (a
> b) {
22331 BN.prototype.gtn = function gtn (num) {
22332 return this.cmpn(num) ===
1;
22335 BN.prototype.gt = function gt (num) {
22336 return this.cmp(num) ===
1;
22339 BN.prototype.gten = function gten (num) {
22340 return this.cmpn(num)
>=
0;
22343 BN.prototype.gte = function gte (num) {
22344 return this.cmp(num)
>=
0;
22347 BN.prototype.ltn = function ltn (num) {
22348 return this.cmpn(num) === -
1;
22351 BN.prototype.lt = function lt (num) {
22352 return this.cmp(num) === -
1;
22355 BN.prototype.lten = function lten (num) {
22356 return this.cmpn(num) <=
0;
22359 BN.prototype.lte = function lte (num) {
22360 return this.cmp(num) <=
0;
22363 BN.prototype.eqn = function eqn (num) {
22364 return this.cmpn(num) ===
0;
22367 BN.prototype.eq = function eq (num) {
22368 return this.cmp(num) ===
0;
22372 // A reduce context, could be using montgomery or something better, depending
22373 // on the `m` itself.
22375 BN.red = function red (num) {
22376 return new Red(num);
22379 BN.prototype.toRed = function toRed (ctx) {
22380 assert(!this.red, 'Already a number in reduction context');
22381 assert(this.negative ===
0, 'red works only with positives');
22382 return ctx.convertTo(this)._forceRed(ctx);
22385 BN.prototype.fromRed = function fromRed () {
22386 assert(this.red, 'fromRed works only with numbers in reduction context');
22387 return this.red.convertFrom(this);
22390 BN.prototype._forceRed = function _forceRed (ctx) {
22395 BN.prototype.forceRed = function forceRed (ctx) {
22396 assert(!this.red, 'Already a number in reduction context');
22397 return this._forceRed(ctx);
22400 BN.prototype.redAdd = function redAdd (num) {
22401 assert(this.red, 'redAdd works only with red numbers');
22402 return this.red.add(this, num);
22405 BN.prototype.redIAdd = function redIAdd (num) {
22406 assert(this.red, 'redIAdd works only with red numbers');
22407 return this.red.iadd(this, num);
22410 BN.prototype.redSub = function redSub (num) {
22411 assert(this.red, 'redSub works only with red numbers');
22412 return this.red.sub(this, num);
22415 BN.prototype.redISub = function redISub (num) {
22416 assert(this.red, 'redISub works only with red numbers');
22417 return this.red.isub(this, num);
22420 BN.prototype.redShl = function redShl (num) {
22421 assert(this.red, 'redShl works only with red numbers');
22422 return this.red.shl(this, num);
22425 BN.prototype.redMul = function redMul (num) {
22426 assert(this.red, 'redMul works only with red numbers');
22427 this.red._verify2(this, num);
22428 return this.red.mul(this, num);
22431 BN.prototype.redIMul = function redIMul (num) {
22432 assert(this.red, 'redMul works only with red numbers');
22433 this.red._verify2(this, num);
22434 return this.red.imul(this, num);
22437 BN.prototype.redSqr = function redSqr () {
22438 assert(this.red, 'redSqr works only with red numbers');
22439 this.red._verify1(this);
22440 return this.red.sqr(this);
22443 BN.prototype.redISqr = function redISqr () {
22444 assert(this.red, 'redISqr works only with red numbers');
22445 this.red._verify1(this);
22446 return this.red.isqr(this);
22449 // Square root over p
22450 BN.prototype.redSqrt = function redSqrt () {
22451 assert(this.red, 'redSqrt works only with red numbers');
22452 this.red._verify1(this);
22453 return this.red.sqrt(this);
22456 BN.prototype.redInvm = function redInvm () {
22457 assert(this.red, 'redInvm works only with red numbers');
22458 this.red._verify1(this);
22459 return this.red.invm(this);
22462 // Return negative clone of `this` % `red modulo`
22463 BN.prototype.redNeg = function redNeg () {
22464 assert(this.red, 'redNeg works only with red numbers');
22465 this.red._verify1(this);
22466 return this.red.neg(this);
22469 BN.prototype.redPow = function redPow (num) {
22470 assert(this.red && !num.red, 'redPow(normalNum)');
22471 this.red._verify1(this);
22472 return this.red.pow(this, num);
22475 // Prime numbers with efficient reduction
22483 // Pseudo-Mersenne prime
22484 function MPrime (name, p) {
22487 this.p = new BN(p,
16);
22488 this.n = this.p.bitLength();
22489 this.k = new BN(
1).iushln(this.n).isub(this.p);
22491 this.tmp = this._tmp();
22494 MPrime.prototype._tmp = function _tmp () {
22495 var tmp = new BN(null);
22496 tmp.words = new Array(Math.ceil(this.n /
13));
22500 MPrime.prototype.ireduce = function ireduce (num) {
22501 // Assumes that `num` is less than `P^
2`
22502 // num = HI * (
2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)
22507 this.split(r, this.tmp);
22509 r = r.iadd(this.tmp);
22510 rlen = r.bitLength();
22511 } while (rlen
> this.n);
22513 var cmp = rlen < this.n ? -
1 : r.ucmp(this.p);
22517 } else if (cmp
> 0) {
22526 MPrime.prototype.split = function split (input, out) {
22527 input.iushrn(this.n,
0, out);
22530 MPrime.prototype.imulK = function imulK (num) {
22531 return num.imul(this.k);
22538 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');
22540 inherits(K256, MPrime);
22542 K256.prototype.split = function split (input, output) {
22543 //
256 =
9 *
26 +
22
22544 var mask =
0x3fffff;
22546 var outLen = Math.min(input.length,
9);
22547 for (var i =
0; i < outLen; i++) {
22548 output.words[i] = input.words[i];
22550 output.length = outLen;
22552 if (input.length <=
9) {
22553 input.words[
0] =
0;
22558 // Shift by
9 limbs
22559 var prev = input.words[
9];
22560 output.words[output.length++] = prev & mask;
22562 for (i =
10; i < input.length; i++) {
22563 var next = input.words[i] |
0;
22564 input.words[i -
10] = ((next & mask) <<
4) | (prev
>>> 22);
22568 input.words[i -
10] = prev;
22569 if (prev ===
0 && input.length
> 10) {
22570 input.length -=
10;
22576 K256.prototype.imulK = function imulK (num) {
22577 // K =
0x1000003d1 = [
0x40,
0x3d1 ]
22578 num.words[num.length] =
0;
22579 num.words[num.length +
1] =
0;
22582 // bounded at:
0x40 *
0x3ffffff +
0x3d0 =
0x100000390
22584 for (var i =
0; i < num.length; i++) {
22585 var w = num.words[i] |
0;
22587 num.words[i] = lo &
0x3ffffff;
22588 lo = w *
0x40 + ((lo /
0x4000000) |
0);
22591 // Fast length reduction
22592 if (num.words[num.length -
1] ===
0) {
22594 if (num.words[num.length -
1] ===
0) {
22605 'ffffffff ffffffff ffffffff ffffffff
00000000 00000000 00000001');
22607 inherits(P224, MPrime);
22613 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');
22615 inherits(P192, MPrime);
22617 function P25519 () {
22622 '
7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');
22624 inherits(P25519, MPrime);
22626 P25519.prototype.imulK = function imulK (num) {
22629 for (var i =
0; i < num.length; i++) {
22630 var hi = (num.words[i] |
0) *
0x13 + carry;
22631 var lo = hi &
0x3ffffff;
22638 num.words[num.length++] = carry;
22643 // Exported mostly for testing purposes, use plain name instead
22644 BN._prime = function prime (name) {
22645 // Cached version of prime
22646 if (primes[name]) return primes[name];
22649 if (name === 'k256') {
22650 prime = new K256();
22651 } else if (name === 'p224') {
22652 prime = new P224();
22653 } else if (name === 'p192') {
22654 prime = new P192();
22655 } else if (name === 'p25519') {
22656 prime = new P25519();
22658 throw new Error('Unknown prime ' + name);
22660 primes[name] = prime;
22666 // Base reduction engine
22669 if (typeof m === 'string') {
22670 var prime = BN._prime(m);
22672 this.prime = prime;
22674 assert(m.gtn(
1), 'modulus must be greater than
1');
22680 Red.prototype._verify1 = function _verify1 (a) {
22681 assert(a.negative ===
0, 'red works only with positives');
22682 assert(a.red, 'red works only with red numbers');
22685 Red.prototype._verify2 = function _verify2 (a, b) {
22686 assert((a.negative | b.negative) ===
0, 'red works only with positives');
22687 assert(a.red && a.red === b.red,
22688 'red works only with red numbers');
22691 Red.prototype.imod = function imod (a) {
22692 if (this.prime) return this.prime.ireduce(a)._forceRed(this);
22693 return a.umod(this.m)._forceRed(this);
22696 Red.prototype.neg = function neg (a) {
22701 return this.m.sub(a)._forceRed(this);
22704 Red.prototype.add = function add (a, b) {
22705 this._verify2(a, b);
22707 var res = a.add(b);
22708 if (res.cmp(this.m)
>=
0) {
22711 return res._forceRed(this);
22714 Red.prototype.iadd = function iadd (a, b) {
22715 this._verify2(a, b);
22717 var res = a.iadd(b);
22718 if (res.cmp(this.m)
>=
0) {
22724 Red.prototype.sub = function sub (a, b) {
22725 this._verify2(a, b);
22727 var res = a.sub(b);
22728 if (res.cmpn(
0) <
0) {
22731 return res._forceRed(this);
22734 Red.prototype.isub = function isub (a, b) {
22735 this._verify2(a, b);
22737 var res = a.isub(b);
22738 if (res.cmpn(
0) <
0) {
22744 Red.prototype.shl = function shl (a, num) {
22746 return this.imod(a.ushln(num));
22749 Red.prototype.imul = function imul (a, b) {
22750 this._verify2(a, b);
22751 return this.imod(a.imul(b));
22754 Red.prototype.mul = function mul (a, b) {
22755 this._verify2(a, b);
22756 return this.imod(a.mul(b));
22759 Red.prototype.isqr = function isqr (a) {
22760 return this.imul(a, a.clone());
22763 Red.prototype.sqr = function sqr (a) {
22764 return this.mul(a, a);
22767 Red.prototype.sqrt = function sqrt (a) {
22768 if (a.isZero()) return a.clone();
22770 var mod3 = this.m.andln(
3);
22771 assert(mod3 %
2 ===
1);
22775 var pow = this.m.add(new BN(
1)).iushrn(
2);
22776 return this.pow(a, pow);
22779 // Tonelli-Shanks algorithm (Totally unoptimized and slow)
22781 // Find Q and S, that Q *
2 ^ S = (P -
1)
22782 var q = this.m.subn(
1);
22784 while (!q.isZero() && q.andln(
1) ===
0) {
22788 assert(!q.isZero());
22790 var one = new BN(
1).toRed(this);
22791 var nOne = one.redNeg();
22793 // Find quadratic non-residue
22794 // NOTE: Max is such because of generalized Riemann hypothesis.
22795 var lpow = this.m.subn(
1).iushrn(
1);
22796 var z = this.m.bitLength();
22797 z = new BN(
2 * z * z).toRed(this);
22799 while (this.pow(z, lpow).cmp(nOne) !==
0) {
22803 var c = this.pow(z, q);
22804 var r = this.pow(a, q.addn(
1).iushrn(
1));
22805 var t = this.pow(a, q);
22807 while (t.cmp(one) !==
0) {
22809 for (var i =
0; tmp.cmp(one) !==
0; i++) {
22810 tmp = tmp.redSqr();
22813 var b = this.pow(c, new BN(
1).iushln(m - i -
1));
22824 Red.prototype.invm = function invm (a) {
22825 var inv = a._invmp(this.m);
22826 if (inv.negative !==
0) {
22828 return this.imod(inv).redNeg();
22830 return this.imod(inv);
22834 Red.prototype.pow = function pow (a, num) {
22835 if (num.isZero()) return new BN(
1);
22836 if (num.cmpn(
1) ===
0) return a.clone();
22838 var windowSize =
4;
22839 var wnd = new Array(
1 << windowSize);
22840 wnd[
0] = new BN(
1).toRed(this);
22842 for (var i =
2; i < wnd.length; i++) {
22843 wnd[i] = this.mul(wnd[i -
1], a);
22848 var currentLen =
0;
22849 var start = num.bitLength() %
26;
22854 for (i = num.length -
1; i
>=
0; i--) {
22855 var word = num.words[i];
22856 for (var j = start -
1; j
>=
0; j--) {
22857 var bit = (word
>> j) &
1;
22858 if (res !== wnd[
0]) {
22859 res = this.sqr(res);
22862 if (bit ===
0 && current ===
0) {
22870 if (currentLen !== windowSize && (i !==
0 || j !==
0)) continue;
22872 res = this.mul(res, wnd[current]);
22882 Red.prototype.convertTo = function convertTo (num) {
22883 var r = num.umod(this.m);
22885 return r === num ? r.clone() : r;
22888 Red.prototype.convertFrom = function convertFrom (num) {
22889 var res = num.clone();
22895 // Montgomery method engine
22898 BN.mont = function mont (num) {
22899 return new Mont(num);
22902 function Mont (m) {
22905 this.shift = this.m.bitLength();
22906 if (this.shift %
26 !==
0) {
22907 this.shift +=
26 - (this.shift %
26);
22910 this.r = new BN(
1).iushln(this.shift);
22911 this.r2 = this.imod(this.r.sqr());
22912 this.rinv = this.r._invmp(this.m);
22914 this.minv = this.rinv.mul(this.r).isubn(
1).div(this.m);
22915 this.minv = this.minv.umod(this.r);
22916 this.minv = this.r.sub(this.minv);
22918 inherits(Mont, Red);
22920 Mont.prototype.convertTo = function convertTo (num) {
22921 return this.imod(num.ushln(this.shift));
22924 Mont.prototype.convertFrom = function convertFrom (num) {
22925 var r = this.imod(num.mul(this.rinv));
22930 Mont.prototype.imul = function imul (a, b) {
22931 if (a.isZero() || b.isZero()) {
22938 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
22939 var u = t.isub(c).iushrn(this.shift);
22942 if (u.cmp(this.m)
>=
0) {
22943 res = u.isub(this.m);
22944 } else if (u.cmpn(
0) <
0) {
22945 res = u.iadd(this.m);
22948 return res._forceRed(this);
22951 Mont.prototype.mul = function mul (a, b) {
22952 if (a.isZero() || b.isZero()) return new BN(
0)._forceRed(this);
22955 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
22956 var u = t.isub(c).iushrn(this.shift);
22958 if (u.cmp(this.m)
>=
0) {
22959 res = u.isub(this.m);
22960 } else if (u.cmpn(
0) <
0) {
22961 res = u.iadd(this.m);
22964 return res._forceRed(this);
22967 Mont.prototype.invm = function invm (a) {
22968 // (AR)^-
1 * R^
2 = (A^-
1 * R^-
1) * R^
2 = A^-
1 * R
22969 var res = this.imod(a._invmp(this.m).mul(this.r2));
22970 return res._forceRed(this);
22972 })(typeof module === 'undefined' || module, this);
22974 },{}],
82:[function(require,module,exports){
22977 module.exports = function rand(len) {
22979 r = new Rand(null);
22981 return r.generate(len);
22984 function Rand(rand) {
22987 module.exports.Rand = Rand;
22989 Rand.prototype.generate = function generate(len) {
22990 return this._rand(len);
22993 // Emulate crypto API using randy
22994 Rand.prototype._rand = function _rand(n) {
22995 if (this.rand.getBytes)
22996 return this.rand.getBytes(n);
22998 var res = new Uint8Array(n);
22999 for (var i =
0; i < res.length; i++)
23000 res[i] = this.rand.getByte();
23004 if (typeof self === 'object') {
23005 if (self.crypto && self.crypto.getRandomValues) {
23007 Rand.prototype._rand = function _rand(n) {
23008 var arr = new Uint8Array(n);
23009 self.crypto.getRandomValues(arr);
23012 } else if (self.msCrypto && self.msCrypto.getRandomValues) {
23014 Rand.prototype._rand = function _rand(n) {
23015 var arr = new Uint8Array(n);
23016 self.msCrypto.getRandomValues(arr);
23020 // Safari's WebWorkers do not have `crypto`
23021 } else if (typeof window === 'object') {
23023 Rand.prototype._rand = function() {
23024 throw new Error('Not implemented yet');
23028 // Node.js or Web worker with no crypto support
23030 var crypto = require('crypto');
23031 if (typeof crypto.randomBytes !== 'function')
23032 throw new Error('Not supported');
23034 Rand.prototype._rand = function _rand(n) {
23035 return crypto.randomBytes(n);
23041 },{"crypto":
3}],
83:[function(require,module,exports){
23042 var basex = require('base-x')
23043 var ALPHABET = '
123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
23045 module.exports = basex(ALPHABET)
23047 },{"base-x":
35}],
84:[function(require,module,exports){
23048 (function (Buffer){
23051 var base58 = require('bs58')
23053 module.exports = function (checksumFn) {
23054 // Encode a buffer as a base58-check encoded string
23055 function encode (payload) {
23056 var checksum = checksumFn(payload)
23058 return base58.encode(Buffer.concat([
23061 ], payload.length +
4))
23064 function decodeRaw (buffer) {
23065 var payload = buffer.slice(
0, -
4)
23066 var checksum = buffer.slice(-
4)
23067 var newChecksum = checksumFn(payload)
23069 if (checksum[
0] ^ newChecksum[
0] |
23070 checksum[
1] ^ newChecksum[
1] |
23071 checksum[
2] ^ newChecksum[
2] |
23072 checksum[
3] ^ newChecksum[
3]) return
23077 // Decode a base58-check encoded string to a buffer, no result if checksum is wrong
23078 function decodeUnsafe (string) {
23079 var buffer = base58.decodeUnsafe(string)
23080 if (!buffer) return
23082 return decodeRaw(buffer)
23085 function decode (string) {
23086 var buffer = base58.decode(string)
23087 var payload = decodeRaw(buffer, checksumFn)
23088 if (!payload) throw new Error('Invalid checksum')
23095 decodeUnsafe: decodeUnsafe
23099 }).call(this,require("buffer").Buffer)
23100 },{"bs58":
83,"buffer":
5}],
85:[function(require,module,exports){
23103 var createHash = require('create-hash')
23104 var bs58checkBase = require('./base')
23106 // SHA256(SHA256(buffer))
23107 function sha256x2 (buffer) {
23108 var tmp = createHash('sha256').update(buffer).digest()
23109 return createHash('sha256').update(tmp).digest()
23112 module.exports = bs58checkBase(sha256x2)
23114 },{"./base":
84,"create-hash":
87}],
86:[function(require,module,exports){
23115 var Buffer = require('safe-buffer').Buffer
23116 var Transform = require('stream').Transform
23117 var StringDecoder = require('string_decoder').StringDecoder
23118 var inherits = require('inherits')
23120 function CipherBase (hashMode) {
23121 Transform.call(this)
23122 this.hashMode = typeof hashMode === 'string'
23123 if (this.hashMode) {
23124 this[hashMode] = this._finalOrDigest
23126 this.final = this._finalOrDigest
23129 this.__final = this._final
23132 this._decoder = null
23133 this._encoding = null
23135 inherits(CipherBase, Transform)
23137 CipherBase.prototype.update = function (data, inputEnc, outputEnc) {
23138 if (typeof data === 'string') {
23139 data = Buffer.from(data, inputEnc)
23142 var outData = this._update(data)
23143 if (this.hashMode) return this
23146 outData = this._toString(outData, outputEnc)
23152 CipherBase.prototype.setAutoPadding = function () {}
23153 CipherBase.prototype.getAuthTag = function () {
23154 throw new Error('trying to get auth tag in unsupported state')
23157 CipherBase.prototype.setAuthTag = function () {
23158 throw new Error('trying to set auth tag in unsupported state')
23161 CipherBase.prototype.setAAD = function () {
23162 throw new Error('trying to set aad in unsupported state')
23165 CipherBase.prototype._transform = function (data, _, next) {
23168 if (this.hashMode) {
23171 this.push(this._update(data))
23179 CipherBase.prototype._flush = function (done) {
23182 this.push(this.__final())
23189 CipherBase.prototype._finalOrDigest = function (outputEnc) {
23190 var outData = this.__final() || Buffer.alloc(
0)
23192 outData = this._toString(outData, outputEnc, true)
23197 CipherBase.prototype._toString = function (value, enc, fin) {
23198 if (!this._decoder) {
23199 this._decoder = new StringDecoder(enc)
23200 this._encoding = enc
23203 if (this._encoding !== enc) throw new Error('can\'t switch encodings')
23205 var out = this._decoder.write(value)
23207 out += this._decoder.end()
23213 module.exports = CipherBase
23215 },{"inherits":
121,"safe-buffer":
128,"stream":
28,"string_decoder":
29}],
87:[function(require,module,exports){
23216 (function (Buffer){
23218 var inherits = require('inherits')
23219 var md5 = require('./md5')
23220 var RIPEMD160 = require('ripemd160')
23221 var sha = require('sha.js')
23223 var Base = require('cipher-base')
23225 function HashNoConstructor (hash) {
23226 Base.call(this, 'digest')
23232 inherits(HashNoConstructor, Base)
23234 HashNoConstructor.prototype._update = function (data) {
23235 this.buffers.push(data)
23238 HashNoConstructor.prototype._final = function () {
23239 var buf = Buffer.concat(this.buffers)
23240 var r = this._hash(buf)
23241 this.buffers = null
23246 function Hash (hash) {
23247 Base.call(this, 'digest')
23252 inherits(Hash, Base)
23254 Hash.prototype._update = function (data) {
23255 this._hash.update(data)
23258 Hash.prototype._final = function () {
23259 return this._hash.digest()
23262 module.exports = function createHash (alg) {
23263 alg = alg.toLowerCase()
23264 if (alg === 'md5') return new HashNoConstructor(md5)
23265 if (alg === 'rmd160' || alg === 'ripemd160') return new Hash(new RIPEMD160())
23267 return new Hash(sha(alg))
23270 }).call(this,require("buffer").Buffer)
23271 },{"./md5":
89,"buffer":
5,"cipher-base":
86,"inherits":
121,"ripemd160":
127,"sha.js":
130}],
88:[function(require,module,exports){
23272 (function (Buffer){
23275 var zeroBuffer = new Buffer(intSize)
23281 function toArray (buf) {
23282 if ((buf.length % intSize) !==
0) {
23283 var len = buf.length + (intSize - (buf.length % intSize))
23284 buf = Buffer.concat([buf, zeroBuffer], len)
23287 var arr = new Array(buf.length
>>> 2)
23288 for (var i =
0, j =
0; i < buf.length; i += intSize, j++) {
23289 arr[j] = buf.readInt32LE(i)
23295 module.exports = function hash (buf, fn) {
23296 var arr = fn(toArray(buf), buf.length * charSize)
23297 buf = new Buffer(hashSize)
23298 for (var i =
0; i < arr.length; i++) {
23299 buf.writeInt32LE(arr[i], i <<
2, true)
23304 }).call(this,require(
"buffer").Buffer)
23305 },{
"buffer":
5}],
89:[function(require,module,exports){
23308 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
23309 * Digest Algorithm, as defined in RFC
1321.
23310 * Version
2.1 Copyright (C) Paul Johnston
1999 -
2002.
23311 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
23312 * Distributed under the BSD License
23313 * See http://pajhome.org.uk/crypt/md5 for more info.
23316 var makeHash = require('./make-hash')
23319 * Calculate the MD5 of an array of little-endian words, and a bit length
23321 function core_md5 (x, len) {
23322 /* append padding */
23323 x[len
>> 5] |=
0x80 << ((len) %
32)
23324 x[(((len +
64)
>>> 9) <<
4) +
14] = len
23328 var c = -
1732584194
23331 for (var i =
0; i < x.length; i +=
16) {
23337 a = md5_ff(a, b, c, d, x[i +
0],
7, -
680876936)
23338 d = md5_ff(d, a, b, c, x[i +
1],
12, -
389564586)
23339 c = md5_ff(c, d, a, b, x[i +
2],
17,
606105819)
23340 b = md5_ff(b, c, d, a, x[i +
3],
22, -
1044525330)
23341 a = md5_ff(a, b, c, d, x[i +
4],
7, -
176418897)
23342 d = md5_ff(d, a, b, c, x[i +
5],
12,
1200080426)
23343 c = md5_ff(c, d, a, b, x[i +
6],
17, -
1473231341)
23344 b = md5_ff(b, c, d, a, x[i +
7],
22, -
45705983)
23345 a = md5_ff(a, b, c, d, x[i +
8],
7,
1770035416)
23346 d = md5_ff(d, a, b, c, x[i +
9],
12, -
1958414417)
23347 c = md5_ff(c, d, a, b, x[i +
10],
17, -
42063)
23348 b = md5_ff(b, c, d, a, x[i +
11],
22, -
1990404162)
23349 a = md5_ff(a, b, c, d, x[i +
12],
7,
1804603682)
23350 d = md5_ff(d, a, b, c, x[i +
13],
12, -
40341101)
23351 c = md5_ff(c, d, a, b, x[i +
14],
17, -
1502002290)
23352 b = md5_ff(b, c, d, a, x[i +
15],
22,
1236535329)
23354 a = md5_gg(a, b, c, d, x[i +
1],
5, -
165796510)
23355 d = md5_gg(d, a, b, c, x[i +
6],
9, -
1069501632)
23356 c = md5_gg(c, d, a, b, x[i +
11],
14,
643717713)
23357 b = md5_gg(b, c, d, a, x[i +
0],
20, -
373897302)
23358 a = md5_gg(a, b, c, d, x[i +
5],
5, -
701558691)
23359 d = md5_gg(d, a, b, c, x[i +
10],
9,
38016083)
23360 c = md5_gg(c, d, a, b, x[i +
15],
14, -
660478335)
23361 b = md5_gg(b, c, d, a, x[i +
4],
20, -
405537848)
23362 a = md5_gg(a, b, c, d, x[i +
9],
5,
568446438)
23363 d = md5_gg(d, a, b, c, x[i +
14],
9, -
1019803690)
23364 c = md5_gg(c, d, a, b, x[i +
3],
14, -
187363961)
23365 b = md5_gg(b, c, d, a, x[i +
8],
20,
1163531501)
23366 a = md5_gg(a, b, c, d, x[i +
13],
5, -
1444681467)
23367 d = md5_gg(d, a, b, c, x[i +
2],
9, -
51403784)
23368 c = md5_gg(c, d, a, b, x[i +
7],
14,
1735328473)
23369 b = md5_gg(b, c, d, a, x[i +
12],
20, -
1926607734)
23371 a = md5_hh(a, b, c, d, x[i +
5],
4, -
378558)
23372 d = md5_hh(d, a, b, c, x[i +
8],
11, -
2022574463)
23373 c = md5_hh(c, d, a, b, x[i +
11],
16,
1839030562)
23374 b = md5_hh(b, c, d, a, x[i +
14],
23, -
35309556)
23375 a = md5_hh(a, b, c, d, x[i +
1],
4, -
1530992060)
23376 d = md5_hh(d, a, b, c, x[i +
4],
11,
1272893353)
23377 c = md5_hh(c, d, a, b, x[i +
7],
16, -
155497632)
23378 b = md5_hh(b, c, d, a, x[i +
10],
23, -
1094730640)
23379 a = md5_hh(a, b, c, d, x[i +
13],
4,
681279174)
23380 d = md5_hh(d, a, b, c, x[i +
0],
11, -
358537222)
23381 c = md5_hh(c, d, a, b, x[i +
3],
16, -
722521979)
23382 b = md5_hh(b, c, d, a, x[i +
6],
23,
76029189)
23383 a = md5_hh(a, b, c, d, x[i +
9],
4, -
640364487)
23384 d = md5_hh(d, a, b, c, x[i +
12],
11, -
421815835)
23385 c = md5_hh(c, d, a, b, x[i +
15],
16,
530742520)
23386 b = md5_hh(b, c, d, a, x[i +
2],
23, -
995338651)
23388 a = md5_ii(a, b, c, d, x[i +
0],
6, -
198630844)
23389 d = md5_ii(d, a, b, c, x[i +
7],
10,
1126891415)
23390 c = md5_ii(c, d, a, b, x[i +
14],
15, -
1416354905)
23391 b = md5_ii(b, c, d, a, x[i +
5],
21, -
57434055)
23392 a = md5_ii(a, b, c, d, x[i +
12],
6,
1700485571)
23393 d = md5_ii(d, a, b, c, x[i +
3],
10, -
1894986606)
23394 c = md5_ii(c, d, a, b, x[i +
10],
15, -
1051523)
23395 b = md5_ii(b, c, d, a, x[i +
1],
21, -
2054922799)
23396 a = md5_ii(a, b, c, d, x[i +
8],
6,
1873313359)
23397 d = md5_ii(d, a, b, c, x[i +
15],
10, -
30611744)
23398 c = md5_ii(c, d, a, b, x[i +
6],
15, -
1560198380)
23399 b = md5_ii(b, c, d, a, x[i +
13],
21,
1309151649)
23400 a = md5_ii(a, b, c, d, x[i +
4],
6, -
145523070)
23401 d = md5_ii(d, a, b, c, x[i +
11],
10, -
1120210379)
23402 c = md5_ii(c, d, a, b, x[i +
2],
15,
718787259)
23403 b = md5_ii(b, c, d, a, x[i +
9],
21, -
343485551)
23405 a = safe_add(a, olda)
23406 b = safe_add(b, oldb)
23407 c = safe_add(c, oldc)
23408 d = safe_add(d, oldd)
23411 return [a, b, c, d]
23415 * These functions implement the four basic operations the algorithm uses.
23417 function md5_cmn (q, a, b, x, s, t) {
23418 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b)
23421 function md5_ff (a, b, c, d, x, s, t) {
23422 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t)
23425 function md5_gg (a, b, c, d, x, s, t) {
23426 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t)
23429 function md5_hh (a, b, c, d, x, s, t) {
23430 return md5_cmn(b ^ c ^ d, a, b, x, s, t)
23433 function md5_ii (a, b, c, d, x, s, t) {
23434 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t)
23438 * Add integers, wrapping at
2^
32. This uses
16-bit operations internally
23439 * to work around bugs in some JS interpreters.
23441 function safe_add (x, y) {
23442 var lsw = (x &
0xFFFF) + (y &
0xFFFF)
23443 var msw = (x
>> 16) + (y
>> 16) + (lsw
>> 16)
23444 return (msw <<
16) | (lsw &
0xFFFF)
23448 * Bitwise rotate a
32-bit number to the left.
23450 function bit_rol (num, cnt) {
23451 return (num << cnt) | (num
>>> (
32 - cnt))
23454 module.exports = function md5 (buf) {
23455 return makeHash(buf, core_md5)
23458 },{"./make-hash":
88}],
90:[function(require,module,exports){
23460 var inherits = require('inherits')
23461 var Legacy = require('./legacy')
23462 var Base = require('cipher-base')
23463 var Buffer = require('safe-buffer').Buffer
23464 var md5 = require('create-hash/md5')
23465 var RIPEMD160 = require('ripemd160')
23467 var sha = require('sha.js')
23469 var ZEROS = Buffer.alloc(
128)
23471 function Hmac (alg, key) {
23472 Base.call(this, 'digest')
23473 if (typeof key === 'string') {
23474 key = Buffer.from(key)
23477 var blocksize = (alg === 'sha512' || alg === 'sha384') ?
128 :
64
23481 if (key.length
> blocksize) {
23482 var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)
23483 key = hash.update(key).digest()
23484 } else if (key.length < blocksize) {
23485 key = Buffer.concat([key, ZEROS], blocksize)
23488 var ipad = this._ipad = Buffer.allocUnsafe(blocksize)
23489 var opad = this._opad = Buffer.allocUnsafe(blocksize)
23491 for (var i =
0; i < blocksize; i++) {
23492 ipad[i] = key[i] ^
0x36
23493 opad[i] = key[i] ^
0x5C
23495 this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)
23496 this._hash.update(ipad)
23499 inherits(Hmac, Base)
23501 Hmac.prototype._update = function (data) {
23502 this._hash.update(data)
23505 Hmac.prototype._final = function () {
23506 var h = this._hash.digest()
23507 var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)
23508 return hash.update(this._opad).update(h).digest()
23511 module.exports = function createHmac (alg, key) {
23512 alg = alg.toLowerCase()
23513 if (alg === 'rmd160' || alg === 'ripemd160') {
23514 return new Hmac('rmd160', key)
23516 if (alg === 'md5') {
23517 return new Legacy(md5, key)
23519 return new Hmac(alg, key)
23522 },{"./legacy":
91,"cipher-base":
86,"create-hash/md5":
89,"inherits":
121,"ripemd160":
127,"safe-buffer":
128,"sha.js":
130}],
91:[function(require,module,exports){
23524 var inherits = require('inherits')
23525 var Buffer = require('safe-buffer').Buffer
23527 var Base = require('cipher-base')
23529 var ZEROS = Buffer.alloc(
128)
23532 function Hmac (alg, key) {
23533 Base.call(this, 'digest')
23534 if (typeof key === 'string') {
23535 key = Buffer.from(key)
23541 if (key.length
> blocksize) {
23543 } else if (key.length < blocksize) {
23544 key = Buffer.concat([key, ZEROS], blocksize)
23547 var ipad = this._ipad = Buffer.allocUnsafe(blocksize)
23548 var opad = this._opad = Buffer.allocUnsafe(blocksize)
23550 for (var i =
0; i < blocksize; i++) {
23551 ipad[i] = key[i] ^
0x36
23552 opad[i] = key[i] ^
0x5C
23555 this._hash = [ipad]
23558 inherits(Hmac, Base)
23560 Hmac.prototype._update = function (data) {
23561 this._hash.push(data)
23564 Hmac.prototype._final = function () {
23565 var h = this._alg(Buffer.concat(this._hash))
23566 return this._alg(Buffer.concat([this._opad, h]))
23568 module.exports = Hmac
23570 },{"cipher-base":
86,"inherits":
121,"safe-buffer":
128}],
92:[function(require,module,exports){
23571 var assert = require('assert')
23572 var BigInteger = require('bigi')
23574 var Point = require('./point')
23576 function Curve (p, a, b, Gx, Gy, n, h) {
23580 this.G = Point.fromAffine(this, Gx, Gy)
23584 this.infinity = new Point(this, null, null, BigInteger.ZERO)
23587 this.pOverFour = p.add(BigInteger.ONE).shiftRight(
2)
23589 // determine size of p in bytes
23590 this.pLength = Math.floor((this.p.bitLength() +
7) /
8)
23593 Curve.prototype.pointFromX = function (isOdd, x) {
23594 var alpha = x.pow(
3).add(this.a.multiply(x)).add(this.b).mod(this.p)
23595 var beta = alpha.modPow(this.pOverFour, this.p) // XXX: not compatible with all curves
23598 if (beta.isEven() ^ !isOdd) {
23599 y = this.p.subtract(y) // -y % p
23602 return Point.fromAffine(this, x, y)
23605 Curve.prototype.isInfinity = function (Q) {
23606 if (Q === this.infinity) return true
23608 return Q.z.signum() ===
0 && Q.y.signum() !==
0
23611 Curve.prototype.isOnCurve = function (Q) {
23612 if (this.isInfinity(Q)) return true
23620 // Check that xQ and yQ are integers in the interval [
0, p -
1]
23621 if (x.signum() <
0 || x.compareTo(p)
>=
0) return false
23622 if (y.signum() <
0 || y.compareTo(p)
>=
0) return false
23624 // and check that y^
2 = x^
3 + ax + b (mod p)
23625 var lhs = y.square().mod(p)
23626 var rhs = x.pow(
3).add(a.multiply(x)).add(b).mod(p)
23627 return lhs.equals(rhs)
23631 * Validate an elliptic curve point.
23633 * See SEC
1, section
3.2.2.1: Elliptic Curve Public Key Validation Primitive
23635 Curve.prototype.validate = function (Q) {
23637 assert(!this.isInfinity(Q), 'Point is at infinity')
23638 assert(this.isOnCurve(Q), 'Point is not on the curve')
23640 // Check nQ = O (where Q is a scalar multiple of G)
23641 var nQ = Q.multiply(this.n)
23642 assert(this.isInfinity(nQ), 'Point is not a scalar multiple of G')
23647 module.exports = Curve
23649 },{"./point":
96,"assert":
1,"bigi":
39}],
93:[function(require,module,exports){
23652 "p": "fffffffdffffffffffffffffffffffff",
23653 "a": "fffffffdfffffffffffffffffffffffc",
23654 "b": "e87579c11079f43dd824993c2cee5ed3",
23655 "n": "fffffffe0000000075a30d1b9038a115",
23657 "Gx": "
161ff7528b899b2d0c28607ca52c5b86",
23658 "Gy": "cf5ac8395bafeb13c02da292dded7a83"
23661 "p": "fffffffffffffffffffffffffffffffeffffac73",
23664 "n": "
0100000000000000000001b8fa16dfab9aca16b6b3",
23666 "Gx": "
3b4c382ce37aa192a4019e763036f4f5dd4d7ebb",
23667 "Gy": "
938cf935318fdced6bc28286531733c3f03c4fee"
23670 "p": "ffffffffffffffffffffffffffffffff7fffffff",
23671 "a": "ffffffffffffffffffffffffffffffff7ffffffc",
23672 "b": "
1c97befc54bd7a8b65acf89f81d4d4adc565fa45",
23673 "n": "
0100000000000000000001f4c8f927aed3ca752257",
23675 "Gx": "
4a96b5688ef573284664698968c38bb913cbfc82",
23676 "Gy": "
23a628553168947d59dcc912042351377ac5fb32"
23679 "p": "fffffffffffffffffffffffffffffffffffffffeffffee37",
23682 "n": "fffffffffffffffffffffffe26f2fc170f69466a74defd8d",
23684 "Gx": "db4ff10ec057e9ae26b07d0280b7f4341da5d1b1eae06c7d",
23685 "Gy": "
9b2f2f6d9c5628a7844163d015be86344082aa88d95e2f9d"
23688 "p": "fffffffffffffffffffffffffffffffeffffffffffffffff",
23689 "a": "fffffffffffffffffffffffffffffffefffffffffffffffc",
23690 "b": "
64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1",
23691 "n": "ffffffffffffffffffffffff99def836146bc9b1b4d22831",
23693 "Gx": "
188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012",
23694 "Gy": "
07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
23697 "p": "fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f",
23700 "n": "fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141",
23702 "Gx": "
79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
23703 "Gy": "
483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8"
23706 "p": "ffffffff00000001000000000000000000000000ffffffffffffffffffffffff",
23707 "a": "ffffffff00000001000000000000000000000000fffffffffffffffffffffffc",
23708 "b": "
5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b",
23709 "n": "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551",
23711 "Gx": "
6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296",
23712 "Gy": "
4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5"
23716 },{}],
94:[function(require,module,exports){
23717 var Point = require('./point')
23718 var Curve = require('./curve')
23720 var getCurveByName = require('./names')
23725 getCurveByName: getCurveByName
23728 },{"./curve":
92,"./names":
95,"./point":
96}],
95:[function(require,module,exports){
23729 var BigInteger = require('bigi')
23731 var curves = require('./curves.json')
23732 var Curve = require('./curve')
23734 function getCurveByName (name) {
23735 var curve = curves[name]
23736 if (!curve) return null
23738 var p = new BigInteger(curve.p,
16)
23739 var a = new BigInteger(curve.a,
16)
23740 var b = new BigInteger(curve.b,
16)
23741 var n = new BigInteger(curve.n,
16)
23742 var h = new BigInteger(curve.h,
16)
23743 var Gx = new BigInteger(curve.Gx,
16)
23744 var Gy = new BigInteger(curve.Gy,
16)
23746 return new Curve(p, a, b, Gx, Gy, n, h)
23749 module.exports = getCurveByName
23751 },{"./curve":
92,"./curves.json":
93,"bigi":
39}],
96:[function(require,module,exports){
23752 (function (Buffer){
23753 var assert = require('assert')
23754 var BigInteger = require('bigi')
23756 var THREE = BigInteger.valueOf(
3)
23758 function Point (curve, x, y, z) {
23759 assert.notStrictEqual(z, undefined, 'Missing Z coordinate')
23767 this.compressed = true
23770 Object.defineProperty(Point.prototype, 'zInv', {
23772 if (this._zInv === null) {
23773 this._zInv = this.z.modInverse(this.curve.p)
23780 Object.defineProperty(Point.prototype, 'affineX', {
23782 return this.x.multiply(this.zInv).mod(this.curve.p)
23786 Object.defineProperty(Point.prototype, 'affineY', {
23788 return this.y.multiply(this.zInv).mod(this.curve.p)
23792 Point.fromAffine = function (curve, x, y) {
23793 return new Point(curve, x, y, BigInteger.ONE)
23796 Point.prototype.equals = function (other) {
23797 if (other === this) return true
23798 if (this.curve.isInfinity(this)) return this.curve.isInfinity(other)
23799 if (this.curve.isInfinity(other)) return this.curve.isInfinity(this)
23801 // u = Y2 * Z1 - Y1 * Z2
23802 var u = other.y.multiply(this.z).subtract(this.y.multiply(other.z)).mod(this.curve.p)
23804 if (u.signum() !==
0) return false
23806 // v = X2 * Z1 - X1 * Z2
23807 var v = other.x.multiply(this.z).subtract(this.x.multiply(other.z)).mod(this.curve.p)
23809 return v.signum() ===
0
23812 Point.prototype.negate = function () {
23813 var y = this.curve.p.subtract(this.y)
23815 return new Point(this.curve, this.x, y, this.z)
23818 Point.prototype.add = function (b) {
23819 if (this.curve.isInfinity(this)) return b
23820 if (this.curve.isInfinity(b)) return this
23827 // u = Y2 * Z1 - Y1 * Z2
23828 var u = y2.multiply(this.z).subtract(y1.multiply(b.z)).mod(this.curve.p)
23829 // v = X2 * Z1 - X1 * Z2
23830 var v = x2.multiply(this.z).subtract(x1.multiply(b.z)).mod(this.curve.p)
23832 if (v.signum() ===
0) {
23833 if (u.signum() ===
0) {
23834 return this.twice() // this == b, so double
23837 return this.curve.infinity // this = -b, so infinity
23840 var v2 = v.square()
23841 var v3 = v2.multiply(v)
23842 var x1v2 = x1.multiply(v2)
23843 var zu2 = u.square().multiply(this.z)
23845 // x3 = v * (z2 * (z1 * u^
2 -
2 * x1 * v^
2) - v^
3)
23846 var x3 = zu2.subtract(x1v2.shiftLeft(
1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.p)
23847 // y3 = z2 * (
3 * x1 * u * v^
2 - y1 * v^
3 - z1 * u^
3) + u * v^
3
23848 var y3 = x1v2.multiply(THREE).multiply(u).subtract(y1.multiply(v3)).subtract(zu2.multiply(u)).multiply(b.z).add(u.multiply(v3)).mod(this.curve.p)
23849 // z3 = v^
3 * z1 * z2
23850 var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.p)
23852 return new Point(this.curve, x3, y3, z3)
23855 Point.prototype.twice = function () {
23856 if (this.curve.isInfinity(this)) return this
23857 if (this.y.signum() ===
0) return this.curve.infinity
23862 var y1z1 = y1.multiply(this.z).mod(this.curve.p)
23863 var y1sqz1 = y1z1.multiply(y1).mod(this.curve.p)
23864 var a = this.curve.a
23866 // w =
3 * x1^
2 + a * z1^
2
23867 var w = x1.square().multiply(THREE)
23869 if (a.signum() !==
0) {
23870 w = w.add(this.z.square().multiply(a))
23873 w = w.mod(this.curve.p)
23874 // x3 =
2 * y1 * z1 * (w^
2 -
8 * x1 * y1^
2 * z1)
23875 var x3 = w.square().subtract(x1.shiftLeft(
3).multiply(y1sqz1)).shiftLeft(
1).multiply(y1z1).mod(this.curve.p)
23876 // y3 =
4 * y1^
2 * z1 * (
3 * w * x1 -
2 * y1^
2 * z1) - w^
3
23877 var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(
1)).shiftLeft(
2).multiply(y1sqz1).subtract(w.pow(
3)).mod(this.curve.p)
23878 // z3 =
8 * (y1 * z1)^
3
23879 var z3 = y1z1.pow(
3).shiftLeft(
3).mod(this.curve.p)
23881 return new Point(this.curve, x3, y3, z3)
23884 // Simple NAF (Non-Adjacent Form) multiplication algorithm
23885 // TODO: modularize the multiplication algorithm
23886 Point.prototype.multiply = function (k) {
23887 if (this.curve.isInfinity(this)) return this
23888 if (k.signum() ===
0) return this.curve.infinity
23891 var h = e.multiply(THREE)
23893 var neg = this.negate()
23896 for (var i = h.bitLength() -
2; i
> 0; --i) {
23897 var hBit = h.testBit(i)
23898 var eBit = e.testBit(i)
23902 if (hBit !== eBit) {
23903 R = R.add(hBit ? this : neg)
23910 // Compute this*j + x*k (simultaneous multiplication)
23911 Point.prototype.multiplyTwo = function (j, x, k) {
23912 var i = Math.max(j.bitLength(), k.bitLength()) -
1
23913 var R = this.curve.infinity
23914 var both = this.add(x)
23917 var jBit = j.testBit(i)
23918 var kBit = k.testBit(i)
23937 Point.prototype.getEncoded = function (compressed) {
23938 if (compressed == null) compressed = this.compressed
23939 if (this.curve.isInfinity(this)) return new Buffer('
00', 'hex') // Infinity point encoded is simply '
00'
23941 var x = this.affineX
23942 var y = this.affineY
23943 var byteLength = this.curve.pLength
23948 buffer = new Buffer(
1 + byteLength)
23949 buffer.writeUInt8(y.isEven() ?
0x02 :
0x03,
0)
23953 buffer = new Buffer(
1 + byteLength + byteLength)
23954 buffer.writeUInt8(
0x04,
0)
23956 y.toBuffer(byteLength).copy(buffer,
1 + byteLength)
23959 x.toBuffer(byteLength).copy(buffer,
1)
23964 Point.decodeFrom = function (curve, buffer) {
23965 var type = buffer.readUInt8(
0)
23966 var compressed = (type !==
4)
23968 var byteLength = Math.floor((curve.p.bitLength() +
7) /
8)
23969 var x = BigInteger.fromBuffer(buffer.slice(
1,
1 + byteLength))
23973 assert.equal(buffer.length, byteLength +
1, 'Invalid sequence length')
23974 assert(type ===
0x02 || type ===
0x03, 'Invalid sequence tag')
23976 var isOdd = (type ===
0x03)
23977 Q = curve.pointFromX(isOdd, x)
23979 assert.equal(buffer.length,
1 + byteLength + byteLength, 'Invalid sequence length')
23981 var y = BigInteger.fromBuffer(buffer.slice(
1 + byteLength))
23982 Q = Point.fromAffine(curve, x, y)
23985 Q.compressed = compressed
23989 Point.prototype.toString = function () {
23990 if (this.curve.isInfinity(this)) return '(INFINITY)'
23992 return '(' + this.affineX.toString() + ',' + this.affineY.toString() + ')'
23995 module.exports = Point
23997 }).call(this,require("buffer").Buffer)
23998 },{"assert":
1,"bigi":
39,"buffer":
5}],
97:[function(require,module,exports){
24001 var elliptic = exports;
24003 elliptic.version = require('../package.json').version;
24004 elliptic.utils = require('./elliptic/utils');
24005 elliptic.rand = require('brorand');
24006 elliptic.curve = require('./elliptic/curve');
24007 elliptic.curves = require('./elliptic/curves');
24010 elliptic.ec = require('./elliptic/ec');
24011 elliptic.eddsa = require('./elliptic/eddsa');
24013 },{"../package.json":
112,"./elliptic/curve":
100,"./elliptic/curves":
103,"./elliptic/ec":
104,"./elliptic/eddsa":
107,"./elliptic/utils":
111,"brorand":
82}],
98:[function(require,module,exports){
24016 var BN = require('bn.js');
24017 var elliptic = require('../../elliptic');
24018 var utils = elliptic.utils;
24019 var getNAF = utils.getNAF;
24020 var getJSF = utils.getJSF;
24021 var assert = utils.assert;
24023 function BaseCurve(type, conf) {
24025 this.p = new BN(conf.p,
16);
24027 // Use Montgomery, when there is no fast reduction for the prime
24028 this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);
24030 // Useful for many curves
24031 this.zero = new BN(
0).toRed(this.red);
24032 this.one = new BN(
1).toRed(this.red);
24033 this.two = new BN(
2).toRed(this.red);
24035 // Curve configuration, optional
24036 this.n = conf.n && new BN(conf.n,
16);
24037 this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);
24039 // Temporary arrays
24040 this._wnafT1 = new Array(
4);
24041 this._wnafT2 = new Array(
4);
24042 this._wnafT3 = new Array(
4);
24043 this._wnafT4 = new Array(
4);
24045 // Generalized Greg Maxwell's trick
24046 var adjustCount = this.n && this.p.div(this.n);
24047 if (!adjustCount || adjustCount.cmpn(
100)
> 0) {
24050 this._maxwellTrick = true;
24051 this.redN = this.n.toRed(this.red);
24054 module.exports = BaseCurve;
24056 BaseCurve.prototype.point = function point() {
24057 throw new Error('Not implemented');
24060 BaseCurve.prototype.validate = function validate() {
24061 throw new Error('Not implemented');
24064 BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {
24065 assert(p.precomputed);
24066 var doubles = p._getDoubles();
24068 var naf = getNAF(k,
1);
24069 var I = (
1 << (doubles.step +
1)) - (doubles.step %
2 ===
0 ?
2 :
1);
24072 // Translate into more windowed form
24074 for (var j =
0; j < naf.length; j += doubles.step) {
24076 for (var k = j + doubles.step -
1; k
>= j; k--)
24077 nafW = (nafW <<
1) + naf[k];
24081 var a = this.jpoint(null, null, null);
24082 var b = this.jpoint(null, null, null);
24083 for (var i = I; i
> 0; i--) {
24084 for (var j =
0; j < repr.length; j++) {
24085 var nafW = repr[j];
24087 b = b.mixedAdd(doubles.points[j]);
24088 else if (nafW === -i)
24089 b = b.mixedAdd(doubles.points[j].neg());
24096 BaseCurve.prototype._wnafMul = function _wnafMul(p, k) {
24099 // Precompute window
24100 var nafPoints = p._getNAFPoints(w);
24102 var wnd = nafPoints.points;
24105 var naf = getNAF(k, w);
24107 // Add `this`*(N+
1) for every w-NAF index
24108 var acc = this.jpoint(null, null, null);
24109 for (var i = naf.length -
1; i
>=
0; i--) {
24111 for (var k =
0; i
>=
0 && naf[i] ===
0; i--)
24121 if (p.type === 'affine') {
24124 acc = acc.mixedAdd(wnd[(z -
1)
>> 1]);
24126 acc = acc.mixedAdd(wnd[(-z -
1)
>> 1].neg());
24130 acc = acc.add(wnd[(z -
1)
>> 1]);
24132 acc = acc.add(wnd[(-z -
1)
>> 1].neg());
24135 return p.type === 'affine' ? acc.toP() : acc;
24138 BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,
24143 var wndWidth = this._wnafT1;
24144 var wnd = this._wnafT2;
24145 var naf = this._wnafT3;
24149 for (var i =
0; i < len; i++) {
24151 var nafPoints = p._getNAFPoints(defW);
24152 wndWidth[i] = nafPoints.wnd;
24153 wnd[i] = nafPoints.points;
24156 // Comb small window NAFs
24157 for (var i = len -
1; i
>=
1; i -=
2) {
24160 if (wndWidth[a] !==
1 || wndWidth[b] !==
1) {
24161 naf[a] = getNAF(coeffs[a], wndWidth[a]);
24162 naf[b] = getNAF(coeffs[b], wndWidth[b]);
24163 max = Math.max(naf[a].length, max);
24164 max = Math.max(naf[b].length, max);
24175 // Try to avoid Projective points, if possible
24176 if (points[a].y.cmp(points[b].y) ===
0) {
24177 comb[
1] = points[a].add(points[b]);
24178 comb[
2] = points[a].toJ().mixedAdd(points[b].neg());
24179 } else if (points[a].y.cmp(points[b].y.redNeg()) ===
0) {
24180 comb[
1] = points[a].toJ().mixedAdd(points[b]);
24181 comb[
2] = points[a].add(points[b].neg());
24183 comb[
1] = points[a].toJ().mixedAdd(points[b]);
24184 comb[
2] = points[a].toJ().mixedAdd(points[b].neg());
24199 var jsf = getJSF(coeffs[a], coeffs[b]);
24200 max = Math.max(jsf[
0].length, max);
24201 naf[a] = new Array(max);
24202 naf[b] = new Array(max);
24203 for (var j =
0; j < max; j++) {
24204 var ja = jsf[
0][j] |
0;
24205 var jb = jsf[
1][j] |
0;
24207 naf[a][j] = index[(ja +
1) *
3 + (jb +
1)];
24213 var acc = this.jpoint(null, null, null);
24214 var tmp = this._wnafT4;
24215 for (var i = max; i
>=
0; i--) {
24220 for (var j =
0; j < len; j++) {
24221 tmp[j] = naf[j][i] |
0;
24236 for (var j =
0; j < len; j++) {
24242 p = wnd[j][(z -
1)
>> 1];
24244 p = wnd[j][(-z -
1)
>> 1].neg();
24246 if (p.type === 'affine')
24247 acc = acc.mixedAdd(p);
24252 // Zeroify references
24253 for (var i =
0; i < len; i++)
24256 if (jacobianResult)
24262 function BasePoint(curve, type) {
24263 this.curve = curve;
24265 this.precomputed = null;
24267 BaseCurve.BasePoint = BasePoint;
24269 BasePoint.prototype.eq = function eq(/*other*/) {
24270 throw new Error('Not implemented');
24273 BasePoint.prototype.validate = function validate() {
24274 return this.curve.validate(this);
24277 BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
24278 bytes = utils.toArray(bytes, enc);
24280 var len = this.p.byteLength();
24282 // uncompressed, hybrid-odd, hybrid-even
24283 if ((bytes[
0] ===
0x04 || bytes[
0] ===
0x06 || bytes[
0] ===
0x07) &&
24284 bytes.length -
1 ===
2 * len) {
24285 if (bytes[
0] ===
0x06)
24286 assert(bytes[bytes.length -
1] %
2 ===
0);
24287 else if (bytes[
0] ===
0x07)
24288 assert(bytes[bytes.length -
1] %
2 ===
1);
24290 var res = this.point(bytes.slice(
1,
1 + len),
24291 bytes.slice(
1 + len,
1 +
2 * len));
24294 } else if ((bytes[
0] ===
0x02 || bytes[
0] ===
0x03) &&
24295 bytes.length -
1 === len) {
24296 return this.pointFromX(bytes.slice(
1,
1 + len), bytes[
0] ===
0x03);
24298 throw new Error('Unknown point format');
24301 BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {
24302 return this.encode(enc, true);
24305 BasePoint.prototype._encode = function _encode(compact) {
24306 var len = this.curve.p.byteLength();
24307 var x = this.getX().toArray('be', len);
24310 return [ this.getY().isEven() ?
0x02 :
0x03 ].concat(x);
24312 return [
0x04 ].concat(x, this.getY().toArray('be', len)) ;
24315 BasePoint.prototype.encode = function encode(enc, compact) {
24316 return utils.encode(this._encode(compact), enc);
24319 BasePoint.prototype.precompute = function precompute(power) {
24320 if (this.precomputed)
24323 var precomputed = {
24328 precomputed.naf = this._getNAFPoints(
8);
24329 precomputed.doubles = this._getDoubles(
4, power);
24330 precomputed.beta = this._getBeta();
24331 this.precomputed = precomputed;
24336 BasePoint.prototype._hasDoubles = function _hasDoubles(k) {
24337 if (!this.precomputed)
24340 var doubles = this.precomputed.doubles;
24344 return doubles.points.length
>= Math.ceil((k.bitLength() +
1) / doubles.step);
24347 BasePoint.prototype._getDoubles = function _getDoubles(step, power) {
24348 if (this.precomputed && this.precomputed.doubles)
24349 return this.precomputed.doubles;
24351 var doubles = [ this ];
24353 for (var i =
0; i < power; i += step) {
24354 for (var j =
0; j < step; j++)
24364 BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {
24365 if (this.precomputed && this.precomputed.naf)
24366 return this.precomputed.naf;
24368 var res = [ this ];
24369 var max = (
1 << wnd) -
1;
24370 var dbl = max ===
1 ? null : this.dbl();
24371 for (var i =
1; i < max; i++)
24372 res[i] = res[i -
1].add(dbl);
24379 BasePoint.prototype._getBeta = function _getBeta() {
24383 BasePoint.prototype.dblp = function dblp(k) {
24385 for (var i =
0; i < k; i++)
24390 },{"../../elliptic":
97,"bn.js":
81}],
99:[function(require,module,exports){
24393 var curve = require('../curve');
24394 var elliptic = require('../../elliptic');
24395 var BN = require('bn.js');
24396 var inherits = require('inherits');
24397 var Base = curve.base;
24399 var assert = elliptic.utils.assert;
24401 function EdwardsCurve(conf) {
24402 // NOTE: Important as we are creating point in Base.call()
24403 this.twisted = (conf.a |
0) !==
1;
24404 this.mOneA = this.twisted && (conf.a |
0) === -
1;
24405 this.extended = this.mOneA;
24407 Base.call(this, 'edwards', conf);
24409 this.a = new BN(conf.a,
16).umod(this.red.m);
24410 this.a = this.a.toRed(this.red);
24411 this.c = new BN(conf.c,
16).toRed(this.red);
24412 this.c2 = this.c.redSqr();
24413 this.d = new BN(conf.d,
16).toRed(this.red);
24414 this.dd = this.d.redAdd(this.d);
24416 assert(!this.twisted || this.c.fromRed().cmpn(
1) ===
0);
24417 this.oneC = (conf.c |
0) ===
1;
24419 inherits(EdwardsCurve, Base);
24420 module.exports = EdwardsCurve;
24422 EdwardsCurve.prototype._mulA = function _mulA(num) {
24424 return num.redNeg();
24426 return this.a.redMul(num);
24429 EdwardsCurve.prototype._mulC = function _mulC(num) {
24433 return this.c.redMul(num);
24436 // Just for compatibility with Short curve
24437 EdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {
24438 return this.point(x, y, z, t);
24441 EdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {
24444 x = x.toRed(this.red);
24446 var x2 = x.redSqr();
24447 var rhs = this.c2.redSub(this.a.redMul(x2));
24448 var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));
24450 var y2 = rhs.redMul(lhs.redInvm());
24451 var y = y2.redSqrt();
24452 if (y.redSqr().redSub(y2).cmp(this.zero) !==
0)
24453 throw new Error('invalid point');
24455 var isOdd = y.fromRed().isOdd();
24456 if (odd && !isOdd || !odd && isOdd)
24459 return this.point(x, y);
24462 EdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {
24465 y = y.toRed(this.red);
24467 // x^
2 = (y^
2 -
1) / (d y^
2 +
1)
24468 var y2 = y.redSqr();
24469 var lhs = y2.redSub(this.one);
24470 var rhs = y2.redMul(this.d).redAdd(this.one);
24471 var x2 = lhs.redMul(rhs.redInvm());
24473 if (x2.cmp(this.zero) ===
0) {
24475 throw new Error('invalid point');
24477 return this.point(this.zero, y);
24480 var x = x2.redSqrt();
24481 if (x.redSqr().redSub(x2).cmp(this.zero) !==
0)
24482 throw new Error('invalid point');
24484 if (x.isOdd() !== odd)
24487 return this.point(x, y);
24490 EdwardsCurve.prototype.validate = function validate(point) {
24491 if (point.isInfinity())
24494 // Curve: A * X^
2 + Y^
2 = C^
2 * (
1 + D * X^
2 * Y^
2)
24497 var x2 = point.x.redSqr();
24498 var y2 = point.y.redSqr();
24499 var lhs = x2.redMul(this.a).redAdd(y2);
24500 var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));
24502 return lhs.cmp(rhs) ===
0;
24505 function Point(curve, x, y, z, t) {
24506 Base.BasePoint.call(this, curve, 'projective');
24507 if (x === null && y === null && z === null) {
24508 this.x = this.curve.zero;
24509 this.y = this.curve.one;
24510 this.z = this.curve.one;
24511 this.t = this.curve.zero;
24514 this.x = new BN(x,
16);
24515 this.y = new BN(y,
16);
24516 this.z = z ? new BN(z,
16) : this.curve.one;
24517 this.t = t && new BN(t,
16);
24519 this.x = this.x.toRed(this.curve.red);
24521 this.y = this.y.toRed(this.curve.red);
24523 this.z = this.z.toRed(this.curve.red);
24524 if (this.t && !this.t.red)
24525 this.t = this.t.toRed(this.curve.red);
24526 this.zOne = this.z === this.curve.one;
24528 // Use extended coordinates
24529 if (this.curve.extended && !this.t) {
24530 this.t = this.x.redMul(this.y);
24532 this.t = this.t.redMul(this.z.redInvm());
24536 inherits(Point, Base.BasePoint);
24538 EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
24539 return Point.fromJSON(this, obj);
24542 EdwardsCurve.prototype.point = function point(x, y, z, t) {
24543 return new Point(this, x, y, z, t);
24546 Point.fromJSON = function fromJSON(curve, obj) {
24547 return new Point(curve, obj[
0], obj[
1], obj[
2]);
24550 Point.prototype.inspect = function inspect() {
24551 if (this.isInfinity())
24552 return '
<EC Point Infinity
>';
24553 return '
<EC Point x: ' + this.x.fromRed().toString(
16,
2) +
24554 ' y: ' + this.y.fromRed().toString(
16,
2) +
24555 ' z: ' + this.z.fromRed().toString(
16,
2) + '
>';
24558 Point.prototype.isInfinity = function isInfinity() {
24559 // XXX This code assumes that zero is always zero in red
24560 return this.x.cmpn(
0) ===
0 &&
24561 this.y.cmp(this.z) ===
0;
24564 Point.prototype._extDbl = function _extDbl() {
24565 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-
1.html
24566 // #doubling-dbl-
2008-hwcd
24570 var a = this.x.redSqr();
24572 var b = this.y.redSqr();
24574 var c = this.z.redSqr();
24577 var d = this.curve._mulA(a);
24578 // E = (X1 + Y1)^
2 - A - B
24579 var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);
24581 var g = d.redAdd(b);
24583 var f = g.redSub(c);
24585 var h = d.redSub(b);
24587 var nx = e.redMul(f);
24589 var ny = g.redMul(h);
24591 var nt = e.redMul(h);
24593 var nz = f.redMul(g);
24594 return this.curve.point(nx, ny, nz, nt);
24597 Point.prototype._projDbl = function _projDbl() {
24598 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
24599 // #doubling-dbl-
2008-bbjlp
24600 // #doubling-dbl-
2007-bl
24602 // Generally
3M +
4S or
2M +
4S
24605 var b = this.x.redAdd(this.y).redSqr();
24607 var c = this.x.redSqr();
24609 var d = this.y.redSqr();
24614 if (this.curve.twisted) {
24616 var e = this.curve._mulA(c);
24618 var f = e.redAdd(d);
24620 // X3 = (B - C - D) * (F -
2)
24621 nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));
24622 // Y3 = F * (E - D)
24623 ny = f.redMul(e.redSub(d));
24624 // Z3 = F^
2 -
2 * F
24625 nz = f.redSqr().redSub(f).redSub(f);
24628 var h = this.z.redSqr();
24630 var j = f.redSub(h).redISub(h);
24632 nx = b.redSub(c).redISub(d).redMul(j);
24633 // Y3 = F * (E - D)
24634 ny = f.redMul(e.redSub(d));
24640 var e = c.redAdd(d);
24642 var h = this.curve._mulC(this.c.redMul(this.z)).redSqr();
24644 var j = e.redSub(h).redSub(h);
24645 // X3 = c * (B - E) * J
24646 nx = this.curve._mulC(b.redISub(e)).redMul(j);
24647 // Y3 = c * E * (C - D)
24648 ny = this.curve._mulC(e).redMul(c.redISub(d));
24652 return this.curve.point(nx, ny, nz);
24655 Point.prototype.dbl = function dbl() {
24656 if (this.isInfinity())
24659 // Double in extended coordinates
24660 if (this.curve.extended)
24661 return this._extDbl();
24663 return this._projDbl();
24666 Point.prototype._extAdd = function _extAdd(p) {
24667 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-
1.html
24668 // #addition-add-
2008-hwcd-
3
24671 // A = (Y1 - X1) * (Y2 - X2)
24672 var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));
24673 // B = (Y1 + X1) * (Y2 + X2)
24674 var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));
24676 var c = this.t.redMul(this.curve.dd).redMul(p.t);
24678 var d = this.z.redMul(p.z.redAdd(p.z));
24680 var e = b.redSub(a);
24682 var f = d.redSub(c);
24684 var g = d.redAdd(c);
24686 var h = b.redAdd(a);
24688 var nx = e.redMul(f);
24690 var ny = g.redMul(h);
24692 var nt = e.redMul(h);
24694 var nz = f.redMul(g);
24695 return this.curve.point(nx, ny, nz, nt);
24698 Point.prototype._projAdd = function _projAdd(p) {
24699 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
24700 // #addition-add-
2008-bbjlp
24701 // #addition-add-
2007-bl
24705 var a = this.z.redMul(p.z);
24707 var b = a.redSqr();
24709 var c = this.x.redMul(p.x);
24711 var d = this.y.redMul(p.y);
24713 var e = this.curve.d.redMul(c).redMul(d);
24715 var f = b.redSub(e);
24717 var g = b.redAdd(e);
24718 // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)
24719 var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);
24720 var nx = a.redMul(f).redMul(tmp);
24723 if (this.curve.twisted) {
24724 // Y3 = A * G * (D - a * C)
24725 ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));
24729 // Y3 = A * G * (D - C)
24730 ny = a.redMul(g).redMul(d.redSub(c));
24732 nz = this.curve._mulC(f).redMul(g);
24734 return this.curve.point(nx, ny, nz);
24737 Point.prototype.add = function add(p) {
24738 if (this.isInfinity())
24740 if (p.isInfinity())
24743 if (this.curve.extended)
24744 return this._extAdd(p);
24746 return this._projAdd(p);
24749 Point.prototype.mul = function mul(k) {
24750 if (this._hasDoubles(k))
24751 return this.curve._fixedNafMul(this, k);
24753 return this.curve._wnafMul(this, k);
24756 Point.prototype.mulAdd = function mulAdd(k1, p, k2) {
24757 return this.curve._wnafMulAdd(
1, [ this, p ], [ k1, k2 ],
2, false);
24760 Point.prototype.jmulAdd = function jmulAdd(k1, p, k2) {
24761 return this.curve._wnafMulAdd(
1, [ this, p ], [ k1, k2 ],
2, true);
24764 Point.prototype.normalize = function normalize() {
24768 // Normalize coordinates
24769 var zi = this.z.redInvm();
24770 this.x = this.x.redMul(zi);
24771 this.y = this.y.redMul(zi);
24773 this.t = this.t.redMul(zi);
24774 this.z = this.curve.one;
24779 Point.prototype.neg = function neg() {
24780 return this.curve.point(this.x.redNeg(),
24783 this.t && this.t.redNeg());
24786 Point.prototype.getX = function getX() {
24788 return this.x.fromRed();
24791 Point.prototype.getY = function getY() {
24793 return this.y.fromRed();
24796 Point.prototype.eq = function eq(other) {
24797 return this === other ||
24798 this.getX().cmp(other.getX()) ===
0 &&
24799 this.getY().cmp(other.getY()) ===
0;
24802 Point.prototype.eqXToP = function eqXToP(x) {
24803 var rx = x.toRed(this.curve.red).redMul(this.z);
24804 if (this.x.cmp(rx) ===
0)
24807 var xc = x.clone();
24808 var t = this.curve.redN.redMul(this.z);
24810 xc.iadd(this.curve.n);
24811 if (xc.cmp(this.curve.p)
>=
0)
24815 if (this.x.cmp(rx) ===
0)
24821 // Compatibility with BaseCurve
24822 Point.prototype.toP = Point.prototype.normalize;
24823 Point.prototype.mixedAdd = Point.prototype.add;
24825 },{"../../elliptic":
97,"../curve":
100,"bn.js":
81,"inherits":
121}],
100:[function(require,module,exports){
24828 var curve = exports;
24830 curve.base = require('./base');
24831 curve.short = require('./short');
24832 curve.mont = require('./mont');
24833 curve.edwards = require('./edwards');
24835 },{"./base":
98,"./edwards":
99,"./mont":
101,"./short":
102}],
101:[function(require,module,exports){
24838 var curve = require('../curve');
24839 var BN = require('bn.js');
24840 var inherits = require('inherits');
24841 var Base = curve.base;
24843 var elliptic = require('../../elliptic');
24844 var utils = elliptic.utils;
24846 function MontCurve(conf) {
24847 Base.call(this, 'mont', conf);
24849 this.a = new BN(conf.a,
16).toRed(this.red);
24850 this.b = new BN(conf.b,
16).toRed(this.red);
24851 this.i4 = new BN(
4).toRed(this.red).redInvm();
24852 this.two = new BN(
2).toRed(this.red);
24853 this.a24 = this.i4.redMul(this.a.redAdd(this.two));
24855 inherits(MontCurve, Base);
24856 module.exports = MontCurve;
24858 MontCurve.prototype.validate = function validate(point) {
24859 var x = point.normalize().x;
24860 var x2 = x.redSqr();
24861 var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);
24862 var y = rhs.redSqrt();
24864 return y.redSqr().cmp(rhs) ===
0;
24867 function Point(curve, x, z) {
24868 Base.BasePoint.call(this, curve, 'projective');
24869 if (x === null && z === null) {
24870 this.x = this.curve.one;
24871 this.z = this.curve.zero;
24873 this.x = new BN(x,
16);
24874 this.z = new BN(z,
16);
24876 this.x = this.x.toRed(this.curve.red);
24878 this.z = this.z.toRed(this.curve.red);
24881 inherits(Point, Base.BasePoint);
24883 MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
24884 return this.point(utils.toArray(bytes, enc),
1);
24887 MontCurve.prototype.point = function point(x, z) {
24888 return new Point(this, x, z);
24891 MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
24892 return Point.fromJSON(this, obj);
24895 Point.prototype.precompute = function precompute() {
24899 Point.prototype._encode = function _encode() {
24900 return this.getX().toArray('be', this.curve.p.byteLength());
24903 Point.fromJSON = function fromJSON(curve, obj) {
24904 return new Point(curve, obj[
0], obj[
1] || curve.one);
24907 Point.prototype.inspect = function inspect() {
24908 if (this.isInfinity())
24909 return '
<EC Point Infinity
>';
24910 return '
<EC Point x: ' + this.x.fromRed().toString(
16,
2) +
24911 ' z: ' + this.z.fromRed().toString(
16,
2) + '
>';
24914 Point.prototype.isInfinity = function isInfinity() {
24915 // XXX This code assumes that zero is always zero in red
24916 return this.z.cmpn(
0) ===
0;
24919 Point.prototype.dbl = function dbl() {
24920 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-
1987-m-
3
24924 var a = this.x.redAdd(this.z);
24926 var aa = a.redSqr();
24928 var b = this.x.redSub(this.z);
24930 var bb = b.redSqr();
24932 var c = aa.redSub(bb);
24934 var nx = aa.redMul(bb);
24935 // Z3 = C * (BB + A24 * C)
24936 var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));
24937 return this.curve.point(nx, nz);
24940 Point.prototype.add = function add() {
24941 throw new Error('Not supported on Montgomery curve');
24944 Point.prototype.diffAdd = function diffAdd(p, diff) {
24945 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-
1987-m-
3
24949 var a = this.x.redAdd(this.z);
24951 var b = this.x.redSub(this.z);
24953 var c = p.x.redAdd(p.z);
24955 var d = p.x.redSub(p.z);
24957 var da = d.redMul(a);
24959 var cb = c.redMul(b);
24960 // X5 = Z1 * (DA + CB)^
2
24961 var nx = diff.z.redMul(da.redAdd(cb).redSqr());
24962 // Z5 = X1 * (DA - CB)^
2
24963 var nz = diff.x.redMul(da.redISub(cb).redSqr());
24964 return this.curve.point(nx, nz);
24967 Point.prototype.mul = function mul(k) {
24969 var a = this; // (N /
2) * Q + Q
24970 var b = this.curve.point(null, null); // (N /
2) * Q
24973 for (var bits = []; t.cmpn(
0) !==
0; t.iushrn(
1))
24974 bits.push(t.andln(
1));
24976 for (var i = bits.length -
1; i
>=
0; i--) {
24977 if (bits[i] ===
0) {
24978 // N * Q + Q = ((N /
2) * Q + Q)) + (N /
2) * Q
24979 a = a.diffAdd(b, c);
24980 // N * Q =
2 * ((N /
2) * Q + Q))
24983 // N * Q = ((N /
2) * Q + Q) + ((N /
2) * Q)
24984 b = a.diffAdd(b, c);
24985 // N * Q + Q =
2 * ((N /
2) * Q + Q)
24992 Point.prototype.mulAdd = function mulAdd() {
24993 throw new Error('Not supported on Montgomery curve');
24996 Point.prototype.jumlAdd = function jumlAdd() {
24997 throw new Error('Not supported on Montgomery curve');
25000 Point.prototype.eq = function eq(other) {
25001 return this.getX().cmp(other.getX()) ===
0;
25004 Point.prototype.normalize = function normalize() {
25005 this.x = this.x.redMul(this.z.redInvm());
25006 this.z = this.curve.one;
25010 Point.prototype.getX = function getX() {
25011 // Normalize coordinates
25014 return this.x.fromRed();
25017 },{"../../elliptic":
97,"../curve":
100,"bn.js":
81,"inherits":
121}],
102:[function(require,module,exports){
25020 var curve = require('../curve');
25021 var elliptic = require('../../elliptic');
25022 var BN = require('bn.js');
25023 var inherits = require('inherits');
25024 var Base = curve.base;
25026 var assert = elliptic.utils.assert;
25028 function ShortCurve(conf) {
25029 Base.call(this, 'short', conf);
25031 this.a = new BN(conf.a,
16).toRed(this.red);
25032 this.b = new BN(conf.b,
16).toRed(this.red);
25033 this.tinv = this.two.redInvm();
25035 this.zeroA = this.a.fromRed().cmpn(
0) ===
0;
25036 this.threeA = this.a.fromRed().sub(this.p).cmpn(-
3) ===
0;
25038 // If the curve is endomorphic, precalculate beta and lambda
25039 this.endo = this._getEndomorphism(conf);
25040 this._endoWnafT1 = new Array(
4);
25041 this._endoWnafT2 = new Array(
4);
25043 inherits(ShortCurve, Base);
25044 module.exports = ShortCurve;
25046 ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {
25047 // No efficient endomorphism
25048 if (!this.zeroA || !this.g || !this.n || this.p.modn(
3) !==
1)
25051 // Compute beta and lambda, that lambda * P = (beta * Px; Py)
25055 beta = new BN(conf.beta,
16).toRed(this.red);
25057 var betas = this._getEndoRoots(this.p);
25058 // Choose the smallest beta
25059 beta = betas[
0].cmp(betas[
1]) <
0 ? betas[
0] : betas[
1];
25060 beta = beta.toRed(this.red);
25063 lambda = new BN(conf.lambda,
16);
25065 // Choose the lambda that is matching selected beta
25066 var lambdas = this._getEndoRoots(this.n);
25067 if (this.g.mul(lambdas[
0]).x.cmp(this.g.x.redMul(beta)) ===
0) {
25068 lambda = lambdas[
0];
25070 lambda = lambdas[
1];
25071 assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) ===
0);
25075 // Get basis vectors, used for balanced length-two representation
25078 basis = conf.basis.map(function(vec) {
25080 a: new BN(vec.a,
16),
25081 b: new BN(vec.b,
16)
25085 basis = this._getEndoBasis(lambda);
25095 ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {
25096 // Find roots of for x^
2 + x +
1 in F
25097 // Root = (-
1 +- Sqrt(-
3)) /
2
25099 var red = num === this.p ? this.red : BN.mont(num);
25100 var tinv = new BN(
2).toRed(red).redInvm();
25101 var ntinv = tinv.redNeg();
25103 var s = new BN(
3).toRed(red).redNeg().redSqrt().redMul(tinv);
25105 var l1 = ntinv.redAdd(s).fromRed();
25106 var l2 = ntinv.redSub(s).fromRed();
25110 ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {
25111 // aprxSqrt
>= sqrt(this.n)
25112 var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() /
2));
25115 // Run EGCD, until r(L +
1) < aprxSqrt
25117 var v = this.n.clone();
25118 var x1 = new BN(
1);
25119 var y1 = new BN(
0);
25120 var x2 = new BN(
0);
25121 var y2 = new BN(
1);
25123 // NOTE: all vectors are roots of: a + b * lambda =
0 (mod n)
25137 while (u.cmpn(
0) !==
0) {
25139 r = v.sub(q.mul(u));
25140 x = x2.sub(q.mul(x1));
25141 var y = y2.sub(q.mul(y1));
25143 if (!a1 && r.cmp(aprxSqrt) <
0) {
25148 } else if (a1 && ++i ===
2) {
25163 var len1 = a1.sqr().add(b1.sqr());
25164 var len2 = a2.sqr().add(b2.sqr());
25165 if (len2.cmp(len1)
>=
0) {
25186 ShortCurve.prototype._endoSplit = function _endoSplit(k) {
25187 var basis = this.endo.basis;
25191 var c1 = v2.b.mul(k).divRound(this.n);
25192 var c2 = v1.b.neg().mul(k).divRound(this.n);
25194 var p1 = c1.mul(v1.a);
25195 var p2 = c2.mul(v2.a);
25196 var q1 = c1.mul(v1.b);
25197 var q2 = c2.mul(v2.b);
25199 // Calculate answer
25200 var k1 = k.sub(p1).sub(p2);
25201 var k2 = q1.add(q2).neg();
25202 return { k1: k1, k2: k2 };
25205 ShortCurve.prototype.pointFromX = function pointFromX(x, odd) {
25208 x = x.toRed(this.red);
25210 var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);
25211 var y = y2.redSqrt();
25212 if (y.redSqr().redSub(y2).cmp(this.zero) !==
0)
25213 throw new Error('invalid point');
25215 // XXX Is there any way to tell if the number is odd without converting it
25216 // to non-red form?
25217 var isOdd = y.fromRed().isOdd();
25218 if (odd && !isOdd || !odd && isOdd)
25221 return this.point(x, y);
25224 ShortCurve.prototype.validate = function validate(point) {
25231 var ax = this.a.redMul(x);
25232 var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);
25233 return y.redSqr().redISub(rhs).cmpn(
0) ===
0;
25236 ShortCurve.prototype._endoWnafMulAdd =
25237 function _endoWnafMulAdd(points, coeffs, jacobianResult) {
25238 var npoints = this._endoWnafT1;
25239 var ncoeffs = this._endoWnafT2;
25240 for (var i =
0; i < points.length; i++) {
25241 var split = this._endoSplit(coeffs[i]);
25243 var beta = p._getBeta();
25245 if (split.k1.negative) {
25249 if (split.k2.negative) {
25251 beta = beta.neg(true);
25254 npoints[i *
2] = p;
25255 npoints[i *
2 +
1] = beta;
25256 ncoeffs[i *
2] = split.k1;
25257 ncoeffs[i *
2 +
1] = split.k2;
25259 var res = this._wnafMulAdd(
1, npoints, ncoeffs, i *
2, jacobianResult);
25261 // Clean-up references to points and coefficients
25262 for (var j =
0; j < i *
2; j++) {
25269 function Point(curve, x, y, isRed) {
25270 Base.BasePoint.call(this, curve, 'affine');
25271 if (x === null && y === null) {
25276 this.x = new BN(x,
16);
25277 this.y = new BN(y,
16);
25278 // Force redgomery representation when loading from JSON
25280 this.x.forceRed(this.curve.red);
25281 this.y.forceRed(this.curve.red);
25284 this.x = this.x.toRed(this.curve.red);
25286 this.y = this.y.toRed(this.curve.red);
25290 inherits(Point, Base.BasePoint);
25292 ShortCurve.prototype.point = function point(x, y, isRed) {
25293 return new Point(this, x, y, isRed);
25296 ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {
25297 return Point.fromJSON(this, obj, red);
25300 Point.prototype._getBeta = function _getBeta() {
25301 if (!this.curve.endo)
25304 var pre = this.precomputed;
25305 if (pre && pre.beta)
25308 var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);
25310 var curve = this.curve;
25311 var endoMul = function(p) {
25312 return curve.point(p.x.redMul(curve.endo.beta), p.y);
25315 beta.precomputed = {
25319 points: pre.naf.points.map(endoMul)
25321 doubles: pre.doubles && {
25322 step: pre.doubles.step,
25323 points: pre.doubles.points.map(endoMul)
25330 Point.prototype.toJSON = function toJSON() {
25331 if (!this.precomputed)
25332 return [ this.x, this.y ];
25334 return [ this.x, this.y, this.precomputed && {
25335 doubles: this.precomputed.doubles && {
25336 step: this.precomputed.doubles.step,
25337 points: this.precomputed.doubles.points.slice(
1)
25339 naf: this.precomputed.naf && {
25340 wnd: this.precomputed.naf.wnd,
25341 points: this.precomputed.naf.points.slice(
1)
25346 Point.fromJSON = function fromJSON(curve, obj, red) {
25347 if (typeof obj === 'string')
25348 obj = JSON.parse(obj);
25349 var res = curve.point(obj[
0], obj[
1], red);
25353 function obj2point(obj) {
25354 return curve.point(obj[
0], obj[
1], red);
25358 res.precomputed = {
25360 doubles: pre.doubles && {
25361 step: pre.doubles.step,
25362 points: [ res ].concat(pre.doubles.points.map(obj2point))
25366 points: [ res ].concat(pre.naf.points.map(obj2point))
25372 Point.prototype.inspect = function inspect() {
25373 if (this.isInfinity())
25374 return '
<EC Point Infinity
>';
25375 return '
<EC Point x: ' + this.x.fromRed().toString(
16,
2) +
25376 ' y: ' + this.y.fromRed().toString(
16,
2) + '
>';
25379 Point.prototype.isInfinity = function isInfinity() {
25383 Point.prototype.add = function add(p) {
25397 if (this.neg().eq(p))
25398 return this.curve.point(null, null);
25401 if (this.x.cmp(p.x) ===
0)
25402 return this.curve.point(null, null);
25404 var c = this.y.redSub(p.y);
25405 if (c.cmpn(
0) !==
0)
25406 c = c.redMul(this.x.redSub(p.x).redInvm());
25407 var nx = c.redSqr().redISub(this.x).redISub(p.x);
25408 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
25409 return this.curve.point(nx, ny);
25412 Point.prototype.dbl = function dbl() {
25417 var ys1 = this.y.redAdd(this.y);
25418 if (ys1.cmpn(
0) ===
0)
25419 return this.curve.point(null, null);
25421 var a = this.curve.a;
25423 var x2 = this.x.redSqr();
25424 var dyinv = ys1.redInvm();
25425 var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);
25427 var nx = c.redSqr().redISub(this.x.redAdd(this.x));
25428 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
25429 return this.curve.point(nx, ny);
25432 Point.prototype.getX = function getX() {
25433 return this.x.fromRed();
25436 Point.prototype.getY = function getY() {
25437 return this.y.fromRed();
25440 Point.prototype.mul = function mul(k) {
25443 if (this._hasDoubles(k))
25444 return this.curve._fixedNafMul(this, k);
25445 else if (this.curve.endo)
25446 return this.curve._endoWnafMulAdd([ this ], [ k ]);
25448 return this.curve._wnafMul(this, k);
25451 Point.prototype.mulAdd = function mulAdd(k1, p2, k2) {
25452 var points = [ this, p2 ];
25453 var coeffs = [ k1, k2 ];
25454 if (this.curve.endo)
25455 return this.curve._endoWnafMulAdd(points, coeffs);
25457 return this.curve._wnafMulAdd(
1, points, coeffs,
2);
25460 Point.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {
25461 var points = [ this, p2 ];
25462 var coeffs = [ k1, k2 ];
25463 if (this.curve.endo)
25464 return this.curve._endoWnafMulAdd(points, coeffs, true);
25466 return this.curve._wnafMulAdd(
1, points, coeffs,
2, true);
25469 Point.prototype.eq = function eq(p) {
25470 return this === p ||
25471 this.inf === p.inf &&
25472 (this.inf || this.x.cmp(p.x) ===
0 && this.y.cmp(p.y) ===
0);
25475 Point.prototype.neg = function neg(_precompute) {
25479 var res = this.curve.point(this.x, this.y.redNeg());
25480 if (_precompute && this.precomputed) {
25481 var pre = this.precomputed;
25482 var negate = function(p) {
25485 res.precomputed = {
25488 points: pre.naf.points.map(negate)
25490 doubles: pre.doubles && {
25491 step: pre.doubles.step,
25492 points: pre.doubles.points.map(negate)
25499 Point.prototype.toJ = function toJ() {
25501 return this.curve.jpoint(null, null, null);
25503 var res = this.curve.jpoint(this.x, this.y, this.curve.one);
25507 function JPoint(curve, x, y, z) {
25508 Base.BasePoint.call(this, curve, 'jacobian');
25509 if (x === null && y === null && z === null) {
25510 this.x = this.curve.one;
25511 this.y = this.curve.one;
25512 this.z = new BN(
0);
25514 this.x = new BN(x,
16);
25515 this.y = new BN(y,
16);
25516 this.z = new BN(z,
16);
25519 this.x = this.x.toRed(this.curve.red);
25521 this.y = this.y.toRed(this.curve.red);
25523 this.z = this.z.toRed(this.curve.red);
25525 this.zOne = this.z === this.curve.one;
25527 inherits(JPoint, Base.BasePoint);
25529 ShortCurve.prototype.jpoint = function jpoint(x, y, z) {
25530 return new JPoint(this, x, y, z);
25533 JPoint.prototype.toP = function toP() {
25534 if (this.isInfinity())
25535 return this.curve.point(null, null);
25537 var zinv = this.z.redInvm();
25538 var zinv2 = zinv.redSqr();
25539 var ax = this.x.redMul(zinv2);
25540 var ay = this.y.redMul(zinv2).redMul(zinv);
25542 return this.curve.point(ax, ay);
25545 JPoint.prototype.neg = function neg() {
25546 return this.curve.jpoint(this.x, this.y.redNeg(), this.z);
25549 JPoint.prototype.add = function add(p) {
25551 if (this.isInfinity())
25555 if (p.isInfinity())
25559 var pz2 = p.z.redSqr();
25560 var z2 = this.z.redSqr();
25561 var u1 = this.x.redMul(pz2);
25562 var u2 = p.x.redMul(z2);
25563 var s1 = this.y.redMul(pz2.redMul(p.z));
25564 var s2 = p.y.redMul(z2.redMul(this.z));
25566 var h = u1.redSub(u2);
25567 var r = s1.redSub(s2);
25568 if (h.cmpn(
0) ===
0) {
25569 if (r.cmpn(
0) !==
0)
25570 return this.curve.jpoint(null, null, null);
25575 var h2 = h.redSqr();
25576 var h3 = h2.redMul(h);
25577 var v = u1.redMul(h2);
25579 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
25580 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
25581 var nz = this.z.redMul(p.z).redMul(h);
25583 return this.curve.jpoint(nx, ny, nz);
25586 JPoint.prototype.mixedAdd = function mixedAdd(p) {
25588 if (this.isInfinity())
25592 if (p.isInfinity())
25596 var z2 = this.z.redSqr();
25598 var u2 = p.x.redMul(z2);
25600 var s2 = p.y.redMul(z2).redMul(this.z);
25602 var h = u1.redSub(u2);
25603 var r = s1.redSub(s2);
25604 if (h.cmpn(
0) ===
0) {
25605 if (r.cmpn(
0) !==
0)
25606 return this.curve.jpoint(null, null, null);
25611 var h2 = h.redSqr();
25612 var h3 = h2.redMul(h);
25613 var v = u1.redMul(h2);
25615 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
25616 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
25617 var nz = this.z.redMul(h);
25619 return this.curve.jpoint(nx, ny, nz);
25622 JPoint.prototype.dblp = function dblp(pow) {
25625 if (this.isInfinity())
25630 if (this.curve.zeroA || this.curve.threeA) {
25632 for (var i =
0; i < pow; i++)
25637 //
1M +
2S +
1A + N * (
4S +
5M +
8A)
25638 // N =
1 =
> 6M +
6S +
9A
25639 var a = this.curve.a;
25640 var tinv = this.curve.tinv;
25645 var jz4 = jz.redSqr().redSqr();
25648 var jyd = jy.redAdd(jy);
25649 for (var i =
0; i < pow; i++) {
25650 var jx2 = jx.redSqr();
25651 var jyd2 = jyd.redSqr();
25652 var jyd4 = jyd2.redSqr();
25653 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
25655 var t1 = jx.redMul(jyd2);
25656 var nx = c.redSqr().redISub(t1.redAdd(t1));
25657 var t2 = t1.redISub(nx);
25658 var dny = c.redMul(t2);
25659 dny = dny.redIAdd(dny).redISub(jyd4);
25660 var nz = jyd.redMul(jz);
25662 jz4 = jz4.redMul(jyd4);
25669 return this.curve.jpoint(jx, jyd.redMul(tinv), jz);
25672 JPoint.prototype.dbl = function dbl() {
25673 if (this.isInfinity())
25676 if (this.curve.zeroA)
25677 return this._zeroDbl();
25678 else if (this.curve.threeA)
25679 return this._threeDbl();
25681 return this._dbl();
25684 JPoint.prototype._zeroDbl = function _zeroDbl() {
25690 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-
0.html
25691 // #doubling-mdbl-
2007-bl
25695 var xx = this.x.redSqr();
25697 var yy = this.y.redSqr();
25699 var yyyy = yy.redSqr();
25700 // S =
2 * ((X1 + YY)^
2 - XX - YYYY)
25701 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
25703 // M =
3 * XX + a; a =
0
25704 var m = xx.redAdd(xx).redIAdd(xx);
25706 var t = m.redSqr().redISub(s).redISub(s);
25709 var yyyy8 = yyyy.redIAdd(yyyy);
25710 yyyy8 = yyyy8.redIAdd(yyyy8);
25711 yyyy8 = yyyy8.redIAdd(yyyy8);
25715 // Y3 = M * (S - T) -
8 * YYYY
25716 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
25718 nz = this.y.redAdd(this.y);
25720 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-
0.html
25721 // #doubling-dbl-
2009-l
25725 var a = this.x.redSqr();
25727 var b = this.y.redSqr();
25729 var c = b.redSqr();
25730 // D =
2 * ((X1 + B)^
2 - A - C)
25731 var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);
25734 var e = a.redAdd(a).redIAdd(a);
25736 var f = e.redSqr();
25739 var c8 = c.redIAdd(c);
25740 c8 = c8.redIAdd(c8);
25741 c8 = c8.redIAdd(c8);
25744 nx = f.redISub(d).redISub(d);
25745 // Y3 = E * (D - X3) -
8 * C
25746 ny = e.redMul(d.redISub(nx)).redISub(c8);
25747 // Z3 =
2 * Y1 * Z1
25748 nz = this.y.redMul(this.z);
25749 nz = nz.redIAdd(nz);
25752 return this.curve.jpoint(nx, ny, nz);
25755 JPoint.prototype._threeDbl = function _threeDbl() {
25761 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-
3.html
25762 // #doubling-mdbl-
2007-bl
25766 var xx = this.x.redSqr();
25768 var yy = this.y.redSqr();
25770 var yyyy = yy.redSqr();
25771 // S =
2 * ((X1 + YY)^
2 - XX - YYYY)
25772 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
25775 var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);
25777 var t = m.redSqr().redISub(s).redISub(s);
25780 // Y3 = M * (S - T) -
8 * YYYY
25781 var yyyy8 = yyyy.redIAdd(yyyy);
25782 yyyy8 = yyyy8.redIAdd(yyyy8);
25783 yyyy8 = yyyy8.redIAdd(yyyy8);
25784 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
25786 nz = this.y.redAdd(this.y);
25788 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-
3.html#doubling-dbl-
2001-b
25792 var delta = this.z.redSqr();
25794 var gamma = this.y.redSqr();
25795 // beta = X1 * gamma
25796 var beta = this.x.redMul(gamma);
25797 // alpha =
3 * (X1 - delta) * (X1 + delta)
25798 var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));
25799 alpha = alpha.redAdd(alpha).redIAdd(alpha);
25800 // X3 = alpha^
2 -
8 * beta
25801 var beta4 = beta.redIAdd(beta);
25802 beta4 = beta4.redIAdd(beta4);
25803 var beta8 = beta4.redAdd(beta4);
25804 nx = alpha.redSqr().redISub(beta8);
25805 // Z3 = (Y1 + Z1)^
2 - gamma - delta
25806 nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);
25807 // Y3 = alpha * (
4 * beta - X3) -
8 * gamma^
2
25808 var ggamma8 = gamma.redSqr();
25809 ggamma8 = ggamma8.redIAdd(ggamma8);
25810 ggamma8 = ggamma8.redIAdd(ggamma8);
25811 ggamma8 = ggamma8.redIAdd(ggamma8);
25812 ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);
25815 return this.curve.jpoint(nx, ny, nz);
25818 JPoint.prototype._dbl = function _dbl() {
25819 var a = this.curve.a;
25825 var jz4 = jz.redSqr().redSqr();
25827 var jx2 = jx.redSqr();
25828 var jy2 = jy.redSqr();
25830 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
25832 var jxd4 = jx.redAdd(jx);
25833 jxd4 = jxd4.redIAdd(jxd4);
25834 var t1 = jxd4.redMul(jy2);
25835 var nx = c.redSqr().redISub(t1.redAdd(t1));
25836 var t2 = t1.redISub(nx);
25838 var jyd8 = jy2.redSqr();
25839 jyd8 = jyd8.redIAdd(jyd8);
25840 jyd8 = jyd8.redIAdd(jyd8);
25841 jyd8 = jyd8.redIAdd(jyd8);
25842 var ny = c.redMul(t2).redISub(jyd8);
25843 var nz = jy.redAdd(jy).redMul(jz);
25845 return this.curve.jpoint(nx, ny, nz);
25848 JPoint.prototype.trpl = function trpl() {
25849 if (!this.curve.zeroA)
25850 return this.dbl().add(this);
25852 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-
0.html#tripling-tpl-
2007-bl
25856 var xx = this.x.redSqr();
25858 var yy = this.y.redSqr();
25860 var zz = this.z.redSqr();
25862 var yyyy = yy.redSqr();
25863 // M =
3 * XX + a * ZZ2; a =
0
25864 var m = xx.redAdd(xx).redIAdd(xx);
25866 var mm = m.redSqr();
25867 // E =
6 * ((X1 + YY)^
2 - XX - YYYY) - MM
25868 var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
25870 e = e.redAdd(e).redIAdd(e);
25873 var ee = e.redSqr();
25875 var t = yyyy.redIAdd(yyyy);
25879 // U = (M + E)^
2 - MM - EE - T
25880 var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);
25881 // X3 =
4 * (X1 * EE -
4 * YY * U)
25882 var yyu4 = yy.redMul(u);
25883 yyu4 = yyu4.redIAdd(yyu4);
25884 yyu4 = yyu4.redIAdd(yyu4);
25885 var nx = this.x.redMul(ee).redISub(yyu4);
25886 nx = nx.redIAdd(nx);
25887 nx = nx.redIAdd(nx);
25888 // Y3 =
8 * Y1 * (U * (T - U) - E * EE)
25889 var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));
25890 ny = ny.redIAdd(ny);
25891 ny = ny.redIAdd(ny);
25892 ny = ny.redIAdd(ny);
25893 // Z3 = (Z1 + E)^
2 - ZZ - EE
25894 var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);
25896 return this.curve.jpoint(nx, ny, nz);
25899 JPoint.prototype.mul = function mul(k, kbase) {
25900 k = new BN(k, kbase);
25902 return this.curve._wnafMul(this, k);
25905 JPoint.prototype.eq = function eq(p) {
25906 if (p.type === 'affine')
25907 return this.eq(p.toJ());
25912 // x1 * z2^
2 == x2 * z1^
2
25913 var z2 = this.z.redSqr();
25914 var pz2 = p.z.redSqr();
25915 if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(
0) !==
0)
25918 // y1 * z2^
3 == y2 * z1^
3
25919 var z3 = z2.redMul(this.z);
25920 var pz3 = pz2.redMul(p.z);
25921 return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(
0) ===
0;
25924 JPoint.prototype.eqXToP = function eqXToP(x) {
25925 var zs = this.z.redSqr();
25926 var rx = x.toRed(this.curve.red).redMul(zs);
25927 if (this.x.cmp(rx) ===
0)
25930 var xc = x.clone();
25931 var t = this.curve.redN.redMul(zs);
25933 xc.iadd(this.curve.n);
25934 if (xc.cmp(this.curve.p)
>=
0)
25938 if (this.x.cmp(rx) ===
0)
25944 JPoint.prototype.inspect = function inspect() {
25945 if (this.isInfinity())
25946 return '
<EC JPoint Infinity
>';
25947 return '
<EC JPoint x: ' + this.x.toString(
16,
2) +
25948 ' y: ' + this.y.toString(
16,
2) +
25949 ' z: ' + this.z.toString(
16,
2) + '
>';
25952 JPoint.prototype.isInfinity = function isInfinity() {
25953 // XXX This code assumes that zero is always zero in red
25954 return this.z.cmpn(
0) ===
0;
25957 },{"../../elliptic":
97,"../curve":
100,"bn.js":
81,"inherits":
121}],
103:[function(require,module,exports){
25960 var curves = exports;
25962 var hash = require('hash.js');
25963 var elliptic = require('../elliptic');
25965 var assert = elliptic.utils.assert;
25967 function PresetCurve(options) {
25968 if (options.type === 'short')
25969 this.curve = new elliptic.curve.short(options);
25970 else if (options.type === 'edwards')
25971 this.curve = new elliptic.curve.edwards(options);
25973 this.curve = new elliptic.curve.mont(options);
25974 this.g = this.curve.g;
25975 this.n = this.curve.n;
25976 this.hash = options.hash;
25978 assert(this.g.validate(), 'Invalid curve');
25979 assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');
25981 curves.PresetCurve = PresetCurve;
25983 function defineCurve(name, options) {
25984 Object.defineProperty(curves, name, {
25985 configurable: true,
25988 var curve = new PresetCurve(options);
25989 Object.defineProperty(curves, name, {
25990 configurable: true,
25999 defineCurve('p192', {
26002 p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',
26003 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',
26004 b: '
64210519 e59c80e7
0fa7e9ab
72243049 feb8deec c146b9b1',
26005 n: 'ffffffff ffffffff ffffffff
99def836
146bc9b1 b4d22831',
26009 '
188da80e b03090f6
7cbf20eb
43a18800 f4ff0afd
82ff1012',
26010 '
07192b95 ffc8da78
631011ed
6b24cdd5
73f977a1
1e794811'
26014 defineCurve('p224', {
26017 p: 'ffffffff ffffffff ffffffff ffffffff
00000000 00000000 00000001',
26018 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',
26019 b: 'b4050a85
0c04b3ab f5413256
5044b0b7 d7bfd8ba
270b3943
2355ffb4',
26020 n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e
13dd2945
5c5c2a3d',
26024 'b70e0cbd
6bb4bf7f
321390b9
4a03c1d3
56c21122
343280d6
115c1d21',
26025 'bd376388 b5f723fb
4c22dfe6 cd4375a0
5a074764
44d58199
85007e34'
26029 defineCurve('p256', {
26032 p: 'ffffffff
00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',
26033 a: 'ffffffff
00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',
26034 b: '
5ac635d8 aa3a93e7 b3ebbd55
769886bc
651d06b0 cc53b0f6
3bce3c3e
27d2604b',
26035 n: 'ffffffff
00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',
26039 '
6b17d1f2 e12c4247 f8bce6e5
63a440f2
77037d81
2deb33a0 f4a13945 d898c296',
26040 '
4fe342e2 fe1a7f9b
8ee7eb4a
7c0f9e16
2bce3357
6b315ece cbb64068
37bf51f5'
26044 defineCurve('p384', {
26047 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
26048 'fffffffe ffffffff
00000000 00000000 ffffffff',
26049 a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
26050 'fffffffe ffffffff
00000000 00000000 fffffffc',
26051 b: 'b3312fa7 e23ee7e4
988e056b e3f82d19
181d9c6e fe814112
0314088f ' +
26052 '
5013875a c656398d
8a2ed19d
2a85c8ed d3ec2aef',
26053 n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +
26054 'f4372ddf
581a0db2
48b0a77a ecec196a ccc52973',
26058 'aa87ca22 be8b0537
8eb1c71e f320ad74
6e1d3b62
8ba79b98
59f741e0
82542a38 ' +
26059 '
5502f25d bf55296c
3a545e38
72760ab7',
26060 '
3617de4a
96262c6f
5d9e98bf
9292dc29 f8f41dbd
289a147c e9da3113 b5f0b8c0 ' +
26061 '
0a60b1ce
1d7e819d
7a431d7c
90ea0e5f'
26065 defineCurve('p521', {
26068 p: '
000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
26069 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
26070 'ffffffff ffffffff ffffffff ffffffff ffffffff',
26071 a: '
000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
26072 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
26073 'ffffffff ffffffff ffffffff ffffffff fffffffc',
26074 b: '
00000051 953eb961
8e1c9a1f
929a21a0 b68540ee a2da725b ' +
26075 '
99b315f3 b8b48991
8ef109e1
56193951 ec7e937b
1652c0bd ' +
26076 '
3bb1bf07
3573df88
3d2c34f1 ef451fd4
6b503f00',
26077 n: '
000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
26078 'ffffffff ffffffff fffffffa
51868783 bf2f966b
7fcc0148 ' +
26079 'f709a5d0
3bb5c9b8
899c47ae bb6fb71e
91386409',
26083 '
000000c6
858e06b7
0404e9cd
9e3ecb66
2395b442
9c648139 ' +
26084 '
053fb521 f828af60
6b4d3dba a14b5e77 efe75928 fe1dc127 ' +
26085 'a2ffa8de
3348b3c1
856a429b f97e7e31 c2e5bd66',
26086 '
00000118 39296a78
9a3bc004
5c8a5fb4
2c7d1bd9
98f54449 ' +
26087 '
579b4468
17afbd17
273e662c
97ee7299
5ef42640 c550b901 ' +
26088 '
3fad0761
353c7086 a272c240
88be9476
9fd16650'
26092 defineCurve('curve25519', {
26095 p: '
7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
26098 n: '
1000000000000000 0000000000000000 14def9dea2f79cd6
5812631a5cf5d3ed',
26106 defineCurve('ed25519', {
26109 p: '
7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
26112 // -
121665 * (
121666^(-
1)) (mod P)
26113 d: '
52036cee2b6ffe73
8cc740797779e898
00700a4d4141d8ab
75eb4dca135978a3',
26114 n: '
1000000000000000 0000000000000000 14def9dea2f79cd6
5812631a5cf5d3ed',
26118 '
216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',
26121 '
6666666666666666666666666666666666666666666666666666666666666658'
26127 pre = require('./precomputed/secp256k1');
26132 defineCurve('secp256k1', {
26135 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',
26138 n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',
26142 // Precomputed endomorphism
26143 beta: '
7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',
26144 lambda: '
5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',
26147 a: '
3086d221a7d46bcde86c90e49284eb15',
26148 b: '-e4437ed6010e88286f547fa90abfe4c3'
26151 a: '
114ca50f7a8e2f3f657c1108d9d44cfd8',
26152 b: '
3086d221a7d46bcde86c90e49284eb15'
26158 '
79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',
26159 '
483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',
26164 },{"../elliptic":
97,"./precomputed/secp256k1":
110,"hash.js":
114}],
104:[function(require,module,exports){
26167 var BN = require('bn.js');
26168 var HmacDRBG = require('hmac-drbg');
26169 var elliptic = require('../../elliptic');
26170 var utils = elliptic.utils;
26171 var assert = utils.assert;
26173 var KeyPair = require('./key');
26174 var Signature = require('./signature');
26176 function EC(options) {
26177 if (!(this instanceof EC))
26178 return new EC(options);
26180 // Shortcut `elliptic.ec(curve-name)`
26181 if (typeof options === 'string') {
26182 assert(elliptic.curves.hasOwnProperty(options), 'Unknown curve ' + options);
26184 options = elliptic.curves[options];
26187 // Shortcut for `elliptic.ec(elliptic.curves.curveName)`
26188 if (options instanceof elliptic.curves.PresetCurve)
26189 options = { curve: options };
26191 this.curve = options.curve.curve;
26192 this.n = this.curve.n;
26193 this.nh = this.n.ushrn(
1);
26194 this.g = this.curve.g;
26197 this.g = options.curve.g;
26198 this.g.precompute(options.curve.n.bitLength() +
1);
26200 // Hash for function for DRBG
26201 this.hash = options.hash || options.curve.hash;
26203 module.exports = EC;
26205 EC.prototype.keyPair = function keyPair(options) {
26206 return new KeyPair(this, options);
26209 EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {
26210 return KeyPair.fromPrivate(this, priv, enc);
26213 EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {
26214 return KeyPair.fromPublic(this, pub, enc);
26217 EC.prototype.genKeyPair = function genKeyPair(options) {
26221 // Instantiate Hmac_DRBG
26222 var drbg = new HmacDRBG({
26224 pers: options.pers,
26225 persEnc: options.persEnc || 'utf8',
26226 entropy: options.entropy || elliptic.rand(this.hash.hmacStrength),
26227 entropyEnc: options.entropy && options.entropyEnc || 'utf8',
26228 nonce: this.n.toArray()
26231 var bytes = this.n.byteLength();
26232 var ns2 = this.n.sub(new BN(
2));
26234 var priv = new BN(drbg.generate(bytes));
26235 if (priv.cmp(ns2)
> 0)
26239 return this.keyFromPrivate(priv);
26243 EC.prototype._truncateToN = function truncateToN(msg, truncOnly) {
26244 var delta = msg.byteLength() *
8 - this.n.bitLength();
26246 msg = msg.ushrn(delta);
26247 if (!truncOnly && msg.cmp(this.n)
>=
0)
26248 return msg.sub(this.n);
26253 EC.prototype.sign = function sign(msg, key, enc, options) {
26254 if (typeof enc === 'object') {
26261 key = this.keyFromPrivate(key, enc);
26262 msg = this._truncateToN(new BN(msg,
16));
26264 // Zero-extend key to provide enough entropy
26265 var bytes = this.n.byteLength();
26266 var bkey = key.getPrivate().toArray('be', bytes);
26268 // Zero-extend nonce to have the same byte size as N
26269 var nonce = msg.toArray('be', bytes);
26271 // Instantiate Hmac_DRBG
26272 var drbg = new HmacDRBG({
26276 pers: options.pers,
26277 persEnc: options.persEnc || 'utf8'
26280 // Number of bytes to generate
26281 var ns1 = this.n.sub(new BN(
1));
26283 for (var iter =
0; true; iter++) {
26284 var k = options.k ?
26286 new BN(drbg.generate(this.n.byteLength()));
26287 k = this._truncateToN(k, true);
26288 if (k.cmpn(
1) <=
0 || k.cmp(ns1)
>=
0)
26291 var kp = this.g.mul(k);
26292 if (kp.isInfinity())
26295 var kpX = kp.getX();
26296 var r = kpX.umod(this.n);
26297 if (r.cmpn(
0) ===
0)
26300 var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));
26301 s = s.umod(this.n);
26302 if (s.cmpn(
0) ===
0)
26305 var recoveryParam = (kp.getY().isOdd() ?
1 :
0) |
26306 (kpX.cmp(r) !==
0 ?
2 :
0);
26308 // Use complement of `s`, if it is
> `n /
2`
26309 if (options.canonical && s.cmp(this.nh)
> 0) {
26311 recoveryParam ^=
1;
26314 return new Signature({ r: r, s: s, recoveryParam: recoveryParam });
26318 EC.prototype.verify = function verify(msg, signature, key, enc) {
26319 msg = this._truncateToN(new BN(msg,
16));
26320 key = this.keyFromPublic(key, enc);
26321 signature = new Signature(signature, 'hex');
26323 // Perform primitive values validation
26324 var r = signature.r;
26325 var s = signature.s;
26326 if (r.cmpn(
1) <
0 || r.cmp(this.n)
>=
0)
26328 if (s.cmpn(
1) <
0 || s.cmp(this.n)
>=
0)
26331 // Validate signature
26332 var sinv = s.invm(this.n);
26333 var u1 = sinv.mul(msg).umod(this.n);
26334 var u2 = sinv.mul(r).umod(this.n);
26336 if (!this.curve._maxwellTrick) {
26337 var p = this.g.mulAdd(u1, key.getPublic(), u2);
26338 if (p.isInfinity())
26341 return p.getX().umod(this.n).cmp(r) ===
0;
26344 // NOTE: Greg Maxwell's trick, inspired by:
26345 // https://git.io/vad3K
26347 var p = this.g.jmulAdd(u1, key.getPublic(), u2);
26348 if (p.isInfinity())
26351 // Compare `p.x` of Jacobian point with `r`,
26352 // this will do `p.x == r * p.z^
2` instead of multiplying `p.x` by the
26353 // inverse of `p.z^
2`
26354 return p.eqXToP(r);
26357 EC.prototype.recoverPubKey = function(msg, signature, j, enc) {
26358 assert((
3 & j) === j, 'The recovery param is more than two bits');
26359 signature = new Signature(signature, enc);
26362 var e = new BN(msg);
26363 var r = signature.r;
26364 var s = signature.s;
26366 // A set LSB signifies that the y-coordinate is odd
26367 var isYOdd = j &
1;
26368 var isSecondKey = j
>> 1;
26369 if (r.cmp(this.curve.p.umod(this.curve.n))
>=
0 && isSecondKey)
26370 throw new Error('Unable to find sencond key candinate');
26372 //
1.1. Let x = r + jn.
26374 r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);
26376 r = this.curve.pointFromX(r, isYOdd);
26378 var rInv = signature.r.invm(n);
26379 var s1 = n.sub(e).mul(rInv).umod(n);
26380 var s2 = s.mul(rInv).umod(n);
26382 //
1.6.1 Compute Q = r^-
1 (sR - eG)
26383 // Q = r^-
1 (sR + -eG)
26384 return this.g.mulAdd(s1, r, s2);
26387 EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {
26388 signature = new Signature(signature, enc);
26389 if (signature.recoveryParam !== null)
26390 return signature.recoveryParam;
26392 for (var i =
0; i <
4; i++) {
26395 Qprime = this.recoverPubKey(e, signature, i);
26403 throw new Error('Unable to find valid recovery factor');
26406 },{"../../elliptic":
97,"./key":
105,"./signature":
106,"bn.js":
81,"hmac-drbg":
120}],
105:[function(require,module,exports){
26409 var BN = require('bn.js');
26410 var elliptic = require('../../elliptic');
26411 var utils = elliptic.utils;
26412 var assert = utils.assert;
26414 function KeyPair(ec, options) {
26419 // KeyPair(ec, { priv: ..., pub: ... })
26421 this._importPrivate(options.priv, options.privEnc);
26423 this._importPublic(options.pub, options.pubEnc);
26425 module.exports = KeyPair;
26427 KeyPair.fromPublic = function fromPublic(ec, pub, enc) {
26428 if (pub instanceof KeyPair)
26431 return new KeyPair(ec, {
26437 KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {
26438 if (priv instanceof KeyPair)
26441 return new KeyPair(ec, {
26447 KeyPair.prototype.validate = function validate() {
26448 var pub = this.getPublic();
26450 if (pub.isInfinity())
26451 return { result: false, reason: 'Invalid public key' };
26452 if (!pub.validate())
26453 return { result: false, reason: 'Public key is not a point' };
26454 if (!pub.mul(this.ec.curve.n).isInfinity())
26455 return { result: false, reason: 'Public key * N != O' };
26457 return { result: true, reason: null };
26460 KeyPair.prototype.getPublic = function getPublic(compact, enc) {
26461 // compact is optional argument
26462 if (typeof compact === 'string') {
26468 this.pub = this.ec.g.mul(this.priv);
26473 return this.pub.encode(enc, compact);
26476 KeyPair.prototype.getPrivate = function getPrivate(enc) {
26478 return this.priv.toString(
16,
2);
26483 KeyPair.prototype._importPrivate = function _importPrivate(key, enc) {
26484 this.priv = new BN(key, enc ||
16);
26486 // Ensure that the priv won't be bigger than n, otherwise we may fail
26487 // in fixed multiplication method
26488 this.priv = this.priv.umod(this.ec.curve.n);
26491 KeyPair.prototype._importPublic = function _importPublic(key, enc) {
26492 if (key.x || key.y) {
26493 // Montgomery points only have an `x` coordinate.
26494 // Weierstrass/Edwards points on the other hand have both `x` and
26495 // `y` coordinates.
26496 if (this.ec.curve.type === 'mont') {
26497 assert(key.x, 'Need x coordinate');
26498 } else if (this.ec.curve.type === 'short' ||
26499 this.ec.curve.type === 'edwards') {
26500 assert(key.x && key.y, 'Need both x and y coordinate');
26502 this.pub = this.ec.curve.point(key.x, key.y);
26505 this.pub = this.ec.curve.decodePoint(key, enc);
26509 KeyPair.prototype.derive = function derive(pub) {
26510 return pub.mul(this.priv).getX();
26514 KeyPair.prototype.sign = function sign(msg, enc, options) {
26515 return this.ec.sign(msg, this, enc, options);
26518 KeyPair.prototype.verify = function verify(msg, signature) {
26519 return this.ec.verify(msg, signature, this);
26522 KeyPair.prototype.inspect = function inspect() {
26523 return '
<Key priv: ' + (this.priv && this.priv.toString(
16,
2)) +
26524 ' pub: ' + (this.pub && this.pub.inspect()) + '
>';
26527 },{"../../elliptic":
97,"bn.js":
81}],
106:[function(require,module,exports){
26530 var BN = require('bn.js');
26532 var elliptic = require('../../elliptic');
26533 var utils = elliptic.utils;
26534 var assert = utils.assert;
26536 function Signature(options, enc) {
26537 if (options instanceof Signature)
26540 if (this._importDER(options, enc))
26543 assert(options.r && options.s, 'Signature without r or s');
26544 this.r = new BN(options.r,
16);
26545 this.s = new BN(options.s,
16);
26546 if (options.recoveryParam === undefined)
26547 this.recoveryParam = null;
26549 this.recoveryParam = options.recoveryParam;
26551 module.exports = Signature;
26553 function Position() {
26557 function getLength(buf, p) {
26558 var initial = buf[p.place++];
26559 if (!(initial &
0x80)) {
26562 var octetLen = initial &
0xf;
26564 for (var i =
0, off = p.place; i < octetLen; i++, off++) {
26572 function rmPadding(buf) {
26574 var len = buf.length -
1;
26575 while (!buf[i] && !(buf[i +
1] &
0x80) && i < len) {
26581 return buf.slice(i);
26584 Signature.prototype._importDER = function _importDER(data, enc) {
26585 data = utils.toArray(data, enc);
26586 var p = new Position();
26587 if (data[p.place++] !==
0x30) {
26590 var len = getLength(data, p);
26591 if ((len + p.place) !== data.length) {
26594 if (data[p.place++] !==
0x02) {
26597 var rlen = getLength(data, p);
26598 var r = data.slice(p.place, rlen + p.place);
26600 if (data[p.place++] !==
0x02) {
26603 var slen = getLength(data, p);
26604 if (data.length !== slen + p.place) {
26607 var s = data.slice(p.place, slen + p.place);
26608 if (r[
0] ===
0 && (r[
1] &
0x80)) {
26611 if (s[
0] ===
0 && (s[
1] &
0x80)) {
26615 this.r = new BN(r);
26616 this.s = new BN(s);
26617 this.recoveryParam = null;
26622 function constructLength(arr, len) {
26627 var octets =
1 + (Math.log(len) / Math.LN2
>>> 3);
26628 arr.push(octets |
0x80);
26630 arr.push((len
>>> (octets <<
3)) &
0xff);
26635 Signature.prototype.toDER = function toDER(enc) {
26636 var r = this.r.toArray();
26637 var s = this.s.toArray();
26641 r = [
0 ].concat(r);
26644 s = [
0 ].concat(s);
26649 while (!s[
0] && !(s[
1] &
0x80)) {
26652 var arr = [
0x02 ];
26653 constructLength(arr, r.length);
26654 arr = arr.concat(r);
26656 constructLength(arr, s.length);
26657 var backHalf = arr.concat(s);
26658 var res = [
0x30 ];
26659 constructLength(res, backHalf.length);
26660 res = res.concat(backHalf);
26661 return utils.encode(res, enc);
26664 },{"../../elliptic":
97,"bn.js":
81}],
107:[function(require,module,exports){
26667 var hash = require('hash.js');
26668 var elliptic = require('../../elliptic');
26669 var utils = elliptic.utils;
26670 var assert = utils.assert;
26671 var parseBytes = utils.parseBytes;
26672 var KeyPair = require('./key');
26673 var Signature = require('./signature');
26675 function EDDSA(curve) {
26676 assert(curve === 'ed25519', 'only tested with ed25519 so far');
26678 if (!(this instanceof EDDSA))
26679 return new EDDSA(curve);
26681 var curve = elliptic.curves[curve].curve;
26682 this.curve = curve;
26684 this.g.precompute(curve.n.bitLength() +
1);
26686 this.pointClass = curve.point().constructor;
26687 this.encodingLength = Math.ceil(curve.n.bitLength() /
8);
26688 this.hash = hash.sha512;
26691 module.exports = EDDSA;
26694 * @param {Array|String} message - message bytes
26695 * @param {Array|String|KeyPair} secret - secret bytes or a keypair
26696 * @returns {Signature} - signature
26698 EDDSA.prototype.sign = function sign(message, secret) {
26699 message = parseBytes(message);
26700 var key = this.keyFromSecret(secret);
26701 var r = this.hashInt(key.messagePrefix(), message);
26702 var R = this.g.mul(r);
26703 var Rencoded = this.encodePoint(R);
26704 var s_ = this.hashInt(Rencoded, key.pubBytes(), message)
26706 var S = r.add(s_).umod(this.curve.n);
26707 return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });
26711 * @param {Array} message - message bytes
26712 * @param {Array|String|Signature} sig - sig bytes
26713 * @param {Array|String|Point|KeyPair} pub - public key
26714 * @returns {Boolean} - true if public key matches sig of message
26716 EDDSA.prototype.verify = function verify(message, sig, pub) {
26717 message = parseBytes(message);
26718 sig = this.makeSignature(sig);
26719 var key = this.keyFromPublic(pub);
26720 var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);
26721 var SG = this.g.mul(sig.S());
26722 var RplusAh = sig.R().add(key.pub().mul(h));
26723 return RplusAh.eq(SG);
26726 EDDSA.prototype.hashInt = function hashInt() {
26727 var hash = this.hash();
26728 for (var i =
0; i < arguments.length; i++)
26729 hash.update(arguments[i]);
26730 return utils.intFromLE(hash.digest()).umod(this.curve.n);
26733 EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {
26734 return KeyPair.fromPublic(this, pub);
26737 EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {
26738 return KeyPair.fromSecret(this, secret);
26741 EDDSA.prototype.makeSignature = function makeSignature(sig) {
26742 if (sig instanceof Signature)
26744 return new Signature(this, sig);
26748 * * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-
03#section-
5.2
26750 * EDDSA defines methods for encoding and decoding points and integers. These are
26751 * helper convenience methods, that pass along to utility functions implied
26755 EDDSA.prototype.encodePoint = function encodePoint(point) {
26756 var enc = point.getY().toArray('le', this.encodingLength);
26757 enc[this.encodingLength -
1] |= point.getX().isOdd() ?
0x80 :
0;
26761 EDDSA.prototype.decodePoint = function decodePoint(bytes) {
26762 bytes = utils.parseBytes(bytes);
26764 var lastIx = bytes.length -
1;
26765 var normed = bytes.slice(
0, lastIx).concat(bytes[lastIx] & ~
0x80);
26766 var xIsOdd = (bytes[lastIx] &
0x80) !==
0;
26768 var y = utils.intFromLE(normed);
26769 return this.curve.pointFromY(y, xIsOdd);
26772 EDDSA.prototype.encodeInt = function encodeInt(num) {
26773 return num.toArray('le', this.encodingLength);
26776 EDDSA.prototype.decodeInt = function decodeInt(bytes) {
26777 return utils.intFromLE(bytes);
26780 EDDSA.prototype.isPoint = function isPoint(val) {
26781 return val instanceof this.pointClass;
26784 },{"../../elliptic":
97,"./key":
108,"./signature":
109,"hash.js":
114}],
108:[function(require,module,exports){
26787 var elliptic = require('../../elliptic');
26788 var utils = elliptic.utils;
26789 var assert = utils.assert;
26790 var parseBytes = utils.parseBytes;
26791 var cachedProperty = utils.cachedProperty;
26794 * @param {EDDSA} eddsa - instance
26795 * @param {Object} params - public/private key parameters
26797 * @param {Array
<Byte>} [params.secret] - secret seed bytes
26798 * @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)
26799 * @param {Array
<Byte>} [params.pub] - public key point encoded as bytes
26802 function KeyPair(eddsa, params) {
26803 this.eddsa = eddsa;
26804 this._secret = parseBytes(params.secret);
26805 if (eddsa.isPoint(params.pub))
26806 this._pub = params.pub;
26808 this._pubBytes = parseBytes(params.pub);
26811 KeyPair.fromPublic = function fromPublic(eddsa, pub) {
26812 if (pub instanceof KeyPair)
26814 return new KeyPair(eddsa, { pub: pub });
26817 KeyPair.fromSecret = function fromSecret(eddsa, secret) {
26818 if (secret instanceof KeyPair)
26820 return new KeyPair(eddsa, { secret: secret });
26823 KeyPair.prototype.secret = function secret() {
26824 return this._secret;
26827 cachedProperty(KeyPair, 'pubBytes', function pubBytes() {
26828 return this.eddsa.encodePoint(this.pub());
26831 cachedProperty(KeyPair, 'pub', function pub() {
26832 if (this._pubBytes)
26833 return this.eddsa.decodePoint(this._pubBytes);
26834 return this.eddsa.g.mul(this.priv());
26837 cachedProperty(KeyPair, 'privBytes', function privBytes() {
26838 var eddsa = this.eddsa;
26839 var hash = this.hash();
26840 var lastIx = eddsa.encodingLength -
1;
26842 var a = hash.slice(
0, eddsa.encodingLength);
26850 cachedProperty(KeyPair, 'priv', function priv() {
26851 return this.eddsa.decodeInt(this.privBytes());
26854 cachedProperty(KeyPair, 'hash', function hash() {
26855 return this.eddsa.hash().update(this.secret()).digest();
26858 cachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {
26859 return this.hash().slice(this.eddsa.encodingLength);
26862 KeyPair.prototype.sign = function sign(message) {
26863 assert(this._secret, 'KeyPair can only verify');
26864 return this.eddsa.sign(message, this);
26867 KeyPair.prototype.verify = function verify(message, sig) {
26868 return this.eddsa.verify(message, sig, this);
26871 KeyPair.prototype.getSecret = function getSecret(enc) {
26872 assert(this._secret, 'KeyPair is public only');
26873 return utils.encode(this.secret(), enc);
26876 KeyPair.prototype.getPublic = function getPublic(enc) {
26877 return utils.encode(this.pubBytes(), enc);
26880 module.exports = KeyPair;
26882 },{"../../elliptic":
97}],
109:[function(require,module,exports){
26885 var BN = require('bn.js');
26886 var elliptic = require('../../elliptic');
26887 var utils = elliptic.utils;
26888 var assert = utils.assert;
26889 var cachedProperty = utils.cachedProperty;
26890 var parseBytes = utils.parseBytes;
26893 * @param {EDDSA} eddsa - eddsa instance
26894 * @param {Array
<Bytes>|Object} sig -
26895 * @param {Array
<Bytes>|Point} [sig.R] - R point as Point or bytes
26896 * @param {Array
<Bytes>|bn} [sig.S] - S scalar as bn or bytes
26897 * @param {Array
<Bytes>} [sig.Rencoded] - R point encoded
26898 * @param {Array
<Bytes>} [sig.Sencoded] - S scalar encoded
26900 function Signature(eddsa, sig) {
26901 this.eddsa = eddsa;
26903 if (typeof sig !== 'object')
26904 sig = parseBytes(sig);
26906 if (Array.isArray(sig)) {
26908 R: sig.slice(
0, eddsa.encodingLength),
26909 S: sig.slice(eddsa.encodingLength)
26913 assert(sig.R && sig.S, 'Signature without R or S');
26915 if (eddsa.isPoint(sig.R))
26917 if (sig.S instanceof BN)
26920 this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;
26921 this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;
26924 cachedProperty(Signature, 'S', function S() {
26925 return this.eddsa.decodeInt(this.Sencoded());
26928 cachedProperty(Signature, 'R', function R() {
26929 return this.eddsa.decodePoint(this.Rencoded());
26932 cachedProperty(Signature, 'Rencoded', function Rencoded() {
26933 return this.eddsa.encodePoint(this.R());
26936 cachedProperty(Signature, 'Sencoded', function Sencoded() {
26937 return this.eddsa.encodeInt(this.S());
26940 Signature.prototype.toBytes = function toBytes() {
26941 return this.Rencoded().concat(this.Sencoded());
26944 Signature.prototype.toHex = function toHex() {
26945 return utils.encode(this.toBytes(), 'hex').toUpperCase();
26948 module.exports = Signature;
26950 },{"../../elliptic":
97,"bn.js":
81}],
110:[function(require,module,exports){
26956 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',
26957 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'
26960 '
8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',
26961 '
11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'
26964 '
175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',
26965 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'
26968 '
363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',
26969 '
4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'
26972 '
8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',
26973 '
4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'
26976 '
723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',
26977 '
96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'
26980 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',
26981 '
5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'
26984 '
100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',
26985 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'
26988 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',
26989 '
9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'
26992 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',
26993 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'
26996 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',
26997 '
9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'
27000 '
53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',
27001 '
5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'
27004 '
8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',
27005 '
10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'
27008 '
385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',
27009 '
283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'
27012 '
6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',
27013 '
7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'
27016 '
3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',
27017 '
56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'
27020 '
85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',
27021 '
7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'
27024 '
948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',
27025 '
53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'
27028 '
6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',
27029 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'
27032 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',
27033 '
4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'
27036 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',
27037 '
7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'
27040 '
213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',
27041 '
4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'
27044 '
4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',
27045 '
17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'
27048 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',
27049 '
6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'
27052 '
76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',
27053 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'
27056 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',
27057 '
893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'
27060 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',
27061 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'
27064 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',
27065 '
2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'
27068 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',
27069 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'
27072 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',
27073 '
7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'
27076 '
90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',
27077 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'
27080 '
8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',
27081 '
662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'
27084 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',
27085 '
1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'
27088 '
8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',
27089 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'
27092 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',
27093 '
2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'
27096 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',
27097 '
67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'
27100 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',
27101 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'
27104 '
324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',
27105 '
648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'
27108 '
4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',
27109 '
35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'
27112 '
9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',
27113 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'
27116 '
6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',
27117 '
9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'
27120 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',
27121 '
40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'
27124 '
7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',
27125 '
34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'
27128 '
928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',
27129 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'
27132 '
85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',
27133 '
1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'
27136 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',
27137 '
493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'
27140 '
827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',
27141 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'
27144 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',
27145 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'
27148 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',
27149 '
4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'
27152 '
1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',
27153 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'
27156 '
146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',
27157 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'
27160 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',
27161 '
6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'
27164 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',
27165 '
8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'
27168 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',
27169 '
7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'
27172 '
174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',
27173 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'
27176 '
959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',
27177 '
2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'
27180 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',
27181 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'
27184 '
64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',
27185 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'
27188 '
8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',
27189 '
38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'
27192 '
13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',
27193 '
69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'
27196 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',
27197 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'
27200 '
8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',
27201 '
40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'
27204 '
8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',
27205 '
620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'
27208 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',
27209 '
7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'
27212 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',
27213 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82'
27221 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',
27222 '
388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'
27225 '
2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',
27226 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'
27229 '
5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',
27230 '
6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'
27233 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',
27234 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'
27237 '
774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',
27238 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'
27241 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',
27242 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'
27245 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',
27246 '
581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'
27249 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',
27250 '
4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'
27253 '
2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',
27254 '
85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'
27257 '
352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',
27258 '
321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'
27261 '
2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',
27262 '
2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'
27265 '
9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',
27266 '
73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'
27269 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',
27270 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'
27273 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',
27274 '
2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'
27277 '
6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',
27278 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'
27281 '
1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',
27282 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'
27285 '
605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',
27286 '
2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'
27289 '
62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',
27290 '
80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'
27293 '
80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',
27294 '
1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'
27297 '
7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',
27298 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'
27301 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',
27302 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'
27305 '
49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',
27306 '
758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'
27309 '
77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',
27310 '
958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'
27313 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',
27314 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'
27317 '
463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',
27318 '
5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'
27321 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',
27322 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'
27325 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',
27326 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'
27329 '
2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',
27330 '
4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'
27333 '
7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',
27334 '
91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'
27337 '
754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',
27338 '
673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'
27341 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',
27342 '
59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'
27345 '
186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',
27346 '
3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'
27349 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',
27350 '
55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'
27353 '
5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',
27354 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'
27357 '
290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',
27358 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'
27361 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',
27362 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'
27365 '
766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',
27366 '
744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'
27369 '
59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',
27370 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'
27373 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',
27374 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'
27377 '
7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',
27378 '
30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'
27381 '
948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',
27382 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'
27385 '
7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',
27386 '
100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'
27389 '
3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',
27390 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'
27393 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',
27394 '
8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'
27397 '
1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',
27398 '
68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'
27401 '
733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',
27402 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'
27405 '
15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',
27406 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'
27409 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',
27410 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'
27413 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',
27414 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'
27417 '
311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',
27418 '
66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'
27421 '
34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',
27422 '
9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'
27425 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',
27426 '
4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'
27429 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',
27430 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'
27433 '
32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',
27434 '
5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'
27437 '
7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',
27438 '
8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'
27441 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',
27442 '
8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'
27445 '
16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',
27446 '
5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'
27449 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',
27450 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'
27453 '
78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',
27454 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'
27457 '
494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',
27458 '
42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'
27461 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',
27462 '
204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'
27465 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',
27466 '
4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'
27469 '
841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',
27470 '
73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'
27473 '
5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',
27474 '
39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'
27477 '
36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',
27478 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'
27481 '
336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',
27482 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'
27485 '
8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',
27486 '
6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'
27489 '
1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',
27490 '
60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'
27493 '
85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',
27494 '
3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'
27497 '
29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',
27498 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'
27501 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',
27502 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'
27505 '
4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',
27506 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'
27509 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',
27510 '
6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'
27513 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',
27514 '
322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'
27517 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',
27518 '
6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'
27521 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',
27522 '
2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'
27525 '
591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',
27526 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'
27529 '
11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',
27530 '
998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'
27533 '
3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',
27534 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'
27537 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',
27538 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'
27541 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',
27542 '
6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'
27545 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',
27546 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'
27549 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',
27550 '
21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'
27553 '
347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',
27554 '
60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'
27557 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',
27558 '
49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'
27561 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',
27562 '
5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'
27565 '
4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',
27566 '
7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'
27569 '
3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',
27570 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'
27573 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',
27574 '
8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'
27577 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',
27578 '
39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'
27581 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',
27582 '
62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'
27585 '
48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',
27586 '
25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'
27589 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',
27590 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'
27593 '
6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',
27594 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'
27597 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',
27598 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'
27601 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',
27602 '
6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'
27605 '
13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',
27606 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'
27609 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',
27610 '
1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'
27613 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',
27614 '
5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'
27617 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',
27618 '
438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'
27621 '
8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',
27622 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'
27625 '
52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',
27626 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'
27629 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',
27630 '
6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'
27633 '
7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',
27634 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'
27637 '
5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',
27638 '
9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'
27641 '
32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',
27642 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'
27645 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',
27646 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'
27649 '
8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',
27650 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'
27653 '
4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',
27654 '
67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'
27657 '
3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',
27658 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'
27661 '
674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',
27662 '
299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'
27665 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',
27666 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'
27669 '
30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',
27670 '
462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'
27673 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',
27674 '
62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'
27677 '
93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',
27678 '
7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'
27681 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',
27682 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'
27685 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',
27686 '
4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'
27689 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',
27690 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'
27693 '
463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',
27694 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'
27697 '
7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',
27698 '
603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'
27701 '
74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',
27702 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'
27705 '
30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',
27706 '
553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'
27709 '
9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',
27710 '
712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'
27713 '
176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',
27714 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'
27717 '
75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',
27718 '
9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'
27721 '
809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',
27722 '
9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'
27725 '
1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',
27726 '
4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9'
27732 },{}],
111:[function(require,module,exports){
27735 var utils = exports;
27736 var BN = require('bn.js');
27737 var minAssert = require('minimalistic-assert');
27738 var minUtils = require('minimalistic-crypto-utils');
27740 utils.assert = minAssert;
27741 utils.toArray = minUtils.toArray;
27742 utils.zero2 = minUtils.zero2;
27743 utils.toHex = minUtils.toHex;
27744 utils.encode = minUtils.encode;
27746 // Represent num in a w-NAF form
27747 function getNAF(num, w) {
27749 var ws =
1 << (w +
1);
27750 var k = num.clone();
27751 while (k.cmpn(
1)
>=
0) {
27754 var mod = k.andln(ws -
1);
27755 if (mod
> (ws
>> 1) -
1)
27756 z = (ws
>> 1) - mod;
27765 // Optimization, shift by word if possible
27766 var shift = (k.cmpn(
0) !==
0 && k.andln(ws -
1) ===
0) ? (w +
1) :
1;
27767 for (var i =
1; i < shift; i++)
27774 utils.getNAF = getNAF;
27776 // Represent k1, k2 in a Joint Sparse Form
27777 function getJSF(k1, k2) {
27787 while (k1.cmpn(-d1)
> 0 || k2.cmpn(-d2)
> 0) {
27790 var m14 = (k1.andln(
3) + d1) &
3;
27791 var m24 = (k2.andln(
3) + d2) &
3;
27797 if ((m14 &
1) ===
0) {
27800 var m8 = (k1.andln(
7) + d1) &
7;
27801 if ((m8 ===
3 || m8 ===
5) && m24 ===
2)
27809 if ((m24 &
1) ===
0) {
27812 var m8 = (k2.andln(
7) + d2) &
7;
27813 if ((m8 ===
3 || m8 ===
5) && m14 ===
2)
27821 if (
2 * d1 === u1 +
1)
27823 if (
2 * d2 === u2 +
1)
27831 utils.getJSF = getJSF;
27833 function cachedProperty(obj, name, computer) {
27834 var key = '_' + name;
27835 obj.prototype[name] = function cachedProperty() {
27836 return this[key] !== undefined ? this[key] :
27837 this[key] = computer.call(this);
27840 utils.cachedProperty = cachedProperty;
27842 function parseBytes(bytes) {
27843 return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :
27846 utils.parseBytes = parseBytes;
27848 function intFromLE(bytes) {
27849 return new BN(bytes, 'hex', 'le');
27851 utils.intFromLE = intFromLE;
27854 },{
"bn.js":
81,
"minimalistic-assert":
123,
"minimalistic-crypto-utils":
124}],
112:[function(require,module,exports){
27859 "/home/ian/git/bitcoin/bitcoinjs-lib-browser"
27862 "_from":
"elliptic@latest",
27863 "_id":
"elliptic@6.4.0",
27865 "_installable": true,
27866 "_location":
"/elliptic",
27867 "_nodeVersion":
"7.0.0",
27868 "_npmOperationalInternal": {
27869 "host":
"packages-18-east.internal.npmjs.com",
27870 "tmp":
"tmp/elliptic-6.4.0.tgz_1487798866428_0.30510620190761983"
27873 "email":
"fedor@indutny.com",
27876 "_npmVersion":
"3.10.8",
27877 "_phantomChildren": {},
27879 "name":
"elliptic",
27889 "_resolved":
"https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz",
27890 "_shasum":
"cac9af8762c85836187003c8dfe193e5e2eae5df",
27891 "_shrinkwrap": null,
27892 "_spec":
"elliptic",
27893 "_where":
"/home/ian/git/bitcoin/bitcoinjs-lib-browser",
27895 "email":
"fedor@indutny.com",
27896 "name":
"Fedor Indutny"
27899 "url":
"https://github.com/indutny/elliptic/issues"
27903 "brorand":
"^1.0.1",
27904 "hash.js":
"^1.0.0",
27905 "hmac-drbg":
"^1.0.0",
27906 "inherits":
"^2.0.1",
27907 "minimalistic-assert":
"^1.0.0",
27908 "minimalistic-crypto-utils":
"^1.0.0"
27910 "description":
"EC cryptography",
27911 "devDependencies": {
27913 "coveralls":
"^2.11.3",
27915 "grunt-browserify":
"^5.0.0",
27916 "grunt-cli":
"^1.2.0",
27917 "grunt-contrib-connect":
"^1.0.0",
27918 "grunt-contrib-copy":
"^1.0.0",
27919 "grunt-contrib-uglify":
"^1.0.1",
27920 "grunt-mocha-istanbul":
"^3.0.1",
27921 "grunt-saucelabs":
"^8.6.2",
27922 "istanbul":
"^0.4.2",
27924 "jshint":
"^2.6.0",
27929 "shasum":
"cac9af8762c85836187003c8dfe193e5e2eae5df",
27930 "tarball":
"https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz"
27935 "gitHead":
"6b0d2b76caae91471649c8e21f0b1d3ba0f96090",
27936 "homepage":
"https://github.com/indutny/elliptic",
27944 "main":
"lib/elliptic.js",
27947 "email":
"fedor@indutny.com",
27951 "name":
"elliptic",
27952 "optionalDependencies": {},
27953 "readme":
"ERROR: No README data found!",
27956 "url":
"git+ssh://git@github.com/indutny/elliptic.git"
27959 "jscs":
"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
27960 "jshint":
"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
27961 "lint":
"npm run jscs && npm run jshint",
27962 "test":
"npm run lint && npm run unit",
27963 "unit":
"istanbul test _mocha --reporter=spec test/index.js",
27964 "version":
"grunt dist && git add dist/"
27969 },{}],
113:[function(require,module,exports){
27970 (function (Buffer){
27972 var Transform = require('stream').Transform
27973 var inherits = require('inherits')
27975 function HashBase (blockSize) {
27976 Transform.call(this)
27978 this._block = new Buffer(blockSize)
27979 this._blockSize = blockSize
27980 this._blockOffset =
0
27981 this._length = [
0,
0,
0,
0]
27983 this._finalized = false
27986 inherits(HashBase, Transform)
27988 HashBase.prototype._transform = function (chunk, encoding, callback) {
27991 if (encoding !== 'buffer') chunk = new Buffer(chunk, encoding)
28000 HashBase.prototype._flush = function (callback) {
28003 this.push(this._digest())
28011 HashBase.prototype.update = function (data, encoding) {
28012 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
28013 if (this._finalized) throw new Error('Digest already called')
28014 if (!Buffer.isBuffer(data)) data = new Buffer(data, encoding || 'binary')
28017 var block = this._block
28019 while (this._blockOffset + data.length - offset
>= this._blockSize) {
28020 for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]
28022 this._blockOffset =
0
28024 while (offset < data.length) block[this._blockOffset++] = data[offset++]
28027 for (var j =
0, carry = data.length *
8; carry
> 0; ++j) {
28028 this._length[j] += carry
28029 carry = (this._length[j] /
0x0100000000) |
0
28030 if (carry
> 0) this._length[j] -=
0x0100000000 * carry
28036 HashBase.prototype._update = function (data) {
28037 throw new Error('_update is not implemented')
28040 HashBase.prototype.digest = function (encoding) {
28041 if (this._finalized) throw new Error('Digest already called')
28042 this._finalized = true
28044 var digest = this._digest()
28045 if (encoding !== undefined) digest = digest.toString(encoding)
28049 HashBase.prototype._digest = function () {
28050 throw new Error('_digest is not implemented')
28053 module.exports = HashBase
28055 }).call(this,require(
"buffer").Buffer)
28056 },{
"buffer":
5,
"inherits":
121,
"stream":
28}],
114:[function(require,module,exports){
28057 var hash = exports;
28059 hash.utils = require('./hash/utils');
28060 hash.common = require('./hash/common');
28061 hash.sha = require('./hash/sha');
28062 hash.ripemd = require('./hash/ripemd');
28063 hash.hmac = require('./hash/hmac');
28065 // Proxy hash functions to the main object
28066 hash.sha1 = hash.sha.sha1;
28067 hash.sha256 = hash.sha.sha256;
28068 hash.sha224 = hash.sha.sha224;
28069 hash.sha384 = hash.sha.sha384;
28070 hash.sha512 = hash.sha.sha512;
28071 hash.ripemd160 = hash.ripemd.ripemd160;
28073 },{
"./hash/common":
115,
"./hash/hmac":
116,
"./hash/ripemd":
117,
"./hash/sha":
118,
"./hash/utils":
119}],
115:[function(require,module,exports){
28074 var hash = require('../hash');
28075 var utils = hash.utils;
28076 var assert = utils.assert;
28078 function BlockHash() {
28079 this.pending = null;
28080 this.pendingTotal =
0;
28081 this.blockSize = this.constructor.blockSize;
28082 this.outSize = this.constructor.outSize;
28083 this.hmacStrength = this.constructor.hmacStrength;
28084 this.padLength = this.constructor.padLength /
8;
28085 this.endian = 'big';
28087 this._delta8 = this.blockSize /
8;
28088 this._delta32 = this.blockSize /
32;
28090 exports.BlockHash = BlockHash;
28092 BlockHash.prototype.update = function update(msg, enc) {
28093 // Convert message to array, pad it, and join into
32bit blocks
28094 msg = utils.toArray(msg, enc);
28096 this.pending = msg;
28098 this.pending = this.pending.concat(msg);
28099 this.pendingTotal += msg.length;
28101 // Enough data, try updating
28102 if (this.pending.length
>= this._delta8) {
28103 msg = this.pending;
28105 // Process pending data in blocks
28106 var r = msg.length % this._delta8;
28107 this.pending = msg.slice(msg.length - r, msg.length);
28108 if (this.pending.length ===
0)
28109 this.pending = null;
28111 msg = utils.join32(msg,
0, msg.length - r, this.endian);
28112 for (var i =
0; i < msg.length; i += this._delta32)
28113 this._update(msg, i, i + this._delta32);
28119 BlockHash.prototype.digest = function digest(enc) {
28120 this.update(this._pad());
28121 assert(this.pending === null);
28123 return this._digest(enc);
28126 BlockHash.prototype._pad = function pad() {
28127 var len = this.pendingTotal;
28128 var bytes = this._delta8;
28129 var k = bytes - ((len + this.padLength) % bytes);
28130 var res = new Array(k + this.padLength);
28132 for (var i =
1; i < k; i++)
28137 if (this.endian === 'big') {
28138 for (var t =
8; t < this.padLength; t++)
28145 res[i++] = (len
>>> 24) &
0xff;
28146 res[i++] = (len
>>> 16) &
0xff;
28147 res[i++] = (len
>>> 8) &
0xff;
28148 res[i++] = len &
0xff;
28150 res[i++] = len &
0xff;
28151 res[i++] = (len
>>> 8) &
0xff;
28152 res[i++] = (len
>>> 16) &
0xff;
28153 res[i++] = (len
>>> 24) &
0xff;
28159 for (var t =
8; t < this.padLength; t++)
28166 },{
"../hash":
114}],
116:[function(require,module,exports){
28167 var hmac = exports;
28169 var hash = require('../hash');
28170 var utils = hash.utils;
28171 var assert = utils.assert;
28173 function Hmac(hash, key, enc) {
28174 if (!(this instanceof Hmac))
28175 return new Hmac(hash, key, enc);
28177 this.blockSize = hash.blockSize /
8;
28178 this.outSize = hash.outSize /
8;
28182 this._init(utils.toArray(key, enc));
28184 module.exports = Hmac;
28186 Hmac.prototype._init = function init(key) {
28187 // Shorten key, if needed
28188 if (key.length
> this.blockSize)
28189 key = new this.Hash().update(key).digest();
28190 assert(key.length <= this.blockSize);
28192 // Add padding to key
28193 for (var i = key.length; i < this.blockSize; i++)
28196 for (var i =
0; i < key.length; i++)
28198 this.inner = new this.Hash().update(key);
28200 //
0x36 ^
0x5c =
0x6a
28201 for (var i =
0; i < key.length; i++)
28203 this.outer = new this.Hash().update(key);
28206 Hmac.prototype.update = function update(msg, enc) {
28207 this.inner.update(msg, enc);
28211 Hmac.prototype.digest = function digest(enc) {
28212 this.outer.update(this.inner.digest());
28213 return this.outer.digest(enc);
28216 },{"../hash":
114}],
117:[function(require,module,exports){
28217 var hash = require('../hash');
28218 var utils = hash.utils;
28220 var rotl32 = utils.rotl32;
28221 var sum32 = utils.sum32;
28222 var sum32_3 = utils.sum32_3;
28223 var sum32_4 = utils.sum32_4;
28224 var BlockHash = hash.common.BlockHash;
28226 function RIPEMD160() {
28227 if (!(this instanceof RIPEMD160))
28228 return new RIPEMD160();
28230 BlockHash.call(this);
28232 this.h = [
0x67452301,
0xefcdab89,
0x98badcfe,
0x10325476,
0xc3d2e1f0 ];
28233 this.endian = 'little';
28235 utils.inherits(RIPEMD160, BlockHash);
28236 exports.ripemd160 = RIPEMD160;
28238 RIPEMD160.blockSize =
512;
28239 RIPEMD160.outSize =
160;
28240 RIPEMD160.hmacStrength =
192;
28241 RIPEMD160.padLength =
64;
28243 RIPEMD160.prototype._update = function update(msg, start) {
28254 for (var j =
0; j <
80; j++) {
28257 sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),
28267 sum32_4(Ah, f(
79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),
28272 Dh = rotl32(Ch,
10);
28276 T = sum32_3(this.h[
1], C, Dh);
28277 this.h[
1] = sum32_3(this.h[
2], D, Eh);
28278 this.h[
2] = sum32_3(this.h[
3], E, Ah);
28279 this.h[
3] = sum32_3(this.h[
4], A, Bh);
28280 this.h[
4] = sum32_3(this.h[
0], B, Ch);
28284 RIPEMD160.prototype._digest = function digest(enc) {
28286 return utils.toHex32(this.h, 'little');
28288 return utils.split32(this.h, 'little');
28291 function f(j, x, y, z) {
28295 return (x & y) | ((~x) & z);
28297 return (x | (~y)) ^ z;
28299 return (x & z) | (y & (~z));
28301 return x ^ (y | (~z));
28331 0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
28332 7,
4,
13,
1,
10,
6,
15,
3,
12,
0,
9,
5,
2,
14,
11,
8,
28333 3,
10,
14,
4,
9,
15,
8,
1,
2,
7,
0,
6,
13,
11,
5,
12,
28334 1,
9,
11,
10,
0,
8,
12,
4,
13,
3,
7,
15,
14,
5,
6,
2,
28335 4,
0,
5,
9,
7,
12,
2,
10,
14,
1,
3,
8,
11,
6,
15,
13
28339 5,
14,
7,
0,
9,
2,
11,
4,
13,
6,
15,
8,
1,
10,
3,
12,
28340 6,
11,
3,
7,
0,
13,
5,
10,
14,
15,
8,
12,
4,
9,
1,
2,
28341 15,
5,
1,
3,
7,
14,
6,
9,
11,
8,
12,
2,
10,
0,
4,
13,
28342 8,
6,
4,
1,
3,
11,
15,
0,
5,
12,
2,
13,
9,
7,
10,
14,
28343 12,
15,
10,
4,
1,
5,
8,
7,
6,
2,
13,
14,
0,
3,
9,
11
28347 11,
14,
15,
12,
5,
8,
7,
9,
11,
13,
14,
15,
6,
7,
9,
8,
28348 7,
6,
8,
13,
11,
9,
7,
15,
7,
12,
15,
9,
11,
7,
13,
12,
28349 11,
13,
6,
7,
14,
9,
13,
15,
14,
8,
13,
6,
5,
12,
7,
5,
28350 11,
12,
14,
15,
14,
15,
9,
8,
9,
14,
5,
6,
8,
6,
5,
12,
28351 9,
15,
5,
11,
6,
8,
13,
12,
5,
12,
13,
14,
11,
8,
5,
6
28355 8,
9,
9,
11,
13,
15,
15,
5,
7,
7,
8,
11,
14,
14,
12,
6,
28356 9,
13,
15,
7,
12,
8,
9,
11,
7,
7,
12,
7,
6,
15,
13,
11,
28357 9,
7,
15,
11,
8,
6,
6,
14,
12,
13,
5,
14,
13,
13,
7,
5,
28358 15,
5,
8,
11,
14,
14,
6,
14,
6,
9,
12,
9,
12,
5,
15,
8,
28359 8,
5,
12,
9,
12,
5,
14,
6,
8,
13,
6,
5,
15,
13,
11,
11
28362 },{"../hash":
114}],
118:[function(require,module,exports){
28363 var hash = require('../hash');
28364 var utils = hash.utils;
28365 var assert = utils.assert;
28367 var rotr32 = utils.rotr32;
28368 var rotl32 = utils.rotl32;
28369 var sum32 = utils.sum32;
28370 var sum32_4 = utils.sum32_4;
28371 var sum32_5 = utils.sum32_5;
28372 var rotr64_hi = utils.rotr64_hi;
28373 var rotr64_lo = utils.rotr64_lo;
28374 var shr64_hi = utils.shr64_hi;
28375 var shr64_lo = utils.shr64_lo;
28376 var sum64 = utils.sum64;
28377 var sum64_hi = utils.sum64_hi;
28378 var sum64_lo = utils.sum64_lo;
28379 var sum64_4_hi = utils.sum64_4_hi;
28380 var sum64_4_lo = utils.sum64_4_lo;
28381 var sum64_5_hi = utils.sum64_5_hi;
28382 var sum64_5_lo = utils.sum64_5_lo;
28383 var BlockHash = hash.common.BlockHash;
28386 0x428a2f98,
0x71374491,
0xb5c0fbcf,
0xe9b5dba5,
28387 0x3956c25b,
0x59f111f1,
0x923f82a4,
0xab1c5ed5,
28388 0xd807aa98,
0x12835b01,
0x243185be,
0x550c7dc3,
28389 0x72be5d74,
0x80deb1fe,
0x9bdc06a7,
0xc19bf174,
28390 0xe49b69c1,
0xefbe4786,
0x0fc19dc6,
0x240ca1cc,
28391 0x2de92c6f,
0x4a7484aa,
0x5cb0a9dc,
0x76f988da,
28392 0x983e5152,
0xa831c66d,
0xb00327c8,
0xbf597fc7,
28393 0xc6e00bf3,
0xd5a79147,
0x06ca6351,
0x14292967,
28394 0x27b70a85,
0x2e1b2138,
0x4d2c6dfc,
0x53380d13,
28395 0x650a7354,
0x766a0abb,
0x81c2c92e,
0x92722c85,
28396 0xa2bfe8a1,
0xa81a664b,
0xc24b8b70,
0xc76c51a3,
28397 0xd192e819,
0xd6990624,
0xf40e3585,
0x106aa070,
28398 0x19a4c116,
0x1e376c08,
0x2748774c,
0x34b0bcb5,
28399 0x391c0cb3,
0x4ed8aa4a,
0x5b9cca4f,
0x682e6ff3,
28400 0x748f82ee,
0x78a5636f,
0x84c87814,
0x8cc70208,
28401 0x90befffa,
0xa4506ceb,
0xbef9a3f7,
0xc67178f2
28405 0x428a2f98,
0xd728ae22,
0x71374491,
0x23ef65cd,
28406 0xb5c0fbcf,
0xec4d3b2f,
0xe9b5dba5,
0x8189dbbc,
28407 0x3956c25b,
0xf348b538,
0x59f111f1,
0xb605d019,
28408 0x923f82a4,
0xaf194f9b,
0xab1c5ed5,
0xda6d8118,
28409 0xd807aa98,
0xa3030242,
0x12835b01,
0x45706fbe,
28410 0x243185be,
0x4ee4b28c,
0x550c7dc3,
0xd5ffb4e2,
28411 0x72be5d74,
0xf27b896f,
0x80deb1fe,
0x3b1696b1,
28412 0x9bdc06a7,
0x25c71235,
0xc19bf174,
0xcf692694,
28413 0xe49b69c1,
0x9ef14ad2,
0xefbe4786,
0x384f25e3,
28414 0x0fc19dc6,
0x8b8cd5b5,
0x240ca1cc,
0x77ac9c65,
28415 0x2de92c6f,
0x592b0275,
0x4a7484aa,
0x6ea6e483,
28416 0x5cb0a9dc,
0xbd41fbd4,
0x76f988da,
0x831153b5,
28417 0x983e5152,
0xee66dfab,
0xa831c66d,
0x2db43210,
28418 0xb00327c8,
0x98fb213f,
0xbf597fc7,
0xbeef0ee4,
28419 0xc6e00bf3,
0x3da88fc2,
0xd5a79147,
0x930aa725,
28420 0x06ca6351,
0xe003826f,
0x14292967,
0x0a0e6e70,
28421 0x27b70a85,
0x46d22ffc,
0x2e1b2138,
0x5c26c926,
28422 0x4d2c6dfc,
0x5ac42aed,
0x53380d13,
0x9d95b3df,
28423 0x650a7354,
0x8baf63de,
0x766a0abb,
0x3c77b2a8,
28424 0x81c2c92e,
0x47edaee6,
0x92722c85,
0x1482353b,
28425 0xa2bfe8a1,
0x4cf10364,
0xa81a664b,
0xbc423001,
28426 0xc24b8b70,
0xd0f89791,
0xc76c51a3,
0x0654be30,
28427 0xd192e819,
0xd6ef5218,
0xd6990624,
0x5565a910,
28428 0xf40e3585,
0x5771202a,
0x106aa070,
0x32bbd1b8,
28429 0x19a4c116,
0xb8d2d0c8,
0x1e376c08,
0x5141ab53,
28430 0x2748774c,
0xdf8eeb99,
0x34b0bcb5,
0xe19b48a8,
28431 0x391c0cb3,
0xc5c95a63,
0x4ed8aa4a,
0xe3418acb,
28432 0x5b9cca4f,
0x7763e373,
0x682e6ff3,
0xd6b2b8a3,
28433 0x748f82ee,
0x5defb2fc,
0x78a5636f,
0x43172f60,
28434 0x84c87814,
0xa1f0ab72,
0x8cc70208,
0x1a6439ec,
28435 0x90befffa,
0x23631e28,
0xa4506ceb,
0xde82bde9,
28436 0xbef9a3f7,
0xb2c67915,
0xc67178f2,
0xe372532b,
28437 0xca273ece,
0xea26619c,
0xd186b8c7,
0x21c0c207,
28438 0xeada7dd6,
0xcde0eb1e,
0xf57d4f7f,
0xee6ed178,
28439 0x06f067aa,
0x72176fba,
0x0a637dc5,
0xa2c898a6,
28440 0x113f9804,
0xbef90dae,
0x1b710b35,
0x131c471b,
28441 0x28db77f5,
0x23047d84,
0x32caab7b,
0x40c72493,
28442 0x3c9ebe0a,
0x15c9bebc,
0x431d67c4,
0x9c100d4c,
28443 0x4cc5d4be,
0xcb3e42b6,
0x597f299c,
0xfc657e2a,
28444 0x5fcb6fab,
0x3ad6faec,
0x6c44198c,
0x4a475817
28448 0x5A827999,
0x6ED9EBA1,
28449 0x8F1BBCDC,
0xCA62C1D6
28452 function SHA256() {
28453 if (!(this instanceof SHA256))
28454 return new SHA256();
28456 BlockHash.call(this);
28457 this.h = [
0x6a09e667,
0xbb67ae85,
0x3c6ef372,
0xa54ff53a,
28458 0x510e527f,
0x9b05688c,
0x1f83d9ab,
0x5be0cd19 ];
28460 this.W = new Array(
64);
28462 utils.inherits(SHA256, BlockHash);
28463 exports.sha256 = SHA256;
28465 SHA256.blockSize =
512;
28466 SHA256.outSize =
256;
28467 SHA256.hmacStrength =
192;
28468 SHA256.padLength =
64;
28470 SHA256.prototype._update = function _update(msg, start) {
28473 for (var i =
0; i <
16; i++)
28474 W[i] = msg[start + i];
28475 for (; i < W.length; i++)
28476 W[i] = sum32_4(g1_256(W[i -
2]), W[i -
7], g0_256(W[i -
15]), W[i -
16]);
28487 assert(this.k.length === W.length);
28488 for (var i =
0; i < W.length; i++) {
28489 var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);
28490 var T2 = sum32(s0_256(a), maj32(a, b, c));
28501 this.h[
0] = sum32(this.h[
0], a);
28502 this.h[
1] = sum32(this.h[
1], b);
28503 this.h[
2] = sum32(this.h[
2], c);
28504 this.h[
3] = sum32(this.h[
3], d);
28505 this.h[
4] = sum32(this.h[
4], e);
28506 this.h[
5] = sum32(this.h[
5], f);
28507 this.h[
6] = sum32(this.h[
6], g);
28508 this.h[
7] = sum32(this.h[
7], h);
28511 SHA256.prototype._digest = function digest(enc) {
28513 return utils.toHex32(this.h, 'big');
28515 return utils.split32(this.h, 'big');
28518 function SHA224() {
28519 if (!(this instanceof SHA224))
28520 return new SHA224();
28523 this.h = [
0xc1059ed8,
0x367cd507,
0x3070dd17,
0xf70e5939,
28524 0xffc00b31,
0x68581511,
0x64f98fa7,
0xbefa4fa4 ];
28526 utils.inherits(SHA224, SHA256);
28527 exports.sha224 = SHA224;
28529 SHA224.blockSize =
512;
28530 SHA224.outSize =
224;
28531 SHA224.hmacStrength =
192;
28532 SHA224.padLength =
64;
28534 SHA224.prototype._digest = function digest(enc) {
28535 // Just truncate output
28537 return utils.toHex32(this.h.slice(
0,
7), 'big');
28539 return utils.split32(this.h.slice(
0,
7), 'big');
28542 function SHA512() {
28543 if (!(this instanceof SHA512))
28544 return new SHA512();
28546 BlockHash.call(this);
28547 this.h = [
0x6a09e667,
0xf3bcc908,
28548 0xbb67ae85,
0x84caa73b,
28549 0x3c6ef372,
0xfe94f82b,
28550 0xa54ff53a,
0x5f1d36f1,
28551 0x510e527f,
0xade682d1,
28552 0x9b05688c,
0x2b3e6c1f,
28553 0x1f83d9ab,
0xfb41bd6b,
28554 0x5be0cd19,
0x137e2179 ];
28556 this.W = new Array(
160);
28558 utils.inherits(SHA512, BlockHash);
28559 exports.sha512 = SHA512;
28561 SHA512.blockSize =
1024;
28562 SHA512.outSize =
512;
28563 SHA512.hmacStrength =
192;
28564 SHA512.padLength =
128;
28566 SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {
28569 //
32 x
32bit words
28570 for (var i =
0; i <
32; i++)
28571 W[i] = msg[start + i];
28572 for (; i < W.length; i +=
2) {
28573 var c0_hi = g1_512_hi(W[i -
4], W[i -
3]); // i -
2
28574 var c0_lo = g1_512_lo(W[i -
4], W[i -
3]);
28575 var c1_hi = W[i -
14]; // i -
7
28576 var c1_lo = W[i -
13];
28577 var c2_hi = g0_512_hi(W[i -
30], W[i -
29]); // i -
15
28578 var c2_lo = g0_512_lo(W[i -
30], W[i -
29]);
28579 var c3_hi = W[i -
32]; // i -
16
28580 var c3_lo = W[i -
31];
28582 W[i] = sum64_4_hi(c0_hi, c0_lo,
28586 W[i +
1] = sum64_4_lo(c0_hi, c0_lo,
28593 SHA512.prototype._update = function _update(msg, start) {
28594 this._prepareBlock(msg, start);
28598 var ah = this.h[
0];
28599 var al = this.h[
1];
28600 var bh = this.h[
2];
28601 var bl = this.h[
3];
28602 var ch = this.h[
4];
28603 var cl = this.h[
5];
28604 var dh = this.h[
6];
28605 var dl = this.h[
7];
28606 var eh = this.h[
8];
28607 var el = this.h[
9];
28608 var fh = this.h[
10];
28609 var fl = this.h[
11];
28610 var gh = this.h[
12];
28611 var gl = this.h[
13];
28612 var hh = this.h[
14];
28613 var hl = this.h[
15];
28615 assert(this.k.length === W.length);
28616 for (var i =
0; i < W.length; i +=
2) {
28619 var c1_hi = s1_512_hi(eh, el);
28620 var c1_lo = s1_512_lo(eh, el);
28621 var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);
28622 var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);
28623 var c3_hi = this.k[i];
28624 var c3_lo = this.k[i +
1];
28626 var c4_lo = W[i +
1];
28628 var T1_hi = sum64_5_hi(c0_hi, c0_lo,
28633 var T1_lo = sum64_5_lo(c0_hi, c0_lo,
28639 var c0_hi = s0_512_hi(ah, al);
28640 var c0_lo = s0_512_lo(ah, al);
28641 var c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);
28642 var c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);
28644 var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);
28645 var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);
28656 eh = sum64_hi(dh, dl, T1_hi, T1_lo);
28657 el = sum64_lo(dl, dl, T1_hi, T1_lo);
28668 ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);
28669 al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);
28672 sum64(this.h,
0, ah, al);
28673 sum64(this.h,
2, bh, bl);
28674 sum64(this.h,
4, ch, cl);
28675 sum64(this.h,
6, dh, dl);
28676 sum64(this.h,
8, eh, el);
28677 sum64(this.h,
10, fh, fl);
28678 sum64(this.h,
12, gh, gl);
28679 sum64(this.h,
14, hh, hl);
28682 SHA512.prototype._digest = function digest(enc) {
28684 return utils.toHex32(this.h, 'big');
28686 return utils.split32(this.h, 'big');
28689 function SHA384() {
28690 if (!(this instanceof SHA384))
28691 return new SHA384();
28694 this.h = [
0xcbbb9d5d,
0xc1059ed8,
28695 0x629a292a,
0x367cd507,
28696 0x9159015a,
0x3070dd17,
28697 0x152fecd8,
0xf70e5939,
28698 0x67332667,
0xffc00b31,
28699 0x8eb44a87,
0x68581511,
28700 0xdb0c2e0d,
0x64f98fa7,
28701 0x47b5481d,
0xbefa4fa4 ];
28703 utils.inherits(SHA384, SHA512);
28704 exports.sha384 = SHA384;
28706 SHA384.blockSize =
1024;
28707 SHA384.outSize =
384;
28708 SHA384.hmacStrength =
192;
28709 SHA384.padLength =
128;
28711 SHA384.prototype._digest = function digest(enc) {
28713 return utils.toHex32(this.h.slice(
0,
12), 'big');
28715 return utils.split32(this.h.slice(
0,
12), 'big');
28719 if (!(this instanceof SHA1))
28722 BlockHash.call(this);
28723 this.h = [
0x67452301,
0xefcdab89,
0x98badcfe,
28724 0x10325476,
0xc3d2e1f0 ];
28725 this.W = new Array(
80);
28728 utils.inherits(SHA1, BlockHash);
28729 exports.sha1 = SHA1;
28731 SHA1.blockSize =
512;
28732 SHA1.outSize =
160;
28733 SHA1.hmacStrength =
80;
28734 SHA1.padLength =
64;
28736 SHA1.prototype._update = function _update(msg, start) {
28739 for (var i =
0; i <
16; i++)
28740 W[i] = msg[start + i];
28742 for(; i < W.length; i++)
28743 W[i] = rotl32(W[i -
3] ^ W[i -
8] ^ W[i -
14] ^ W[i -
16],
1);
28751 for (var i =
0; i < W.length; i++) {
28752 var s = ~~(i /
20);
28753 var t = sum32_5(rotl32(a,
5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);
28761 this.h[
0] = sum32(this.h[
0], a);
28762 this.h[
1] = sum32(this.h[
1], b);
28763 this.h[
2] = sum32(this.h[
2], c);
28764 this.h[
3] = sum32(this.h[
3], d);
28765 this.h[
4] = sum32(this.h[
4], e);
28768 SHA1.prototype._digest = function digest(enc) {
28770 return utils.toHex32(this.h, 'big');
28772 return utils.split32(this.h, 'big');
28775 function ch32(x, y, z) {
28776 return (x & y) ^ ((~x) & z);
28779 function maj32(x, y, z) {
28780 return (x & y) ^ (x & z) ^ (y & z);
28783 function p32(x, y, z) {
28787 function s0_256(x) {
28788 return rotr32(x,
2) ^ rotr32(x,
13) ^ rotr32(x,
22);
28791 function s1_256(x) {
28792 return rotr32(x,
6) ^ rotr32(x,
11) ^ rotr32(x,
25);
28795 function g0_256(x) {
28796 return rotr32(x,
7) ^ rotr32(x,
18) ^ (x
>>> 3);
28799 function g1_256(x) {
28800 return rotr32(x,
17) ^ rotr32(x,
19) ^ (x
>>> 10);
28803 function ft_1(s, x, y, z) {
28805 return ch32(x, y, z);
28806 if (s ===
1 || s ===
3)
28807 return p32(x, y, z);
28809 return maj32(x, y, z);
28812 function ch64_hi(xh, xl, yh, yl, zh, zl) {
28813 var r = (xh & yh) ^ ((~xh) & zh);
28819 function ch64_lo(xh, xl, yh, yl, zh, zl) {
28820 var r = (xl & yl) ^ ((~xl) & zl);
28826 function maj64_hi(xh, xl, yh, yl, zh, zl) {
28827 var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);
28833 function maj64_lo(xh, xl, yh, yl, zh, zl) {
28834 var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);
28840 function s0_512_hi(xh, xl) {
28841 var c0_hi = rotr64_hi(xh, xl,
28);
28842 var c1_hi = rotr64_hi(xl, xh,
2); //
34
28843 var c2_hi = rotr64_hi(xl, xh,
7); //
39
28845 var r = c0_hi ^ c1_hi ^ c2_hi;
28851 function s0_512_lo(xh, xl) {
28852 var c0_lo = rotr64_lo(xh, xl,
28);
28853 var c1_lo = rotr64_lo(xl, xh,
2); //
34
28854 var c2_lo = rotr64_lo(xl, xh,
7); //
39
28856 var r = c0_lo ^ c1_lo ^ c2_lo;
28862 function s1_512_hi(xh, xl) {
28863 var c0_hi = rotr64_hi(xh, xl,
14);
28864 var c1_hi = rotr64_hi(xh, xl,
18);
28865 var c2_hi = rotr64_hi(xl, xh,
9); //
41
28867 var r = c0_hi ^ c1_hi ^ c2_hi;
28873 function s1_512_lo(xh, xl) {
28874 var c0_lo = rotr64_lo(xh, xl,
14);
28875 var c1_lo = rotr64_lo(xh, xl,
18);
28876 var c2_lo = rotr64_lo(xl, xh,
9); //
41
28878 var r = c0_lo ^ c1_lo ^ c2_lo;
28884 function g0_512_hi(xh, xl) {
28885 var c0_hi = rotr64_hi(xh, xl,
1);
28886 var c1_hi = rotr64_hi(xh, xl,
8);
28887 var c2_hi = shr64_hi(xh, xl,
7);
28889 var r = c0_hi ^ c1_hi ^ c2_hi;
28895 function g0_512_lo(xh, xl) {
28896 var c0_lo = rotr64_lo(xh, xl,
1);
28897 var c1_lo = rotr64_lo(xh, xl,
8);
28898 var c2_lo = shr64_lo(xh, xl,
7);
28900 var r = c0_lo ^ c1_lo ^ c2_lo;
28906 function g1_512_hi(xh, xl) {
28907 var c0_hi = rotr64_hi(xh, xl,
19);
28908 var c1_hi = rotr64_hi(xl, xh,
29); //
61
28909 var c2_hi = shr64_hi(xh, xl,
6);
28911 var r = c0_hi ^ c1_hi ^ c2_hi;
28917 function g1_512_lo(xh, xl) {
28918 var c0_lo = rotr64_lo(xh, xl,
19);
28919 var c1_lo = rotr64_lo(xl, xh,
29); //
61
28920 var c2_lo = shr64_lo(xh, xl,
6);
28922 var r = c0_lo ^ c1_lo ^ c2_lo;
28928 },{
"../hash":
114}],
119:[function(require,module,exports){
28929 var utils = exports;
28930 var inherits = require('inherits');
28932 function toArray(msg, enc) {
28933 if (Array.isArray(msg))
28934 return msg.slice();
28938 if (typeof msg === 'string') {
28940 for (var i =
0; i < msg.length; i++) {
28941 var c = msg.charCodeAt(i);
28949 } else if (enc === 'hex') {
28950 msg = msg.replace(/[^a-z0-
9]+/ig, '');
28951 if (msg.length %
2 !==
0)
28953 for (var i =
0; i < msg.length; i +=
2)
28954 res.push(parseInt(msg[i] + msg[i +
1],
16));
28957 for (var i =
0; i < msg.length; i++)
28958 res[i] = msg[i] |
0;
28962 utils.toArray = toArray;
28964 function toHex(msg) {
28966 for (var i =
0; i < msg.length; i++)
28967 res += zero2(msg[i].toString(
16));
28970 utils.toHex = toHex;
28972 function htonl(w) {
28973 var res = (w
>>> 24) |
28974 ((w
>>> 8) &
0xff00) |
28975 ((w <<
8) &
0xff0000) |
28976 ((w &
0xff) <<
24);
28979 utils.htonl = htonl;
28981 function toHex32(msg, endian) {
28983 for (var i =
0; i < msg.length; i++) {
28985 if (endian === 'little')
28987 res += zero8(w.toString(
16));
28991 utils.toHex32 = toHex32;
28993 function zero2(word) {
28994 if (word.length ===
1)
28999 utils.zero2 = zero2;
29001 function zero8(word) {
29002 if (word.length ===
7)
29004 else if (word.length ===
6)
29005 return '
00' + word;
29006 else if (word.length ===
5)
29007 return '
000' + word;
29008 else if (word.length ===
4)
29009 return '
0000' + word;
29010 else if (word.length ===
3)
29011 return '
00000' + word;
29012 else if (word.length ===
2)
29013 return '
000000' + word;
29014 else if (word.length ===
1)
29015 return '
0000000' + word;
29019 utils.zero8 = zero8;
29021 function join32(msg, start, end, endian) {
29022 var len = end - start;
29023 assert(len %
4 ===
0);
29024 var res = new Array(len /
4);
29025 for (var i =
0, k = start; i < res.length; i++, k +=
4) {
29027 if (endian === 'big')
29028 w = (msg[k] <<
24) | (msg[k +
1] <<
16) | (msg[k +
2] <<
8) | msg[k +
3];
29030 w = (msg[k +
3] <<
24) | (msg[k +
2] <<
16) | (msg[k +
1] <<
8) | msg[k];
29035 utils.join32 = join32;
29037 function split32(msg, endian) {
29038 var res = new Array(msg.length *
4);
29039 for (var i =
0, k =
0; i < msg.length; i++, k +=
4) {
29041 if (endian === 'big') {
29043 res[k +
1] = (m
>>> 16) &
0xff;
29044 res[k +
2] = (m
>>> 8) &
0xff;
29045 res[k +
3] = m &
0xff;
29047 res[k +
3] = m
>>> 24;
29048 res[k +
2] = (m
>>> 16) &
0xff;
29049 res[k +
1] = (m
>>> 8) &
0xff;
29055 utils.split32 = split32;
29057 function rotr32(w, b) {
29058 return (w
>>> b) | (w << (
32 - b));
29060 utils.rotr32 = rotr32;
29062 function rotl32(w, b) {
29063 return (w << b) | (w
>>> (
32 - b));
29065 utils.rotl32 = rotl32;
29067 function sum32(a, b) {
29068 return (a + b)
>>> 0;
29070 utils.sum32 = sum32;
29072 function sum32_3(a, b, c) {
29073 return (a + b + c)
>>> 0;
29075 utils.sum32_3 = sum32_3;
29077 function sum32_4(a, b, c, d) {
29078 return (a + b + c + d)
>>> 0;
29080 utils.sum32_4 = sum32_4;
29082 function sum32_5(a, b, c, d, e) {
29083 return (a + b + c + d + e)
>>> 0;
29085 utils.sum32_5 = sum32_5;
29087 function assert(cond, msg) {
29089 throw new Error(msg || 'Assertion failed');
29091 utils.assert = assert;
29093 utils.inherits = inherits;
29095 function sum64(buf, pos, ah, al) {
29097 var bl = buf[pos +
1];
29099 var lo = (al + bl)
>>> 0;
29100 var hi = (lo < al ?
1 :
0) + ah + bh;
29101 buf[pos] = hi
>>> 0;
29104 exports.sum64 = sum64;
29106 function sum64_hi(ah, al, bh, bl) {
29107 var lo = (al + bl)
>>> 0;
29108 var hi = (lo < al ?
1 :
0) + ah + bh;
29111 exports.sum64_hi = sum64_hi;
29113 function sum64_lo(ah, al, bh, bl) {
29117 exports.sum64_lo = sum64_lo;
29119 function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {
29122 lo = (lo + bl)
>>> 0;
29123 carry += lo < al ?
1 :
0;
29124 lo = (lo + cl)
>>> 0;
29125 carry += lo < cl ?
1 :
0;
29126 lo = (lo + dl)
>>> 0;
29127 carry += lo < dl ?
1 :
0;
29129 var hi = ah + bh + ch + dh + carry;
29132 exports.sum64_4_hi = sum64_4_hi;
29134 function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {
29135 var lo = al + bl + cl + dl;
29138 exports.sum64_4_lo = sum64_4_lo;
29140 function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
29143 lo = (lo + bl)
>>> 0;
29144 carry += lo < al ?
1 :
0;
29145 lo = (lo + cl)
>>> 0;
29146 carry += lo < cl ?
1 :
0;
29147 lo = (lo + dl)
>>> 0;
29148 carry += lo < dl ?
1 :
0;
29149 lo = (lo + el)
>>> 0;
29150 carry += lo < el ?
1 :
0;
29152 var hi = ah + bh + ch + dh + eh + carry;
29155 exports.sum64_5_hi = sum64_5_hi;
29157 function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
29158 var lo = al + bl + cl + dl + el;
29162 exports.sum64_5_lo = sum64_5_lo;
29164 function rotr64_hi(ah, al, num) {
29165 var r = (al << (
32 - num)) | (ah
>>> num);
29168 exports.rotr64_hi = rotr64_hi;
29170 function rotr64_lo(ah, al, num) {
29171 var r = (ah << (
32 - num)) | (al
>>> num);
29174 exports.rotr64_lo = rotr64_lo;
29176 function shr64_hi(ah, al, num) {
29179 exports.shr64_hi = shr64_hi;
29181 function shr64_lo(ah, al, num) {
29182 var r = (ah << (
32 - num)) | (al
>>> num);
29185 exports.shr64_lo = shr64_lo;
29187 },{
"inherits":
121}],
120:[function(require,module,exports){
29190 var hash = require('hash.js');
29191 var utils = require('minimalistic-crypto-utils');
29192 var assert = require('minimalistic-assert');
29194 function HmacDRBG(options) {
29195 if (!(this instanceof HmacDRBG))
29196 return new HmacDRBG(options);
29197 this.hash = options.hash;
29198 this.predResist = !!options.predResist;
29200 this.outLen = this.hash.outSize;
29201 this.minEntropy = options.minEntropy || this.hash.hmacStrength;
29203 this._reseed = null;
29204 this.reseedInterval = null;
29208 var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');
29209 var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');
29210 var pers = utils.toArray(options.pers, options.persEnc || 'hex');
29211 assert(entropy.length
>= (this.minEntropy /
8),
29212 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
29213 this._init(entropy, nonce, pers);
29215 module.exports = HmacDRBG;
29217 HmacDRBG.prototype._init = function init(entropy, nonce, pers) {
29218 var seed = entropy.concat(nonce).concat(pers);
29220 this.K = new Array(this.outLen /
8);
29221 this.V = new Array(this.outLen /
8);
29222 for (var i =
0; i < this.V.length; i++) {
29227 this._update(seed);
29229 this.reseedInterval =
0x1000000000000; //
2^
48
29232 HmacDRBG.prototype._hmac = function hmac() {
29233 return new hash.hmac(this.hash, this.K);
29236 HmacDRBG.prototype._update = function update(seed) {
29237 var kmac = this._hmac()
29241 kmac = kmac.update(seed);
29242 this.K = kmac.digest();
29243 this.V = this._hmac().update(this.V).digest();
29247 this.K = this._hmac()
29252 this.V = this._hmac().update(this.V).digest();
29255 HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {
29256 // Optional entropy enc
29257 if (typeof entropyEnc !== 'string') {
29263 entropy = utils.toArray(entropy, entropyEnc);
29264 add = utils.toArray(add, addEnc);
29266 assert(entropy.length
>= (this.minEntropy /
8),
29267 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
29269 this._update(entropy.concat(add || []));
29273 HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {
29274 if (this._reseed
> this.reseedInterval)
29275 throw new Error('Reseed is required');
29277 // Optional encoding
29278 if (typeof enc !== 'string') {
29284 // Optional additional data
29286 add = utils.toArray(add, addEnc || 'hex');
29291 while (temp.length < len) {
29292 this.V = this._hmac().update(this.V).digest();
29293 temp = temp.concat(this.V);
29296 var res = temp.slice(
0, len);
29299 return utils.encode(res, enc);
29302 },{"hash.js":
114,"minimalistic-assert":
123,"minimalistic-crypto-utils":
124}],
121:[function(require,module,exports){
29303 arguments[
4][
9][
0].apply(exports,arguments)
29304 },{"dup":
9}],
122:[function(require,module,exports){
29305 (function (Buffer){
29306 // constant-space merkle root calculation algorithm
29307 module.exports = function fastRoot (values, digestFn) {
29308 if (!Array.isArray(values)) throw TypeError('Expected values Array')
29309 if (typeof digestFn !== 'function') throw TypeError('Expected digest Function')
29311 var length = values.length
29312 var results = values.concat()
29314 while (length
> 1) {
29317 for (var i =
0; i < length; i +=
2, ++j) {
29318 var left = results[i]
29319 var right = i +
1 === length ? left : results[i +
1]
29320 var data = Buffer.concat([left, right])
29322 results[j] = digestFn(data)
29331 }).call(this,require(
"buffer").Buffer)
29332 },{
"buffer":
5}],
123:[function(require,module,exports){
29333 module.exports = assert;
29335 function assert(val, msg) {
29337 throw new Error(msg || 'Assertion failed');
29340 assert.equal = function assertEqual(l, r, msg) {
29342 throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));
29345 },{}],
124:[function(require,module,exports){
29348 var utils = exports;
29350 function toArray(msg, enc) {
29351 if (Array.isArray(msg))
29352 return msg.slice();
29356 if (typeof msg !== 'string') {
29357 for (var i =
0; i < msg.length; i++)
29358 res[i] = msg[i] |
0;
29361 if (enc === 'hex') {
29362 msg = msg.replace(/[^a-z0-
9]+/ig, '');
29363 if (msg.length %
2 !==
0)
29365 for (var i =
0; i < msg.length; i +=
2)
29366 res.push(parseInt(msg[i] + msg[i +
1],
16));
29368 for (var i =
0; i < msg.length; i++) {
29369 var c = msg.charCodeAt(i);
29380 utils.toArray = toArray;
29382 function zero2(word) {
29383 if (word.length ===
1)
29388 utils.zero2 = zero2;
29390 function toHex(msg) {
29392 for (var i =
0; i < msg.length; i++)
29393 res += zero2(msg[i].toString(
16));
29396 utils.toHex = toHex;
29398 utils.encode = function encode(arr, enc) {
29405 },{}],
125:[function(require,module,exports){
29406 var OPS = require('bitcoin-ops')
29408 function encodingLength (i) {
29409 return i < OPS.OP_PUSHDATA1 ?
1
29415 function encode (buffer, number, offset) {
29416 var size = encodingLength(number)
29420 buffer.writeUInt8(number, offset)
29423 } else if (size ===
2) {
29424 buffer.writeUInt8(OPS.OP_PUSHDATA1, offset)
29425 buffer.writeUInt8(number, offset +
1)
29428 } else if (size ===
3) {
29429 buffer.writeUInt8(OPS.OP_PUSHDATA2, offset)
29430 buffer.writeUInt16LE(number, offset +
1)
29434 buffer.writeUInt8(OPS.OP_PUSHDATA4, offset)
29435 buffer.writeUInt32LE(number, offset +
1)
29441 function decode (buffer, offset) {
29442 var opcode = buffer.readUInt8(offset)
29446 if (opcode < OPS.OP_PUSHDATA1) {
29451 } else if (opcode === OPS.OP_PUSHDATA1) {
29452 if (offset +
2 > buffer.length) return null
29453 number = buffer.readUInt8(offset +
1)
29457 } else if (opcode === OPS.OP_PUSHDATA2) {
29458 if (offset +
3 > buffer.length) return null
29459 number = buffer.readUInt16LE(offset +
1)
29464 if (offset +
5 > buffer.length) return null
29465 if (opcode !== OPS.OP_PUSHDATA4) throw new Error('Unexpected opcode')
29467 number = buffer.readUInt32LE(offset +
1)
29479 encodingLength: encodingLength,
29484 },{"bitcoin-ops":
42}],
126:[function(require,module,exports){
29485 (function (process,global){
29488 function oldBrowser () {
29489 throw new Error('secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer
11')
29492 var Buffer = require('safe-buffer').Buffer
29493 var crypto = global.crypto || global.msCrypto
29495 if (crypto && crypto.getRandomValues) {
29496 module.exports = randomBytes
29498 module.exports = oldBrowser
29501 function randomBytes (size, cb) {
29502 // phantomjs needs to throw
29503 if (size
> 65536) throw new Error('requested too many random bytes')
29504 // in case browserify isn't using the Uint8Array version
29505 var rawBytes = new global.Uint8Array(size)
29507 // This will not work in older browsers.
29508 // See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues
29509 if (size
> 0) { // getRandomValues fails on IE if size ==
0
29510 crypto.getRandomValues(rawBytes)
29513 // XXX: phantomjs doesn't like a buffer being passed here
29514 var bytes = Buffer.from(rawBytes.buffer)
29516 if (typeof cb === 'function') {
29517 return process.nextTick(function () {
29525 }).call(this,require('_process'),typeof global !==
"undefined" ? global : typeof self !==
"undefined" ? self : typeof window !==
"undefined" ? window : {})
29526 },{
"_process":
13,
"safe-buffer":
128}],
127:[function(require,module,exports){
29527 (function (Buffer){
29529 var inherits = require('inherits')
29530 var HashBase = require('hash-base')
29532 function RIPEMD160 () {
29533 HashBase.call(this,
64)
29536 this._a =
0x67452301
29537 this._b =
0xefcdab89
29538 this._c =
0x98badcfe
29539 this._d =
0x10325476
29540 this._e =
0xc3d2e1f0
29543 inherits(RIPEMD160, HashBase)
29545 RIPEMD160.prototype._update = function () {
29546 var m = new Array(
16)
29547 for (var i =
0; i <
16; ++i) m[i] = this._block.readInt32LE(i *
4)
29555 // Mj =
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15
29557 // Sj =
11,
14,
15,
12,
5,
8,
7,
9,
11,
13,
14,
15,
6,
7,
9,
8
29558 al = fn1(al, bl, cl, dl, el, m[
0],
0x00000000,
11); cl = rotl(cl,
10)
29559 el = fn1(el, al, bl, cl, dl, m[
1],
0x00000000,
14); bl = rotl(bl,
10)
29560 dl = fn1(dl, el, al, bl, cl, m[
2],
0x00000000,
15); al = rotl(al,
10)
29561 cl = fn1(cl, dl, el, al, bl, m[
3],
0x00000000,
12); el = rotl(el,
10)
29562 bl = fn1(bl, cl, dl, el, al, m[
4],
0x00000000,
5); dl = rotl(dl,
10)
29563 al = fn1(al, bl, cl, dl, el, m[
5],
0x00000000,
8); cl = rotl(cl,
10)
29564 el = fn1(el, al, bl, cl, dl, m[
6],
0x00000000,
7); bl = rotl(bl,
10)
29565 dl = fn1(dl, el, al, bl, cl, m[
7],
0x00000000,
9); al = rotl(al,
10)
29566 cl = fn1(cl, dl, el, al, bl, m[
8],
0x00000000,
11); el = rotl(el,
10)
29567 bl = fn1(bl, cl, dl, el, al, m[
9],
0x00000000,
13); dl = rotl(dl,
10)
29568 al = fn1(al, bl, cl, dl, el, m[
10],
0x00000000,
14); cl = rotl(cl,
10)
29569 el = fn1(el, al, bl, cl, dl, m[
11],
0x00000000,
15); bl = rotl(bl,
10)
29570 dl = fn1(dl, el, al, bl, cl, m[
12],
0x00000000,
6); al = rotl(al,
10)
29571 cl = fn1(cl, dl, el, al, bl, m[
13],
0x00000000,
7); el = rotl(el,
10)
29572 bl = fn1(bl, cl, dl, el, al, m[
14],
0x00000000,
9); dl = rotl(dl,
10)
29573 al = fn1(al, bl, cl, dl, el, m[
15],
0x00000000,
8); cl = rotl(cl,
10)
29575 // Mj =
7,
4,
13,
1,
10,
6,
15,
3,
12,
0,
9,
5,
2,
14,
11,
8
29577 // Sj =
7,
6,
8,
13,
11,
9,
7,
15,
7,
12,
15,
9,
11,
7,
13,
12
29578 el = fn2(el, al, bl, cl, dl, m[
7],
0x5a827999,
7); bl = rotl(bl,
10)
29579 dl = fn2(dl, el, al, bl, cl, m[
4],
0x5a827999,
6); al = rotl(al,
10)
29580 cl = fn2(cl, dl, el, al, bl, m[
13],
0x5a827999,
8); el = rotl(el,
10)
29581 bl = fn2(bl, cl, dl, el, al, m[
1],
0x5a827999,
13); dl = rotl(dl,
10)
29582 al = fn2(al, bl, cl, dl, el, m[
10],
0x5a827999,
11); cl = rotl(cl,
10)
29583 el = fn2(el, al, bl, cl, dl, m[
6],
0x5a827999,
9); bl = rotl(bl,
10)
29584 dl = fn2(dl, el, al, bl, cl, m[
15],
0x5a827999,
7); al = rotl(al,
10)
29585 cl = fn2(cl, dl, el, al, bl, m[
3],
0x5a827999,
15); el = rotl(el,
10)
29586 bl = fn2(bl, cl, dl, el, al, m[
12],
0x5a827999,
7); dl = rotl(dl,
10)
29587 al = fn2(al, bl, cl, dl, el, m[
0],
0x5a827999,
12); cl = rotl(cl,
10)
29588 el = fn2(el, al, bl, cl, dl, m[
9],
0x5a827999,
15); bl = rotl(bl,
10)
29589 dl = fn2(dl, el, al, bl, cl, m[
5],
0x5a827999,
9); al = rotl(al,
10)
29590 cl = fn2(cl, dl, el, al, bl, m[
2],
0x5a827999,
11); el = rotl(el,
10)
29591 bl = fn2(bl, cl, dl, el, al, m[
14],
0x5a827999,
7); dl = rotl(dl,
10)
29592 al = fn2(al, bl, cl, dl, el, m[
11],
0x5a827999,
13); cl = rotl(cl,
10)
29593 el = fn2(el, al, bl, cl, dl, m[
8],
0x5a827999,
12); bl = rotl(bl,
10)
29595 // Mj =
3,
10,
14,
4,
9,
15,
8,
1,
2,
7,
0,
6,
13,
11,
5,
12
29597 // Sj =
11,
13,
6,
7,
14,
9,
13,
15,
14,
8,
13,
6,
5,
12,
7,
5
29598 dl = fn3(dl, el, al, bl, cl, m[
3],
0x6ed9eba1,
11); al = rotl(al,
10)
29599 cl = fn3(cl, dl, el, al, bl, m[
10],
0x6ed9eba1,
13); el = rotl(el,
10)
29600 bl = fn3(bl, cl, dl, el, al, m[
14],
0x6ed9eba1,
6); dl = rotl(dl,
10)
29601 al = fn3(al, bl, cl, dl, el, m[
4],
0x6ed9eba1,
7); cl = rotl(cl,
10)
29602 el = fn3(el, al, bl, cl, dl, m[
9],
0x6ed9eba1,
14); bl = rotl(bl,
10)
29603 dl = fn3(dl, el, al, bl, cl, m[
15],
0x6ed9eba1,
9); al = rotl(al,
10)
29604 cl = fn3(cl, dl, el, al, bl, m[
8],
0x6ed9eba1,
13); el = rotl(el,
10)
29605 bl = fn3(bl, cl, dl, el, al, m[
1],
0x6ed9eba1,
15); dl = rotl(dl,
10)
29606 al = fn3(al, bl, cl, dl, el, m[
2],
0x6ed9eba1,
14); cl = rotl(cl,
10)
29607 el = fn3(el, al, bl, cl, dl, m[
7],
0x6ed9eba1,
8); bl = rotl(bl,
10)
29608 dl = fn3(dl, el, al, bl, cl, m[
0],
0x6ed9eba1,
13); al = rotl(al,
10)
29609 cl = fn3(cl, dl, el, al, bl, m[
6],
0x6ed9eba1,
6); el = rotl(el,
10)
29610 bl = fn3(bl, cl, dl, el, al, m[
13],
0x6ed9eba1,
5); dl = rotl(dl,
10)
29611 al = fn3(al, bl, cl, dl, el, m[
11],
0x6ed9eba1,
12); cl = rotl(cl,
10)
29612 el = fn3(el, al, bl, cl, dl, m[
5],
0x6ed9eba1,
7); bl = rotl(bl,
10)
29613 dl = fn3(dl, el, al, bl, cl, m[
12],
0x6ed9eba1,
5); al = rotl(al,
10)
29615 // Mj =
1,
9,
11,
10,
0,
8,
12,
4,
13,
3,
7,
15,
14,
5,
6,
2
29617 // Sj =
11,
12,
14,
15,
14,
15,
9,
8,
9,
14,
5,
6,
8,
6,
5,
12
29618 cl = fn4(cl, dl, el, al, bl, m[
1],
0x8f1bbcdc,
11); el = rotl(el,
10)
29619 bl = fn4(bl, cl, dl, el, al, m[
9],
0x8f1bbcdc,
12); dl = rotl(dl,
10)
29620 al = fn4(al, bl, cl, dl, el, m[
11],
0x8f1bbcdc,
14); cl = rotl(cl,
10)
29621 el = fn4(el, al, bl, cl, dl, m[
10],
0x8f1bbcdc,
15); bl = rotl(bl,
10)
29622 dl = fn4(dl, el, al, bl, cl, m[
0],
0x8f1bbcdc,
14); al = rotl(al,
10)
29623 cl = fn4(cl, dl, el, al, bl, m[
8],
0x8f1bbcdc,
15); el = rotl(el,
10)
29624 bl = fn4(bl, cl, dl, el, al, m[
12],
0x8f1bbcdc,
9); dl = rotl(dl,
10)
29625 al = fn4(al, bl, cl, dl, el, m[
4],
0x8f1bbcdc,
8); cl = rotl(cl,
10)
29626 el = fn4(el, al, bl, cl, dl, m[
13],
0x8f1bbcdc,
9); bl = rotl(bl,
10)
29627 dl = fn4(dl, el, al, bl, cl, m[
3],
0x8f1bbcdc,
14); al = rotl(al,
10)
29628 cl = fn4(cl, dl, el, al, bl, m[
7],
0x8f1bbcdc,
5); el = rotl(el,
10)
29629 bl = fn4(bl, cl, dl, el, al, m[
15],
0x8f1bbcdc,
6); dl = rotl(dl,
10)
29630 al = fn4(al, bl, cl, dl, el, m[
14],
0x8f1bbcdc,
8); cl = rotl(cl,
10)
29631 el = fn4(el, al, bl, cl, dl, m[
5],
0x8f1bbcdc,
6); bl = rotl(bl,
10)
29632 dl = fn4(dl, el, al, bl, cl, m[
6],
0x8f1bbcdc,
5); al = rotl(al,
10)
29633 cl = fn4(cl, dl, el, al, bl, m[
2],
0x8f1bbcdc,
12); el = rotl(el,
10)
29635 // Mj =
4,
0,
5,
9,
7,
12,
2,
10,
14,
1,
3,
8,
11,
6,
15,
13
29637 // Sj =
9,
15,
5,
11,
6,
8,
13,
12,
5,
12,
13,
14,
11,
8,
5,
6
29638 bl = fn5(bl, cl, dl, el, al, m[
4],
0xa953fd4e,
9); dl = rotl(dl,
10)
29639 al = fn5(al, bl, cl, dl, el, m[
0],
0xa953fd4e,
15); cl = rotl(cl,
10)
29640 el = fn5(el, al, bl, cl, dl, m[
5],
0xa953fd4e,
5); bl = rotl(bl,
10)
29641 dl = fn5(dl, el, al, bl, cl, m[
9],
0xa953fd4e,
11); al = rotl(al,
10)
29642 cl = fn5(cl, dl, el, al, bl, m[
7],
0xa953fd4e,
6); el = rotl(el,
10)
29643 bl = fn5(bl, cl, dl, el, al, m[
12],
0xa953fd4e,
8); dl = rotl(dl,
10)
29644 al = fn5(al, bl, cl, dl, el, m[
2],
0xa953fd4e,
13); cl = rotl(cl,
10)
29645 el = fn5(el, al, bl, cl, dl, m[
10],
0xa953fd4e,
12); bl = rotl(bl,
10)
29646 dl = fn5(dl, el, al, bl, cl, m[
14],
0xa953fd4e,
5); al = rotl(al,
10)
29647 cl = fn5(cl, dl, el, al, bl, m[
1],
0xa953fd4e,
12); el = rotl(el,
10)
29648 bl = fn5(bl, cl, dl, el, al, m[
3],
0xa953fd4e,
13); dl = rotl(dl,
10)
29649 al = fn5(al, bl, cl, dl, el, m[
8],
0xa953fd4e,
14); cl = rotl(cl,
10)
29650 el = fn5(el, al, bl, cl, dl, m[
11],
0xa953fd4e,
11); bl = rotl(bl,
10)
29651 dl = fn5(dl, el, al, bl, cl, m[
6],
0xa953fd4e,
8); al = rotl(al,
10)
29652 cl = fn5(cl, dl, el, al, bl, m[
15],
0xa953fd4e,
5); el = rotl(el,
10)
29653 bl = fn5(bl, cl, dl, el, al, m[
13],
0xa953fd4e,
6); dl = rotl(dl,
10)
29661 // M'j =
5,
14,
7,
0,
9,
2,
11,
4,
13,
6,
15,
8,
1,
10,
3,
12
29663 // S'j =
8,
9,
9,
11,
13,
15,
15,
5,
7,
7,
8,
11,
14,
14,
12,
6
29664 ar = fn5(ar, br, cr, dr, er, m[
5],
0x50a28be6,
8); cr = rotl(cr,
10)
29665 er = fn5(er, ar, br, cr, dr, m[
14],
0x50a28be6,
9); br = rotl(br,
10)
29666 dr = fn5(dr, er, ar, br, cr, m[
7],
0x50a28be6,
9); ar = rotl(ar,
10)
29667 cr = fn5(cr, dr, er, ar, br, m[
0],
0x50a28be6,
11); er = rotl(er,
10)
29668 br = fn5(br, cr, dr, er, ar, m[
9],
0x50a28be6,
13); dr = rotl(dr,
10)
29669 ar = fn5(ar, br, cr, dr, er, m[
2],
0x50a28be6,
15); cr = rotl(cr,
10)
29670 er = fn5(er, ar, br, cr, dr, m[
11],
0x50a28be6,
15); br = rotl(br,
10)
29671 dr = fn5(dr, er, ar, br, cr, m[
4],
0x50a28be6,
5); ar = rotl(ar,
10)
29672 cr = fn5(cr, dr, er, ar, br, m[
13],
0x50a28be6,
7); er = rotl(er,
10)
29673 br = fn5(br, cr, dr, er, ar, m[
6],
0x50a28be6,
7); dr = rotl(dr,
10)
29674 ar = fn5(ar, br, cr, dr, er, m[
15],
0x50a28be6,
8); cr = rotl(cr,
10)
29675 er = fn5(er, ar, br, cr, dr, m[
8],
0x50a28be6,
11); br = rotl(br,
10)
29676 dr = fn5(dr, er, ar, br, cr, m[
1],
0x50a28be6,
14); ar = rotl(ar,
10)
29677 cr = fn5(cr, dr, er, ar, br, m[
10],
0x50a28be6,
14); er = rotl(er,
10)
29678 br = fn5(br, cr, dr, er, ar, m[
3],
0x50a28be6,
12); dr = rotl(dr,
10)
29679 ar = fn5(ar, br, cr, dr, er, m[
12],
0x50a28be6,
6); cr = rotl(cr,
10)
29681 // M'j =
6,
11,
3,
7,
0,
13,
5,
10,
14,
15,
8,
12,
4,
9,
1,
2
29683 // S'j =
9,
13,
15,
7,
12,
8,
9,
11,
7,
7,
12,
7,
6,
15,
13,
11
29684 er = fn4(er, ar, br, cr, dr, m[
6],
0x5c4dd124,
9); br = rotl(br,
10)
29685 dr = fn4(dr, er, ar, br, cr, m[
11],
0x5c4dd124,
13); ar = rotl(ar,
10)
29686 cr = fn4(cr, dr, er, ar, br, m[
3],
0x5c4dd124,
15); er = rotl(er,
10)
29687 br = fn4(br, cr, dr, er, ar, m[
7],
0x5c4dd124,
7); dr = rotl(dr,
10)
29688 ar = fn4(ar, br, cr, dr, er, m[
0],
0x5c4dd124,
12); cr = rotl(cr,
10)
29689 er = fn4(er, ar, br, cr, dr, m[
13],
0x5c4dd124,
8); br = rotl(br,
10)
29690 dr = fn4(dr, er, ar, br, cr, m[
5],
0x5c4dd124,
9); ar = rotl(ar,
10)
29691 cr = fn4(cr, dr, er, ar, br, m[
10],
0x5c4dd124,
11); er = rotl(er,
10)
29692 br = fn4(br, cr, dr, er, ar, m[
14],
0x5c4dd124,
7); dr = rotl(dr,
10)
29693 ar = fn4(ar, br, cr, dr, er, m[
15],
0x5c4dd124,
7); cr = rotl(cr,
10)
29694 er = fn4(er, ar, br, cr, dr, m[
8],
0x5c4dd124,
12); br = rotl(br,
10)
29695 dr = fn4(dr, er, ar, br, cr, m[
12],
0x5c4dd124,
7); ar = rotl(ar,
10)
29696 cr = fn4(cr, dr, er, ar, br, m[
4],
0x5c4dd124,
6); er = rotl(er,
10)
29697 br = fn4(br, cr, dr, er, ar, m[
9],
0x5c4dd124,
15); dr = rotl(dr,
10)
29698 ar = fn4(ar, br, cr, dr, er, m[
1],
0x5c4dd124,
13); cr = rotl(cr,
10)
29699 er = fn4(er, ar, br, cr, dr, m[
2],
0x5c4dd124,
11); br = rotl(br,
10)
29701 // M'j =
15,
5,
1,
3,
7,
14,
6,
9,
11,
8,
12,
2,
10,
0,
4,
13
29703 // S'j =
9,
7,
15,
11,
8,
6,
6,
14,
12,
13,
5,
14,
13,
13,
7,
5
29704 dr = fn3(dr, er, ar, br, cr, m[
15],
0x6d703ef3,
9); ar = rotl(ar,
10)
29705 cr = fn3(cr, dr, er, ar, br, m[
5],
0x6d703ef3,
7); er = rotl(er,
10)
29706 br = fn3(br, cr, dr, er, ar, m[
1],
0x6d703ef3,
15); dr = rotl(dr,
10)
29707 ar = fn3(ar, br, cr, dr, er, m[
3],
0x6d703ef3,
11); cr = rotl(cr,
10)
29708 er = fn3(er, ar, br, cr, dr, m[
7],
0x6d703ef3,
8); br = rotl(br,
10)
29709 dr = fn3(dr, er, ar, br, cr, m[
14],
0x6d703ef3,
6); ar = rotl(ar,
10)
29710 cr = fn3(cr, dr, er, ar, br, m[
6],
0x6d703ef3,
6); er = rotl(er,
10)
29711 br = fn3(br, cr, dr, er, ar, m[
9],
0x6d703ef3,
14); dr = rotl(dr,
10)
29712 ar = fn3(ar, br, cr, dr, er, m[
11],
0x6d703ef3,
12); cr = rotl(cr,
10)
29713 er = fn3(er, ar, br, cr, dr, m[
8],
0x6d703ef3,
13); br = rotl(br,
10)
29714 dr = fn3(dr, er, ar, br, cr, m[
12],
0x6d703ef3,
5); ar = rotl(ar,
10)
29715 cr = fn3(cr, dr, er, ar, br, m[
2],
0x6d703ef3,
14); er = rotl(er,
10)
29716 br = fn3(br, cr, dr, er, ar, m[
10],
0x6d703ef3,
13); dr = rotl(dr,
10)
29717 ar = fn3(ar, br, cr, dr, er, m[
0],
0x6d703ef3,
13); cr = rotl(cr,
10)
29718 er = fn3(er, ar, br, cr, dr, m[
4],
0x6d703ef3,
7); br = rotl(br,
10)
29719 dr = fn3(dr, er, ar, br, cr, m[
13],
0x6d703ef3,
5); ar = rotl(ar,
10)
29721 // M'j =
8,
6,
4,
1,
3,
11,
15,
0,
5,
12,
2,
13,
9,
7,
10,
14
29723 // S'j =
15,
5,
8,
11,
14,
14,
6,
14,
6,
9,
12,
9,
12,
5,
15,
8
29724 cr = fn2(cr, dr, er, ar, br, m[
8],
0x7a6d76e9,
15); er = rotl(er,
10)
29725 br = fn2(br, cr, dr, er, ar, m[
6],
0x7a6d76e9,
5); dr = rotl(dr,
10)
29726 ar = fn2(ar, br, cr, dr, er, m[
4],
0x7a6d76e9,
8); cr = rotl(cr,
10)
29727 er = fn2(er, ar, br, cr, dr, m[
1],
0x7a6d76e9,
11); br = rotl(br,
10)
29728 dr = fn2(dr, er, ar, br, cr, m[
3],
0x7a6d76e9,
14); ar = rotl(ar,
10)
29729 cr = fn2(cr, dr, er, ar, br, m[
11],
0x7a6d76e9,
14); er = rotl(er,
10)
29730 br = fn2(br, cr, dr, er, ar, m[
15],
0x7a6d76e9,
6); dr = rotl(dr,
10)
29731 ar = fn2(ar, br, cr, dr, er, m[
0],
0x7a6d76e9,
14); cr = rotl(cr,
10)
29732 er = fn2(er, ar, br, cr, dr, m[
5],
0x7a6d76e9,
6); br = rotl(br,
10)
29733 dr = fn2(dr, er, ar, br, cr, m[
12],
0x7a6d76e9,
9); ar = rotl(ar,
10)
29734 cr = fn2(cr, dr, er, ar, br, m[
2],
0x7a6d76e9,
12); er = rotl(er,
10)
29735 br = fn2(br, cr, dr, er, ar, m[
13],
0x7a6d76e9,
9); dr = rotl(dr,
10)
29736 ar = fn2(ar, br, cr, dr, er, m[
9],
0x7a6d76e9,
12); cr = rotl(cr,
10)
29737 er = fn2(er, ar, br, cr, dr, m[
7],
0x7a6d76e9,
5); br = rotl(br,
10)
29738 dr = fn2(dr, er, ar, br, cr, m[
10],
0x7a6d76e9,
15); ar = rotl(ar,
10)
29739 cr = fn2(cr, dr, er, ar, br, m[
14],
0x7a6d76e9,
8); er = rotl(er,
10)
29741 // M'j =
12,
15,
10,
4,
1,
5,
8,
7,
6,
2,
13,
14,
0,
3,
9,
11
29743 // S'j =
8,
5,
12,
9,
12,
5,
14,
6,
8,
13,
6,
5,
15,
13,
11,
11
29744 br = fn1(br, cr, dr, er, ar, m[
12],
0x00000000,
8); dr = rotl(dr,
10)
29745 ar = fn1(ar, br, cr, dr, er, m[
15],
0x00000000,
5); cr = rotl(cr,
10)
29746 er = fn1(er, ar, br, cr, dr, m[
10],
0x00000000,
12); br = rotl(br,
10)
29747 dr = fn1(dr, er, ar, br, cr, m[
4],
0x00000000,
9); ar = rotl(ar,
10)
29748 cr = fn1(cr, dr, er, ar, br, m[
1],
0x00000000,
12); er = rotl(er,
10)
29749 br = fn1(br, cr, dr, er, ar, m[
5],
0x00000000,
5); dr = rotl(dr,
10)
29750 ar = fn1(ar, br, cr, dr, er, m[
8],
0x00000000,
14); cr = rotl(cr,
10)
29751 er = fn1(er, ar, br, cr, dr, m[
7],
0x00000000,
6); br = rotl(br,
10)
29752 dr = fn1(dr, er, ar, br, cr, m[
6],
0x00000000,
8); ar = rotl(ar,
10)
29753 cr = fn1(cr, dr, er, ar, br, m[
2],
0x00000000,
13); er = rotl(er,
10)
29754 br = fn1(br, cr, dr, er, ar, m[
13],
0x00000000,
6); dr = rotl(dr,
10)
29755 ar = fn1(ar, br, cr, dr, er, m[
14],
0x00000000,
5); cr = rotl(cr,
10)
29756 er = fn1(er, ar, br, cr, dr, m[
0],
0x00000000,
15); br = rotl(br,
10)
29757 dr = fn1(dr, er, ar, br, cr, m[
3],
0x00000000,
13); ar = rotl(ar,
10)
29758 cr = fn1(cr, dr, er, ar, br, m[
9],
0x00000000,
11); er = rotl(er,
10)
29759 br = fn1(br, cr, dr, er, ar, m[
11],
0x00000000,
11); dr = rotl(dr,
10)
29762 var t = (this._b + cl + dr) |
0
29763 this._b = (this._c + dl + er) |
0
29764 this._c = (this._d + el + ar) |
0
29765 this._d = (this._e + al + br) |
0
29766 this._e = (this._a + bl + cr) |
0
29770 RIPEMD160.prototype._digest = function () {
29771 // create padding and handle blocks
29772 this._block[this._blockOffset++] =
0x80
29773 if (this._blockOffset
> 56) {
29774 this._block.fill(
0, this._blockOffset,
64)
29776 this._blockOffset =
0
29779 this._block.fill(
0, this._blockOffset,
56)
29780 this._block.writeUInt32LE(this._length[
0],
56)
29781 this._block.writeUInt32LE(this._length[
1],
60)
29785 var buffer = new Buffer(
20)
29786 buffer.writeInt32LE(this._a,
0)
29787 buffer.writeInt32LE(this._b,
4)
29788 buffer.writeInt32LE(this._c,
8)
29789 buffer.writeInt32LE(this._d,
12)
29790 buffer.writeInt32LE(this._e,
16)
29794 function rotl (x, n) {
29795 return (x << n) | (x
>>> (
32 - n))
29798 function fn1 (a, b, c, d, e, m, k, s) {
29799 return (rotl((a + (b ^ c ^ d) + m + k) |
0, s) + e) |
0
29802 function fn2 (a, b, c, d, e, m, k, s) {
29803 return (rotl((a + ((b & c) | ((~b) & d)) + m + k) |
0, s) + e) |
0
29806 function fn3 (a, b, c, d, e, m, k, s) {
29807 return (rotl((a + ((b | (~c)) ^ d) + m + k) |
0, s) + e) |
0
29810 function fn4 (a, b, c, d, e, m, k, s) {
29811 return (rotl((a + ((b & d) | (c & (~d))) + m + k) |
0, s) + e) |
0
29814 function fn5 (a, b, c, d, e, m, k, s) {
29815 return (rotl((a + (b ^ (c | (~d))) + m + k) |
0, s) + e) |
0
29818 module.exports = RIPEMD160
29820 }).call(this,require("buffer").Buffer)
29821 },{"buffer":
5,"hash-base":
113,"inherits":
121}],
128:[function(require,module,exports){
29822 /* eslint-disable node/no-deprecated-api */
29823 var buffer = require('buffer')
29824 var Buffer = buffer.Buffer
29826 // alternative to using Object.keys for old browsers
29827 function copyProps (src, dst) {
29828 for (var key in src) {
29829 dst[key] = src[key]
29832 if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
29833 module.exports = buffer
29835 // Copy properties from require('buffer')
29836 copyProps(buffer, exports)
29837 exports.Buffer = SafeBuffer
29840 function SafeBuffer (arg, encodingOrOffset, length) {
29841 return Buffer(arg, encodingOrOffset, length)
29844 // Copy static methods from Buffer
29845 copyProps(Buffer, SafeBuffer)
29847 SafeBuffer.from = function (arg, encodingOrOffset, length) {
29848 if (typeof arg === 'number') {
29849 throw new TypeError('Argument must not be a number')
29851 return Buffer(arg, encodingOrOffset, length)
29854 SafeBuffer.alloc = function (size, fill, encoding) {
29855 if (typeof size !== 'number') {
29856 throw new TypeError('Argument must be a number')
29858 var buf = Buffer(size)
29859 if (fill !== undefined) {
29860 if (typeof encoding === 'string') {
29861 buf.fill(fill, encoding)
29871 SafeBuffer.allocUnsafe = function (size) {
29872 if (typeof size !== 'number') {
29873 throw new TypeError('Argument must be a number')
29875 return Buffer(size)
29878 SafeBuffer.allocUnsafeSlow = function (size) {
29879 if (typeof size !== 'number') {
29880 throw new TypeError('Argument must be a number')
29882 return buffer.SlowBuffer(size)
29885 },{"buffer":
5}],
129:[function(require,module,exports){
29886 var Buffer = require('safe-buffer').Buffer
29888 // prototype class for hash functions
29889 function Hash (blockSize, finalSize) {
29890 this._block = Buffer.alloc(blockSize)
29891 this._finalSize = finalSize
29892 this._blockSize = blockSize
29896 Hash.prototype.update = function (data, enc) {
29897 if (typeof data === 'string') {
29898 enc = enc || 'utf8'
29899 data = Buffer.from(data, enc)
29902 var block = this._block
29903 var blockSize = this._blockSize
29904 var length = data.length
29905 var accum = this._len
29907 for (var offset =
0; offset < length;) {
29908 var assigned = accum % blockSize
29909 var remainder = Math.min(length - offset, blockSize - assigned)
29911 for (var i =
0; i < remainder; i++) {
29912 block[assigned + i] = data[offset + i]
29916 offset += remainder
29918 if ((accum % blockSize) ===
0) {
29919 this._update(block)
29923 this._len += length
29927 Hash.prototype.digest = function (enc) {
29928 var rem = this._len % this._blockSize
29930 this._block[rem] =
0x80
29932 // zero (rem +
1) trailing bits, where (rem +
1) is the smallest
29933 // non-negative solution to the equation (length +
1 + (rem +
1)) === finalSize mod blockSize
29934 this._block.fill(
0, rem +
1)
29936 if (rem
>= this._finalSize) {
29937 this._update(this._block)
29938 this._block.fill(
0)
29941 var bits = this._len *
8
29944 if (bits <=
0xffffffff) {
29945 this._block.writeUInt32BE(bits, this._blockSize -
4)
29949 var lowBits = bits &
0xffffffff
29950 var highBits = (bits - lowBits) /
0x100000000
29952 this._block.writeUInt32BE(highBits, this._blockSize -
8)
29953 this._block.writeUInt32BE(lowBits, this._blockSize -
4)
29956 this._update(this._block)
29957 var hash = this._hash()
29959 return enc ? hash.toString(enc) : hash
29962 Hash.prototype._update = function () {
29963 throw new Error('_update must be implemented by subclass')
29966 module.exports = Hash
29968 },{"safe-buffer":
128}],
130:[function(require,module,exports){
29969 var exports = module.exports = function SHA (algorithm) {
29970 algorithm = algorithm.toLowerCase()
29972 var Algorithm = exports[algorithm]
29973 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
29975 return new Algorithm()
29978 exports.sha = require('./sha')
29979 exports.sha1 = require('./sha1')
29980 exports.sha224 = require('./sha224')
29981 exports.sha256 = require('./sha256')
29982 exports.sha384 = require('./sha384')
29983 exports.sha512 = require('./sha512')
29985 },{"./sha":
131,"./sha1":
132,"./sha224":
133,"./sha256":
134,"./sha384":
135,"./sha512":
136}],
131:[function(require,module,exports){
29987 * A JavaScript implementation of the Secure Hash Algorithm, SHA-
0, as defined
29988 * in FIPS PUB
180-
1
29989 * This source code is derived from sha1.js of the same repository.
29990 * The difference between SHA-
0 and SHA-
1 is just a bitwise rotate left
29991 * operation was added.
29994 var inherits = require('inherits')
29995 var Hash = require('./hash')
29996 var Buffer = require('safe-buffer').Buffer
29999 0x5a827999,
0x6ed9eba1,
0x8f1bbcdc |
0,
0xca62c1d6 |
0
30002 var W = new Array(
80)
30008 Hash.call(this,
64,
56)
30011 inherits(Sha, Hash)
30013 Sha.prototype.init = function () {
30014 this._a =
0x67452301
30015 this._b =
0xefcdab89
30016 this._c =
0x98badcfe
30017 this._d =
0x10325476
30018 this._e =
0xc3d2e1f0
30023 function rotl5 (num) {
30024 return (num <<
5) | (num
>>> 27)
30027 function rotl30 (num) {
30028 return (num <<
30) | (num
>>> 2)
30031 function ft (s, b, c, d) {
30032 if (s ===
0) return (b & c) | ((~b) & d)
30033 if (s ===
2) return (b & c) | (b & d) | (c & d)
30037 Sha.prototype._update = function (M) {
30040 var a = this._a |
0
30041 var b = this._b |
0
30042 var c = this._c |
0
30043 var d = this._d |
0
30044 var e = this._e |
0
30046 for (var i =
0; i <
16; ++i) W[i] = M.readInt32BE(i *
4)
30047 for (; i <
80; ++i) W[i] = W[i -
3] ^ W[i -
8] ^ W[i -
14] ^ W[i -
16]
30049 for (var j =
0; j <
80; ++j) {
30051 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) |
0
30060 this._a = (a + this._a) |
0
30061 this._b = (b + this._b) |
0
30062 this._c = (c + this._c) |
0
30063 this._d = (d + this._d) |
0
30064 this._e = (e + this._e) |
0
30067 Sha.prototype._hash = function () {
30068 var H = Buffer.allocUnsafe(
20)
30070 H.writeInt32BE(this._a |
0,
0)
30071 H.writeInt32BE(this._b |
0,
4)
30072 H.writeInt32BE(this._c |
0,
8)
30073 H.writeInt32BE(this._d |
0,
12)
30074 H.writeInt32BE(this._e |
0,
16)
30079 module.exports = Sha
30081 },{
"./hash":
129,
"inherits":
121,
"safe-buffer":
128}],
132:[function(require,module,exports){
30083 * A JavaScript implementation of the Secure Hash Algorithm, SHA-
1, as defined
30084 * in FIPS PUB
180-
1
30085 * Version
2.1a Copyright Paul Johnston
2000 -
2002.
30086 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
30087 * Distributed under the BSD License
30088 * See http://pajhome.org.uk/crypt/md5 for details.
30091 var inherits = require('inherits')
30092 var Hash = require('./hash')
30093 var Buffer = require('safe-buffer').Buffer
30096 0x5a827999,
0x6ed9eba1,
0x8f1bbcdc |
0,
0xca62c1d6 |
0
30099 var W = new Array(
80)
30105 Hash.call(this,
64,
56)
30108 inherits(Sha1, Hash)
30110 Sha1.prototype.init = function () {
30111 this._a =
0x67452301
30112 this._b =
0xefcdab89
30113 this._c =
0x98badcfe
30114 this._d =
0x10325476
30115 this._e =
0xc3d2e1f0
30120 function rotl1 (num) {
30121 return (num <<
1) | (num
>>> 31)
30124 function rotl5 (num) {
30125 return (num <<
5) | (num
>>> 27)
30128 function rotl30 (num) {
30129 return (num <<
30) | (num
>>> 2)
30132 function ft (s, b, c, d) {
30133 if (s ===
0) return (b & c) | ((~b) & d)
30134 if (s ===
2) return (b & c) | (b & d) | (c & d)
30138 Sha1.prototype._update = function (M) {
30141 var a = this._a |
0
30142 var b = this._b |
0
30143 var c = this._c |
0
30144 var d = this._d |
0
30145 var e = this._e |
0
30147 for (var i =
0; i <
16; ++i) W[i] = M.readInt32BE(i *
4)
30148 for (; i <
80; ++i) W[i] = rotl1(W[i -
3] ^ W[i -
8] ^ W[i -
14] ^ W[i -
16])
30150 for (var j =
0; j <
80; ++j) {
30152 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) |
0
30161 this._a = (a + this._a) |
0
30162 this._b = (b + this._b) |
0
30163 this._c = (c + this._c) |
0
30164 this._d = (d + this._d) |
0
30165 this._e = (e + this._e) |
0
30168 Sha1.prototype._hash = function () {
30169 var H = Buffer.allocUnsafe(
20)
30171 H.writeInt32BE(this._a |
0,
0)
30172 H.writeInt32BE(this._b |
0,
4)
30173 H.writeInt32BE(this._c |
0,
8)
30174 H.writeInt32BE(this._d |
0,
12)
30175 H.writeInt32BE(this._e |
0,
16)
30180 module.exports = Sha1
30182 },{
"./hash":
129,
"inherits":
121,
"safe-buffer":
128}],
133:[function(require,module,exports){
30184 * A JavaScript implementation of the Secure Hash Algorithm, SHA-
256, as defined
30186 * Version
2.2-beta Copyright Angel Marin, Paul Johnston
2000 -
2009.
30187 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
30191 var inherits = require('inherits')
30192 var Sha256 = require('./sha256')
30193 var Hash = require('./hash')
30194 var Buffer = require('safe-buffer').Buffer
30196 var W = new Array(
64)
30198 function Sha224 () {
30201 this._w = W // new Array(
64)
30203 Hash.call(this,
64,
56)
30206 inherits(Sha224, Sha256)
30208 Sha224.prototype.init = function () {
30209 this._a =
0xc1059ed8
30210 this._b =
0x367cd507
30211 this._c =
0x3070dd17
30212 this._d =
0xf70e5939
30213 this._e =
0xffc00b31
30214 this._f =
0x68581511
30215 this._g =
0x64f98fa7
30216 this._h =
0xbefa4fa4
30221 Sha224.prototype._hash = function () {
30222 var H = Buffer.allocUnsafe(
28)
30224 H.writeInt32BE(this._a,
0)
30225 H.writeInt32BE(this._b,
4)
30226 H.writeInt32BE(this._c,
8)
30227 H.writeInt32BE(this._d,
12)
30228 H.writeInt32BE(this._e,
16)
30229 H.writeInt32BE(this._f,
20)
30230 H.writeInt32BE(this._g,
24)
30235 module.exports = Sha224
30237 },{
"./hash":
129,
"./sha256":
134,
"inherits":
121,
"safe-buffer":
128}],
134:[function(require,module,exports){
30239 * A JavaScript implementation of the Secure Hash Algorithm, SHA-
256, as defined
30241 * Version
2.2-beta Copyright Angel Marin, Paul Johnston
2000 -
2009.
30242 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
30246 var inherits = require('inherits')
30247 var Hash = require('./hash')
30248 var Buffer = require('safe-buffer').Buffer
30251 0x428A2F98,
0x71374491,
0xB5C0FBCF,
0xE9B5DBA5,
30252 0x3956C25B,
0x59F111F1,
0x923F82A4,
0xAB1C5ED5,
30253 0xD807AA98,
0x12835B01,
0x243185BE,
0x550C7DC3,
30254 0x72BE5D74,
0x80DEB1FE,
0x9BDC06A7,
0xC19BF174,
30255 0xE49B69C1,
0xEFBE4786,
0x0FC19DC6,
0x240CA1CC,
30256 0x2DE92C6F,
0x4A7484AA,
0x5CB0A9DC,
0x76F988DA,
30257 0x983E5152,
0xA831C66D,
0xB00327C8,
0xBF597FC7,
30258 0xC6E00BF3,
0xD5A79147,
0x06CA6351,
0x14292967,
30259 0x27B70A85,
0x2E1B2138,
0x4D2C6DFC,
0x53380D13,
30260 0x650A7354,
0x766A0ABB,
0x81C2C92E,
0x92722C85,
30261 0xA2BFE8A1,
0xA81A664B,
0xC24B8B70,
0xC76C51A3,
30262 0xD192E819,
0xD6990624,
0xF40E3585,
0x106AA070,
30263 0x19A4C116,
0x1E376C08,
0x2748774C,
0x34B0BCB5,
30264 0x391C0CB3,
0x4ED8AA4A,
0x5B9CCA4F,
0x682E6FF3,
30265 0x748F82EE,
0x78A5636F,
0x84C87814,
0x8CC70208,
30266 0x90BEFFFA,
0xA4506CEB,
0xBEF9A3F7,
0xC67178F2
30269 var W = new Array(
64)
30271 function Sha256 () {
30274 this._w = W // new Array(
64)
30276 Hash.call(this,
64,
56)
30279 inherits(Sha256, Hash)
30281 Sha256.prototype.init = function () {
30282 this._a =
0x6a09e667
30283 this._b =
0xbb67ae85
30284 this._c =
0x3c6ef372
30285 this._d =
0xa54ff53a
30286 this._e =
0x510e527f
30287 this._f =
0x9b05688c
30288 this._g =
0x1f83d9ab
30289 this._h =
0x5be0cd19
30294 function ch (x, y, z) {
30295 return z ^ (x & (y ^ z))
30298 function maj (x, y, z) {
30299 return (x & y) | (z & (x | y))
30302 function sigma0 (x) {
30303 return (x
>>> 2 | x <<
30) ^ (x
>>> 13 | x <<
19) ^ (x
>>> 22 | x <<
10)
30306 function sigma1 (x) {
30307 return (x
>>> 6 | x <<
26) ^ (x
>>> 11 | x <<
21) ^ (x
>>> 25 | x <<
7)
30310 function gamma0 (x) {
30311 return (x
>>> 7 | x <<
25) ^ (x
>>> 18 | x <<
14) ^ (x
>>> 3)
30314 function gamma1 (x) {
30315 return (x
>>> 17 | x <<
15) ^ (x
>>> 19 | x <<
13) ^ (x
>>> 10)
30318 Sha256.prototype._update = function (M) {
30321 var a = this._a |
0
30322 var b = this._b |
0
30323 var c = this._c |
0
30324 var d = this._d |
0
30325 var e = this._e |
0
30326 var f = this._f |
0
30327 var g = this._g |
0
30328 var h = this._h |
0
30330 for (var i =
0; i <
16; ++i) W[i] = M.readInt32BE(i *
4)
30331 for (; i <
64; ++i) W[i] = (gamma1(W[i -
2]) + W[i -
7] + gamma0(W[i -
15]) + W[i -
16]) |
0
30333 for (var j =
0; j <
64; ++j) {
30334 var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) |
0
30335 var T2 = (sigma0(a) + maj(a, b, c)) |
0
30347 this._a = (a + this._a) |
0
30348 this._b = (b + this._b) |
0
30349 this._c = (c + this._c) |
0
30350 this._d = (d + this._d) |
0
30351 this._e = (e + this._e) |
0
30352 this._f = (f + this._f) |
0
30353 this._g = (g + this._g) |
0
30354 this._h = (h + this._h) |
0
30357 Sha256.prototype._hash = function () {
30358 var H = Buffer.allocUnsafe(
32)
30360 H.writeInt32BE(this._a,
0)
30361 H.writeInt32BE(this._b,
4)
30362 H.writeInt32BE(this._c,
8)
30363 H.writeInt32BE(this._d,
12)
30364 H.writeInt32BE(this._e,
16)
30365 H.writeInt32BE(this._f,
20)
30366 H.writeInt32BE(this._g,
24)
30367 H.writeInt32BE(this._h,
28)
30372 module.exports = Sha256
30374 },{
"./hash":
129,
"inherits":
121,
"safe-buffer":
128}],
135:[function(require,module,exports){
30375 var inherits = require('inherits')
30376 var SHA512 = require('./sha512')
30377 var Hash = require('./hash')
30378 var Buffer = require('safe-buffer').Buffer
30380 var W = new Array(
160)
30382 function Sha384 () {
30386 Hash.call(this,
128,
112)
30389 inherits(Sha384, SHA512)
30391 Sha384.prototype.init = function () {
30392 this._ah =
0xcbbb9d5d
30393 this._bh =
0x629a292a
30394 this._ch =
0x9159015a
30395 this._dh =
0x152fecd8
30396 this._eh =
0x67332667
30397 this._fh =
0x8eb44a87
30398 this._gh =
0xdb0c2e0d
30399 this._hh =
0x47b5481d
30401 this._al =
0xc1059ed8
30402 this._bl =
0x367cd507
30403 this._cl =
0x3070dd17
30404 this._dl =
0xf70e5939
30405 this._el =
0xffc00b31
30406 this._fl =
0x68581511
30407 this._gl =
0x64f98fa7
30408 this._hl =
0xbefa4fa4
30413 Sha384.prototype._hash = function () {
30414 var H = Buffer.allocUnsafe(
48)
30416 function writeInt64BE (h, l, offset) {
30417 H.writeInt32BE(h, offset)
30418 H.writeInt32BE(l, offset +
4)
30421 writeInt64BE(this._ah, this._al,
0)
30422 writeInt64BE(this._bh, this._bl,
8)
30423 writeInt64BE(this._ch, this._cl,
16)
30424 writeInt64BE(this._dh, this._dl,
24)
30425 writeInt64BE(this._eh, this._el,
32)
30426 writeInt64BE(this._fh, this._fl,
40)
30431 module.exports = Sha384
30433 },{
"./hash":
129,
"./sha512":
136,
"inherits":
121,
"safe-buffer":
128}],
136:[function(require,module,exports){
30434 var inherits = require('inherits')
30435 var Hash = require('./hash')
30436 var Buffer = require('safe-buffer').Buffer
30439 0x428a2f98,
0xd728ae22,
0x71374491,
0x23ef65cd,
30440 0xb5c0fbcf,
0xec4d3b2f,
0xe9b5dba5,
0x8189dbbc,
30441 0x3956c25b,
0xf348b538,
0x59f111f1,
0xb605d019,
30442 0x923f82a4,
0xaf194f9b,
0xab1c5ed5,
0xda6d8118,
30443 0xd807aa98,
0xa3030242,
0x12835b01,
0x45706fbe,
30444 0x243185be,
0x4ee4b28c,
0x550c7dc3,
0xd5ffb4e2,
30445 0x72be5d74,
0xf27b896f,
0x80deb1fe,
0x3b1696b1,
30446 0x9bdc06a7,
0x25c71235,
0xc19bf174,
0xcf692694,
30447 0xe49b69c1,
0x9ef14ad2,
0xefbe4786,
0x384f25e3,
30448 0x0fc19dc6,
0x8b8cd5b5,
0x240ca1cc,
0x77ac9c65,
30449 0x2de92c6f,
0x592b0275,
0x4a7484aa,
0x6ea6e483,
30450 0x5cb0a9dc,
0xbd41fbd4,
0x76f988da,
0x831153b5,
30451 0x983e5152,
0xee66dfab,
0xa831c66d,
0x2db43210,
30452 0xb00327c8,
0x98fb213f,
0xbf597fc7,
0xbeef0ee4,
30453 0xc6e00bf3,
0x3da88fc2,
0xd5a79147,
0x930aa725,
30454 0x06ca6351,
0xe003826f,
0x14292967,
0x0a0e6e70,
30455 0x27b70a85,
0x46d22ffc,
0x2e1b2138,
0x5c26c926,
30456 0x4d2c6dfc,
0x5ac42aed,
0x53380d13,
0x9d95b3df,
30457 0x650a7354,
0x8baf63de,
0x766a0abb,
0x3c77b2a8,
30458 0x81c2c92e,
0x47edaee6,
0x92722c85,
0x1482353b,
30459 0xa2bfe8a1,
0x4cf10364,
0xa81a664b,
0xbc423001,
30460 0xc24b8b70,
0xd0f89791,
0xc76c51a3,
0x0654be30,
30461 0xd192e819,
0xd6ef5218,
0xd6990624,
0x5565a910,
30462 0xf40e3585,
0x5771202a,
0x106aa070,
0x32bbd1b8,
30463 0x19a4c116,
0xb8d2d0c8,
0x1e376c08,
0x5141ab53,
30464 0x2748774c,
0xdf8eeb99,
0x34b0bcb5,
0xe19b48a8,
30465 0x391c0cb3,
0xc5c95a63,
0x4ed8aa4a,
0xe3418acb,
30466 0x5b9cca4f,
0x7763e373,
0x682e6ff3,
0xd6b2b8a3,
30467 0x748f82ee,
0x5defb2fc,
0x78a5636f,
0x43172f60,
30468 0x84c87814,
0xa1f0ab72,
0x8cc70208,
0x1a6439ec,
30469 0x90befffa,
0x23631e28,
0xa4506ceb,
0xde82bde9,
30470 0xbef9a3f7,
0xb2c67915,
0xc67178f2,
0xe372532b,
30471 0xca273ece,
0xea26619c,
0xd186b8c7,
0x21c0c207,
30472 0xeada7dd6,
0xcde0eb1e,
0xf57d4f7f,
0xee6ed178,
30473 0x06f067aa,
0x72176fba,
0x0a637dc5,
0xa2c898a6,
30474 0x113f9804,
0xbef90dae,
0x1b710b35,
0x131c471b,
30475 0x28db77f5,
0x23047d84,
0x32caab7b,
0x40c72493,
30476 0x3c9ebe0a,
0x15c9bebc,
0x431d67c4,
0x9c100d4c,
30477 0x4cc5d4be,
0xcb3e42b6,
0x597f299c,
0xfc657e2a,
30478 0x5fcb6fab,
0x3ad6faec,
0x6c44198c,
0x4a475817
30481 var W = new Array(
160)
30483 function Sha512 () {
30487 Hash.call(this,
128,
112)
30490 inherits(Sha512, Hash)
30492 Sha512.prototype.init = function () {
30493 this._ah =
0x6a09e667
30494 this._bh =
0xbb67ae85
30495 this._ch =
0x3c6ef372
30496 this._dh =
0xa54ff53a
30497 this._eh =
0x510e527f
30498 this._fh =
0x9b05688c
30499 this._gh =
0x1f83d9ab
30500 this._hh =
0x5be0cd19
30502 this._al =
0xf3bcc908
30503 this._bl =
0x84caa73b
30504 this._cl =
0xfe94f82b
30505 this._dl =
0x5f1d36f1
30506 this._el =
0xade682d1
30507 this._fl =
0x2b3e6c1f
30508 this._gl =
0xfb41bd6b
30509 this._hl =
0x137e2179
30514 function Ch (x, y, z) {
30515 return z ^ (x & (y ^ z))
30518 function maj (x, y, z) {
30519 return (x & y) | (z & (x | y))
30522 function sigma0 (x, xl) {
30523 return (x
>>> 28 | xl <<
4) ^ (xl
>>> 2 | x <<
30) ^ (xl
>>> 7 | x <<
25)
30526 function sigma1 (x, xl) {
30527 return (x
>>> 14 | xl <<
18) ^ (x
>>> 18 | xl <<
14) ^ (xl
>>> 9 | x <<
23)
30530 function Gamma0 (x, xl) {
30531 return (x
>>> 1 | xl <<
31) ^ (x
>>> 8 | xl <<
24) ^ (x
>>> 7)
30534 function Gamma0l (x, xl) {
30535 return (x
>>> 1 | xl <<
31) ^ (x
>>> 8 | xl <<
24) ^ (x
>>> 7 | xl <<
25)
30538 function Gamma1 (x, xl) {
30539 return (x
>>> 19 | xl <<
13) ^ (xl
>>> 29 | x <<
3) ^ (x
>>> 6)
30542 function Gamma1l (x, xl) {
30543 return (x
>>> 19 | xl <<
13) ^ (xl
>>> 29 | x <<
3) ^ (x
>>> 6 | xl <<
26)
30546 function getCarry (a, b) {
30547 return (a
>>> 0) < (b
>>> 0) ?
1 :
0
30550 Sha512.prototype._update = function (M) {
30553 var ah = this._ah |
0
30554 var bh = this._bh |
0
30555 var ch = this._ch |
0
30556 var dh = this._dh |
0
30557 var eh = this._eh |
0
30558 var fh = this._fh |
0
30559 var gh = this._gh |
0
30560 var hh = this._hh |
0
30562 var al = this._al |
0
30563 var bl = this._bl |
0
30564 var cl = this._cl |
0
30565 var dl = this._dl |
0
30566 var el = this._el |
0
30567 var fl = this._fl |
0
30568 var gl = this._gl |
0
30569 var hl = this._hl |
0
30571 for (var i =
0; i <
32; i +=
2) {
30572 W[i] = M.readInt32BE(i *
4)
30573 W[i +
1] = M.readInt32BE(i *
4 +
4)
30575 for (; i <
160; i +=
2) {
30576 var xh = W[i -
15 *
2]
30577 var xl = W[i -
15 *
2 +
1]
30578 var gamma0 = Gamma0(xh, xl)
30579 var gamma0l = Gamma0l(xl, xh)
30582 xl = W[i -
2 *
2 +
1]
30583 var gamma1 = Gamma1(xh, xl)
30584 var gamma1l = Gamma1l(xl, xh)
30586 // W[i] = gamma0 + W[i -
7] + gamma1 + W[i -
16]
30587 var Wi7h = W[i -
7 *
2]
30588 var Wi7l = W[i -
7 *
2 +
1]
30590 var Wi16h = W[i -
16 *
2]
30591 var Wi16l = W[i -
16 *
2 +
1]
30593 var Wil = (gamma0l + Wi7l) |
0
30594 var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) |
0
30595 Wil = (Wil + gamma1l) |
0
30596 Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) |
0
30597 Wil = (Wil + Wi16l) |
0
30598 Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) |
0
30604 for (var j =
0; j <
160; j +=
2) {
30608 var majh = maj(ah, bh, ch)
30609 var majl = maj(al, bl, cl)
30611 var sigma0h = sigma0(ah, al)
30612 var sigma0l = sigma0(al, ah)
30613 var sigma1h = sigma1(eh, el)
30614 var sigma1l = sigma1(el, eh)
30616 // t1 = h + sigma1 + ch + K[j] + W[j]
30620 var chh = Ch(eh, fh, gh)
30621 var chl = Ch(el, fl, gl)
30623 var t1l = (hl + sigma1l) |
0
30624 var t1h = (hh + sigma1h + getCarry(t1l, hl)) |
0
30625 t1l = (t1l + chl) |
0
30626 t1h = (t1h + chh + getCarry(t1l, chl)) |
0
30627 t1l = (t1l + Kil) |
0
30628 t1h = (t1h + Kih + getCarry(t1l, Kil)) |
0
30629 t1l = (t1l + Wil) |
0
30630 t1h = (t1h + Wih + getCarry(t1l, Wil)) |
0
30632 // t2 = sigma0 + maj
30633 var t2l = (sigma0l + majl) |
0
30634 var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) |
0
30642 el = (dl + t1l) |
0
30643 eh = (dh + t1h + getCarry(el, dl)) |
0
30650 al = (t1l + t2l) |
0
30651 ah = (t1h + t2h + getCarry(al, t1l)) |
0
30654 this._al = (this._al + al) |
0
30655 this._bl = (this._bl + bl) |
0
30656 this._cl = (this._cl + cl) |
0
30657 this._dl = (this._dl + dl) |
0
30658 this._el = (this._el + el) |
0
30659 this._fl = (this._fl + fl) |
0
30660 this._gl = (this._gl + gl) |
0
30661 this._hl = (this._hl + hl) |
0
30663 this._ah = (this._ah + ah + getCarry(this._al, al)) |
0
30664 this._bh = (this._bh + bh + getCarry(this._bl, bl)) |
0
30665 this._ch = (this._ch + ch + getCarry(this._cl, cl)) |
0
30666 this._dh = (this._dh + dh + getCarry(this._dl, dl)) |
0
30667 this._eh = (this._eh + eh + getCarry(this._el, el)) |
0
30668 this._fh = (this._fh + fh + getCarry(this._fl, fl)) |
0
30669 this._gh = (this._gh + gh + getCarry(this._gl, gl)) |
0
30670 this._hh = (this._hh + hh + getCarry(this._hl, hl)) |
0
30673 Sha512.prototype._hash = function () {
30674 var H = Buffer.allocUnsafe(
64)
30676 function writeInt64BE (h, l, offset) {
30677 H.writeInt32BE(h, offset)
30678 H.writeInt32BE(l, offset +
4)
30681 writeInt64BE(this._ah, this._al,
0)
30682 writeInt64BE(this._bh, this._bl,
8)
30683 writeInt64BE(this._ch, this._cl,
16)
30684 writeInt64BE(this._dh, this._dl,
24)
30685 writeInt64BE(this._eh, this._el,
32)
30686 writeInt64BE(this._fh, this._fl,
40)
30687 writeInt64BE(this._gh, this._gl,
48)
30688 writeInt64BE(this._hh, this._hl,
56)
30693 module.exports = Sha512
30695 },{
"./hash":
129,
"inherits":
121,
"safe-buffer":
128}],
137:[function(require,module,exports){
30696 var native = require('./native')
30698 function getTypeName (fn) {
30699 return fn.name || fn.toString().match(/function (.*?)\s*\(/)[
1]
30702 function getValueTypeName (value) {
30703 return native.Nil(value) ? '' : getTypeName(value.constructor)
30706 function getValue (value) {
30707 if (native.Function(value)) return ''
30708 if (native.String(value)) return JSON.stringify(value)
30709 if (value && native.Object(value)) return ''
30713 function tfJSON (type) {
30714 if (native.Function(type)) return type.toJSON ? type.toJSON() : getTypeName(type)
30715 if (native.Array(type)) return 'Array'
30716 if (type && native.Object(type)) return 'Object'
30718 return type !== undefined ? type : ''
30721 function tfErrorString (type, value, valueTypeName) {
30722 var valueJson = getValue(value)
30724 return 'Expected ' + tfJSON(type) + ', got' +
30725 (valueTypeName !== '' ? ' ' + valueTypeName : '') +
30726 (valueJson !== '' ? ' ' + valueJson : '')
30729 function TfTypeError (type, value, valueTypeName) {
30730 valueTypeName = valueTypeName || getValueTypeName(value)
30731 this.message = tfErrorString(type, value, valueTypeName)
30733 Error.captureStackTrace(this, TfTypeError)
30735 this.__value = value
30736 this.__valueTypeName = valueTypeName
30739 TfTypeError.prototype = Object.create(Error.prototype)
30740 TfTypeError.prototype.constructor = TfTypeError
30742 function tfPropertyErrorString (type, label, name, value, valueTypeName) {
30743 var description = '
" of type '
30744 if (label === 'key') description = '" with key type '
30746 return tfErrorString('property
"' + tfJSON(name) + description + tfJSON(type), value, valueTypeName)
30749 function TfPropertyTypeError (type, property, label, value, valueTypeName) {
30751 valueTypeName = valueTypeName || getValueTypeName(value)
30752 this.message = tfPropertyErrorString(type, label, property, value, valueTypeName)
30754 this.message = 'Unexpected property "' + property + '
"'
30757 Error.captureStackTrace(this, TfTypeError)
30758 this.__label = label
30759 this.__property = property
30761 this.__value = value
30762 this.__valueTypeName = valueTypeName
30765 TfPropertyTypeError.prototype = Object.create(Error.prototype)
30766 TfPropertyTypeError.prototype.constructor = TfTypeError
30768 function tfCustomError (expected, actual) {
30769 return new TfTypeError(expected, {}, actual)
30772 function tfSubError (e, property, label) {
30774 if (e instanceof TfPropertyTypeError) {
30775 property = property + '.' + e.__property
30777 e = new TfPropertyTypeError(
30778 e.__type, property, e.__label, e.__value, e.__valueTypeName
30782 } else if (e instanceof TfTypeError) {
30783 e = new TfPropertyTypeError(
30784 e.__type, property, label, e.__value, e.__valueTypeName
30788 Error.captureStackTrace(e)
30793 TfTypeError: TfTypeError,
30794 TfPropertyTypeError: TfPropertyTypeError,
30795 tfCustomError: tfCustomError,
30796 tfSubError: tfSubError,
30798 getValueTypeName: getValueTypeName
30801 },{"./native
":140}],138:[function(require,module,exports){
30802 (function (Buffer){
30803 var NATIVE = require('./native')
30804 var ERRORS = require('./errors')
30806 function _Buffer (value) {
30807 return Buffer.isBuffer(value)
30810 function Hex (value) {
30811 return typeof value === 'string' && /^([0-9a-f]{2})+$/i.test(value)
30814 function _LengthN (type, length) {
30815 var name = type.toJSON()
30817 function Length (value) {
30818 if (!type(value)) return false
30819 if (value.length === length) return true
30821 throw ERRORS.tfCustomError(name + '(Length: ' + length + ')', name + '(Length: ' + value.length + ')')
30823 Length.toJSON = function () { return name }
30828 var _ArrayN = _LengthN.bind(null, NATIVE.Array)
30829 var _BufferN = _LengthN.bind(null, _Buffer)
30830 var _HexN = _LengthN.bind(null, Hex)
30831 var _StringN = _LengthN.bind(null, NATIVE.String)
30833 var UINT53_MAX = Math.pow(2, 53) - 1
30835 function Finite (value) {
30836 return typeof value === 'number' && isFinite(value)
30838 function Int8 (value) { return ((value << 24) >> 24) === value }
30839 function Int16 (value) { return ((value << 16) >> 16) === value }
30840 function Int32 (value) { return (value | 0) === value }
30841 function UInt8 (value) { return (value & 0xff) === value }
30842 function UInt16 (value) { return (value & 0xffff) === value }
30843 function UInt32 (value) { return (value >>> 0) === value }
30844 function UInt53 (value) {
30845 return typeof value === 'number' &&
30847 value <= UINT53_MAX &&
30848 Math.floor(value) === value
30868 for (var typeName in types) {
30869 types[typeName].toJSON = function (t) {
30871 }.bind(null, typeName)
30874 module.exports = types
30876 }).call(this,{"isBuffer
":require("../../../../../.nvm/versions/node/v6.0
.0/lib/node_modules/browserify/node_modules/is-buffer/index.js
")})
30877 },{"../../../../../.nvm/versions/node/v6.0
.0/lib/node_modules/browserify/node_modules/is-buffer/index.js
":10,"./errors
":137,"./native
":140}],139:[function(require,module,exports){
30878 var ERRORS = require('./errors')
30879 var NATIVE = require('./native')
30882 var tfJSON = ERRORS.tfJSON
30883 var TfTypeError = ERRORS.TfTypeError
30884 var TfPropertyTypeError = ERRORS.TfPropertyTypeError
30885 var tfSubError = ERRORS.tfSubError
30886 var getValueTypeName = ERRORS.getValueTypeName
30889 arrayOf: function arrayOf (type) {
30890 type = compile(type)
30892 function _arrayOf (array, strict) {
30893 if (!NATIVE.Array(array)) return false
30894 if (NATIVE.Nil(array)) return false
30896 return array.every(function (value, i) {
30898 return typeforce(type, value, strict)
30900 throw tfSubError(e, i)
30904 _arrayOf.toJSON = function () { return '[' + tfJSON(type) + ']' }
30909 maybe: function maybe (type) {
30910 type = compile(type)
30912 function _maybe (value, strict) {
30913 return NATIVE.Nil(value) || type(value, strict, maybe)
30915 _maybe.toJSON = function () { return '?' + tfJSON(type) }
30920 map: function map (propertyType, propertyKeyType) {
30921 propertyType = compile(propertyType)
30922 if (propertyKeyType) propertyKeyType = compile(propertyKeyType)
30924 function _map (value, strict) {
30925 if (!NATIVE.Object(value)) return false
30926 if (NATIVE.Nil(value)) return false
30928 for (var propertyName in value) {
30930 if (propertyKeyType) {
30931 typeforce(propertyKeyType, propertyName, strict)
30934 throw tfSubError(e, propertyName, 'key')
30938 var propertyValue = value[propertyName]
30939 typeforce(propertyType, propertyValue, strict)
30941 throw tfSubError(e, propertyName)
30948 if (propertyKeyType) {
30949 _map.toJSON = function () {
30950 return '{' + tfJSON(propertyKeyType) + ': ' + tfJSON(propertyType) + '}'
30953 _map.toJSON = function () { return '{' + tfJSON(propertyType) + '}' }
30959 object: function object (uncompiled) {
30962 for (var typePropertyName in uncompiled) {
30963 type[typePropertyName] = compile(uncompiled[typePropertyName])
30966 function _object (value, strict) {
30967 if (!NATIVE.Object(value)) return false
30968 if (NATIVE.Nil(value)) return false
30973 for (propertyName in type) {
30974 var propertyType = type[propertyName]
30975 var propertyValue = value[propertyName]
30977 typeforce(propertyType, propertyValue, strict)
30980 throw tfSubError(e, propertyName)
30984 for (propertyName in value) {
30985 if (type[propertyName]) continue
30987 throw new TfPropertyTypeError(undefined, propertyName)
30993 _object.toJSON = function () { return tfJSON(type) }
30998 oneOf: function oneOf () {
30999 var types = [].slice.call(arguments).map(compile)
31001 function _oneOf (value, strict) {
31002 return types.some(function (type) {
31004 return typeforce(type, value, strict)
31010 _oneOf.toJSON = function () { return types.map(tfJSON).join('|') }
31015 quacksLike: function quacksLike (type) {
31016 function _quacksLike (value) {
31017 return type === getValueTypeName(value)
31019 _quacksLike.toJSON = function () { return type }
31024 tuple: function tuple () {
31025 var types = [].slice.call(arguments).map(compile)
31027 function _tuple (values, strict) {
31028 if (NATIVE.Nil(values)) return false
31029 if (NATIVE.Nil(values.length)) return false
31030 if (strict && (values.length !== types.length)) return false
31032 return types.every(function (type, i) {
31034 return typeforce(type, values[i], strict)
31036 throw tfSubError(e, i)
31040 _tuple.toJSON = function () { return '(' + types.map(tfJSON).join(', ') + ')' }
31045 value: function value (expected) {
31046 function _value (actual) {
31047 return actual === expected
31049 _value.toJSON = function () { return expected }
31055 function compile (type) {
31056 if (NATIVE.String(type)) {
31057 if (type[0] === '?') return TYPES.maybe(type.slice(1))
31059 return NATIVE[type] || TYPES.quacksLike(type)
31060 } else if (type && NATIVE.Object(type)) {
31061 if (NATIVE.Array(type)) return TYPES.arrayOf(type[0])
31063 return TYPES.object(type)
31064 } else if (NATIVE.Function(type)) {
31068 return TYPES.value(type)
31071 function typeforce (type, value, strict, surrogate) {
31072 if (NATIVE.Function(type)) {
31073 if (type(value, strict)) return true
31075 throw new TfTypeError(surrogate || type, value)
31079 return typeforce(compile(type), value, strict)
31082 // assign types to typeforce function
31083 for (var typeName in NATIVE) {
31084 typeforce[typeName] = NATIVE[typeName]
31087 for (typeName in TYPES) {
31088 typeforce[typeName] = TYPES[typeName]
31091 var EXTRA = require('./extra')
31092 for (typeName in EXTRA) {
31093 typeforce[typeName] = EXTRA[typeName]
31097 function __async (type, value, strict, callback) {
31098 // default to falsy strict if using shorthand overload
31099 if (typeof strict === 'function') return __async(type, value, false, strict)
31102 typeforce(type, value, strict)
31110 typeforce.async = __async
31111 typeforce.compile = compile
31112 typeforce.TfTypeError = TfTypeError
31113 typeforce.TfPropertyTypeError = TfPropertyTypeError
31115 module.exports = typeforce
31117 },{"./errors
":137,"./extra
":138,"./native
":140}],140:[function(require,module,exports){
31119 Array: function (value) { return value !== null && value !== undefined && value.constructor === Array },
31120 Boolean: function (value) { return typeof value === 'boolean' },
31121 Function: function (value) { return typeof value === 'function' },
31122 Nil: function (value) { return value === undefined || value === null },
31123 Number: function (value) { return typeof value === 'number' },
31124 Object: function (value) { return typeof value === 'object' },
31125 String: function (value) { return typeof value === 'string' },
31126 '': function () { return true }
31130 types.Null = types.Nil
31132 for (var typeName in types) {
31133 types[typeName].toJSON = function (t) {
31135 }.bind(null, typeName)
31138 module.exports = types
31140 },{}],141:[function(require,module,exports){
31141 (function (Buffer){
31144 // Number.MAX_SAFE_INTEGER
31145 var MAX_SAFE_INTEGER = 9007199254740991
31147 function checkUInt53 (n) {
31148 if (n < 0 || n > MAX_SAFE_INTEGER || n % 1 !== 0) throw new RangeError('value out of range')
31151 function encode (number, buffer, offset) {
31152 checkUInt53(number)
31154 if (!buffer) buffer = new Buffer(encodingLength(number))
31155 if (!Buffer.isBuffer(buffer)) throw new TypeError('buffer must be a Buffer instance')
31156 if (!offset) offset = 0
31159 if (number < 0xfd) {
31160 buffer.writeUInt8(number, offset)
31164 } else if (number <= 0xffff) {
31165 buffer.writeUInt8(0xfd, offset)
31166 buffer.writeUInt16LE(number, offset + 1)
31170 } else if (number <= 0xffffffff) {
31171 buffer.writeUInt8(0xfe, offset)
31172 buffer.writeUInt32LE(number, offset + 1)
31177 buffer.writeUInt8(0xff, offset)
31178 buffer.writeUInt32LE(number >>> 0, offset + 1)
31179 buffer.writeUInt32LE((number / 0x100000000) | 0, offset + 5)
31186 function decode (buffer, offset) {
31187 if (!Buffer.isBuffer(buffer)) throw new TypeError('buffer must be a Buffer instance')
31188 if (!offset) offset = 0
31190 var first = buffer.readUInt8(offset)
31193 if (first < 0xfd) {
31198 } else if (first === 0xfd) {
31200 return buffer.readUInt16LE(offset + 1)
31203 } else if (first === 0xfe) {
31205 return buffer.readUInt32LE(offset + 1)
31210 var lo = buffer.readUInt32LE(offset + 1)
31211 var hi = buffer.readUInt32LE(offset + 5)
31212 var number = hi * 0x0100000000 + lo
31213 checkUInt53(number)
31219 function encodingLength (number) {
31220 checkUInt53(number)
31224 : number <= 0xffff ? 3
31225 : number <= 0xffffffff ? 5
31230 module.exports = { encode: encode, decode: decode, encodingLength: encodingLength }
31232 }).call(this,require("buffer
").Buffer)
31233 },{"buffer
":5}],142:[function(require,module,exports){
31234 (function (Buffer){
31235 var bs58check = require('bs58check')
31237 function decodeRaw (buffer, version) {
31238 // check version only if defined
31239 if (version !== undefined && buffer[0] !== version) throw new Error('Invalid network version')
31242 if (buffer.length === 33) {
31244 version: buffer[0],
31245 privateKey: buffer.slice(1, 33),
31251 if (buffer.length !== 34) throw new Error('Invalid WIF length')
31253 // invalid compression flag
31254 if (buffer[33] !== 0x01) throw new Error('Invalid compression flag')
31257 version: buffer[0],
31258 privateKey: buffer.slice(1, 33),
31263 function encodeRaw (version, privateKey, compressed) {
31264 var result = new Buffer(compressed ? 34 : 33)
31266 result.writeUInt8(version, 0)
31267 privateKey.copy(result, 1)
31276 function decode (string, version) {
31277 return decodeRaw(bs58check.decode(string), version)
31280 function encode (version, privateKey, compressed) {
31281 if (typeof version === 'number') return bs58check.encode(encodeRaw(version, privateKey, compressed))
31283 return bs58check.encode(
31286 version.privateKey,
31294 decodeRaw: decodeRaw,
31296 encodeRaw: encodeRaw
31299 }).call(this,require("buffer
").Buffer)
31300 },{"bs58check
":85,"buffer
":5}]},{},[34])(34)
31302 <script>bitcoinjs.bitcoin.networks.shadow = {
31303 messagePrefix: 'unused',
31305 public: 0xEE80286A,
31306 private: 0xEE8031E8
31313 bitcoinjs.bitcoin.networks.shadowtn = {
31314 messagePrefix: 'unused',
31316 public: 0x76C0FDFB,
31317 private: 0x76C1077A
31324 bitcoinjs.bitcoin.networks.clam = {
31325 messagePrefix: 'unused',
31327 public: 0xa8c26d64,
31328 private: 0xa8c17826
31331 scriptHash: 0x00, // TODO set this correctly
31335 bitcoinjs.bitcoin.networks.crown = {
31336 messagePrefix: 'unused',
31338 public: 0x0488b21e,
31339 private: 0x0488ade4
31346 bitcoinjs.bitcoin.networks.dash = {
31347 messagePrefix: 'unused',
31349 public: 0x0488b21e,
31350 private: 0x0488ade4
31357 bitcoinjs.bitcoin.networks.maza = {
31358 messagePrefix: 'unused',
31360 public: 0x0488b21e,
31361 private: 0x0488ade4
31368 bitcoinjs.bitcoin.networks.dashtn = {
31369 messagePrefix: 'unused',
31371 public: 0x043587cf,
31372 private: 0x04358394
31379 bitcoinjs.bitcoin.networks.game = {
31380 messagePrefix: 'unused',
31382 public: 0x0488b21e,
31383 private: 0x0488ade4
31390 bitcoinjs.bitcoin.networks.namecoin = {
31391 messagePrefix: 'unused',
31393 public: 0x0488b21e,
31394 private: 0x0488ade4
31397 scriptHash: 0x00, // TODO set this correctly
31401 bitcoinjs.bitcoin.networks.peercoin = {
31402 messagePrefix: 'unused',
31404 public: 0x0488b21e,
31405 private: 0x0488ade4
31408 scriptHash: 0x00, // TODO set this correctly
31412 bitcoinjs.bitcoin.networks.slimcoin = {
31413 messagePrefix: 'unused',
31415 public: 0xef6adf10,
31416 private: 0xef69ea80
31423 bitcoinjs.bitcoin.networks.slimcointn = {
31424 messagePrefix: 'unused',
31426 public: 0x043587CF,
31427 private: 0x04358394
31434 bitcoinjs.bitcoin.networks.dogecoin = {
31435 messagePrefix: '\x19Dogecoin Signed Message:\n',
31437 public: 0x02facafd,
31438 private: 0x02fac398
31445 bitcoinjs.bitcoin.networks.viacoin = {
31446 messagePrefix: '\x18Viacoin Signed Message:\n',
31448 public: 0x0488b21e,
31449 private: 0x0488ade4
31456 bitcoinjs.bitcoin.networks.viacointestnet = {
31457 messagePrefix: '\x18Viacoin Signed Message:\n',
31459 public: 0x043587cf,
31460 private: 0x04358394
31467 bitcoinjs.bitcoin.networks.gamerscoin = {
31468 messagePrefix: '\x19Gamerscoin Signed Message:\n',
31470 public: 0x019da462,
31471 private: 0x019d9cfe
31478 bitcoinjs.bitcoin.networks.jumbucks = {
31479 messagePrefix: '\x19Jumbucks Signed Message:\n',
31481 public: 0x037a689a,
31482 private: 0x037a6460
31489 bitcoinjs.bitcoin.networks.zetacoin = {
31490 messagePrefix: '\x18Zetacoin Signed Message:\n',
31492 public: 0x0488b21e,
31493 private: 0x0488ade4
31500 bitcoinjs.bitcoin.networks.myriadcoin = {
31501 messagePrefix: 'unused',
31503 public: 0x0488b21e,
31504 private: 0x0488ade4
31507 scriptHash: 0x00, // TODO set this correctly
31511 bitcoinjs.bitcoin.networks.pivx = {
31512 messagePrefix: 'unused',
31514 public: 0x022d2533,
31515 private: 0x0221312b
31522 bitcoinjs.bitcoin.networks.pivxtestnet = {
31523 messagePrefix: 'unused',
31525 public: 0x3a8061a0,
31526 private: 0x3a805837
31533 bitcoinjs.bitcoin.networks.fujicoin = {
31534 messagePrefix: '\x19FujiCoin Signed Message:\n',
31536 public: 0x0488b21e,
31537 private: 0x0488ade4
31544 bitcoinjs.bitcoin.networks.nubits = {
31545 messagePrefix: '\x18Nu Signed Message:\n',
31547 public: 0x0488b21e,
31548 private: 0x0488ade4
31555 bitcoinjs.bitcoin.networks.bgold = {
31556 messagePrefix: 'unused',
31558 public: 0x0488b21e,
31559 private: 0x0488ade4
31566 bitcoinjs.bitcoin.networks.bitcoinCashBitbpay = {
31567 messagePrefix: '\x18Bitcoin Signed Message:\n',
31569 public: 0x0488b21e,
31570 private: 0x0488ade4
31577 bitcoinjs.bitcoin.networks.monacoin = {
31578 messagePrefix: '\x18Monacoin Signed Message:\n',
31580 public: 0x0488b21e,
31581 private: 0x0488ade4
31588 bitcoinjs.bitcoin.networks.litecoinXprv = {
31589 messagePrefix: '\x19Litecoin Signed Message:\n',
31591 public: 0x0488b21e,
31592 private: 0x0488ade4,
31599 <script>(function() {
31603 bitcoinjs.bitcoin.networks.bitcoin.p2wpkh = {
31604 baseNetwork: "bitcoin",
31605 messagePrefix: '\x18Bitcoin Signed Message:\n',
31608 public:
0x04b24746,
31609 private:
0x04b2430c
31618 bitcoinjs.bitcoin.networks.bitcoin.p2wpkhInP2sh = {
31619 baseNetwork: "bitcoin",
31620 messagePrefix: '\x18Bitcoin Signed Message:\n',
31623 public:
0x049d7cb2,
31624 private:
0x049d7878
31631 bitcoinjs.bitcoin.networks.testnet.p2wpkhInP2sh = {
31632 baseNetwork: "testnet",
31633 messagePrefix: '\x18Bitcoin Signed Message:\n',
31636 public:
0x044a5262,
31637 private:
0x044a4e28
31644 bitcoinjs.bitcoin.networks.litecoin.p2wpkhInP2sh = {
31645 baseNetwork: "litecoin",
31646 messagePrefix: '\x19Litecoin Signed Message:\n',
31648 public:
0x01b26ef6,
31649 private:
0x01b26792
31658 <script>(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.ethUtil = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&
&require;if(!u&&a)return a(o,!
0);if(i)return i(o,!
0);var f=new Error("Cannot find module '"+o+"'");throw f.
code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][
0].call(l.exports,function(e){var n=t[o][
1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&
&require;for(var o=
0;o
<r.length;o++)s(r[o]);return s})({
1:[function(require,module,exports){
31659 (function (global){
31662 // compare and isBuffer taken from https://github.com/feross/buffer/blob/
680e9e5e488f22aac27599a57dc844a6315928dd/index.js
31663 // original notice:
31666 * The buffer module from node.js, for the browser.
31668 * @author Feross Aboukhadijeh
<feross@feross.org
> <http://feross.org
>
31671 function compare(a, b) {
31679 for (var i =
0, len = Math.min(x, y); i < len; ++i) {
31680 if (a[i] !== b[i]) {
31695 function isBuffer(b) {
31696 if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {
31697 return global.Buffer.isBuffer(b);
31699 return !!(b != null && b._isBuffer);
31702 // based on node assert, original notice:
31704 // http://wiki.commonjs.org/wiki/Unit_Testing/
1.0
31706 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
31708 // Originally from narwhal.js (http://narwhaljs.org)
31709 // Copyright (c)
2009 Thomas Robinson
<280north.com
>
31711 // Permission is hereby granted, free of charge, to any person obtaining a copy
31712 // of this software and associated documentation files (the 'Software'), to
31713 // deal in the Software without restriction, including without limitation the
31714 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
31715 // sell copies of the Software, and to permit persons to whom the Software is
31716 // furnished to do so, subject to the following conditions:
31718 // The above copyright notice and this permission notice shall be included in
31719 // all copies or substantial portions of the Software.
31721 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
31722 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
31723 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
31724 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
31725 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
31726 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31728 var util = require('util/');
31729 var hasOwn = Object.prototype.hasOwnProperty;
31730 var pSlice = Array.prototype.slice;
31731 var functionsHaveNames = (function () {
31732 return function foo() {}.name === 'foo';
31734 function pToString (obj) {
31735 return Object.prototype.toString.call(obj);
31737 function isView(arrbuf) {
31738 if (isBuffer(arrbuf)) {
31741 if (typeof global.ArrayBuffer !== 'function') {
31744 if (typeof ArrayBuffer.isView === 'function') {
31745 return ArrayBuffer.isView(arrbuf);
31750 if (arrbuf instanceof DataView) {
31753 if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {
31758 //
1. The assert module provides functions that throw
31759 // AssertionError's when particular conditions are not met. The
31760 // assert module must conform to the following interface.
31762 var assert = module.exports = ok;
31764 //
2. The AssertionError is defined in assert.
31765 // new assert.AssertionError({ message: message,
31767 // expected: expected })
31769 var regex = /\s*function\s+([^\(\s]*)\s*/;
31770 // based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js
31771 function getName(func) {
31772 if (!util.isFunction(func)) {
31775 if (functionsHaveNames) {
31778 var str = func.toString();
31779 var match = str.match(regex);
31780 return match && match[
1];
31782 assert.AssertionError = function AssertionError(options) {
31783 this.name = 'AssertionError';
31784 this.actual = options.actual;
31785 this.expected = options.expected;
31786 this.operator = options.operator;
31787 if (options.message) {
31788 this.message = options.message;
31789 this.generatedMessage = false;
31791 this.message = getMessage(this);
31792 this.generatedMessage = true;
31794 var stackStartFunction = options.stackStartFunction || fail;
31795 if (Error.captureStackTrace) {
31796 Error.captureStackTrace(this, stackStartFunction);
31798 // non v8 browsers so we can have a stacktrace
31799 var err = new Error();
31801 var out = err.stack;
31803 // try to strip useless frames
31804 var fn_name = getName(stackStartFunction);
31805 var idx = out.indexOf('\n' + fn_name);
31807 // once we have located the function frame
31808 // we need to strip out everything before it (and its line)
31809 var next_line = out.indexOf('\n', idx +
1);
31810 out = out.substring(next_line +
1);
31818 // assert.AssertionError instanceof Error
31819 util.inherits(assert.AssertionError, Error);
31821 function truncate(s, n) {
31822 if (typeof s === 'string') {
31823 return s.length < n ? s : s.slice(
0, n);
31828 function inspect(something) {
31829 if (functionsHaveNames || !util.isFunction(something)) {
31830 return util.inspect(something);
31832 var rawname = getName(something);
31833 var name = rawname ? ': ' + rawname : '';
31834 return '[Function' + name + ']';
31836 function getMessage(self) {
31837 return truncate(inspect(self.actual),
128) + ' ' +
31838 self.operator + ' ' +
31839 truncate(inspect(self.expected),
128);
31842 // At present only the three keys mentioned above are used and
31843 // understood by the spec. Implementations or sub modules can pass
31844 // other keys to the AssertionError's constructor - they will be
31847 //
3. All of the following functions must throw an AssertionError
31848 // when a corresponding condition is not met, with a message that
31849 // may be undefined if not provided. All assertion methods provide
31850 // both the actual and expected values to the assertion error for
31851 // display purposes.
31853 function fail(actual, expected, message, operator, stackStartFunction) {
31854 throw new assert.AssertionError({
31857 expected: expected,
31858 operator: operator,
31859 stackStartFunction: stackStartFunction
31863 // EXTENSION! allows for well behaved errors defined elsewhere.
31864 assert.fail = fail;
31866 //
4. Pure assertion tests whether a value is truthy, as determined
31868 // assert.ok(guard, message_opt);
31869 // This statement is equivalent to assert.equal(true, !!guard,
31870 // message_opt);. To test strictly for the value true, use
31871 // assert.strictEqual(true, guard, message_opt);.
31873 function ok(value, message) {
31874 if (!value) fail(value, true, message, '==', assert.ok);
31878 //
5. The equality assertion tests shallow, coercive equality with
31880 // assert.equal(actual, expected, message_opt);
31882 assert.equal = function equal(actual, expected, message) {
31883 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
31886 //
6. The non-equality assertion tests for whether two objects are not equal
31887 // with != assert.notEqual(actual, expected, message_opt);
31889 assert.notEqual = function notEqual(actual, expected, message) {
31890 if (actual == expected) {
31891 fail(actual, expected, message, '!=', assert.notEqual);
31895 //
7. The equivalence assertion tests a deep equality relation.
31896 // assert.deepEqual(actual, expected, message_opt);
31898 assert.deepEqual = function deepEqual(actual, expected, message) {
31899 if (!_deepEqual(actual, expected, false)) {
31900 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
31904 assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
31905 if (!_deepEqual(actual, expected, true)) {
31906 fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);
31910 function _deepEqual(actual, expected, strict, memos) {
31911 //
7.1. All identical values are equivalent, as determined by ===.
31912 if (actual === expected) {
31914 } else if (isBuffer(actual) && isBuffer(expected)) {
31915 return compare(actual, expected) ===
0;
31917 //
7.2. If the expected value is a Date object, the actual value is
31918 // equivalent if it is also a Date object that refers to the same time.
31919 } else if (util.isDate(actual) && util.isDate(expected)) {
31920 return actual.getTime() === expected.getTime();
31922 //
7.3 If the expected value is a RegExp object, the actual value is
31923 // equivalent if it is also a RegExp object with the same source and
31924 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
31925 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
31926 return actual.source === expected.source &&
31927 actual.global === expected.global &&
31928 actual.multiline === expected.multiline &&
31929 actual.lastIndex === expected.lastIndex &&
31930 actual.ignoreCase === expected.ignoreCase;
31932 //
7.4. Other pairs that do not both pass typeof value == 'object',
31933 // equivalence is determined by ==.
31934 } else if ((actual === null || typeof actual !== 'object') &&
31935 (expected === null || typeof expected !== 'object')) {
31936 return strict ? actual === expected : actual == expected;
31938 // If both values are instances of typed arrays, wrap their underlying
31939 // ArrayBuffers in a Buffer each to increase performance
31940 // This optimization requires the arrays to have the same type as checked by
31941 // Object.prototype.toString (aka pToString). Never perform binary
31942 // comparisons for Float*Arrays, though, since e.g. +
0 === -
0 but their
31943 // bit patterns are not identical.
31944 } else if (isView(actual) && isView(expected) &&
31945 pToString(actual) === pToString(expected) &&
31946 !(actual instanceof Float32Array ||
31947 actual instanceof Float64Array)) {
31948 return compare(new Uint8Array(actual.buffer),
31949 new Uint8Array(expected.buffer)) ===
0;
31951 //
7.5 For all other Object pairs, including Array objects, equivalence is
31952 // determined by having the same number of owned properties (as verified
31953 // with Object.prototype.hasOwnProperty.call), the same set of keys
31954 // (although not necessarily the same order), equivalent values for every
31955 // corresponding key, and an identical 'prototype' property. Note: this
31956 // accounts for both named and indexed properties on Arrays.
31957 } else if (isBuffer(actual) !== isBuffer(expected)) {
31960 memos = memos || {actual: [], expected: []};
31962 var actualIndex = memos.actual.indexOf(actual);
31963 if (actualIndex !== -
1) {
31964 if (actualIndex === memos.expected.indexOf(expected)) {
31969 memos.actual.push(actual);
31970 memos.expected.push(expected);
31972 return objEquiv(actual, expected, strict, memos);
31976 function isArguments(object) {
31977 return Object.prototype.toString.call(object) == '[object Arguments]';
31980 function objEquiv(a, b, strict, actualVisitedObjects) {
31981 if (a === null || a === undefined || b === null || b === undefined)
31983 // if one is a primitive, the other must be same
31984 if (util.isPrimitive(a) || util.isPrimitive(b))
31986 if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))
31988 var aIsArgs = isArguments(a);
31989 var bIsArgs = isArguments(b);
31990 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
31993 a = pSlice.call(a);
31994 b = pSlice.call(b);
31995 return _deepEqual(a, b, strict);
31997 var ka = objectKeys(a);
31998 var kb = objectKeys(b);
32000 // having the same number of owned properties (keys incorporates
32002 if (ka.length !== kb.length)
32004 //the same set of keys (although not necessarily the same order),
32007 //~~~cheap key test
32008 for (i = ka.length -
1; i
>=
0; i--) {
32009 if (ka[i] !== kb[i])
32012 //equivalent values for every corresponding key, and
32013 //~~~possibly expensive deep test
32014 for (i = ka.length -
1; i
>=
0; i--) {
32016 if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))
32022 //
8. The non-equivalence assertion tests for any deep inequality.
32023 // assert.notDeepEqual(actual, expected, message_opt);
32025 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
32026 if (_deepEqual(actual, expected, false)) {
32027 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
32031 assert.notDeepStrictEqual = notDeepStrictEqual;
32032 function notDeepStrictEqual(actual, expected, message) {
32033 if (_deepEqual(actual, expected, true)) {
32034 fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);
32039 //
9. The strict equality assertion tests strict equality, as determined by ===.
32040 // assert.strictEqual(actual, expected, message_opt);
32042 assert.strictEqual = function strictEqual(actual, expected, message) {
32043 if (actual !== expected) {
32044 fail(actual, expected, message, '===', assert.strictEqual);
32048 //
10. The strict non-equality assertion tests for strict inequality, as
32049 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
32051 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
32052 if (actual === expected) {
32053 fail(actual, expected, message, '!==', assert.notStrictEqual);
32057 function expectedException(actual, expected) {
32058 if (!actual || !expected) {
32062 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
32063 return expected.test(actual);
32067 if (actual instanceof expected) {
32071 // Ignore. The instanceof check doesn't work for arrow functions.
32074 if (Error.isPrototypeOf(expected)) {
32078 return expected.call({}, actual) === true;
32081 function _tryBlock(block) {
32091 function _throws(shouldThrow, block, expected, message) {
32094 if (typeof block !== 'function') {
32095 throw new TypeError('"block" argument must be a function');
32098 if (typeof expected === 'string') {
32099 message = expected;
32103 actual = _tryBlock(block);
32105 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
32106 (message ? ' ' + message : '.');
32108 if (shouldThrow && !actual) {
32109 fail(actual, expected, 'Missing expected exception' + message);
32112 var userProvidedMessage = typeof message === 'string';
32113 var isUnwantedException = !shouldThrow && util.isError(actual);
32114 var isUnexpectedException = !shouldThrow && actual && !expected;
32116 if ((isUnwantedException &&
32117 userProvidedMessage &&
32118 expectedException(actual, expected)) ||
32119 isUnexpectedException) {
32120 fail(actual, expected, 'Got unwanted exception' + message);
32123 if ((shouldThrow && actual && expected &&
32124 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
32129 //
11. Expected to throw an error:
32130 // assert.throws(block, Error_opt, message_opt);
32132 assert.throws = function(block, /*optional*/error, /*optional*/message) {
32133 _throws(true, block, error, message);
32136 // EXTENSION! This is annoying to write outside this module.
32137 assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {
32138 _throws(false, block, error, message);
32141 assert.ifError = function(err) { if (err) throw err; };
32143 var objectKeys = Object.keys || function (obj) {
32145 for (var key in obj) {
32146 if (hasOwn.call(obj, key)) keys.push(key);
32151 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
32152 },{"util/":
30}],
2:[function(require,module,exports){
32155 exports.byteLength = byteLength
32156 exports.toByteArray = toByteArray
32157 exports.fromByteArray = fromByteArray
32161 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
32163 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
32164 for (var i =
0, len = code.length; i < len; ++i) {
32165 lookup[i] = code[i]
32166 revLookup[code.charCodeAt(i)] = i
32169 revLookup['-'.charCodeAt(
0)] =
62
32170 revLookup['_'.charCodeAt(
0)] =
63
32172 function placeHoldersCount (b64) {
32173 var len = b64.length
32175 throw new Error('Invalid string. Length must be a multiple of
4')
32178 // the number of equal signs (place holders)
32179 // if there are two placeholders, than the two characters before it
32180 // represent one byte
32181 // if there is only one, then the three characters before it represent
2 bytes
32182 // this is just a cheap hack to not do indexOf twice
32183 return b64[len -
2] === '=' ?
2 : b64[len -
1] === '=' ?
1 :
0
32186 function byteLength (b64) {
32187 // base64 is
4/
3 + up to two characters of the original data
32188 return b64.length *
3 /
4 - placeHoldersCount(b64)
32191 function toByteArray (b64) {
32192 var i, j, l, tmp, placeHolders, arr
32193 var len = b64.length
32194 placeHolders = placeHoldersCount(b64)
32196 arr = new Arr(len *
3 /
4 - placeHolders)
32198 // if there are placeholders, only get up to the last complete
4 chars
32199 l = placeHolders
> 0 ? len -
4 : len
32203 for (i =
0, j =
0; i < l; i +=
4, j +=
3) {
32204 tmp = (revLookup[b64.charCodeAt(i)] <<
18) | (revLookup[b64.charCodeAt(i +
1)] <<
12) | (revLookup[b64.charCodeAt(i +
2)] <<
6) | revLookup[b64.charCodeAt(i +
3)]
32205 arr[L++] = (tmp
>> 16) &
0xFF
32206 arr[L++] = (tmp
>> 8) &
0xFF
32207 arr[L++] = tmp &
0xFF
32210 if (placeHolders ===
2) {
32211 tmp = (revLookup[b64.charCodeAt(i)] <<
2) | (revLookup[b64.charCodeAt(i +
1)]
>> 4)
32212 arr[L++] = tmp &
0xFF
32213 } else if (placeHolders ===
1) {
32214 tmp = (revLookup[b64.charCodeAt(i)] <<
10) | (revLookup[b64.charCodeAt(i +
1)] <<
4) | (revLookup[b64.charCodeAt(i +
2)]
>> 2)
32215 arr[L++] = (tmp
>> 8) &
0xFF
32216 arr[L++] = tmp &
0xFF
32222 function tripletToBase64 (num) {
32223 return lookup[num
>> 18 &
0x3F] + lookup[num
>> 12 &
0x3F] + lookup[num
>> 6 &
0x3F] + lookup[num &
0x3F]
32226 function encodeChunk (uint8, start, end) {
32229 for (var i = start; i < end; i +=
3) {
32230 tmp = (uint8[i] <<
16) + (uint8[i +
1] <<
8) + (uint8[i +
2])
32231 output.push(tripletToBase64(tmp))
32233 return output.join('')
32236 function fromByteArray (uint8) {
32238 var len = uint8.length
32239 var extraBytes = len %
3 // if we have
1 byte left, pad
2 bytes
32242 var maxChunkLength =
16383 // must be multiple of
3
32244 // go through the array every three bytes, we'll deal with trailing stuff later
32245 for (var i =
0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
32246 parts.push(encodeChunk(uint8, i, (i + maxChunkLength)
> len2 ? len2 : (i + maxChunkLength)))
32249 // pad the end with zeros, but make sure to not forget the extra bytes
32250 if (extraBytes ===
1) {
32251 tmp = uint8[len -
1]
32252 output += lookup[tmp
>> 2]
32253 output += lookup[(tmp <<
4) &
0x3F]
32255 } else if (extraBytes ===
2) {
32256 tmp = (uint8[len -
2] <<
8) + (uint8[len -
1])
32257 output += lookup[tmp
>> 10]
32258 output += lookup[(tmp
>> 4) &
0x3F]
32259 output += lookup[(tmp <<
2) &
0x3F]
32265 return parts.join('')
32268 },{}],
3:[function(require,module,exports){
32270 },{}],
4:[function(require,module,exports){
32271 (function (global){
32274 var buffer = require('buffer');
32275 var Buffer = buffer.Buffer;
32276 var SlowBuffer = buffer.SlowBuffer;
32277 var MAX_LEN = buffer.kMaxLength ||
2147483647;
32278 exports.alloc = function alloc(size, fill, encoding) {
32279 if (typeof Buffer.alloc === 'function') {
32280 return Buffer.alloc(size, fill, encoding);
32282 if (typeof encoding === 'number') {
32283 throw new TypeError('encoding must not be number');
32285 if (typeof size !== 'number') {
32286 throw new TypeError('size must be a number');
32288 if (size
> MAX_LEN) {
32289 throw new RangeError('size is too large');
32291 var enc = encoding;
32293 if (_fill === undefined) {
32297 var buf = new Buffer(size);
32298 if (typeof _fill === 'string') {
32299 var fillBuf = new Buffer(_fill, enc);
32300 var flen = fillBuf.length;
32302 while (++i < size) {
32303 buf[i] = fillBuf[i % flen];
32310 exports.allocUnsafe = function allocUnsafe(size) {
32311 if (typeof Buffer.allocUnsafe === 'function') {
32312 return Buffer.allocUnsafe(size);
32314 if (typeof size !== 'number') {
32315 throw new TypeError('size must be a number');
32317 if (size
> MAX_LEN) {
32318 throw new RangeError('size is too large');
32320 return new Buffer(size);
32322 exports.from = function from(value, encodingOrOffset, length) {
32323 if (typeof Buffer.from === 'function' && (!global.Uint8Array || Uint8Array.from !== Buffer.from)) {
32324 return Buffer.from(value, encodingOrOffset, length);
32326 if (typeof value === 'number') {
32327 throw new TypeError('"value" argument must not be a number');
32329 if (typeof value === 'string') {
32330 return new Buffer(value, encodingOrOffset);
32332 if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
32333 var offset = encodingOrOffset;
32334 if (arguments.length ===
1) {
32335 return new Buffer(value);
32337 if (typeof offset === 'undefined') {
32341 if (typeof len === 'undefined') {
32342 len = value.byteLength - offset;
32344 if (offset
>= value.byteLength) {
32345 throw new RangeError('\'offset\' is out of bounds');
32347 if (len
> value.byteLength - offset) {
32348 throw new RangeError('\'length\' is out of bounds');
32350 return new Buffer(value.slice(offset, offset + len));
32352 if (Buffer.isBuffer(value)) {
32353 var out = new Buffer(value.length);
32354 value.copy(out,
0,
0, value.length);
32358 if (Array.isArray(value) || (typeof ArrayBuffer !== 'undefined' && value.buffer instanceof ArrayBuffer) || 'length' in value) {
32359 return new Buffer(value);
32361 if (value.type === 'Buffer' && Array.isArray(value.data)) {
32362 return new Buffer(value.data);
32366 throw new TypeError('First argument must be a string, Buffer, ' + 'ArrayBuffer, Array, or array-like object.');
32368 exports.allocUnsafeSlow = function allocUnsafeSlow(size) {
32369 if (typeof Buffer.allocUnsafeSlow === 'function') {
32370 return Buffer.allocUnsafeSlow(size);
32372 if (typeof size !== 'number') {
32373 throw new TypeError('size must be a number');
32375 if (size
>= MAX_LEN) {
32376 throw new RangeError('size is too large');
32378 return new SlowBuffer(size);
32381 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
32382 },{"buffer":
5}],
5:[function(require,module,exports){
32384 * The buffer module from node.js, for the browser.
32386 * @author Feross Aboukhadijeh
<feross@feross.org
> <http://feross.org
>
32389 /* eslint-disable no-proto */
32393 var base64 = require('base64-js')
32394 var ieee754 = require('ieee754')
32396 exports.Buffer = Buffer
32397 exports.SlowBuffer = SlowBuffer
32398 exports.INSPECT_MAX_BYTES =
50
32400 var K_MAX_LENGTH =
0x7fffffff
32401 exports.kMaxLength = K_MAX_LENGTH
32404 * If `Buffer.TYPED_ARRAY_SUPPORT`:
32405 * === true Use Uint8Array implementation (fastest)
32406 * === false Print warning and recommend using `buffer` v4.x which has an Object
32407 * implementation (most compatible, even IE6)
32409 * Browsers that support typed arrays are IE
10+, Firefox
4+, Chrome
7+, Safari
5.1+,
32410 * Opera
11.6+, iOS
4.2+.
32412 * We report that the browser does not support typed arrays if the are not subclassable
32413 * using __proto__. Firefox
4-
29 lacks support for adding new properties to `Uint8Array`
32414 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=
695438). IE
10 lacks support
32415 * for __proto__ and has a buggy typed array implementation.
32417 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
32419 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
32420 typeof console.error === 'function') {
32422 'This browser lacks typed array (Uint8Array) support which is required by ' +
32423 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
32427 function typedArraySupport () {
32428 // Can typed array instances can be augmented?
32430 var arr = new Uint8Array(
1)
32431 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return
42 }}
32432 return arr.foo() ===
42
32438 function createBuffer (length) {
32439 if (length
> K_MAX_LENGTH) {
32440 throw new RangeError('Invalid typed array length')
32442 // Return an augmented `Uint8Array` instance
32443 var buf = new Uint8Array(length)
32444 buf.__proto__ = Buffer.prototype
32449 * The Buffer constructor returns instances of `Uint8Array` that have their
32450 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
32451 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
32452 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
32453 * returns a single octet.
32455 * The `Uint8Array` prototype remains unmodified.
32458 function Buffer (arg, encodingOrOffset, length) {
32460 if (typeof arg === 'number') {
32461 if (typeof encodingOrOffset === 'string') {
32463 'If encoding is specified then the first argument must be a string'
32466 return allocUnsafe(arg)
32468 return from(arg, encodingOrOffset, length)
32471 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/
97
32472 if (typeof Symbol !== 'undefined' && Symbol.species &&
32473 Buffer[Symbol.species] === Buffer) {
32474 Object.defineProperty(Buffer, Symbol.species, {
32476 configurable: true,
32482 Buffer.poolSize =
8192 // not used by this implementation
32484 function from (value, encodingOrOffset, length) {
32485 if (typeof value === 'number') {
32486 throw new TypeError('"value" argument must not be a number')
32489 if (value instanceof ArrayBuffer) {
32490 return fromArrayBuffer(value, encodingOrOffset, length)
32493 if (typeof value === 'string') {
32494 return fromString(value, encodingOrOffset)
32497 return fromObject(value)
32501 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
32502 * if value is a number.
32503 * Buffer.from(str[, encoding])
32504 * Buffer.from(array)
32505 * Buffer.from(buffer)
32506 * Buffer.from(arrayBuffer[, byteOffset[, length]])
32508 Buffer.from = function (value, encodingOrOffset, length) {
32509 return from(value, encodingOrOffset, length)
32512 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
32513 // https://github.com/feross/buffer/pull/
148
32514 Buffer.prototype.__proto__ = Uint8Array.prototype
32515 Buffer.__proto__ = Uint8Array
32517 function assertSize (size) {
32518 if (typeof size !== 'number') {
32519 throw new TypeError('"size" argument must be a number')
32520 } else if (size <
0) {
32521 throw new RangeError('"size" argument must not be negative')
32525 function alloc (size, fill, encoding) {
32528 return createBuffer(size)
32530 if (fill !== undefined) {
32531 // Only pay attention to encoding if it's a string. This
32532 // prevents accidentally sending in a number that would
32533 // be interpretted as a start offset.
32534 return typeof encoding === 'string'
32535 ? createBuffer(size).fill(fill, encoding)
32536 : createBuffer(size).fill(fill)
32538 return createBuffer(size)
32542 * Creates a new filled Buffer instance.
32543 * alloc(size[, fill[, encoding]])
32545 Buffer.alloc = function (size, fill, encoding) {
32546 return alloc(size, fill, encoding)
32549 function allocUnsafe (size) {
32551 return createBuffer(size <
0 ?
0 : checked(size) |
0)
32555 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
32557 Buffer.allocUnsafe = function (size) {
32558 return allocUnsafe(size)
32561 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
32563 Buffer.allocUnsafeSlow = function (size) {
32564 return allocUnsafe(size)
32567 function fromString (string, encoding) {
32568 if (typeof encoding !== 'string' || encoding === '') {
32572 if (!Buffer.isEncoding(encoding)) {
32573 throw new TypeError('"encoding" must be a valid string encoding')
32576 var length = byteLength(string, encoding) |
0
32577 var buf = createBuffer(length)
32579 var actual = buf.write(string, encoding)
32581 if (actual !== length) {
32582 // Writing a hex string, for example, that contains invalid characters will
32583 // cause everything after the first invalid character to be ignored. (e.g.
32584 // 'abxxcd' will be treated as 'ab')
32585 buf = buf.slice(
0, actual)
32591 function fromArrayLike (array) {
32592 var length = array.length <
0 ?
0 : checked(array.length) |
0
32593 var buf = createBuffer(length)
32594 for (var i =
0; i < length; i +=
1) {
32595 buf[i] = array[i] &
255
32600 function fromArrayBuffer (array, byteOffset, length) {
32601 if (byteOffset <
0 || array.byteLength < byteOffset) {
32602 throw new RangeError('\'offset\' is out of bounds')
32605 if (array.byteLength < byteOffset + (length ||
0)) {
32606 throw new RangeError('\'length\' is out of bounds')
32610 if (byteOffset === undefined && length === undefined) {
32611 buf = new Uint8Array(array)
32612 } else if (length === undefined) {
32613 buf = new Uint8Array(array, byteOffset)
32615 buf = new Uint8Array(array, byteOffset, length)
32618 // Return an augmented `Uint8Array` instance
32619 buf.__proto__ = Buffer.prototype
32623 function fromObject (obj) {
32624 if (Buffer.isBuffer(obj)) {
32625 var len = checked(obj.length) |
0
32626 var buf = createBuffer(len)
32628 if (buf.length ===
0) {
32632 obj.copy(buf,
0,
0, len)
32637 if (ArrayBuffer.isView(obj) || 'length' in obj) {
32638 if (typeof obj.length !== 'number' || isnan(obj.length)) {
32639 return createBuffer(
0)
32641 return fromArrayLike(obj)
32644 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
32645 return fromArrayLike(obj.data)
32649 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
32652 function checked (length) {
32653 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
32654 // length is NaN (which is otherwise coerced to zero.)
32655 if (length
>= K_MAX_LENGTH) {
32656 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
32657 'size:
0x' + K_MAX_LENGTH.toString(
16) + ' bytes')
32662 function SlowBuffer (length) {
32663 if (+length != length) { // eslint-disable-line eqeqeq
32666 return Buffer.alloc(+length)
32669 Buffer.isBuffer = function isBuffer (b) {
32670 return b != null && b._isBuffer === true
32673 Buffer.compare = function compare (a, b) {
32674 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
32675 throw new TypeError('Arguments must be Buffers')
32678 if (a === b) return
0
32683 for (var i =
0, len = Math.min(x, y); i < len; ++i) {
32684 if (a[i] !== b[i]) {
32691 if (x < y) return -
1
32692 if (y < x) return
1
32696 Buffer.isEncoding = function isEncoding (encoding) {
32697 switch (String(encoding).toLowerCase()) {
32715 Buffer.concat = function concat (list, length) {
32716 if (!Array.isArray(list)) {
32717 throw new TypeError('"list" argument must be an Array of Buffers')
32720 if (list.length ===
0) {
32721 return Buffer.alloc(
0)
32725 if (length === undefined) {
32727 for (i =
0; i < list.length; ++i) {
32728 length += list[i].length
32732 var buffer = Buffer.allocUnsafe(length)
32734 for (i =
0; i < list.length; ++i) {
32736 if (!Buffer.isBuffer(buf)) {
32737 throw new TypeError('"list" argument must be an Array of Buffers')
32739 buf.copy(buffer, pos)
32745 function byteLength (string, encoding) {
32746 if (Buffer.isBuffer(string)) {
32747 return string.length
32749 if (ArrayBuffer.isView(string) || string instanceof ArrayBuffer) {
32750 return string.byteLength
32752 if (typeof string !== 'string') {
32753 string = '' + string
32756 var len = string.length
32757 if (len ===
0) return
0
32759 // Use a for loop to avoid recursion
32760 var loweredCase = false
32762 switch (encoding) {
32770 return utf8ToBytes(string).length
32779 return base64ToBytes(string).length
32781 if (loweredCase) return utf8ToBytes(string).length // assume utf8
32782 encoding = ('' + encoding).toLowerCase()
32787 Buffer.byteLength = byteLength
32789 function slowToString (encoding, start, end) {
32790 var loweredCase = false
32792 // No need to verify that
"this.length <= MAX_UINT32" since it's a read-only
32793 // property of a typed array.
32795 // This behaves neither like String nor Uint8Array in that we set start/end
32796 // to their upper/lower bounds if the value passed is out of range.
32797 // undefined is handled specially as per ECMA-
262 6th Edition,
32798 // Section
13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
32799 if (start === undefined || start <
0) {
32802 // Return early if start
> this.length. Done here to prevent potential uint32
32803 // coercion fail below.
32804 if (start
> this.length) {
32808 if (end === undefined || end
> this.length) {
32816 // Force coersion to uint32. This will also coerce falsey/NaN values to
0.
32820 if (end <= start) {
32824 if (!encoding) encoding = 'utf8'
32827 switch (encoding) {
32829 return hexSlice(this, start, end)
32833 return utf8Slice(this, start, end)
32836 return asciiSlice(this, start, end)
32840 return latin1Slice(this, start, end)
32843 return base64Slice(this, start, end)
32849 return utf16leSlice(this, start, end)
32852 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
32853 encoding = (encoding + '').toLowerCase()
32859 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
32860 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
32861 // reliably in a browserify context because there could be multiple different
32862 // copies of the 'buffer' package in use. This method works even for Buffer
32863 // instances that were created from another copy of the `buffer` package.
32864 // See: https://github.com/feross/buffer/issues/
154
32865 Buffer.prototype._isBuffer = true
32867 function swap (b, n, m) {
32873 Buffer.prototype.swap16 = function swap16 () {
32874 var len = this.length
32875 if (len %
2 !==
0) {
32876 throw new RangeError('Buffer size must be a multiple of
16-bits')
32878 for (var i =
0; i < len; i +=
2) {
32879 swap(this, i, i +
1)
32884 Buffer.prototype.swap32 = function swap32 () {
32885 var len = this.length
32886 if (len %
4 !==
0) {
32887 throw new RangeError('Buffer size must be a multiple of
32-bits')
32889 for (var i =
0; i < len; i +=
4) {
32890 swap(this, i, i +
3)
32891 swap(this, i +
1, i +
2)
32896 Buffer.prototype.swap64 = function swap64 () {
32897 var len = this.length
32898 if (len %
8 !==
0) {
32899 throw new RangeError('Buffer size must be a multiple of
64-bits')
32901 for (var i =
0; i < len; i +=
8) {
32902 swap(this, i, i +
7)
32903 swap(this, i +
1, i +
6)
32904 swap(this, i +
2, i +
5)
32905 swap(this, i +
3, i +
4)
32910 Buffer.prototype.toString = function toString () {
32911 var length = this.length
32912 if (length ===
0) return ''
32913 if (arguments.length ===
0) return utf8Slice(this,
0, length)
32914 return slowToString.apply(this, arguments)
32917 Buffer.prototype.equals = function equals (b) {
32918 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
32919 if (this === b) return true
32920 return Buffer.compare(this, b) ===
0
32923 Buffer.prototype.inspect = function inspect () {
32925 var max = exports.INSPECT_MAX_BYTES
32926 if (this.length
> 0) {
32927 str = this.toString('hex',
0, max).match(/.{
2}/g).join(' ')
32928 if (this.length
> max) str += ' ... '
32930 return '
<Buffer ' + str + '
>'
32933 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
32934 if (!Buffer.isBuffer(target)) {
32935 throw new TypeError('Argument must be a Buffer')
32938 if (start === undefined) {
32941 if (end === undefined) {
32942 end = target ? target.length :
0
32944 if (thisStart === undefined) {
32947 if (thisEnd === undefined) {
32948 thisEnd = this.length
32951 if (start <
0 || end
> target.length || thisStart <
0 || thisEnd
> this.length) {
32952 throw new RangeError('out of range index')
32955 if (thisStart
>= thisEnd && start
>= end) {
32958 if (thisStart
>= thisEnd) {
32961 if (start
>= end) {
32970 if (this === target) return
0
32972 var x = thisEnd - thisStart
32973 var y = end - start
32974 var len = Math.min(x, y)
32976 var thisCopy = this.slice(thisStart, thisEnd)
32977 var targetCopy = target.slice(start, end)
32979 for (var i =
0; i < len; ++i) {
32980 if (thisCopy[i] !== targetCopy[i]) {
32987 if (x < y) return -
1
32988 if (y < x) return
1
32992 // Finds either the first index of `val` in `buffer` at offset
>= `byteOffset`,
32993 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
32996 // - buffer - a Buffer to search
32997 // - val - a string, Buffer, or number
32998 // - byteOffset - an index into `buffer`; will be clamped to an int32
32999 // - encoding - an optional encoding, relevant is val is a string
33000 // - dir - true for indexOf, false for lastIndexOf
33001 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
33002 // Empty buffer means no match
33003 if (buffer.length ===
0) return -
1
33005 // Normalize byteOffset
33006 if (typeof byteOffset === 'string') {
33007 encoding = byteOffset
33009 } else if (byteOffset
> 0x7fffffff) {
33010 byteOffset =
0x7fffffff
33011 } else if (byteOffset < -
0x80000000) {
33012 byteOffset = -
0x80000000
33014 byteOffset = +byteOffset // Coerce to Number.
33015 if (isNaN(byteOffset)) {
33016 // byteOffset: it it's undefined, null, NaN,
"foo", etc, search whole buffer
33017 byteOffset = dir ?
0 : (buffer.length -
1)
33020 // Normalize byteOffset: negative offsets start from the end of the buffer
33021 if (byteOffset <
0) byteOffset = buffer.length + byteOffset
33022 if (byteOffset
>= buffer.length) {
33024 else byteOffset = buffer.length -
1
33025 } else if (byteOffset <
0) {
33026 if (dir) byteOffset =
0
33031 if (typeof val === 'string') {
33032 val = Buffer.from(val, encoding)
33035 // Finally, search either indexOf (if dir is true) or lastIndexOf
33036 if (Buffer.isBuffer(val)) {
33037 // Special case: looking for empty string/buffer always fails
33038 if (val.length ===
0) {
33041 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
33042 } else if (typeof val === 'number') {
33043 val = val &
0xFF // Search for a byte value [
0-
255]
33044 if (typeof Uint8Array.prototype.indexOf === 'function') {
33046 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
33048 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
33051 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
33054 throw new TypeError('val must be string, number or Buffer')
33057 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
33059 var arrLength = arr.length
33060 var valLength = val.length
33062 if (encoding !== undefined) {
33063 encoding = String(encoding).toLowerCase()
33064 if (encoding === 'ucs2' || encoding === 'ucs-
2' ||
33065 encoding === 'utf16le' || encoding === 'utf-
16le') {
33066 if (arr.length <
2 || val.length <
2) {
33076 function read (buf, i) {
33077 if (indexSize ===
1) {
33080 return buf.readUInt16BE(i * indexSize)
33086 var foundIndex = -
1
33087 for (i = byteOffset; i < arrLength; i++) {
33088 if (read(arr, i) === read(val, foundIndex === -
1 ?
0 : i - foundIndex)) {
33089 if (foundIndex === -
1) foundIndex = i
33090 if (i - foundIndex +
1 === valLength) return foundIndex * indexSize
33092 if (foundIndex !== -
1) i -= i - foundIndex
33097 if (byteOffset + valLength
> arrLength) byteOffset = arrLength - valLength
33098 for (i = byteOffset; i
>=
0; i--) {
33100 for (var j =
0; j < valLength; j++) {
33101 if (read(arr, i + j) !== read(val, j)) {
33106 if (found) return i
33113 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
33114 return this.indexOf(val, byteOffset, encoding) !== -
1
33117 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
33118 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
33121 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
33122 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
33125 function hexWrite (buf, string, offset, length) {
33126 offset = Number(offset) ||
0
33127 var remaining = buf.length - offset
33131 length = Number(length)
33132 if (length
> remaining) {
33137 // must be an even number of digits
33138 var strLen = string.length
33139 if (strLen %
2 !==
0) throw new TypeError('Invalid hex string')
33141 if (length
> strLen /
2) {
33142 length = strLen /
2
33144 for (var i =
0; i < length; ++i) {
33145 var parsed = parseInt(string.substr(i *
2,
2),
16)
33146 if (isNaN(parsed)) return i
33147 buf[offset + i] = parsed
33152 function utf8Write (buf, string, offset, length) {
33153 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
33156 function asciiWrite (buf, string, offset, length) {
33157 return blitBuffer(asciiToBytes(string), buf, offset, length)
33160 function latin1Write (buf, string, offset, length) {
33161 return asciiWrite(buf, string, offset, length)
33164 function base64Write (buf, string, offset, length) {
33165 return blitBuffer(base64ToBytes(string), buf, offset, length)
33168 function ucs2Write (buf, string, offset, length) {
33169 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
33172 Buffer.prototype.write = function write (string, offset, length, encoding) {
33173 // Buffer#write(string)
33174 if (offset === undefined) {
33176 length = this.length
33178 // Buffer#write(string, encoding)
33179 } else if (length === undefined && typeof offset === 'string') {
33181 length = this.length
33183 // Buffer#write(string, offset[, length][, encoding])
33184 } else if (isFinite(offset)) {
33185 offset = offset
>>> 0
33186 if (isFinite(length)) {
33187 length = length
>>> 0
33188 if (encoding === undefined) encoding = 'utf8'
33195 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
33199 var remaining = this.length - offset
33200 if (length === undefined || length
> remaining) length = remaining
33202 if ((string.length
> 0 && (length <
0 || offset <
0)) || offset
> this.length) {
33203 throw new RangeError('Attempt to write outside buffer bounds')
33206 if (!encoding) encoding = 'utf8'
33208 var loweredCase = false
33210 switch (encoding) {
33212 return hexWrite(this, string, offset, length)
33216 return utf8Write(this, string, offset, length)
33219 return asciiWrite(this, string, offset, length)
33223 return latin1Write(this, string, offset, length)
33226 // Warning: maxLength not taken into account in base64Write
33227 return base64Write(this, string, offset, length)
33233 return ucs2Write(this, string, offset, length)
33236 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
33237 encoding = ('' + encoding).toLowerCase()
33243 Buffer.prototype.toJSON = function toJSON () {
33246 data: Array.prototype.slice.call(this._arr || this,
0)
33250 function base64Slice (buf, start, end) {
33251 if (start ===
0 && end === buf.length) {
33252 return base64.fromByteArray(buf)
33254 return base64.fromByteArray(buf.slice(start, end))
33258 function utf8Slice (buf, start, end) {
33259 end = Math.min(buf.length, end)
33264 var firstByte = buf[i]
33265 var codePoint = null
33266 var bytesPerSequence = (firstByte
> 0xEF) ?
4
33267 : (firstByte
> 0xDF) ?
3
33268 : (firstByte
> 0xBF) ?
2
33271 if (i + bytesPerSequence <= end) {
33272 var secondByte, thirdByte, fourthByte, tempCodePoint
33274 switch (bytesPerSequence) {
33276 if (firstByte <
0x80) {
33277 codePoint = firstByte
33281 secondByte = buf[i +
1]
33282 if ((secondByte &
0xC0) ===
0x80) {
33283 tempCodePoint = (firstByte &
0x1F) <<
0x6 | (secondByte &
0x3F)
33284 if (tempCodePoint
> 0x7F) {
33285 codePoint = tempCodePoint
33290 secondByte = buf[i +
1]
33291 thirdByte = buf[i +
2]
33292 if ((secondByte &
0xC0) ===
0x80 && (thirdByte &
0xC0) ===
0x80) {
33293 tempCodePoint = (firstByte &
0xF) <<
0xC | (secondByte &
0x3F) <<
0x6 | (thirdByte &
0x3F)
33294 if (tempCodePoint
> 0x7FF && (tempCodePoint <
0xD800 || tempCodePoint
> 0xDFFF)) {
33295 codePoint = tempCodePoint
33300 secondByte = buf[i +
1]
33301 thirdByte = buf[i +
2]
33302 fourthByte = buf[i +
3]
33303 if ((secondByte &
0xC0) ===
0x80 && (thirdByte &
0xC0) ===
0x80 && (fourthByte &
0xC0) ===
0x80) {
33304 tempCodePoint = (firstByte &
0xF) <<
0x12 | (secondByte &
0x3F) <<
0xC | (thirdByte &
0x3F) <<
0x6 | (fourthByte &
0x3F)
33305 if (tempCodePoint
> 0xFFFF && tempCodePoint <
0x110000) {
33306 codePoint = tempCodePoint
33312 if (codePoint === null) {
33313 // we did not generate a valid codePoint so insert a
33314 // replacement char (U+FFFD) and advance only
1 byte
33316 bytesPerSequence =
1
33317 } else if (codePoint
> 0xFFFF) {
33318 // encode to utf16 (surrogate pair dance)
33319 codePoint -=
0x10000
33320 res.push(codePoint
>>> 10 &
0x3FF |
0xD800)
33321 codePoint =
0xDC00 | codePoint &
0x3FF
33324 res.push(codePoint)
33325 i += bytesPerSequence
33328 return decodeCodePointsArray(res)
33331 // Based on http://stackoverflow.com/a/
22747272/
680742, the browser with
33332 // the lowest limit is Chrome, with
0x10000 args.
33333 // We go
1 magnitude less, for safety
33334 var MAX_ARGUMENTS_LENGTH =
0x1000
33336 function decodeCodePointsArray (codePoints) {
33337 var len = codePoints.length
33338 if (len <= MAX_ARGUMENTS_LENGTH) {
33339 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
33342 // Decode in chunks to avoid
"call stack size exceeded".
33346 res += String.fromCharCode.apply(
33348 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
33354 function asciiSlice (buf, start, end) {
33356 end = Math.min(buf.length, end)
33358 for (var i = start; i < end; ++i) {
33359 ret += String.fromCharCode(buf[i] &
0x7F)
33364 function latin1Slice (buf, start, end) {
33366 end = Math.min(buf.length, end)
33368 for (var i = start; i < end; ++i) {
33369 ret += String.fromCharCode(buf[i])
33374 function hexSlice (buf, start, end) {
33375 var len = buf.length
33377 if (!start || start <
0) start =
0
33378 if (!end || end <
0 || end
> len) end = len
33381 for (var i = start; i < end; ++i) {
33382 out += toHex(buf[i])
33387 function utf16leSlice (buf, start, end) {
33388 var bytes = buf.slice(start, end)
33390 for (var i =
0; i < bytes.length; i +=
2) {
33391 res += String.fromCharCode(bytes[i] + (bytes[i +
1] *
256))
33396 Buffer.prototype.slice = function slice (start, end) {
33397 var len = this.length
33399 end = end === undefined ? len : ~~end
33403 if (start <
0) start =
0
33404 } else if (start
> len) {
33410 if (end <
0) end =
0
33411 } else if (end
> len) {
33415 if (end < start) end = start
33417 var newBuf = this.subarray(start, end)
33418 // Return an augmented `Uint8Array` instance
33419 newBuf.__proto__ = Buffer.prototype
33424 * Need to make sure that buffer isn't trying to write out of bounds.
33426 function checkOffset (offset, ext, length) {
33427 if ((offset %
1) !==
0 || offset <
0) throw new RangeError('offset is not uint')
33428 if (offset + ext
> length) throw new RangeError('Trying to access beyond buffer length')
33431 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
33432 offset = offset
>>> 0
33433 byteLength = byteLength
>>> 0
33434 if (!noAssert) checkOffset(offset, byteLength, this.length)
33436 var val = this[offset]
33439 while (++i < byteLength && (mul *=
0x100)) {
33440 val += this[offset + i] * mul
33446 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
33447 offset = offset
>>> 0
33448 byteLength = byteLength
>>> 0
33450 checkOffset(offset, byteLength, this.length)
33453 var val = this[offset + --byteLength]
33455 while (byteLength
> 0 && (mul *=
0x100)) {
33456 val += this[offset + --byteLength] * mul
33462 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
33463 offset = offset
>>> 0
33464 if (!noAssert) checkOffset(offset,
1, this.length)
33465 return this[offset]
33468 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
33469 offset = offset
>>> 0
33470 if (!noAssert) checkOffset(offset,
2, this.length)
33471 return this[offset] | (this[offset +
1] <<
8)
33474 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
33475 offset = offset
>>> 0
33476 if (!noAssert) checkOffset(offset,
2, this.length)
33477 return (this[offset] <<
8) | this[offset +
1]
33480 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
33481 offset = offset
>>> 0
33482 if (!noAssert) checkOffset(offset,
4, this.length)
33484 return ((this[offset]) |
33485 (this[offset +
1] <<
8) |
33486 (this[offset +
2] <<
16)) +
33487 (this[offset +
3] *
0x1000000)
33490 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
33491 offset = offset
>>> 0
33492 if (!noAssert) checkOffset(offset,
4, this.length)
33494 return (this[offset] *
0x1000000) +
33495 ((this[offset +
1] <<
16) |
33496 (this[offset +
2] <<
8) |
33500 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
33501 offset = offset
>>> 0
33502 byteLength = byteLength
>>> 0
33503 if (!noAssert) checkOffset(offset, byteLength, this.length)
33505 var val = this[offset]
33508 while (++i < byteLength && (mul *=
0x100)) {
33509 val += this[offset + i] * mul
33513 if (val
>= mul) val -= Math.pow(
2,
8 * byteLength)
33518 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
33519 offset = offset
>>> 0
33520 byteLength = byteLength
>>> 0
33521 if (!noAssert) checkOffset(offset, byteLength, this.length)
33525 var val = this[offset + --i]
33526 while (i
> 0 && (mul *=
0x100)) {
33527 val += this[offset + --i] * mul
33531 if (val
>= mul) val -= Math.pow(
2,
8 * byteLength)
33536 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
33537 offset = offset
>>> 0
33538 if (!noAssert) checkOffset(offset,
1, this.length)
33539 if (!(this[offset] &
0x80)) return (this[offset])
33540 return ((
0xff - this[offset] +
1) * -
1)
33543 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
33544 offset = offset
>>> 0
33545 if (!noAssert) checkOffset(offset,
2, this.length)
33546 var val = this[offset] | (this[offset +
1] <<
8)
33547 return (val &
0x8000) ? val |
0xFFFF0000 : val
33550 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
33551 offset = offset
>>> 0
33552 if (!noAssert) checkOffset(offset,
2, this.length)
33553 var val = this[offset +
1] | (this[offset] <<
8)
33554 return (val &
0x8000) ? val |
0xFFFF0000 : val
33557 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
33558 offset = offset
>>> 0
33559 if (!noAssert) checkOffset(offset,
4, this.length)
33561 return (this[offset]) |
33562 (this[offset +
1] <<
8) |
33563 (this[offset +
2] <<
16) |
33564 (this[offset +
3] <<
24)
33567 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
33568 offset = offset
>>> 0
33569 if (!noAssert) checkOffset(offset,
4, this.length)
33571 return (this[offset] <<
24) |
33572 (this[offset +
1] <<
16) |
33573 (this[offset +
2] <<
8) |
33577 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
33578 offset = offset
>>> 0
33579 if (!noAssert) checkOffset(offset,
4, this.length)
33580 return ieee754.read(this, offset, true,
23,
4)
33583 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
33584 offset = offset
>>> 0
33585 if (!noAssert) checkOffset(offset,
4, this.length)
33586 return ieee754.read(this, offset, false,
23,
4)
33589 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
33590 offset = offset
>>> 0
33591 if (!noAssert) checkOffset(offset,
8, this.length)
33592 return ieee754.read(this, offset, true,
52,
8)
33595 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
33596 offset = offset
>>> 0
33597 if (!noAssert) checkOffset(offset,
8, this.length)
33598 return ieee754.read(this, offset, false,
52,
8)
33601 function checkInt (buf, value, offset, ext, max, min) {
33602 if (!Buffer.isBuffer(buf)) throw new TypeError('
"buffer" argument must be a Buffer instance')
33603 if (value
> max || value < min) throw new RangeError('"value" argument is out of bounds')
33604 if (offset + ext
> buf.length) throw new RangeError('Index out of range')
33607 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
33609 offset = offset
>>> 0
33610 byteLength = byteLength
>>> 0
33612 var maxBytes = Math.pow(
2,
8 * byteLength) -
1
33613 checkInt(this, value, offset, byteLength, maxBytes,
0)
33618 this[offset] = value &
0xFF
33619 while (++i < byteLength && (mul *=
0x100)) {
33620 this[offset + i] = (value / mul) &
0xFF
33623 return offset + byteLength
33626 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
33628 offset = offset
>>> 0
33629 byteLength = byteLength
>>> 0
33631 var maxBytes = Math.pow(
2,
8 * byteLength) -
1
33632 checkInt(this, value, offset, byteLength, maxBytes,
0)
33635 var i = byteLength -
1
33637 this[offset + i] = value &
0xFF
33638 while (--i
>=
0 && (mul *=
0x100)) {
33639 this[offset + i] = (value / mul) &
0xFF
33642 return offset + byteLength
33645 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
33647 offset = offset
>>> 0
33648 if (!noAssert) checkInt(this, value, offset,
1,
0xff,
0)
33649 this[offset] = (value &
0xff)
33653 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
33655 offset = offset
>>> 0
33656 if (!noAssert) checkInt(this, value, offset,
2,
0xffff,
0)
33657 this[offset] = (value &
0xff)
33658 this[offset +
1] = (value
>>> 8)
33662 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
33664 offset = offset
>>> 0
33665 if (!noAssert) checkInt(this, value, offset,
2,
0xffff,
0)
33666 this[offset] = (value
>>> 8)
33667 this[offset +
1] = (value &
0xff)
33671 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
33673 offset = offset
>>> 0
33674 if (!noAssert) checkInt(this, value, offset,
4,
0xffffffff,
0)
33675 this[offset +
3] = (value
>>> 24)
33676 this[offset +
2] = (value
>>> 16)
33677 this[offset +
1] = (value
>>> 8)
33678 this[offset] = (value &
0xff)
33682 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
33684 offset = offset
>>> 0
33685 if (!noAssert) checkInt(this, value, offset,
4,
0xffffffff,
0)
33686 this[offset] = (value
>>> 24)
33687 this[offset +
1] = (value
>>> 16)
33688 this[offset +
2] = (value
>>> 8)
33689 this[offset +
3] = (value &
0xff)
33693 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
33695 offset = offset
>>> 0
33697 var limit = Math.pow(
2, (
8 * byteLength) -
1)
33699 checkInt(this, value, offset, byteLength, limit -
1, -limit)
33705 this[offset] = value &
0xFF
33706 while (++i < byteLength && (mul *=
0x100)) {
33707 if (value <
0 && sub ===
0 && this[offset + i -
1] !==
0) {
33710 this[offset + i] = ((value / mul)
>> 0) - sub &
0xFF
33713 return offset + byteLength
33716 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
33718 offset = offset
>>> 0
33720 var limit = Math.pow(
2, (
8 * byteLength) -
1)
33722 checkInt(this, value, offset, byteLength, limit -
1, -limit)
33725 var i = byteLength -
1
33728 this[offset + i] = value &
0xFF
33729 while (--i
>=
0 && (mul *=
0x100)) {
33730 if (value <
0 && sub ===
0 && this[offset + i +
1] !==
0) {
33733 this[offset + i] = ((value / mul)
>> 0) - sub &
0xFF
33736 return offset + byteLength
33739 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
33741 offset = offset
>>> 0
33742 if (!noAssert) checkInt(this, value, offset,
1,
0x7f, -
0x80)
33743 if (value <
0) value =
0xff + value +
1
33744 this[offset] = (value &
0xff)
33748 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
33750 offset = offset
>>> 0
33751 if (!noAssert) checkInt(this, value, offset,
2,
0x7fff, -
0x8000)
33752 this[offset] = (value &
0xff)
33753 this[offset +
1] = (value
>>> 8)
33757 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
33759 offset = offset
>>> 0
33760 if (!noAssert) checkInt(this, value, offset,
2,
0x7fff, -
0x8000)
33761 this[offset] = (value
>>> 8)
33762 this[offset +
1] = (value &
0xff)
33766 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
33768 offset = offset
>>> 0
33769 if (!noAssert) checkInt(this, value, offset,
4,
0x7fffffff, -
0x80000000)
33770 this[offset] = (value &
0xff)
33771 this[offset +
1] = (value
>>> 8)
33772 this[offset +
2] = (value
>>> 16)
33773 this[offset +
3] = (value
>>> 24)
33777 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
33779 offset = offset
>>> 0
33780 if (!noAssert) checkInt(this, value, offset,
4,
0x7fffffff, -
0x80000000)
33781 if (value <
0) value =
0xffffffff + value +
1
33782 this[offset] = (value
>>> 24)
33783 this[offset +
1] = (value
>>> 16)
33784 this[offset +
2] = (value
>>> 8)
33785 this[offset +
3] = (value &
0xff)
33789 function checkIEEE754 (buf, value, offset, ext, max, min) {
33790 if (offset + ext
> buf.length) throw new RangeError('Index out of range')
33791 if (offset <
0) throw new RangeError('Index out of range')
33794 function writeFloat (buf, value, offset, littleEndian, noAssert) {
33796 offset = offset
>>> 0
33798 checkIEEE754(buf, value, offset,
4,
3.4028234663852886e+38, -
3.4028234663852886e+38)
33800 ieee754.write(buf, value, offset, littleEndian,
23,
4)
33804 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
33805 return writeFloat(this, value, offset, true, noAssert)
33808 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
33809 return writeFloat(this, value, offset, false, noAssert)
33812 function writeDouble (buf, value, offset, littleEndian, noAssert) {
33814 offset = offset
>>> 0
33816 checkIEEE754(buf, value, offset,
8,
1.7976931348623157E+308, -
1.7976931348623157E+308)
33818 ieee754.write(buf, value, offset, littleEndian,
52,
8)
33822 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
33823 return writeDouble(this, value, offset, true, noAssert)
33826 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
33827 return writeDouble(this, value, offset, false, noAssert)
33830 // copy(targetBuffer, targetStart=
0, sourceStart=
0, sourceEnd=buffer.length)
33831 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
33832 if (!start) start =
0
33833 if (!end && end !==
0) end = this.length
33834 if (targetStart
>= target.length) targetStart = target.length
33835 if (!targetStart) targetStart =
0
33836 if (end
> 0 && end < start) end = start
33838 // Copy
0 bytes; we're done
33839 if (end === start) return
0
33840 if (target.length ===
0 || this.length ===
0) return
0
33842 // Fatal error conditions
33843 if (targetStart <
0) {
33844 throw new RangeError('targetStart out of bounds')
33846 if (start <
0 || start
>= this.length) throw new RangeError('sourceStart out of bounds')
33847 if (end <
0) throw new RangeError('sourceEnd out of bounds')
33850 if (end
> this.length) end = this.length
33851 if (target.length - targetStart < end - start) {
33852 end = target.length - targetStart + start
33855 var len = end - start
33858 if (this === target && start < targetStart && targetStart < end) {
33859 // descending copy from end
33860 for (i = len -
1; i
>=
0; --i) {
33861 target[i + targetStart] = this[i + start]
33863 } else if (len <
1000) {
33864 // ascending copy from start
33865 for (i =
0; i < len; ++i) {
33866 target[i + targetStart] = this[i + start]
33869 Uint8Array.prototype.set.call(
33871 this.subarray(start, start + len),
33880 // buffer.fill(number[, offset[, end]])
33881 // buffer.fill(buffer[, offset[, end]])
33882 // buffer.fill(string[, offset[, end]][, encoding])
33883 Buffer.prototype.fill = function fill (val, start, end, encoding) {
33884 // Handle string cases:
33885 if (typeof val === 'string') {
33886 if (typeof start === 'string') {
33890 } else if (typeof end === 'string') {
33894 if (val.length ===
1) {
33895 var code = val.charCodeAt(
0)
33900 if (encoding !== undefined && typeof encoding !== 'string') {
33901 throw new TypeError('encoding must be a string')
33903 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
33904 throw new TypeError('Unknown encoding: ' + encoding)
33906 } else if (typeof val === 'number') {
33910 // Invalid ranges are not set to a default, so can range check early.
33911 if (start <
0 || this.length < start || this.length < end) {
33912 throw new RangeError('Out of range index')
33915 if (end <= start) {
33919 start = start
>>> 0
33920 end = end === undefined ? this.length : end
>>> 0
33925 if (typeof val === 'number') {
33926 for (i = start; i < end; ++i) {
33930 var bytes = Buffer.isBuffer(val)
33932 : new Buffer(val, encoding)
33933 var len = bytes.length
33934 for (i =
0; i < end - start; ++i) {
33935 this[i + start] = bytes[i % len]
33942 // HELPER FUNCTIONS
33943 // ================
33945 var INVALID_BASE64_RE = /[^+/
0-
9A-Za-z-_]/g
33947 function base64clean (str) {
33948 // Node strips out invalid characters like \n and \t from the string, base64-js does not
33949 str = stringtrim(str).replace(INVALID_BASE64_RE, '')
33950 // Node converts strings with length <
2 to ''
33951 if (str.length <
2) return ''
33952 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
33953 while (str.length %
4 !==
0) {
33959 function stringtrim (str) {
33960 if (str.trim) return str.trim()
33961 return str.replace(/^\s+|\s+$/g, '')
33964 function toHex (n) {
33965 if (n <
16) return '
0' + n.toString(
16)
33966 return n.toString(
16)
33969 function utf8ToBytes (string, units) {
33970 units = units || Infinity
33972 var length = string.length
33973 var leadSurrogate = null
33976 for (var i =
0; i < length; ++i) {
33977 codePoint = string.charCodeAt(i)
33979 // is surrogate component
33980 if (codePoint
> 0xD7FF && codePoint <
0xE000) {
33981 // last char was a lead
33982 if (!leadSurrogate) {
33984 if (codePoint
> 0xDBFF) {
33985 // unexpected trail
33986 if ((units -=
3)
> -
1) bytes.push(
0xEF,
0xBF,
0xBD)
33988 } else if (i +
1 === length) {
33990 if ((units -=
3)
> -
1) bytes.push(
0xEF,
0xBF,
0xBD)
33995 leadSurrogate = codePoint
34000 //
2 leads in a row
34001 if (codePoint <
0xDC00) {
34002 if ((units -=
3)
> -
1) bytes.push(
0xEF,
0xBF,
0xBD)
34003 leadSurrogate = codePoint
34007 // valid surrogate pair
34008 codePoint = (leadSurrogate -
0xD800 <<
10 | codePoint -
0xDC00) +
0x10000
34009 } else if (leadSurrogate) {
34010 // valid bmp char, but last char was a lead
34011 if ((units -=
3)
> -
1) bytes.push(
0xEF,
0xBF,
0xBD)
34014 leadSurrogate = null
34017 if (codePoint <
0x80) {
34018 if ((units -=
1) <
0) break
34019 bytes.push(codePoint)
34020 } else if (codePoint <
0x800) {
34021 if ((units -=
2) <
0) break
34023 codePoint
>> 0x6 |
0xC0,
34024 codePoint &
0x3F |
0x80
34026 } else if (codePoint <
0x10000) {
34027 if ((units -=
3) <
0) break
34029 codePoint
>> 0xC |
0xE0,
34030 codePoint
>> 0x6 &
0x3F |
0x80,
34031 codePoint &
0x3F |
0x80
34033 } else if (codePoint <
0x110000) {
34034 if ((units -=
4) <
0) break
34036 codePoint
>> 0x12 |
0xF0,
34037 codePoint
>> 0xC &
0x3F |
0x80,
34038 codePoint
>> 0x6 &
0x3F |
0x80,
34039 codePoint &
0x3F |
0x80
34042 throw new Error('Invalid code point')
34049 function asciiToBytes (str) {
34051 for (var i =
0; i < str.length; ++i) {
34052 // Node's code seems to be doing this and not &
0x7F..
34053 byteArray.push(str.charCodeAt(i) &
0xFF)
34058 function utf16leToBytes (str, units) {
34061 for (var i =
0; i < str.length; ++i) {
34062 if ((units -=
2) <
0) break
34064 c = str.charCodeAt(i)
34074 function base64ToBytes (str) {
34075 return base64.toByteArray(base64clean(str))
34078 function blitBuffer (src, dst, offset, length) {
34079 for (var i =
0; i < length; ++i) {
34080 if ((i + offset
>= dst.length) || (i
>= src.length)) break
34081 dst[i + offset] = src[i]
34086 function isnan (val) {
34087 return val !== val // eslint-disable-line no-self-compare
34090 },{"base64-js":
2,"ieee754":
8}],
6:[function(require,module,exports){
34091 (function (Buffer){
34092 // Copyright Joyent, Inc. and other Node contributors.
34094 // Permission is hereby granted, free of charge, to any person obtaining a
34095 // copy of this software and associated documentation files (the
34096 // "Software"), to deal in the Software without restriction, including
34097 // without limitation the rights to use, copy, modify, merge, publish,
34098 // distribute, sublicense, and/or sell copies of the Software, and to permit
34099 // persons to whom the Software is furnished to do so, subject to the
34100 // following conditions:
34102 // The above copyright notice and this permission notice shall be included
34103 // in all copies or substantial portions of the Software.
34105 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
34106 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
34107 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
34108 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
34109 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
34110 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
34111 // USE OR OTHER DEALINGS IN THE SOFTWARE.
34113 // NOTE: These type checking functions intentionally don't use `instanceof`
34114 // because it is fragile and can be easily faked with `Object.create()`.
34116 function isArray(arg) {
34117 if (Array.isArray) {
34118 return Array.isArray(arg);
34120 return objectToString(arg) === '[object Array]';
34122 exports.isArray = isArray;
34124 function isBoolean(arg) {
34125 return typeof arg === 'boolean';
34127 exports.isBoolean = isBoolean;
34129 function isNull(arg) {
34130 return arg === null;
34132 exports.isNull = isNull;
34134 function isNullOrUndefined(arg) {
34135 return arg == null;
34137 exports.isNullOrUndefined = isNullOrUndefined;
34139 function isNumber(arg) {
34140 return typeof arg === 'number';
34142 exports.isNumber = isNumber;
34144 function isString(arg) {
34145 return typeof arg === 'string';
34147 exports.isString = isString;
34149 function isSymbol(arg) {
34150 return typeof arg === 'symbol';
34152 exports.isSymbol = isSymbol;
34154 function isUndefined(arg) {
34155 return arg === void
0;
34157 exports.isUndefined = isUndefined;
34159 function isRegExp(re) {
34160 return objectToString(re) === '[object RegExp]';
34162 exports.isRegExp = isRegExp;
34164 function isObject(arg) {
34165 return typeof arg === 'object' && arg !== null;
34167 exports.isObject = isObject;
34169 function isDate(d) {
34170 return objectToString(d) === '[object Date]';
34172 exports.isDate = isDate;
34174 function isError(e) {
34175 return (objectToString(e) === '[object Error]' || e instanceof Error);
34177 exports.isError = isError;
34179 function isFunction(arg) {
34180 return typeof arg === 'function';
34182 exports.isFunction = isFunction;
34184 function isPrimitive(arg) {
34185 return arg === null ||
34186 typeof arg === 'boolean' ||
34187 typeof arg === 'number' ||
34188 typeof arg === 'string' ||
34189 typeof arg === 'symbol' || // ES6 symbol
34190 typeof arg === 'undefined';
34192 exports.isPrimitive = isPrimitive;
34194 exports.isBuffer = Buffer.isBuffer;
34196 function objectToString(o) {
34197 return Object.prototype.toString.call(o);
34200 }).call(this,{"isBuffer":require("../../is-buffer/index.js")})
34201 },{"../../is-buffer/index.js":
10}],
7:[function(require,module,exports){
34202 // Copyright Joyent, Inc. and other Node contributors.
34204 // Permission is hereby granted, free of charge, to any person obtaining a
34205 // copy of this software and associated documentation files (the
34206 // "Software"), to deal in the Software without restriction, including
34207 // without limitation the rights to use, copy, modify, merge, publish,
34208 // distribute, sublicense, and/or sell copies of the Software, and to permit
34209 // persons to whom the Software is furnished to do so, subject to the
34210 // following conditions:
34212 // The above copyright notice and this permission notice shall be included
34213 // in all copies or substantial portions of the Software.
34215 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
34216 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
34217 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
34218 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
34219 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
34220 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
34221 // USE OR OTHER DEALINGS IN THE SOFTWARE.
34223 function EventEmitter() {
34224 this._events = this._events || {};
34225 this._maxListeners = this._maxListeners || undefined;
34227 module.exports = EventEmitter;
34229 // Backwards-compat with node
0.10.x
34230 EventEmitter.EventEmitter = EventEmitter;
34232 EventEmitter.prototype._events = undefined;
34233 EventEmitter.prototype._maxListeners = undefined;
34235 // By default EventEmitters will print a warning if more than
10 listeners are
34236 // added to it. This is a useful default which helps finding memory leaks.
34237 EventEmitter.defaultMaxListeners =
10;
34239 // Obviously not all Emitters should be limited to
10. This function allows
34240 // that to be increased. Set to zero for unlimited.
34241 EventEmitter.prototype.setMaxListeners = function(n) {
34242 if (!isNumber(n) || n <
0 || isNaN(n))
34243 throw TypeError('n must be a positive number');
34244 this._maxListeners = n;
34248 EventEmitter.prototype.emit = function(type) {
34249 var er, handler, len, args, i, listeners;
34254 // If there is no 'error' event listener then throw.
34255 if (type === 'error') {
34256 if (!this._events.error ||
34257 (isObject(this._events.error) && !this._events.error.length)) {
34259 if (er instanceof Error) {
34260 throw er; // Unhandled 'error' event
34262 // At least give some kind of context to the user
34263 var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
34270 handler = this._events[type];
34272 if (isUndefined(handler))
34275 if (isFunction(handler)) {
34276 switch (arguments.length) {
34279 handler.call(this);
34282 handler.call(this, arguments[
1]);
34285 handler.call(this, arguments[
1], arguments[
2]);
34289 args = Array.prototype.slice.call(arguments,
1);
34290 handler.apply(this, args);
34292 } else if (isObject(handler)) {
34293 args = Array.prototype.slice.call(arguments,
1);
34294 listeners = handler.slice();
34295 len = listeners.length;
34296 for (i =
0; i < len; i++)
34297 listeners[i].apply(this, args);
34303 EventEmitter.prototype.addListener = function(type, listener) {
34306 if (!isFunction(listener))
34307 throw TypeError('listener must be a function');
34312 // To avoid recursion in the case that type === "newListener"! Before
34313 // adding it to the listeners, first emit "newListener".
34314 if (this._events.newListener)
34315 this.emit('newListener', type,
34316 isFunction(listener.listener) ?
34317 listener.listener : listener);
34319 if (!this._events[type])
34320 // Optimize the case of one listener. Don't need the extra array object.
34321 this._events[type] = listener;
34322 else if (isObject(this._events[type]))
34323 // If we've already got an array, just append.
34324 this._events[type].push(listener);
34326 // Adding the second element, need to change to array.
34327 this._events[type] = [this._events[type], listener];
34329 // Check for listener leak
34330 if (isObject(this._events[type]) && !this._events[type].warned) {
34331 if (!isUndefined(this._maxListeners)) {
34332 m = this._maxListeners;
34334 m = EventEmitter.defaultMaxListeners;
34337 if (m && m
> 0 && this._events[type].length
> m) {
34338 this._events[type].warned = true;
34339 console.error('(node) warning: possible EventEmitter memory ' +
34340 'leak detected. %d listeners added. ' +
34341 'Use emitter.setMaxListeners() to increase limit.',
34342 this._events[type].length);
34343 if (typeof console.trace === 'function') {
34344 // not supported in IE
10
34353 EventEmitter.prototype.on = EventEmitter.prototype.addListener;
34355 EventEmitter.prototype.once = function(type, listener) {
34356 if (!isFunction(listener))
34357 throw TypeError('listener must be a function');
34362 this.removeListener(type, g);
34366 listener.apply(this, arguments);
34370 g.listener = listener;
34376 // emits a 'removeListener' event iff the listener was removed
34377 EventEmitter.prototype.removeListener = function(type, listener) {
34378 var list, position, length, i;
34380 if (!isFunction(listener))
34381 throw TypeError('listener must be a function');
34383 if (!this._events || !this._events[type])
34386 list = this._events[type];
34387 length = list.length;
34390 if (list === listener ||
34391 (isFunction(list.listener) && list.listener === listener)) {
34392 delete this._events[type];
34393 if (this._events.removeListener)
34394 this.emit('removeListener', type, listener);
34396 } else if (isObject(list)) {
34397 for (i = length; i--
> 0;) {
34398 if (list[i] === listener ||
34399 (list[i].listener && list[i].listener === listener)) {
34408 if (list.length ===
1) {
34410 delete this._events[type];
34412 list.splice(position,
1);
34415 if (this._events.removeListener)
34416 this.emit('removeListener', type, listener);
34422 EventEmitter.prototype.removeAllListeners = function(type) {
34423 var key, listeners;
34428 // not listening for removeListener, no need to emit
34429 if (!this._events.removeListener) {
34430 if (arguments.length ===
0)
34432 else if (this._events[type])
34433 delete this._events[type];
34437 // emit removeListener for all listeners on all events
34438 if (arguments.length ===
0) {
34439 for (key in this._events) {
34440 if (key === 'removeListener') continue;
34441 this.removeAllListeners(key);
34443 this.removeAllListeners('removeListener');
34448 listeners = this._events[type];
34450 if (isFunction(listeners)) {
34451 this.removeListener(type, listeners);
34452 } else if (listeners) {
34454 while (listeners.length)
34455 this.removeListener(type, listeners[listeners.length -
1]);
34457 delete this._events[type];
34462 EventEmitter.prototype.listeners = function(type) {
34464 if (!this._events || !this._events[type])
34466 else if (isFunction(this._events[type]))
34467 ret = [this._events[type]];
34469 ret = this._events[type].slice();
34473 EventEmitter.prototype.listenerCount = function(type) {
34474 if (this._events) {
34475 var evlistener = this._events[type];
34477 if (isFunction(evlistener))
34479 else if (evlistener)
34480 return evlistener.length;
34485 EventEmitter.listenerCount = function(emitter, type) {
34486 return emitter.listenerCount(type);
34489 function isFunction(arg) {
34490 return typeof arg === 'function';
34493 function isNumber(arg) {
34494 return typeof arg === 'number';
34497 function isObject(arg) {
34498 return typeof arg === 'object' && arg !== null;
34501 function isUndefined(arg) {
34502 return arg === void
0;
34505 },{}],
8:[function(require,module,exports){
34506 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
34508 var eLen = nBytes *
8 - mLen -
1
34509 var eMax = (
1 << eLen) -
1
34510 var eBias = eMax
>> 1
34512 var i = isLE ? (nBytes -
1) :
0
34513 var d = isLE ? -
1 :
1
34514 var s = buffer[offset + i]
34518 e = s & ((
1 << (-nBits)) -
1)
34521 for (; nBits
> 0; e = e *
256 + buffer[offset + i], i += d, nBits -=
8) {}
34523 m = e & ((
1 << (-nBits)) -
1)
34526 for (; nBits
> 0; m = m *
256 + buffer[offset + i], i += d, nBits -=
8) {}
34530 } else if (e === eMax) {
34531 return m ? NaN : ((s ? -
1 :
1) * Infinity)
34533 m = m + Math.pow(
2, mLen)
34536 return (s ? -
1 :
1) * m * Math.pow(
2, e - mLen)
34539 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
34541 var eLen = nBytes *
8 - mLen -
1
34542 var eMax = (
1 << eLen) -
1
34543 var eBias = eMax
>> 1
34544 var rt = (mLen ===
23 ? Math.pow(
2, -
24) - Math.pow(
2, -
77) :
0)
34545 var i = isLE ?
0 : (nBytes -
1)
34546 var d = isLE ?
1 : -
1
34547 var s = value <
0 || (value ===
0 &&
1 / value <
0) ?
1 :
0
34549 value = Math.abs(value)
34551 if (isNaN(value) || value === Infinity) {
34552 m = isNaN(value) ?
1 :
0
34555 e = Math.floor(Math.log(value) / Math.LN2)
34556 if (value * (c = Math.pow(
2, -e)) <
1) {
34560 if (e + eBias
>=
1) {
34563 value += rt * Math.pow(
2,
1 - eBias)
34565 if (value * c
>=
2) {
34570 if (e + eBias
>= eMax) {
34573 } else if (e + eBias
>=
1) {
34574 m = (value * c -
1) * Math.pow(
2, mLen)
34577 m = value * Math.pow(
2, eBias -
1) * Math.pow(
2, mLen)
34582 for (; mLen
>=
8; buffer[offset + i] = m &
0xff, i += d, m /=
256, mLen -=
8) {}
34584 e = (e << mLen) | m
34586 for (; eLen
> 0; buffer[offset + i] = e &
0xff, i += d, e /=
256, eLen -=
8) {}
34588 buffer[offset + i - d] |= s *
128
34591 },{}],
9:[function(require,module,exports){
34592 if (typeof Object.create === 'function') {
34593 // implementation from standard node.js 'util' module
34594 module.exports = function inherits(ctor, superCtor) {
34595 ctor.super_ = superCtor
34596 ctor.prototype = Object.create(superCtor.prototype, {
34606 // old school shim for old browsers
34607 module.exports = function inherits(ctor, superCtor) {
34608 ctor.super_ = superCtor
34609 var TempCtor = function () {}
34610 TempCtor.prototype = superCtor.prototype
34611 ctor.prototype = new TempCtor()
34612 ctor.prototype.constructor = ctor
34616 },{}],
10:[function(require,module,exports){
34618 * Determine if an object is a Buffer
34620 * @author Feross Aboukhadijeh
<feross@feross.org
> <http://feross.org
>
34624 // The _isBuffer check is for Safari
5-
7 support, because it's missing
34625 // Object.prototype.constructor. Remove this eventually
34626 module.exports = function (obj) {
34627 return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
34630 function isBuffer (obj) {
34631 return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
34634 // For Node v0.10 support. Remove this eventually.
34635 function isSlowBuffer (obj) {
34636 return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(
0,
0))
34639 },{}],
11:[function(require,module,exports){
34640 var toString = {}.toString;
34642 module.exports = Array.isArray || function (arr) {
34643 return toString.call(arr) == '[object Array]';
34646 },{}],
12:[function(require,module,exports){
34647 (function (process){
34650 if (!process.version ||
34651 process.version.indexOf('v0.') ===
0 ||
34652 process.version.indexOf('v1.') ===
0 && process.version.indexOf('v1.8.') !==
0) {
34653 module.exports = nextTick;
34655 module.exports = process.nextTick;
34658 function nextTick(fn, arg1, arg2, arg3) {
34659 if (typeof fn !== 'function') {
34660 throw new TypeError('"callback" argument must be a function');
34662 var len = arguments.length;
34667 return process.nextTick(fn);
34669 return process.nextTick(function afterTickOne() {
34670 fn.call(null, arg1);
34673 return process.nextTick(function afterTickTwo() {
34674 fn.call(null, arg1, arg2);
34677 return process.nextTick(function afterTickThree() {
34678 fn.call(null, arg1, arg2, arg3);
34681 args = new Array(len -
1);
34683 while (i < args.length) {
34684 args[i++] = arguments[i];
34686 return process.nextTick(function afterTick() {
34687 fn.apply(null, args);
34692 }).call(this,require('_process'))
34693 },{"_process":
13}],
13:[function(require,module,exports){
34694 // shim for using process in browser
34695 var process = module.exports = {};
34697 // cached from whatever global is present so that test runners that stub it
34698 // don't break things. But we need to wrap it in a try catch in case it is
34699 // wrapped in strict mode code which doesn't define any globals. It's inside a
34700 // function because try/catches deoptimize in certain engines.
34702 var cachedSetTimeout;
34703 var cachedClearTimeout;
34705 function defaultSetTimout() {
34706 throw new Error('setTimeout has not been defined');
34708 function defaultClearTimeout () {
34709 throw new Error('clearTimeout has not been defined');
34713 if (typeof setTimeout === 'function') {
34714 cachedSetTimeout = setTimeout;
34716 cachedSetTimeout = defaultSetTimout;
34719 cachedSetTimeout = defaultSetTimout;
34722 if (typeof clearTimeout === 'function') {
34723 cachedClearTimeout = clearTimeout;
34725 cachedClearTimeout = defaultClearTimeout;
34728 cachedClearTimeout = defaultClearTimeout;
34731 function runTimeout(fun) {
34732 if (cachedSetTimeout === setTimeout) {
34733 //normal enviroments in sane situations
34734 return setTimeout(fun,
0);
34736 // if setTimeout wasn't available but was latter defined
34737 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
34738 cachedSetTimeout = setTimeout;
34739 return setTimeout(fun,
0);
34742 // when when somebody has screwed with setTimeout but no I.E. maddness
34743 return cachedSetTimeout(fun,
0);
34746 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
34747 return cachedSetTimeout.call(null, fun,
0);
34749 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
34750 return cachedSetTimeout.call(this, fun,
0);
34756 function runClearTimeout(marker) {
34757 if (cachedClearTimeout === clearTimeout) {
34758 //normal enviroments in sane situations
34759 return clearTimeout(marker);
34761 // if clearTimeout wasn't available but was latter defined
34762 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
34763 cachedClearTimeout = clearTimeout;
34764 return clearTimeout(marker);
34767 // when when somebody has screwed with setTimeout but no I.E. maddness
34768 return cachedClearTimeout(marker);
34771 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
34772 return cachedClearTimeout.call(null, marker);
34774 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
34775 // Some versions of I.E. have different rules for clearTimeout vs setTimeout
34776 return cachedClearTimeout.call(this, marker);
34784 var draining = false;
34786 var queueIndex = -
1;
34788 function cleanUpNextTick() {
34789 if (!draining || !currentQueue) {
34793 if (currentQueue.length) {
34794 queue = currentQueue.concat(queue);
34798 if (queue.length) {
34803 function drainQueue() {
34807 var timeout = runTimeout(cleanUpNextTick);
34810 var len = queue.length;
34812 currentQueue = queue;
34814 while (++queueIndex < len) {
34815 if (currentQueue) {
34816 currentQueue[queueIndex].run();
34820 len = queue.length;
34822 currentQueue = null;
34824 runClearTimeout(timeout);
34827 process.nextTick = function (fun) {
34828 var args = new Array(arguments.length -
1);
34829 if (arguments.length
> 1) {
34830 for (var i =
1; i < arguments.length; i++) {
34831 args[i -
1] = arguments[i];
34834 queue.push(new Item(fun, args));
34835 if (queue.length ===
1 && !draining) {
34836 runTimeout(drainQueue);
34840 // v8 likes predictible objects
34841 function Item(fun, array) {
34843 this.array = array;
34845 Item.prototype.run = function () {
34846 this.fun.apply(null, this.array);
34848 process.title = 'browser';
34849 process.browser = true;
34852 process.version = ''; // empty string to avoid regexp issues
34853 process.versions = {};
34858 process.addListener = noop;
34859 process.once = noop;
34860 process.off = noop;
34861 process.removeListener = noop;
34862 process.removeAllListeners = noop;
34863 process.emit = noop;
34865 process.binding = function (name) {
34866 throw new Error('process.binding is not supported');
34869 process.cwd = function () { return '/' };
34870 process.chdir = function (dir) {
34871 throw new Error('process.chdir is not supported');
34873 process.umask = function() { return
0; };
34875 },{}],
14:[function(require,module,exports){
34876 module.exports = require(
"./lib/_stream_duplex.js")
34878 },{
"./lib/_stream_duplex.js":
15}],
15:[function(require,module,exports){
34879 // a duplex stream is just a stream that is both readable and writable.
34880 // Since JS doesn't have multiple prototypal inheritance, this class
34881 // prototypally inherits from Readable, and then parasitically from
34888 var objectKeys = Object.keys || function (obj) {
34890 for (var key in obj) {
34896 module.exports = Duplex;
34899 var processNextTick = require('process-nextick-args');
34903 var util = require('core-util-is');
34904 util.inherits = require('inherits');
34907 var Readable = require('./_stream_readable');
34908 var Writable = require('./_stream_writable');
34910 util.inherits(Duplex, Readable);
34912 var keys = objectKeys(Writable.prototype);
34913 for (var v =
0; v < keys.length; v++) {
34914 var method = keys[v];
34915 if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
34918 function Duplex(options) {
34919 if (!(this instanceof Duplex)) return new Duplex(options);
34921 Readable.call(this, options);
34922 Writable.call(this, options);
34924 if (options && options.readable === false) this.readable = false;
34926 if (options && options.writable === false) this.writable = false;
34928 this.allowHalfOpen = true;
34929 if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
34931 this.once('end', onend);
34934 // the no-half-open enforcer
34936 // if we allow half-open state, or if the writable side ended,
34938 if (this.allowHalfOpen || this._writableState.ended) return;
34940 // no more data can be written.
34941 // But allow more writes to happen in this tick.
34942 processNextTick(onEndNT, this);
34945 function onEndNT(self) {
34949 function forEach(xs, f) {
34950 for (var i =
0, l = xs.length; i < l; i++) {
34954 },{"./_stream_readable":
17,"./_stream_writable":
19,"core-util-is":
6,"inherits":
9,"process-nextick-args":
12}],
16:[function(require,module,exports){
34955 // a passthrough stream.
34956 // basically just the most minimal sort of Transform stream.
34957 // Every written chunk gets output as-is.
34961 module.exports = PassThrough;
34963 var Transform = require('./_stream_transform');
34966 var util = require('core-util-is');
34967 util.inherits = require('inherits');
34970 util.inherits(PassThrough, Transform);
34972 function PassThrough(options) {
34973 if (!(this instanceof PassThrough)) return new PassThrough(options);
34975 Transform.call(this, options);
34978 PassThrough.prototype._transform = function (chunk, encoding, cb) {
34981 },{"./_stream_transform":
18,"core-util-is":
6,"inherits":
9}],
17:[function(require,module,exports){
34982 (function (process){
34985 module.exports = Readable;
34988 var processNextTick = require('process-nextick-args');
34992 var isArray = require('isarray');
34999 Readable.ReadableState = ReadableState;
35002 var EE = require('events').EventEmitter;
35004 var EElistenerCount = function (emitter, type) {
35005 return emitter.listeners(type).length;
35013 Stream = require('st' + 'ream');
35014 } catch (_) {} finally {
35015 if (!Stream) Stream = require('events').EventEmitter;
35020 var Buffer = require('buffer').Buffer;
35022 var bufferShim = require('buffer-shims');
35026 var util = require('core-util-is');
35027 util.inherits = require('inherits');
35031 var debugUtil = require('util');
35032 var debug = void
0;
35033 if (debugUtil && debugUtil.debuglog) {
35034 debug = debugUtil.debuglog('stream');
35036 debug = function () {};
35040 var BufferList = require('./internal/streams/BufferList');
35043 util.inherits(Readable, Stream);
35045 function prependListener(emitter, event, fn) {
35046 // Sadly this is not cacheable as some libraries bundle their own
35047 // event emitter implementation with them.
35048 if (typeof emitter.prependListener === 'function') {
35049 return emitter.prependListener(event, fn);
35051 // This is a hack to make sure that our error handler is attached before any
35052 // userland ones. NEVER DO THIS. This is here only because this code needs
35053 // to continue to work with older versions of Node.js that do not include
35054 // the prependListener() method. The goal is to eventually remove this hack.
35055 if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];
35059 function ReadableState(options, stream) {
35060 Duplex = Duplex || require('./_stream_duplex');
35062 options = options || {};
35064 // object stream flag. Used to make read(n) ignore n and to
35065 // make all the buffer merging and length checks go away
35066 this.objectMode = !!options.objectMode;
35068 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
35070 // the point at which it stops calling _read() to fill the buffer
35071 // Note:
0 is a valid value, means "don't call _read preemptively ever"
35072 var hwm = options.highWaterMark;
35073 var defaultHwm = this.objectMode ?
16 :
16 *
1024;
35074 this.highWaterMark = hwm || hwm ===
0 ? hwm : defaultHwm;
35077 this.highWaterMark = ~ ~this.highWaterMark;
35079 // A linked list is used to store data chunks instead of an array because the
35080 // linked list can remove elements from the beginning faster than
35082 this.buffer = new BufferList();
35085 this.pipesCount =
0;
35086 this.flowing = null;
35087 this.ended = false;
35088 this.endEmitted = false;
35089 this.reading = false;
35091 // a flag to be able to tell if the onwrite cb is called immediately,
35092 // or on a later tick. We set this to true at first, because any
35093 // actions that shouldn't happen until "later" should generally also
35094 // not happen before the first write call.
35097 // whenever we return null, then we set a flag to say
35098 // that we're awaiting a 'readable' event emission.
35099 this.needReadable = false;
35100 this.emittedReadable = false;
35101 this.readableListening = false;
35102 this.resumeScheduled = false;
35104 // Crypto is kind of old and crusty. Historically, its default string
35105 // encoding is 'binary' so we have to make this configurable.
35106 // Everything else in the universe uses 'utf8', though.
35107 this.defaultEncoding = options.defaultEncoding || 'utf8';
35109 // when piping, we only care about 'readable' events that happen
35110 // after read()ing all the bytes and not getting any pushback.
35111 this.ranOut = false;
35113 // the number of writers that are awaiting a drain event in .pipe()s
35114 this.awaitDrain =
0;
35116 // if true, a maybeReadMore has been scheduled
35117 this.readingMore = false;
35119 this.decoder = null;
35120 this.encoding = null;
35121 if (options.encoding) {
35122 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
35123 this.decoder = new StringDecoder(options.encoding);
35124 this.encoding = options.encoding;
35128 function Readable(options) {
35129 Duplex = Duplex || require('./_stream_duplex');
35131 if (!(this instanceof Readable)) return new Readable(options);
35133 this._readableState = new ReadableState(options, this);
35136 this.readable = true;
35138 if (options && typeof options.read === 'function') this._read = options.read;
35143 // Manually shove something into the read() buffer.
35144 // This returns true if the highWaterMark has not been hit yet,
35145 // similar to how Writable.write() returns true if you should
35146 // write() some more.
35147 Readable.prototype.push = function (chunk, encoding) {
35148 var state = this._readableState;
35150 if (!state.objectMode && typeof chunk === 'string') {
35151 encoding = encoding || state.defaultEncoding;
35152 if (encoding !== state.encoding) {
35153 chunk = bufferShim.from(chunk, encoding);
35158 return readableAddChunk(this, state, chunk, encoding, false);
35161 // Unshift should *always* be something directly out of read()
35162 Readable.prototype.unshift = function (chunk) {
35163 var state = this._readableState;
35164 return readableAddChunk(this, state, chunk, '', true);
35167 Readable.prototype.isPaused = function () {
35168 return this._readableState.flowing === false;
35171 function readableAddChunk(stream, state, chunk, encoding, addToFront) {
35172 var er = chunkInvalid(state, chunk);
35174 stream.emit('error', er);
35175 } else if (chunk === null) {
35176 state.reading = false;
35177 onEofChunk(stream, state);
35178 } else if (state.objectMode || chunk && chunk.length
> 0) {
35179 if (state.ended && !addToFront) {
35180 var e = new Error('stream.push() after EOF');
35181 stream.emit('error', e);
35182 } else if (state.endEmitted && addToFront) {
35183 var _e = new Error('stream.unshift() after end event');
35184 stream.emit('error', _e);
35187 if (state.decoder && !addToFront && !encoding) {
35188 chunk = state.decoder.write(chunk);
35189 skipAdd = !state.objectMode && chunk.length ===
0;
35192 if (!addToFront) state.reading = false;
35194 // Don't add to the buffer if we've decoded to an empty string chunk and
35195 // we're not in object mode
35197 // if we want the data now, just emit it.
35198 if (state.flowing && state.length ===
0 && !state.sync) {
35199 stream.emit('data', chunk);
35202 // update the buffer info.
35203 state.length += state.objectMode ?
1 : chunk.length;
35204 if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
35206 if (state.needReadable) emitReadable(stream);
35210 maybeReadMore(stream, state);
35212 } else if (!addToFront) {
35213 state.reading = false;
35216 return needMoreData(state);
35219 // if it's past the high water mark, we can push in some more.
35220 // Also, if we have no data yet, we can stand some
35221 // more bytes. This is to work around cases where hwm=
0,
35222 // such as the repl. Also, if the push() triggered a
35223 // readable event, and the user called read(largeNumber) such that
35224 // needReadable was set, then we ought to push more, so that another
35225 // 'readable' event will be triggered.
35226 function needMoreData(state) {
35227 return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length ===
0);
35230 // backwards compatibility.
35231 Readable.prototype.setEncoding = function (enc) {
35232 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
35233 this._readableState.decoder = new StringDecoder(enc);
35234 this._readableState.encoding = enc;
35238 // Don't raise the hwm
> 8MB
35239 var MAX_HWM =
0x800000;
35240 function computeNewHighWaterMark(n) {
35241 if (n
>= MAX_HWM) {
35244 // Get the next highest power of
2 to prevent increasing hwm excessively in
35257 // This function is designed to be inlinable, so please take care when making
35258 // changes to the function body.
35259 function howMuchToRead(n, state) {
35260 if (n <=
0 || state.length ===
0 && state.ended) return
0;
35261 if (state.objectMode) return
1;
35263 // Only flow one buffer at a time
35264 if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
35266 // If we're asking for more than the current hwm, then raise the hwm.
35267 if (n
> state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
35268 if (n <= state.length) return n;
35269 // Don't have enough
35270 if (!state.ended) {
35271 state.needReadable = true;
35274 return state.length;
35277 // you can override either this method, or the async _read(n) below.
35278 Readable.prototype.read = function (n) {
35280 n = parseInt(n,
10);
35281 var state = this._readableState;
35284 if (n !==
0) state.emittedReadable = false;
35286 // if we're doing read(
0) to trigger a readable event, but we
35287 // already have a bunch of data in the buffer, then just trigger
35288 // the 'readable' event and move on.
35289 if (n ===
0 && state.needReadable && (state.length
>= state.highWaterMark || state.ended)) {
35290 debug('read: emitReadable', state.length, state.ended);
35291 if (state.length ===
0 && state.ended) endReadable(this);else emitReadable(this);
35295 n = howMuchToRead(n, state);
35297 // if we've ended, and we're now clear, then finish it up.
35298 if (n ===
0 && state.ended) {
35299 if (state.length ===
0) endReadable(this);
35303 // All the actual chunk generation logic needs to be
35304 // *below* the call to _read. The reason is that in certain
35305 // synthetic stream cases, such as passthrough streams, _read
35306 // may be a completely synchronous operation which may change
35307 // the state of the read buffer, providing enough data when
35308 // before there was *not* enough.
35310 // So, the steps are:
35311 //
1. Figure out what the state of things will be after we do
35312 // a read from the buffer.
35314 //
2. If that resulting state will trigger a _read, then call _read.
35315 // Note that this may be asynchronous, or synchronous. Yes, it is
35316 // deeply ugly to write APIs this way, but that still doesn't mean
35317 // that the Readable class should behave improperly, as streams are
35318 // designed to be sync/async agnostic.
35319 // Take note if the _read call is sync or async (ie, if the read call
35320 // has returned yet), so that we know whether or not it's safe to emit
35323 //
3. Actually pull the requested chunks out of the buffer and return.
35325 // if we need a readable event, then we need to do some reading.
35326 var doRead = state.needReadable;
35327 debug('need readable', doRead);
35329 // if we currently have less than the highWaterMark, then also read some
35330 if (state.length ===
0 || state.length - n < state.highWaterMark) {
35332 debug('length less than watermark', doRead);
35335 // however, if we've ended, then there's no point, and if we're already
35336 // reading, then it's unnecessary.
35337 if (state.ended || state.reading) {
35339 debug('reading or ended', doRead);
35340 } else if (doRead) {
35342 state.reading = true;
35344 // if the length is currently zero, then we *need* a readable event.
35345 if (state.length ===
0) state.needReadable = true;
35346 // call internal read method
35347 this._read(state.highWaterMark);
35348 state.sync = false;
35349 // If _read pushed data synchronously, then `reading` will be false,
35350 // and we need to re-evaluate how much data we can return to the user.
35351 if (!state.reading) n = howMuchToRead(nOrig, state);
35355 if (n
> 0) ret = fromList(n, state);else ret = null;
35357 if (ret === null) {
35358 state.needReadable = true;
35364 if (state.length ===
0) {
35365 // If we have nothing in the buffer, then we want to know
35366 // as soon as we *do* get something into the buffer.
35367 if (!state.ended) state.needReadable = true;
35369 // If we tried to read() past the EOF, then emit end on the next tick.
35370 if (nOrig !== n && state.ended) endReadable(this);
35373 if (ret !== null) this.emit('data', ret);
35378 function chunkInvalid(state, chunk) {
35380 if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {
35381 er = new TypeError('Invalid non-string/buffer chunk');
35386 function onEofChunk(stream, state) {
35387 if (state.ended) return;
35388 if (state.decoder) {
35389 var chunk = state.decoder.end();
35390 if (chunk && chunk.length) {
35391 state.buffer.push(chunk);
35392 state.length += state.objectMode ?
1 : chunk.length;
35395 state.ended = true;
35397 // emit 'readable' now to make sure it gets picked up.
35398 emitReadable(stream);
35401 // Don't emit readable right away in sync mode, because this can trigger
35402 // another read() call =
> stack overflow. This way, it might trigger
35403 // a nextTick recursion warning, but that's not so bad.
35404 function emitReadable(stream) {
35405 var state = stream._readableState;
35406 state.needReadable = false;
35407 if (!state.emittedReadable) {
35408 debug('emitReadable', state.flowing);
35409 state.emittedReadable = true;
35410 if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
35414 function emitReadable_(stream) {
35415 debug('emit readable');
35416 stream.emit('readable');
35420 // at this point, the user has presumably seen the 'readable' event,
35421 // and called read() to consume some data. that may have triggered
35422 // in turn another _read(n) call, in which case reading = true if
35423 // it's in progress.
35424 // However, if we're not ended, or reading, and the length < hwm,
35425 // then go ahead and try to read some more preemptively.
35426 function maybeReadMore(stream, state) {
35427 if (!state.readingMore) {
35428 state.readingMore = true;
35429 processNextTick(maybeReadMore_, stream, state);
35433 function maybeReadMore_(stream, state) {
35434 var len = state.length;
35435 while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
35436 debug('maybeReadMore read
0');
35438 if (len === state.length)
35439 // didn't get any data, stop spinning.
35440 break;else len = state.length;
35442 state.readingMore = false;
35445 // abstract method. to be overridden in specific implementation classes.
35446 // call cb(er, data) where data is <= n in length.
35447 // for virtual (non-string, non-buffer) streams, "length" is somewhat
35448 // arbitrary, and perhaps not very meaningful.
35449 Readable.prototype._read = function (n) {
35450 this.emit('error', new Error('_read() is not implemented'));
35453 Readable.prototype.pipe = function (dest, pipeOpts) {
35455 var state = this._readableState;
35457 switch (state.pipesCount) {
35459 state.pipes = dest;
35462 state.pipes = [state.pipes, dest];
35465 state.pipes.push(dest);
35468 state.pipesCount +=
1;
35469 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
35471 var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
35473 var endFn = doEnd ? onend : cleanup;
35474 if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
35476 dest.on('unpipe', onunpipe);
35477 function onunpipe(readable) {
35479 if (readable === src) {
35489 // when the dest drains, it reduces the awaitDrain counter
35490 // on the source. This would be more elegant with a .once()
35491 // handler in flow(), but adding and removing repeatedly is
35493 var ondrain = pipeOnDrain(src);
35494 dest.on('drain', ondrain);
35496 var cleanedUp = false;
35497 function cleanup() {
35499 // cleanup event handlers once the pipe is broken
35500 dest.removeListener('close', onclose);
35501 dest.removeListener('finish', onfinish);
35502 dest.removeListener('drain', ondrain);
35503 dest.removeListener('error', onerror);
35504 dest.removeListener('unpipe', onunpipe);
35505 src.removeListener('end', onend);
35506 src.removeListener('end', cleanup);
35507 src.removeListener('data', ondata);
35511 // if the reader is waiting for a drain event from this
35512 // specific writer, then it would cause it to never start
35514 // So, if this is awaiting a drain, then we just call it now.
35515 // If we don't know, then assume that we are waiting for one.
35516 if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
35519 // If the user pushes more data while we're writing to dest then we'll end up
35520 // in ondata again. However, we only want to increase awaitDrain once because
35521 // dest will only emit one 'drain' event for the multiple writes.
35522 // =
> Introduce a guard on increasing awaitDrain.
35523 var increasedAwaitDrain = false;
35524 src.on('data', ondata);
35525 function ondata(chunk) {
35527 increasedAwaitDrain = false;
35528 var ret = dest.write(chunk);
35529 if (false === ret && !increasedAwaitDrain) {
35530 // If the user unpiped during `dest.write()`, it is possible
35531 // to get stuck in a permanently paused state if that write
35532 // also returned false.
35533 // =
> Check whether `dest` is still a piping destination.
35534 if ((state.pipesCount ===
1 && state.pipes === dest || state.pipesCount
> 1 && indexOf(state.pipes, dest) !== -
1) && !cleanedUp) {
35535 debug('false write response, pause', src._readableState.awaitDrain);
35536 src._readableState.awaitDrain++;
35537 increasedAwaitDrain = true;
35543 // if the dest has an error, then stop piping into it.
35544 // however, don't suppress the throwing behavior for this.
35545 function onerror(er) {
35546 debug('onerror', er);
35548 dest.removeListener('error', onerror);
35549 if (EElistenerCount(dest, 'error') ===
0) dest.emit('error', er);
35552 // Make sure our error handler is attached before userland ones.
35553 prependListener(dest, 'error', onerror);
35555 // Both close and finish should trigger unpipe, but only once.
35556 function onclose() {
35557 dest.removeListener('finish', onfinish);
35560 dest.once('close', onclose);
35561 function onfinish() {
35563 dest.removeListener('close', onclose);
35566 dest.once('finish', onfinish);
35568 function unpipe() {
35573 // tell the dest that it's being piped to
35574 dest.emit('pipe', src);
35576 // start the flow if it hasn't been started already.
35577 if (!state.flowing) {
35578 debug('pipe resume');
35585 function pipeOnDrain(src) {
35586 return function () {
35587 var state = src._readableState;
35588 debug('pipeOnDrain', state.awaitDrain);
35589 if (state.awaitDrain) state.awaitDrain--;
35590 if (state.awaitDrain ===
0 && EElistenerCount(src, 'data')) {
35591 state.flowing = true;
35597 Readable.prototype.unpipe = function (dest) {
35598 var state = this._readableState;
35600 // if we're not piping anywhere, then do nothing.
35601 if (state.pipesCount ===
0) return this;
35603 // just one destination. most common case.
35604 if (state.pipesCount ===
1) {
35605 // passed in one, but it's not the right one.
35606 if (dest && dest !== state.pipes) return this;
35608 if (!dest) dest = state.pipes;
35611 state.pipes = null;
35612 state.pipesCount =
0;
35613 state.flowing = false;
35614 if (dest) dest.emit('unpipe', this);
35618 // slow case. multiple pipe destinations.
35622 var dests = state.pipes;
35623 var len = state.pipesCount;
35624 state.pipes = null;
35625 state.pipesCount =
0;
35626 state.flowing = false;
35628 for (var i =
0; i < len; i++) {
35629 dests[i].emit('unpipe', this);
35633 // try to find the right one.
35634 var index = indexOf(state.pipes, dest);
35635 if (index === -
1) return this;
35637 state.pipes.splice(index,
1);
35638 state.pipesCount -=
1;
35639 if (state.pipesCount ===
1) state.pipes = state.pipes[
0];
35641 dest.emit('unpipe', this);
35646 // set up data events if they are asked for
35647 // Ensure readable listeners eventually get something
35648 Readable.prototype.on = function (ev, fn) {
35649 var res = Stream.prototype.on.call(this, ev, fn);
35651 if (ev === 'data') {
35652 // Start flowing on next tick if stream isn't explicitly paused
35653 if (this._readableState.flowing !== false) this.resume();
35654 } else if (ev === 'readable') {
35655 var state = this._readableState;
35656 if (!state.endEmitted && !state.readableListening) {
35657 state.readableListening = state.needReadable = true;
35658 state.emittedReadable = false;
35659 if (!state.reading) {
35660 processNextTick(nReadingNextTick, this);
35661 } else if (state.length) {
35662 emitReadable(this, state);
35669 Readable.prototype.addListener = Readable.prototype.on;
35671 function nReadingNextTick(self) {
35672 debug('readable nexttick read
0');
35676 // pause() and resume() are remnants of the legacy readable stream API
35677 // If the user uses them, then switch into old mode.
35678 Readable.prototype.resume = function () {
35679 var state = this._readableState;
35680 if (!state.flowing) {
35682 state.flowing = true;
35683 resume(this, state);
35688 function resume(stream, state) {
35689 if (!state.resumeScheduled) {
35690 state.resumeScheduled = true;
35691 processNextTick(resume_, stream, state);
35695 function resume_(stream, state) {
35696 if (!state.reading) {
35697 debug('resume read
0');
35701 state.resumeScheduled = false;
35702 state.awaitDrain =
0;
35703 stream.emit('resume');
35705 if (state.flowing && !state.reading) stream.read(
0);
35708 Readable.prototype.pause = function () {
35709 debug('call pause flowing=%j', this._readableState.flowing);
35710 if (false !== this._readableState.flowing) {
35712 this._readableState.flowing = false;
35713 this.emit('pause');
35718 function flow(stream) {
35719 var state = stream._readableState;
35720 debug('flow', state.flowing);
35721 while (state.flowing && stream.read() !== null) {}
35724 // wrap an old-style stream as the async data source.
35725 // This is *not* part of the readable stream interface.
35726 // It is an ugly unfortunate mess of history.
35727 Readable.prototype.wrap = function (stream) {
35728 var state = this._readableState;
35729 var paused = false;
35732 stream.on('end', function () {
35733 debug('wrapped end');
35734 if (state.decoder && !state.ended) {
35735 var chunk = state.decoder.end();
35736 if (chunk && chunk.length) self.push(chunk);
35742 stream.on('data', function (chunk) {
35743 debug('wrapped data');
35744 if (state.decoder) chunk = state.decoder.write(chunk);
35746 // don't skip over falsy values in objectMode
35747 if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
35749 var ret = self.push(chunk);
35756 // proxy all the other methods.
35757 // important when wrapping filters and duplexes.
35758 for (var i in stream) {
35759 if (this[i] === undefined && typeof stream[i] === 'function') {
35760 this[i] = function (method) {
35761 return function () {
35762 return stream[method].apply(stream, arguments);
35768 // proxy certain important events.
35769 var events = ['error', 'close', 'destroy', 'pause', 'resume'];
35770 forEach(events, function (ev) {
35771 stream.on(ev, self.emit.bind(self, ev));
35774 // when we try to consume some more bytes, simply unpause the
35775 // underlying stream.
35776 self._read = function (n) {
35777 debug('wrapped _read', n);
35787 // exposed for testing purposes only.
35788 Readable._fromList = fromList;
35790 // Pluck off n bytes from an array of buffers.
35791 // Length is the combined lengths of all the buffers in the list.
35792 // This function is designed to be inlinable, so please take care when making
35793 // changes to the function body.
35794 function fromList(n, state) {
35795 // nothing buffered
35796 if (state.length ===
0) return null;
35799 if (state.objectMode) ret = state.buffer.shift();else if (!n || n
>= state.length) {
35800 // read it all, truncate the list
35801 if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length ===
1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);
35802 state.buffer.clear();
35804 // read part of list
35805 ret = fromListPartial(n, state.buffer, state.decoder);
35811 // Extracts only enough buffered data to satisfy the amount requested.
35812 // This function is designed to be inlinable, so please take care when making
35813 // changes to the function body.
35814 function fromListPartial(n, list, hasStrings) {
35816 if (n < list.head.data.length) {
35817 // slice is the same for buffers and strings
35818 ret = list.head.data.slice(
0, n);
35819 list.head.data = list.head.data.slice(n);
35820 } else if (n === list.head.data.length) {
35821 // first chunk is a perfect match
35822 ret = list.shift();
35824 // result spans more than one buffer
35825 ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
35830 // Copies a specified amount of characters from the list of buffered data
35832 // This function is designed to be inlinable, so please take care when making
35833 // changes to the function body.
35834 function copyFromBufferString(n, list) {
35839 while (p = p.next) {
35841 var nb = n
> str.length ? str.length : n;
35842 if (nb === str.length) ret += str;else ret += str.slice(
0, n);
35845 if (nb === str.length) {
35847 if (p.next) list.head = p.next;else list.head = list.tail = null;
35850 p.data = str.slice(nb);
35860 // Copies a specified amount of bytes from the list of buffered data chunks.
35861 // This function is designed to be inlinable, so please take care when making
35862 // changes to the function body.
35863 function copyFromBuffer(n, list) {
35864 var ret = bufferShim.allocUnsafe(n);
35868 n -= p.data.length;
35869 while (p = p.next) {
35871 var nb = n
> buf.length ? buf.length : n;
35872 buf.copy(ret, ret.length - n,
0, nb);
35875 if (nb === buf.length) {
35877 if (p.next) list.head = p.next;else list.head = list.tail = null;
35880 p.data = buf.slice(nb);
35890 function endReadable(stream) {
35891 var state = stream._readableState;
35893 // If we get here before consuming all the bytes, then that is a
35894 // bug in node. Should never happen.
35895 if (state.length
> 0) throw new Error('
"endReadable()" called on non-empty stream');
35897 if (!state.endEmitted) {
35898 state.ended = true;
35899 processNextTick(endReadableNT, state, stream);
35903 function endReadableNT(state, stream) {
35904 // Check that we didn't get one last unshift.
35905 if (!state.endEmitted && state.length ===
0) {
35906 state.endEmitted = true;
35907 stream.readable = false;
35908 stream.emit('end');
35912 function forEach(xs, f) {
35913 for (var i =
0, l = xs.length; i < l; i++) {
35918 function indexOf(xs, x) {
35919 for (var i =
0, l = xs.length; i < l; i++) {
35920 if (xs[i] === x) return i;
35924 }).call(this,require('_process'))
35925 },{
"./_stream_duplex":
15,
"./internal/streams/BufferList":
20,
"_process":
13,
"buffer":
5,
"buffer-shims":
4,
"core-util-is":
6,
"events":
7,
"inherits":
9,
"isarray":
11,
"process-nextick-args":
12,
"string_decoder/":
26,
"util":
3}],
18:[function(require,module,exports){
35926 // a transform stream is a readable/writable stream where you do
35927 // something with the data. Sometimes it's called a
"filter",
35928 // but that's not a great name for it, since that implies a thing where
35929 // some bits pass through, and others are simply ignored. (That would
35930 // be a valid example of a transform, of course.)
35932 // While the output is causally related to the input, it's not a
35933 // necessarily symmetric or synchronous transformation. For example,
35934 // a zlib stream might take multiple plain-text writes(), and then
35935 // emit a single compressed chunk some time in the future.
35937 // Here's how this works:
35939 // The Transform stream has all the aspects of the readable and writable
35940 // stream classes. When you write(chunk), that calls _write(chunk,cb)
35941 // internally, and returns false if there's a lot of pending writes
35942 // buffered up. When you call read(), that calls _read(n) until
35943 // there's enough pending readable data buffered up.
35945 // In a transform stream, the written data is placed in a buffer. When
35946 // _read(n) is called, it transforms the queued up data, calling the
35947 // buffered _write cb's as it consumes chunks. If consuming a single
35948 // written chunk would result in multiple output chunks, then the first
35949 // outputted bit calls the readcb, and subsequent chunks just go into
35950 // the read buffer, and will cause it to emit 'readable' if necessary.
35952 // This way, back-pressure is actually determined by the reading side,
35953 // since _read has to be called to start processing a new chunk. However,
35954 // a pathological inflate type of transform can cause excessive buffering
35955 // here. For example, imagine a stream where every byte of input is
35956 // interpreted as an integer from
0-
255, and then results in that many
35957 // bytes of output. Writing the
4 bytes {ff,ff,ff,ff} would result in
35958 //
1kb of data being output. In this case, you could write a very small
35959 // amount of input, and end up with a very large amount of output. In
35960 // such a pathological inflating mechanism, there'd be no way to tell
35961 // the system to stop doing the transform. A single
4MB write could
35962 // cause the system to run out of memory.
35964 // However, even in such a pathological case, only a single written chunk
35965 // would be consumed, and then the rest would wait (un-transformed) until
35966 // the results of the previous transformed chunk were consumed.
35970 module.exports = Transform;
35972 var Duplex = require('./_stream_duplex');
35975 var util = require('core-util-is');
35976 util.inherits = require('inherits');
35979 util.inherits(Transform, Duplex);
35981 function TransformState(stream) {
35982 this.afterTransform = function (er, data) {
35983 return afterTransform(stream, er, data);
35986 this.needTransform = false;
35987 this.transforming = false;
35988 this.writecb = null;
35989 this.writechunk = null;
35990 this.writeencoding = null;
35993 function afterTransform(stream, er, data) {
35994 var ts = stream._transformState;
35995 ts.transforming = false;
35997 var cb = ts.writecb;
35999 if (!cb) return stream.emit('error', new Error('no writecb in Transform class'));
36001 ts.writechunk = null;
36004 if (data !== null && data !== undefined) stream.push(data);
36008 var rs = stream._readableState;
36009 rs.reading = false;
36010 if (rs.needReadable || rs.length < rs.highWaterMark) {
36011 stream._read(rs.highWaterMark);
36015 function Transform(options) {
36016 if (!(this instanceof Transform)) return new Transform(options);
36018 Duplex.call(this, options);
36020 this._transformState = new TransformState(this);
36024 // start out asking for a readable event once data is transformed.
36025 this._readableState.needReadable = true;
36027 // we have implemented the _read method, and done the other things
36028 // that Readable wants before the first _read call, so unset the
36029 // sync guard flag.
36030 this._readableState.sync = false;
36033 if (typeof options.transform === 'function') this._transform = options.transform;
36035 if (typeof options.flush === 'function') this._flush = options.flush;
36038 // When the writable side finishes, then flush out anything remaining.
36039 this.once('prefinish', function () {
36040 if (typeof this._flush === 'function') this._flush(function (er, data) {
36041 done(stream, er, data);
36042 });else done(stream);
36046 Transform.prototype.push = function (chunk, encoding) {
36047 this._transformState.needTransform = false;
36048 return Duplex.prototype.push.call(this, chunk, encoding);
36051 // This is the part where you do stuff!
36052 // override this function in implementation classes.
36053 // 'chunk' is an input chunk.
36055 // Call `push(newChunk)` to pass along transformed output
36056 // to the readable side. You may call 'push' zero or more times.
36058 // Call `cb(err)` when you are done with this chunk. If you pass
36059 // an error, then that'll put the hurt on the whole operation. If you
36060 // never call cb(), then you'll never get another chunk.
36061 Transform.prototype._transform = function (chunk, encoding, cb) {
36062 throw new Error('_transform() is not implemented');
36065 Transform.prototype._write = function (chunk, encoding, cb) {
36066 var ts = this._transformState;
36068 ts.writechunk = chunk;
36069 ts.writeencoding = encoding;
36070 if (!ts.transforming) {
36071 var rs = this._readableState;
36072 if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
36076 // Doesn't matter what the args are here.
36077 // _transform does all the work.
36078 // That we got here means that the readable side wants more data.
36079 Transform.prototype._read = function (n) {
36080 var ts = this._transformState;
36082 if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
36083 ts.transforming = true;
36084 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
36086 // mark that we need a transform, so that any data that comes in
36087 // will get processed, now that we've asked for it.
36088 ts.needTransform = true;
36092 function done(stream, er, data) {
36093 if (er) return stream.emit('error', er);
36095 if (data !== null && data !== undefined) stream.push(data);
36097 // if there's nothing in the write buffer, then that means
36098 // that nothing more will ever be provided
36099 var ws = stream._writableState;
36100 var ts = stream._transformState;
36102 if (ws.length) throw new Error('Calling transform done when ws.length !=
0');
36104 if (ts.transforming) throw new Error('Calling transform done when still transforming');
36106 return stream.push(null);
36108 },{"./_stream_duplex":
15,"core-util-is":
6,"inherits":
9}],
19:[function(require,module,exports){
36109 (function (process){
36110 // A bit simpler than readable streams.
36111 // Implement an async ._write(chunk, encoding, cb), and it'll handle all
36112 // the drain event emission and buffering.
36116 module.exports = Writable;
36119 var processNextTick = require('process-nextick-args');
36123 var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(
0,
5))
> -
1 ? setImmediate : processNextTick;
36130 Writable.WritableState = WritableState;
36133 var util = require('core-util-is');
36134 util.inherits = require('inherits');
36138 var internalUtil = {
36139 deprecate: require('util-deprecate')
36147 Stream = require('st' + 'ream');
36148 } catch (_) {} finally {
36149 if (!Stream) Stream = require('events').EventEmitter;
36154 var Buffer = require('buffer').Buffer;
36156 var bufferShim = require('buffer-shims');
36159 util.inherits(Writable, Stream);
36163 function WriteReq(chunk, encoding, cb) {
36164 this.chunk = chunk;
36165 this.encoding = encoding;
36166 this.callback = cb;
36170 function WritableState(options, stream) {
36171 Duplex = Duplex || require('./_stream_duplex');
36173 options = options || {};
36175 // object stream flag to indicate whether or not this stream
36176 // contains buffers or objects.
36177 this.objectMode = !!options.objectMode;
36179 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
36181 // the point at which write() starts returning false
36182 // Note:
0 is a valid value, means that we always return false if
36183 // the entire buffer is not flushed immediately on write()
36184 var hwm = options.highWaterMark;
36185 var defaultHwm = this.objectMode ?
16 :
16 *
1024;
36186 this.highWaterMark = hwm || hwm ===
0 ? hwm : defaultHwm;
36189 this.highWaterMark = ~ ~this.highWaterMark;
36191 // drain event flag.
36192 this.needDrain = false;
36193 // at the start of calling end()
36194 this.ending = false;
36195 // when end() has been called, and returned
36196 this.ended = false;
36197 // when 'finish' is emitted
36198 this.finished = false;
36200 // should we decode strings into buffers before passing to _write?
36201 // this is here so that some node-core streams can optimize string
36202 // handling at a lower level.
36203 var noDecode = options.decodeStrings === false;
36204 this.decodeStrings = !noDecode;
36206 // Crypto is kind of old and crusty. Historically, its default string
36207 // encoding is 'binary' so we have to make this configurable.
36208 // Everything else in the universe uses 'utf8', though.
36209 this.defaultEncoding = options.defaultEncoding || 'utf8';
36211 // not an actual buffer we keep track of, but a measurement
36212 // of how much we're waiting to get pushed to some underlying
36216 // a flag to see when we're in the middle of a write.
36217 this.writing = false;
36219 // when true all writes will be buffered until .uncork() call
36222 // a flag to be able to tell if the onwrite cb is called immediately,
36223 // or on a later tick. We set this to true at first, because any
36224 // actions that shouldn't happen until "later" should generally also
36225 // not happen before the first write call.
36228 // a flag to know if we're processing previously buffered items, which
36229 // may call the _write() callback in the same tick, so that we don't
36230 // end up in an overlapped onwrite situation.
36231 this.bufferProcessing = false;
36233 // the callback that's passed to _write(chunk,cb)
36234 this.onwrite = function (er) {
36235 onwrite(stream, er);
36238 // the callback that the user supplies to write(chunk,encoding,cb)
36239 this.writecb = null;
36241 // the amount that is being written when _write is called.
36244 this.bufferedRequest = null;
36245 this.lastBufferedRequest = null;
36247 // number of pending user-supplied write callbacks
36248 // this must be
0 before 'finish' can be emitted
36249 this.pendingcb =
0;
36251 // emit prefinish if the only thing we're waiting for is _write cbs
36252 // This is relevant for synchronous Transform streams
36253 this.prefinished = false;
36255 // True if the error was already emitted and should not be thrown again
36256 this.errorEmitted = false;
36258 // count buffered requests
36259 this.bufferedRequestCount =
0;
36261 // allocate the first CorkedRequest, there is always
36262 // one allocated and free to use, and we maintain at most two
36263 this.corkedRequestsFree = new CorkedRequest(this);
36266 WritableState.prototype.getBuffer = function getBuffer() {
36267 var current = this.bufferedRequest;
36271 current = current.next;
36278 Object.defineProperty(WritableState.prototype, 'buffer', {
36279 get: internalUtil.deprecate(function () {
36280 return this.getBuffer();
36281 }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.')
36286 // Test _writableState for inheritance to account for Duplex streams,
36287 // whose prototype chain only points to Readable.
36288 var realHasInstance;
36289 if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
36290 realHasInstance = Function.prototype[Symbol.hasInstance];
36291 Object.defineProperty(Writable, Symbol.hasInstance, {
36292 value: function (object) {
36293 if (realHasInstance.call(this, object)) return true;
36295 return object && object._writableState instanceof WritableState;
36299 realHasInstance = function (object) {
36300 return object instanceof this;
36304 function Writable(options) {
36305 Duplex = Duplex || require('./_stream_duplex');
36307 // Writable ctor is applied to Duplexes, too.
36308 // `realHasInstance` is necessary because using plain `instanceof`
36309 // would return false, as no `_writableState` property is attached.
36311 // Trying to use the custom `instanceof` for Writable here will also break the
36312 // Node.js LazyTransform implementation, which has a non-trivial getter for
36313 // `_writableState` that would lead to infinite recursion.
36314 if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
36315 return new Writable(options);
36318 this._writableState = new WritableState(options, this);
36321 this.writable = true;
36324 if (typeof options.write === 'function') this._write = options.write;
36326 if (typeof options.writev === 'function') this._writev = options.writev;
36332 // Otherwise people can pipe Writable streams, which is just wrong.
36333 Writable.prototype.pipe = function () {
36334 this.emit('error', new Error('Cannot pipe, not readable'));
36337 function writeAfterEnd(stream, cb) {
36338 var er = new Error('write after end');
36339 // TODO: defer error events consistently everywhere, not just the cb
36340 stream.emit('error', er);
36341 processNextTick(cb, er);
36344 // If we get something that is not a buffer, string, null, or undefined,
36345 // and we're not in objectMode, then that's an error.
36346 // Otherwise stream chunks are all considered to be of length=
1, and the
36347 // watermarks determine how many objects to keep in the buffer, rather than
36348 // how many bytes or characters.
36349 function validChunk(stream, state, chunk, cb) {
36352 // Always throw error if a null is written
36353 // if we are not in object mode then throw
36354 // if it is not a buffer, string, or undefined.
36355 if (chunk === null) {
36356 er = new TypeError('May not write null values to stream');
36357 } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
36358 er = new TypeError('Invalid non-string/buffer chunk');
36361 stream.emit('error', er);
36362 processNextTick(cb, er);
36368 Writable.prototype.write = function (chunk, encoding, cb) {
36369 var state = this._writableState;
36372 if (typeof encoding === 'function') {
36377 if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
36379 if (typeof cb !== 'function') cb = nop;
36381 if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) {
36383 ret = writeOrBuffer(this, state, chunk, encoding, cb);
36389 Writable.prototype.cork = function () {
36390 var state = this._writableState;
36395 Writable.prototype.uncork = function () {
36396 var state = this._writableState;
36398 if (state.corked) {
36401 if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
36405 Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
36406 // node::ParseEncoding() requires lower case.
36407 if (typeof encoding === 'string') encoding = encoding.toLowerCase();
36408 if (!(['hex', 'utf8', 'utf-
8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-
2', 'utf16le', 'utf-
16le', 'raw'].indexOf((encoding + '').toLowerCase())
> -
1)) throw new TypeError('Unknown encoding: ' + encoding);
36409 this._writableState.defaultEncoding = encoding;
36413 function decodeChunk(state, chunk, encoding) {
36414 if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
36415 chunk = bufferShim.from(chunk, encoding);
36420 // if we're already writing something, then just put this
36421 // in the queue, and wait our turn. Otherwise, call _write
36422 // If we return false, then we need a drain event, so set that flag.
36423 function writeOrBuffer(stream, state, chunk, encoding, cb) {
36424 chunk = decodeChunk(state, chunk, encoding);
36426 if (Buffer.isBuffer(chunk)) encoding = 'buffer';
36427 var len = state.objectMode ?
1 : chunk.length;
36429 state.length += len;
36431 var ret = state.length < state.highWaterMark;
36432 // we must ensure that previous needDrain will not be reset to false.
36433 if (!ret) state.needDrain = true;
36435 if (state.writing || state.corked) {
36436 var last = state.lastBufferedRequest;
36437 state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);
36439 last.next = state.lastBufferedRequest;
36441 state.bufferedRequest = state.lastBufferedRequest;
36443 state.bufferedRequestCount +=
1;
36445 doWrite(stream, state, false, len, chunk, encoding, cb);
36451 function doWrite(stream, state, writev, len, chunk, encoding, cb) {
36452 state.writelen = len;
36453 state.writecb = cb;
36454 state.writing = true;
36456 if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
36457 state.sync = false;
36460 function onwriteError(stream, state, sync, er, cb) {
36462 if (sync) processNextTick(cb, er);else cb(er);
36464 stream._writableState.errorEmitted = true;
36465 stream.emit('error', er);
36468 function onwriteStateUpdate(state) {
36469 state.writing = false;
36470 state.writecb = null;
36471 state.length -= state.writelen;
36472 state.writelen =
0;
36475 function onwrite(stream, er) {
36476 var state = stream._writableState;
36477 var sync = state.sync;
36478 var cb = state.writecb;
36480 onwriteStateUpdate(state);
36482 if (er) onwriteError(stream, state, sync, er, cb);else {
36483 // Check if we're actually ready to finish, but don't emit yet
36484 var finished = needFinish(state);
36486 if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
36487 clearBuffer(stream, state);
36492 asyncWrite(afterWrite, stream, state, finished, cb);
36495 afterWrite(stream, state, finished, cb);
36500 function afterWrite(stream, state, finished, cb) {
36501 if (!finished) onwriteDrain(stream, state);
36504 finishMaybe(stream, state);
36507 // Must force callback to be called on nextTick, so that we don't
36508 // emit 'drain' before the write() consumer gets the 'false' return
36509 // value, and has a chance to attach a 'drain' listener.
36510 function onwriteDrain(stream, state) {
36511 if (state.length ===
0 && state.needDrain) {
36512 state.needDrain = false;
36513 stream.emit('drain');
36517 // if there's something in the buffer waiting, then process it
36518 function clearBuffer(stream, state) {
36519 state.bufferProcessing = true;
36520 var entry = state.bufferedRequest;
36522 if (stream._writev && entry && entry.next) {
36523 // Fast case, write everything using _writev()
36524 var l = state.bufferedRequestCount;
36525 var buffer = new Array(l);
36526 var holder = state.corkedRequestsFree;
36527 holder.entry = entry;
36531 buffer[count] = entry;
36532 entry = entry.next;
36536 doWrite(stream, state, true, state.length, buffer, '', holder.finish);
36538 // doWrite is almost always async, defer these to save a bit of time
36539 // as the hot path ends with doWrite
36541 state.lastBufferedRequest = null;
36543 state.corkedRequestsFree = holder.next;
36544 holder.next = null;
36546 state.corkedRequestsFree = new CorkedRequest(state);
36549 // Slow case, write chunks one-by-one
36551 var chunk = entry.chunk;
36552 var encoding = entry.encoding;
36553 var cb = entry.callback;
36554 var len = state.objectMode ?
1 : chunk.length;
36556 doWrite(stream, state, false, len, chunk, encoding, cb);
36557 entry = entry.next;
36558 // if we didn't call the onwrite immediately, then
36559 // it means that we need to wait until it does.
36560 // also, that means that the chunk and cb are currently
36561 // being processed, so move the buffer counter past them.
36562 if (state.writing) {
36567 if (entry === null) state.lastBufferedRequest = null;
36570 state.bufferedRequestCount =
0;
36571 state.bufferedRequest = entry;
36572 state.bufferProcessing = false;
36575 Writable.prototype._write = function (chunk, encoding, cb) {
36576 cb(new Error('_write() is not implemented'));
36579 Writable.prototype._writev = null;
36581 Writable.prototype.end = function (chunk, encoding, cb) {
36582 var state = this._writableState;
36584 if (typeof chunk === 'function') {
36588 } else if (typeof encoding === 'function') {
36593 if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
36595 // .end() fully uncorks
36596 if (state.corked) {
36601 // ignore unnecessary end() calls.
36602 if (!state.ending && !state.finished) endWritable(this, state, cb);
36605 function needFinish(state) {
36606 return state.ending && state.length ===
0 && state.bufferedRequest === null && !state.finished && !state.writing;
36609 function prefinish(stream, state) {
36610 if (!state.prefinished) {
36611 state.prefinished = true;
36612 stream.emit('prefinish');
36616 function finishMaybe(stream, state) {
36617 var need = needFinish(state);
36619 if (state.pendingcb ===
0) {
36620 prefinish(stream, state);
36621 state.finished = true;
36622 stream.emit('finish');
36624 prefinish(stream, state);
36630 function endWritable(stream, state, cb) {
36631 state.ending = true;
36632 finishMaybe(stream, state);
36634 if (state.finished) processNextTick(cb);else stream.once('finish', cb);
36636 state.ended = true;
36637 stream.writable = false;
36640 // It seems a linked list but it is not
36641 // there will be only
2 of these for each stream
36642 function CorkedRequest(state) {
36648 this.finish = function (err) {
36649 var entry = _this.entry;
36650 _this.entry = null;
36652 var cb = entry.callback;
36655 entry = entry.next;
36657 if (state.corkedRequestsFree) {
36658 state.corkedRequestsFree.next = _this;
36660 state.corkedRequestsFree = _this;
36664 }).call(this,require('_process'))
36665 },{"./_stream_duplex":
15,"_process":
13,"buffer":
5,"buffer-shims":
4,"core-util-is":
6,"events":
7,"inherits":
9,"process-nextick-args":
12,"util-deprecate":
27}],
20:[function(require,module,exports){
36668 var Buffer = require('buffer').Buffer;
36670 var bufferShim = require('buffer-shims');
36673 module.exports = BufferList;
36675 function BufferList() {
36681 BufferList.prototype.push = function (v) {
36682 var entry = { data: v, next: null };
36683 if (this.length
> 0) this.tail.next = entry;else this.head = entry;
36688 BufferList.prototype.unshift = function (v) {
36689 var entry = { data: v, next: this.head };
36690 if (this.length ===
0) this.tail = entry;
36695 BufferList.prototype.shift = function () {
36696 if (this.length ===
0) return;
36697 var ret = this.head.data;
36698 if (this.length ===
1) this.head = this.tail = null;else this.head = this.head.next;
36703 BufferList.prototype.clear = function () {
36704 this.head = this.tail = null;
36708 BufferList.prototype.join = function (s) {
36709 if (this.length ===
0) return '';
36711 var ret = '' + p.data;
36712 while (p = p.next) {
36717 BufferList.prototype.concat = function (n) {
36718 if (this.length ===
0) return bufferShim.alloc(
0);
36719 if (this.length ===
1) return this.head.data;
36720 var ret = bufferShim.allocUnsafe(n
>>> 0);
36724 p.data.copy(ret, i);
36725 i += p.data.length;
36730 },{
"buffer":
5,
"buffer-shims":
4}],
21:[function(require,module,exports){
36731 module.exports = require(
"./lib/_stream_passthrough.js")
36733 },{
"./lib/_stream_passthrough.js":
16}],
22:[function(require,module,exports){
36734 (function (process){
36735 var Stream = (function (){
36737 return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify
36740 exports = module.exports = require('./lib/_stream_readable.js');
36741 exports.Stream = Stream || exports;
36742 exports.Readable = exports;
36743 exports.Writable = require('./lib/_stream_writable.js');
36744 exports.Duplex = require('./lib/_stream_duplex.js');
36745 exports.Transform = require('./lib/_stream_transform.js');
36746 exports.PassThrough = require('./lib/_stream_passthrough.js');
36748 if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) {
36749 module.exports = Stream;
36752 }).call(this,require('_process'))
36753 },{
"./lib/_stream_duplex.js":
15,
"./lib/_stream_passthrough.js":
16,
"./lib/_stream_readable.js":
17,
"./lib/_stream_transform.js":
18,
"./lib/_stream_writable.js":
19,
"_process":
13}],
23:[function(require,module,exports){
36754 module.exports = require(
"./lib/_stream_transform.js")
36756 },{
"./lib/_stream_transform.js":
18}],
24:[function(require,module,exports){
36757 module.exports = require(
"./lib/_stream_writable.js")
36759 },{
"./lib/_stream_writable.js":
19}],
25:[function(require,module,exports){
36760 // Copyright Joyent, Inc. and other Node contributors.
36762 // Permission is hereby granted, free of charge, to any person obtaining a
36763 // copy of this software and associated documentation files (the
36764 //
"Software"), to deal in the Software without restriction, including
36765 // without limitation the rights to use, copy, modify, merge, publish,
36766 // distribute, sublicense, and/or sell copies of the Software, and to permit
36767 // persons to whom the Software is furnished to do so, subject to the
36768 // following conditions:
36770 // The above copyright notice and this permission notice shall be included
36771 // in all copies or substantial portions of the Software.
36773 // THE SOFTWARE IS PROVIDED
"AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
36774 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
36775 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
36776 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
36777 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
36778 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
36779 // USE OR OTHER DEALINGS IN THE SOFTWARE.
36781 module.exports = Stream;
36783 var EE = require('events').EventEmitter;
36784 var inherits = require('inherits');
36786 inherits(Stream, EE);
36787 Stream.Readable = require('readable-stream/readable.js');
36788 Stream.Writable = require('readable-stream/writable.js');
36789 Stream.Duplex = require('readable-stream/duplex.js');
36790 Stream.Transform = require('readable-stream/transform.js');
36791 Stream.PassThrough = require('readable-stream/passthrough.js');
36793 // Backwards-compat with node
0.4.x
36794 Stream.Stream = Stream;
36798 // old-style streams. Note that the pipe method (the only relevant
36799 // part of this class) is overridden in the Readable class.
36801 function Stream() {
36805 Stream.prototype.pipe = function(dest, options) {
36808 function ondata(chunk) {
36809 if (dest.writable) {
36810 if (false === dest.write(chunk) && source.pause) {
36816 source.on('data', ondata);
36818 function ondrain() {
36819 if (source.readable && source.resume) {
36824 dest.on('drain', ondrain);
36826 // If the 'end' option is not supplied, dest.end() will be called when
36827 // source gets the 'end' or 'close' events. Only dest.end() once.
36828 if (!dest._isStdio && (!options || options.end !== false)) {
36829 source.on('end', onend);
36830 source.on('close', onclose);
36833 var didOnEnd = false;
36835 if (didOnEnd) return;
36842 function onclose() {
36843 if (didOnEnd) return;
36846 if (typeof dest.destroy === 'function') dest.destroy();
36849 // don't leave dangling pipes when there are errors.
36850 function onerror(er) {
36852 if (EE.listenerCount(this, 'error') ===
0) {
36853 throw er; // Unhandled stream error in pipe.
36857 source.on('error', onerror);
36858 dest.on('error', onerror);
36860 // remove all the event listeners that were added.
36861 function cleanup() {
36862 source.removeListener('data', ondata);
36863 dest.removeListener('drain', ondrain);
36865 source.removeListener('end', onend);
36866 source.removeListener('close', onclose);
36868 source.removeListener('error', onerror);
36869 dest.removeListener('error', onerror);
36871 source.removeListener('end', cleanup);
36872 source.removeListener('close', cleanup);
36874 dest.removeListener('close', cleanup);
36877 source.on('end', cleanup);
36878 source.on('close', cleanup);
36880 dest.on('close', cleanup);
36882 dest.emit('pipe', source);
36884 // Allow for unix-like usage: A.pipe(B).pipe(C)
36888 },{
"events":
7,
"inherits":
9,
"readable-stream/duplex.js":
14,
"readable-stream/passthrough.js":
21,
"readable-stream/readable.js":
22,
"readable-stream/transform.js":
23,
"readable-stream/writable.js":
24}],
26:[function(require,module,exports){
36889 // Copyright Joyent, Inc. and other Node contributors.
36891 // Permission is hereby granted, free of charge, to any person obtaining a
36892 // copy of this software and associated documentation files (the
36893 //
"Software"), to deal in the Software without restriction, including
36894 // without limitation the rights to use, copy, modify, merge, publish,
36895 // distribute, sublicense, and/or sell copies of the Software, and to permit
36896 // persons to whom the Software is furnished to do so, subject to the
36897 // following conditions:
36899 // The above copyright notice and this permission notice shall be included
36900 // in all copies or substantial portions of the Software.
36902 // THE SOFTWARE IS PROVIDED
"AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
36903 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
36904 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
36905 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
36906 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
36907 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
36908 // USE OR OTHER DEALINGS IN THE SOFTWARE.
36910 var Buffer = require('buffer').Buffer;
36912 var isBufferEncoding = Buffer.isEncoding
36913 || function(encoding) {
36914 switch (encoding && encoding.toLowerCase()) {
36915 case 'hex': case 'utf8': case 'utf-
8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-
2': case 'utf16le': case 'utf-
16le': case 'raw': return true;
36916 default: return false;
36921 function assertEncoding(encoding) {
36922 if (encoding && !isBufferEncoding(encoding)) {
36923 throw new Error('Unknown encoding: ' + encoding);
36927 // StringDecoder provides an interface for efficiently splitting a series of
36928 // buffers into a series of JS strings without breaking apart multi-byte
36929 // characters. CESU-
8 is handled as part of the UTF-
8 encoding.
36931 // @TODO Handling all encodings inside a single object makes it very difficult
36932 // to reason about this code, so it should be split up in the future.
36933 // @TODO There should be a utf8-strict encoding that rejects invalid UTF-
8 code
36934 // points as used by CESU-
8.
36935 var StringDecoder = exports.StringDecoder = function(encoding) {
36936 this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
36937 assertEncoding(encoding);
36938 switch (this.encoding) {
36940 // CESU-
8 represents each of Surrogate Pair by
3-bytes
36941 this.surrogateSize =
3;
36945 // UTF-
16 represents each of Surrogate Pair by
2-bytes
36946 this.surrogateSize =
2;
36947 this.detectIncompleteChar = utf16DetectIncompleteChar;
36950 // Base-
64 stores
3 bytes in
4 chars, and pads the remainder.
36951 this.surrogateSize =
3;
36952 this.detectIncompleteChar = base64DetectIncompleteChar;
36955 this.write = passThroughWrite;
36959 // Enough space to store all bytes of a single character. UTF-
8 needs
4
36960 // bytes, but CESU-
8 may require up to
6 (
3 bytes per surrogate).
36961 this.charBuffer = new Buffer(
6);
36962 // Number of bytes received for the current incomplete multi-byte character.
36963 this.charReceived =
0;
36964 // Number of bytes expected for the current incomplete multi-byte character.
36965 this.charLength =
0;
36969 // write decodes the given buffer and returns it as JS string that is
36970 // guaranteed to not contain any partial multi-byte characters. Any partial
36971 // character found at the end of the buffer is buffered up, and will be
36972 // returned when calling write again with the remaining bytes.
36974 // Note: Converting a Buffer containing an orphan surrogate to a String
36975 // currently works, but converting a String to a Buffer (via `new Buffer`, or
36976 // Buffer#write) will replace incomplete surrogates with the unicode
36977 // replacement character. See https://codereview.chromium.org/
121173009/ .
36978 StringDecoder.prototype.write = function(buffer) {
36980 // if our last write ended with an incomplete multibyte character
36981 while (this.charLength) {
36982 // determine how many remaining bytes this buffer has to offer for this char
36983 var available = (buffer.length
>= this.charLength - this.charReceived) ?
36984 this.charLength - this.charReceived :
36987 // add the new bytes to the char buffer
36988 buffer.copy(this.charBuffer, this.charReceived,
0, available);
36989 this.charReceived += available;
36991 if (this.charReceived < this.charLength) {
36992 // still not enough chars in this buffer? wait for more ...
36996 // remove bytes belonging to the current character from the buffer
36997 buffer = buffer.slice(available, buffer.length);
36999 // get the character that was split
37000 charStr = this.charBuffer.slice(
0, this.charLength).toString(this.encoding);
37002 // CESU-
8: lead surrogate (D800-DBFF) is also the incomplete character
37003 var charCode = charStr.charCodeAt(charStr.length -
1);
37004 if (charCode
>=
0xD800 && charCode <=
0xDBFF) {
37005 this.charLength += this.surrogateSize;
37009 this.charReceived = this.charLength =
0;
37011 // if there are no more bytes in this buffer, just emit our char
37012 if (buffer.length ===
0) {
37018 // determine and set charLength / charReceived
37019 this.detectIncompleteChar(buffer);
37021 var end = buffer.length;
37022 if (this.charLength) {
37023 // buffer the incomplete character bytes we got
37024 buffer.copy(this.charBuffer,
0, buffer.length - this.charReceived, end);
37025 end -= this.charReceived;
37028 charStr += buffer.toString(this.encoding,
0, end);
37030 var end = charStr.length -
1;
37031 var charCode = charStr.charCodeAt(end);
37032 // CESU-
8: lead surrogate (D800-DBFF) is also the incomplete character
37033 if (charCode
>=
0xD800 && charCode <=
0xDBFF) {
37034 var size = this.surrogateSize;
37035 this.charLength += size;
37036 this.charReceived += size;
37037 this.charBuffer.copy(this.charBuffer, size,
0, size);
37038 buffer.copy(this.charBuffer,
0,
0, size);
37039 return charStr.substring(
0, end);
37042 // or just emit the charStr
37046 // detectIncompleteChar determines if there is an incomplete UTF-
8 character at
37047 // the end of the given buffer. If so, it sets this.charLength to the byte
37048 // length that character, and sets this.charReceived to the number of bytes
37049 // that are available for this character.
37050 StringDecoder.prototype.detectIncompleteChar = function(buffer) {
37051 // determine how many bytes we have to check at the end of this buffer
37052 var i = (buffer.length
>=
3) ?
3 : buffer.length;
37054 // Figure out if one of the last i bytes of our buffer announces an
37055 // incomplete char.
37056 for (; i
> 0; i--) {
37057 var c = buffer[buffer.length - i];
37059 // See http://en.wikipedia.org/wiki/UTF-
8#Description
37062 if (i ==
1 && c
>> 5 ==
0x06) {
37063 this.charLength =
2;
37068 if (i <=
2 && c
>> 4 ==
0x0E) {
37069 this.charLength =
3;
37074 if (i <=
3 && c
>> 3 ==
0x1E) {
37075 this.charLength =
4;
37079 this.charReceived = i;
37082 StringDecoder.prototype.end = function(buffer) {
37084 if (buffer && buffer.length)
37085 res = this.write(buffer);
37087 if (this.charReceived) {
37088 var cr = this.charReceived;
37089 var buf = this.charBuffer;
37090 var enc = this.encoding;
37091 res += buf.slice(
0, cr).toString(enc);
37097 function passThroughWrite(buffer) {
37098 return buffer.toString(this.encoding);
37101 function utf16DetectIncompleteChar(buffer) {
37102 this.charReceived = buffer.length %
2;
37103 this.charLength = this.charReceived ?
2 :
0;
37106 function base64DetectIncompleteChar(buffer) {
37107 this.charReceived = buffer.length %
3;
37108 this.charLength = this.charReceived ?
3 :
0;
37111 },{
"buffer":
5}],
27:[function(require,module,exports){
37112 (function (global){
37118 module.exports = deprecate;
37121 * Mark that a method should not be used.
37122 * Returns a modified function which warns once by default.
37124 * If `localStorage.noDeprecation = true` is set, then it is a no-op.
37126 * If `localStorage.throwDeprecation = true` is set, then deprecated functions
37127 * will throw an Error when invoked.
37129 * If `localStorage.traceDeprecation = true` is set, then deprecated functions
37130 * will invoke `console.trace()` instead of `console.error()`.
37132 * @param {Function} fn - the function to deprecate
37133 * @param {String} msg - the string to print to the console when `fn` is invoked
37134 * @returns {Function} a new
"deprecated" version of `fn`
37138 function deprecate (fn, msg) {
37139 if (config('noDeprecation')) {
37143 var warned = false;
37144 function deprecated() {
37146 if (config('throwDeprecation')) {
37147 throw new Error(msg);
37148 } else if (config('traceDeprecation')) {
37149 console.trace(msg);
37155 return fn.apply(this, arguments);
37162 * Checks `localStorage` for boolean values for the given `name`.
37164 * @param {String} name
37165 * @returns {Boolean}
37169 function config (name) {
37170 // accessing global.localStorage can trigger a DOMException in sandboxed iframes
37172 if (!global.localStorage) return false;
37176 var val = global.localStorage[name];
37177 if (null == val) return false;
37178 return String(val).toLowerCase() === 'true';
37181 }).call(this,typeof global !==
"undefined" ? global : typeof self !==
"undefined" ? self : typeof window !==
"undefined" ? window : {})
37182 },{}],
28:[function(require,module,exports){
37183 arguments[
4][
9][
0].apply(exports,arguments)
37184 },{
"dup":
9}],
29:[function(require,module,exports){
37185 module.exports = function isBuffer(arg) {
37186 return arg && typeof arg === 'object'
37187 && typeof arg.copy === 'function'
37188 && typeof arg.fill === 'function'
37189 && typeof arg.readUInt8 === 'function';
37191 },{}],
30:[function(require,module,exports){
37192 (function (process,global){
37193 // Copyright Joyent, Inc. and other Node contributors.
37195 // Permission is hereby granted, free of charge, to any person obtaining a
37196 // copy of this software and associated documentation files (the
37197 //
"Software"), to deal in the Software without restriction, including
37198 // without limitation the rights to use, copy, modify, merge, publish,
37199 // distribute, sublicense, and/or sell copies of the Software, and to permit
37200 // persons to whom the Software is furnished to do so, subject to the
37201 // following conditions:
37203 // The above copyright notice and this permission notice shall be included
37204 // in all copies or substantial portions of the Software.
37206 // THE SOFTWARE IS PROVIDED
"AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
37207 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
37208 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
37209 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
37210 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
37211 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
37212 // USE OR OTHER DEALINGS IN THE SOFTWARE.
37214 var formatRegExp = /%[sdj%]/g;
37215 exports.format = function(f) {
37216 if (!isString(f)) {
37218 for (var i =
0; i < arguments.length; i++) {
37219 objects.push(inspect(arguments[i]));
37221 return objects.join(' ');
37225 var args = arguments;
37226 var len = args.length;
37227 var str = String(f).replace(formatRegExp, function(x) {
37228 if (x === '%%') return '%';
37229 if (i
>= len) return x;
37231 case '%s': return String(args[i++]);
37232 case '%d': return Number(args[i++]);
37235 return JSON.stringify(args[i++]);
37237 return '[Circular]';
37243 for (var x = args[i]; i < len; x = args[++i]) {
37244 if (isNull(x) || !isObject(x)) {
37247 str += ' ' + inspect(x);
37254 // Mark that a method should not be used.
37255 // Returns a modified function which warns once by default.
37256 // If --no-deprecation is set, then it is a no-op.
37257 exports.deprecate = function(fn, msg) {
37258 // Allow for deprecating things in the process of starting up.
37259 if (isUndefined(global.process)) {
37260 return function() {
37261 return exports.deprecate(fn, msg).apply(this, arguments);
37265 if (process.noDeprecation === true) {
37269 var warned = false;
37270 function deprecated() {
37272 if (process.throwDeprecation) {
37273 throw new Error(msg);
37274 } else if (process.traceDeprecation) {
37275 console.trace(msg);
37277 console.error(msg);
37281 return fn.apply(this, arguments);
37290 exports.debuglog = function(set) {
37291 if (isUndefined(debugEnviron))
37292 debugEnviron = process.env.NODE_DEBUG || '';
37293 set = set.toUpperCase();
37294 if (!debugs[set]) {
37295 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
37296 var pid = process.pid;
37297 debugs[set] = function() {
37298 var msg = exports.format.apply(exports, arguments);
37299 console.error('%s %d: %s', set, pid, msg);
37302 debugs[set] = function() {};
37305 return debugs[set];
37310 * Echos the value of a value. Trys to print the value out
37311 * in the best way possible given the different types.
37313 * @param {Object} obj The object to print out.
37314 * @param {Object} opts Optional options object that alters the output.
37316 /* legacy: obj, showHidden, depth, colors*/
37317 function inspect(obj, opts) {
37321 stylize: stylizeNoColor
37324 if (arguments.length
>=
3) ctx.depth = arguments[
2];
37325 if (arguments.length
>=
4) ctx.colors = arguments[
3];
37326 if (isBoolean(opts)) {
37328 ctx.showHidden = opts;
37330 // got an "options" object
37331 exports._extend(ctx, opts);
37333 // set default options
37334 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
37335 if (isUndefined(ctx.depth)) ctx.depth =
2;
37336 if (isUndefined(ctx.colors)) ctx.colors = false;
37337 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
37338 if (ctx.colors) ctx.stylize = stylizeWithColor;
37339 return formatValue(ctx, obj, ctx.depth);
37341 exports.inspect = inspect;
37344 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
37347 'italic' : [
3,
23],
37348 'underline' : [
4,
24],
37349 'inverse' : [
7,
27],
37350 'white' : [
37,
39],
37352 'black' : [
30,
39],
37355 'green' : [
32,
39],
37356 'magenta' : [
35,
39],
37358 'yellow' : [
33,
39]
37361 // Don't use 'blue' not visible on cmd.exe
37364 'number': 'yellow',
37365 'boolean': 'yellow',
37366 'undefined': 'grey',
37370 // "name": intentionally not styling
37375 function stylizeWithColor(str, styleType) {
37376 var style = inspect.styles[styleType];
37379 return '\u001b[' + inspect.colors[style][
0] + 'm' + str +
37380 '\u001b[' + inspect.colors[style][
1] + 'm';
37387 function stylizeNoColor(str, styleType) {
37392 function arrayToHash(array) {
37395 array.forEach(function(val, idx) {
37403 function formatValue(ctx, value, recurseTimes) {
37404 // Provide a hook for user-specified inspect functions.
37405 // Check that value is an object with an inspect function on it
37406 if (ctx.customInspect &&
37408 isFunction(value.inspect) &&
37409 // Filter out the util module, it's inspect function is special
37410 value.inspect !== exports.inspect &&
37411 // Also filter out any prototype objects using the circular check.
37412 !(value.constructor && value.constructor.prototype === value)) {
37413 var ret = value.inspect(recurseTimes, ctx);
37414 if (!isString(ret)) {
37415 ret = formatValue(ctx, ret, recurseTimes);
37420 // Primitive types cannot have properties
37421 var primitive = formatPrimitive(ctx, value);
37426 // Look up the keys of the object.
37427 var keys = Object.keys(value);
37428 var visibleKeys = arrayToHash(keys);
37430 if (ctx.showHidden) {
37431 keys = Object.getOwnPropertyNames(value);
37434 // IE doesn't make error fields non-enumerable
37435 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs
.94).aspx
37437 && (keys.indexOf('message')
>=
0 || keys.indexOf('description')
>=
0)) {
37438 return formatError(value);
37441 // Some type of object without properties can be shortcutted.
37442 if (keys.length ===
0) {
37443 if (isFunction(value)) {
37444 var name = value.name ? ': ' + value.name : '';
37445 return ctx.stylize('[Function' + name + ']', 'special');
37447 if (isRegExp(value)) {
37448 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
37450 if (isDate(value)) {
37451 return ctx.stylize(Date.prototype.toString.call(value), 'date');
37453 if (isError(value)) {
37454 return formatError(value);
37458 var base = '', array = false, braces = ['{', '}'];
37460 // Make Array say that they are Array
37461 if (isArray(value)) {
37463 braces = ['[', ']'];
37466 // Make functions say that they are functions
37467 if (isFunction(value)) {
37468 var n = value.name ? ': ' + value.name : '';
37469 base = ' [Function' + n + ']';
37472 // Make RegExps say that they are RegExps
37473 if (isRegExp(value)) {
37474 base = ' ' + RegExp.prototype.toString.call(value);
37477 // Make dates with properties first say the date
37478 if (isDate(value)) {
37479 base = ' ' + Date.prototype.toUTCString.call(value);
37482 // Make error with message first say the error
37483 if (isError(value)) {
37484 base = ' ' + formatError(value);
37487 if (keys.length ===
0 && (!array || value.length ==
0)) {
37488 return braces[
0] + base + braces[
1];
37491 if (recurseTimes <
0) {
37492 if (isRegExp(value)) {
37493 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
37495 return ctx.stylize('[Object]', 'special');
37499 ctx.seen.push(value);
37503 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
37505 output = keys.map(function(key) {
37506 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
37512 return reduceToSingleString(output, base, braces);
37516 function formatPrimitive(ctx, value) {
37517 if (isUndefined(value))
37518 return ctx.stylize('undefined', 'undefined');
37519 if (isString(value)) {
37520 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
37521 .replace(/'/g, "\\'")
37522 .replace(/\\"/g, '"') + '\'';
37523 return ctx.stylize(simple, 'string');
37525 if (isNumber(value))
37526 return ctx.stylize('' + value, 'number');
37527 if (isBoolean(value))
37528 return ctx.stylize('' + value, 'boolean');
37529 // For some reason typeof null is "object", so special case here.
37531 return ctx.stylize('null', 'null');
37535 function formatError(value) {
37536 return '[' + Error.prototype.toString.call(value) + ']';
37540 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
37542 for (var i =
0, l = value.length; i < l; ++i) {
37543 if (hasOwnProperty(value, String(i))) {
37544 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
37550 keys.forEach(function(key) {
37551 if (!key.match(/^\d+$/)) {
37552 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
37560 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
37561 var name, str, desc;
37562 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
37565 str = ctx.stylize('[Getter/Setter]', 'special');
37567 str = ctx.stylize('[Getter]', 'special');
37571 str = ctx.stylize('[Setter]', 'special');
37574 if (!hasOwnProperty(visibleKeys, key)) {
37575 name = '[' + key + ']';
37578 if (ctx.seen.indexOf(desc.value) <
0) {
37579 if (isNull(recurseTimes)) {
37580 str = formatValue(ctx, desc.value, null);
37582 str = formatValue(ctx, desc.value, recurseTimes -
1);
37584 if (str.indexOf('\n')
> -
1) {
37586 str = str.split('\n').map(function(line) {
37588 }).join('\n').substr(
2);
37590 str = '\n' + str.split('\n').map(function(line) {
37596 str = ctx.stylize('[Circular]', 'special');
37599 if (isUndefined(name)) {
37600 if (array && key.match(/^\d+$/)) {
37603 name = JSON.stringify('' + key);
37604 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-
9]*)"$/)) {
37605 name = name.substr(
1, name.length -
2);
37606 name = ctx.stylize(name, 'name');
37608 name = name.replace(/'/g, "\\'")
37609 .replace(/\\"/g, '"')
37610 .replace(/(^"|"$)/g, "'");
37611 name = ctx.stylize(name, 'string');
37615 return name + ': ' + str;
37619 function reduceToSingleString(output, base, braces) {
37620 var numLinesEst =
0;
37621 var length = output.reduce(function(prev, cur) {
37623 if (cur.indexOf('\n')
>=
0) numLinesEst++;
37624 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length +
1;
37629 (base === '' ? '' : base + '\n ') +
37631 output.join(',\n ') +
37636 return braces[
0] + base + ' ' + output.join(', ') + ' ' + braces[
1];
37640 // NOTE: These type checking functions intentionally don't use `instanceof`
37641 // because it is fragile and can be easily faked with `Object.create()`.
37642 function isArray(ar) {
37643 return Array.isArray(ar);
37645 exports.isArray = isArray;
37647 function isBoolean(arg) {
37648 return typeof arg === 'boolean';
37650 exports.isBoolean = isBoolean;
37652 function isNull(arg) {
37653 return arg === null;
37655 exports.isNull = isNull;
37657 function isNullOrUndefined(arg) {
37658 return arg == null;
37660 exports.isNullOrUndefined = isNullOrUndefined;
37662 function isNumber(arg) {
37663 return typeof arg === 'number';
37665 exports.isNumber = isNumber;
37667 function isString(arg) {
37668 return typeof arg === 'string';
37670 exports.isString = isString;
37672 function isSymbol(arg) {
37673 return typeof arg === 'symbol';
37675 exports.isSymbol = isSymbol;
37677 function isUndefined(arg) {
37678 return arg === void
0;
37680 exports.isUndefined = isUndefined;
37682 function isRegExp(re) {
37683 return isObject(re) && objectToString(re) === '[object RegExp]';
37685 exports.isRegExp = isRegExp;
37687 function isObject(arg) {
37688 return typeof arg === 'object' && arg !== null;
37690 exports.isObject = isObject;
37692 function isDate(d) {
37693 return isObject(d) && objectToString(d) === '[object Date]';
37695 exports.isDate = isDate;
37697 function isError(e) {
37698 return isObject(e) &&
37699 (objectToString(e) === '[object Error]' || e instanceof Error);
37701 exports.isError = isError;
37703 function isFunction(arg) {
37704 return typeof arg === 'function';
37706 exports.isFunction = isFunction;
37708 function isPrimitive(arg) {
37709 return arg === null ||
37710 typeof arg === 'boolean' ||
37711 typeof arg === 'number' ||
37712 typeof arg === 'string' ||
37713 typeof arg === 'symbol' || // ES6 symbol
37714 typeof arg === 'undefined';
37716 exports.isPrimitive = isPrimitive;
37718 exports.isBuffer = require('./support/isBuffer');
37720 function objectToString(o) {
37721 return Object.prototype.toString.call(o);
37726 return n <
10 ? '
0' + n.toString(
10) : n.toString(
10);
37730 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
37731 'Oct', 'Nov', 'Dec'];
37734 function timestamp() {
37735 var d = new Date();
37736 var time = [pad(d.getHours()),
37737 pad(d.getMinutes()),
37738 pad(d.getSeconds())].join(':');
37739 return [d.getDate(), months[d.getMonth()], time].join(' ');
37743 // log is just a thin wrapper to console.log that prepends a timestamp
37744 exports.log = function() {
37745 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
37750 * Inherit the prototype methods from one constructor into another.
37752 * The Function.prototype.inherits from lang.js rewritten as a standalone
37753 * function (not on Function.prototype). NOTE: If this file is to be loaded
37754 * during bootstrapping this function needs to be rewritten using some native
37755 * functions as prototype setup using normal JavaScript does not work as
37756 * expected during bootstrapping (see mirror.js in r114903).
37758 * @param {function} ctor Constructor function which needs to inherit the
37760 * @param {function} superCtor Constructor function to inherit prototype from.
37762 exports.inherits = require('inherits');
37764 exports._extend = function(origin, add) {
37765 // Don't do anything if add isn't an object
37766 if (!add || !isObject(add)) return origin;
37768 var keys = Object.keys(add);
37769 var i = keys.length;
37771 origin[keys[i]] = add[keys[i]];
37776 function hasOwnProperty(obj, prop) {
37777 return Object.prototype.hasOwnProperty.call(obj, prop);
37780 }).call(this,require('_process'),typeof global !==
"undefined" ? global : typeof self !==
"undefined" ? self : typeof window !==
"undefined" ? window : {})
37781 },{
"./support/isBuffer":
29,
"_process":
13,
"inherits":
28}],
31:[function(require,module,exports){
37782 (function (Buffer){
37783 const createKeccakHash = require('keccak')
37784 const secp256k1 = require('secp256k1')
37785 const assert = require('assert')
37786 const rlp = require('rlp')
37787 const BN = require('bn.js')
37788 const createHash = require('create-hash')
37789 Object.assign(exports, require('ethjs-util'))
37792 * the max integer that this VM can handle (a ```BN```)
37793 * @var {BN} MAX_INTEGER
37795 exports.MAX_INTEGER = new BN('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff',
16)
37798 *
2^
256 (a ```BN```)
37799 * @var {BN} TWO_POW256
37801 exports.TWO_POW256 = new BN('
10000000000000000000000000000000000000000000000000000000000000000',
16)
37804 * SHA3-
256 hash of null (a ```String```)
37805 * @var {String} SHA3_NULL_S
37807 exports.SHA3_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470'
37810 * SHA3-
256 hash of null (a ```Buffer```)
37811 * @var {Buffer} SHA3_NULL
37813 exports.SHA3_NULL = Buffer.from(exports.SHA3_NULL_S, 'hex')
37816 * SHA3-
256 of an RLP of an empty array (a ```String```)
37817 * @var {String} SHA3_RLP_ARRAY_S
37819 exports.SHA3_RLP_ARRAY_S = '
1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347'
37822 * SHA3-
256 of an RLP of an empty array (a ```Buffer```)
37823 * @var {Buffer} SHA3_RLP_ARRAY
37825 exports.SHA3_RLP_ARRAY = Buffer.from(exports.SHA3_RLP_ARRAY_S, 'hex')
37828 * SHA3-
256 hash of the RLP of null (a ```String```)
37829 * @var {String} SHA3_RLP_S
37831 exports.SHA3_RLP_S = '
56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421'
37834 * SHA3-
256 hash of the RLP of null (a ```Buffer```)
37835 * @var {Buffer} SHA3_RLP
37837 exports.SHA3_RLP = Buffer.from(exports.SHA3_RLP_S, 'hex')
37840 * [`BN`](https://github.com/indutny/bn.js)
37846 * [`rlp`](https://github.com/ethereumjs/rlp)
37852 * [`secp256k1`](https://github.com/cryptocoinjs/secp256k1-node/)
37855 exports.secp256k1 = secp256k1
37858 * Returns a buffer filled with
0s
37860 * @param {Number} bytes the number of bytes the buffer should be
37863 exports.zeros = function (bytes) {
37864 return Buffer.allocUnsafe(bytes).fill(
0)
37868 * Left Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
37869 * Or it truncates the beginning if it exceeds.
37870 * @method lsetLength
37871 * @param {Buffer|Array} msg the value to pad
37872 * @param {Number} length the number of bytes the output should be
37873 * @param {Boolean} [right=false] whether to start padding form the left or right
37874 * @return {Buffer|Array}
37876 exports.setLengthLeft = exports.setLength = function (msg, length, right) {
37877 var buf = exports.zeros(length)
37878 msg = exports.toBuffer(msg)
37880 if (msg.length < length) {
37884 return msg.slice(
0, length)
37886 if (msg.length < length) {
37887 msg.copy(buf, length - msg.length)
37890 return msg.slice(-length)
37895 * Right Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
37896 * Or it truncates the beginning if it exceeds.
37897 * @param {Buffer|Array} msg the value to pad
37898 * @param {Number} length the number of bytes the output should be
37899 * @return {Buffer|Array}
37901 exports.setLengthRight = function (msg, length) {
37902 return exports.setLength(msg, length, true)
37906 * Trims leading zeros from a `Buffer` or an `Array`
37907 * @param {Buffer|Array|String} a
37908 * @return {Buffer|Array|String}
37910 exports.unpad = exports.stripZeros = function (a) {
37911 a = exports.stripHexPrefix(a)
37913 while (a.length
> 0 && first.toString() === '
0') {
37920 * Attempts to turn a value into a `Buffer`. As input it supports `Buffer`, `String`, `Number`, null/undefined, `BN` and other objects with a `toArray()` method.
37921 * @param {*} v the value
37923 exports.toBuffer = function (v) {
37924 if (!Buffer.isBuffer(v)) {
37925 if (Array.isArray(v)) {
37927 } else if (typeof v === 'string') {
37928 if (exports.isHexPrefixed(v)) {
37929 v = Buffer.from(exports.padToEven(exports.stripHexPrefix(v)), 'hex')
37933 } else if (typeof v === 'number') {
37934 v = exports.intToBuffer(v)
37935 } else if (v === null || v === undefined) {
37936 v = Buffer.allocUnsafe(
0)
37937 } else if (v.toArray) {
37938 // converts a BN to a Buffer
37939 v = Buffer.from(v.toArray())
37941 throw new Error('invalid type')
37948 * Converts a `Buffer` to a `Number`
37949 * @param {Buffer} buf
37951 * @throws If the input number exceeds
53 bits.
37953 exports.bufferToInt = function (buf) {
37954 return new BN(exports.toBuffer(buf)).toNumber()
37958 * Converts a `Buffer` into a hex `String`
37959 * @param {Buffer} buf
37962 exports.bufferToHex = function (buf) {
37963 buf = exports.toBuffer(buf)
37964 return '
0x' + buf.toString('hex')
37968 * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes
256-bit numbers.
37969 * @param {Buffer} num
37972 exports.fromSigned = function (num) {
37973 return new BN(num).fromTwos(
256)
37977 * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes
256-bit numbers.
37981 exports.toUnsigned = function (num) {
37982 return Buffer.from(num.toTwos(
256).toArray())
37986 * Creates SHA-
3 hash of the input
37987 * @param {Buffer|Array|String|Number} a the input data
37988 * @param {Number} [bits=
256] the SHA width
37991 exports.sha3 = function (a, bits) {
37992 a = exports.toBuffer(a)
37993 if (!bits) bits =
256
37995 return createKeccakHash('keccak' + bits).update(a).digest()
37999 * Creates SHA256 hash of the input
38000 * @param {Buffer|Array|String|Number} a the input data
38003 exports.sha256 = function (a) {
38004 a = exports.toBuffer(a)
38005 return createHash('sha256').update(a).digest()
38009 * Creates RIPEMD160 hash of the input
38010 * @param {Buffer|Array|String|Number} a the input data
38011 * @param {Boolean} padded whether it should be padded to
256 bits or not
38014 exports.ripemd160 = function (a, padded) {
38015 a = exports.toBuffer(a)
38016 var hash = createHash('rmd160').update(a).digest()
38017 if (padded === true) {
38018 return exports.setLength(hash,
32)
38025 * Creates SHA-
3 hash of the RLP encoded version of the input
38026 * @param {Buffer|Array|String|Number} a the input data
38029 exports.rlphash = function (a) {
38030 return exports.sha3(rlp.encode(a))
38034 * Checks if the private key satisfies the rules of the curve secp256k1.
38035 * @param {Buffer} privateKey
38036 * @return {Boolean}
38038 exports.isValidPrivate = function (privateKey) {
38039 return secp256k1.privateKeyVerify(privateKey)
38043 * Checks if the public key satisfies the rules of the curve secp256k1
38044 * and the requirements of Ethereum.
38045 * @param {Buffer} publicKey The two points of an uncompressed key, unless sanitize is enabled
38046 * @param {Boolean} [sanitize=false] Accept public keys in other formats
38047 * @return {Boolean}
38049 exports.isValidPublic = function (publicKey, sanitize) {
38050 if (publicKey.length ===
64) {
38051 // Convert to SEC1 for secp256k1
38052 return secp256k1.publicKeyVerify(Buffer.concat([ Buffer.from([
4]), publicKey ]))
38059 return secp256k1.publicKeyVerify(publicKey)
38063 * Returns the ethereum address of a given public key.
38064 * Accepts
"Ethereum public keys" and SEC1 encoded keys.
38065 * @param {Buffer} pubKey The two points of an uncompressed key, unless sanitize is enabled
38066 * @param {Boolean} [sanitize=false] Accept public keys in other formats
38069 exports.pubToAddress = exports.publicToAddress = function (pubKey, sanitize) {
38070 pubKey = exports.toBuffer(pubKey)
38071 if (sanitize && (pubKey.length !==
64)) {
38072 pubKey = secp256k1.publicKeyConvert(pubKey, false).slice(
1)
38074 assert(pubKey.length ===
64)
38075 // Only take the lower
160bits of the hash
38076 return exports.sha3(pubKey).slice(-
20)
38080 * Returns the ethereum public key of a given private key
38081 * @param {Buffer} privateKey A private key must be
256 bits wide
38084 var privateToPublic = exports.privateToPublic = function (privateKey) {
38085 privateKey = exports.toBuffer(privateKey)
38086 // skip the type flag and use the X, Y points
38087 return secp256k1.publicKeyCreate(privateKey, false).slice(
1)
38091 * Converts a public key to the Ethereum format.
38092 * @param {Buffer} publicKey
38095 exports.importPublic = function (publicKey) {
38096 publicKey = exports.toBuffer(publicKey)
38097 if (publicKey.length !==
64) {
38098 publicKey = secp256k1.publicKeyConvert(publicKey, false).slice(
1)
38105 * @param {Buffer} msgHash
38106 * @param {Buffer} privateKey
38109 exports.ecsign = function (msgHash, privateKey) {
38110 var sig = secp256k1.sign(msgHash, privateKey)
38113 ret.r = sig.signature.slice(
0,
32)
38114 ret.s = sig.signature.slice(
32,
64)
38115 ret.v = sig.recovery +
27
38120 * Returns the keccak-
256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.
38121 * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`
38122 * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key
38123 * used to produce the signature.
38125 * @returns {Buffer} hash
38127 exports.hashPersonalMessage = function (message) {
38128 var prefix = exports.toBuffer('\u0019Ethereum Signed Message:\n' + message.length.toString())
38129 return exports.sha3(Buffer.concat([prefix, message]))
38133 * ECDSA public key recovery from signature
38134 * @param {Buffer} msgHash
38135 * @param {Number} v
38136 * @param {Buffer} r
38137 * @param {Buffer} s
38138 * @return {Buffer} publicKey
38140 exports.ecrecover = function (msgHash, v, r, s) {
38141 var signature = Buffer.concat([exports.setLength(r,
32), exports.setLength(s,
32)],
64)
38142 var recovery = v -
27
38143 if (recovery !==
0 && recovery !==
1) {
38144 throw new Error('Invalid signature v value')
38146 var senderPubKey = secp256k1.recover(msgHash, signature, recovery)
38147 return secp256k1.publicKeyConvert(senderPubKey, false).slice(
1)
38151 * Convert signature parameters into the format of `eth_sign` RPC method
38152 * @param {Number} v
38153 * @param {Buffer} r
38154 * @param {Buffer} s
38155 * @return {String} sig
38157 exports.toRpcSig = function (v, r, s) {
38158 // NOTE: with potential introduction of chainId this might need to be updated
38159 if (v !==
27 && v !==
28) {
38160 throw new Error('Invalid recovery id')
38163 // geth (and the RPC eth_sign method) uses the
65 byte format used by Bitcoin
38164 // FIXME: this might change in the future - https://github.com/ethereum/go-ethereum/issues/
2053
38165 return exports.bufferToHex(Buffer.concat([
38166 exports.setLengthLeft(r,
32),
38167 exports.setLengthLeft(s,
32),
38168 exports.toBuffer(v -
27)
38173 * Convert signature format of the `eth_sign` RPC method to signature parameters
38174 * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/
2053
38175 * @param {String} sig
38178 exports.fromRpcSig = function (sig) {
38179 sig = exports.toBuffer(sig)
38181 // NOTE: with potential introduction of chainId this might need to be updated
38182 if (sig.length !==
65) {
38183 throw new Error('Invalid signature length')
38187 // support both versions of `eth_sign` responses
38194 r: sig.slice(
0,
32),
38195 s: sig.slice(
32,
64)
38200 * Returns the ethereum address of a given private key
38201 * @param {Buffer} privateKey A private key must be
256 bits wide
38204 exports.privateToAddress = function (privateKey) {
38205 return exports.publicToAddress(privateToPublic(privateKey))
38209 * Checks if the address is a valid. Accepts checksummed addresses too
38210 * @param {String} address
38211 * @return {Boolean}
38213 exports.isValidAddress = function (address) {
38214 return /^
0x[
0-
9a-fA-F]{
40}$/i.test(address)
38218 * Returns a checksummed address
38219 * @param {String} address
38222 exports.toChecksumAddress = function (address) {
38223 address = exports.stripHexPrefix(address).toLowerCase()
38224 var hash = exports.sha3(address).toString('hex')
38227 for (var i =
0; i < address.length; i++) {
38228 if (parseInt(hash[i],
16)
>=
8) {
38229 ret += address[i].toUpperCase()
38239 * Checks if the address is a valid checksummed address
38240 * @param {Buffer} address
38241 * @return {Boolean}
38243 exports.isValidChecksumAddress = function (address) {
38244 return exports.isValidAddress(address) && (exports.toChecksumAddress(address) === address)
38248 * Generates an address of a newly created contract
38249 * @param {Buffer} from the address which is creating this new address
38250 * @param {Buffer} nonce the nonce of the from account
38253 exports.generateAddress = function (from, nonce) {
38254 from = exports.toBuffer(from)
38255 nonce = new BN(nonce)
38257 if (nonce.isZero()) {
38258 // in RLP we want to encode null in the case of zero nonce
38259 // read the RLP documentation for an answer if you dare
38262 nonce = Buffer.from(nonce.toArray())
38265 // Only take the lower
160bits of the hash
38266 return exports.rlphash([from, nonce]).slice(-
20)
38270 * Returns true if the supplied address belongs to a precompiled account
38271 * @param {Buffer|String} address
38272 * @return {Boolean}
38274 exports.isPrecompiled = function (address) {
38275 var a = exports.unpad(address)
38276 return a.length ===
1 && a[
0]
> 0 && a[
0] <
5
38280 * Adds
"0x" to a given `String` if it does not already start with
"0x"
38281 * @param {String} str
38284 exports.addHexPrefix = function (str) {
38285 if (typeof str !== 'string') {
38289 return exports.isHexPrefixed(str) ? str : '
0x' + str
38293 * Validate ECDSA signature
38294 * @method isValidSignature
38295 * @param {Buffer} v
38296 * @param {Buffer} r
38297 * @param {Buffer} s
38298 * @param {Boolean} [homestead=true]
38299 * @return {Boolean}
38302 exports.isValidSignature = function (v, r, s, homestead) {
38303 const SECP256K1_N_DIV_2 = new BN('
7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0',
16)
38304 const SECP256K1_N = new BN('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141',
16)
38306 if (r.length !==
32 || s.length !==
32) {
38310 if (v !==
27 && v !==
28) {
38317 if (r.isZero() || r.gt(SECP256K1_N) || s.isZero() || s.gt(SECP256K1_N)) {
38321 if ((homestead === false) && (new BN(s).cmp(SECP256K1_N_DIV_2) ===
1)) {
38329 * Converts a `Buffer` or `Array` to JSON
38330 * @param {Buffer|Array} ba
38331 * @return {Array|String|null}
38333 exports.baToJSON = function (ba) {
38334 if (Buffer.isBuffer(ba)) {
38335 return '
0x' + ba.toString('hex')
38336 } else if (ba instanceof Array) {
38338 for (var i =
0; i < ba.length; i++) {
38339 array.push(exports.baToJSON(ba[i]))
38346 * Defines properties on a `Object`. It make the assumption that underlying data is binary.
38347 * @param {Object} self the `Object` to define properties on
38348 * @param {Array} fields an array fields to define. Fields can contain:
38349 * * `name` - the name of the properties
38350 * * `length` - the number of bytes the field can have
38351 * * `allowLess` - if the field can be less than the length
38353 * @param {*} data data to be validated against the definitions
38355 exports.defineProperties = function (self, fields, data) {
38359 // attach the `toJSON`
38360 self.toJSON = function (label) {
38363 self._fields.forEach(function (field) {
38364 obj[field] = '
0x' + self[field].toString('hex')
38368 return exports.baToJSON(this.raw)
38371 self.serialize = function serialize () {
38372 return rlp.encode(self.raw)
38375 fields.forEach(function (field, i) {
38376 self._fields.push(field.name)
38377 function getter () {
38380 function setter (v) {
38381 v = exports.toBuffer(v)
38383 if (v.toString('hex') === '
00' && !field.allowZero) {
38384 v = Buffer.allocUnsafe(
0)
38387 if (field.allowLess && field.length) {
38388 v = exports.stripZeros(v)
38389 assert(field.length
>= v.length, 'The field ' + field.name + ' must not have more ' + field.length + ' bytes')
38390 } else if (!(field.allowZero && v.length ===
0) && field.length) {
38391 assert(field.length === v.length, 'The field ' + field.name + ' must have byte length of ' + field.length)
38397 Object.defineProperty(self, field.name, {
38399 configurable: true,
38404 if (field.default) {
38405 self[field.name] = field.default
38410 Object.defineProperty(self, field.alias, {
38412 configurable: true,
38419 // if the constuctor is passed data
38421 if (typeof data === 'string') {
38422 data = Buffer.from(exports.stripHexPrefix(data), 'hex')
38425 if (Buffer.isBuffer(data)) {
38426 data = rlp.decode(data)
38429 if (Array.isArray(data)) {
38430 if (data.length
> self._fields.length) {
38431 throw (new Error('wrong number of fields in data'))
38434 // make sure all the items are buffers
38435 data.forEach(function (d, i) {
38436 self[self._fields[i]] = exports.toBuffer(d)
38438 } else if (typeof data === 'object') {
38439 const keys = Object.keys(data)
38440 fields.forEach(function (field) {
38441 if (keys.indexOf(field.name) !== -
1) self[field.name] = data[field.name]
38442 if (keys.indexOf(field.alias) !== -
1) self[field.alias] = data[field.alias]
38445 throw new Error('invalid data')
38450 }).call(this,require("buffer").Buffer)
38451 },{"assert":
1,"bn.js":
33,"buffer":
5,"create-hash":
36,"ethjs-util":
56,"keccak":
65,"rlp":
72,"secp256k1":
73}],
32:[function(require,module,exports){
38452 (function (Buffer){
38453 // Reference https://github.com/bitcoin/bips/blob/master/bip-
0066.mediawiki
38454 // Format:
0x30 [total-length]
0x02 [R-length] [R]
0x02 [S-length] [S]
38455 // NOTE: SIGHASH byte ignored AND restricted, truncate before use
38457 function check (buffer) {
38458 if (buffer.length <
8) return false
38459 if (buffer.length
> 72) return false
38460 if (buffer[
0] !==
0x30) return false
38461 if (buffer[
1] !== buffer.length -
2) return false
38462 if (buffer[
2] !==
0x02) return false
38464 var lenR = buffer[
3]
38465 if (lenR ===
0) return false
38466 if (
5 + lenR
>= buffer.length) return false
38467 if (buffer[
4 + lenR] !==
0x02) return false
38469 var lenS = buffer[
5 + lenR]
38470 if (lenS ===
0) return false
38471 if ((
6 + lenR + lenS) !== buffer.length) return false
38473 if (buffer[
4] &
0x80) return false
38474 if (lenR
> 1 && (buffer[
4] ===
0x00) && !(buffer[
5] &
0x80)) return false
38476 if (buffer[lenR +
6] &
0x80) return false
38477 if (lenS
> 1 && (buffer[lenR +
6] ===
0x00) && !(buffer[lenR +
7] &
0x80)) return false
38481 function decode (buffer) {
38482 if (buffer.length <
8) throw new Error('DER sequence length is too short')
38483 if (buffer.length
> 72) throw new Error('DER sequence length is too long')
38484 if (buffer[
0] !==
0x30) throw new Error('Expected DER sequence')
38485 if (buffer[
1] !== buffer.length -
2) throw new Error('DER sequence length is invalid')
38486 if (buffer[
2] !==
0x02) throw new Error('Expected DER integer')
38488 var lenR = buffer[
3]
38489 if (lenR ===
0) throw new Error('R length is zero')
38490 if (
5 + lenR
>= buffer.length) throw new Error('R length is too long')
38491 if (buffer[
4 + lenR] !==
0x02) throw new Error('Expected DER integer (
2)')
38493 var lenS = buffer[
5 + lenR]
38494 if (lenS ===
0) throw new Error('S length is zero')
38495 if ((
6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')
38497 if (buffer[
4] &
0x80) throw new Error('R value is negative')
38498 if (lenR
> 1 && (buffer[
4] ===
0x00) && !(buffer[
5] &
0x80)) throw new Error('R value excessively padded')
38500 if (buffer[lenR +
6] &
0x80) throw new Error('S value is negative')
38501 if (lenS
> 1 && (buffer[lenR +
6] ===
0x00) && !(buffer[lenR +
7] &
0x80)) throw new Error('S value excessively padded')
38503 // non-BIP66 - extract R, S values
38505 r: buffer.slice(
4,
4 + lenR),
38506 s: buffer.slice(
6 + lenR)
38511 * Expects r and s to be positive DER integers.
38513 * The DER format uses the most significant bit as a sign bit (&
0x80).
38514 * If the significant bit is set AND the integer is positive, a
0x00 is prepended.
38529 *
62300 =
> 0x00f35c
38530 * -
62300 =
> 0xff0ca4
38532 function encode (r, s) {
38533 var lenR = r.length
38534 var lenS = s.length
38535 if (lenR ===
0) throw new Error('R length is zero')
38536 if (lenS ===
0) throw new Error('S length is zero')
38537 if (lenR
> 33) throw new Error('R length is too long')
38538 if (lenS
> 33) throw new Error('S length is too long')
38539 if (r[
0] &
0x80) throw new Error('R value is negative')
38540 if (s[
0] &
0x80) throw new Error('S value is negative')
38541 if (lenR
> 1 && (r[
0] ===
0x00) && !(r[
1] &
0x80)) throw new Error('R value excessively padded')
38542 if (lenS
> 1 && (s[
0] ===
0x00) && !(s[
1] &
0x80)) throw new Error('S value excessively padded')
38544 var signature = new Buffer(
6 + lenR + lenS)
38546 //
0x30 [total-length]
0x02 [R-length] [R]
0x02 [S-length] [S]
38547 signature[
0] =
0x30
38548 signature[
1] = signature.length -
2
38549 signature[
2] =
0x02
38550 signature[
3] = r.length
38551 r.copy(signature,
4)
38552 signature[
4 + lenR] =
0x02
38553 signature[
5 + lenR] = s.length
38554 s.copy(signature,
6 + lenR)
38565 }).call(this,require(
"buffer").Buffer)
38566 },{
"buffer":
5}],
33:[function(require,module,exports){
38567 (function (module, exports) {
38571 function assert (val, msg) {
38572 if (!val) throw new Error(msg || 'Assertion failed');
38575 // Could use `inherits` module, but don't want to move from single file
38576 // architecture yet.
38577 function inherits (ctor, superCtor) {
38578 ctor.super_ = superCtor;
38579 var TempCtor = function () {};
38580 TempCtor.prototype = superCtor.prototype;
38581 ctor.prototype = new TempCtor();
38582 ctor.prototype.constructor = ctor;
38587 function BN (number, base, endian) {
38588 if (BN.isBN(number)) {
38596 // Reduction context
38599 if (number !== null) {
38600 if (base === 'le' || base === 'be') {
38605 this._init(number ||
0, base ||
10, endian || 'be');
38608 if (typeof module === 'object') {
38609 module.exports = BN;
38619 Buffer = require('buf' + 'fer').Buffer;
38623 BN.isBN = function isBN (num) {
38624 if (num instanceof BN) {
38628 return num !== null && typeof num === 'object' &&
38629 num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
38632 BN.max = function max (left, right) {
38633 if (left.cmp(right)
> 0) return left;
38637 BN.min = function min (left, right) {
38638 if (left.cmp(right) <
0) return left;
38642 BN.prototype._init = function init (number, base, endian) {
38643 if (typeof number === 'number') {
38644 return this._initNumber(number, base, endian);
38647 if (typeof number === 'object') {
38648 return this._initArray(number, base, endian);
38651 if (base === 'hex') {
38654 assert(base === (base |
0) && base
>=
2 && base <=
36);
38656 number = number.toString().replace(/\s+/g, '');
38658 if (number[
0] === '-') {
38663 this._parseHex(number, start);
38665 this._parseBase(number, base, start);
38668 if (number[
0] === '-') {
38674 if (endian !== 'le') return;
38676 this._initArray(this.toArray(), base, endian);
38679 BN.prototype._initNumber = function _initNumber (number, base, endian) {
38684 if (number <
0x4000000) {
38685 this.words = [ number &
0x3ffffff ];
38687 } else if (number <
0x10000000000000) {
38689 number &
0x3ffffff,
38690 (number /
0x4000000) &
0x3ffffff
38694 assert(number <
0x20000000000000); //
2 ^
53 (unsafe)
38696 number &
0x3ffffff,
38697 (number /
0x4000000) &
0x3ffffff,
38703 if (endian !== 'le') return;
38705 // Reverse the bytes
38706 this._initArray(this.toArray(), base, endian);
38709 BN.prototype._initArray = function _initArray (number, base, endian) {
38710 // Perhaps a Uint8Array
38711 assert(typeof number.length === 'number');
38712 if (number.length <=
0) {
38713 this.words = [
0 ];
38718 this.length = Math.ceil(number.length /
3);
38719 this.words = new Array(this.length);
38720 for (var i =
0; i < this.length; i++) {
38726 if (endian === 'be') {
38727 for (i = number.length -
1, j =
0; i
>=
0; i -=
3) {
38728 w = number[i] | (number[i -
1] <<
8) | (number[i -
2] <<
16);
38729 this.words[j] |= (w << off) &
0x3ffffff;
38730 this.words[j +
1] = (w
>>> (
26 - off)) &
0x3ffffff;
38737 } else if (endian === 'le') {
38738 for (i =
0, j =
0; i < number.length; i +=
3) {
38739 w = number[i] | (number[i +
1] <<
8) | (number[i +
2] <<
16);
38740 this.words[j] |= (w << off) &
0x3ffffff;
38741 this.words[j +
1] = (w
>>> (
26 - off)) &
0x3ffffff;
38749 return this.strip();
38752 function parseHex (str, start, end) {
38754 var len = Math.min(str.length, end);
38755 for (var i = start; i < len; i++) {
38756 var c = str.charCodeAt(i) -
48;
38761 if (c
>=
49 && c <=
54) {
38765 } else if (c
>=
17 && c <=
22) {
38776 BN.prototype._parseHex = function _parseHex (number, start) {
38777 // Create possibly bigger array to ensure that it fits the number
38778 this.length = Math.ceil((number.length - start) /
6);
38779 this.words = new Array(this.length);
38780 for (var i =
0; i < this.length; i++) {
38785 // Scan
24-bit chunks and add them to the number
38787 for (i = number.length -
6, j =
0; i
>= start; i -=
6) {
38788 w = parseHex(number, i, i +
6);
38789 this.words[j] |= (w << off) &
0x3ffffff;
38790 // NOTE: `
0x3fffff` is intentional here,
26bits max shift +
24bit hex limb
38791 this.words[j +
1] |= w
>>> (
26 - off) &
0x3fffff;
38798 if (i +
6 !== start) {
38799 w = parseHex(number, start, i +
6);
38800 this.words[j] |= (w << off) &
0x3ffffff;
38801 this.words[j +
1] |= w
>>> (
26 - off) &
0x3fffff;
38806 function parseBase (str, start, end, mul) {
38808 var len = Math.min(str.length, end);
38809 for (var i = start; i < len; i++) {
38810 var c = str.charCodeAt(i) -
48;
38819 } else if (c
>=
17) {
38830 BN.prototype._parseBase = function _parseBase (number, base, start) {
38831 // Initialize as zero
38832 this.words = [
0 ];
38835 // Find length of limb in base
38836 for (var limbLen =
0, limbPow =
1; limbPow <=
0x3ffffff; limbPow *= base) {
38840 limbPow = (limbPow / base) |
0;
38842 var total = number.length - start;
38843 var mod = total % limbLen;
38844 var end = Math.min(total, total - mod) + start;
38847 for (var i = start; i < end; i += limbLen) {
38848 word = parseBase(number, i, i + limbLen, base);
38850 this.imuln(limbPow);
38851 if (this.words[
0] + word <
0x4000000) {
38852 this.words[
0] += word;
38860 word = parseBase(number, i, number.length, base);
38862 for (i =
0; i < mod; i++) {
38867 if (this.words[
0] + word <
0x4000000) {
38868 this.words[
0] += word;
38875 BN.prototype.copy = function copy (dest) {
38876 dest.words = new Array(this.length);
38877 for (var i =
0; i < this.length; i++) {
38878 dest.words[i] = this.words[i];
38880 dest.length = this.length;
38881 dest.negative = this.negative;
38882 dest.red = this.red;
38885 BN.prototype.clone = function clone () {
38886 var r = new BN(null);
38891 BN.prototype._expand = function _expand (size) {
38892 while (this.length < size) {
38893 this.words[this.length++] =
0;
38898 // Remove leading `
0` from `this`
38899 BN.prototype.strip = function strip () {
38900 while (this.length
> 1 && this.words[this.length -
1] ===
0) {
38903 return this._normSign();
38906 BN.prototype._normSign = function _normSign () {
38908 if (this.length ===
1 && this.words[
0] ===
0) {
38914 BN.prototype.inspect = function inspect () {
38915 return (this.red ? '
<BN-R: ' : '
<BN: ') + this.toString(
16) + '
>';
38921 var groupSizes = [];
38922 var groupBases = [];
38926 while (++i < BN.wordSize) {
38935 while (++base <
36 +
1) {
38938 while (groupBase < (
1 << BN.wordSize) / base) {
38942 groupSizes[base] = groupSize;
38943 groupBases[base] = groupBase;
38965 '
0000000000000000',
38966 '
00000000000000000',
38967 '
000000000000000000',
38968 '
0000000000000000000',
38969 '
00000000000000000000',
38970 '
000000000000000000000',
38971 '
0000000000000000000000',
38972 '
00000000000000000000000',
38973 '
000000000000000000000000',
38974 '
0000000000000000000000000'
38979 25,
16,
12,
11,
10,
9,
8,
38980 8,
7,
7,
7,
7,
6,
6,
38981 6,
6,
6,
6,
6,
5,
5,
38982 5,
5,
5,
5,
5,
5,
5,
38983 5,
5,
5,
5,
5,
5,
5
38988 33554432,
43046721,
16777216,
48828125,
60466176,
40353607,
16777216,
38989 43046721,
10000000,
19487171,
35831808,
62748517,
7529536,
11390625,
38990 16777216,
24137569,
34012224,
47045881,
64000000,
4084101,
5153632,
38991 6436343,
7962624,
9765625,
11881376,
14348907,
17210368,
20511149,
38992 24300000,
28629151,
33554432,
39135393,
45435424,
52521875,
60466176
38995 BN.prototype.toString = function toString (base, padding) {
38997 padding = padding |
0 ||
1;
39000 if (base ===
16 || base === 'hex') {
39004 for (var i =
0; i < this.length; i++) {
39005 var w = this.words[i];
39006 var word = (((w << off) | carry) &
0xffffff).toString(
16);
39007 carry = (w
>>> (
24 - off)) &
0xffffff;
39008 if (carry !==
0 || i !== this.length -
1) {
39009 out = zeros[
6 - word.length] + word + out;
39020 out = carry.toString(
16) + out;
39022 while (out.length % padding !==
0) {
39025 if (this.negative !==
0) {
39031 if (base === (base |
0) && base
>=
2 && base <=
36) {
39032 // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));
39033 var groupSize = groupSizes[base];
39034 // var groupBase = Math.pow(base, groupSize);
39035 var groupBase = groupBases[base];
39037 var c = this.clone();
39039 while (!c.isZero()) {
39040 var r = c.modn(groupBase).toString(base);
39041 c = c.idivn(groupBase);
39044 out = zeros[groupSize - r.length] + r + out;
39049 if (this.isZero()) {
39052 while (out.length % padding !==
0) {
39055 if (this.negative !==
0) {
39061 assert(false, 'Base should be between
2 and
36');
39064 BN.prototype.toNumber = function toNumber () {
39065 var ret = this.words[
0];
39066 if (this.length ===
2) {
39067 ret += this.words[
1] *
0x4000000;
39068 } else if (this.length ===
3 && this.words[
2] ===
0x01) {
39069 // NOTE: at this stage it is known that the top bit is set
39070 ret +=
0x10000000000000 + (this.words[
1] *
0x4000000);
39071 } else if (this.length
> 2) {
39072 assert(false, 'Number can only safely store up to
53 bits');
39074 return (this.negative !==
0) ? -ret : ret;
39077 BN.prototype.toJSON = function toJSON () {
39078 return this.toString(
16);
39081 BN.prototype.toBuffer = function toBuffer (endian, length) {
39082 assert(typeof Buffer !== 'undefined');
39083 return this.toArrayLike(Buffer, endian, length);
39086 BN.prototype.toArray = function toArray (endian, length) {
39087 return this.toArrayLike(Array, endian, length);
39090 BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {
39091 var byteLength = this.byteLength();
39092 var reqLength = length || Math.max(
1, byteLength);
39093 assert(byteLength <= reqLength, 'byte array longer than desired length');
39094 assert(reqLength
> 0, 'Requested array length <=
0');
39097 var littleEndian = endian === 'le';
39098 var res = new ArrayType(reqLength);
39101 var q = this.clone();
39102 if (!littleEndian) {
39103 // Assume big-endian
39104 for (i =
0; i < reqLength - byteLength; i++) {
39108 for (i =
0; !q.isZero(); i++) {
39112 res[reqLength - i -
1] = b;
39115 for (i =
0; !q.isZero(); i++) {
39122 for (; i < reqLength; i++) {
39131 BN.prototype._countBits = function _countBits (w) {
39132 return
32 - Math.clz32(w);
39135 BN.prototype._countBits = function _countBits (w) {
39158 BN.prototype._zeroBits = function _zeroBits (w) {
39160 if (w ===
0) return
26;
39164 if ((t &
0x1fff) ===
0) {
39168 if ((t &
0x7f) ===
0) {
39172 if ((t &
0xf) ===
0) {
39176 if ((t &
0x3) ===
0) {
39180 if ((t &
0x1) ===
0) {
39186 // Return number of used bits in a BN
39187 BN.prototype.bitLength = function bitLength () {
39188 var w = this.words[this.length -
1];
39189 var hi = this._countBits(w);
39190 return (this.length -
1) *
26 + hi;
39193 function toBitArray (num) {
39194 var w = new Array(num.bitLength());
39196 for (var bit =
0; bit < w.length; bit++) {
39197 var off = (bit /
26) |
0;
39198 var wbit = bit %
26;
39200 w[bit] = (num.words[off] & (
1 << wbit))
>>> wbit;
39206 // Number of trailing zero bits
39207 BN.prototype.zeroBits = function zeroBits () {
39208 if (this.isZero()) return
0;
39211 for (var i =
0; i < this.length; i++) {
39212 var b = this._zeroBits(this.words[i]);
39214 if (b !==
26) break;
39219 BN.prototype.byteLength = function byteLength () {
39220 return Math.ceil(this.bitLength() /
8);
39223 BN.prototype.toTwos = function toTwos (width) {
39224 if (this.negative !==
0) {
39225 return this.abs().inotn(width).iaddn(
1);
39227 return this.clone();
39230 BN.prototype.fromTwos = function fromTwos (width) {
39231 if (this.testn(width -
1)) {
39232 return this.notn(width).iaddn(
1).ineg();
39234 return this.clone();
39237 BN.prototype.isNeg = function isNeg () {
39238 return this.negative !==
0;
39241 // Return negative clone of `this`
39242 BN.prototype.neg = function neg () {
39243 return this.clone().ineg();
39246 BN.prototype.ineg = function ineg () {
39247 if (!this.isZero()) {
39248 this.negative ^=
1;
39254 // Or `num` with `this` in-place
39255 BN.prototype.iuor = function iuor (num) {
39256 while (this.length < num.length) {
39257 this.words[this.length++] =
0;
39260 for (var i =
0; i < num.length; i++) {
39261 this.words[i] = this.words[i] | num.words[i];
39264 return this.strip();
39267 BN.prototype.ior = function ior (num) {
39268 assert((this.negative | num.negative) ===
0);
39269 return this.iuor(num);
39272 // Or `num` with `this`
39273 BN.prototype.or = function or (num) {
39274 if (this.length
> num.length) return this.clone().ior(num);
39275 return num.clone().ior(this);
39278 BN.prototype.uor = function uor (num) {
39279 if (this.length
> num.length) return this.clone().iuor(num);
39280 return num.clone().iuor(this);
39283 // And `num` with `this` in-place
39284 BN.prototype.iuand = function iuand (num) {
39285 // b = min-length(num, this)
39287 if (this.length
> num.length) {
39293 for (var i =
0; i < b.length; i++) {
39294 this.words[i] = this.words[i] & num.words[i];
39297 this.length = b.length;
39299 return this.strip();
39302 BN.prototype.iand = function iand (num) {
39303 assert((this.negative | num.negative) ===
0);
39304 return this.iuand(num);
39307 // And `num` with `this`
39308 BN.prototype.and = function and (num) {
39309 if (this.length
> num.length) return this.clone().iand(num);
39310 return num.clone().iand(this);
39313 BN.prototype.uand = function uand (num) {
39314 if (this.length
> num.length) return this.clone().iuand(num);
39315 return num.clone().iuand(this);
39318 // Xor `num` with `this` in-place
39319 BN.prototype.iuxor = function iuxor (num) {
39320 // a.length
> b.length
39323 if (this.length
> num.length) {
39331 for (var i =
0; i < b.length; i++) {
39332 this.words[i] = a.words[i] ^ b.words[i];
39336 for (; i < a.length; i++) {
39337 this.words[i] = a.words[i];
39341 this.length = a.length;
39343 return this.strip();
39346 BN.prototype.ixor = function ixor (num) {
39347 assert((this.negative | num.negative) ===
0);
39348 return this.iuxor(num);
39351 // Xor `num` with `this`
39352 BN.prototype.xor = function xor (num) {
39353 if (this.length
> num.length) return this.clone().ixor(num);
39354 return num.clone().ixor(this);
39357 BN.prototype.uxor = function uxor (num) {
39358 if (this.length
> num.length) return this.clone().iuxor(num);
39359 return num.clone().iuxor(this);
39362 // Not ``this`` with ``width`` bitwidth
39363 BN.prototype.inotn = function inotn (width) {
39364 assert(typeof width === 'number' && width
>=
0);
39366 var bytesNeeded = Math.ceil(width /
26) |
0;
39367 var bitsLeft = width %
26;
39369 // Extend the buffer with leading zeroes
39370 this._expand(bytesNeeded);
39372 if (bitsLeft
> 0) {
39376 // Handle complete words
39377 for (var i =
0; i < bytesNeeded; i++) {
39378 this.words[i] = ~this.words[i] &
0x3ffffff;
39381 // Handle the residue
39382 if (bitsLeft
> 0) {
39383 this.words[i] = ~this.words[i] & (
0x3ffffff >> (
26 - bitsLeft));
39386 // And remove leading zeroes
39387 return this.strip();
39390 BN.prototype.notn = function notn (width) {
39391 return this.clone().inotn(width);
39394 // Set `bit` of `this`
39395 BN.prototype.setn = function setn (bit, val) {
39396 assert(typeof bit === 'number' && bit
>=
0);
39398 var off = (bit /
26) |
0;
39399 var wbit = bit %
26;
39401 this._expand(off +
1);
39404 this.words[off] = this.words[off] | (
1 << wbit);
39406 this.words[off] = this.words[off] & ~(
1 << wbit);
39409 return this.strip();
39412 // Add `num` to `this` in-place
39413 BN.prototype.iadd = function iadd (num) {
39416 // negative + positive
39417 if (this.negative !==
0 && num.negative ===
0) {
39419 r = this.isub(num);
39420 this.negative ^=
1;
39421 return this._normSign();
39423 // positive + negative
39424 } else if (this.negative ===
0 && num.negative !==
0) {
39426 r = this.isub(num);
39428 return r._normSign();
39431 // a.length
> b.length
39433 if (this.length
> num.length) {
39442 for (var i =
0; i < b.length; i++) {
39443 r = (a.words[i] |
0) + (b.words[i] |
0) + carry;
39444 this.words[i] = r &
0x3ffffff;
39447 for (; carry !==
0 && i < a.length; i++) {
39448 r = (a.words[i] |
0) + carry;
39449 this.words[i] = r &
0x3ffffff;
39453 this.length = a.length;
39455 this.words[this.length] = carry;
39457 // Copy the rest of the words
39458 } else if (a !== this) {
39459 for (; i < a.length; i++) {
39460 this.words[i] = a.words[i];
39467 // Add `num` to `this`
39468 BN.prototype.add = function add (num) {
39470 if (num.negative !==
0 && this.negative ===
0) {
39472 res = this.sub(num);
39475 } else if (num.negative ===
0 && this.negative !==
0) {
39477 res = num.sub(this);
39482 if (this.length
> num.length) return this.clone().iadd(num);
39484 return num.clone().iadd(this);
39487 // Subtract `num` from `this` in-place
39488 BN.prototype.isub = function isub (num) {
39489 // this - (-num) = this + num
39490 if (num.negative !==
0) {
39492 var r = this.iadd(num);
39494 return r._normSign();
39496 // -this - num = -(this + num)
39497 } else if (this.negative !==
0) {
39501 return this._normSign();
39504 // At this point both numbers are positive
39505 var cmp = this.cmp(num);
39507 // Optimization - zeroify
39526 for (var i =
0; i < b.length; i++) {
39527 r = (a.words[i] |
0) - (b.words[i] |
0) + carry;
39529 this.words[i] = r &
0x3ffffff;
39531 for (; carry !==
0 && i < a.length; i++) {
39532 r = (a.words[i] |
0) + carry;
39534 this.words[i] = r &
0x3ffffff;
39537 // Copy rest of the words
39538 if (carry ===
0 && i < a.length && a !== this) {
39539 for (; i < a.length; i++) {
39540 this.words[i] = a.words[i];
39544 this.length = Math.max(this.length, i);
39550 return this.strip();
39553 // Subtract `num` from `this`
39554 BN.prototype.sub = function sub (num) {
39555 return this.clone().isub(num);
39558 function smallMulTo (self, num, out) {
39559 out.negative = num.negative ^ self.negative;
39560 var len = (self.length + num.length) |
0;
39562 len = (len -
1) |
0;
39564 // Peel one iteration (compiler can't do it, because of code complexity)
39565 var a = self.words[
0] |
0;
39566 var b = num.words[
0] |
0;
39569 var lo = r &
0x3ffffff;
39570 var carry = (r /
0x4000000) |
0;
39573 for (var k =
1; k < len; k++) {
39574 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
39575 // note that ncarry could be
>=
0x3ffffff
39576 var ncarry = carry
>>> 26;
39577 var rword = carry &
0x3ffffff;
39578 var maxJ = Math.min(k, num.length -
1);
39579 for (var j = Math.max(
0, k - self.length +
1); j <= maxJ; j++) {
39580 var i = (k - j) |
0;
39581 a = self.words[i] |
0;
39582 b = num.words[j] |
0;
39584 ncarry += (r /
0x4000000) |
0;
39585 rword = r &
0x3ffffff;
39587 out.words[k] = rword |
0;
39588 carry = ncarry |
0;
39591 out.words[k] = carry |
0;
39596 return out.strip();
39599 // TODO(indutny): it may be reasonable to omit it for users who don't need
39600 // to work with
256-bit numbers, otherwise it gives
20% improvement for
256-bit
39601 // multiplication (like elliptic secp256k1).
39602 var comb10MulTo = function comb10MulTo (self, num, out) {
39603 var a = self.words;
39611 var al0 = a0 &
0x1fff;
39612 var ah0 = a0
>>> 13;
39614 var al1 = a1 &
0x1fff;
39615 var ah1 = a1
>>> 13;
39617 var al2 = a2 &
0x1fff;
39618 var ah2 = a2
>>> 13;
39620 var al3 = a3 &
0x1fff;
39621 var ah3 = a3
>>> 13;
39623 var al4 = a4 &
0x1fff;
39624 var ah4 = a4
>>> 13;
39626 var al5 = a5 &
0x1fff;
39627 var ah5 = a5
>>> 13;
39629 var al6 = a6 &
0x1fff;
39630 var ah6 = a6
>>> 13;
39632 var al7 = a7 &
0x1fff;
39633 var ah7 = a7
>>> 13;
39635 var al8 = a8 &
0x1fff;
39636 var ah8 = a8
>>> 13;
39638 var al9 = a9 &
0x1fff;
39639 var ah9 = a9
>>> 13;
39641 var bl0 = b0 &
0x1fff;
39642 var bh0 = b0
>>> 13;
39644 var bl1 = b1 &
0x1fff;
39645 var bh1 = b1
>>> 13;
39647 var bl2 = b2 &
0x1fff;
39648 var bh2 = b2
>>> 13;
39650 var bl3 = b3 &
0x1fff;
39651 var bh3 = b3
>>> 13;
39653 var bl4 = b4 &
0x1fff;
39654 var bh4 = b4
>>> 13;
39656 var bl5 = b5 &
0x1fff;
39657 var bh5 = b5
>>> 13;
39659 var bl6 = b6 &
0x1fff;
39660 var bh6 = b6
>>> 13;
39662 var bl7 = b7 &
0x1fff;
39663 var bh7 = b7
>>> 13;
39665 var bl8 = b8 &
0x1fff;
39666 var bh8 = b8
>>> 13;
39668 var bl9 = b9 &
0x1fff;
39669 var bh9 = b9
>>> 13;
39671 out.negative = self.negative ^ num.negative;
39674 lo = Math.imul(al0, bl0);
39675 mid = Math.imul(al0, bh0);
39676 mid = (mid + Math.imul(ah0, bl0)) |
0;
39677 hi = Math.imul(ah0, bh0);
39678 var w0 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
39679 c = (((hi + (mid
>>> 13)) |
0) + (w0
>>> 26)) |
0;
39682 lo = Math.imul(al1, bl0);
39683 mid = Math.imul(al1, bh0);
39684 mid = (mid + Math.imul(ah1, bl0)) |
0;
39685 hi = Math.imul(ah1, bh0);
39686 lo = (lo + Math.imul(al0, bl1)) |
0;
39687 mid = (mid + Math.imul(al0, bh1)) |
0;
39688 mid = (mid + Math.imul(ah0, bl1)) |
0;
39689 hi = (hi + Math.imul(ah0, bh1)) |
0;
39690 var w1 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
39691 c = (((hi + (mid
>>> 13)) |
0) + (w1
>>> 26)) |
0;
39694 lo = Math.imul(al2, bl0);
39695 mid = Math.imul(al2, bh0);
39696 mid = (mid + Math.imul(ah2, bl0)) |
0;
39697 hi = Math.imul(ah2, bh0);
39698 lo = (lo + Math.imul(al1, bl1)) |
0;
39699 mid = (mid + Math.imul(al1, bh1)) |
0;
39700 mid = (mid + Math.imul(ah1, bl1)) |
0;
39701 hi = (hi + Math.imul(ah1, bh1)) |
0;
39702 lo = (lo + Math.imul(al0, bl2)) |
0;
39703 mid = (mid + Math.imul(al0, bh2)) |
0;
39704 mid = (mid + Math.imul(ah0, bl2)) |
0;
39705 hi = (hi + Math.imul(ah0, bh2)) |
0;
39706 var w2 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
39707 c = (((hi + (mid
>>> 13)) |
0) + (w2
>>> 26)) |
0;
39710 lo = Math.imul(al3, bl0);
39711 mid = Math.imul(al3, bh0);
39712 mid = (mid + Math.imul(ah3, bl0)) |
0;
39713 hi = Math.imul(ah3, bh0);
39714 lo = (lo + Math.imul(al2, bl1)) |
0;
39715 mid = (mid + Math.imul(al2, bh1)) |
0;
39716 mid = (mid + Math.imul(ah2, bl1)) |
0;
39717 hi = (hi + Math.imul(ah2, bh1)) |
0;
39718 lo = (lo + Math.imul(al1, bl2)) |
0;
39719 mid = (mid + Math.imul(al1, bh2)) |
0;
39720 mid = (mid + Math.imul(ah1, bl2)) |
0;
39721 hi = (hi + Math.imul(ah1, bh2)) |
0;
39722 lo = (lo + Math.imul(al0, bl3)) |
0;
39723 mid = (mid + Math.imul(al0, bh3)) |
0;
39724 mid = (mid + Math.imul(ah0, bl3)) |
0;
39725 hi = (hi + Math.imul(ah0, bh3)) |
0;
39726 var w3 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
39727 c = (((hi + (mid
>>> 13)) |
0) + (w3
>>> 26)) |
0;
39730 lo = Math.imul(al4, bl0);
39731 mid = Math.imul(al4, bh0);
39732 mid = (mid + Math.imul(ah4, bl0)) |
0;
39733 hi = Math.imul(ah4, bh0);
39734 lo = (lo + Math.imul(al3, bl1)) |
0;
39735 mid = (mid + Math.imul(al3, bh1)) |
0;
39736 mid = (mid + Math.imul(ah3, bl1)) |
0;
39737 hi = (hi + Math.imul(ah3, bh1)) |
0;
39738 lo = (lo + Math.imul(al2, bl2)) |
0;
39739 mid = (mid + Math.imul(al2, bh2)) |
0;
39740 mid = (mid + Math.imul(ah2, bl2)) |
0;
39741 hi = (hi + Math.imul(ah2, bh2)) |
0;
39742 lo = (lo + Math.imul(al1, bl3)) |
0;
39743 mid = (mid + Math.imul(al1, bh3)) |
0;
39744 mid = (mid + Math.imul(ah1, bl3)) |
0;
39745 hi = (hi + Math.imul(ah1, bh3)) |
0;
39746 lo = (lo + Math.imul(al0, bl4)) |
0;
39747 mid = (mid + Math.imul(al0, bh4)) |
0;
39748 mid = (mid + Math.imul(ah0, bl4)) |
0;
39749 hi = (hi + Math.imul(ah0, bh4)) |
0;
39750 var w4 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
39751 c = (((hi + (mid
>>> 13)) |
0) + (w4
>>> 26)) |
0;
39754 lo = Math.imul(al5, bl0);
39755 mid = Math.imul(al5, bh0);
39756 mid = (mid + Math.imul(ah5, bl0)) |
0;
39757 hi = Math.imul(ah5, bh0);
39758 lo = (lo + Math.imul(al4, bl1)) |
0;
39759 mid = (mid + Math.imul(al4, bh1)) |
0;
39760 mid = (mid + Math.imul(ah4, bl1)) |
0;
39761 hi = (hi + Math.imul(ah4, bh1)) |
0;
39762 lo = (lo + Math.imul(al3, bl2)) |
0;
39763 mid = (mid + Math.imul(al3, bh2)) |
0;
39764 mid = (mid + Math.imul(ah3, bl2)) |
0;
39765 hi = (hi + Math.imul(ah3, bh2)) |
0;
39766 lo = (lo + Math.imul(al2, bl3)) |
0;
39767 mid = (mid + Math.imul(al2, bh3)) |
0;
39768 mid = (mid + Math.imul(ah2, bl3)) |
0;
39769 hi = (hi + Math.imul(ah2, bh3)) |
0;
39770 lo = (lo + Math.imul(al1, bl4)) |
0;
39771 mid = (mid + Math.imul(al1, bh4)) |
0;
39772 mid = (mid + Math.imul(ah1, bl4)) |
0;
39773 hi = (hi + Math.imul(ah1, bh4)) |
0;
39774 lo = (lo + Math.imul(al0, bl5)) |
0;
39775 mid = (mid + Math.imul(al0, bh5)) |
0;
39776 mid = (mid + Math.imul(ah0, bl5)) |
0;
39777 hi = (hi + Math.imul(ah0, bh5)) |
0;
39778 var w5 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
39779 c = (((hi + (mid
>>> 13)) |
0) + (w5
>>> 26)) |
0;
39782 lo = Math.imul(al6, bl0);
39783 mid = Math.imul(al6, bh0);
39784 mid = (mid + Math.imul(ah6, bl0)) |
0;
39785 hi = Math.imul(ah6, bh0);
39786 lo = (lo + Math.imul(al5, bl1)) |
0;
39787 mid = (mid + Math.imul(al5, bh1)) |
0;
39788 mid = (mid + Math.imul(ah5, bl1)) |
0;
39789 hi = (hi + Math.imul(ah5, bh1)) |
0;
39790 lo = (lo + Math.imul(al4, bl2)) |
0;
39791 mid = (mid + Math.imul(al4, bh2)) |
0;
39792 mid = (mid + Math.imul(ah4, bl2)) |
0;
39793 hi = (hi + Math.imul(ah4, bh2)) |
0;
39794 lo = (lo + Math.imul(al3, bl3)) |
0;
39795 mid = (mid + Math.imul(al3, bh3)) |
0;
39796 mid = (mid + Math.imul(ah3, bl3)) |
0;
39797 hi = (hi + Math.imul(ah3, bh3)) |
0;
39798 lo = (lo + Math.imul(al2, bl4)) |
0;
39799 mid = (mid + Math.imul(al2, bh4)) |
0;
39800 mid = (mid + Math.imul(ah2, bl4)) |
0;
39801 hi = (hi + Math.imul(ah2, bh4)) |
0;
39802 lo = (lo + Math.imul(al1, bl5)) |
0;
39803 mid = (mid + Math.imul(al1, bh5)) |
0;
39804 mid = (mid + Math.imul(ah1, bl5)) |
0;
39805 hi = (hi + Math.imul(ah1, bh5)) |
0;
39806 lo = (lo + Math.imul(al0, bl6)) |
0;
39807 mid = (mid + Math.imul(al0, bh6)) |
0;
39808 mid = (mid + Math.imul(ah0, bl6)) |
0;
39809 hi = (hi + Math.imul(ah0, bh6)) |
0;
39810 var w6 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
39811 c = (((hi + (mid
>>> 13)) |
0) + (w6
>>> 26)) |
0;
39814 lo = Math.imul(al7, bl0);
39815 mid = Math.imul(al7, bh0);
39816 mid = (mid + Math.imul(ah7, bl0)) |
0;
39817 hi = Math.imul(ah7, bh0);
39818 lo = (lo + Math.imul(al6, bl1)) |
0;
39819 mid = (mid + Math.imul(al6, bh1)) |
0;
39820 mid = (mid + Math.imul(ah6, bl1)) |
0;
39821 hi = (hi + Math.imul(ah6, bh1)) |
0;
39822 lo = (lo + Math.imul(al5, bl2)) |
0;
39823 mid = (mid + Math.imul(al5, bh2)) |
0;
39824 mid = (mid + Math.imul(ah5, bl2)) |
0;
39825 hi = (hi + Math.imul(ah5, bh2)) |
0;
39826 lo = (lo + Math.imul(al4, bl3)) |
0;
39827 mid = (mid + Math.imul(al4, bh3)) |
0;
39828 mid = (mid + Math.imul(ah4, bl3)) |
0;
39829 hi = (hi + Math.imul(ah4, bh3)) |
0;
39830 lo = (lo + Math.imul(al3, bl4)) |
0;
39831 mid = (mid + Math.imul(al3, bh4)) |
0;
39832 mid = (mid + Math.imul(ah3, bl4)) |
0;
39833 hi = (hi + Math.imul(ah3, bh4)) |
0;
39834 lo = (lo + Math.imul(al2, bl5)) |
0;
39835 mid = (mid + Math.imul(al2, bh5)) |
0;
39836 mid = (mid + Math.imul(ah2, bl5)) |
0;
39837 hi = (hi + Math.imul(ah2, bh5)) |
0;
39838 lo = (lo + Math.imul(al1, bl6)) |
0;
39839 mid = (mid + Math.imul(al1, bh6)) |
0;
39840 mid = (mid + Math.imul(ah1, bl6)) |
0;
39841 hi = (hi + Math.imul(ah1, bh6)) |
0;
39842 lo = (lo + Math.imul(al0, bl7)) |
0;
39843 mid = (mid + Math.imul(al0, bh7)) |
0;
39844 mid = (mid + Math.imul(ah0, bl7)) |
0;
39845 hi = (hi + Math.imul(ah0, bh7)) |
0;
39846 var w7 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
39847 c = (((hi + (mid
>>> 13)) |
0) + (w7
>>> 26)) |
0;
39850 lo = Math.imul(al8, bl0);
39851 mid = Math.imul(al8, bh0);
39852 mid = (mid + Math.imul(ah8, bl0)) |
0;
39853 hi = Math.imul(ah8, bh0);
39854 lo = (lo + Math.imul(al7, bl1)) |
0;
39855 mid = (mid + Math.imul(al7, bh1)) |
0;
39856 mid = (mid + Math.imul(ah7, bl1)) |
0;
39857 hi = (hi + Math.imul(ah7, bh1)) |
0;
39858 lo = (lo + Math.imul(al6, bl2)) |
0;
39859 mid = (mid + Math.imul(al6, bh2)) |
0;
39860 mid = (mid + Math.imul(ah6, bl2)) |
0;
39861 hi = (hi + Math.imul(ah6, bh2)) |
0;
39862 lo = (lo + Math.imul(al5, bl3)) |
0;
39863 mid = (mid + Math.imul(al5, bh3)) |
0;
39864 mid = (mid + Math.imul(ah5, bl3)) |
0;
39865 hi = (hi + Math.imul(ah5, bh3)) |
0;
39866 lo = (lo + Math.imul(al4, bl4)) |
0;
39867 mid = (mid + Math.imul(al4, bh4)) |
0;
39868 mid = (mid + Math.imul(ah4, bl4)) |
0;
39869 hi = (hi + Math.imul(ah4, bh4)) |
0;
39870 lo = (lo + Math.imul(al3, bl5)) |
0;
39871 mid = (mid + Math.imul(al3, bh5)) |
0;
39872 mid = (mid + Math.imul(ah3, bl5)) |
0;
39873 hi = (hi + Math.imul(ah3, bh5)) |
0;
39874 lo = (lo + Math.imul(al2, bl6)) |
0;
39875 mid = (mid + Math.imul(al2, bh6)) |
0;
39876 mid = (mid + Math.imul(ah2, bl6)) |
0;
39877 hi = (hi + Math.imul(ah2, bh6)) |
0;
39878 lo = (lo + Math.imul(al1, bl7)) |
0;
39879 mid = (mid + Math.imul(al1, bh7)) |
0;
39880 mid = (mid + Math.imul(ah1, bl7)) |
0;
39881 hi = (hi + Math.imul(ah1, bh7)) |
0;
39882 lo = (lo + Math.imul(al0, bl8)) |
0;
39883 mid = (mid + Math.imul(al0, bh8)) |
0;
39884 mid = (mid + Math.imul(ah0, bl8)) |
0;
39885 hi = (hi + Math.imul(ah0, bh8)) |
0;
39886 var w8 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
39887 c = (((hi + (mid
>>> 13)) |
0) + (w8
>>> 26)) |
0;
39890 lo = Math.imul(al9, bl0);
39891 mid = Math.imul(al9, bh0);
39892 mid = (mid + Math.imul(ah9, bl0)) |
0;
39893 hi = Math.imul(ah9, bh0);
39894 lo = (lo + Math.imul(al8, bl1)) |
0;
39895 mid = (mid + Math.imul(al8, bh1)) |
0;
39896 mid = (mid + Math.imul(ah8, bl1)) |
0;
39897 hi = (hi + Math.imul(ah8, bh1)) |
0;
39898 lo = (lo + Math.imul(al7, bl2)) |
0;
39899 mid = (mid + Math.imul(al7, bh2)) |
0;
39900 mid = (mid + Math.imul(ah7, bl2)) |
0;
39901 hi = (hi + Math.imul(ah7, bh2)) |
0;
39902 lo = (lo + Math.imul(al6, bl3)) |
0;
39903 mid = (mid + Math.imul(al6, bh3)) |
0;
39904 mid = (mid + Math.imul(ah6, bl3)) |
0;
39905 hi = (hi + Math.imul(ah6, bh3)) |
0;
39906 lo = (lo + Math.imul(al5, bl4)) |
0;
39907 mid = (mid + Math.imul(al5, bh4)) |
0;
39908 mid = (mid + Math.imul(ah5, bl4)) |
0;
39909 hi = (hi + Math.imul(ah5, bh4)) |
0;
39910 lo = (lo + Math.imul(al4, bl5)) |
0;
39911 mid = (mid + Math.imul(al4, bh5)) |
0;
39912 mid = (mid + Math.imul(ah4, bl5)) |
0;
39913 hi = (hi + Math.imul(ah4, bh5)) |
0;
39914 lo = (lo + Math.imul(al3, bl6)) |
0;
39915 mid = (mid + Math.imul(al3, bh6)) |
0;
39916 mid = (mid + Math.imul(ah3, bl6)) |
0;
39917 hi = (hi + Math.imul(ah3, bh6)) |
0;
39918 lo = (lo + Math.imul(al2, bl7)) |
0;
39919 mid = (mid + Math.imul(al2, bh7)) |
0;
39920 mid = (mid + Math.imul(ah2, bl7)) |
0;
39921 hi = (hi + Math.imul(ah2, bh7)) |
0;
39922 lo = (lo + Math.imul(al1, bl8)) |
0;
39923 mid = (mid + Math.imul(al1, bh8)) |
0;
39924 mid = (mid + Math.imul(ah1, bl8)) |
0;
39925 hi = (hi + Math.imul(ah1, bh8)) |
0;
39926 lo = (lo + Math.imul(al0, bl9)) |
0;
39927 mid = (mid + Math.imul(al0, bh9)) |
0;
39928 mid = (mid + Math.imul(ah0, bl9)) |
0;
39929 hi = (hi + Math.imul(ah0, bh9)) |
0;
39930 var w9 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
39931 c = (((hi + (mid
>>> 13)) |
0) + (w9
>>> 26)) |
0;
39934 lo = Math.imul(al9, bl1);
39935 mid = Math.imul(al9, bh1);
39936 mid = (mid + Math.imul(ah9, bl1)) |
0;
39937 hi = Math.imul(ah9, bh1);
39938 lo = (lo + Math.imul(al8, bl2)) |
0;
39939 mid = (mid + Math.imul(al8, bh2)) |
0;
39940 mid = (mid + Math.imul(ah8, bl2)) |
0;
39941 hi = (hi + Math.imul(ah8, bh2)) |
0;
39942 lo = (lo + Math.imul(al7, bl3)) |
0;
39943 mid = (mid + Math.imul(al7, bh3)) |
0;
39944 mid = (mid + Math.imul(ah7, bl3)) |
0;
39945 hi = (hi + Math.imul(ah7, bh3)) |
0;
39946 lo = (lo + Math.imul(al6, bl4)) |
0;
39947 mid = (mid + Math.imul(al6, bh4)) |
0;
39948 mid = (mid + Math.imul(ah6, bl4)) |
0;
39949 hi = (hi + Math.imul(ah6, bh4)) |
0;
39950 lo = (lo + Math.imul(al5, bl5)) |
0;
39951 mid = (mid + Math.imul(al5, bh5)) |
0;
39952 mid = (mid + Math.imul(ah5, bl5)) |
0;
39953 hi = (hi + Math.imul(ah5, bh5)) |
0;
39954 lo = (lo + Math.imul(al4, bl6)) |
0;
39955 mid = (mid + Math.imul(al4, bh6)) |
0;
39956 mid = (mid + Math.imul(ah4, bl6)) |
0;
39957 hi = (hi + Math.imul(ah4, bh6)) |
0;
39958 lo = (lo + Math.imul(al3, bl7)) |
0;
39959 mid = (mid + Math.imul(al3, bh7)) |
0;
39960 mid = (mid + Math.imul(ah3, bl7)) |
0;
39961 hi = (hi + Math.imul(ah3, bh7)) |
0;
39962 lo = (lo + Math.imul(al2, bl8)) |
0;
39963 mid = (mid + Math.imul(al2, bh8)) |
0;
39964 mid = (mid + Math.imul(ah2, bl8)) |
0;
39965 hi = (hi + Math.imul(ah2, bh8)) |
0;
39966 lo = (lo + Math.imul(al1, bl9)) |
0;
39967 mid = (mid + Math.imul(al1, bh9)) |
0;
39968 mid = (mid + Math.imul(ah1, bl9)) |
0;
39969 hi = (hi + Math.imul(ah1, bh9)) |
0;
39970 var w10 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
39971 c = (((hi + (mid
>>> 13)) |
0) + (w10
>>> 26)) |
0;
39974 lo = Math.imul(al9, bl2);
39975 mid = Math.imul(al9, bh2);
39976 mid = (mid + Math.imul(ah9, bl2)) |
0;
39977 hi = Math.imul(ah9, bh2);
39978 lo = (lo + Math.imul(al8, bl3)) |
0;
39979 mid = (mid + Math.imul(al8, bh3)) |
0;
39980 mid = (mid + Math.imul(ah8, bl3)) |
0;
39981 hi = (hi + Math.imul(ah8, bh3)) |
0;
39982 lo = (lo + Math.imul(al7, bl4)) |
0;
39983 mid = (mid + Math.imul(al7, bh4)) |
0;
39984 mid = (mid + Math.imul(ah7, bl4)) |
0;
39985 hi = (hi + Math.imul(ah7, bh4)) |
0;
39986 lo = (lo + Math.imul(al6, bl5)) |
0;
39987 mid = (mid + Math.imul(al6, bh5)) |
0;
39988 mid = (mid + Math.imul(ah6, bl5)) |
0;
39989 hi = (hi + Math.imul(ah6, bh5)) |
0;
39990 lo = (lo + Math.imul(al5, bl6)) |
0;
39991 mid = (mid + Math.imul(al5, bh6)) |
0;
39992 mid = (mid + Math.imul(ah5, bl6)) |
0;
39993 hi = (hi + Math.imul(ah5, bh6)) |
0;
39994 lo = (lo + Math.imul(al4, bl7)) |
0;
39995 mid = (mid + Math.imul(al4, bh7)) |
0;
39996 mid = (mid + Math.imul(ah4, bl7)) |
0;
39997 hi = (hi + Math.imul(ah4, bh7)) |
0;
39998 lo = (lo + Math.imul(al3, bl8)) |
0;
39999 mid = (mid + Math.imul(al3, bh8)) |
0;
40000 mid = (mid + Math.imul(ah3, bl8)) |
0;
40001 hi = (hi + Math.imul(ah3, bh8)) |
0;
40002 lo = (lo + Math.imul(al2, bl9)) |
0;
40003 mid = (mid + Math.imul(al2, bh9)) |
0;
40004 mid = (mid + Math.imul(ah2, bl9)) |
0;
40005 hi = (hi + Math.imul(ah2, bh9)) |
0;
40006 var w11 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
40007 c = (((hi + (mid
>>> 13)) |
0) + (w11
>>> 26)) |
0;
40010 lo = Math.imul(al9, bl3);
40011 mid = Math.imul(al9, bh3);
40012 mid = (mid + Math.imul(ah9, bl3)) |
0;
40013 hi = Math.imul(ah9, bh3);
40014 lo = (lo + Math.imul(al8, bl4)) |
0;
40015 mid = (mid + Math.imul(al8, bh4)) |
0;
40016 mid = (mid + Math.imul(ah8, bl4)) |
0;
40017 hi = (hi + Math.imul(ah8, bh4)) |
0;
40018 lo = (lo + Math.imul(al7, bl5)) |
0;
40019 mid = (mid + Math.imul(al7, bh5)) |
0;
40020 mid = (mid + Math.imul(ah7, bl5)) |
0;
40021 hi = (hi + Math.imul(ah7, bh5)) |
0;
40022 lo = (lo + Math.imul(al6, bl6)) |
0;
40023 mid = (mid + Math.imul(al6, bh6)) |
0;
40024 mid = (mid + Math.imul(ah6, bl6)) |
0;
40025 hi = (hi + Math.imul(ah6, bh6)) |
0;
40026 lo = (lo + Math.imul(al5, bl7)) |
0;
40027 mid = (mid + Math.imul(al5, bh7)) |
0;
40028 mid = (mid + Math.imul(ah5, bl7)) |
0;
40029 hi = (hi + Math.imul(ah5, bh7)) |
0;
40030 lo = (lo + Math.imul(al4, bl8)) |
0;
40031 mid = (mid + Math.imul(al4, bh8)) |
0;
40032 mid = (mid + Math.imul(ah4, bl8)) |
0;
40033 hi = (hi + Math.imul(ah4, bh8)) |
0;
40034 lo = (lo + Math.imul(al3, bl9)) |
0;
40035 mid = (mid + Math.imul(al3, bh9)) |
0;
40036 mid = (mid + Math.imul(ah3, bl9)) |
0;
40037 hi = (hi + Math.imul(ah3, bh9)) |
0;
40038 var w12 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
40039 c = (((hi + (mid
>>> 13)) |
0) + (w12
>>> 26)) |
0;
40042 lo = Math.imul(al9, bl4);
40043 mid = Math.imul(al9, bh4);
40044 mid = (mid + Math.imul(ah9, bl4)) |
0;
40045 hi = Math.imul(ah9, bh4);
40046 lo = (lo + Math.imul(al8, bl5)) |
0;
40047 mid = (mid + Math.imul(al8, bh5)) |
0;
40048 mid = (mid + Math.imul(ah8, bl5)) |
0;
40049 hi = (hi + Math.imul(ah8, bh5)) |
0;
40050 lo = (lo + Math.imul(al7, bl6)) |
0;
40051 mid = (mid + Math.imul(al7, bh6)) |
0;
40052 mid = (mid + Math.imul(ah7, bl6)) |
0;
40053 hi = (hi + Math.imul(ah7, bh6)) |
0;
40054 lo = (lo + Math.imul(al6, bl7)) |
0;
40055 mid = (mid + Math.imul(al6, bh7)) |
0;
40056 mid = (mid + Math.imul(ah6, bl7)) |
0;
40057 hi = (hi + Math.imul(ah6, bh7)) |
0;
40058 lo = (lo + Math.imul(al5, bl8)) |
0;
40059 mid = (mid + Math.imul(al5, bh8)) |
0;
40060 mid = (mid + Math.imul(ah5, bl8)) |
0;
40061 hi = (hi + Math.imul(ah5, bh8)) |
0;
40062 lo = (lo + Math.imul(al4, bl9)) |
0;
40063 mid = (mid + Math.imul(al4, bh9)) |
0;
40064 mid = (mid + Math.imul(ah4, bl9)) |
0;
40065 hi = (hi + Math.imul(ah4, bh9)) |
0;
40066 var w13 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
40067 c = (((hi + (mid
>>> 13)) |
0) + (w13
>>> 26)) |
0;
40070 lo = Math.imul(al9, bl5);
40071 mid = Math.imul(al9, bh5);
40072 mid = (mid + Math.imul(ah9, bl5)) |
0;
40073 hi = Math.imul(ah9, bh5);
40074 lo = (lo + Math.imul(al8, bl6)) |
0;
40075 mid = (mid + Math.imul(al8, bh6)) |
0;
40076 mid = (mid + Math.imul(ah8, bl6)) |
0;
40077 hi = (hi + Math.imul(ah8, bh6)) |
0;
40078 lo = (lo + Math.imul(al7, bl7)) |
0;
40079 mid = (mid + Math.imul(al7, bh7)) |
0;
40080 mid = (mid + Math.imul(ah7, bl7)) |
0;
40081 hi = (hi + Math.imul(ah7, bh7)) |
0;
40082 lo = (lo + Math.imul(al6, bl8)) |
0;
40083 mid = (mid + Math.imul(al6, bh8)) |
0;
40084 mid = (mid + Math.imul(ah6, bl8)) |
0;
40085 hi = (hi + Math.imul(ah6, bh8)) |
0;
40086 lo = (lo + Math.imul(al5, bl9)) |
0;
40087 mid = (mid + Math.imul(al5, bh9)) |
0;
40088 mid = (mid + Math.imul(ah5, bl9)) |
0;
40089 hi = (hi + Math.imul(ah5, bh9)) |
0;
40090 var w14 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
40091 c = (((hi + (mid
>>> 13)) |
0) + (w14
>>> 26)) |
0;
40094 lo = Math.imul(al9, bl6);
40095 mid = Math.imul(al9, bh6);
40096 mid = (mid + Math.imul(ah9, bl6)) |
0;
40097 hi = Math.imul(ah9, bh6);
40098 lo = (lo + Math.imul(al8, bl7)) |
0;
40099 mid = (mid + Math.imul(al8, bh7)) |
0;
40100 mid = (mid + Math.imul(ah8, bl7)) |
0;
40101 hi = (hi + Math.imul(ah8, bh7)) |
0;
40102 lo = (lo + Math.imul(al7, bl8)) |
0;
40103 mid = (mid + Math.imul(al7, bh8)) |
0;
40104 mid = (mid + Math.imul(ah7, bl8)) |
0;
40105 hi = (hi + Math.imul(ah7, bh8)) |
0;
40106 lo = (lo + Math.imul(al6, bl9)) |
0;
40107 mid = (mid + Math.imul(al6, bh9)) |
0;
40108 mid = (mid + Math.imul(ah6, bl9)) |
0;
40109 hi = (hi + Math.imul(ah6, bh9)) |
0;
40110 var w15 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
40111 c = (((hi + (mid
>>> 13)) |
0) + (w15
>>> 26)) |
0;
40114 lo = Math.imul(al9, bl7);
40115 mid = Math.imul(al9, bh7);
40116 mid = (mid + Math.imul(ah9, bl7)) |
0;
40117 hi = Math.imul(ah9, bh7);
40118 lo = (lo + Math.imul(al8, bl8)) |
0;
40119 mid = (mid + Math.imul(al8, bh8)) |
0;
40120 mid = (mid + Math.imul(ah8, bl8)) |
0;
40121 hi = (hi + Math.imul(ah8, bh8)) |
0;
40122 lo = (lo + Math.imul(al7, bl9)) |
0;
40123 mid = (mid + Math.imul(al7, bh9)) |
0;
40124 mid = (mid + Math.imul(ah7, bl9)) |
0;
40125 hi = (hi + Math.imul(ah7, bh9)) |
0;
40126 var w16 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
40127 c = (((hi + (mid
>>> 13)) |
0) + (w16
>>> 26)) |
0;
40130 lo = Math.imul(al9, bl8);
40131 mid = Math.imul(al9, bh8);
40132 mid = (mid + Math.imul(ah9, bl8)) |
0;
40133 hi = Math.imul(ah9, bh8);
40134 lo = (lo + Math.imul(al8, bl9)) |
0;
40135 mid = (mid + Math.imul(al8, bh9)) |
0;
40136 mid = (mid + Math.imul(ah8, bl9)) |
0;
40137 hi = (hi + Math.imul(ah8, bh9)) |
0;
40138 var w17 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
40139 c = (((hi + (mid
>>> 13)) |
0) + (w17
>>> 26)) |
0;
40142 lo = Math.imul(al9, bl9);
40143 mid = Math.imul(al9, bh9);
40144 mid = (mid + Math.imul(ah9, bl9)) |
0;
40145 hi = Math.imul(ah9, bh9);
40146 var w18 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
40147 c = (((hi + (mid
>>> 13)) |
0) + (w18
>>> 26)) |
0;
40177 comb10MulTo = smallMulTo;
40180 function bigMulTo (self, num, out) {
40181 out.negative = num.negative ^ self.negative;
40182 out.length = self.length + num.length;
40186 for (var k =
0; k < out.length -
1; k++) {
40187 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
40188 // note that ncarry could be
>=
0x3ffffff
40189 var ncarry = hncarry;
40191 var rword = carry &
0x3ffffff;
40192 var maxJ = Math.min(k, num.length -
1);
40193 for (var j = Math.max(
0, k - self.length +
1); j <= maxJ; j++) {
40195 var a = self.words[i] |
0;
40196 var b = num.words[j] |
0;
40199 var lo = r &
0x3ffffff;
40200 ncarry = (ncarry + ((r /
0x4000000) |
0)) |
0;
40201 lo = (lo + rword) |
0;
40202 rword = lo &
0x3ffffff;
40203 ncarry = (ncarry + (lo
>>> 26)) |
0;
40205 hncarry += ncarry
>>> 26;
40206 ncarry &=
0x3ffffff;
40208 out.words[k] = rword;
40213 out.words[k] = carry;
40218 return out.strip();
40221 function jumboMulTo (self, num, out) {
40222 var fftm = new FFTM();
40223 return fftm.mulp(self, num, out);
40226 BN.prototype.mulTo = function mulTo (num, out) {
40228 var len = this.length + num.length;
40229 if (this.length ===
10 && num.length ===
10) {
40230 res = comb10MulTo(this, num, out);
40231 } else if (len <
63) {
40232 res = smallMulTo(this, num, out);
40233 } else if (len <
1024) {
40234 res = bigMulTo(this, num, out);
40236 res = jumboMulTo(this, num, out);
40242 // Cooley-Tukey algorithm for FFT
40243 // slightly revisited to rely on looping instead of recursion
40245 function FFTM (x, y) {
40250 FFTM.prototype.makeRBT = function makeRBT (N) {
40251 var t = new Array(N);
40252 var l = BN.prototype._countBits(N) -
1;
40253 for (var i =
0; i < N; i++) {
40254 t[i] = this.revBin(i, l, N);
40260 // Returns binary-reversed representation of `x`
40261 FFTM.prototype.revBin = function revBin (x, l, N) {
40262 if (x ===
0 || x === N -
1) return x;
40265 for (var i =
0; i < l; i++) {
40266 rb |= (x &
1) << (l - i -
1);
40273 // Performs "tweedling" phase, therefore 'emulating'
40274 // behaviour of the recursive algorithm
40275 FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {
40276 for (var i =
0; i < N; i++) {
40277 rtws[i] = rws[rbt[i]];
40278 itws[i] = iws[rbt[i]];
40282 FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {
40283 this.permute(rbt, rws, iws, rtws, itws, N);
40285 for (var s =
1; s < N; s <<=
1) {
40288 var rtwdf = Math.cos(
2 * Math.PI / l);
40289 var itwdf = Math.sin(
2 * Math.PI / l);
40291 for (var p =
0; p < N; p += l) {
40292 var rtwdf_ = rtwdf;
40293 var itwdf_ = itwdf;
40295 for (var j =
0; j < s; j++) {
40296 var re = rtws[p + j];
40297 var ie = itws[p + j];
40299 var ro = rtws[p + j + s];
40300 var io = itws[p + j + s];
40302 var rx = rtwdf_ * ro - itwdf_ * io;
40304 io = rtwdf_ * io + itwdf_ * ro;
40307 rtws[p + j] = re + ro;
40308 itws[p + j] = ie + io;
40310 rtws[p + j + s] = re - ro;
40311 itws[p + j + s] = ie - io;
40313 /* jshint maxdepth : false */
40315 rx = rtwdf * rtwdf_ - itwdf * itwdf_;
40317 itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
40325 FFTM.prototype.guessLen13b = function guessLen13b (n, m) {
40326 var N = Math.max(m, n) |
1;
40329 for (N = N /
2 |
0; N; N = N
>>> 1) {
40333 return
1 << i +
1 + odd;
40336 FFTM.prototype.conjugate = function conjugate (rws, iws, N) {
40337 if (N <=
1) return;
40339 for (var i =
0; i < N /
2; i++) {
40342 rws[i] = rws[N - i -
1];
40343 rws[N - i -
1] = t;
40347 iws[i] = -iws[N - i -
1];
40348 iws[N - i -
1] = -t;
40352 FFTM.prototype.normalize13b = function normalize13b (ws, N) {
40354 for (var i =
0; i < N /
2; i++) {
40355 var w = Math.round(ws[
2 * i +
1] / N) *
0x2000 +
40356 Math.round(ws[
2 * i] / N) +
40359 ws[i] = w &
0x3ffffff;
40361 if (w <
0x4000000) {
40364 carry = w /
0x4000000 |
0;
40371 FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {
40373 for (var i =
0; i < len; i++) {
40374 carry = carry + (ws[i] |
0);
40376 rws[
2 * i] = carry &
0x1fff; carry = carry
>>> 13;
40377 rws[
2 * i +
1] = carry &
0x1fff; carry = carry
>>> 13;
40381 for (i =
2 * len; i < N; ++i) {
40385 assert(carry ===
0);
40386 assert((carry & ~
0x1fff) ===
0);
40389 FFTM.prototype.stub = function stub (N) {
40390 var ph = new Array(N);
40391 for (var i =
0; i < N; i++) {
40398 FFTM.prototype.mulp = function mulp (x, y, out) {
40399 var N =
2 * this.guessLen13b(x.length, y.length);
40401 var rbt = this.makeRBT(N);
40403 var _ = this.stub(N);
40405 var rws = new Array(N);
40406 var rwst = new Array(N);
40407 var iwst = new Array(N);
40409 var nrws = new Array(N);
40410 var nrwst = new Array(N);
40411 var niwst = new Array(N);
40413 var rmws = out.words;
40416 this.convert13b(x.words, x.length, rws, N);
40417 this.convert13b(y.words, y.length, nrws, N);
40419 this.transform(rws, _, rwst, iwst, N, rbt);
40420 this.transform(nrws, _, nrwst, niwst, N, rbt);
40422 for (var i =
0; i < N; i++) {
40423 var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
40424 iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
40428 this.conjugate(rwst, iwst, N);
40429 this.transform(rwst, iwst, rmws, _, N, rbt);
40430 this.conjugate(rmws, _, N);
40431 this.normalize13b(rmws, N);
40433 out.negative = x.negative ^ y.negative;
40434 out.length = x.length + y.length;
40435 return out.strip();
40438 // Multiply `this` by `num`
40439 BN.prototype.mul = function mul (num) {
40440 var out = new BN(null);
40441 out.words = new Array(this.length + num.length);
40442 return this.mulTo(num, out);
40445 // Multiply employing FFT
40446 BN.prototype.mulf = function mulf (num) {
40447 var out = new BN(null);
40448 out.words = new Array(this.length + num.length);
40449 return jumboMulTo(this, num, out);
40452 // In-place Multiplication
40453 BN.prototype.imul = function imul (num) {
40454 return this.clone().mulTo(num, this);
40457 BN.prototype.imuln = function imuln (num) {
40458 assert(typeof num === 'number');
40459 assert(num <
0x4000000);
40463 for (var i =
0; i < this.length; i++) {
40464 var w = (this.words[i] |
0) * num;
40465 var lo = (w &
0x3ffffff) + (carry &
0x3ffffff);
40467 carry += (w /
0x4000000) |
0;
40468 // NOTE: lo is
27bit maximum
40469 carry += lo
>>> 26;
40470 this.words[i] = lo &
0x3ffffff;
40474 this.words[i] = carry;
40481 BN.prototype.muln = function muln (num) {
40482 return this.clone().imuln(num);
40486 BN.prototype.sqr = function sqr () {
40487 return this.mul(this);
40490 // `this` * `this` in-place
40491 BN.prototype.isqr = function isqr () {
40492 return this.imul(this.clone());
40495 // Math.pow(`this`, `num`)
40496 BN.prototype.pow = function pow (num) {
40497 var w = toBitArray(num);
40498 if (w.length ===
0) return new BN(
1);
40500 // Skip leading zeroes
40502 for (var i =
0; i < w.length; i++, res = res.sqr()) {
40503 if (w[i] !==
0) break;
40506 if (++i < w.length) {
40507 for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
40508 if (w[i] ===
0) continue;
40517 // Shift-left in-place
40518 BN.prototype.iushln = function iushln (bits) {
40519 assert(typeof bits === 'number' && bits
>=
0);
40521 var s = (bits - r) /
26;
40522 var carryMask = (
0x3ffffff >>> (
26 - r)) << (
26 - r);
40528 for (i =
0; i < this.length; i++) {
40529 var newCarry = this.words[i] & carryMask;
40530 var c = ((this.words[i] |
0) - newCarry) << r;
40531 this.words[i] = c | carry;
40532 carry = newCarry
>>> (
26 - r);
40536 this.words[i] = carry;
40542 for (i = this.length -
1; i
>=
0; i--) {
40543 this.words[i + s] = this.words[i];
40546 for (i =
0; i < s; i++) {
40553 return this.strip();
40556 BN.prototype.ishln = function ishln (bits) {
40557 // TODO(indutny): implement me
40558 assert(this.negative ===
0);
40559 return this.iushln(bits);
40562 // Shift-right in-place
40563 // NOTE: `hint` is a lowest bit before trailing zeroes
40564 // NOTE: if `extended` is present - it will be filled with destroyed bits
40565 BN.prototype.iushrn = function iushrn (bits, hint, extended) {
40566 assert(typeof bits === 'number' && bits
>=
0);
40569 h = (hint - (hint %
26)) /
26;
40575 var s = Math.min((bits - r) /
26, this.length);
40576 var mask =
0x3ffffff ^ ((
0x3ffffff >>> r) << r);
40577 var maskedWords = extended;
40580 h = Math.max(
0, h);
40582 // Extended mode, copy masked part
40584 for (var i =
0; i < s; i++) {
40585 maskedWords.words[i] = this.words[i];
40587 maskedWords.length = s;
40591 // No-op, we should not move anything at all
40592 } else if (this.length
> s) {
40594 for (i =
0; i < this.length; i++) {
40595 this.words[i] = this.words[i + s];
40603 for (i = this.length -
1; i
>=
0 && (carry !==
0 || i
>= h); i--) {
40604 var word = this.words[i] |
0;
40605 this.words[i] = (carry << (
26 - r)) | (word
>>> r);
40606 carry = word & mask;
40609 // Push carried bits as a mask
40610 if (maskedWords && carry !==
0) {
40611 maskedWords.words[maskedWords.length++] = carry;
40614 if (this.length ===
0) {
40619 return this.strip();
40622 BN.prototype.ishrn = function ishrn (bits, hint, extended) {
40623 // TODO(indutny): implement me
40624 assert(this.negative ===
0);
40625 return this.iushrn(bits, hint, extended);
40629 BN.prototype.shln = function shln (bits) {
40630 return this.clone().ishln(bits);
40633 BN.prototype.ushln = function ushln (bits) {
40634 return this.clone().iushln(bits);
40638 BN.prototype.shrn = function shrn (bits) {
40639 return this.clone().ishrn(bits);
40642 BN.prototype.ushrn = function ushrn (bits) {
40643 return this.clone().iushrn(bits);
40646 // Test if n bit is set
40647 BN.prototype.testn = function testn (bit) {
40648 assert(typeof bit === 'number' && bit
>=
0);
40650 var s = (bit - r) /
26;
40653 // Fast case: bit is much higher than all existing words
40654 if (this.length <= s) return false;
40656 // Check bit and return
40657 var w = this.words[s];
40662 // Return only lowers bits of number (in-place)
40663 BN.prototype.imaskn = function imaskn (bits) {
40664 assert(typeof bits === 'number' && bits
>=
0);
40666 var s = (bits - r) /
26;
40668 assert(this.negative ===
0, 'imaskn works only with positive numbers');
40670 if (this.length <= s) {
40677 this.length = Math.min(s, this.length);
40680 var mask =
0x3ffffff ^ ((
0x3ffffff >>> r) << r);
40681 this.words[this.length -
1] &= mask;
40684 return this.strip();
40687 // Return only lowers bits of number
40688 BN.prototype.maskn = function maskn (bits) {
40689 return this.clone().imaskn(bits);
40692 // Add plain number `num` to `this`
40693 BN.prototype.iaddn = function iaddn (num) {
40694 assert(typeof num === 'number');
40695 assert(num <
0x4000000);
40696 if (num <
0) return this.isubn(-num);
40698 // Possible sign change
40699 if (this.negative !==
0) {
40700 if (this.length ===
1 && (this.words[
0] |
0) < num) {
40701 this.words[
0] = num - (this.words[
0] |
0);
40712 // Add without checks
40713 return this._iaddn(num);
40716 BN.prototype._iaddn = function _iaddn (num) {
40717 this.words[
0] += num;
40720 for (var i =
0; i < this.length && this.words[i]
>=
0x4000000; i++) {
40721 this.words[i] -=
0x4000000;
40722 if (i === this.length -
1) {
40723 this.words[i +
1] =
1;
40725 this.words[i +
1]++;
40728 this.length = Math.max(this.length, i +
1);
40733 // Subtract plain number `num` from `this`
40734 BN.prototype.isubn = function isubn (num) {
40735 assert(typeof num === 'number');
40736 assert(num <
0x4000000);
40737 if (num <
0) return this.iaddn(-num);
40739 if (this.negative !==
0) {
40746 this.words[
0] -= num;
40748 if (this.length ===
1 && this.words[
0] <
0) {
40749 this.words[
0] = -this.words[
0];
40753 for (var i =
0; i < this.length && this.words[i] <
0; i++) {
40754 this.words[i] +=
0x4000000;
40755 this.words[i +
1] -=
1;
40759 return this.strip();
40762 BN.prototype.addn = function addn (num) {
40763 return this.clone().iaddn(num);
40766 BN.prototype.subn = function subn (num) {
40767 return this.clone().isubn(num);
40770 BN.prototype.iabs = function iabs () {
40776 BN.prototype.abs = function abs () {
40777 return this.clone().iabs();
40780 BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {
40781 var len = num.length + shift;
40788 for (i =
0; i < num.length; i++) {
40789 w = (this.words[i + shift] |
0) + carry;
40790 var right = (num.words[i] |
0) * mul;
40791 w -= right &
0x3ffffff;
40792 carry = (w
>> 26) - ((right /
0x4000000) |
0);
40793 this.words[i + shift] = w &
0x3ffffff;
40795 for (; i < this.length - shift; i++) {
40796 w = (this.words[i + shift] |
0) + carry;
40798 this.words[i + shift] = w &
0x3ffffff;
40801 if (carry ===
0) return this.strip();
40803 // Subtraction overflow
40804 assert(carry === -
1);
40806 for (i =
0; i < this.length; i++) {
40807 w = -(this.words[i] |
0) + carry;
40809 this.words[i] = w &
0x3ffffff;
40813 return this.strip();
40816 BN.prototype._wordDiv = function _wordDiv (num, mode) {
40817 var shift = this.length - num.length;
40819 var a = this.clone();
40823 var bhi = b.words[b.length -
1] |
0;
40824 var bhiBits = this._countBits(bhi);
40825 shift =
26 - bhiBits;
40827 b = b.ushln(shift);
40829 bhi = b.words[b.length -
1] |
0;
40832 // Initialize quotient
40833 var m = a.length - b.length;
40836 if (mode !== 'mod') {
40839 q.words = new Array(q.length);
40840 for (var i =
0; i < q.length; i++) {
40845 var diff = a.clone()._ishlnsubmul(b,
1, m);
40846 if (diff.negative ===
0) {
40853 for (var j = m -
1; j
>=
0; j--) {
40854 var qj = (a.words[b.length + j] |
0) *
0x4000000 +
40855 (a.words[b.length + j -
1] |
0);
40857 // NOTE: (qj / bhi) is (
0x3ffffff *
0x4000000 +
0x3ffffff) /
0x2000000 max
40859 qj = Math.min((qj / bhi) |
0,
0x3ffffff);
40861 a._ishlnsubmul(b, qj, j);
40862 while (a.negative !==
0) {
40865 a._ishlnsubmul(b,
1, j);
40880 if (mode !== 'div' && shift !==
0) {
40890 // NOTE:
1) `mode` can be set to `mod` to request mod only,
40891 // to `div` to request div only, or be absent to
40892 // request both div & mod
40893 //
2) `positive` is true if unsigned mod is requested
40894 BN.prototype.divmod = function divmod (num, mode, positive) {
40895 assert(!num.isZero());
40897 if (this.isZero()) {
40905 if (this.negative !==
0 && num.negative ===
0) {
40906 res = this.neg().divmod(num, mode);
40908 if (mode !== 'mod') {
40909 div = res.div.neg();
40912 if (mode !== 'div') {
40913 mod = res.mod.neg();
40914 if (positive && mod.negative !==
0) {
40925 if (this.negative ===
0 && num.negative !==
0) {
40926 res = this.divmod(num.neg(), mode);
40928 if (mode !== 'mod') {
40929 div = res.div.neg();
40938 if ((this.negative & num.negative) !==
0) {
40939 res = this.neg().divmod(num.neg(), mode);
40941 if (mode !== 'div') {
40942 mod = res.mod.neg();
40943 if (positive && mod.negative !==
0) {
40954 // Both numbers are positive at this point
40956 // Strip both numbers to approximate shift value
40957 if (num.length
> this.length || this.cmp(num) <
0) {
40964 // Very short reduction
40965 if (num.length ===
1) {
40966 if (mode === 'div') {
40968 div: this.divn(num.words[
0]),
40973 if (mode === 'mod') {
40976 mod: new BN(this.modn(num.words[
0]))
40981 div: this.divn(num.words[
0]),
40982 mod: new BN(this.modn(num.words[
0]))
40986 return this._wordDiv(num, mode);
40989 // Find `this` / `num`
40990 BN.prototype.div = function div (num) {
40991 return this.divmod(num, 'div', false).div;
40994 // Find `this` % `num`
40995 BN.prototype.mod = function mod (num) {
40996 return this.divmod(num, 'mod', false).mod;
40999 BN.prototype.umod = function umod (num) {
41000 return this.divmod(num, 'mod', true).mod;
41003 // Find Round(`this` / `num`)
41004 BN.prototype.divRound = function divRound (num) {
41005 var dm = this.divmod(num);
41007 // Fast case - exact division
41008 if (dm.mod.isZero()) return dm.div;
41010 var mod = dm.div.negative !==
0 ? dm.mod.isub(num) : dm.mod;
41012 var half = num.ushrn(
1);
41013 var r2 = num.andln(
1);
41014 var cmp = mod.cmp(half);
41017 if (cmp <
0 || r2 ===
1 && cmp ===
0) return dm.div;
41020 return dm.div.negative !==
0 ? dm.div.isubn(
1) : dm.div.iaddn(
1);
41023 BN.prototype.modn = function modn (num) {
41024 assert(num <=
0x3ffffff);
41025 var p = (
1 <<
26) % num;
41028 for (var i = this.length -
1; i
>=
0; i--) {
41029 acc = (p * acc + (this.words[i] |
0)) % num;
41035 // In-place division by number
41036 BN.prototype.idivn = function idivn (num) {
41037 assert(num <=
0x3ffffff);
41040 for (var i = this.length -
1; i
>=
0; i--) {
41041 var w = (this.words[i] |
0) + carry *
0x4000000;
41042 this.words[i] = (w / num) |
0;
41046 return this.strip();
41049 BN.prototype.divn = function divn (num) {
41050 return this.clone().idivn(num);
41053 BN.prototype.egcd = function egcd (p) {
41054 assert(p.negative ===
0);
41055 assert(!p.isZero());
41060 if (x.negative !==
0) {
41066 // A * x + B * y = x
41070 // C * x + D * y = y
41076 while (x.isEven() && y.isEven()) {
41082 var yp = y.clone();
41083 var xp = x.clone();
41085 while (!x.isZero()) {
41086 for (var i =
0, im =
1; (x.words[
0] & im) ===
0 && i <
26; ++i, im <<=
1);
41090 if (A.isOdd() || B.isOdd()) {
41100 for (var j =
0, jm =
1; (y.words[
0] & jm) ===
0 && j <
26; ++j, jm <<=
1);
41104 if (C.isOdd() || D.isOdd()) {
41114 if (x.cmp(y)
>=
0) {
41132 // This is reduced incarnation of the binary EEA
41133 // above, designated to invert members of the
41134 // _prime_ fields F(p) at a maximal speed
41135 BN.prototype._invmp = function _invmp (p) {
41136 assert(p.negative ===
0);
41137 assert(!p.isZero());
41142 if (a.negative !==
0) {
41148 var x1 = new BN(
1);
41149 var x2 = new BN(
0);
41151 var delta = b.clone();
41153 while (a.cmpn(
1)
> 0 && b.cmpn(
1)
> 0) {
41154 for (var i =
0, im =
1; (a.words[
0] & im) ===
0 && i <
26; ++i, im <<=
1);
41166 for (var j =
0, jm =
1; (b.words[
0] & jm) ===
0 && j <
26; ++j, jm <<=
1);
41178 if (a.cmp(b)
>=
0) {
41188 if (a.cmpn(
1) ===
0) {
41194 if (res.cmpn(
0) <
0) {
41201 BN.prototype.gcd = function gcd (num) {
41202 if (this.isZero()) return num.abs();
41203 if (num.isZero()) return this.abs();
41205 var a = this.clone();
41206 var b = num.clone();
41210 // Remove common factor of two
41211 for (var shift =
0; a.isEven() && b.isEven(); shift++) {
41217 while (a.isEven()) {
41220 while (b.isEven()) {
41226 // Swap `a` and `b` to make `a` always bigger than `b`
41230 } else if (r ===
0 || b.cmpn(
1) ===
0) {
41237 return b.iushln(shift);
41240 // Invert number in the field F(num)
41241 BN.prototype.invm = function invm (num) {
41242 return this.egcd(num).a.umod(num);
41245 BN.prototype.isEven = function isEven () {
41246 return (this.words[
0] &
1) ===
0;
41249 BN.prototype.isOdd = function isOdd () {
41250 return (this.words[
0] &
1) ===
1;
41253 // And first word and num
41254 BN.prototype.andln = function andln (num) {
41255 return this.words[
0] & num;
41258 // Increment at the bit position in-line
41259 BN.prototype.bincn = function bincn (bit) {
41260 assert(typeof bit === 'number');
41262 var s = (bit - r) /
26;
41265 // Fast case: bit is much higher than all existing words
41266 if (this.length <= s) {
41267 this._expand(s +
1);
41268 this.words[s] |= q;
41272 // Add bit and propagate, if needed
41274 for (var i = s; carry !==
0 && i < this.length; i++) {
41275 var w = this.words[i] |
0;
41282 this.words[i] = carry;
41288 BN.prototype.isZero = function isZero () {
41289 return this.length ===
1 && this.words[
0] ===
0;
41292 BN.prototype.cmpn = function cmpn (num) {
41293 var negative = num <
0;
41295 if (this.negative !==
0 && !negative) return -
1;
41296 if (this.negative ===
0 && negative) return
1;
41301 if (this.length
> 1) {
41308 assert(num <=
0x3ffffff, 'Number is too big');
41310 var w = this.words[
0] |
0;
41311 res = w === num ?
0 : w < num ? -
1 :
1;
41313 if (this.negative !==
0) return -res |
0;
41317 // Compare two numbers and return:
41318 //
1 - if `this`
> `num`
41319 //
0 - if `this` == `num`
41320 // -
1 - if `this` < `num`
41321 BN.prototype.cmp = function cmp (num) {
41322 if (this.negative !==
0 && num.negative ===
0) return -
1;
41323 if (this.negative ===
0 && num.negative !==
0) return
1;
41325 var res = this.ucmp(num);
41326 if (this.negative !==
0) return -res |
0;
41330 // Unsigned comparison
41331 BN.prototype.ucmp = function ucmp (num) {
41332 // At this point both numbers have the same sign
41333 if (this.length
> num.length) return
1;
41334 if (this.length < num.length) return -
1;
41337 for (var i = this.length -
1; i
>=
0; i--) {
41338 var a = this.words[i] |
0;
41339 var b = num.words[i] |
0;
41341 if (a === b) continue;
41344 } else if (a
> b) {
41352 BN.prototype.gtn = function gtn (num) {
41353 return this.cmpn(num) ===
1;
41356 BN.prototype.gt = function gt (num) {
41357 return this.cmp(num) ===
1;
41360 BN.prototype.gten = function gten (num) {
41361 return this.cmpn(num)
>=
0;
41364 BN.prototype.gte = function gte (num) {
41365 return this.cmp(num)
>=
0;
41368 BN.prototype.ltn = function ltn (num) {
41369 return this.cmpn(num) === -
1;
41372 BN.prototype.lt = function lt (num) {
41373 return this.cmp(num) === -
1;
41376 BN.prototype.lten = function lten (num) {
41377 return this.cmpn(num) <=
0;
41380 BN.prototype.lte = function lte (num) {
41381 return this.cmp(num) <=
0;
41384 BN.prototype.eqn = function eqn (num) {
41385 return this.cmpn(num) ===
0;
41388 BN.prototype.eq = function eq (num) {
41389 return this.cmp(num) ===
0;
41393 // A reduce context, could be using montgomery or something better, depending
41394 // on the `m` itself.
41396 BN.red = function red (num) {
41397 return new Red(num);
41400 BN.prototype.toRed = function toRed (ctx) {
41401 assert(!this.red, 'Already a number in reduction context');
41402 assert(this.negative ===
0, 'red works only with positives');
41403 return ctx.convertTo(this)._forceRed(ctx);
41406 BN.prototype.fromRed = function fromRed () {
41407 assert(this.red, 'fromRed works only with numbers in reduction context');
41408 return this.red.convertFrom(this);
41411 BN.prototype._forceRed = function _forceRed (ctx) {
41416 BN.prototype.forceRed = function forceRed (ctx) {
41417 assert(!this.red, 'Already a number in reduction context');
41418 return this._forceRed(ctx);
41421 BN.prototype.redAdd = function redAdd (num) {
41422 assert(this.red, 'redAdd works only with red numbers');
41423 return this.red.add(this, num);
41426 BN.prototype.redIAdd = function redIAdd (num) {
41427 assert(this.red, 'redIAdd works only with red numbers');
41428 return this.red.iadd(this, num);
41431 BN.prototype.redSub = function redSub (num) {
41432 assert(this.red, 'redSub works only with red numbers');
41433 return this.red.sub(this, num);
41436 BN.prototype.redISub = function redISub (num) {
41437 assert(this.red, 'redISub works only with red numbers');
41438 return this.red.isub(this, num);
41441 BN.prototype.redShl = function redShl (num) {
41442 assert(this.red, 'redShl works only with red numbers');
41443 return this.red.shl(this, num);
41446 BN.prototype.redMul = function redMul (num) {
41447 assert(this.red, 'redMul works only with red numbers');
41448 this.red._verify2(this, num);
41449 return this.red.mul(this, num);
41452 BN.prototype.redIMul = function redIMul (num) {
41453 assert(this.red, 'redMul works only with red numbers');
41454 this.red._verify2(this, num);
41455 return this.red.imul(this, num);
41458 BN.prototype.redSqr = function redSqr () {
41459 assert(this.red, 'redSqr works only with red numbers');
41460 this.red._verify1(this);
41461 return this.red.sqr(this);
41464 BN.prototype.redISqr = function redISqr () {
41465 assert(this.red, 'redISqr works only with red numbers');
41466 this.red._verify1(this);
41467 return this.red.isqr(this);
41470 // Square root over p
41471 BN.prototype.redSqrt = function redSqrt () {
41472 assert(this.red, 'redSqrt works only with red numbers');
41473 this.red._verify1(this);
41474 return this.red.sqrt(this);
41477 BN.prototype.redInvm = function redInvm () {
41478 assert(this.red, 'redInvm works only with red numbers');
41479 this.red._verify1(this);
41480 return this.red.invm(this);
41483 // Return negative clone of `this` % `red modulo`
41484 BN.prototype.redNeg = function redNeg () {
41485 assert(this.red, 'redNeg works only with red numbers');
41486 this.red._verify1(this);
41487 return this.red.neg(this);
41490 BN.prototype.redPow = function redPow (num) {
41491 assert(this.red && !num.red, 'redPow(normalNum)');
41492 this.red._verify1(this);
41493 return this.red.pow(this, num);
41496 // Prime numbers with efficient reduction
41504 // Pseudo-Mersenne prime
41505 function MPrime (name, p) {
41508 this.p = new BN(p,
16);
41509 this.n = this.p.bitLength();
41510 this.k = new BN(
1).iushln(this.n).isub(this.p);
41512 this.tmp = this._tmp();
41515 MPrime.prototype._tmp = function _tmp () {
41516 var tmp = new BN(null);
41517 tmp.words = new Array(Math.ceil(this.n /
13));
41521 MPrime.prototype.ireduce = function ireduce (num) {
41522 // Assumes that `num` is less than `P^
2`
41523 // num = HI * (
2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)
41528 this.split(r, this.tmp);
41530 r = r.iadd(this.tmp);
41531 rlen = r.bitLength();
41532 } while (rlen
> this.n);
41534 var cmp = rlen < this.n ? -
1 : r.ucmp(this.p);
41538 } else if (cmp
> 0) {
41547 MPrime.prototype.split = function split (input, out) {
41548 input.iushrn(this.n,
0, out);
41551 MPrime.prototype.imulK = function imulK (num) {
41552 return num.imul(this.k);
41559 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');
41561 inherits(K256, MPrime);
41563 K256.prototype.split = function split (input, output) {
41564 //
256 =
9 *
26 +
22
41565 var mask =
0x3fffff;
41567 var outLen = Math.min(input.length,
9);
41568 for (var i =
0; i < outLen; i++) {
41569 output.words[i] = input.words[i];
41571 output.length = outLen;
41573 if (input.length <=
9) {
41574 input.words[
0] =
0;
41579 // Shift by
9 limbs
41580 var prev = input.words[
9];
41581 output.words[output.length++] = prev & mask;
41583 for (i =
10; i < input.length; i++) {
41584 var next = input.words[i] |
0;
41585 input.words[i -
10] = ((next & mask) <<
4) | (prev
>>> 22);
41589 input.words[i -
10] = prev;
41590 if (prev ===
0 && input.length
> 10) {
41591 input.length -=
10;
41597 K256.prototype.imulK = function imulK (num) {
41598 // K =
0x1000003d1 = [
0x40,
0x3d1 ]
41599 num.words[num.length] =
0;
41600 num.words[num.length +
1] =
0;
41603 // bounded at:
0x40 *
0x3ffffff +
0x3d0 =
0x100000390
41605 for (var i =
0; i < num.length; i++) {
41606 var w = num.words[i] |
0;
41608 num.words[i] = lo &
0x3ffffff;
41609 lo = w *
0x40 + ((lo /
0x4000000) |
0);
41612 // Fast length reduction
41613 if (num.words[num.length -
1] ===
0) {
41615 if (num.words[num.length -
1] ===
0) {
41626 'ffffffff ffffffff ffffffff ffffffff
00000000 00000000 00000001');
41628 inherits(P224, MPrime);
41634 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');
41636 inherits(P192, MPrime);
41638 function P25519 () {
41643 '
7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');
41645 inherits(P25519, MPrime);
41647 P25519.prototype.imulK = function imulK (num) {
41650 for (var i =
0; i < num.length; i++) {
41651 var hi = (num.words[i] |
0) *
0x13 + carry;
41652 var lo = hi &
0x3ffffff;
41659 num.words[num.length++] = carry;
41664 // Exported mostly for testing purposes, use plain name instead
41665 BN._prime = function prime (name) {
41666 // Cached version of prime
41667 if (primes[name]) return primes[name];
41670 if (name === 'k256') {
41671 prime = new K256();
41672 } else if (name === 'p224') {
41673 prime = new P224();
41674 } else if (name === 'p192') {
41675 prime = new P192();
41676 } else if (name === 'p25519') {
41677 prime = new P25519();
41679 throw new Error('Unknown prime ' + name);
41681 primes[name] = prime;
41687 // Base reduction engine
41690 if (typeof m === 'string') {
41691 var prime = BN._prime(m);
41693 this.prime = prime;
41695 assert(m.gtn(
1), 'modulus must be greater than
1');
41701 Red.prototype._verify1 = function _verify1 (a) {
41702 assert(a.negative ===
0, 'red works only with positives');
41703 assert(a.red, 'red works only with red numbers');
41706 Red.prototype._verify2 = function _verify2 (a, b) {
41707 assert((a.negative | b.negative) ===
0, 'red works only with positives');
41708 assert(a.red && a.red === b.red,
41709 'red works only with red numbers');
41712 Red.prototype.imod = function imod (a) {
41713 if (this.prime) return this.prime.ireduce(a)._forceRed(this);
41714 return a.umod(this.m)._forceRed(this);
41717 Red.prototype.neg = function neg (a) {
41722 return this.m.sub(a)._forceRed(this);
41725 Red.prototype.add = function add (a, b) {
41726 this._verify2(a, b);
41728 var res = a.add(b);
41729 if (res.cmp(this.m)
>=
0) {
41732 return res._forceRed(this);
41735 Red.prototype.iadd = function iadd (a, b) {
41736 this._verify2(a, b);
41738 var res = a.iadd(b);
41739 if (res.cmp(this.m)
>=
0) {
41745 Red.prototype.sub = function sub (a, b) {
41746 this._verify2(a, b);
41748 var res = a.sub(b);
41749 if (res.cmpn(
0) <
0) {
41752 return res._forceRed(this);
41755 Red.prototype.isub = function isub (a, b) {
41756 this._verify2(a, b);
41758 var res = a.isub(b);
41759 if (res.cmpn(
0) <
0) {
41765 Red.prototype.shl = function shl (a, num) {
41767 return this.imod(a.ushln(num));
41770 Red.prototype.imul = function imul (a, b) {
41771 this._verify2(a, b);
41772 return this.imod(a.imul(b));
41775 Red.prototype.mul = function mul (a, b) {
41776 this._verify2(a, b);
41777 return this.imod(a.mul(b));
41780 Red.prototype.isqr = function isqr (a) {
41781 return this.imul(a, a.clone());
41784 Red.prototype.sqr = function sqr (a) {
41785 return this.mul(a, a);
41788 Red.prototype.sqrt = function sqrt (a) {
41789 if (a.isZero()) return a.clone();
41791 var mod3 = this.m.andln(
3);
41792 assert(mod3 %
2 ===
1);
41796 var pow = this.m.add(new BN(
1)).iushrn(
2);
41797 return this.pow(a, pow);
41800 // Tonelli-Shanks algorithm (Totally unoptimized and slow)
41802 // Find Q and S, that Q *
2 ^ S = (P -
1)
41803 var q = this.m.subn(
1);
41805 while (!q.isZero() && q.andln(
1) ===
0) {
41809 assert(!q.isZero());
41811 var one = new BN(
1).toRed(this);
41812 var nOne = one.redNeg();
41814 // Find quadratic non-residue
41815 // NOTE: Max is such because of generalized Riemann hypothesis.
41816 var lpow = this.m.subn(
1).iushrn(
1);
41817 var z = this.m.bitLength();
41818 z = new BN(
2 * z * z).toRed(this);
41820 while (this.pow(z, lpow).cmp(nOne) !==
0) {
41824 var c = this.pow(z, q);
41825 var r = this.pow(a, q.addn(
1).iushrn(
1));
41826 var t = this.pow(a, q);
41828 while (t.cmp(one) !==
0) {
41830 for (var i =
0; tmp.cmp(one) !==
0; i++) {
41831 tmp = tmp.redSqr();
41834 var b = this.pow(c, new BN(
1).iushln(m - i -
1));
41845 Red.prototype.invm = function invm (a) {
41846 var inv = a._invmp(this.m);
41847 if (inv.negative !==
0) {
41849 return this.imod(inv).redNeg();
41851 return this.imod(inv);
41855 Red.prototype.pow = function pow (a, num) {
41856 if (num.isZero()) return new BN(
1);
41857 if (num.cmpn(
1) ===
0) return a.clone();
41859 var windowSize =
4;
41860 var wnd = new Array(
1 << windowSize);
41861 wnd[
0] = new BN(
1).toRed(this);
41863 for (var i =
2; i < wnd.length; i++) {
41864 wnd[i] = this.mul(wnd[i -
1], a);
41869 var currentLen =
0;
41870 var start = num.bitLength() %
26;
41875 for (i = num.length -
1; i
>=
0; i--) {
41876 var word = num.words[i];
41877 for (var j = start -
1; j
>=
0; j--) {
41878 var bit = (word
>> j) &
1;
41879 if (res !== wnd[
0]) {
41880 res = this.sqr(res);
41883 if (bit ===
0 && current ===
0) {
41891 if (currentLen !== windowSize && (i !==
0 || j !==
0)) continue;
41893 res = this.mul(res, wnd[current]);
41903 Red.prototype.convertTo = function convertTo (num) {
41904 var r = num.umod(this.m);
41906 return r === num ? r.clone() : r;
41909 Red.prototype.convertFrom = function convertFrom (num) {
41910 var res = num.clone();
41916 // Montgomery method engine
41919 BN.mont = function mont (num) {
41920 return new Mont(num);
41923 function Mont (m) {
41926 this.shift = this.m.bitLength();
41927 if (this.shift %
26 !==
0) {
41928 this.shift +=
26 - (this.shift %
26);
41931 this.r = new BN(
1).iushln(this.shift);
41932 this.r2 = this.imod(this.r.sqr());
41933 this.rinv = this.r._invmp(this.m);
41935 this.minv = this.rinv.mul(this.r).isubn(
1).div(this.m);
41936 this.minv = this.minv.umod(this.r);
41937 this.minv = this.r.sub(this.minv);
41939 inherits(Mont, Red);
41941 Mont.prototype.convertTo = function convertTo (num) {
41942 return this.imod(num.ushln(this.shift));
41945 Mont.prototype.convertFrom = function convertFrom (num) {
41946 var r = this.imod(num.mul(this.rinv));
41951 Mont.prototype.imul = function imul (a, b) {
41952 if (a.isZero() || b.isZero()) {
41959 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
41960 var u = t.isub(c).iushrn(this.shift);
41963 if (u.cmp(this.m)
>=
0) {
41964 res = u.isub(this.m);
41965 } else if (u.cmpn(
0) <
0) {
41966 res = u.iadd(this.m);
41969 return res._forceRed(this);
41972 Mont.prototype.mul = function mul (a, b) {
41973 if (a.isZero() || b.isZero()) return new BN(
0)._forceRed(this);
41976 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
41977 var u = t.isub(c).iushrn(this.shift);
41979 if (u.cmp(this.m)
>=
0) {
41980 res = u.isub(this.m);
41981 } else if (u.cmpn(
0) <
0) {
41982 res = u.iadd(this.m);
41985 return res._forceRed(this);
41988 Mont.prototype.invm = function invm (a) {
41989 // (AR)^-
1 * R^
2 = (A^-
1 * R^-
1) * R^
2 = A^-
1 * R
41990 var res = this.imod(a._invmp(this.m).mul(this.r2));
41991 return res._forceRed(this);
41993 })(typeof module === 'undefined' || module, this);
41995 },{}],
34:[function(require,module,exports){
41998 module.exports = function rand(len) {
42000 r = new Rand(null);
42002 return r.generate(len);
42005 function Rand(rand) {
42008 module.exports.Rand = Rand;
42010 Rand.prototype.generate = function generate(len) {
42011 return this._rand(len);
42014 if (typeof self === 'object') {
42015 if (self.crypto && self.crypto.getRandomValues) {
42017 Rand.prototype._rand = function _rand(n) {
42018 var arr = new Uint8Array(n);
42019 self.crypto.getRandomValues(arr);
42022 } else if (self.msCrypto && self.msCrypto.getRandomValues) {
42024 Rand.prototype._rand = function _rand(n) {
42025 var arr = new Uint8Array(n);
42026 self.msCrypto.getRandomValues(arr);
42031 Rand.prototype._rand = function() {
42032 throw new Error('Not implemented yet');
42036 // Node.js or Web worker with no crypto support
42038 var crypto = require('crypto');
42040 Rand.prototype._rand = function _rand(n) {
42041 return crypto.randomBytes(n);
42044 // Emulate crypto API using randy
42045 Rand.prototype._rand = function _rand(n) {
42046 var res = new Uint8Array(n);
42047 for (var i =
0; i < res.length; i++)
42048 res[i] = this.rand.getByte();
42054 },{"crypto":
3}],
35:[function(require,module,exports){
42055 (function (Buffer){
42056 var Transform = require('stream').Transform
42057 var inherits = require('inherits')
42058 var StringDecoder = require('string_decoder').StringDecoder
42059 module.exports = CipherBase
42060 inherits(CipherBase, Transform)
42061 function CipherBase (hashMode) {
42062 Transform.call(this)
42063 this.hashMode = typeof hashMode === 'string'
42064 if (this.hashMode) {
42065 this[hashMode] = this._finalOrDigest
42067 this.final = this._finalOrDigest
42069 this._decoder = null
42070 this._encoding = null
42072 CipherBase.prototype.update = function (data, inputEnc, outputEnc) {
42073 if (typeof data === 'string') {
42074 data = new Buffer(data, inputEnc)
42076 var outData = this._update(data)
42077 if (this.hashMode) {
42081 outData = this._toString(outData, outputEnc)
42086 CipherBase.prototype.setAutoPadding = function () {}
42088 CipherBase.prototype.getAuthTag = function () {
42089 throw new Error('trying to get auth tag in unsupported state')
42092 CipherBase.prototype.setAuthTag = function () {
42093 throw new Error('trying to set auth tag in unsupported state')
42096 CipherBase.prototype.setAAD = function () {
42097 throw new Error('trying to set aad in unsupported state')
42100 CipherBase.prototype._transform = function (data, _, next) {
42103 if (this.hashMode) {
42106 this.push(this._update(data))
42114 CipherBase.prototype._flush = function (done) {
42117 this.push(this._final())
42124 CipherBase.prototype._finalOrDigest = function (outputEnc) {
42125 var outData = this._final() || new Buffer('')
42127 outData = this._toString(outData, outputEnc, true)
42132 CipherBase.prototype._toString = function (value, enc, fin) {
42133 if (!this._decoder) {
42134 this._decoder = new StringDecoder(enc)
42135 this._encoding = enc
42137 if (this._encoding !== enc) {
42138 throw new Error('can\'t switch encodings')
42140 var out = this._decoder.write(value)
42142 out += this._decoder.end()
42147 }).call(this,require("buffer").Buffer)
42148 },{"buffer":
5,"inherits":
63,"stream":
25,"string_decoder":
26}],
36:[function(require,module,exports){
42149 (function (Buffer){
42151 var inherits = require('inherits')
42152 var md5 = require('./md5')
42153 var rmd160 = require('ripemd160')
42154 var sha = require('sha.js')
42156 var Base = require('cipher-base')
42158 function HashNoConstructor(hash) {
42159 Base.call(this, 'digest')
42165 inherits(HashNoConstructor, Base)
42167 HashNoConstructor.prototype._update = function (data) {
42168 this.buffers.push(data)
42171 HashNoConstructor.prototype._final = function () {
42172 var buf = Buffer.concat(this.buffers)
42173 var r = this._hash(buf)
42174 this.buffers = null
42179 function Hash(hash) {
42180 Base.call(this, 'digest')
42185 inherits(Hash, Base)
42187 Hash.prototype._update = function (data) {
42188 this._hash.update(data)
42191 Hash.prototype._final = function () {
42192 return this._hash.digest()
42195 module.exports = function createHash (alg) {
42196 alg = alg.toLowerCase()
42197 if ('md5' === alg) return new HashNoConstructor(md5)
42198 if ('rmd160' === alg || 'ripemd160' === alg) return new HashNoConstructor(rmd160)
42200 return new Hash(sha(alg))
42203 }).call(this,require("buffer").Buffer)
42204 },{"./md5":
38,"buffer":
5,"cipher-base":
35,"inherits":
63,"ripemd160":
71,"sha.js":
80}],
37:[function(require,module,exports){
42205 (function (Buffer){
42208 var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(
0);
42211 function toArray(buf, bigEndian) {
42212 if ((buf.length % intSize) !==
0) {
42213 var len = buf.length + (intSize - (buf.length % intSize));
42214 buf = Buffer.concat([buf, zeroBuffer], len);
42218 var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE;
42219 for (var i =
0; i < buf.length; i += intSize) {
42220 arr.push(fn.call(buf, i));
42225 function toBuffer(arr, size, bigEndian) {
42226 var buf = new Buffer(size);
42227 var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE;
42228 for (var i =
0; i < arr.length; i++) {
42229 fn.call(buf, arr[i], i *
4, true);
42234 function hash(buf, fn, hashSize, bigEndian) {
42235 if (!Buffer.isBuffer(buf)) buf = new Buffer(buf);
42236 var arr = fn(toArray(buf, bigEndian), buf.length * chrsz);
42237 return toBuffer(arr, hashSize, bigEndian);
42239 exports.hash = hash;
42240 }).call(this,require("buffer").Buffer)
42241 },{"buffer":
5}],
38:[function(require,module,exports){
42244 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
42245 * Digest Algorithm, as defined in RFC
1321.
42246 * Version
2.1 Copyright (C) Paul Johnston
1999 -
2002.
42247 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
42248 * Distributed under the BSD License
42249 * See http://pajhome.org.uk/crypt/md5 for more info.
42252 var helpers = require('./helpers');
42255 * Calculate the MD5 of an array of little-endian words, and a bit length
42257 function core_md5(x, len)
42259 /* append padding */
42260 x[len
>> 5] |=
0x80 << ((len) %
32);
42261 x[(((len +
64)
>>> 9) <<
4) +
14] = len;
42263 var a =
1732584193;
42264 var b = -
271733879;
42265 var c = -
1732584194;
42268 for(var i =
0; i < x.length; i +=
16)
42275 a = md5_ff(a, b, c, d, x[i+
0],
7 , -
680876936);
42276 d = md5_ff(d, a, b, c, x[i+
1],
12, -
389564586);
42277 c = md5_ff(c, d, a, b, x[i+
2],
17,
606105819);
42278 b = md5_ff(b, c, d, a, x[i+
3],
22, -
1044525330);
42279 a = md5_ff(a, b, c, d, x[i+
4],
7 , -
176418897);
42280 d = md5_ff(d, a, b, c, x[i+
5],
12,
1200080426);
42281 c = md5_ff(c, d, a, b, x[i+
6],
17, -
1473231341);
42282 b = md5_ff(b, c, d, a, x[i+
7],
22, -
45705983);
42283 a = md5_ff(a, b, c, d, x[i+
8],
7 ,
1770035416);
42284 d = md5_ff(d, a, b, c, x[i+
9],
12, -
1958414417);
42285 c = md5_ff(c, d, a, b, x[i+
10],
17, -
42063);
42286 b = md5_ff(b, c, d, a, x[i+
11],
22, -
1990404162);
42287 a = md5_ff(a, b, c, d, x[i+
12],
7 ,
1804603682);
42288 d = md5_ff(d, a, b, c, x[i+
13],
12, -
40341101);
42289 c = md5_ff(c, d, a, b, x[i+
14],
17, -
1502002290);
42290 b = md5_ff(b, c, d, a, x[i+
15],
22,
1236535329);
42292 a = md5_gg(a, b, c, d, x[i+
1],
5 , -
165796510);
42293 d = md5_gg(d, a, b, c, x[i+
6],
9 , -
1069501632);
42294 c = md5_gg(c, d, a, b, x[i+
11],
14,
643717713);
42295 b = md5_gg(b, c, d, a, x[i+
0],
20, -
373897302);
42296 a = md5_gg(a, b, c, d, x[i+
5],
5 , -
701558691);
42297 d = md5_gg(d, a, b, c, x[i+
10],
9 ,
38016083);
42298 c = md5_gg(c, d, a, b, x[i+
15],
14, -
660478335);
42299 b = md5_gg(b, c, d, a, x[i+
4],
20, -
405537848);
42300 a = md5_gg(a, b, c, d, x[i+
9],
5 ,
568446438);
42301 d = md5_gg(d, a, b, c, x[i+
14],
9 , -
1019803690);
42302 c = md5_gg(c, d, a, b, x[i+
3],
14, -
187363961);
42303 b = md5_gg(b, c, d, a, x[i+
8],
20,
1163531501);
42304 a = md5_gg(a, b, c, d, x[i+
13],
5 , -
1444681467);
42305 d = md5_gg(d, a, b, c, x[i+
2],
9 , -
51403784);
42306 c = md5_gg(c, d, a, b, x[i+
7],
14,
1735328473);
42307 b = md5_gg(b, c, d, a, x[i+
12],
20, -
1926607734);
42309 a = md5_hh(a, b, c, d, x[i+
5],
4 , -
378558);
42310 d = md5_hh(d, a, b, c, x[i+
8],
11, -
2022574463);
42311 c = md5_hh(c, d, a, b, x[i+
11],
16,
1839030562);
42312 b = md5_hh(b, c, d, a, x[i+
14],
23, -
35309556);
42313 a = md5_hh(a, b, c, d, x[i+
1],
4 , -
1530992060);
42314 d = md5_hh(d, a, b, c, x[i+
4],
11,
1272893353);
42315 c = md5_hh(c, d, a, b, x[i+
7],
16, -
155497632);
42316 b = md5_hh(b, c, d, a, x[i+
10],
23, -
1094730640);
42317 a = md5_hh(a, b, c, d, x[i+
13],
4 ,
681279174);
42318 d = md5_hh(d, a, b, c, x[i+
0],
11, -
358537222);
42319 c = md5_hh(c, d, a, b, x[i+
3],
16, -
722521979);
42320 b = md5_hh(b, c, d, a, x[i+
6],
23,
76029189);
42321 a = md5_hh(a, b, c, d, x[i+
9],
4 , -
640364487);
42322 d = md5_hh(d, a, b, c, x[i+
12],
11, -
421815835);
42323 c = md5_hh(c, d, a, b, x[i+
15],
16,
530742520);
42324 b = md5_hh(b, c, d, a, x[i+
2],
23, -
995338651);
42326 a = md5_ii(a, b, c, d, x[i+
0],
6 , -
198630844);
42327 d = md5_ii(d, a, b, c, x[i+
7],
10,
1126891415);
42328 c = md5_ii(c, d, a, b, x[i+
14],
15, -
1416354905);
42329 b = md5_ii(b, c, d, a, x[i+
5],
21, -
57434055);
42330 a = md5_ii(a, b, c, d, x[i+
12],
6 ,
1700485571);
42331 d = md5_ii(d, a, b, c, x[i+
3],
10, -
1894986606);
42332 c = md5_ii(c, d, a, b, x[i+
10],
15, -
1051523);
42333 b = md5_ii(b, c, d, a, x[i+
1],
21, -
2054922799);
42334 a = md5_ii(a, b, c, d, x[i+
8],
6 ,
1873313359);
42335 d = md5_ii(d, a, b, c, x[i+
15],
10, -
30611744);
42336 c = md5_ii(c, d, a, b, x[i+
6],
15, -
1560198380);
42337 b = md5_ii(b, c, d, a, x[i+
13],
21,
1309151649);
42338 a = md5_ii(a, b, c, d, x[i+
4],
6 , -
145523070);
42339 d = md5_ii(d, a, b, c, x[i+
11],
10, -
1120210379);
42340 c = md5_ii(c, d, a, b, x[i+
2],
15,
718787259);
42341 b = md5_ii(b, c, d, a, x[i+
9],
21, -
343485551);
42343 a = safe_add(a, olda);
42344 b = safe_add(b, oldb);
42345 c = safe_add(c, oldc);
42346 d = safe_add(d, oldd);
42348 return Array(a, b, c, d);
42353 * These functions implement the four basic operations the algorithm uses.
42355 function md5_cmn(q, a, b, x, s, t)
42357 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
42359 function md5_ff(a, b, c, d, x, s, t)
42361 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
42363 function md5_gg(a, b, c, d, x, s, t)
42365 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
42367 function md5_hh(a, b, c, d, x, s, t)
42369 return md5_cmn(b ^ c ^ d, a, b, x, s, t);
42371 function md5_ii(a, b, c, d, x, s, t)
42373 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
42377 * Add integers, wrapping at
2^
32. This uses
16-bit operations internally
42378 * to work around bugs in some JS interpreters.
42380 function safe_add(x, y)
42382 var lsw = (x &
0xFFFF) + (y &
0xFFFF);
42383 var msw = (x
>> 16) + (y
>> 16) + (lsw
>> 16);
42384 return (msw <<
16) | (lsw &
0xFFFF);
42388 * Bitwise rotate a
32-bit number to the left.
42390 function bit_rol(num, cnt)
42392 return (num << cnt) | (num
>>> (
32 - cnt));
42395 module.exports = function md5(buf) {
42396 return helpers.hash(buf, core_md5,
16);
42398 },{"./helpers":
37}],
39:[function(require,module,exports){
42401 var elliptic = exports;
42403 elliptic.version = require('../package.json').version;
42404 elliptic.utils = require('./elliptic/utils');
42405 elliptic.rand = require('brorand');
42406 elliptic.hmacDRBG = require('./elliptic/hmac-drbg');
42407 elliptic.curve = require('./elliptic/curve');
42408 elliptic.curves = require('./elliptic/curves');
42411 elliptic.ec = require('./elliptic/ec');
42412 elliptic.eddsa = require('./elliptic/eddsa');
42414 },{"../package.json":
55,"./elliptic/curve":
42,"./elliptic/curves":
45,"./elliptic/ec":
46,"./elliptic/eddsa":
49,"./elliptic/hmac-drbg":
52,"./elliptic/utils":
54,"brorand":
34}],
40:[function(require,module,exports){
42417 var BN = require('bn.js');
42418 var elliptic = require('../../elliptic');
42419 var utils = elliptic.utils;
42420 var getNAF = utils.getNAF;
42421 var getJSF = utils.getJSF;
42422 var assert = utils.assert;
42424 function BaseCurve(type, conf) {
42426 this.p = new BN(conf.p,
16);
42428 // Use Montgomery, when there is no fast reduction for the prime
42429 this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);
42431 // Useful for many curves
42432 this.zero = new BN(
0).toRed(this.red);
42433 this.one = new BN(
1).toRed(this.red);
42434 this.two = new BN(
2).toRed(this.red);
42436 // Curve configuration, optional
42437 this.n = conf.n && new BN(conf.n,
16);
42438 this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);
42440 // Temporary arrays
42441 this._wnafT1 = new Array(
4);
42442 this._wnafT2 = new Array(
4);
42443 this._wnafT3 = new Array(
4);
42444 this._wnafT4 = new Array(
4);
42446 // Generalized Greg Maxwell's trick
42447 var adjustCount = this.n && this.p.div(this.n);
42448 if (!adjustCount || adjustCount.cmpn(
100)
> 0) {
42451 this._maxwellTrick = true;
42452 this.redN = this.n.toRed(this.red);
42455 module.exports = BaseCurve;
42457 BaseCurve.prototype.point = function point() {
42458 throw new Error('Not implemented');
42461 BaseCurve.prototype.validate = function validate() {
42462 throw new Error('Not implemented');
42465 BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {
42466 assert(p.precomputed);
42467 var doubles = p._getDoubles();
42469 var naf = getNAF(k,
1);
42470 var I = (
1 << (doubles.step +
1)) - (doubles.step %
2 ===
0 ?
2 :
1);
42473 // Translate into more windowed form
42475 for (var j =
0; j < naf.length; j += doubles.step) {
42477 for (var k = j + doubles.step -
1; k
>= j; k--)
42478 nafW = (nafW <<
1) + naf[k];
42482 var a = this.jpoint(null, null, null);
42483 var b = this.jpoint(null, null, null);
42484 for (var i = I; i
> 0; i--) {
42485 for (var j =
0; j < repr.length; j++) {
42486 var nafW = repr[j];
42488 b = b.mixedAdd(doubles.points[j]);
42489 else if (nafW === -i)
42490 b = b.mixedAdd(doubles.points[j].neg());
42497 BaseCurve.prototype._wnafMul = function _wnafMul(p, k) {
42500 // Precompute window
42501 var nafPoints = p._getNAFPoints(w);
42503 var wnd = nafPoints.points;
42506 var naf = getNAF(k, w);
42508 // Add `this`*(N+
1) for every w-NAF index
42509 var acc = this.jpoint(null, null, null);
42510 for (var i = naf.length -
1; i
>=
0; i--) {
42512 for (var k =
0; i
>=
0 && naf[i] ===
0; i--)
42522 if (p.type === 'affine') {
42525 acc = acc.mixedAdd(wnd[(z -
1)
>> 1]);
42527 acc = acc.mixedAdd(wnd[(-z -
1)
>> 1].neg());
42531 acc = acc.add(wnd[(z -
1)
>> 1]);
42533 acc = acc.add(wnd[(-z -
1)
>> 1].neg());
42536 return p.type === 'affine' ? acc.toP() : acc;
42539 BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,
42544 var wndWidth = this._wnafT1;
42545 var wnd = this._wnafT2;
42546 var naf = this._wnafT3;
42550 for (var i =
0; i < len; i++) {
42552 var nafPoints = p._getNAFPoints(defW);
42553 wndWidth[i] = nafPoints.wnd;
42554 wnd[i] = nafPoints.points;
42557 // Comb small window NAFs
42558 for (var i = len -
1; i
>=
1; i -=
2) {
42561 if (wndWidth[a] !==
1 || wndWidth[b] !==
1) {
42562 naf[a] = getNAF(coeffs[a], wndWidth[a]);
42563 naf[b] = getNAF(coeffs[b], wndWidth[b]);
42564 max = Math.max(naf[a].length, max);
42565 max = Math.max(naf[b].length, max);
42576 // Try to avoid Projective points, if possible
42577 if (points[a].y.cmp(points[b].y) ===
0) {
42578 comb[
1] = points[a].add(points[b]);
42579 comb[
2] = points[a].toJ().mixedAdd(points[b].neg());
42580 } else if (points[a].y.cmp(points[b].y.redNeg()) ===
0) {
42581 comb[
1] = points[a].toJ().mixedAdd(points[b]);
42582 comb[
2] = points[a].add(points[b].neg());
42584 comb[
1] = points[a].toJ().mixedAdd(points[b]);
42585 comb[
2] = points[a].toJ().mixedAdd(points[b].neg());
42600 var jsf = getJSF(coeffs[a], coeffs[b]);
42601 max = Math.max(jsf[
0].length, max);
42602 naf[a] = new Array(max);
42603 naf[b] = new Array(max);
42604 for (var j =
0; j < max; j++) {
42605 var ja = jsf[
0][j] |
0;
42606 var jb = jsf[
1][j] |
0;
42608 naf[a][j] = index[(ja +
1) *
3 + (jb +
1)];
42614 var acc = this.jpoint(null, null, null);
42615 var tmp = this._wnafT4;
42616 for (var i = max; i
>=
0; i--) {
42621 for (var j =
0; j < len; j++) {
42622 tmp[j] = naf[j][i] |
0;
42637 for (var j =
0; j < len; j++) {
42643 p = wnd[j][(z -
1)
>> 1];
42645 p = wnd[j][(-z -
1)
>> 1].neg();
42647 if (p.type === 'affine')
42648 acc = acc.mixedAdd(p);
42653 // Zeroify references
42654 for (var i =
0; i < len; i++)
42657 if (jacobianResult)
42663 function BasePoint(curve, type) {
42664 this.curve = curve;
42666 this.precomputed = null;
42668 BaseCurve.BasePoint = BasePoint;
42670 BasePoint.prototype.eq = function eq(/*other*/) {
42671 throw new Error('Not implemented');
42674 BasePoint.prototype.validate = function validate() {
42675 return this.curve.validate(this);
42678 BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
42679 bytes = utils.toArray(bytes, enc);
42681 var len = this.p.byteLength();
42683 // uncompressed, hybrid-odd, hybrid-even
42684 if ((bytes[
0] ===
0x04 || bytes[
0] ===
0x06 || bytes[
0] ===
0x07) &&
42685 bytes.length -
1 ===
2 * len) {
42686 if (bytes[
0] ===
0x06)
42687 assert(bytes[bytes.length -
1] %
2 ===
0);
42688 else if (bytes[
0] ===
0x07)
42689 assert(bytes[bytes.length -
1] %
2 ===
1);
42691 var res = this.point(bytes.slice(
1,
1 + len),
42692 bytes.slice(
1 + len,
1 +
2 * len));
42695 } else if ((bytes[
0] ===
0x02 || bytes[
0] ===
0x03) &&
42696 bytes.length -
1 === len) {
42697 return this.pointFromX(bytes.slice(
1,
1 + len), bytes[
0] ===
0x03);
42699 throw new Error('Unknown point format');
42702 BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {
42703 return this.encode(enc, true);
42706 BasePoint.prototype._encode = function _encode(compact) {
42707 var len = this.curve.p.byteLength();
42708 var x = this.getX().toArray('be', len);
42711 return [ this.getY().isEven() ?
0x02 :
0x03 ].concat(x);
42713 return [
0x04 ].concat(x, this.getY().toArray('be', len)) ;
42716 BasePoint.prototype.encode = function encode(enc, compact) {
42717 return utils.encode(this._encode(compact), enc);
42720 BasePoint.prototype.precompute = function precompute(power) {
42721 if (this.precomputed)
42724 var precomputed = {
42729 precomputed.naf = this._getNAFPoints(
8);
42730 precomputed.doubles = this._getDoubles(
4, power);
42731 precomputed.beta = this._getBeta();
42732 this.precomputed = precomputed;
42737 BasePoint.prototype._hasDoubles = function _hasDoubles(k) {
42738 if (!this.precomputed)
42741 var doubles = this.precomputed.doubles;
42745 return doubles.points.length
>= Math.ceil((k.bitLength() +
1) / doubles.step);
42748 BasePoint.prototype._getDoubles = function _getDoubles(step, power) {
42749 if (this.precomputed && this.precomputed.doubles)
42750 return this.precomputed.doubles;
42752 var doubles = [ this ];
42754 for (var i =
0; i < power; i += step) {
42755 for (var j =
0; j < step; j++)
42765 BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {
42766 if (this.precomputed && this.precomputed.naf)
42767 return this.precomputed.naf;
42769 var res = [ this ];
42770 var max = (
1 << wnd) -
1;
42771 var dbl = max ===
1 ? null : this.dbl();
42772 for (var i =
1; i < max; i++)
42773 res[i] = res[i -
1].add(dbl);
42780 BasePoint.prototype._getBeta = function _getBeta() {
42784 BasePoint.prototype.dblp = function dblp(k) {
42786 for (var i =
0; i < k; i++)
42791 },{"../../elliptic":
39,"bn.js":
33}],
41:[function(require,module,exports){
42794 var curve = require('../curve');
42795 var elliptic = require('../../elliptic');
42796 var BN = require('bn.js');
42797 var inherits = require('inherits');
42798 var Base = curve.base;
42800 var assert = elliptic.utils.assert;
42802 function EdwardsCurve(conf) {
42803 // NOTE: Important as we are creating point in Base.call()
42804 this.twisted = (conf.a |
0) !==
1;
42805 this.mOneA = this.twisted && (conf.a |
0) === -
1;
42806 this.extended = this.mOneA;
42808 Base.call(this, 'edwards', conf);
42810 this.a = new BN(conf.a,
16).umod(this.red.m);
42811 this.a = this.a.toRed(this.red);
42812 this.c = new BN(conf.c,
16).toRed(this.red);
42813 this.c2 = this.c.redSqr();
42814 this.d = new BN(conf.d,
16).toRed(this.red);
42815 this.dd = this.d.redAdd(this.d);
42817 assert(!this.twisted || this.c.fromRed().cmpn(
1) ===
0);
42818 this.oneC = (conf.c |
0) ===
1;
42820 inherits(EdwardsCurve, Base);
42821 module.exports = EdwardsCurve;
42823 EdwardsCurve.prototype._mulA = function _mulA(num) {
42825 return num.redNeg();
42827 return this.a.redMul(num);
42830 EdwardsCurve.prototype._mulC = function _mulC(num) {
42834 return this.c.redMul(num);
42837 // Just for compatibility with Short curve
42838 EdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {
42839 return this.point(x, y, z, t);
42842 EdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {
42845 x = x.toRed(this.red);
42847 var x2 = x.redSqr();
42848 var rhs = this.c2.redSub(this.a.redMul(x2));
42849 var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));
42851 var y2 = rhs.redMul(lhs.redInvm());
42852 var y = y2.redSqrt();
42853 if (y.redSqr().redSub(y2).cmp(this.zero) !==
0)
42854 throw new Error('invalid point');
42856 var isOdd = y.fromRed().isOdd();
42857 if (odd && !isOdd || !odd && isOdd)
42860 return this.point(x, y);
42863 EdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {
42866 y = y.toRed(this.red);
42868 // x^
2 = (y^
2 -
1) / (d y^
2 +
1)
42869 var y2 = y.redSqr();
42870 var lhs = y2.redSub(this.one);
42871 var rhs = y2.redMul(this.d).redAdd(this.one);
42872 var x2 = lhs.redMul(rhs.redInvm());
42874 if (x2.cmp(this.zero) ===
0) {
42876 throw new Error('invalid point');
42878 return this.point(this.zero, y);
42881 var x = x2.redSqrt();
42882 if (x.redSqr().redSub(x2).cmp(this.zero) !==
0)
42883 throw new Error('invalid point');
42885 if (x.isOdd() !== odd)
42888 return this.point(x, y);
42891 EdwardsCurve.prototype.validate = function validate(point) {
42892 if (point.isInfinity())
42895 // Curve: A * X^
2 + Y^
2 = C^
2 * (
1 + D * X^
2 * Y^
2)
42898 var x2 = point.x.redSqr();
42899 var y2 = point.y.redSqr();
42900 var lhs = x2.redMul(this.a).redAdd(y2);
42901 var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));
42903 return lhs.cmp(rhs) ===
0;
42906 function Point(curve, x, y, z, t) {
42907 Base.BasePoint.call(this, curve, 'projective');
42908 if (x === null && y === null && z === null) {
42909 this.x = this.curve.zero;
42910 this.y = this.curve.one;
42911 this.z = this.curve.one;
42912 this.t = this.curve.zero;
42915 this.x = new BN(x,
16);
42916 this.y = new BN(y,
16);
42917 this.z = z ? new BN(z,
16) : this.curve.one;
42918 this.t = t && new BN(t,
16);
42920 this.x = this.x.toRed(this.curve.red);
42922 this.y = this.y.toRed(this.curve.red);
42924 this.z = this.z.toRed(this.curve.red);
42925 if (this.t && !this.t.red)
42926 this.t = this.t.toRed(this.curve.red);
42927 this.zOne = this.z === this.curve.one;
42929 // Use extended coordinates
42930 if (this.curve.extended && !this.t) {
42931 this.t = this.x.redMul(this.y);
42933 this.t = this.t.redMul(this.z.redInvm());
42937 inherits(Point, Base.BasePoint);
42939 EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
42940 return Point.fromJSON(this, obj);
42943 EdwardsCurve.prototype.point = function point(x, y, z, t) {
42944 return new Point(this, x, y, z, t);
42947 Point.fromJSON = function fromJSON(curve, obj) {
42948 return new Point(curve, obj[
0], obj[
1], obj[
2]);
42951 Point.prototype.inspect = function inspect() {
42952 if (this.isInfinity())
42953 return '
<EC Point Infinity
>';
42954 return '
<EC Point x: ' + this.x.fromRed().toString(
16,
2) +
42955 ' y: ' + this.y.fromRed().toString(
16,
2) +
42956 ' z: ' + this.z.fromRed().toString(
16,
2) + '
>';
42959 Point.prototype.isInfinity = function isInfinity() {
42960 // XXX This code assumes that zero is always zero in red
42961 return this.x.cmpn(
0) ===
0 &&
42962 this.y.cmp(this.z) ===
0;
42965 Point.prototype._extDbl = function _extDbl() {
42966 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-
1.html
42967 // #doubling-dbl-
2008-hwcd
42971 var a = this.x.redSqr();
42973 var b = this.y.redSqr();
42975 var c = this.z.redSqr();
42978 var d = this.curve._mulA(a);
42979 // E = (X1 + Y1)^
2 - A - B
42980 var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);
42982 var g = d.redAdd(b);
42984 var f = g.redSub(c);
42986 var h = d.redSub(b);
42988 var nx = e.redMul(f);
42990 var ny = g.redMul(h);
42992 var nt = e.redMul(h);
42994 var nz = f.redMul(g);
42995 return this.curve.point(nx, ny, nz, nt);
42998 Point.prototype._projDbl = function _projDbl() {
42999 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
43000 // #doubling-dbl-
2008-bbjlp
43001 // #doubling-dbl-
2007-bl
43003 // Generally
3M +
4S or
2M +
4S
43006 var b = this.x.redAdd(this.y).redSqr();
43008 var c = this.x.redSqr();
43010 var d = this.y.redSqr();
43015 if (this.curve.twisted) {
43017 var e = this.curve._mulA(c);
43019 var f = e.redAdd(d);
43021 // X3 = (B - C - D) * (F -
2)
43022 nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));
43023 // Y3 = F * (E - D)
43024 ny = f.redMul(e.redSub(d));
43025 // Z3 = F^
2 -
2 * F
43026 nz = f.redSqr().redSub(f).redSub(f);
43029 var h = this.z.redSqr();
43031 var j = f.redSub(h).redISub(h);
43033 nx = b.redSub(c).redISub(d).redMul(j);
43034 // Y3 = F * (E - D)
43035 ny = f.redMul(e.redSub(d));
43041 var e = c.redAdd(d);
43043 var h = this.curve._mulC(this.c.redMul(this.z)).redSqr();
43045 var j = e.redSub(h).redSub(h);
43046 // X3 = c * (B - E) * J
43047 nx = this.curve._mulC(b.redISub(e)).redMul(j);
43048 // Y3 = c * E * (C - D)
43049 ny = this.curve._mulC(e).redMul(c.redISub(d));
43053 return this.curve.point(nx, ny, nz);
43056 Point.prototype.dbl = function dbl() {
43057 if (this.isInfinity())
43060 // Double in extended coordinates
43061 if (this.curve.extended)
43062 return this._extDbl();
43064 return this._projDbl();
43067 Point.prototype._extAdd = function _extAdd(p) {
43068 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-
1.html
43069 // #addition-add-
2008-hwcd-
3
43072 // A = (Y1 - X1) * (Y2 - X2)
43073 var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));
43074 // B = (Y1 + X1) * (Y2 + X2)
43075 var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));
43077 var c = this.t.redMul(this.curve.dd).redMul(p.t);
43079 var d = this.z.redMul(p.z.redAdd(p.z));
43081 var e = b.redSub(a);
43083 var f = d.redSub(c);
43085 var g = d.redAdd(c);
43087 var h = b.redAdd(a);
43089 var nx = e.redMul(f);
43091 var ny = g.redMul(h);
43093 var nt = e.redMul(h);
43095 var nz = f.redMul(g);
43096 return this.curve.point(nx, ny, nz, nt);
43099 Point.prototype._projAdd = function _projAdd(p) {
43100 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
43101 // #addition-add-
2008-bbjlp
43102 // #addition-add-
2007-bl
43106 var a = this.z.redMul(p.z);
43108 var b = a.redSqr();
43110 var c = this.x.redMul(p.x);
43112 var d = this.y.redMul(p.y);
43114 var e = this.curve.d.redMul(c).redMul(d);
43116 var f = b.redSub(e);
43118 var g = b.redAdd(e);
43119 // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)
43120 var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);
43121 var nx = a.redMul(f).redMul(tmp);
43124 if (this.curve.twisted) {
43125 // Y3 = A * G * (D - a * C)
43126 ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));
43130 // Y3 = A * G * (D - C)
43131 ny = a.redMul(g).redMul(d.redSub(c));
43133 nz = this.curve._mulC(f).redMul(g);
43135 return this.curve.point(nx, ny, nz);
43138 Point.prototype.add = function add(p) {
43139 if (this.isInfinity())
43141 if (p.isInfinity())
43144 if (this.curve.extended)
43145 return this._extAdd(p);
43147 return this._projAdd(p);
43150 Point.prototype.mul = function mul(k) {
43151 if (this._hasDoubles(k))
43152 return this.curve._fixedNafMul(this, k);
43154 return this.curve._wnafMul(this, k);
43157 Point.prototype.mulAdd = function mulAdd(k1, p, k2) {
43158 return this.curve._wnafMulAdd(
1, [ this, p ], [ k1, k2 ],
2, false);
43161 Point.prototype.jmulAdd = function jmulAdd(k1, p, k2) {
43162 return this.curve._wnafMulAdd(
1, [ this, p ], [ k1, k2 ],
2, true);
43165 Point.prototype.normalize = function normalize() {
43169 // Normalize coordinates
43170 var zi = this.z.redInvm();
43171 this.x = this.x.redMul(zi);
43172 this.y = this.y.redMul(zi);
43174 this.t = this.t.redMul(zi);
43175 this.z = this.curve.one;
43180 Point.prototype.neg = function neg() {
43181 return this.curve.point(this.x.redNeg(),
43184 this.t && this.t.redNeg());
43187 Point.prototype.getX = function getX() {
43189 return this.x.fromRed();
43192 Point.prototype.getY = function getY() {
43194 return this.y.fromRed();
43197 Point.prototype.eq = function eq(other) {
43198 return this === other ||
43199 this.getX().cmp(other.getX()) ===
0 &&
43200 this.getY().cmp(other.getY()) ===
0;
43203 Point.prototype.eqXToP = function eqXToP(x) {
43204 var rx = x.toRed(this.curve.red).redMul(this.z);
43205 if (this.x.cmp(rx) ===
0)
43208 var xc = x.clone();
43209 var t = this.curve.redN.redMul(this.z);
43211 xc.iadd(this.curve.n);
43212 if (xc.cmp(this.curve.p)
>=
0)
43216 if (this.x.cmp(rx) ===
0)
43222 // Compatibility with BaseCurve
43223 Point.prototype.toP = Point.prototype.normalize;
43224 Point.prototype.mixedAdd = Point.prototype.add;
43226 },{"../../elliptic":
39,"../curve":
42,"bn.js":
33,"inherits":
63}],
42:[function(require,module,exports){
43229 var curve = exports;
43231 curve.base = require('./base');
43232 curve.short = require('./short');
43233 curve.mont = require('./mont');
43234 curve.edwards = require('./edwards');
43236 },{"./base":
40,"./edwards":
41,"./mont":
43,"./short":
44}],
43:[function(require,module,exports){
43239 var curve = require('../curve');
43240 var BN = require('bn.js');
43241 var inherits = require('inherits');
43242 var Base = curve.base;
43244 var elliptic = require('../../elliptic');
43245 var utils = elliptic.utils;
43247 function MontCurve(conf) {
43248 Base.call(this, 'mont', conf);
43250 this.a = new BN(conf.a,
16).toRed(this.red);
43251 this.b = new BN(conf.b,
16).toRed(this.red);
43252 this.i4 = new BN(
4).toRed(this.red).redInvm();
43253 this.two = new BN(
2).toRed(this.red);
43254 this.a24 = this.i4.redMul(this.a.redAdd(this.two));
43256 inherits(MontCurve, Base);
43257 module.exports = MontCurve;
43259 MontCurve.prototype.validate = function validate(point) {
43260 var x = point.normalize().x;
43261 var x2 = x.redSqr();
43262 var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);
43263 var y = rhs.redSqrt();
43265 return y.redSqr().cmp(rhs) ===
0;
43268 function Point(curve, x, z) {
43269 Base.BasePoint.call(this, curve, 'projective');
43270 if (x === null && z === null) {
43271 this.x = this.curve.one;
43272 this.z = this.curve.zero;
43274 this.x = new BN(x,
16);
43275 this.z = new BN(z,
16);
43277 this.x = this.x.toRed(this.curve.red);
43279 this.z = this.z.toRed(this.curve.red);
43282 inherits(Point, Base.BasePoint);
43284 MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
43285 return this.point(utils.toArray(bytes, enc),
1);
43288 MontCurve.prototype.point = function point(x, z) {
43289 return new Point(this, x, z);
43292 MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
43293 return Point.fromJSON(this, obj);
43296 Point.prototype.precompute = function precompute() {
43300 Point.prototype._encode = function _encode() {
43301 return this.getX().toArray('be', this.curve.p.byteLength());
43304 Point.fromJSON = function fromJSON(curve, obj) {
43305 return new Point(curve, obj[
0], obj[
1] || curve.one);
43308 Point.prototype.inspect = function inspect() {
43309 if (this.isInfinity())
43310 return '
<EC Point Infinity
>';
43311 return '
<EC Point x: ' + this.x.fromRed().toString(
16,
2) +
43312 ' z: ' + this.z.fromRed().toString(
16,
2) + '
>';
43315 Point.prototype.isInfinity = function isInfinity() {
43316 // XXX This code assumes that zero is always zero in red
43317 return this.z.cmpn(
0) ===
0;
43320 Point.prototype.dbl = function dbl() {
43321 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-
1987-m-
3
43325 var a = this.x.redAdd(this.z);
43327 var aa = a.redSqr();
43329 var b = this.x.redSub(this.z);
43331 var bb = b.redSqr();
43333 var c = aa.redSub(bb);
43335 var nx = aa.redMul(bb);
43336 // Z3 = C * (BB + A24 * C)
43337 var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));
43338 return this.curve.point(nx, nz);
43341 Point.prototype.add = function add() {
43342 throw new Error('Not supported on Montgomery curve');
43345 Point.prototype.diffAdd = function diffAdd(p, diff) {
43346 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-
1987-m-
3
43350 var a = this.x.redAdd(this.z);
43352 var b = this.x.redSub(this.z);
43354 var c = p.x.redAdd(p.z);
43356 var d = p.x.redSub(p.z);
43358 var da = d.redMul(a);
43360 var cb = c.redMul(b);
43361 // X5 = Z1 * (DA + CB)^
2
43362 var nx = diff.z.redMul(da.redAdd(cb).redSqr());
43363 // Z5 = X1 * (DA - CB)^
2
43364 var nz = diff.x.redMul(da.redISub(cb).redSqr());
43365 return this.curve.point(nx, nz);
43368 Point.prototype.mul = function mul(k) {
43370 var a = this; // (N /
2) * Q + Q
43371 var b = this.curve.point(null, null); // (N /
2) * Q
43374 for (var bits = []; t.cmpn(
0) !==
0; t.iushrn(
1))
43375 bits.push(t.andln(
1));
43377 for (var i = bits.length -
1; i
>=
0; i--) {
43378 if (bits[i] ===
0) {
43379 // N * Q + Q = ((N /
2) * Q + Q)) + (N /
2) * Q
43380 a = a.diffAdd(b, c);
43381 // N * Q =
2 * ((N /
2) * Q + Q))
43384 // N * Q = ((N /
2) * Q + Q) + ((N /
2) * Q)
43385 b = a.diffAdd(b, c);
43386 // N * Q + Q =
2 * ((N /
2) * Q + Q)
43393 Point.prototype.mulAdd = function mulAdd() {
43394 throw new Error('Not supported on Montgomery curve');
43397 Point.prototype.jumlAdd = function jumlAdd() {
43398 throw new Error('Not supported on Montgomery curve');
43401 Point.prototype.eq = function eq(other) {
43402 return this.getX().cmp(other.getX()) ===
0;
43405 Point.prototype.normalize = function normalize() {
43406 this.x = this.x.redMul(this.z.redInvm());
43407 this.z = this.curve.one;
43411 Point.prototype.getX = function getX() {
43412 // Normalize coordinates
43415 return this.x.fromRed();
43418 },{"../../elliptic":
39,"../curve":
42,"bn.js":
33,"inherits":
63}],
44:[function(require,module,exports){
43421 var curve = require('../curve');
43422 var elliptic = require('../../elliptic');
43423 var BN = require('bn.js');
43424 var inherits = require('inherits');
43425 var Base = curve.base;
43427 var assert = elliptic.utils.assert;
43429 function ShortCurve(conf) {
43430 Base.call(this, 'short', conf);
43432 this.a = new BN(conf.a,
16).toRed(this.red);
43433 this.b = new BN(conf.b,
16).toRed(this.red);
43434 this.tinv = this.two.redInvm();
43436 this.zeroA = this.a.fromRed().cmpn(
0) ===
0;
43437 this.threeA = this.a.fromRed().sub(this.p).cmpn(-
3) ===
0;
43439 // If the curve is endomorphic, precalculate beta and lambda
43440 this.endo = this._getEndomorphism(conf);
43441 this._endoWnafT1 = new Array(
4);
43442 this._endoWnafT2 = new Array(
4);
43444 inherits(ShortCurve, Base);
43445 module.exports = ShortCurve;
43447 ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {
43448 // No efficient endomorphism
43449 if (!this.zeroA || !this.g || !this.n || this.p.modn(
3) !==
1)
43452 // Compute beta and lambda, that lambda * P = (beta * Px; Py)
43456 beta = new BN(conf.beta,
16).toRed(this.red);
43458 var betas = this._getEndoRoots(this.p);
43459 // Choose the smallest beta
43460 beta = betas[
0].cmp(betas[
1]) <
0 ? betas[
0] : betas[
1];
43461 beta = beta.toRed(this.red);
43464 lambda = new BN(conf.lambda,
16);
43466 // Choose the lambda that is matching selected beta
43467 var lambdas = this._getEndoRoots(this.n);
43468 if (this.g.mul(lambdas[
0]).x.cmp(this.g.x.redMul(beta)) ===
0) {
43469 lambda = lambdas[
0];
43471 lambda = lambdas[
1];
43472 assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) ===
0);
43476 // Get basis vectors, used for balanced length-two representation
43479 basis = conf.basis.map(function(vec) {
43481 a: new BN(vec.a,
16),
43482 b: new BN(vec.b,
16)
43486 basis = this._getEndoBasis(lambda);
43496 ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {
43497 // Find roots of for x^
2 + x +
1 in F
43498 // Root = (-
1 +- Sqrt(-
3)) /
2
43500 var red = num === this.p ? this.red : BN.mont(num);
43501 var tinv = new BN(
2).toRed(red).redInvm();
43502 var ntinv = tinv.redNeg();
43504 var s = new BN(
3).toRed(red).redNeg().redSqrt().redMul(tinv);
43506 var l1 = ntinv.redAdd(s).fromRed();
43507 var l2 = ntinv.redSub(s).fromRed();
43511 ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {
43512 // aprxSqrt
>= sqrt(this.n)
43513 var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() /
2));
43516 // Run EGCD, until r(L +
1) < aprxSqrt
43518 var v = this.n.clone();
43519 var x1 = new BN(
1);
43520 var y1 = new BN(
0);
43521 var x2 = new BN(
0);
43522 var y2 = new BN(
1);
43524 // NOTE: all vectors are roots of: a + b * lambda =
0 (mod n)
43538 while (u.cmpn(
0) !==
0) {
43540 r = v.sub(q.mul(u));
43541 x = x2.sub(q.mul(x1));
43542 var y = y2.sub(q.mul(y1));
43544 if (!a1 && r.cmp(aprxSqrt) <
0) {
43549 } else if (a1 && ++i ===
2) {
43564 var len1 = a1.sqr().add(b1.sqr());
43565 var len2 = a2.sqr().add(b2.sqr());
43566 if (len2.cmp(len1)
>=
0) {
43587 ShortCurve.prototype._endoSplit = function _endoSplit(k) {
43588 var basis = this.endo.basis;
43592 var c1 = v2.b.mul(k).divRound(this.n);
43593 var c2 = v1.b.neg().mul(k).divRound(this.n);
43595 var p1 = c1.mul(v1.a);
43596 var p2 = c2.mul(v2.a);
43597 var q1 = c1.mul(v1.b);
43598 var q2 = c2.mul(v2.b);
43600 // Calculate answer
43601 var k1 = k.sub(p1).sub(p2);
43602 var k2 = q1.add(q2).neg();
43603 return { k1: k1, k2: k2 };
43606 ShortCurve.prototype.pointFromX = function pointFromX(x, odd) {
43609 x = x.toRed(this.red);
43611 var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);
43612 var y = y2.redSqrt();
43613 if (y.redSqr().redSub(y2).cmp(this.zero) !==
0)
43614 throw new Error('invalid point');
43616 // XXX Is there any way to tell if the number is odd without converting it
43617 // to non-red form?
43618 var isOdd = y.fromRed().isOdd();
43619 if (odd && !isOdd || !odd && isOdd)
43622 return this.point(x, y);
43625 ShortCurve.prototype.validate = function validate(point) {
43632 var ax = this.a.redMul(x);
43633 var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);
43634 return y.redSqr().redISub(rhs).cmpn(
0) ===
0;
43637 ShortCurve.prototype._endoWnafMulAdd =
43638 function _endoWnafMulAdd(points, coeffs, jacobianResult) {
43639 var npoints = this._endoWnafT1;
43640 var ncoeffs = this._endoWnafT2;
43641 for (var i =
0; i < points.length; i++) {
43642 var split = this._endoSplit(coeffs[i]);
43644 var beta = p._getBeta();
43646 if (split.k1.negative) {
43650 if (split.k2.negative) {
43652 beta = beta.neg(true);
43655 npoints[i *
2] = p;
43656 npoints[i *
2 +
1] = beta;
43657 ncoeffs[i *
2] = split.k1;
43658 ncoeffs[i *
2 +
1] = split.k2;
43660 var res = this._wnafMulAdd(
1, npoints, ncoeffs, i *
2, jacobianResult);
43662 // Clean-up references to points and coefficients
43663 for (var j =
0; j < i *
2; j++) {
43670 function Point(curve, x, y, isRed) {
43671 Base.BasePoint.call(this, curve, 'affine');
43672 if (x === null && y === null) {
43677 this.x = new BN(x,
16);
43678 this.y = new BN(y,
16);
43679 // Force redgomery representation when loading from JSON
43681 this.x.forceRed(this.curve.red);
43682 this.y.forceRed(this.curve.red);
43685 this.x = this.x.toRed(this.curve.red);
43687 this.y = this.y.toRed(this.curve.red);
43691 inherits(Point, Base.BasePoint);
43693 ShortCurve.prototype.point = function point(x, y, isRed) {
43694 return new Point(this, x, y, isRed);
43697 ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {
43698 return Point.fromJSON(this, obj, red);
43701 Point.prototype._getBeta = function _getBeta() {
43702 if (!this.curve.endo)
43705 var pre = this.precomputed;
43706 if (pre && pre.beta)
43709 var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);
43711 var curve = this.curve;
43712 var endoMul = function(p) {
43713 return curve.point(p.x.redMul(curve.endo.beta), p.y);
43716 beta.precomputed = {
43720 points: pre.naf.points.map(endoMul)
43722 doubles: pre.doubles && {
43723 step: pre.doubles.step,
43724 points: pre.doubles.points.map(endoMul)
43731 Point.prototype.toJSON = function toJSON() {
43732 if (!this.precomputed)
43733 return [ this.x, this.y ];
43735 return [ this.x, this.y, this.precomputed && {
43736 doubles: this.precomputed.doubles && {
43737 step: this.precomputed.doubles.step,
43738 points: this.precomputed.doubles.points.slice(
1)
43740 naf: this.precomputed.naf && {
43741 wnd: this.precomputed.naf.wnd,
43742 points: this.precomputed.naf.points.slice(
1)
43747 Point.fromJSON = function fromJSON(curve, obj, red) {
43748 if (typeof obj === 'string')
43749 obj = JSON.parse(obj);
43750 var res = curve.point(obj[
0], obj[
1], red);
43754 function obj2point(obj) {
43755 return curve.point(obj[
0], obj[
1], red);
43759 res.precomputed = {
43761 doubles: pre.doubles && {
43762 step: pre.doubles.step,
43763 points: [ res ].concat(pre.doubles.points.map(obj2point))
43767 points: [ res ].concat(pre.naf.points.map(obj2point))
43773 Point.prototype.inspect = function inspect() {
43774 if (this.isInfinity())
43775 return '
<EC Point Infinity
>';
43776 return '
<EC Point x: ' + this.x.fromRed().toString(
16,
2) +
43777 ' y: ' + this.y.fromRed().toString(
16,
2) + '
>';
43780 Point.prototype.isInfinity = function isInfinity() {
43784 Point.prototype.add = function add(p) {
43798 if (this.neg().eq(p))
43799 return this.curve.point(null, null);
43802 if (this.x.cmp(p.x) ===
0)
43803 return this.curve.point(null, null);
43805 var c = this.y.redSub(p.y);
43806 if (c.cmpn(
0) !==
0)
43807 c = c.redMul(this.x.redSub(p.x).redInvm());
43808 var nx = c.redSqr().redISub(this.x).redISub(p.x);
43809 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
43810 return this.curve.point(nx, ny);
43813 Point.prototype.dbl = function dbl() {
43818 var ys1 = this.y.redAdd(this.y);
43819 if (ys1.cmpn(
0) ===
0)
43820 return this.curve.point(null, null);
43822 var a = this.curve.a;
43824 var x2 = this.x.redSqr();
43825 var dyinv = ys1.redInvm();
43826 var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);
43828 var nx = c.redSqr().redISub(this.x.redAdd(this.x));
43829 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
43830 return this.curve.point(nx, ny);
43833 Point.prototype.getX = function getX() {
43834 return this.x.fromRed();
43837 Point.prototype.getY = function getY() {
43838 return this.y.fromRed();
43841 Point.prototype.mul = function mul(k) {
43844 if (this._hasDoubles(k))
43845 return this.curve._fixedNafMul(this, k);
43846 else if (this.curve.endo)
43847 return this.curve._endoWnafMulAdd([ this ], [ k ]);
43849 return this.curve._wnafMul(this, k);
43852 Point.prototype.mulAdd = function mulAdd(k1, p2, k2) {
43853 var points = [ this, p2 ];
43854 var coeffs = [ k1, k2 ];
43855 if (this.curve.endo)
43856 return this.curve._endoWnafMulAdd(points, coeffs);
43858 return this.curve._wnafMulAdd(
1, points, coeffs,
2);
43861 Point.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {
43862 var points = [ this, p2 ];
43863 var coeffs = [ k1, k2 ];
43864 if (this.curve.endo)
43865 return this.curve._endoWnafMulAdd(points, coeffs, true);
43867 return this.curve._wnafMulAdd(
1, points, coeffs,
2, true);
43870 Point.prototype.eq = function eq(p) {
43871 return this === p ||
43872 this.inf === p.inf &&
43873 (this.inf || this.x.cmp(p.x) ===
0 && this.y.cmp(p.y) ===
0);
43876 Point.prototype.neg = function neg(_precompute) {
43880 var res = this.curve.point(this.x, this.y.redNeg());
43881 if (_precompute && this.precomputed) {
43882 var pre = this.precomputed;
43883 var negate = function(p) {
43886 res.precomputed = {
43889 points: pre.naf.points.map(negate)
43891 doubles: pre.doubles && {
43892 step: pre.doubles.step,
43893 points: pre.doubles.points.map(negate)
43900 Point.prototype.toJ = function toJ() {
43902 return this.curve.jpoint(null, null, null);
43904 var res = this.curve.jpoint(this.x, this.y, this.curve.one);
43908 function JPoint(curve, x, y, z) {
43909 Base.BasePoint.call(this, curve, 'jacobian');
43910 if (x === null && y === null && z === null) {
43911 this.x = this.curve.one;
43912 this.y = this.curve.one;
43913 this.z = new BN(
0);
43915 this.x = new BN(x,
16);
43916 this.y = new BN(y,
16);
43917 this.z = new BN(z,
16);
43920 this.x = this.x.toRed(this.curve.red);
43922 this.y = this.y.toRed(this.curve.red);
43924 this.z = this.z.toRed(this.curve.red);
43926 this.zOne = this.z === this.curve.one;
43928 inherits(JPoint, Base.BasePoint);
43930 ShortCurve.prototype.jpoint = function jpoint(x, y, z) {
43931 return new JPoint(this, x, y, z);
43934 JPoint.prototype.toP = function toP() {
43935 if (this.isInfinity())
43936 return this.curve.point(null, null);
43938 var zinv = this.z.redInvm();
43939 var zinv2 = zinv.redSqr();
43940 var ax = this.x.redMul(zinv2);
43941 var ay = this.y.redMul(zinv2).redMul(zinv);
43943 return this.curve.point(ax, ay);
43946 JPoint.prototype.neg = function neg() {
43947 return this.curve.jpoint(this.x, this.y.redNeg(), this.z);
43950 JPoint.prototype.add = function add(p) {
43952 if (this.isInfinity())
43956 if (p.isInfinity())
43960 var pz2 = p.z.redSqr();
43961 var z2 = this.z.redSqr();
43962 var u1 = this.x.redMul(pz2);
43963 var u2 = p.x.redMul(z2);
43964 var s1 = this.y.redMul(pz2.redMul(p.z));
43965 var s2 = p.y.redMul(z2.redMul(this.z));
43967 var h = u1.redSub(u2);
43968 var r = s1.redSub(s2);
43969 if (h.cmpn(
0) ===
0) {
43970 if (r.cmpn(
0) !==
0)
43971 return this.curve.jpoint(null, null, null);
43976 var h2 = h.redSqr();
43977 var h3 = h2.redMul(h);
43978 var v = u1.redMul(h2);
43980 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
43981 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
43982 var nz = this.z.redMul(p.z).redMul(h);
43984 return this.curve.jpoint(nx, ny, nz);
43987 JPoint.prototype.mixedAdd = function mixedAdd(p) {
43989 if (this.isInfinity())
43993 if (p.isInfinity())
43997 var z2 = this.z.redSqr();
43999 var u2 = p.x.redMul(z2);
44001 var s2 = p.y.redMul(z2).redMul(this.z);
44003 var h = u1.redSub(u2);
44004 var r = s1.redSub(s2);
44005 if (h.cmpn(
0) ===
0) {
44006 if (r.cmpn(
0) !==
0)
44007 return this.curve.jpoint(null, null, null);
44012 var h2 = h.redSqr();
44013 var h3 = h2.redMul(h);
44014 var v = u1.redMul(h2);
44016 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
44017 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
44018 var nz = this.z.redMul(h);
44020 return this.curve.jpoint(nx, ny, nz);
44023 JPoint.prototype.dblp = function dblp(pow) {
44026 if (this.isInfinity())
44031 if (this.curve.zeroA || this.curve.threeA) {
44033 for (var i =
0; i < pow; i++)
44038 //
1M +
2S +
1A + N * (
4S +
5M +
8A)
44039 // N =
1 =
> 6M +
6S +
9A
44040 var a = this.curve.a;
44041 var tinv = this.curve.tinv;
44046 var jz4 = jz.redSqr().redSqr();
44049 var jyd = jy.redAdd(jy);
44050 for (var i =
0; i < pow; i++) {
44051 var jx2 = jx.redSqr();
44052 var jyd2 = jyd.redSqr();
44053 var jyd4 = jyd2.redSqr();
44054 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
44056 var t1 = jx.redMul(jyd2);
44057 var nx = c.redSqr().redISub(t1.redAdd(t1));
44058 var t2 = t1.redISub(nx);
44059 var dny = c.redMul(t2);
44060 dny = dny.redIAdd(dny).redISub(jyd4);
44061 var nz = jyd.redMul(jz);
44063 jz4 = jz4.redMul(jyd4);
44070 return this.curve.jpoint(jx, jyd.redMul(tinv), jz);
44073 JPoint.prototype.dbl = function dbl() {
44074 if (this.isInfinity())
44077 if (this.curve.zeroA)
44078 return this._zeroDbl();
44079 else if (this.curve.threeA)
44080 return this._threeDbl();
44082 return this._dbl();
44085 JPoint.prototype._zeroDbl = function _zeroDbl() {
44091 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-
0.html
44092 // #doubling-mdbl-
2007-bl
44096 var xx = this.x.redSqr();
44098 var yy = this.y.redSqr();
44100 var yyyy = yy.redSqr();
44101 // S =
2 * ((X1 + YY)^
2 - XX - YYYY)
44102 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
44104 // M =
3 * XX + a; a =
0
44105 var m = xx.redAdd(xx).redIAdd(xx);
44107 var t = m.redSqr().redISub(s).redISub(s);
44110 var yyyy8 = yyyy.redIAdd(yyyy);
44111 yyyy8 = yyyy8.redIAdd(yyyy8);
44112 yyyy8 = yyyy8.redIAdd(yyyy8);
44116 // Y3 = M * (S - T) -
8 * YYYY
44117 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
44119 nz = this.y.redAdd(this.y);
44121 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-
0.html
44122 // #doubling-dbl-
2009-l
44126 var a = this.x.redSqr();
44128 var b = this.y.redSqr();
44130 var c = b.redSqr();
44131 // D =
2 * ((X1 + B)^
2 - A - C)
44132 var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);
44135 var e = a.redAdd(a).redIAdd(a);
44137 var f = e.redSqr();
44140 var c8 = c.redIAdd(c);
44141 c8 = c8.redIAdd(c8);
44142 c8 = c8.redIAdd(c8);
44145 nx = f.redISub(d).redISub(d);
44146 // Y3 = E * (D - X3) -
8 * C
44147 ny = e.redMul(d.redISub(nx)).redISub(c8);
44148 // Z3 =
2 * Y1 * Z1
44149 nz = this.y.redMul(this.z);
44150 nz = nz.redIAdd(nz);
44153 return this.curve.jpoint(nx, ny, nz);
44156 JPoint.prototype._threeDbl = function _threeDbl() {
44162 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-
3.html
44163 // #doubling-mdbl-
2007-bl
44167 var xx = this.x.redSqr();
44169 var yy = this.y.redSqr();
44171 var yyyy = yy.redSqr();
44172 // S =
2 * ((X1 + YY)^
2 - XX - YYYY)
44173 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
44176 var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);
44178 var t = m.redSqr().redISub(s).redISub(s);
44181 // Y3 = M * (S - T) -
8 * YYYY
44182 var yyyy8 = yyyy.redIAdd(yyyy);
44183 yyyy8 = yyyy8.redIAdd(yyyy8);
44184 yyyy8 = yyyy8.redIAdd(yyyy8);
44185 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
44187 nz = this.y.redAdd(this.y);
44189 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-
3.html#doubling-dbl-
2001-b
44193 var delta = this.z.redSqr();
44195 var gamma = this.y.redSqr();
44196 // beta = X1 * gamma
44197 var beta = this.x.redMul(gamma);
44198 // alpha =
3 * (X1 - delta) * (X1 + delta)
44199 var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));
44200 alpha = alpha.redAdd(alpha).redIAdd(alpha);
44201 // X3 = alpha^
2 -
8 * beta
44202 var beta4 = beta.redIAdd(beta);
44203 beta4 = beta4.redIAdd(beta4);
44204 var beta8 = beta4.redAdd(beta4);
44205 nx = alpha.redSqr().redISub(beta8);
44206 // Z3 = (Y1 + Z1)^
2 - gamma - delta
44207 nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);
44208 // Y3 = alpha * (
4 * beta - X3) -
8 * gamma^
2
44209 var ggamma8 = gamma.redSqr();
44210 ggamma8 = ggamma8.redIAdd(ggamma8);
44211 ggamma8 = ggamma8.redIAdd(ggamma8);
44212 ggamma8 = ggamma8.redIAdd(ggamma8);
44213 ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);
44216 return this.curve.jpoint(nx, ny, nz);
44219 JPoint.prototype._dbl = function _dbl() {
44220 var a = this.curve.a;
44226 var jz4 = jz.redSqr().redSqr();
44228 var jx2 = jx.redSqr();
44229 var jy2 = jy.redSqr();
44231 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
44233 var jxd4 = jx.redAdd(jx);
44234 jxd4 = jxd4.redIAdd(jxd4);
44235 var t1 = jxd4.redMul(jy2);
44236 var nx = c.redSqr().redISub(t1.redAdd(t1));
44237 var t2 = t1.redISub(nx);
44239 var jyd8 = jy2.redSqr();
44240 jyd8 = jyd8.redIAdd(jyd8);
44241 jyd8 = jyd8.redIAdd(jyd8);
44242 jyd8 = jyd8.redIAdd(jyd8);
44243 var ny = c.redMul(t2).redISub(jyd8);
44244 var nz = jy.redAdd(jy).redMul(jz);
44246 return this.curve.jpoint(nx, ny, nz);
44249 JPoint.prototype.trpl = function trpl() {
44250 if (!this.curve.zeroA)
44251 return this.dbl().add(this);
44253 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-
0.html#tripling-tpl-
2007-bl
44257 var xx = this.x.redSqr();
44259 var yy = this.y.redSqr();
44261 var zz = this.z.redSqr();
44263 var yyyy = yy.redSqr();
44264 // M =
3 * XX + a * ZZ2; a =
0
44265 var m = xx.redAdd(xx).redIAdd(xx);
44267 var mm = m.redSqr();
44268 // E =
6 * ((X1 + YY)^
2 - XX - YYYY) - MM
44269 var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
44271 e = e.redAdd(e).redIAdd(e);
44274 var ee = e.redSqr();
44276 var t = yyyy.redIAdd(yyyy);
44280 // U = (M + E)^
2 - MM - EE - T
44281 var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);
44282 // X3 =
4 * (X1 * EE -
4 * YY * U)
44283 var yyu4 = yy.redMul(u);
44284 yyu4 = yyu4.redIAdd(yyu4);
44285 yyu4 = yyu4.redIAdd(yyu4);
44286 var nx = this.x.redMul(ee).redISub(yyu4);
44287 nx = nx.redIAdd(nx);
44288 nx = nx.redIAdd(nx);
44289 // Y3 =
8 * Y1 * (U * (T - U) - E * EE)
44290 var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));
44291 ny = ny.redIAdd(ny);
44292 ny = ny.redIAdd(ny);
44293 ny = ny.redIAdd(ny);
44294 // Z3 = (Z1 + E)^
2 - ZZ - EE
44295 var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);
44297 return this.curve.jpoint(nx, ny, nz);
44300 JPoint.prototype.mul = function mul(k, kbase) {
44301 k = new BN(k, kbase);
44303 return this.curve._wnafMul(this, k);
44306 JPoint.prototype.eq = function eq(p) {
44307 if (p.type === 'affine')
44308 return this.eq(p.toJ());
44313 // x1 * z2^
2 == x2 * z1^
2
44314 var z2 = this.z.redSqr();
44315 var pz2 = p.z.redSqr();
44316 if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(
0) !==
0)
44319 // y1 * z2^
3 == y2 * z1^
3
44320 var z3 = z2.redMul(this.z);
44321 var pz3 = pz2.redMul(p.z);
44322 return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(
0) ===
0;
44325 JPoint.prototype.eqXToP = function eqXToP(x) {
44326 var zs = this.z.redSqr();
44327 var rx = x.toRed(this.curve.red).redMul(zs);
44328 if (this.x.cmp(rx) ===
0)
44331 var xc = x.clone();
44332 var t = this.curve.redN.redMul(zs);
44334 xc.iadd(this.curve.n);
44335 if (xc.cmp(this.curve.p)
>=
0)
44339 if (this.x.cmp(rx) ===
0)
44345 JPoint.prototype.inspect = function inspect() {
44346 if (this.isInfinity())
44347 return '
<EC JPoint Infinity
>';
44348 return '
<EC JPoint x: ' + this.x.toString(
16,
2) +
44349 ' y: ' + this.y.toString(
16,
2) +
44350 ' z: ' + this.z.toString(
16,
2) + '
>';
44353 JPoint.prototype.isInfinity = function isInfinity() {
44354 // XXX This code assumes that zero is always zero in red
44355 return this.z.cmpn(
0) ===
0;
44358 },{"../../elliptic":
39,"../curve":
42,"bn.js":
33,"inherits":
63}],
45:[function(require,module,exports){
44361 var curves = exports;
44363 var hash = require('hash.js');
44364 var elliptic = require('../elliptic');
44366 var assert = elliptic.utils.assert;
44368 function PresetCurve(options) {
44369 if (options.type === 'short')
44370 this.curve = new elliptic.curve.short(options);
44371 else if (options.type === 'edwards')
44372 this.curve = new elliptic.curve.edwards(options);
44374 this.curve = new elliptic.curve.mont(options);
44375 this.g = this.curve.g;
44376 this.n = this.curve.n;
44377 this.hash = options.hash;
44379 assert(this.g.validate(), 'Invalid curve');
44380 assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');
44382 curves.PresetCurve = PresetCurve;
44384 function defineCurve(name, options) {
44385 Object.defineProperty(curves, name, {
44386 configurable: true,
44389 var curve = new PresetCurve(options);
44390 Object.defineProperty(curves, name, {
44391 configurable: true,
44400 defineCurve('p192', {
44403 p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',
44404 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',
44405 b: '
64210519 e59c80e7
0fa7e9ab
72243049 feb8deec c146b9b1',
44406 n: 'ffffffff ffffffff ffffffff
99def836
146bc9b1 b4d22831',
44410 '
188da80e b03090f6
7cbf20eb
43a18800 f4ff0afd
82ff1012',
44411 '
07192b95 ffc8da78
631011ed
6b24cdd5
73f977a1
1e794811'
44415 defineCurve('p224', {
44418 p: 'ffffffff ffffffff ffffffff ffffffff
00000000 00000000 00000001',
44419 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',
44420 b: 'b4050a85
0c04b3ab f5413256
5044b0b7 d7bfd8ba
270b3943
2355ffb4',
44421 n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e
13dd2945
5c5c2a3d',
44425 'b70e0cbd
6bb4bf7f
321390b9
4a03c1d3
56c21122
343280d6
115c1d21',
44426 'bd376388 b5f723fb
4c22dfe6 cd4375a0
5a074764
44d58199
85007e34'
44430 defineCurve('p256', {
44433 p: 'ffffffff
00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',
44434 a: 'ffffffff
00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',
44435 b: '
5ac635d8 aa3a93e7 b3ebbd55
769886bc
651d06b0 cc53b0f6
3bce3c3e
27d2604b',
44436 n: 'ffffffff
00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',
44440 '
6b17d1f2 e12c4247 f8bce6e5
63a440f2
77037d81
2deb33a0 f4a13945 d898c296',
44441 '
4fe342e2 fe1a7f9b
8ee7eb4a
7c0f9e16
2bce3357
6b315ece cbb64068
37bf51f5'
44445 defineCurve('p384', {
44448 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
44449 'fffffffe ffffffff
00000000 00000000 ffffffff',
44450 a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
44451 'fffffffe ffffffff
00000000 00000000 fffffffc',
44452 b: 'b3312fa7 e23ee7e4
988e056b e3f82d19
181d9c6e fe814112
0314088f ' +
44453 '
5013875a c656398d
8a2ed19d
2a85c8ed d3ec2aef',
44454 n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +
44455 'f4372ddf
581a0db2
48b0a77a ecec196a ccc52973',
44459 'aa87ca22 be8b0537
8eb1c71e f320ad74
6e1d3b62
8ba79b98
59f741e0
82542a38 ' +
44460 '
5502f25d bf55296c
3a545e38
72760ab7',
44461 '
3617de4a
96262c6f
5d9e98bf
9292dc29 f8f41dbd
289a147c e9da3113 b5f0b8c0 ' +
44462 '
0a60b1ce
1d7e819d
7a431d7c
90ea0e5f'
44466 defineCurve('p521', {
44469 p: '
000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
44470 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
44471 'ffffffff ffffffff ffffffff ffffffff ffffffff',
44472 a: '
000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
44473 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
44474 'ffffffff ffffffff ffffffff ffffffff fffffffc',
44475 b: '
00000051 953eb961
8e1c9a1f
929a21a0 b68540ee a2da725b ' +
44476 '
99b315f3 b8b48991
8ef109e1
56193951 ec7e937b
1652c0bd ' +
44477 '
3bb1bf07
3573df88
3d2c34f1 ef451fd4
6b503f00',
44478 n: '
000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
44479 'ffffffff ffffffff fffffffa
51868783 bf2f966b
7fcc0148 ' +
44480 'f709a5d0
3bb5c9b8
899c47ae bb6fb71e
91386409',
44484 '
000000c6
858e06b7
0404e9cd
9e3ecb66
2395b442
9c648139 ' +
44485 '
053fb521 f828af60
6b4d3dba a14b5e77 efe75928 fe1dc127 ' +
44486 'a2ffa8de
3348b3c1
856a429b f97e7e31 c2e5bd66',
44487 '
00000118 39296a78
9a3bc004
5c8a5fb4
2c7d1bd9
98f54449 ' +
44488 '
579b4468
17afbd17
273e662c
97ee7299
5ef42640 c550b901 ' +
44489 '
3fad0761
353c7086 a272c240
88be9476
9fd16650'
44493 defineCurve('curve25519', {
44496 p: '
7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
44499 n: '
1000000000000000 0000000000000000 14def9dea2f79cd6
5812631a5cf5d3ed',
44507 defineCurve('ed25519', {
44510 p: '
7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
44513 // -
121665 * (
121666^(-
1)) (mod P)
44514 d: '
52036cee2b6ffe73
8cc740797779e898
00700a4d4141d8ab
75eb4dca135978a3',
44515 n: '
1000000000000000 0000000000000000 14def9dea2f79cd6
5812631a5cf5d3ed',
44519 '
216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',
44522 '
6666666666666666666666666666666666666666666666666666666666666658'
44528 pre = require('./precomputed/secp256k1');
44533 defineCurve('secp256k1', {
44536 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',
44539 n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',
44543 // Precomputed endomorphism
44544 beta: '
7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',
44545 lambda: '
5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',
44548 a: '
3086d221a7d46bcde86c90e49284eb15',
44549 b: '-e4437ed6010e88286f547fa90abfe4c3'
44552 a: '
114ca50f7a8e2f3f657c1108d9d44cfd8',
44553 b: '
3086d221a7d46bcde86c90e49284eb15'
44559 '
79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',
44560 '
483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',
44565 },{"../elliptic":
39,"./precomputed/secp256k1":
53,"hash.js":
57}],
46:[function(require,module,exports){
44568 var BN = require('bn.js');
44569 var elliptic = require('../../elliptic');
44570 var utils = elliptic.utils;
44571 var assert = utils.assert;
44573 var KeyPair = require('./key');
44574 var Signature = require('./signature');
44576 function EC(options) {
44577 if (!(this instanceof EC))
44578 return new EC(options);
44580 // Shortcut `elliptic.ec(curve-name)`
44581 if (typeof options === 'string') {
44582 assert(elliptic.curves.hasOwnProperty(options), 'Unknown curve ' + options);
44584 options = elliptic.curves[options];
44587 // Shortcut for `elliptic.ec(elliptic.curves.curveName)`
44588 if (options instanceof elliptic.curves.PresetCurve)
44589 options = { curve: options };
44591 this.curve = options.curve.curve;
44592 this.n = this.curve.n;
44593 this.nh = this.n.ushrn(
1);
44594 this.g = this.curve.g;
44597 this.g = options.curve.g;
44598 this.g.precompute(options.curve.n.bitLength() +
1);
44600 // Hash for function for DRBG
44601 this.hash = options.hash || options.curve.hash;
44603 module.exports = EC;
44605 EC.prototype.keyPair = function keyPair(options) {
44606 return new KeyPair(this, options);
44609 EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {
44610 return KeyPair.fromPrivate(this, priv, enc);
44613 EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {
44614 return KeyPair.fromPublic(this, pub, enc);
44617 EC.prototype.genKeyPair = function genKeyPair(options) {
44621 // Instantiate Hmac_DRBG
44622 var drbg = new elliptic.hmacDRBG({
44624 pers: options.pers,
44625 entropy: options.entropy || elliptic.rand(this.hash.hmacStrength),
44626 nonce: this.n.toArray()
44629 var bytes = this.n.byteLength();
44630 var ns2 = this.n.sub(new BN(
2));
44632 var priv = new BN(drbg.generate(bytes));
44633 if (priv.cmp(ns2)
> 0)
44637 return this.keyFromPrivate(priv);
44641 EC.prototype._truncateToN = function truncateToN(msg, truncOnly) {
44642 var delta = msg.byteLength() *
8 - this.n.bitLength();
44644 msg = msg.ushrn(delta);
44645 if (!truncOnly && msg.cmp(this.n)
>=
0)
44646 return msg.sub(this.n);
44651 EC.prototype.sign = function sign(msg, key, enc, options) {
44652 if (typeof enc === 'object') {
44659 key = this.keyFromPrivate(key, enc);
44660 msg = this._truncateToN(new BN(msg,
16));
44662 // Zero-extend key to provide enough entropy
44663 var bytes = this.n.byteLength();
44664 var bkey = key.getPrivate().toArray('be', bytes);
44666 // Zero-extend nonce to have the same byte size as N
44667 var nonce = msg.toArray('be', bytes);
44669 // Instantiate Hmac_DRBG
44670 var drbg = new elliptic.hmacDRBG({
44674 pers: options.pers,
44675 persEnc: options.persEnc
44678 // Number of bytes to generate
44679 var ns1 = this.n.sub(new BN(
1));
44681 for (var iter =
0; true; iter++) {
44682 var k = options.k ?
44684 new BN(drbg.generate(this.n.byteLength()));
44685 k = this._truncateToN(k, true);
44686 if (k.cmpn(
1) <=
0 || k.cmp(ns1)
>=
0)
44689 var kp = this.g.mul(k);
44690 if (kp.isInfinity())
44693 var kpX = kp.getX();
44694 var r = kpX.umod(this.n);
44695 if (r.cmpn(
0) ===
0)
44698 var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));
44699 s = s.umod(this.n);
44700 if (s.cmpn(
0) ===
0)
44703 var recoveryParam = (kp.getY().isOdd() ?
1 :
0) |
44704 (kpX.cmp(r) !==
0 ?
2 :
0);
44706 // Use complement of `s`, if it is
> `n /
2`
44707 if (options.canonical && s.cmp(this.nh)
> 0) {
44709 recoveryParam ^=
1;
44712 return new Signature({ r: r, s: s, recoveryParam: recoveryParam });
44716 EC.prototype.verify = function verify(msg, signature, key, enc) {
44717 msg = this._truncateToN(new BN(msg,
16));
44718 key = this.keyFromPublic(key, enc);
44719 signature = new Signature(signature, 'hex');
44721 // Perform primitive values validation
44722 var r = signature.r;
44723 var s = signature.s;
44724 if (r.cmpn(
1) <
0 || r.cmp(this.n)
>=
0)
44726 if (s.cmpn(
1) <
0 || s.cmp(this.n)
>=
0)
44729 // Validate signature
44730 var sinv = s.invm(this.n);
44731 var u1 = sinv.mul(msg).umod(this.n);
44732 var u2 = sinv.mul(r).umod(this.n);
44734 if (!this.curve._maxwellTrick) {
44735 var p = this.g.mulAdd(u1, key.getPublic(), u2);
44736 if (p.isInfinity())
44739 return p.getX().umod(this.n).cmp(r) ===
0;
44742 // NOTE: Greg Maxwell's trick, inspired by:
44743 // https://git.io/vad3K
44745 var p = this.g.jmulAdd(u1, key.getPublic(), u2);
44746 if (p.isInfinity())
44749 // Compare `p.x` of Jacobian point with `r`,
44750 // this will do `p.x == r * p.z^
2` instead of multiplying `p.x` by the
44751 // inverse of `p.z^
2`
44752 return p.eqXToP(r);
44755 EC.prototype.recoverPubKey = function(msg, signature, j, enc) {
44756 assert((
3 & j) === j, 'The recovery param is more than two bits');
44757 signature = new Signature(signature, enc);
44760 var e = new BN(msg);
44761 var r = signature.r;
44762 var s = signature.s;
44764 // A set LSB signifies that the y-coordinate is odd
44765 var isYOdd = j &
1;
44766 var isSecondKey = j
>> 1;
44767 if (r.cmp(this.curve.p.umod(this.curve.n))
>=
0 && isSecondKey)
44768 throw new Error('Unable to find sencond key candinate');
44770 //
1.1. Let x = r + jn.
44772 r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);
44774 r = this.curve.pointFromX(r, isYOdd);
44776 var rInv = signature.r.invm(n);
44777 var s1 = n.sub(e).mul(rInv).umod(n);
44778 var s2 = s.mul(rInv).umod(n);
44780 //
1.6.1 Compute Q = r^-
1 (sR - eG)
44781 // Q = r^-
1 (sR + -eG)
44782 return this.g.mulAdd(s1, r, s2);
44785 EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {
44786 signature = new Signature(signature, enc);
44787 if (signature.recoveryParam !== null)
44788 return signature.recoveryParam;
44790 for (var i =
0; i <
4; i++) {
44793 Qprime = this.recoverPubKey(e, signature, i);
44801 throw new Error('Unable to find valid recovery factor');
44804 },{"../../elliptic":
39,"./key":
47,"./signature":
48,"bn.js":
33}],
47:[function(require,module,exports){
44807 var BN = require('bn.js');
44808 var elliptic = require('../../elliptic');
44809 var utils = elliptic.utils;
44810 var assert = utils.assert;
44812 function KeyPair(ec, options) {
44817 // KeyPair(ec, { priv: ..., pub: ... })
44819 this._importPrivate(options.priv, options.privEnc);
44821 this._importPublic(options.pub, options.pubEnc);
44823 module.exports = KeyPair;
44825 KeyPair.fromPublic = function fromPublic(ec, pub, enc) {
44826 if (pub instanceof KeyPair)
44829 return new KeyPair(ec, {
44835 KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {
44836 if (priv instanceof KeyPair)
44839 return new KeyPair(ec, {
44845 KeyPair.prototype.validate = function validate() {
44846 var pub = this.getPublic();
44848 if (pub.isInfinity())
44849 return { result: false, reason: 'Invalid public key' };
44850 if (!pub.validate())
44851 return { result: false, reason: 'Public key is not a point' };
44852 if (!pub.mul(this.ec.curve.n).isInfinity())
44853 return { result: false, reason: 'Public key * N != O' };
44855 return { result: true, reason: null };
44858 KeyPair.prototype.getPublic = function getPublic(compact, enc) {
44859 // compact is optional argument
44860 if (typeof compact === 'string') {
44866 this.pub = this.ec.g.mul(this.priv);
44871 return this.pub.encode(enc, compact);
44874 KeyPair.prototype.getPrivate = function getPrivate(enc) {
44876 return this.priv.toString(
16,
2);
44881 KeyPair.prototype._importPrivate = function _importPrivate(key, enc) {
44882 this.priv = new BN(key, enc ||
16);
44884 // Ensure that the priv won't be bigger than n, otherwise we may fail
44885 // in fixed multiplication method
44886 this.priv = this.priv.umod(this.ec.curve.n);
44889 KeyPair.prototype._importPublic = function _importPublic(key, enc) {
44890 if (key.x || key.y) {
44891 // Montgomery points only have an `x` coordinate.
44892 // Weierstrass/Edwards points on the other hand have both `x` and
44893 // `y` coordinates.
44894 if (this.ec.curve.type === 'mont') {
44895 assert(key.x, 'Need x coordinate');
44896 } else if (this.ec.curve.type === 'short' ||
44897 this.ec.curve.type === 'edwards') {
44898 assert(key.x && key.y, 'Need both x and y coordinate');
44900 this.pub = this.ec.curve.point(key.x, key.y);
44903 this.pub = this.ec.curve.decodePoint(key, enc);
44907 KeyPair.prototype.derive = function derive(pub) {
44908 return pub.mul(this.priv).getX();
44912 KeyPair.prototype.sign = function sign(msg, enc, options) {
44913 return this.ec.sign(msg, this, enc, options);
44916 KeyPair.prototype.verify = function verify(msg, signature) {
44917 return this.ec.verify(msg, signature, this);
44920 KeyPair.prototype.inspect = function inspect() {
44921 return '
<Key priv: ' + (this.priv && this.priv.toString(
16,
2)) +
44922 ' pub: ' + (this.pub && this.pub.inspect()) + '
>';
44925 },{"../../elliptic":
39,"bn.js":
33}],
48:[function(require,module,exports){
44928 var BN = require('bn.js');
44930 var elliptic = require('../../elliptic');
44931 var utils = elliptic.utils;
44932 var assert = utils.assert;
44934 function Signature(options, enc) {
44935 if (options instanceof Signature)
44938 if (this._importDER(options, enc))
44941 assert(options.r && options.s, 'Signature without r or s');
44942 this.r = new BN(options.r,
16);
44943 this.s = new BN(options.s,
16);
44944 if (options.recoveryParam === undefined)
44945 this.recoveryParam = null;
44947 this.recoveryParam = options.recoveryParam;
44949 module.exports = Signature;
44951 function Position() {
44955 function getLength(buf, p) {
44956 var initial = buf[p.place++];
44957 if (!(initial &
0x80)) {
44960 var octetLen = initial &
0xf;
44962 for (var i =
0, off = p.place; i < octetLen; i++, off++) {
44970 function rmPadding(buf) {
44972 var len = buf.length -
1;
44973 while (!buf[i] && !(buf[i +
1] &
0x80) && i < len) {
44979 return buf.slice(i);
44982 Signature.prototype._importDER = function _importDER(data, enc) {
44983 data = utils.toArray(data, enc);
44984 var p = new Position();
44985 if (data[p.place++] !==
0x30) {
44988 var len = getLength(data, p);
44989 if ((len + p.place) !== data.length) {
44992 if (data[p.place++] !==
0x02) {
44995 var rlen = getLength(data, p);
44996 var r = data.slice(p.place, rlen + p.place);
44998 if (data[p.place++] !==
0x02) {
45001 var slen = getLength(data, p);
45002 if (data.length !== slen + p.place) {
45005 var s = data.slice(p.place, slen + p.place);
45006 if (r[
0] ===
0 && (r[
1] &
0x80)) {
45009 if (s[
0] ===
0 && (s[
1] &
0x80)) {
45013 this.r = new BN(r);
45014 this.s = new BN(s);
45015 this.recoveryParam = null;
45020 function constructLength(arr, len) {
45025 var octets =
1 + (Math.log(len) / Math.LN2
>>> 3);
45026 arr.push(octets |
0x80);
45028 arr.push((len
>>> (octets <<
3)) &
0xff);
45033 Signature.prototype.toDER = function toDER(enc) {
45034 var r = this.r.toArray();
45035 var s = this.s.toArray();
45039 r = [
0 ].concat(r);
45042 s = [
0 ].concat(s);
45047 while (!s[
0] && !(s[
1] &
0x80)) {
45050 var arr = [
0x02 ];
45051 constructLength(arr, r.length);
45052 arr = arr.concat(r);
45054 constructLength(arr, s.length);
45055 var backHalf = arr.concat(s);
45056 var res = [
0x30 ];
45057 constructLength(res, backHalf.length);
45058 res = res.concat(backHalf);
45059 return utils.encode(res, enc);
45062 },{"../../elliptic":
39,"bn.js":
33}],
49:[function(require,module,exports){
45065 var hash = require('hash.js');
45066 var elliptic = require('../../elliptic');
45067 var utils = elliptic.utils;
45068 var assert = utils.assert;
45069 var parseBytes = utils.parseBytes;
45070 var KeyPair = require('./key');
45071 var Signature = require('./signature');
45073 function EDDSA(curve) {
45074 assert(curve === 'ed25519', 'only tested with ed25519 so far');
45076 if (!(this instanceof EDDSA))
45077 return new EDDSA(curve);
45079 var curve = elliptic.curves[curve].curve;
45080 this.curve = curve;
45082 this.g.precompute(curve.n.bitLength() +
1);
45084 this.pointClass = curve.point().constructor;
45085 this.encodingLength = Math.ceil(curve.n.bitLength() /
8);
45086 this.hash = hash.sha512;
45089 module.exports = EDDSA;
45092 * @param {Array|String} message - message bytes
45093 * @param {Array|String|KeyPair} secret - secret bytes or a keypair
45094 * @returns {Signature} - signature
45096 EDDSA.prototype.sign = function sign(message, secret) {
45097 message = parseBytes(message);
45098 var key = this.keyFromSecret(secret);
45099 var r = this.hashInt(key.messagePrefix(), message);
45100 var R = this.g.mul(r);
45101 var Rencoded = this.encodePoint(R);
45102 var s_ = this.hashInt(Rencoded, key.pubBytes(), message)
45104 var S = r.add(s_).umod(this.curve.n);
45105 return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });
45109 * @param {Array} message - message bytes
45110 * @param {Array|String|Signature} sig - sig bytes
45111 * @param {Array|String|Point|KeyPair} pub - public key
45112 * @returns {Boolean} - true if public key matches sig of message
45114 EDDSA.prototype.verify = function verify(message, sig, pub) {
45115 message = parseBytes(message);
45116 sig = this.makeSignature(sig);
45117 var key = this.keyFromPublic(pub);
45118 var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);
45119 var SG = this.g.mul(sig.S());
45120 var RplusAh = sig.R().add(key.pub().mul(h));
45121 return RplusAh.eq(SG);
45124 EDDSA.prototype.hashInt = function hashInt() {
45125 var hash = this.hash();
45126 for (var i =
0; i < arguments.length; i++)
45127 hash.update(arguments[i]);
45128 return utils.intFromLE(hash.digest()).umod(this.curve.n);
45131 EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {
45132 return KeyPair.fromPublic(this, pub);
45135 EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {
45136 return KeyPair.fromSecret(this, secret);
45139 EDDSA.prototype.makeSignature = function makeSignature(sig) {
45140 if (sig instanceof Signature)
45142 return new Signature(this, sig);
45146 * * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-
03#section-
5.2
45148 * EDDSA defines methods for encoding and decoding points and integers. These are
45149 * helper convenience methods, that pass along to utility functions implied
45153 EDDSA.prototype.encodePoint = function encodePoint(point) {
45154 var enc = point.getY().toArray('le', this.encodingLength);
45155 enc[this.encodingLength -
1] |= point.getX().isOdd() ?
0x80 :
0;
45159 EDDSA.prototype.decodePoint = function decodePoint(bytes) {
45160 bytes = utils.parseBytes(bytes);
45162 var lastIx = bytes.length -
1;
45163 var normed = bytes.slice(
0, lastIx).concat(bytes[lastIx] & ~
0x80);
45164 var xIsOdd = (bytes[lastIx] &
0x80) !==
0;
45166 var y = utils.intFromLE(normed);
45167 return this.curve.pointFromY(y, xIsOdd);
45170 EDDSA.prototype.encodeInt = function encodeInt(num) {
45171 return num.toArray('le', this.encodingLength);
45174 EDDSA.prototype.decodeInt = function decodeInt(bytes) {
45175 return utils.intFromLE(bytes);
45178 EDDSA.prototype.isPoint = function isPoint(val) {
45179 return val instanceof this.pointClass;
45182 },{"../../elliptic":
39,"./key":
50,"./signature":
51,"hash.js":
57}],
50:[function(require,module,exports){
45185 var elliptic = require('../../elliptic');
45186 var utils = elliptic.utils;
45187 var assert = utils.assert;
45188 var parseBytes = utils.parseBytes;
45189 var cachedProperty = utils.cachedProperty;
45192 * @param {EDDSA} eddsa - instance
45193 * @param {Object} params - public/private key parameters
45195 * @param {Array
<Byte>} [params.secret] - secret seed bytes
45196 * @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)
45197 * @param {Array
<Byte>} [params.pub] - public key point encoded as bytes
45200 function KeyPair(eddsa, params) {
45201 this.eddsa = eddsa;
45202 this._secret = parseBytes(params.secret);
45203 if (eddsa.isPoint(params.pub))
45204 this._pub = params.pub;
45206 this._pubBytes = parseBytes(params.pub);
45209 KeyPair.fromPublic = function fromPublic(eddsa, pub) {
45210 if (pub instanceof KeyPair)
45212 return new KeyPair(eddsa, { pub: pub });
45215 KeyPair.fromSecret = function fromSecret(eddsa, secret) {
45216 if (secret instanceof KeyPair)
45218 return new KeyPair(eddsa, { secret: secret });
45221 KeyPair.prototype.secret = function secret() {
45222 return this._secret;
45225 cachedProperty(KeyPair, 'pubBytes', function pubBytes() {
45226 return this.eddsa.encodePoint(this.pub());
45229 cachedProperty(KeyPair, 'pub', function pub() {
45230 if (this._pubBytes)
45231 return this.eddsa.decodePoint(this._pubBytes);
45232 return this.eddsa.g.mul(this.priv());
45235 cachedProperty(KeyPair, 'privBytes', function privBytes() {
45236 var eddsa = this.eddsa;
45237 var hash = this.hash();
45238 var lastIx = eddsa.encodingLength -
1;
45240 var a = hash.slice(
0, eddsa.encodingLength);
45248 cachedProperty(KeyPair, 'priv', function priv() {
45249 return this.eddsa.decodeInt(this.privBytes());
45252 cachedProperty(KeyPair, 'hash', function hash() {
45253 return this.eddsa.hash().update(this.secret()).digest();
45256 cachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {
45257 return this.hash().slice(this.eddsa.encodingLength);
45260 KeyPair.prototype.sign = function sign(message) {
45261 assert(this._secret, 'KeyPair can only verify');
45262 return this.eddsa.sign(message, this);
45265 KeyPair.prototype.verify = function verify(message, sig) {
45266 return this.eddsa.verify(message, sig, this);
45269 KeyPair.prototype.getSecret = function getSecret(enc) {
45270 assert(this._secret, 'KeyPair is public only');
45271 return utils.encode(this.secret(), enc);
45274 KeyPair.prototype.getPublic = function getPublic(enc) {
45275 return utils.encode(this.pubBytes(), enc);
45278 module.exports = KeyPair;
45280 },{"../../elliptic":
39}],
51:[function(require,module,exports){
45283 var BN = require('bn.js');
45284 var elliptic = require('../../elliptic');
45285 var utils = elliptic.utils;
45286 var assert = utils.assert;
45287 var cachedProperty = utils.cachedProperty;
45288 var parseBytes = utils.parseBytes;
45291 * @param {EDDSA} eddsa - eddsa instance
45292 * @param {Array
<Bytes>|Object} sig -
45293 * @param {Array
<Bytes>|Point} [sig.R] - R point as Point or bytes
45294 * @param {Array
<Bytes>|bn} [sig.S] - S scalar as bn or bytes
45295 * @param {Array
<Bytes>} [sig.Rencoded] - R point encoded
45296 * @param {Array
<Bytes>} [sig.Sencoded] - S scalar encoded
45298 function Signature(eddsa, sig) {
45299 this.eddsa = eddsa;
45301 if (typeof sig !== 'object')
45302 sig = parseBytes(sig);
45304 if (Array.isArray(sig)) {
45306 R: sig.slice(
0, eddsa.encodingLength),
45307 S: sig.slice(eddsa.encodingLength)
45311 assert(sig.R && sig.S, 'Signature without R or S');
45313 if (eddsa.isPoint(sig.R))
45315 if (sig.S instanceof BN)
45318 this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;
45319 this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;
45322 cachedProperty(Signature, 'S', function S() {
45323 return this.eddsa.decodeInt(this.Sencoded());
45326 cachedProperty(Signature, 'R', function R() {
45327 return this.eddsa.decodePoint(this.Rencoded());
45330 cachedProperty(Signature, 'Rencoded', function Rencoded() {
45331 return this.eddsa.encodePoint(this.R());
45334 cachedProperty(Signature, 'Sencoded', function Sencoded() {
45335 return this.eddsa.encodeInt(this.S());
45338 Signature.prototype.toBytes = function toBytes() {
45339 return this.Rencoded().concat(this.Sencoded());
45342 Signature.prototype.toHex = function toHex() {
45343 return utils.encode(this.toBytes(), 'hex').toUpperCase();
45346 module.exports = Signature;
45348 },{"../../elliptic":
39,"bn.js":
33}],
52:[function(require,module,exports){
45351 var hash = require('hash.js');
45352 var elliptic = require('../elliptic');
45353 var utils = elliptic.utils;
45354 var assert = utils.assert;
45356 function HmacDRBG(options) {
45357 if (!(this instanceof HmacDRBG))
45358 return new HmacDRBG(options);
45359 this.hash = options.hash;
45360 this.predResist = !!options.predResist;
45362 this.outLen = this.hash.outSize;
45363 this.minEntropy = options.minEntropy || this.hash.hmacStrength;
45365 this.reseed = null;
45366 this.reseedInterval = null;
45370 var entropy = utils.toArray(options.entropy, options.entropyEnc);
45371 var nonce = utils.toArray(options.nonce, options.nonceEnc);
45372 var pers = utils.toArray(options.pers, options.persEnc);
45373 assert(entropy.length
>= (this.minEntropy /
8),
45374 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
45375 this._init(entropy, nonce, pers);
45377 module.exports = HmacDRBG;
45379 HmacDRBG.prototype._init = function init(entropy, nonce, pers) {
45380 var seed = entropy.concat(nonce).concat(pers);
45382 this.K = new Array(this.outLen /
8);
45383 this.V = new Array(this.outLen /
8);
45384 for (var i =
0; i < this.V.length; i++) {
45389 this._update(seed);
45391 this.reseedInterval =
0x1000000000000; //
2^
48
45394 HmacDRBG.prototype._hmac = function hmac() {
45395 return new hash.hmac(this.hash, this.K);
45398 HmacDRBG.prototype._update = function update(seed) {
45399 var kmac = this._hmac()
45403 kmac = kmac.update(seed);
45404 this.K = kmac.digest();
45405 this.V = this._hmac().update(this.V).digest();
45409 this.K = this._hmac()
45414 this.V = this._hmac().update(this.V).digest();
45417 HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {
45418 // Optional entropy enc
45419 if (typeof entropyEnc !== 'string') {
45425 entropy = utils.toBuffer(entropy, entropyEnc);
45426 add = utils.toBuffer(add, addEnc);
45428 assert(entropy.length
>= (this.minEntropy /
8),
45429 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
45431 this._update(entropy.concat(add || []));
45435 HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {
45436 if (this.reseed
> this.reseedInterval)
45437 throw new Error('Reseed is required');
45439 // Optional encoding
45440 if (typeof enc !== 'string') {
45446 // Optional additional data
45448 add = utils.toArray(add, addEnc);
45453 while (temp.length < len) {
45454 this.V = this._hmac().update(this.V).digest();
45455 temp = temp.concat(this.V);
45458 var res = temp.slice(
0, len);
45461 return utils.encode(res, enc);
45464 },{"../elliptic":
39,"hash.js":
57}],
53:[function(require,module,exports){
45470 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',
45471 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'
45474 '
8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',
45475 '
11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'
45478 '
175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',
45479 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'
45482 '
363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',
45483 '
4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'
45486 '
8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',
45487 '
4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'
45490 '
723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',
45491 '
96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'
45494 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',
45495 '
5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'
45498 '
100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',
45499 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'
45502 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',
45503 '
9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'
45506 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',
45507 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'
45510 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',
45511 '
9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'
45514 '
53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',
45515 '
5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'
45518 '
8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',
45519 '
10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'
45522 '
385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',
45523 '
283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'
45526 '
6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',
45527 '
7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'
45530 '
3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',
45531 '
56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'
45534 '
85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',
45535 '
7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'
45538 '
948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',
45539 '
53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'
45542 '
6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',
45543 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'
45546 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',
45547 '
4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'
45550 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',
45551 '
7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'
45554 '
213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',
45555 '
4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'
45558 '
4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',
45559 '
17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'
45562 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',
45563 '
6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'
45566 '
76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',
45567 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'
45570 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',
45571 '
893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'
45574 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',
45575 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'
45578 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',
45579 '
2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'
45582 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',
45583 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'
45586 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',
45587 '
7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'
45590 '
90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',
45591 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'
45594 '
8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',
45595 '
662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'
45598 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',
45599 '
1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'
45602 '
8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',
45603 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'
45606 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',
45607 '
2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'
45610 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',
45611 '
67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'
45614 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',
45615 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'
45618 '
324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',
45619 '
648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'
45622 '
4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',
45623 '
35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'
45626 '
9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',
45627 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'
45630 '
6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',
45631 '
9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'
45634 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',
45635 '
40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'
45638 '
7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',
45639 '
34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'
45642 '
928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',
45643 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'
45646 '
85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',
45647 '
1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'
45650 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',
45651 '
493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'
45654 '
827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',
45655 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'
45658 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',
45659 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'
45662 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',
45663 '
4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'
45666 '
1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',
45667 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'
45670 '
146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',
45671 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'
45674 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',
45675 '
6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'
45678 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',
45679 '
8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'
45682 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',
45683 '
7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'
45686 '
174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',
45687 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'
45690 '
959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',
45691 '
2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'
45694 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',
45695 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'
45698 '
64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',
45699 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'
45702 '
8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',
45703 '
38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'
45706 '
13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',
45707 '
69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'
45710 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',
45711 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'
45714 '
8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',
45715 '
40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'
45718 '
8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',
45719 '
620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'
45722 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',
45723 '
7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'
45726 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',
45727 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82'
45735 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',
45736 '
388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'
45739 '
2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',
45740 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'
45743 '
5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',
45744 '
6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'
45747 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',
45748 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'
45751 '
774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',
45752 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'
45755 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',
45756 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'
45759 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',
45760 '
581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'
45763 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',
45764 '
4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'
45767 '
2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',
45768 '
85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'
45771 '
352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',
45772 '
321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'
45775 '
2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',
45776 '
2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'
45779 '
9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',
45780 '
73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'
45783 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',
45784 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'
45787 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',
45788 '
2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'
45791 '
6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',
45792 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'
45795 '
1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',
45796 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'
45799 '
605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',
45800 '
2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'
45803 '
62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',
45804 '
80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'
45807 '
80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',
45808 '
1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'
45811 '
7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',
45812 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'
45815 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',
45816 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'
45819 '
49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',
45820 '
758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'
45823 '
77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',
45824 '
958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'
45827 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',
45828 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'
45831 '
463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',
45832 '
5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'
45835 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',
45836 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'
45839 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',
45840 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'
45843 '
2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',
45844 '
4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'
45847 '
7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',
45848 '
91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'
45851 '
754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',
45852 '
673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'
45855 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',
45856 '
59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'
45859 '
186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',
45860 '
3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'
45863 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',
45864 '
55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'
45867 '
5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',
45868 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'
45871 '
290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',
45872 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'
45875 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',
45876 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'
45879 '
766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',
45880 '
744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'
45883 '
59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',
45884 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'
45887 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',
45888 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'
45891 '
7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',
45892 '
30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'
45895 '
948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',
45896 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'
45899 '
7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',
45900 '
100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'
45903 '
3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',
45904 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'
45907 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',
45908 '
8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'
45911 '
1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',
45912 '
68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'
45915 '
733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',
45916 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'
45919 '
15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',
45920 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'
45923 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',
45924 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'
45927 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',
45928 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'
45931 '
311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',
45932 '
66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'
45935 '
34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',
45936 '
9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'
45939 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',
45940 '
4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'
45943 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',
45944 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'
45947 '
32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',
45948 '
5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'
45951 '
7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',
45952 '
8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'
45955 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',
45956 '
8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'
45959 '
16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',
45960 '
5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'
45963 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',
45964 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'
45967 '
78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',
45968 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'
45971 '
494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',
45972 '
42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'
45975 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',
45976 '
204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'
45979 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',
45980 '
4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'
45983 '
841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',
45984 '
73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'
45987 '
5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',
45988 '
39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'
45991 '
36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',
45992 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'
45995 '
336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',
45996 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'
45999 '
8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',
46000 '
6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'
46003 '
1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',
46004 '
60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'
46007 '
85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',
46008 '
3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'
46011 '
29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',
46012 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'
46015 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',
46016 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'
46019 '
4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',
46020 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'
46023 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',
46024 '
6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'
46027 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',
46028 '
322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'
46031 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',
46032 '
6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'
46035 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',
46036 '
2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'
46039 '
591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',
46040 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'
46043 '
11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',
46044 '
998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'
46047 '
3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',
46048 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'
46051 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',
46052 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'
46055 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',
46056 '
6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'
46059 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',
46060 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'
46063 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',
46064 '
21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'
46067 '
347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',
46068 '
60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'
46071 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',
46072 '
49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'
46075 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',
46076 '
5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'
46079 '
4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',
46080 '
7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'
46083 '
3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',
46084 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'
46087 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',
46088 '
8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'
46091 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',
46092 '
39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'
46095 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',
46096 '
62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'
46099 '
48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',
46100 '
25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'
46103 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',
46104 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'
46107 '
6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',
46108 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'
46111 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',
46112 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'
46115 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',
46116 '
6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'
46119 '
13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',
46120 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'
46123 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',
46124 '
1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'
46127 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',
46128 '
5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'
46131 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',
46132 '
438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'
46135 '
8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',
46136 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'
46139 '
52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',
46140 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'
46143 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',
46144 '
6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'
46147 '
7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',
46148 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'
46151 '
5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',
46152 '
9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'
46155 '
32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',
46156 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'
46159 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',
46160 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'
46163 '
8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',
46164 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'
46167 '
4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',
46168 '
67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'
46171 '
3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',
46172 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'
46175 '
674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',
46176 '
299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'
46179 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',
46180 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'
46183 '
30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',
46184 '
462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'
46187 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',
46188 '
62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'
46191 '
93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',
46192 '
7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'
46195 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',
46196 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'
46199 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',
46200 '
4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'
46203 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',
46204 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'
46207 '
463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',
46208 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'
46211 '
7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',
46212 '
603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'
46215 '
74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',
46216 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'
46219 '
30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',
46220 '
553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'
46223 '
9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',
46224 '
712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'
46227 '
176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',
46228 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'
46231 '
75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',
46232 '
9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'
46235 '
809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',
46236 '
9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'
46239 '
1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',
46240 '
4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9'
46246 },{}],
54:[function(require,module,exports){
46249 var utils = exports;
46250 var BN = require('bn.js');
46252 utils.assert = function assert(val, msg) {
46254 throw new Error(msg || 'Assertion failed');
46257 function toArray(msg, enc) {
46258 if (Array.isArray(msg))
46259 return msg.slice();
46263 if (typeof msg !== 'string') {
46264 for (var i =
0; i < msg.length; i++)
46265 res[i] = msg[i] |
0;
46269 for (var i =
0; i < msg.length; i++) {
46270 var c = msg.charCodeAt(i);
46278 } else if (enc === 'hex') {
46279 msg = msg.replace(/[^a-z0-
9]+/ig, '');
46280 if (msg.length %
2 !==
0)
46282 for (var i =
0; i < msg.length; i +=
2)
46283 res.push(parseInt(msg[i] + msg[i +
1],
16));
46287 utils.toArray = toArray;
46289 function zero2(word) {
46290 if (word.length ===
1)
46295 utils.zero2 = zero2;
46297 function toHex(msg) {
46299 for (var i =
0; i < msg.length; i++)
46300 res += zero2(msg[i].toString(
16));
46303 utils.toHex = toHex;
46305 utils.encode = function encode(arr, enc) {
46312 // Represent num in a w-NAF form
46313 function getNAF(num, w) {
46315 var ws =
1 << (w +
1);
46316 var k = num.clone();
46317 while (k.cmpn(
1)
>=
0) {
46320 var mod = k.andln(ws -
1);
46321 if (mod
> (ws
>> 1) -
1)
46322 z = (ws
>> 1) - mod;
46331 // Optimization, shift by word if possible
46332 var shift = (k.cmpn(
0) !==
0 && k.andln(ws -
1) ===
0) ? (w +
1) :
1;
46333 for (var i =
1; i < shift; i++)
46340 utils.getNAF = getNAF;
46342 // Represent k1, k2 in a Joint Sparse Form
46343 function getJSF(k1, k2) {
46353 while (k1.cmpn(-d1)
> 0 || k2.cmpn(-d2)
> 0) {
46356 var m14 = (k1.andln(
3) + d1) &
3;
46357 var m24 = (k2.andln(
3) + d2) &
3;
46363 if ((m14 &
1) ===
0) {
46366 var m8 = (k1.andln(
7) + d1) &
7;
46367 if ((m8 ===
3 || m8 ===
5) && m24 ===
2)
46375 if ((m24 &
1) ===
0) {
46378 var m8 = (k2.andln(
7) + d2) &
7;
46379 if ((m8 ===
3 || m8 ===
5) && m14 ===
2)
46387 if (
2 * d1 === u1 +
1)
46389 if (
2 * d2 === u2 +
1)
46397 utils.getJSF = getJSF;
46399 function cachedProperty(obj, name, computer) {
46400 var key = '_' + name;
46401 obj.prototype[name] = function cachedProperty() {
46402 return this[key] !== undefined ? this[key] :
46403 this[key] = computer.call(this);
46406 utils.cachedProperty = cachedProperty;
46408 function parseBytes(bytes) {
46409 return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :
46412 utils.parseBytes = parseBytes;
46414 function intFromLE(bytes) {
46415 return new BN(bytes, 'hex', 'le');
46417 utils.intFromLE = intFromLE;
46420 },{
"bn.js":
33}],
55:[function(require,module,exports){
46425 "raw":
"elliptic@^6.2.3",
46427 "escapedName":
"elliptic",
46428 "name":
"elliptic",
46429 "rawSpec":
"^6.2.3",
46430 "spec":
">=6.2.3 <7.0.0",
46433 "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1"
46436 "_from":
"elliptic@>=6.2.3 <7.0.0",
46437 "_id":
"elliptic@6.3.3",
46439 "_location":
"/elliptic",
46440 "_nodeVersion":
"7.0.0",
46441 "_npmOperationalInternal": {
46442 "host":
"packages-18-east.internal.npmjs.com",
46443 "tmp":
"tmp/elliptic-6.3.3.tgz_1486422837740_0.10658654430881143"
46447 "email":
"fedor@indutny.com"
46449 "_npmVersion":
"3.10.8",
46450 "_phantomChildren": {},
46452 "raw":
"elliptic@^6.2.3",
46454 "escapedName":
"elliptic",
46455 "name":
"elliptic",
46456 "rawSpec":
"^6.2.3",
46457 "spec":
">=6.2.3 <7.0.0",
46461 "/browserify-sign",
46465 "_resolved":
"https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz",
46466 "_shasum":
"5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
46467 "_shrinkwrap": null,
46468 "_spec":
"elliptic@^6.2.3",
46469 "_where":
"/home/user/ethereum/ethereumjs-util/node_modules/secp256k1",
46471 "name":
"Fedor Indutny",
46472 "email":
"fedor@indutny.com"
46475 "url":
"https://github.com/indutny/elliptic/issues"
46479 "brorand":
"^1.0.1",
46480 "hash.js":
"^1.0.0",
46481 "inherits":
"^2.0.1"
46483 "description":
"EC cryptography",
46484 "devDependencies": {
46486 "coveralls":
"^2.11.3",
46488 "grunt-browserify":
"^5.0.0",
46489 "grunt-cli":
"^1.2.0",
46490 "grunt-contrib-connect":
"^1.0.0",
46491 "grunt-contrib-copy":
"^1.0.0",
46492 "grunt-contrib-uglify":
"^1.0.1",
46493 "grunt-mocha-istanbul":
"^3.0.1",
46494 "grunt-saucelabs":
"^8.6.2",
46495 "istanbul":
"^0.4.2",
46497 "jshint":
"^2.6.0",
46502 "shasum":
"5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
46503 "tarball":
"https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz"
46508 "gitHead":
"63aee8d697e9b7fac37ece24222029117a890a7e",
46509 "homepage":
"https://github.com/indutny/elliptic",
46517 "main":
"lib/elliptic.js",
46521 "email":
"fedor@indutny.com"
46524 "name":
"elliptic",
46525 "optionalDependencies": {},
46526 "readme":
"ERROR: No README data found!",
46529 "url":
"git+ssh://git@github.com/indutny/elliptic.git"
46532 "jscs":
"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
46533 "jshint":
"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
46534 "lint":
"npm run jscs && npm run jshint",
46535 "test":
"npm run lint && npm run unit",
46536 "unit":
"istanbul test _mocha --reporter=spec test/index.js",
46537 "version":
"grunt dist && git add dist/"
46542 },{}],
56:[function(require,module,exports){
46543 (function (Buffer){
46546 var isHexPrefixed = require('is-hex-prefixed');
46547 var stripHexPrefix = require('strip-hex-prefix');
46550 * Pads a `String` to have an even length
46551 * @param {String} value
46552 * @return {String} output
46554 function padToEven(value) {
46555 var a = value; // eslint-disable-line
46557 if (typeof a !== 'string') {
46558 throw new Error('[ethjs-util] while padding to even, value must be string, is currently ' + typeof a + ', while padToEven.');
46561 if (a.length %
2) {
46569 * Converts a `Number` into a hex `String`
46570 * @param {Number} i
46573 function intToHex(i) {
46574 var hex = i.toString(
16); // eslint-disable-line
46576 return '
0x' + padToEven(hex);
46580 * Converts an `Number` to a `Buffer`
46581 * @param {Number} i
46584 function intToBuffer(i) {
46585 var hex = intToHex(i);
46587 return new Buffer(hex.slice(
2), 'hex');
46591 * Get the binary size of a string
46592 * @param {String} str
46595 function getBinarySize(str) {
46596 if (typeof str !== 'string') {
46597 throw new Error('[ethjs-util] while getting binary size, method getBinarySize requires input \'str\' to be type String, got \'' + typeof str + '\'.');
46600 return Buffer.byteLength(str, 'utf8');
46604 * Returns TRUE if the first specified array contains all elements
46605 * from the second one. FALSE otherwise.
46607 * @param {array} superset
46608 * @param {array} subset
46610 * @returns {boolean}
46612 function arrayContainsArray(superset, subset, some) {
46613 if (Array.isArray(superset) !== true) {
46614 throw new Error('[ethjs-util] method arrayContainsArray requires input \'superset\' to be an array got type \'' + typeof superset + '\'');
46616 if (Array.isArray(subset) !== true) {
46617 throw new Error('[ethjs-util] method arrayContainsArray requires input \'subset\' to be an array got type \'' + typeof subset + '\'');
46620 return subset[Boolean(some) && 'some' || 'every'](function (value) {
46621 return superset.indexOf(value)
>=
0;
46626 * Should be called to get utf8 from it's hex representation
46629 * @param {String} string in hex
46630 * @returns {String} ascii string representation of hex value
46632 function toUtf8(hex) {
46633 var bufferValue = new Buffer(padToEven(stripHexPrefix(hex).replace(/^
0+|
0+$/g, '')), 'hex');
46635 return bufferValue.toString('utf8');
46639 * Should be called to get ascii from it's hex representation
46642 * @param {String} string in hex
46643 * @returns {String} ascii string representation of hex value
46645 function toAscii(hex) {
46646 var str = ''; // eslint-disable-line
46648 l = hex.length; // eslint-disable-line
46650 if (hex.substring(
0,
2) === '
0x') {
46654 for (; i < l; i +=
2) {
46655 var code = parseInt(hex.substr(i,
2),
16);
46656 str += String.fromCharCode(code);
46663 * Should be called to get hex representation (prefixed by
0x) of utf8 string
46666 * @param {String} string
46667 * @param {Number} optional padding
46668 * @returns {String} hex representation of input string
46670 function fromUtf8(stringValue) {
46671 var str = new Buffer(stringValue, 'utf8');
46673 return '
0x' + padToEven(str.toString('hex')).replace(/^
0+|
0+$/g, '');
46677 * Should be called to get hex representation (prefixed by
0x) of ascii string
46679 * @method fromAscii
46680 * @param {String} string
46681 * @param {Number} optional padding
46682 * @returns {String} hex representation of input string
46684 function fromAscii(stringValue) {
46685 var hex = ''; // eslint-disable-line
46686 for (var i =
0; i < stringValue.length; i++) {
46687 // eslint-disable-line
46688 var code = stringValue.charCodeAt(i);
46689 var n = code.toString(
16);
46690 hex += n.length <
2 ? '
0' + n : n;
46697 * getKeys([{a:
1, b:
2}, {a:
3, b:
4}], 'a') =
> [
1,
3]
46699 * @method getKeys get specific key from inner object array of objects
46700 * @param {String} params
46701 * @param {String} key
46702 * @param {Boolean} allowEmpty
46703 * @returns {Array} output just a simple array of output keys
46705 function getKeys(params, key, allowEmpty) {
46706 if (!Array.isArray(params)) {
46707 throw new Error('[ethjs-util] method getKeys expecting type Array as \'params\' input, got \'' + typeof params + '\'');
46709 if (typeof key !== 'string') {
46710 throw new Error('[ethjs-util] method getKeys expecting type String for input \'key\' got \'' + typeof key + '\'.');
46713 var result = []; // eslint-disable-line
46715 for (var i =
0; i < params.length; i++) {
46716 // eslint-disable-line
46717 var value = params[i][key]; // eslint-disable-line
46718 if (allowEmpty && !value) {
46720 } else if (typeof value !== 'string') {
46721 throw new Error('invalid abi');
46723 result.push(value);
46730 * Is the string a hex string.
46732 * @method check if string is hex string of specific length
46733 * @param {String} value
46734 * @param {Number} length
46735 * @returns {Boolean} output the string is a hex string
46737 function isHexString(value, length) {
46738 if (typeof value !== 'string' || !value.match(/^
0x[
0-
9A-Fa-f]*$/)) {
46742 if (length && value.length !==
2 +
2 * length) {
46750 arrayContainsArray: arrayContainsArray,
46751 intToBuffer: intToBuffer,
46752 getBinarySize: getBinarySize,
46753 isHexPrefixed: isHexPrefixed,
46754 stripHexPrefix: stripHexPrefix,
46755 padToEven: padToEven,
46756 intToHex: intToHex,
46757 fromAscii: fromAscii,
46758 fromUtf8: fromUtf8,
46762 isHexString: isHexString
46764 }).call(this,require("buffer").Buffer)
46765 },{"buffer":
5,"is-hex-prefixed":
64,"strip-hex-prefix":
87}],
57:[function(require,module,exports){
46766 var hash = exports;
46768 hash.utils = require('./hash/utils');
46769 hash.common = require('./hash/common');
46770 hash.sha = require('./hash/sha');
46771 hash.ripemd = require('./hash/ripemd');
46772 hash.hmac = require('./hash/hmac');
46774 // Proxy hash functions to the main object
46775 hash.sha1 = hash.sha.sha1;
46776 hash.sha256 = hash.sha.sha256;
46777 hash.sha224 = hash.sha.sha224;
46778 hash.sha384 = hash.sha.sha384;
46779 hash.sha512 = hash.sha.sha512;
46780 hash.ripemd160 = hash.ripemd.ripemd160;
46782 },{"./hash/common":
58,"./hash/hmac":
59,"./hash/ripemd":
60,"./hash/sha":
61,"./hash/utils":
62}],
58:[function(require,module,exports){
46783 var hash = require('../hash');
46784 var utils = hash.utils;
46785 var assert = utils.assert;
46787 function BlockHash() {
46788 this.pending = null;
46789 this.pendingTotal =
0;
46790 this.blockSize = this.constructor.blockSize;
46791 this.outSize = this.constructor.outSize;
46792 this.hmacStrength = this.constructor.hmacStrength;
46793 this.padLength = this.constructor.padLength /
8;
46794 this.endian = 'big';
46796 this._delta8 = this.blockSize /
8;
46797 this._delta32 = this.blockSize /
32;
46799 exports.BlockHash = BlockHash;
46801 BlockHash.prototype.update = function update(msg, enc) {
46802 // Convert message to array, pad it, and join into
32bit blocks
46803 msg = utils.toArray(msg, enc);
46805 this.pending = msg;
46807 this.pending = this.pending.concat(msg);
46808 this.pendingTotal += msg.length;
46810 // Enough data, try updating
46811 if (this.pending.length
>= this._delta8) {
46812 msg = this.pending;
46814 // Process pending data in blocks
46815 var r = msg.length % this._delta8;
46816 this.pending = msg.slice(msg.length - r, msg.length);
46817 if (this.pending.length ===
0)
46818 this.pending = null;
46820 msg = utils.join32(msg,
0, msg.length - r, this.endian);
46821 for (var i =
0; i < msg.length; i += this._delta32)
46822 this._update(msg, i, i + this._delta32);
46828 BlockHash.prototype.digest = function digest(enc) {
46829 this.update(this._pad());
46830 assert(this.pending === null);
46832 return this._digest(enc);
46835 BlockHash.prototype._pad = function pad() {
46836 var len = this.pendingTotal;
46837 var bytes = this._delta8;
46838 var k = bytes - ((len + this.padLength) % bytes);
46839 var res = new Array(k + this.padLength);
46841 for (var i =
1; i < k; i++)
46846 if (this.endian === 'big') {
46847 for (var t =
8; t < this.padLength; t++)
46854 res[i++] = (len
>>> 24) &
0xff;
46855 res[i++] = (len
>>> 16) &
0xff;
46856 res[i++] = (len
>>> 8) &
0xff;
46857 res[i++] = len &
0xff;
46859 res[i++] = len &
0xff;
46860 res[i++] = (len
>>> 8) &
0xff;
46861 res[i++] = (len
>>> 16) &
0xff;
46862 res[i++] = (len
>>> 24) &
0xff;
46868 for (var t =
8; t < this.padLength; t++)
46875 },{
"../hash":
57}],
59:[function(require,module,exports){
46876 var hmac = exports;
46878 var hash = require('../hash');
46879 var utils = hash.utils;
46880 var assert = utils.assert;
46882 function Hmac(hash, key, enc) {
46883 if (!(this instanceof Hmac))
46884 return new Hmac(hash, key, enc);
46886 this.blockSize = hash.blockSize /
8;
46887 this.outSize = hash.outSize /
8;
46891 this._init(utils.toArray(key, enc));
46893 module.exports = Hmac;
46895 Hmac.prototype._init = function init(key) {
46896 // Shorten key, if needed
46897 if (key.length
> this.blockSize)
46898 key = new this.Hash().update(key).digest();
46899 assert(key.length <= this.blockSize);
46901 // Add padding to key
46902 for (var i = key.length; i < this.blockSize; i++)
46905 for (var i =
0; i < key.length; i++)
46907 this.inner = new this.Hash().update(key);
46909 //
0x36 ^
0x5c =
0x6a
46910 for (var i =
0; i < key.length; i++)
46912 this.outer = new this.Hash().update(key);
46915 Hmac.prototype.update = function update(msg, enc) {
46916 this.inner.update(msg, enc);
46920 Hmac.prototype.digest = function digest(enc) {
46921 this.outer.update(this.inner.digest());
46922 return this.outer.digest(enc);
46925 },{"../hash":
57}],
60:[function(require,module,exports){
46926 var hash = require('../hash');
46927 var utils = hash.utils;
46929 var rotl32 = utils.rotl32;
46930 var sum32 = utils.sum32;
46931 var sum32_3 = utils.sum32_3;
46932 var sum32_4 = utils.sum32_4;
46933 var BlockHash = hash.common.BlockHash;
46935 function RIPEMD160() {
46936 if (!(this instanceof RIPEMD160))
46937 return new RIPEMD160();
46939 BlockHash.call(this);
46941 this.h = [
0x67452301,
0xefcdab89,
0x98badcfe,
0x10325476,
0xc3d2e1f0 ];
46942 this.endian = 'little';
46944 utils.inherits(RIPEMD160, BlockHash);
46945 exports.ripemd160 = RIPEMD160;
46947 RIPEMD160.blockSize =
512;
46948 RIPEMD160.outSize =
160;
46949 RIPEMD160.hmacStrength =
192;
46950 RIPEMD160.padLength =
64;
46952 RIPEMD160.prototype._update = function update(msg, start) {
46963 for (var j =
0; j <
80; j++) {
46966 sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),
46976 sum32_4(Ah, f(
79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),
46981 Dh = rotl32(Ch,
10);
46985 T = sum32_3(this.h[
1], C, Dh);
46986 this.h[
1] = sum32_3(this.h[
2], D, Eh);
46987 this.h[
2] = sum32_3(this.h[
3], E, Ah);
46988 this.h[
3] = sum32_3(this.h[
4], A, Bh);
46989 this.h[
4] = sum32_3(this.h[
0], B, Ch);
46993 RIPEMD160.prototype._digest = function digest(enc) {
46995 return utils.toHex32(this.h, 'little');
46997 return utils.split32(this.h, 'little');
47000 function f(j, x, y, z) {
47004 return (x & y) | ((~x) & z);
47006 return (x | (~y)) ^ z;
47008 return (x & z) | (y & (~z));
47010 return x ^ (y | (~z));
47040 0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
47041 7,
4,
13,
1,
10,
6,
15,
3,
12,
0,
9,
5,
2,
14,
11,
8,
47042 3,
10,
14,
4,
9,
15,
8,
1,
2,
7,
0,
6,
13,
11,
5,
12,
47043 1,
9,
11,
10,
0,
8,
12,
4,
13,
3,
7,
15,
14,
5,
6,
2,
47044 4,
0,
5,
9,
7,
12,
2,
10,
14,
1,
3,
8,
11,
6,
15,
13
47048 5,
14,
7,
0,
9,
2,
11,
4,
13,
6,
15,
8,
1,
10,
3,
12,
47049 6,
11,
3,
7,
0,
13,
5,
10,
14,
15,
8,
12,
4,
9,
1,
2,
47050 15,
5,
1,
3,
7,
14,
6,
9,
11,
8,
12,
2,
10,
0,
4,
13,
47051 8,
6,
4,
1,
3,
11,
15,
0,
5,
12,
2,
13,
9,
7,
10,
14,
47052 12,
15,
10,
4,
1,
5,
8,
7,
6,
2,
13,
14,
0,
3,
9,
11
47056 11,
14,
15,
12,
5,
8,
7,
9,
11,
13,
14,
15,
6,
7,
9,
8,
47057 7,
6,
8,
13,
11,
9,
7,
15,
7,
12,
15,
9,
11,
7,
13,
12,
47058 11,
13,
6,
7,
14,
9,
13,
15,
14,
8,
13,
6,
5,
12,
7,
5,
47059 11,
12,
14,
15,
14,
15,
9,
8,
9,
14,
5,
6,
8,
6,
5,
12,
47060 9,
15,
5,
11,
6,
8,
13,
12,
5,
12,
13,
14,
11,
8,
5,
6
47064 8,
9,
9,
11,
13,
15,
15,
5,
7,
7,
8,
11,
14,
14,
12,
6,
47065 9,
13,
15,
7,
12,
8,
9,
11,
7,
7,
12,
7,
6,
15,
13,
11,
47066 9,
7,
15,
11,
8,
6,
6,
14,
12,
13,
5,
14,
13,
13,
7,
5,
47067 15,
5,
8,
11,
14,
14,
6,
14,
6,
9,
12,
9,
12,
5,
15,
8,
47068 8,
5,
12,
9,
12,
5,
14,
6,
8,
13,
6,
5,
15,
13,
11,
11
47071 },{"../hash":
57}],
61:[function(require,module,exports){
47072 var hash = require('../hash');
47073 var utils = hash.utils;
47074 var assert = utils.assert;
47076 var rotr32 = utils.rotr32;
47077 var rotl32 = utils.rotl32;
47078 var sum32 = utils.sum32;
47079 var sum32_4 = utils.sum32_4;
47080 var sum32_5 = utils.sum32_5;
47081 var rotr64_hi = utils.rotr64_hi;
47082 var rotr64_lo = utils.rotr64_lo;
47083 var shr64_hi = utils.shr64_hi;
47084 var shr64_lo = utils.shr64_lo;
47085 var sum64 = utils.sum64;
47086 var sum64_hi = utils.sum64_hi;
47087 var sum64_lo = utils.sum64_lo;
47088 var sum64_4_hi = utils.sum64_4_hi;
47089 var sum64_4_lo = utils.sum64_4_lo;
47090 var sum64_5_hi = utils.sum64_5_hi;
47091 var sum64_5_lo = utils.sum64_5_lo;
47092 var BlockHash = hash.common.BlockHash;
47095 0x428a2f98,
0x71374491,
0xb5c0fbcf,
0xe9b5dba5,
47096 0x3956c25b,
0x59f111f1,
0x923f82a4,
0xab1c5ed5,
47097 0xd807aa98,
0x12835b01,
0x243185be,
0x550c7dc3,
47098 0x72be5d74,
0x80deb1fe,
0x9bdc06a7,
0xc19bf174,
47099 0xe49b69c1,
0xefbe4786,
0x0fc19dc6,
0x240ca1cc,
47100 0x2de92c6f,
0x4a7484aa,
0x5cb0a9dc,
0x76f988da,
47101 0x983e5152,
0xa831c66d,
0xb00327c8,
0xbf597fc7,
47102 0xc6e00bf3,
0xd5a79147,
0x06ca6351,
0x14292967,
47103 0x27b70a85,
0x2e1b2138,
0x4d2c6dfc,
0x53380d13,
47104 0x650a7354,
0x766a0abb,
0x81c2c92e,
0x92722c85,
47105 0xa2bfe8a1,
0xa81a664b,
0xc24b8b70,
0xc76c51a3,
47106 0xd192e819,
0xd6990624,
0xf40e3585,
0x106aa070,
47107 0x19a4c116,
0x1e376c08,
0x2748774c,
0x34b0bcb5,
47108 0x391c0cb3,
0x4ed8aa4a,
0x5b9cca4f,
0x682e6ff3,
47109 0x748f82ee,
0x78a5636f,
0x84c87814,
0x8cc70208,
47110 0x90befffa,
0xa4506ceb,
0xbef9a3f7,
0xc67178f2
47114 0x428a2f98,
0xd728ae22,
0x71374491,
0x23ef65cd,
47115 0xb5c0fbcf,
0xec4d3b2f,
0xe9b5dba5,
0x8189dbbc,
47116 0x3956c25b,
0xf348b538,
0x59f111f1,
0xb605d019,
47117 0x923f82a4,
0xaf194f9b,
0xab1c5ed5,
0xda6d8118,
47118 0xd807aa98,
0xa3030242,
0x12835b01,
0x45706fbe,
47119 0x243185be,
0x4ee4b28c,
0x550c7dc3,
0xd5ffb4e2,
47120 0x72be5d74,
0xf27b896f,
0x80deb1fe,
0x3b1696b1,
47121 0x9bdc06a7,
0x25c71235,
0xc19bf174,
0xcf692694,
47122 0xe49b69c1,
0x9ef14ad2,
0xefbe4786,
0x384f25e3,
47123 0x0fc19dc6,
0x8b8cd5b5,
0x240ca1cc,
0x77ac9c65,
47124 0x2de92c6f,
0x592b0275,
0x4a7484aa,
0x6ea6e483,
47125 0x5cb0a9dc,
0xbd41fbd4,
0x76f988da,
0x831153b5,
47126 0x983e5152,
0xee66dfab,
0xa831c66d,
0x2db43210,
47127 0xb00327c8,
0x98fb213f,
0xbf597fc7,
0xbeef0ee4,
47128 0xc6e00bf3,
0x3da88fc2,
0xd5a79147,
0x930aa725,
47129 0x06ca6351,
0xe003826f,
0x14292967,
0x0a0e6e70,
47130 0x27b70a85,
0x46d22ffc,
0x2e1b2138,
0x5c26c926,
47131 0x4d2c6dfc,
0x5ac42aed,
0x53380d13,
0x9d95b3df,
47132 0x650a7354,
0x8baf63de,
0x766a0abb,
0x3c77b2a8,
47133 0x81c2c92e,
0x47edaee6,
0x92722c85,
0x1482353b,
47134 0xa2bfe8a1,
0x4cf10364,
0xa81a664b,
0xbc423001,
47135 0xc24b8b70,
0xd0f89791,
0xc76c51a3,
0x0654be30,
47136 0xd192e819,
0xd6ef5218,
0xd6990624,
0x5565a910,
47137 0xf40e3585,
0x5771202a,
0x106aa070,
0x32bbd1b8,
47138 0x19a4c116,
0xb8d2d0c8,
0x1e376c08,
0x5141ab53,
47139 0x2748774c,
0xdf8eeb99,
0x34b0bcb5,
0xe19b48a8,
47140 0x391c0cb3,
0xc5c95a63,
0x4ed8aa4a,
0xe3418acb,
47141 0x5b9cca4f,
0x7763e373,
0x682e6ff3,
0xd6b2b8a3,
47142 0x748f82ee,
0x5defb2fc,
0x78a5636f,
0x43172f60,
47143 0x84c87814,
0xa1f0ab72,
0x8cc70208,
0x1a6439ec,
47144 0x90befffa,
0x23631e28,
0xa4506ceb,
0xde82bde9,
47145 0xbef9a3f7,
0xb2c67915,
0xc67178f2,
0xe372532b,
47146 0xca273ece,
0xea26619c,
0xd186b8c7,
0x21c0c207,
47147 0xeada7dd6,
0xcde0eb1e,
0xf57d4f7f,
0xee6ed178,
47148 0x06f067aa,
0x72176fba,
0x0a637dc5,
0xa2c898a6,
47149 0x113f9804,
0xbef90dae,
0x1b710b35,
0x131c471b,
47150 0x28db77f5,
0x23047d84,
0x32caab7b,
0x40c72493,
47151 0x3c9ebe0a,
0x15c9bebc,
0x431d67c4,
0x9c100d4c,
47152 0x4cc5d4be,
0xcb3e42b6,
0x597f299c,
0xfc657e2a,
47153 0x5fcb6fab,
0x3ad6faec,
0x6c44198c,
0x4a475817
47157 0x5A827999,
0x6ED9EBA1,
47158 0x8F1BBCDC,
0xCA62C1D6
47161 function SHA256() {
47162 if (!(this instanceof SHA256))
47163 return new SHA256();
47165 BlockHash.call(this);
47166 this.h = [
0x6a09e667,
0xbb67ae85,
0x3c6ef372,
0xa54ff53a,
47167 0x510e527f,
0x9b05688c,
0x1f83d9ab,
0x5be0cd19 ];
47169 this.W = new Array(
64);
47171 utils.inherits(SHA256, BlockHash);
47172 exports.sha256 = SHA256;
47174 SHA256.blockSize =
512;
47175 SHA256.outSize =
256;
47176 SHA256.hmacStrength =
192;
47177 SHA256.padLength =
64;
47179 SHA256.prototype._update = function _update(msg, start) {
47182 for (var i =
0; i <
16; i++)
47183 W[i] = msg[start + i];
47184 for (; i < W.length; i++)
47185 W[i] = sum32_4(g1_256(W[i -
2]), W[i -
7], g0_256(W[i -
15]), W[i -
16]);
47196 assert(this.k.length === W.length);
47197 for (var i =
0; i < W.length; i++) {
47198 var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);
47199 var T2 = sum32(s0_256(a), maj32(a, b, c));
47210 this.h[
0] = sum32(this.h[
0], a);
47211 this.h[
1] = sum32(this.h[
1], b);
47212 this.h[
2] = sum32(this.h[
2], c);
47213 this.h[
3] = sum32(this.h[
3], d);
47214 this.h[
4] = sum32(this.h[
4], e);
47215 this.h[
5] = sum32(this.h[
5], f);
47216 this.h[
6] = sum32(this.h[
6], g);
47217 this.h[
7] = sum32(this.h[
7], h);
47220 SHA256.prototype._digest = function digest(enc) {
47222 return utils.toHex32(this.h, 'big');
47224 return utils.split32(this.h, 'big');
47227 function SHA224() {
47228 if (!(this instanceof SHA224))
47229 return new SHA224();
47232 this.h = [
0xc1059ed8,
0x367cd507,
0x3070dd17,
0xf70e5939,
47233 0xffc00b31,
0x68581511,
0x64f98fa7,
0xbefa4fa4 ];
47235 utils.inherits(SHA224, SHA256);
47236 exports.sha224 = SHA224;
47238 SHA224.blockSize =
512;
47239 SHA224.outSize =
224;
47240 SHA224.hmacStrength =
192;
47241 SHA224.padLength =
64;
47243 SHA224.prototype._digest = function digest(enc) {
47244 // Just truncate output
47246 return utils.toHex32(this.h.slice(
0,
7), 'big');
47248 return utils.split32(this.h.slice(
0,
7), 'big');
47251 function SHA512() {
47252 if (!(this instanceof SHA512))
47253 return new SHA512();
47255 BlockHash.call(this);
47256 this.h = [
0x6a09e667,
0xf3bcc908,
47257 0xbb67ae85,
0x84caa73b,
47258 0x3c6ef372,
0xfe94f82b,
47259 0xa54ff53a,
0x5f1d36f1,
47260 0x510e527f,
0xade682d1,
47261 0x9b05688c,
0x2b3e6c1f,
47262 0x1f83d9ab,
0xfb41bd6b,
47263 0x5be0cd19,
0x137e2179 ];
47265 this.W = new Array(
160);
47267 utils.inherits(SHA512, BlockHash);
47268 exports.sha512 = SHA512;
47270 SHA512.blockSize =
1024;
47271 SHA512.outSize =
512;
47272 SHA512.hmacStrength =
192;
47273 SHA512.padLength =
128;
47275 SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {
47278 //
32 x
32bit words
47279 for (var i =
0; i <
32; i++)
47280 W[i] = msg[start + i];
47281 for (; i < W.length; i +=
2) {
47282 var c0_hi = g1_512_hi(W[i -
4], W[i -
3]); // i -
2
47283 var c0_lo = g1_512_lo(W[i -
4], W[i -
3]);
47284 var c1_hi = W[i -
14]; // i -
7
47285 var c1_lo = W[i -
13];
47286 var c2_hi = g0_512_hi(W[i -
30], W[i -
29]); // i -
15
47287 var c2_lo = g0_512_lo(W[i -
30], W[i -
29]);
47288 var c3_hi = W[i -
32]; // i -
16
47289 var c3_lo = W[i -
31];
47291 W[i] = sum64_4_hi(c0_hi, c0_lo,
47295 W[i +
1] = sum64_4_lo(c0_hi, c0_lo,
47302 SHA512.prototype._update = function _update(msg, start) {
47303 this._prepareBlock(msg, start);
47307 var ah = this.h[
0];
47308 var al = this.h[
1];
47309 var bh = this.h[
2];
47310 var bl = this.h[
3];
47311 var ch = this.h[
4];
47312 var cl = this.h[
5];
47313 var dh = this.h[
6];
47314 var dl = this.h[
7];
47315 var eh = this.h[
8];
47316 var el = this.h[
9];
47317 var fh = this.h[
10];
47318 var fl = this.h[
11];
47319 var gh = this.h[
12];
47320 var gl = this.h[
13];
47321 var hh = this.h[
14];
47322 var hl = this.h[
15];
47324 assert(this.k.length === W.length);
47325 for (var i =
0; i < W.length; i +=
2) {
47328 var c1_hi = s1_512_hi(eh, el);
47329 var c1_lo = s1_512_lo(eh, el);
47330 var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);
47331 var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);
47332 var c3_hi = this.k[i];
47333 var c3_lo = this.k[i +
1];
47335 var c4_lo = W[i +
1];
47337 var T1_hi = sum64_5_hi(c0_hi, c0_lo,
47342 var T1_lo = sum64_5_lo(c0_hi, c0_lo,
47348 var c0_hi = s0_512_hi(ah, al);
47349 var c0_lo = s0_512_lo(ah, al);
47350 var c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);
47351 var c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);
47353 var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);
47354 var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);
47365 eh = sum64_hi(dh, dl, T1_hi, T1_lo);
47366 el = sum64_lo(dl, dl, T1_hi, T1_lo);
47377 ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);
47378 al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);
47381 sum64(this.h,
0, ah, al);
47382 sum64(this.h,
2, bh, bl);
47383 sum64(this.h,
4, ch, cl);
47384 sum64(this.h,
6, dh, dl);
47385 sum64(this.h,
8, eh, el);
47386 sum64(this.h,
10, fh, fl);
47387 sum64(this.h,
12, gh, gl);
47388 sum64(this.h,
14, hh, hl);
47391 SHA512.prototype._digest = function digest(enc) {
47393 return utils.toHex32(this.h, 'big');
47395 return utils.split32(this.h, 'big');
47398 function SHA384() {
47399 if (!(this instanceof SHA384))
47400 return new SHA384();
47403 this.h = [
0xcbbb9d5d,
0xc1059ed8,
47404 0x629a292a,
0x367cd507,
47405 0x9159015a,
0x3070dd17,
47406 0x152fecd8,
0xf70e5939,
47407 0x67332667,
0xffc00b31,
47408 0x8eb44a87,
0x68581511,
47409 0xdb0c2e0d,
0x64f98fa7,
47410 0x47b5481d,
0xbefa4fa4 ];
47412 utils.inherits(SHA384, SHA512);
47413 exports.sha384 = SHA384;
47415 SHA384.blockSize =
1024;
47416 SHA384.outSize =
384;
47417 SHA384.hmacStrength =
192;
47418 SHA384.padLength =
128;
47420 SHA384.prototype._digest = function digest(enc) {
47422 return utils.toHex32(this.h.slice(
0,
12), 'big');
47424 return utils.split32(this.h.slice(
0,
12), 'big');
47428 if (!(this instanceof SHA1))
47431 BlockHash.call(this);
47432 this.h = [
0x67452301,
0xefcdab89,
0x98badcfe,
47433 0x10325476,
0xc3d2e1f0 ];
47434 this.W = new Array(
80);
47437 utils.inherits(SHA1, BlockHash);
47438 exports.sha1 = SHA1;
47440 SHA1.blockSize =
512;
47441 SHA1.outSize =
160;
47442 SHA1.hmacStrength =
80;
47443 SHA1.padLength =
64;
47445 SHA1.prototype._update = function _update(msg, start) {
47448 for (var i =
0; i <
16; i++)
47449 W[i] = msg[start + i];
47451 for(; i < W.length; i++)
47452 W[i] = rotl32(W[i -
3] ^ W[i -
8] ^ W[i -
14] ^ W[i -
16],
1);
47460 for (var i =
0; i < W.length; i++) {
47461 var s = ~~(i /
20);
47462 var t = sum32_5(rotl32(a,
5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);
47470 this.h[
0] = sum32(this.h[
0], a);
47471 this.h[
1] = sum32(this.h[
1], b);
47472 this.h[
2] = sum32(this.h[
2], c);
47473 this.h[
3] = sum32(this.h[
3], d);
47474 this.h[
4] = sum32(this.h[
4], e);
47477 SHA1.prototype._digest = function digest(enc) {
47479 return utils.toHex32(this.h, 'big');
47481 return utils.split32(this.h, 'big');
47484 function ch32(x, y, z) {
47485 return (x & y) ^ ((~x) & z);
47488 function maj32(x, y, z) {
47489 return (x & y) ^ (x & z) ^ (y & z);
47492 function p32(x, y, z) {
47496 function s0_256(x) {
47497 return rotr32(x,
2) ^ rotr32(x,
13) ^ rotr32(x,
22);
47500 function s1_256(x) {
47501 return rotr32(x,
6) ^ rotr32(x,
11) ^ rotr32(x,
25);
47504 function g0_256(x) {
47505 return rotr32(x,
7) ^ rotr32(x,
18) ^ (x
>>> 3);
47508 function g1_256(x) {
47509 return rotr32(x,
17) ^ rotr32(x,
19) ^ (x
>>> 10);
47512 function ft_1(s, x, y, z) {
47514 return ch32(x, y, z);
47515 if (s ===
1 || s ===
3)
47516 return p32(x, y, z);
47518 return maj32(x, y, z);
47521 function ch64_hi(xh, xl, yh, yl, zh, zl) {
47522 var r = (xh & yh) ^ ((~xh) & zh);
47528 function ch64_lo(xh, xl, yh, yl, zh, zl) {
47529 var r = (xl & yl) ^ ((~xl) & zl);
47535 function maj64_hi(xh, xl, yh, yl, zh, zl) {
47536 var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);
47542 function maj64_lo(xh, xl, yh, yl, zh, zl) {
47543 var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);
47549 function s0_512_hi(xh, xl) {
47550 var c0_hi = rotr64_hi(xh, xl,
28);
47551 var c1_hi = rotr64_hi(xl, xh,
2); //
34
47552 var c2_hi = rotr64_hi(xl, xh,
7); //
39
47554 var r = c0_hi ^ c1_hi ^ c2_hi;
47560 function s0_512_lo(xh, xl) {
47561 var c0_lo = rotr64_lo(xh, xl,
28);
47562 var c1_lo = rotr64_lo(xl, xh,
2); //
34
47563 var c2_lo = rotr64_lo(xl, xh,
7); //
39
47565 var r = c0_lo ^ c1_lo ^ c2_lo;
47571 function s1_512_hi(xh, xl) {
47572 var c0_hi = rotr64_hi(xh, xl,
14);
47573 var c1_hi = rotr64_hi(xh, xl,
18);
47574 var c2_hi = rotr64_hi(xl, xh,
9); //
41
47576 var r = c0_hi ^ c1_hi ^ c2_hi;
47582 function s1_512_lo(xh, xl) {
47583 var c0_lo = rotr64_lo(xh, xl,
14);
47584 var c1_lo = rotr64_lo(xh, xl,
18);
47585 var c2_lo = rotr64_lo(xl, xh,
9); //
41
47587 var r = c0_lo ^ c1_lo ^ c2_lo;
47593 function g0_512_hi(xh, xl) {
47594 var c0_hi = rotr64_hi(xh, xl,
1);
47595 var c1_hi = rotr64_hi(xh, xl,
8);
47596 var c2_hi = shr64_hi(xh, xl,
7);
47598 var r = c0_hi ^ c1_hi ^ c2_hi;
47604 function g0_512_lo(xh, xl) {
47605 var c0_lo = rotr64_lo(xh, xl,
1);
47606 var c1_lo = rotr64_lo(xh, xl,
8);
47607 var c2_lo = shr64_lo(xh, xl,
7);
47609 var r = c0_lo ^ c1_lo ^ c2_lo;
47615 function g1_512_hi(xh, xl) {
47616 var c0_hi = rotr64_hi(xh, xl,
19);
47617 var c1_hi = rotr64_hi(xl, xh,
29); //
61
47618 var c2_hi = shr64_hi(xh, xl,
6);
47620 var r = c0_hi ^ c1_hi ^ c2_hi;
47626 function g1_512_lo(xh, xl) {
47627 var c0_lo = rotr64_lo(xh, xl,
19);
47628 var c1_lo = rotr64_lo(xl, xh,
29); //
61
47629 var c2_lo = shr64_lo(xh, xl,
6);
47631 var r = c0_lo ^ c1_lo ^ c2_lo;
47637 },{
"../hash":
57}],
62:[function(require,module,exports){
47638 var utils = exports;
47639 var inherits = require('inherits');
47641 function toArray(msg, enc) {
47642 if (Array.isArray(msg))
47643 return msg.slice();
47647 if (typeof msg === 'string') {
47649 for (var i =
0; i < msg.length; i++) {
47650 var c = msg.charCodeAt(i);
47658 } else if (enc === 'hex') {
47659 msg = msg.replace(/[^a-z0-
9]+/ig, '');
47660 if (msg.length %
2 !==
0)
47662 for (var i =
0; i < msg.length; i +=
2)
47663 res.push(parseInt(msg[i] + msg[i +
1],
16));
47666 for (var i =
0; i < msg.length; i++)
47667 res[i] = msg[i] |
0;
47671 utils.toArray = toArray;
47673 function toHex(msg) {
47675 for (var i =
0; i < msg.length; i++)
47676 res += zero2(msg[i].toString(
16));
47679 utils.toHex = toHex;
47681 function htonl(w) {
47682 var res = (w
>>> 24) |
47683 ((w
>>> 8) &
0xff00) |
47684 ((w <<
8) &
0xff0000) |
47685 ((w &
0xff) <<
24);
47688 utils.htonl = htonl;
47690 function toHex32(msg, endian) {
47692 for (var i =
0; i < msg.length; i++) {
47694 if (endian === 'little')
47696 res += zero8(w.toString(
16));
47700 utils.toHex32 = toHex32;
47702 function zero2(word) {
47703 if (word.length ===
1)
47708 utils.zero2 = zero2;
47710 function zero8(word) {
47711 if (word.length ===
7)
47713 else if (word.length ===
6)
47714 return '
00' + word;
47715 else if (word.length ===
5)
47716 return '
000' + word;
47717 else if (word.length ===
4)
47718 return '
0000' + word;
47719 else if (word.length ===
3)
47720 return '
00000' + word;
47721 else if (word.length ===
2)
47722 return '
000000' + word;
47723 else if (word.length ===
1)
47724 return '
0000000' + word;
47728 utils.zero8 = zero8;
47730 function join32(msg, start, end, endian) {
47731 var len = end - start;
47732 assert(len %
4 ===
0);
47733 var res = new Array(len /
4);
47734 for (var i =
0, k = start; i < res.length; i++, k +=
4) {
47736 if (endian === 'big')
47737 w = (msg[k] <<
24) | (msg[k +
1] <<
16) | (msg[k +
2] <<
8) | msg[k +
3];
47739 w = (msg[k +
3] <<
24) | (msg[k +
2] <<
16) | (msg[k +
1] <<
8) | msg[k];
47744 utils.join32 = join32;
47746 function split32(msg, endian) {
47747 var res = new Array(msg.length *
4);
47748 for (var i =
0, k =
0; i < msg.length; i++, k +=
4) {
47750 if (endian === 'big') {
47752 res[k +
1] = (m
>>> 16) &
0xff;
47753 res[k +
2] = (m
>>> 8) &
0xff;
47754 res[k +
3] = m &
0xff;
47756 res[k +
3] = m
>>> 24;
47757 res[k +
2] = (m
>>> 16) &
0xff;
47758 res[k +
1] = (m
>>> 8) &
0xff;
47764 utils.split32 = split32;
47766 function rotr32(w, b) {
47767 return (w
>>> b) | (w << (
32 - b));
47769 utils.rotr32 = rotr32;
47771 function rotl32(w, b) {
47772 return (w << b) | (w
>>> (
32 - b));
47774 utils.rotl32 = rotl32;
47776 function sum32(a, b) {
47777 return (a + b)
>>> 0;
47779 utils.sum32 = sum32;
47781 function sum32_3(a, b, c) {
47782 return (a + b + c)
>>> 0;
47784 utils.sum32_3 = sum32_3;
47786 function sum32_4(a, b, c, d) {
47787 return (a + b + c + d)
>>> 0;
47789 utils.sum32_4 = sum32_4;
47791 function sum32_5(a, b, c, d, e) {
47792 return (a + b + c + d + e)
>>> 0;
47794 utils.sum32_5 = sum32_5;
47796 function assert(cond, msg) {
47798 throw new Error(msg || 'Assertion failed');
47800 utils.assert = assert;
47802 utils.inherits = inherits;
47804 function sum64(buf, pos, ah, al) {
47806 var bl = buf[pos +
1];
47808 var lo = (al + bl)
>>> 0;
47809 var hi = (lo < al ?
1 :
0) + ah + bh;
47810 buf[pos] = hi
>>> 0;
47813 exports.sum64 = sum64;
47815 function sum64_hi(ah, al, bh, bl) {
47816 var lo = (al + bl)
>>> 0;
47817 var hi = (lo < al ?
1 :
0) + ah + bh;
47820 exports.sum64_hi = sum64_hi;
47822 function sum64_lo(ah, al, bh, bl) {
47826 exports.sum64_lo = sum64_lo;
47828 function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {
47831 lo = (lo + bl)
>>> 0;
47832 carry += lo < al ?
1 :
0;
47833 lo = (lo + cl)
>>> 0;
47834 carry += lo < cl ?
1 :
0;
47835 lo = (lo + dl)
>>> 0;
47836 carry += lo < dl ?
1 :
0;
47838 var hi = ah + bh + ch + dh + carry;
47841 exports.sum64_4_hi = sum64_4_hi;
47843 function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {
47844 var lo = al + bl + cl + dl;
47847 exports.sum64_4_lo = sum64_4_lo;
47849 function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
47852 lo = (lo + bl)
>>> 0;
47853 carry += lo < al ?
1 :
0;
47854 lo = (lo + cl)
>>> 0;
47855 carry += lo < cl ?
1 :
0;
47856 lo = (lo + dl)
>>> 0;
47857 carry += lo < dl ?
1 :
0;
47858 lo = (lo + el)
>>> 0;
47859 carry += lo < el ?
1 :
0;
47861 var hi = ah + bh + ch + dh + eh + carry;
47864 exports.sum64_5_hi = sum64_5_hi;
47866 function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
47867 var lo = al + bl + cl + dl + el;
47871 exports.sum64_5_lo = sum64_5_lo;
47873 function rotr64_hi(ah, al, num) {
47874 var r = (al << (
32 - num)) | (ah
>>> num);
47877 exports.rotr64_hi = rotr64_hi;
47879 function rotr64_lo(ah, al, num) {
47880 var r = (ah << (
32 - num)) | (al
>>> num);
47883 exports.rotr64_lo = rotr64_lo;
47885 function shr64_hi(ah, al, num) {
47888 exports.shr64_hi = shr64_hi;
47890 function shr64_lo(ah, al, num) {
47891 var r = (ah << (
32 - num)) | (al
>>> num);
47894 exports.shr64_lo = shr64_lo;
47896 },{
"inherits":
63}],
63:[function(require,module,exports){
47897 arguments[
4][
9][
0].apply(exports,arguments)
47898 },{
"dup":
9}],
64:[function(require,module,exports){
47900 * Returns a `Boolean` on whether or not the a `String` starts with '
0x'
47901 * @param {String} str the string input value
47902 * @return {Boolean} a boolean if it is or is not hex prefixed
47903 * @throws if the str input is not a string
47905 module.exports = function isHexPrefixed(str) {
47906 if (typeof str !== 'string') {
47907 throw new Error(
"[is-hex-prefixed] value must be type 'string', is currently type " + (typeof str) +
", while checking isHexPrefixed.");
47910 return str.slice(
0,
2) === '
0x';
47913 },{}],
65:[function(require,module,exports){
47915 module.exports = require('./lib/api')(require('./lib/keccak'))
47917 },{
"./lib/api":
66,
"./lib/keccak":
70}],
66:[function(require,module,exports){
47919 var createKeccak = require('./keccak')
47920 var createShake = require('./shake')
47922 module.exports = function (KeccakState) {
47923 var Keccak = createKeccak(KeccakState)
47924 var Shake = createShake(KeccakState)
47926 return function (algorithm, options) {
47927 var hash = typeof algorithm === 'string' ? algorithm.toLowerCase() : algorithm
47929 case 'keccak224': return new Keccak(
1152,
448, null,
224, options)
47930 case 'keccak256': return new Keccak(
1088,
512, null,
256, options)
47931 case 'keccak384': return new Keccak(
832,
768, null,
384, options)
47932 case 'keccak512': return new Keccak(
576,
1024, null,
512, options)
47934 case 'sha3-
224': return new Keccak(
1152,
448,
0x06,
224, options)
47935 case 'sha3-
256': return new Keccak(
1088,
512,
0x06,
256, options)
47936 case 'sha3-
384': return new Keccak(
832,
768,
0x06,
384, options)
47937 case 'sha3-
512': return new Keccak(
576,
1024,
0x06,
512, options)
47939 case 'shake128': return new Shake(
1344,
256,
0x1f, options)
47940 case 'shake256': return new Shake(
1088,
512,
0x1f, options)
47942 default: throw new Error('Invald algorithm: ' + algorithm)
47947 },{
"./keccak":
67,
"./shake":
68}],
67:[function(require,module,exports){
47948 (function (Buffer){
47950 var Transform = require('stream').Transform
47951 var inherits = require('inherits')
47953 module.exports = function (KeccakState) {
47954 function Keccak (rate, capacity, delimitedSuffix, hashBitLength, options) {
47955 Transform.call(this, options)
47958 this._capacity = capacity
47959 this._delimitedSuffix = delimitedSuffix
47960 this._hashBitLength = hashBitLength
47961 this._options = options
47963 this._state = new KeccakState()
47964 this._state.initialize(rate, capacity)
47965 this._finalized = false
47968 inherits(Keccak, Transform)
47970 Keccak.prototype._transform = function (chunk, encoding, callback) {
47973 this.update(chunk, encoding)
47981 Keccak.prototype._flush = function (callback) {
47984 this.push(this.digest())
47992 Keccak.prototype.update = function (data, encoding) {
47993 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
47994 if (this._finalized) throw new Error('Digest already called')
47995 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
47997 this._state.absorb(data)
48002 Keccak.prototype.digest = function (encoding) {
48003 if (this._finalized) throw new Error('Digest already called')
48004 this._finalized = true
48006 if (this._delimitedSuffix) this._state.absorbLastFewBits(this._delimitedSuffix)
48007 var digest = this._state.squeeze(this._hashBitLength /
8)
48008 if (encoding !== undefined) digest = digest.toString(encoding)
48015 // remove result from memory
48016 Keccak.prototype._resetState = function () {
48017 this._state.initialize(this._rate, this._capacity)
48021 // because sometimes we need hash right now and little later
48022 Keccak.prototype._clone = function () {
48023 var clone = new Keccak(this._rate, this._capacity, this._delimitedSuffix, this._hashBitLength, this._options)
48024 this._state.copy(clone._state)
48025 clone._finalized = this._finalized
48033 }).call(this,require(
"buffer").Buffer)
48034 },{
"buffer":
5,
"inherits":
63,
"stream":
25}],
68:[function(require,module,exports){
48035 (function (Buffer){
48037 var Transform = require('stream').Transform
48038 var inherits = require('inherits')
48040 module.exports = function (KeccakState) {
48041 function Shake (rate, capacity, delimitedSuffix, options) {
48042 Transform.call(this, options)
48045 this._capacity = capacity
48046 this._delimitedSuffix = delimitedSuffix
48047 this._options = options
48049 this._state = new KeccakState()
48050 this._state.initialize(rate, capacity)
48051 this._finalized = false
48054 inherits(Shake, Transform)
48056 Shake.prototype._transform = function (chunk, encoding, callback) {
48059 this.update(chunk, encoding)
48067 Shake.prototype._flush = function () {}
48069 Shake.prototype._read = function (size) {
48070 this.push(this.squeeze(size))
48073 Shake.prototype.update = function (data, encoding) {
48074 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
48075 if (this._finalized) throw new Error('Squeeze already called')
48076 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
48078 this._state.absorb(data)
48083 Shake.prototype.squeeze = function (dataByteLength, encoding) {
48084 if (!this._finalized) {
48085 this._finalized = true
48086 this._state.absorbLastFewBits(this._delimitedSuffix)
48089 var data = this._state.squeeze(dataByteLength)
48090 if (encoding !== undefined) data = data.toString(encoding)
48095 Shake.prototype._resetState = function () {
48096 this._state.initialize(this._rate, this._capacity)
48100 Shake.prototype._clone = function () {
48101 var clone = new Shake(this._rate, this._capacity, this._delimitedSuffix, this._options)
48102 this._state.copy(clone._state)
48103 clone._finalized = this._finalized
48111 }).call(this,require(
"buffer").Buffer)
48112 },{
"buffer":
5,
"inherits":
63,
"stream":
25}],
69:[function(require,module,exports){
48114 var P1600_ROUND_CONSTANTS = [
1,
0,
32898,
0,
32906,
2147483648,
2147516416,
2147483648,
32907,
0,
2147483649,
0,
2147516545,
2147483648,
32777,
2147483648,
138,
0,
136,
0,
2147516425,
0,
2147483658,
0,
2147516555,
0,
139,
2147483648,
32905,
2147483648,
32771,
2147483648,
32770,
2147483648,
128,
2147483648,
32778,
0,
2147483658,
2147483648,
2147516545,
2147483648,
32896,
2147483648,
2147483649,
0,
2147516424,
2147483648]
48116 exports.p1600 = function (s) {
48117 for (var round =
0; round <
24; ++round) {
48119 var lo0 = s[
0] ^ s[
10] ^ s[
20] ^ s[
30] ^ s[
40]
48120 var hi0 = s[
1] ^ s[
11] ^ s[
21] ^ s[
31] ^ s[
41]
48121 var lo1 = s[
2] ^ s[
12] ^ s[
22] ^ s[
32] ^ s[
42]
48122 var hi1 = s[
3] ^ s[
13] ^ s[
23] ^ s[
33] ^ s[
43]
48123 var lo2 = s[
4] ^ s[
14] ^ s[
24] ^ s[
34] ^ s[
44]
48124 var hi2 = s[
5] ^ s[
15] ^ s[
25] ^ s[
35] ^ s[
45]
48125 var lo3 = s[
6] ^ s[
16] ^ s[
26] ^ s[
36] ^ s[
46]
48126 var hi3 = s[
7] ^ s[
17] ^ s[
27] ^ s[
37] ^ s[
47]
48127 var lo4 = s[
8] ^ s[
18] ^ s[
28] ^ s[
38] ^ s[
48]
48128 var hi4 = s[
9] ^ s[
19] ^ s[
29] ^ s[
39] ^ s[
49]
48130 var lo = lo4 ^ (lo1 <<
1 | hi1
>>> 31)
48131 var hi = hi4 ^ (hi1 <<
1 | lo1
>>> 31)
48132 var t1slo0 = s[
0] ^ lo
48133 var t1shi0 = s[
1] ^ hi
48134 var t1slo5 = s[
10] ^ lo
48135 var t1shi5 = s[
11] ^ hi
48136 var t1slo10 = s[
20] ^ lo
48137 var t1shi10 = s[
21] ^ hi
48138 var t1slo15 = s[
30] ^ lo
48139 var t1shi15 = s[
31] ^ hi
48140 var t1slo20 = s[
40] ^ lo
48141 var t1shi20 = s[
41] ^ hi
48142 lo = lo0 ^ (lo2 <<
1 | hi2
>>> 31)
48143 hi = hi0 ^ (hi2 <<
1 | lo2
>>> 31)
48144 var t1slo1 = s[
2] ^ lo
48145 var t1shi1 = s[
3] ^ hi
48146 var t1slo6 = s[
12] ^ lo
48147 var t1shi6 = s[
13] ^ hi
48148 var t1slo11 = s[
22] ^ lo
48149 var t1shi11 = s[
23] ^ hi
48150 var t1slo16 = s[
32] ^ lo
48151 var t1shi16 = s[
33] ^ hi
48152 var t1slo21 = s[
42] ^ lo
48153 var t1shi21 = s[
43] ^ hi
48154 lo = lo1 ^ (lo3 <<
1 | hi3
>>> 31)
48155 hi = hi1 ^ (hi3 <<
1 | lo3
>>> 31)
48156 var t1slo2 = s[
4] ^ lo
48157 var t1shi2 = s[
5] ^ hi
48158 var t1slo7 = s[
14] ^ lo
48159 var t1shi7 = s[
15] ^ hi
48160 var t1slo12 = s[
24] ^ lo
48161 var t1shi12 = s[
25] ^ hi
48162 var t1slo17 = s[
34] ^ lo
48163 var t1shi17 = s[
35] ^ hi
48164 var t1slo22 = s[
44] ^ lo
48165 var t1shi22 = s[
45] ^ hi
48166 lo = lo2 ^ (lo4 <<
1 | hi4
>>> 31)
48167 hi = hi2 ^ (hi4 <<
1 | lo4
>>> 31)
48168 var t1slo3 = s[
6] ^ lo
48169 var t1shi3 = s[
7] ^ hi
48170 var t1slo8 = s[
16] ^ lo
48171 var t1shi8 = s[
17] ^ hi
48172 var t1slo13 = s[
26] ^ lo
48173 var t1shi13 = s[
27] ^ hi
48174 var t1slo18 = s[
36] ^ lo
48175 var t1shi18 = s[
37] ^ hi
48176 var t1slo23 = s[
46] ^ lo
48177 var t1shi23 = s[
47] ^ hi
48178 lo = lo3 ^ (lo0 <<
1 | hi0
>>> 31)
48179 hi = hi3 ^ (hi0 <<
1 | lo0
>>> 31)
48180 var t1slo4 = s[
8] ^ lo
48181 var t1shi4 = s[
9] ^ hi
48182 var t1slo9 = s[
18] ^ lo
48183 var t1shi9 = s[
19] ^ hi
48184 var t1slo14 = s[
28] ^ lo
48185 var t1shi14 = s[
29] ^ hi
48186 var t1slo19 = s[
38] ^ lo
48187 var t1shi19 = s[
39] ^ hi
48188 var t1slo24 = s[
48] ^ lo
48189 var t1shi24 = s[
49] ^ hi
48192 var t2slo0 = t1slo0
48193 var t2shi0 = t1shi0
48194 var t2slo16 = (t1shi5 <<
4 | t1slo5
>>> 28)
48195 var t2shi16 = (t1slo5 <<
4 | t1shi5
>>> 28)
48196 var t2slo7 = (t1slo10 <<
3 | t1shi10
>>> 29)
48197 var t2shi7 = (t1shi10 <<
3 | t1slo10
>>> 29)
48198 var t2slo23 = (t1shi15 <<
9 | t1slo15
>>> 23)
48199 var t2shi23 = (t1slo15 <<
9 | t1shi15
>>> 23)
48200 var t2slo14 = (t1slo20 <<
18 | t1shi20
>>> 14)
48201 var t2shi14 = (t1shi20 <<
18 | t1slo20
>>> 14)
48202 var t2slo10 = (t1slo1 <<
1 | t1shi1
>>> 31)
48203 var t2shi10 = (t1shi1 <<
1 | t1slo1
>>> 31)
48204 var t2slo1 = (t1shi6 <<
12 | t1slo6
>>> 20)
48205 var t2shi1 = (t1slo6 <<
12 | t1shi6
>>> 20)
48206 var t2slo17 = (t1slo11 <<
10 | t1shi11
>>> 22)
48207 var t2shi17 = (t1shi11 <<
10 | t1slo11
>>> 22)
48208 var t2slo8 = (t1shi16 <<
13 | t1slo16
>>> 19)
48209 var t2shi8 = (t1slo16 <<
13 | t1shi16
>>> 19)
48210 var t2slo24 = (t1slo21 <<
2 | t1shi21
>>> 30)
48211 var t2shi24 = (t1shi21 <<
2 | t1slo21
>>> 30)
48212 var t2slo20 = (t1shi2 <<
30 | t1slo2
>>> 2)
48213 var t2shi20 = (t1slo2 <<
30 | t1shi2
>>> 2)
48214 var t2slo11 = (t1slo7 <<
6 | t1shi7
>>> 26)
48215 var t2shi11 = (t1shi7 <<
6 | t1slo7
>>> 26)
48216 var t2slo2 = (t1shi12 <<
11 | t1slo12
>>> 21)
48217 var t2shi2 = (t1slo12 <<
11 | t1shi12
>>> 21)
48218 var t2slo18 = (t1slo17 <<
15 | t1shi17
>>> 17)
48219 var t2shi18 = (t1shi17 <<
15 | t1slo17
>>> 17)
48220 var t2slo9 = (t1shi22 <<
29 | t1slo22
>>> 3)
48221 var t2shi9 = (t1slo22 <<
29 | t1shi22
>>> 3)
48222 var t2slo5 = (t1slo3 <<
28 | t1shi3
>>> 4)
48223 var t2shi5 = (t1shi3 <<
28 | t1slo3
>>> 4)
48224 var t2slo21 = (t1shi8 <<
23 | t1slo8
>>> 9)
48225 var t2shi21 = (t1slo8 <<
23 | t1shi8
>>> 9)
48226 var t2slo12 = (t1slo13 <<
25 | t1shi13
>>> 7)
48227 var t2shi12 = (t1shi13 <<
25 | t1slo13
>>> 7)
48228 var t2slo3 = (t1slo18 <<
21 | t1shi18
>>> 11)
48229 var t2shi3 = (t1shi18 <<
21 | t1slo18
>>> 11)
48230 var t2slo19 = (t1shi23 <<
24 | t1slo23
>>> 8)
48231 var t2shi19 = (t1slo23 <<
24 | t1shi23
>>> 8)
48232 var t2slo15 = (t1slo4 <<
27 | t1shi4
>>> 5)
48233 var t2shi15 = (t1shi4 <<
27 | t1slo4
>>> 5)
48234 var t2slo6 = (t1slo9 <<
20 | t1shi9
>>> 12)
48235 var t2shi6 = (t1shi9 <<
20 | t1slo9
>>> 12)
48236 var t2slo22 = (t1shi14 <<
7 | t1slo14
>>> 25)
48237 var t2shi22 = (t1slo14 <<
7 | t1shi14
>>> 25)
48238 var t2slo13 = (t1slo19 <<
8 | t1shi19
>>> 24)
48239 var t2shi13 = (t1shi19 <<
8 | t1slo19
>>> 24)
48240 var t2slo4 = (t1slo24 <<
14 | t1shi24
>>> 18)
48241 var t2shi4 = (t1shi24 <<
14 | t1slo24
>>> 18)
48244 s[
0] = t2slo0 ^ (~t2slo1 & t2slo2)
48245 s[
1] = t2shi0 ^ (~t2shi1 & t2shi2)
48246 s[
10] = t2slo5 ^ (~t2slo6 & t2slo7)
48247 s[
11] = t2shi5 ^ (~t2shi6 & t2shi7)
48248 s[
20] = t2slo10 ^ (~t2slo11 & t2slo12)
48249 s[
21] = t2shi10 ^ (~t2shi11 & t2shi12)
48250 s[
30] = t2slo15 ^ (~t2slo16 & t2slo17)
48251 s[
31] = t2shi15 ^ (~t2shi16 & t2shi17)
48252 s[
40] = t2slo20 ^ (~t2slo21 & t2slo22)
48253 s[
41] = t2shi20 ^ (~t2shi21 & t2shi22)
48254 s[
2] = t2slo1 ^ (~t2slo2 & t2slo3)
48255 s[
3] = t2shi1 ^ (~t2shi2 & t2shi3)
48256 s[
12] = t2slo6 ^ (~t2slo7 & t2slo8)
48257 s[
13] = t2shi6 ^ (~t2shi7 & t2shi8)
48258 s[
22] = t2slo11 ^ (~t2slo12 & t2slo13)
48259 s[
23] = t2shi11 ^ (~t2shi12 & t2shi13)
48260 s[
32] = t2slo16 ^ (~t2slo17 & t2slo18)
48261 s[
33] = t2shi16 ^ (~t2shi17 & t2shi18)
48262 s[
42] = t2slo21 ^ (~t2slo22 & t2slo23)
48263 s[
43] = t2shi21 ^ (~t2shi22 & t2shi23)
48264 s[
4] = t2slo2 ^ (~t2slo3 & t2slo4)
48265 s[
5] = t2shi2 ^ (~t2shi3 & t2shi4)
48266 s[
14] = t2slo7 ^ (~t2slo8 & t2slo9)
48267 s[
15] = t2shi7 ^ (~t2shi8 & t2shi9)
48268 s[
24] = t2slo12 ^ (~t2slo13 & t2slo14)
48269 s[
25] = t2shi12 ^ (~t2shi13 & t2shi14)
48270 s[
34] = t2slo17 ^ (~t2slo18 & t2slo19)
48271 s[
35] = t2shi17 ^ (~t2shi18 & t2shi19)
48272 s[
44] = t2slo22 ^ (~t2slo23 & t2slo24)
48273 s[
45] = t2shi22 ^ (~t2shi23 & t2shi24)
48274 s[
6] = t2slo3 ^ (~t2slo4 & t2slo0)
48275 s[
7] = t2shi3 ^ (~t2shi4 & t2shi0)
48276 s[
16] = t2slo8 ^ (~t2slo9 & t2slo5)
48277 s[
17] = t2shi8 ^ (~t2shi9 & t2shi5)
48278 s[
26] = t2slo13 ^ (~t2slo14 & t2slo10)
48279 s[
27] = t2shi13 ^ (~t2shi14 & t2shi10)
48280 s[
36] = t2slo18 ^ (~t2slo19 & t2slo15)
48281 s[
37] = t2shi18 ^ (~t2shi19 & t2shi15)
48282 s[
46] = t2slo23 ^ (~t2slo24 & t2slo20)
48283 s[
47] = t2shi23 ^ (~t2shi24 & t2shi20)
48284 s[
8] = t2slo4 ^ (~t2slo0 & t2slo1)
48285 s[
9] = t2shi4 ^ (~t2shi0 & t2shi1)
48286 s[
18] = t2slo9 ^ (~t2slo5 & t2slo6)
48287 s[
19] = t2shi9 ^ (~t2shi5 & t2shi6)
48288 s[
28] = t2slo14 ^ (~t2slo10 & t2slo11)
48289 s[
29] = t2shi14 ^ (~t2shi10 & t2shi11)
48290 s[
38] = t2slo19 ^ (~t2slo15 & t2slo16)
48291 s[
39] = t2shi19 ^ (~t2shi15 & t2shi16)
48292 s[
48] = t2slo24 ^ (~t2slo20 & t2slo21)
48293 s[
49] = t2shi24 ^ (~t2shi20 & t2shi21)
48296 s[
0] ^= P1600_ROUND_CONSTANTS[round *
2]
48297 s[
1] ^= P1600_ROUND_CONSTANTS[round *
2 +
1]
48301 },{}],
70:[function(require,module,exports){
48302 (function (Buffer){
48304 var keccakState = require('./keccak-state-unroll')
48306 function Keccak () {
48307 // much faster than `new Array(
50)`
48316 this.blockSize = null
48318 this.squeezing = false
48321 Keccak.prototype.initialize = function (rate, capacity) {
48322 for (var i =
0; i <
50; ++i) this.state[i] =
0
48323 this.blockSize = rate /
8
48325 this.squeezing = false
48328 Keccak.prototype.absorb = function (data) {
48329 for (var i =
0; i < data.length; ++i) {
48330 this.state[~~(this.count /
4)] ^= data[i] << (
8 * (this.count %
4))
48332 if (this.count === this.blockSize) {
48333 keccakState.p1600(this.state)
48339 Keccak.prototype.absorbLastFewBits = function (bits) {
48340 this.state[~~(this.count /
4)] ^= bits << (
8 * (this.count %
4))
48341 if ((bits &
0x80) !==
0 && this.count === (this.blockSize -
1)) keccakState.p1600(this.state)
48342 this.state[~~((this.blockSize -
1) /
4)] ^=
0x80 << (
8 * ((this.blockSize -
1) %
4))
48343 keccakState.p1600(this.state)
48345 this.squeezing = true
48348 Keccak.prototype.squeeze = function (length) {
48349 if (!this.squeezing) this.absorbLastFewBits(
0x01)
48351 var output = Buffer.allocUnsafe(length)
48352 for (var i =
0; i < length; ++i) {
48353 output[i] = (this.state[~~(this.count /
4)]
>>> (
8 * (this.count %
4))) &
0xff
48355 if (this.count === this.blockSize) {
48356 keccakState.p1600(this.state)
48364 Keccak.prototype.copy = function (dest) {
48365 for (var i =
0; i <
50; ++i) dest.state[i] = this.state[i]
48366 dest.blockSize = this.blockSize
48367 dest.count = this.count
48368 dest.squeezing = this.squeezing
48371 module.exports = Keccak
48373 }).call(this,require("buffer").Buffer)
48374 },{"./keccak-state-unroll":
69,"buffer":
5}],
71:[function(require,module,exports){
48375 (function (Buffer){
48378 code.google.com/p/crypto-js
48379 (c)
2009-
2013 by Jeff Mott. All rights reserved.
48380 code.google.com/p/crypto-js/wiki/License
48383 (c)
2012 by Cédric Mesnil. All rights reserved.
48385 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
48387 - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
48388 - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
48390 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
48395 0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
48396 7,
4,
13,
1,
10,
6,
15,
3,
12,
0,
9,
5,
2,
14,
11,
8,
48397 3,
10,
14,
4,
9,
15,
8,
1,
2,
7,
0,
6,
13,
11,
5,
12,
48398 1,
9,
11,
10,
0,
8,
12,
4,
13,
3,
7,
15,
14,
5,
6,
2,
48399 4,
0,
5,
9,
7,
12,
2,
10,
14,
1,
3,
8,
11,
6,
15,
13
48403 5,
14,
7,
0,
9,
2,
11,
4,
13,
6,
15,
8,
1,
10,
3,
12,
48404 6,
11,
3,
7,
0,
13,
5,
10,
14,
15,
8,
12,
4,
9,
1,
2,
48405 15,
5,
1,
3,
7,
14,
6,
9,
11,
8,
12,
2,
10,
0,
4,
13,
48406 8,
6,
4,
1,
3,
11,
15,
0,
5,
12,
2,
13,
9,
7,
10,
14,
48407 12,
15,
10,
4,
1,
5,
8,
7,
6,
2,
13,
14,
0,
3,
9,
11
48411 11,
14,
15,
12,
5,
8,
7,
9,
11,
13,
14,
15,
6,
7,
9,
8,
48412 7,
6,
8,
13,
11,
9,
7,
15,
7,
12,
15,
9,
11,
7,
13,
12,
48413 11,
13,
6,
7,
14,
9,
13,
15,
14,
8,
13,
6,
5,
12,
7,
5,
48414 11,
12,
14,
15,
14,
15,
9,
8,
9,
14,
5,
6,
8,
6,
5,
12,
48415 9,
15,
5,
11,
6,
8,
13,
12,
5,
12,
13,
14,
11,
8,
5,
6
48419 8,
9,
9,
11,
13,
15,
15,
5,
7,
7,
8,
11,
14,
14,
12,
6,
48420 9,
13,
15,
7,
12,
8,
9,
11,
7,
7,
12,
7,
6,
15,
13,
11,
48421 9,
7,
15,
11,
8,
6,
6,
14,
12,
13,
5,
14,
13,
13,
7,
5,
48422 15,
5,
8,
11,
14,
14,
6,
14,
6,
9,
12,
9,
12,
5,
15,
8,
48423 8,
5,
12,
9,
12,
5,
14,
6,
8,
13,
6,
5,
15,
13,
11,
11
48426 var hl = [
0x00000000,
0x5A827999,
0x6ED9EBA1,
0x8F1BBCDC,
0xA953FD4E]
48427 var hr = [
0x50A28BE6,
0x5C4DD124,
0x6D703EF3,
0x7A6D76E9,
0x00000000]
48429 function bytesToWords (bytes) {
48431 for (var i =
0, b =
0; i < bytes.length; i++, b +=
8) {
48432 words[b
>>> 5] |= bytes[i] << (
24 - b %
32)
48437 function wordsToBytes (words) {
48439 for (var b =
0; b < words.length *
32; b +=
8) {
48440 bytes.push((words[b
>>> 5]
>>> (
24 - b %
32)) &
0xFF)
48445 function processBlock (H, M, offset) {
48447 for (var i =
0; i <
16; i++) {
48448 var offset_i = offset + i
48449 var M_offset_i = M[offset_i]
48453 (((M_offset_i <<
8) | (M_offset_i
>>> 24)) &
0x00ff00ff) |
48454 (((M_offset_i <<
24) | (M_offset_i
>>> 8)) &
0xff00ff00)
48458 // Working variables
48459 var al, bl, cl, dl, el
48460 var ar, br, cr, dr, er
48470 for (i =
0; i <
80; i +=
1) {
48471 t = (al + M[offset + zl[i]]) |
0
48473 t += f1(bl, cl, dl) + hl[
0]
48474 } else if (i <
32) {
48475 t += f2(bl, cl, dl) + hl[
1]
48476 } else if (i <
48) {
48477 t += f3(bl, cl, dl) + hl[
2]
48478 } else if (i <
64) {
48479 t += f4(bl, cl, dl) + hl[
3]
48480 } else {// if (i
<80) {
48481 t += f5(bl, cl, dl) + hl[
4]
48492 t = (ar + M[offset + zr[i]]) |
0
48494 t += f5(br, cr, dr) + hr[
0]
48495 } else if (i <
32) {
48496 t += f4(br, cr, dr) + hr[
1]
48497 } else if (i <
48) {
48498 t += f3(br, cr, dr) + hr[
2]
48499 } else if (i <
64) {
48500 t += f2(br, cr, dr) + hr[
3]
48501 } else {// if (i
<80) {
48502 t += f1(br, cr, dr) + hr[
4]
48515 // intermediate hash value
48516 t = (H[
1] + cl + dr) |
0
48517 H[
1] = (H[
2] + dl + er) |
0
48518 H[
2] = (H[
3] + el + ar) |
0
48519 H[
3] = (H[
4] + al + br) |
0
48520 H[
4] = (H[
0] + bl + cr) |
0
48524 function f1 (x, y, z) {
48525 return ((x) ^ (y) ^ (z))
48528 function f2 (x, y, z) {
48529 return (((x) & (y)) | ((~x) & (z)))
48532 function f3 (x, y, z) {
48533 return (((x) | (~(y))) ^ (z))
48536 function f4 (x, y, z) {
48537 return (((x) & (z)) | ((y) & (~(z))))
48540 function f5 (x, y, z) {
48541 return ((x) ^ ((y) | (~(z))))
48544 function rotl (x, n) {
48545 return (x << n) | (x
>>> (
32 - n))
48548 function ripemd160 (message) {
48549 var H = [
0x67452301,
0xEFCDAB89,
0x98BADCFE,
0x10325476,
0xC3D2E1F0]
48551 if (typeof message === 'string') {
48552 message = new Buffer(message, 'utf8')
48555 var m = bytesToWords(message)
48557 var nBitsLeft = message.length *
8
48558 var nBitsTotal = message.length *
8
48561 m[nBitsLeft
>>> 5] |=
0x80 << (
24 - nBitsLeft %
32)
48562 m[(((nBitsLeft +
64)
>>> 9) <<
4) +
14] = (
48563 (((nBitsTotal <<
8) | (nBitsTotal
>>> 24)) &
0x00ff00ff) |
48564 (((nBitsTotal <<
24) | (nBitsTotal
>>> 8)) &
0xff00ff00)
48567 for (var i =
0; i < m.length; i +=
16) {
48568 processBlock(H, m, i)
48572 for (i =
0; i <
5; i++) {
48577 H[i] = (((H_i <<
8) | (H_i
>>> 24)) &
0x00ff00ff) |
48578 (((H_i <<
24) | (H_i
>>> 8)) &
0xff00ff00)
48581 var digestbytes = wordsToBytes(H)
48582 return new Buffer(digestbytes)
48585 module.exports = ripemd160
48587 }).call(this,require(
"buffer").Buffer)
48588 },{
"buffer":
5}],
72:[function(require,module,exports){
48589 (function (Buffer){
48590 const assert = require('assert')
48592 * RLP Encoding based on: https://github.com/ethereum/wiki/wiki/%
5BEnglish%
5D-RLP
48593 * This function takes in a data, convert it to buffer if not, and a length for recursion
48595 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
48596 * @returns {Buffer} - returns buffer of encoded data
48598 exports.encode = function (input) {
48599 if (input instanceof Array) {
48601 for (var i =
0; i < input.length; i++) {
48602 output.push(exports.encode(input[i]))
48604 var buf = Buffer.concat(output)
48605 return Buffer.concat([encodeLength(buf.length,
192), buf])
48607 input = toBuffer(input)
48608 if (input.length ===
1 && input[
0] <
128) {
48611 return Buffer.concat([encodeLength(input.length,
128), input])
48616 function safeParseInt (v, base) {
48617 if (v.slice(
0,
2) === '
00') {
48618 throw (new Error('invalid RLP: extra zeros'))
48621 return parseInt(v, base)
48624 function encodeLength (len, offset) {
48626 return new Buffer([len + offset])
48628 var hexLength = intToHex(len)
48629 var lLength = hexLength.length /
2
48630 var firstByte = intToHex(offset +
55 + lLength)
48631 return new Buffer(firstByte + hexLength, 'hex')
48636 * RLP Decoding based on: {@link https://github.com/ethereum/wiki/wiki/%
5BEnglish%
5D-RLP|RLP}
48637 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
48638 * @returns {Array} - returns decode Array of Buffers containg the original message
48640 exports.decode = function (input, stream) {
48641 if (!input || input.length ===
0) {
48642 return new Buffer([])
48645 input = toBuffer(input)
48646 var decoded = _decode(input)
48652 assert.equal(decoded.remainder.length,
0, 'invalid remainder')
48653 return decoded.data
48656 exports.getLength = function (input) {
48657 if (!input || input.length ===
0) {
48658 return new Buffer([])
48661 input = toBuffer(input)
48662 var firstByte = input[
0]
48663 if (firstByte <=
0x7f) {
48664 return input.length
48665 } else if (firstByte <=
0xb7) {
48666 return firstByte -
0x7f
48667 } else if (firstByte <=
0xbf) {
48668 return firstByte -
0xb6
48669 } else if (firstByte <=
0xf7) {
48670 // a list between
0-
55 bytes long
48671 return firstByte -
0xbf
48673 // a list over
55 bytes long
48674 var llength = firstByte -
0xf6
48675 var length = safeParseInt(input.slice(
1, llength).toString('hex'),
16)
48676 return llength + length
48680 function _decode (input) {
48681 var length, llength, data, innerRemainder, d
48683 var firstByte = input[
0]
48685 if (firstByte <=
0x7f) {
48686 // a single byte whose value is in the [
0x00,
0x7f] range, that byte is its own RLP encoding.
48688 data: input.slice(
0,
1),
48689 remainder: input.slice(
1)
48691 } else if (firstByte <=
0xb7) {
48692 // string is
0-
55 bytes long. A single byte with value
0x80 plus the length of the string followed by the string
48693 // The range of the first byte is [
0x80,
0xb7]
48694 length = firstByte -
0x7f
48696 // set
0x80 null to
0
48697 if (firstByte ===
0x80) {
48698 data = new Buffer([])
48700 data = input.slice(
1, length)
48703 if (length ===
2 && data[
0] <
0x80) {
48704 throw new Error('invalid rlp encoding: byte must be less
0x80')
48709 remainder: input.slice(length)
48711 } else if (firstByte <=
0xbf) {
48712 llength = firstByte -
0xb6
48713 length = safeParseInt(input.slice(
1, llength).toString('hex'),
16)
48714 data = input.slice(llength, length + llength)
48715 if (data.length < length) {
48716 throw (new Error('invalid RLP'))
48721 remainder: input.slice(length + llength)
48723 } else if (firstByte <=
0xf7) {
48724 // a list between
0-
55 bytes long
48725 length = firstByte -
0xbf
48726 innerRemainder = input.slice(
1, length)
48727 while (innerRemainder.length) {
48728 d = _decode(innerRemainder)
48729 decoded.push(d.data)
48730 innerRemainder = d.remainder
48735 remainder: input.slice(length)
48738 // a list over
55 bytes long
48739 llength = firstByte -
0xf6
48740 length = safeParseInt(input.slice(
1, llength).toString('hex'),
16)
48741 var totalLength = llength + length
48742 if (totalLength
> input.length) {
48743 throw new Error('invalid rlp: total length is larger than the data')
48746 innerRemainder = input.slice(llength, totalLength)
48747 if (innerRemainder.length ===
0) {
48748 throw new Error('invalid rlp, List has a invalid length')
48751 while (innerRemainder.length) {
48752 d = _decode(innerRemainder)
48753 decoded.push(d.data)
48754 innerRemainder = d.remainder
48758 remainder: input.slice(totalLength)
48763 function isHexPrefixed (str) {
48764 return str.slice(
0,
2) === '
0x'
48767 // Removes
0x from a given String
48768 function stripHexPrefix (str) {
48769 if (typeof str !== 'string') {
48772 return isHexPrefixed(str) ? str.slice(
2) : str
48775 function intToHex (i) {
48776 var hex = i.toString(
16)
48777 if (hex.length %
2) {
48784 function padToEven (a) {
48785 if (a.length %
2) a = '
0' + a
48789 function intToBuffer (i) {
48790 var hex = intToHex(i)
48791 return new Buffer(hex, 'hex')
48794 function toBuffer (v) {
48795 if (!Buffer.isBuffer(v)) {
48796 if (typeof v === 'string') {
48797 if (isHexPrefixed(v)) {
48798 v = new Buffer(padToEven(stripHexPrefix(v)), 'hex')
48802 } else if (typeof v === 'number') {
48808 } else if (v === null || v === undefined) {
48810 } else if (v.toArray) {
48811 // converts a BN to a Buffer
48812 v = new Buffer(v.toArray())
48814 throw new Error('invalid type')
48820 }).call(this,require("buffer").Buffer)
48821 },{"assert":
1,"buffer":
5}],
73:[function(require,module,exports){
48823 module.exports = require('./lib')(require('./lib/elliptic'))
48825 },{"./lib":
77,"./lib/elliptic":
76}],
74:[function(require,module,exports){
48826 (function (Buffer){
48828 var toString = Object.prototype.toString
48831 exports.isArray = function (value, message) {
48832 if (!Array.isArray(value)) throw TypeError(message)
48835 exports.isBoolean = function (value, message) {
48836 if (toString.call(value) !== '[object Boolean]') throw TypeError(message)
48839 exports.isBuffer = function (value, message) {
48840 if (!Buffer.isBuffer(value)) throw TypeError(message)
48843 exports.isFunction = function (value, message) {
48844 if (toString.call(value) !== '[object Function]') throw TypeError(message)
48847 exports.isNumber = function (value, message) {
48848 if (toString.call(value) !== '[object Number]') throw TypeError(message)
48851 exports.isObject = function (value, message) {
48852 if (toString.call(value) !== '[object Object]') throw TypeError(message)
48856 exports.isBufferLength = function (buffer, length, message) {
48857 if (buffer.length !== length) throw RangeError(message)
48860 exports.isBufferLength2 = function (buffer, length1, length2, message) {
48861 if (buffer.length !== length1 && buffer.length !== length2) throw RangeError(message)
48864 exports.isLengthGTZero = function (value, message) {
48865 if (value.length ===
0) throw RangeError(message)
48868 exports.isNumberInInterval = function (number, x, y, message) {
48869 if (number <= x || number
>= y) throw RangeError(message)
48872 }).call(this,{"isBuffer":require("../../../../../.nvm/versions/node/v7.5
.0/lib/node_modules/browserify/node_modules/is-buffer/index.js")})
48873 },{"../../../../../.nvm/versions/node/v7.5
.0/lib/node_modules/browserify/node_modules/is-buffer/index.js":
10}],
75:[function(require,module,exports){
48874 (function (Buffer){
48876 var bip66 = require('bip66')
48878 var EC_PRIVKEY_EXPORT_DER_COMPRESSED = new Buffer([
48880 0x30,
0x81,
0xd3,
0x02,
0x01,
0x01,
0x04,
0x20,
48882 0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
48883 0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
48885 0xa0,
0x81,
0x85,
0x30,
0x81,
0x82,
0x02,
0x01,
0x01,
0x30,
0x2c,
0x06,
0x07,
0x2a,
0x86,
0x48,
48886 0xcE,
0x3d,
0x01,
0x01,
0x02,
0x21,
0x00,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
48887 0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
48888 0xff,
0xff,
0xfE,
0xff,
0xff,
0xfc,
0x2f,
0x30,
0x06,
0x04,
0x01,
0x00,
0x04,
0x01,
0x07,
0x04,
48889 0x21,
0x02,
0x79,
0xbE,
0x66,
0x7E,
0xf9,
0xdc,
0xbb,
0xac,
0x55,
0xa0,
0x62,
0x95,
0xcE,
0x87,
48890 0x0b,
0x07,
0x02,
0x9b,
0xfc,
0xdb,
0x2d,
0xcE,
0x28,
0xd9,
0x59,
0xf2,
0x81,
0x5b,
0x16,
0xf8,
48891 0x17,
0x98,
0x02,
0x21,
0x00,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
48892 0xff,
0xff,
0xff,
0xff,
0xfE,
0xba,
0xaE,
0xdc,
0xE6,
0xaf,
0x48,
0xa0,
0x3b,
0xbf,
0xd2,
0x5E,
48893 0x8c,
0xd0,
0x36,
0x41,
0x41,
0x02,
0x01,
0x01,
0xa1,
0x24,
0x03,
0x22,
0x00,
48895 0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
48896 0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
48900 var EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED = new Buffer([
48902 0x30,
0x82,
0x01,
0x13,
0x02,
0x01,
0x01,
0x04,
0x20,
48904 0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
48905 0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
48907 0xa0,
0x81,
0xa5,
0x30,
0x81,
0xa2,
0x02,
0x01,
0x01,
0x30,
0x2c,
0x06,
0x07,
0x2a,
0x86,
0x48,
48908 0xcE,
0x3d,
0x01,
0x01,
0x02,
0x21,
0x00,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
48909 0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
48910 0xff,
0xff,
0xfE,
0xff,
0xff,
0xfc,
0x2f,
0x30,
0x06,
0x04,
0x01,
0x00,
0x04,
0x01,
0x07,
0x04,
48911 0x41,
0x04,
0x79,
0xbE,
0x66,
0x7E,
0xf9,
0xdc,
0xbb,
0xac,
0x55,
0xa0,
0x62,
0x95,
0xcE,
0x87,
48912 0x0b,
0x07,
0x02,
0x9b,
0xfc,
0xdb,
0x2d,
0xcE,
0x28,
0xd9,
0x59,
0xf2,
0x81,
0x5b,
0x16,
0xf8,
48913 0x17,
0x98,
0x48,
0x3a,
0xda,
0x77,
0x26,
0xa3,
0xc4,
0x65,
0x5d,
0xa4,
0xfb,
0xfc,
0x0E,
0x11,
48914 0x08,
0xa8,
0xfd,
0x17,
0xb4,
0x48,
0xa6,
0x85,
0x54,
0x19,
0x9c,
0x47,
0xd0,
0x8f,
0xfb,
0x10,
48915 0xd4,
0xb8,
0x02,
0x21,
0x00,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
48916 0xff,
0xff,
0xff,
0xff,
0xfE,
0xba,
0xaE,
0xdc,
0xE6,
0xaf,
0x48,
0xa0,
0x3b,
0xbf,
0xd2,
0x5E,
48917 0x8c,
0xd0,
0x36,
0x41,
0x41,
0x02,
0x01,
0x01,
0xa1,
0x44,
0x03,
0x42,
0x00,
48919 0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
48920 0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
48921 0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
48922 0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
48926 var ZERO_BUFFER_32 = new Buffer([
48927 0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
48928 0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
48931 exports.privateKeyExport = function (privateKey, publicKey, compressed) {
48932 var result = new Buffer(compressed ? EC_PRIVKEY_EXPORT_DER_COMPRESSED : EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED)
48933 privateKey.copy(result, compressed ?
8 :
9)
48934 publicKey.copy(result, compressed ?
181 :
214)
48938 exports.privateKeyImport = function (privateKey) {
48939 var length = privateKey.length
48943 if (length < index +
1 || privateKey[index] !==
0x30) return
48946 // sequence length constructor
48947 if (length < index +
1 || !(privateKey[index] &
0x80)) return
48949 var lenb = privateKey[index] &
0x7f
48951 if (lenb <
1 || lenb
> 2) return
48952 if (length < index + lenb) return
48955 var len = privateKey[index + lenb -
1] | (lenb
> 1 ? privateKey[index + lenb -
2] <<
8 :
0)
48957 if (length < index + len) return
48959 // sequence element
0: version number (=
1)
48960 if (length < index +
3 ||
48961 privateKey[index] !==
0x02 ||
48962 privateKey[index +
1] !==
0x01 ||
48963 privateKey[index +
2] !==
0x01) {
48968 // sequence element
1: octet string, up to
32 bytes
48969 if (length < index +
2 ||
48970 privateKey[index] !==
0x04 ||
48971 privateKey[index +
1]
> 0x20 ||
48972 length < index +
2 + privateKey[index +
1]) {
48976 return privateKey.slice(index +
2, index +
2 + privateKey[index +
1])
48979 exports.signatureExport = function (sigObj) {
48980 var r = Buffer.concat([new Buffer([
0]), sigObj.r])
48981 for (var lenR =
33, posR =
0; lenR
> 1 && r[posR] ===
0x00 && !(r[posR +
1] &
0x80); --lenR, ++posR);
48983 var s = Buffer.concat([new Buffer([
0]), sigObj.s])
48984 for (var lenS =
33, posS =
0; lenS
> 1 && s[posS] ===
0x00 && !(s[posS +
1] &
0x80); --lenS, ++posS);
48986 return bip66.encode(r.slice(posR), s.slice(posS))
48989 exports.signatureImport = function (sig) {
48990 var r = new Buffer(ZERO_BUFFER_32)
48991 var s = new Buffer(ZERO_BUFFER_32)
48994 var sigObj = bip66.decode(sig)
48995 if (sigObj.r.length ===
33 && sigObj.r[
0] ===
0x00) sigObj.r = sigObj.r.slice(
1)
48996 if (sigObj.r.length
> 32) throw new Error('R length is too long')
48997 if (sigObj.s.length ===
33 && sigObj.s[
0] ===
0x00) sigObj.s = sigObj.s.slice(
1)
48998 if (sigObj.s.length
> 32) throw new Error('S length is too long')
49003 sigObj.r.copy(r,
32 - sigObj.r.length)
49004 sigObj.s.copy(s,
32 - sigObj.s.length)
49006 return { r: r, s: s }
49009 exports.signatureImportLax = function (sig) {
49010 var r = new Buffer(ZERO_BUFFER_32)
49011 var s = new Buffer(ZERO_BUFFER_32)
49013 var length = sig.length
49016 // sequence tag byte
49017 if (sig[index++] !==
0x30) return
49019 // sequence length byte
49020 var lenbyte = sig[index++]
49021 if (lenbyte &
0x80) {
49022 index += lenbyte -
0x80
49023 if (index
> length) return
49026 // sequence tag byte for r
49027 if (sig[index++] !==
0x02) return
49030 var rlen = sig[index++]
49032 lenbyte = rlen -
0x80
49033 if (index + lenbyte
> length) return
49034 for (; lenbyte
> 0 && sig[index] ===
0x00; index +=
1, lenbyte -=
1);
49035 for (rlen =
0; lenbyte
> 0; index +=
1, lenbyte -=
1) rlen = (rlen <<
8) + sig[index]
49037 if (rlen
> length - index) return
49041 // sequence tag byte for s
49042 if (sig[index++] !==
0x02) return
49045 var slen = sig[index++]
49047 lenbyte = slen -
0x80
49048 if (index + lenbyte
> length) return
49049 for (; lenbyte
> 0 && sig[index] ===
0x00; index +=
1, lenbyte -=
1);
49050 for (slen =
0; lenbyte
> 0; index +=
1, lenbyte -=
1) slen = (slen <<
8) + sig[index]
49052 if (slen
> length - index) return
49056 // ignore leading zeros in r
49057 for (; rlen
> 0 && sig[rindex] ===
0x00; rlen -=
1, rindex +=
1);
49059 if (rlen
> 32) return
49060 var rvalue = sig.slice(rindex, rindex + rlen)
49061 rvalue.copy(r,
32 - rvalue.length)
49063 // ignore leading zeros in s
49064 for (; slen
> 0 && sig[sindex] ===
0x00; slen -=
1, sindex +=
1);
49066 if (slen
> 32) return
49067 var svalue = sig.slice(sindex, sindex + slen)
49068 svalue.copy(s,
32 - svalue.length)
49070 return { r: r, s: s }
49073 }).call(this,require(
"buffer").Buffer)
49074 },{
"bip66":
32,
"buffer":
5}],
76:[function(require,module,exports){
49075 (function (Buffer){
49077 var createHash = require('create-hash')
49078 var BN = require('bn.js')
49079 var EC = require('elliptic').ec
49081 var messages = require('../messages.json')
49083 var ec = new EC('secp256k1')
49084 var ecparams = ec.curve
49086 function loadCompressedPublicKey (first, xBuffer) {
49087 var x = new BN(xBuffer)
49090 if (x.cmp(ecparams.p)
>=
0) return null
49091 x = x.toRed(ecparams.red)
49093 // compute corresponding Y
49094 var y = x.redSqr().redIMul(x).redIAdd(ecparams.b).redSqrt()
49095 if ((first ===
0x03) !== y.isOdd()) y = y.redNeg()
49097 return ec.keyPair({ pub: { x: x, y: y } })
49100 function loadUncompressedPublicKey (first, xBuffer, yBuffer) {
49101 var x = new BN(xBuffer)
49102 var y = new BN(yBuffer)
49105 if (x.cmp(ecparams.p)
>=
0 || y.cmp(ecparams.p)
>=
0) return null
49107 x = x.toRed(ecparams.red)
49108 y = y.toRed(ecparams.red)
49111 if ((first ===
0x06 || first ===
0x07) && y.isOdd() !== (first ===
0x07)) return null
49114 var x3 = x.redSqr().redIMul(x)
49115 if (!y.redSqr().redISub(x3.redIAdd(ecparams.b)).isZero()) return null
49117 return ec.keyPair({ pub: { x: x, y: y } })
49120 function loadPublicKey (publicKey) {
49121 var first = publicKey[
0]
49125 if (publicKey.length !==
33) return null
49126 return loadCompressedPublicKey(first, publicKey.slice(
1,
33))
49130 if (publicKey.length !==
65) return null
49131 return loadUncompressedPublicKey(first, publicKey.slice(
1,
33), publicKey.slice(
33,
65))
49137 exports.privateKeyVerify = function (privateKey) {
49138 var bn = new BN(privateKey)
49139 return bn.cmp(ecparams.n) <
0 && !bn.isZero()
49142 exports.privateKeyExport = function (privateKey, compressed) {
49143 var d = new BN(privateKey)
49144 if (d.cmp(ecparams.n)
>=
0 || d.isZero()) throw new Error(messages.EC_PRIVATE_KEY_EXPORT_DER_FAIL)
49146 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
49149 exports.privateKeyTweakAdd = function (privateKey, tweak) {
49150 var bn = new BN(tweak)
49151 if (bn.cmp(ecparams.n)
>=
0) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
49153 bn.iadd(new BN(privateKey))
49154 if (bn.cmp(ecparams.n)
>=
0) bn.isub(ecparams.n)
49155 if (bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
49157 return bn.toArrayLike(Buffer, 'be',
32)
49160 exports.privateKeyTweakMul = function (privateKey, tweak) {
49161 var bn = new BN(tweak)
49162 if (bn.cmp(ecparams.n)
>=
0 || bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_MUL_FAIL)
49164 bn.imul(new BN(privateKey))
49165 if (bn.cmp(ecparams.n)) bn = bn.umod(ecparams.n)
49167 return bn.toArrayLike(Buffer, 'be',
32)
49170 exports.publicKeyCreate = function (privateKey, compressed) {
49171 var d = new BN(privateKey)
49172 if (d.cmp(ecparams.n)
>=
0 || d.isZero()) throw new Error(messages.EC_PUBLIC_KEY_CREATE_FAIL)
49174 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
49177 exports.publicKeyConvert = function (publicKey, compressed) {
49178 var pair = loadPublicKey(publicKey)
49179 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
49181 return new Buffer(pair.getPublic(compressed, true))
49184 exports.publicKeyVerify = function (publicKey) {
49185 return loadPublicKey(publicKey) !== null
49188 exports.publicKeyTweakAdd = function (publicKey, tweak, compressed) {
49189 var pair = loadPublicKey(publicKey)
49190 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
49192 tweak = new BN(tweak)
49193 if (tweak.cmp(ecparams.n)
>=
0) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_ADD_FAIL)
49195 return new Buffer(ecparams.g.mul(tweak).add(pair.pub).encode(true, compressed))
49198 exports.publicKeyTweakMul = function (publicKey, tweak, compressed) {
49199 var pair = loadPublicKey(publicKey)
49200 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
49202 tweak = new BN(tweak)
49203 if (tweak.cmp(ecparams.n)
>=
0 || tweak.isZero()) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_MUL_FAIL)
49205 return new Buffer(pair.pub.mul(tweak).encode(true, compressed))
49208 exports.publicKeyCombine = function (publicKeys, compressed) {
49209 var pairs = new Array(publicKeys.length)
49210 for (var i =
0; i < publicKeys.length; ++i) {
49211 pairs[i] = loadPublicKey(publicKeys[i])
49212 if (pairs[i] === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
49215 var point = pairs[
0].pub
49216 for (var j =
1; j < pairs.length; ++j) point = point.add(pairs[j].pub)
49217 if (point.isInfinity()) throw new Error(messages.EC_PUBLIC_KEY_COMBINE_FAIL)
49219 return new Buffer(point.encode(true, compressed))
49222 exports.signatureNormalize = function (signature) {
49223 var r = new BN(signature.slice(
0,
32))
49224 var s = new BN(signature.slice(
32,
64))
49225 if (r.cmp(ecparams.n)
>=
0 || s.cmp(ecparams.n)
>=
0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
49227 var result = new Buffer(signature)
49228 if (s.cmp(ec.nh) ===
1) ecparams.n.sub(s).toArrayLike(Buffer, 'be',
32).copy(result,
32)
49233 exports.signatureExport = function (signature) {
49234 var r = signature.slice(
0,
32)
49235 var s = signature.slice(
32,
64)
49236 if (new BN(r).cmp(ecparams.n)
>=
0 || new BN(s).cmp(ecparams.n)
>=
0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
49238 return { r: r, s: s }
49241 exports.signatureImport = function (sigObj) {
49242 var r = new BN(sigObj.r)
49243 if (r.cmp(ecparams.n)
>=
0) r = new BN(
0)
49245 var s = new BN(sigObj.s)
49246 if (s.cmp(ecparams.n)
>=
0) s = new BN(
0)
49248 return Buffer.concat([
49249 r.toArrayLike(Buffer, 'be',
32),
49250 s.toArrayLike(Buffer, 'be',
32)
49254 exports.sign = function (message, privateKey, noncefn, data) {
49255 if (typeof noncefn === 'function') {
49256 var getNonce = noncefn
49257 noncefn = function (counter) {
49258 var nonce = getNonce(message, privateKey, null, data, counter)
49259 if (!Buffer.isBuffer(nonce) || nonce.length !==
32) throw new Error(messages.ECDSA_SIGN_FAIL)
49261 return new BN(nonce)
49265 var d = new BN(privateKey)
49266 if (d.cmp(ecparams.n)
>=
0 || d.isZero()) throw new Error(messages.ECDSA_SIGN_FAIL)
49268 var result = ec.sign(message, privateKey, { canonical: true, k: noncefn, pers: data })
49270 signature: Buffer.concat([
49271 result.r.toArrayLike(Buffer, 'be',
32),
49272 result.s.toArrayLike(Buffer, 'be',
32)
49274 recovery: result.recoveryParam
49278 exports.verify = function (message, signature, publicKey) {
49279 var sigObj = {r: signature.slice(
0,
32), s: signature.slice(
32,
64)}
49281 var sigr = new BN(sigObj.r)
49282 var sigs = new BN(sigObj.s)
49283 if (sigr.cmp(ecparams.n)
>=
0 || sigs.cmp(ecparams.n)
>=
0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
49284 if (sigs.cmp(ec.nh) ===
1 || sigr.isZero() || sigs.isZero()) return false
49286 var pair = loadPublicKey(publicKey)
49287 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
49289 return ec.verify(message, sigObj, {x: pair.pub.x, y: pair.pub.y})
49292 exports.recover = function (message, signature, recovery, compressed) {
49293 var sigObj = {r: signature.slice(
0,
32), s: signature.slice(
32,
64)}
49295 var sigr = new BN(sigObj.r)
49296 var sigs = new BN(sigObj.s)
49297 if (sigr.cmp(ecparams.n)
>=
0 || sigs.cmp(ecparams.n)
>=
0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
49300 if (sigr.isZero() || sigs.isZero()) throw new Error()
49302 var point = ec.recoverPubKey(message, sigObj, recovery)
49303 return new Buffer(point.encode(true, compressed))
49305 throw new Error(messages.ECDSA_RECOVER_FAIL)
49309 exports.ecdh = function (publicKey, privateKey) {
49310 var shared = exports.ecdhUnsafe(publicKey, privateKey, true)
49311 return createHash('sha256').update(shared).digest()
49314 exports.ecdhUnsafe = function (publicKey, privateKey, compressed) {
49315 var pair = loadPublicKey(publicKey)
49316 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
49318 var scalar = new BN(privateKey)
49319 if (scalar.cmp(ecparams.n)
>=
0 || scalar.isZero()) throw new Error(messages.ECDH_FAIL)
49321 return new Buffer(pair.pub.mul(scalar).encode(true, compressed))
49324 }).call(this,require("buffer").Buffer)
49325 },{"../messages.json":
78,"bn.js":
33,"buffer":
5,"create-hash":
36,"elliptic":
39}],
77:[function(require,module,exports){
49327 var assert = require('./assert')
49328 var der = require('./der')
49329 var messages = require('./messages.json')
49331 function initCompressedValue (value, defaultValue) {
49332 if (value === undefined) return defaultValue
49334 assert.isBoolean(value, messages.COMPRESSED_TYPE_INVALID)
49338 module.exports = function (secp256k1) {
49340 privateKeyVerify: function (privateKey) {
49341 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
49342 return privateKey.length ===
32 && secp256k1.privateKeyVerify(privateKey)
49345 privateKeyExport: function (privateKey, compressed) {
49346 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
49347 assert.isBufferLength(privateKey,
32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
49349 compressed = initCompressedValue(compressed, true)
49350 var publicKey = secp256k1.privateKeyExport(privateKey, compressed)
49352 return der.privateKeyExport(privateKey, publicKey, compressed)
49355 privateKeyImport: function (privateKey) {
49356 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
49358 privateKey = der.privateKeyImport(privateKey)
49359 if (privateKey && privateKey.length ===
32 && secp256k1.privateKeyVerify(privateKey)) return privateKey
49361 throw new Error(messages.EC_PRIVATE_KEY_IMPORT_DER_FAIL)
49364 privateKeyTweakAdd: function (privateKey, tweak) {
49365 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
49366 assert.isBufferLength(privateKey,
32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
49368 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
49369 assert.isBufferLength(tweak,
32, messages.TWEAK_LENGTH_INVALID)
49371 return secp256k1.privateKeyTweakAdd(privateKey, tweak)
49374 privateKeyTweakMul: function (privateKey, tweak) {
49375 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
49376 assert.isBufferLength(privateKey,
32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
49378 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
49379 assert.isBufferLength(tweak,
32, messages.TWEAK_LENGTH_INVALID)
49381 return secp256k1.privateKeyTweakMul(privateKey, tweak)
49384 publicKeyCreate: function (privateKey, compressed) {
49385 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
49386 assert.isBufferLength(privateKey,
32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
49388 compressed = initCompressedValue(compressed, true)
49390 return secp256k1.publicKeyCreate(privateKey, compressed)
49393 publicKeyConvert: function (publicKey, compressed) {
49394 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
49395 assert.isBufferLength2(publicKey,
33,
65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
49397 compressed = initCompressedValue(compressed, true)
49399 return secp256k1.publicKeyConvert(publicKey, compressed)
49402 publicKeyVerify: function (publicKey) {
49403 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
49404 return secp256k1.publicKeyVerify(publicKey)
49407 publicKeyTweakAdd: function (publicKey, tweak, compressed) {
49408 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
49409 assert.isBufferLength2(publicKey,
33,
65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
49411 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
49412 assert.isBufferLength(tweak,
32, messages.TWEAK_LENGTH_INVALID)
49414 compressed = initCompressedValue(compressed, true)
49416 return secp256k1.publicKeyTweakAdd(publicKey, tweak, compressed)
49419 publicKeyTweakMul: function (publicKey, tweak, compressed) {
49420 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
49421 assert.isBufferLength2(publicKey,
33,
65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
49423 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
49424 assert.isBufferLength(tweak,
32, messages.TWEAK_LENGTH_INVALID)
49426 compressed = initCompressedValue(compressed, true)
49428 return secp256k1.publicKeyTweakMul(publicKey, tweak, compressed)
49431 publicKeyCombine: function (publicKeys, compressed) {
49432 assert.isArray(publicKeys, messages.EC_PUBLIC_KEYS_TYPE_INVALID)
49433 assert.isLengthGTZero(publicKeys, messages.EC_PUBLIC_KEYS_LENGTH_INVALID)
49434 for (var i =
0; i < publicKeys.length; ++i) {
49435 assert.isBuffer(publicKeys[i], messages.EC_PUBLIC_KEY_TYPE_INVALID)
49436 assert.isBufferLength2(publicKeys[i],
33,
65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
49439 compressed = initCompressedValue(compressed, true)
49441 return secp256k1.publicKeyCombine(publicKeys, compressed)
49444 signatureNormalize: function (signature) {
49445 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
49446 assert.isBufferLength(signature,
64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
49448 return secp256k1.signatureNormalize(signature)
49451 signatureExport: function (signature) {
49452 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
49453 assert.isBufferLength(signature,
64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
49455 var sigObj = secp256k1.signatureExport(signature)
49456 return der.signatureExport(sigObj)
49459 signatureImport: function (sig) {
49460 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
49461 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
49463 var sigObj = der.signatureImport(sig)
49464 if (sigObj) return secp256k1.signatureImport(sigObj)
49466 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
49469 signatureImportLax: function (sig) {
49470 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
49471 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
49473 var sigObj = der.signatureImportLax(sig)
49474 if (sigObj) return secp256k1.signatureImport(sigObj)
49476 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
49479 sign: function (message, privateKey, options) {
49480 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
49481 assert.isBufferLength(message,
32, messages.MSG32_LENGTH_INVALID)
49483 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
49484 assert.isBufferLength(privateKey,
32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
49488 if (options !== undefined) {
49489 assert.isObject(options, messages.OPTIONS_TYPE_INVALID)
49491 if (options.data !== undefined) {
49492 assert.isBuffer(options.data, messages.OPTIONS_DATA_TYPE_INVALID)
49493 assert.isBufferLength(options.data,
32, messages.OPTIONS_DATA_LENGTH_INVALID)
49494 data = options.data
49497 if (options.noncefn !== undefined) {
49498 assert.isFunction(options.noncefn, messages.OPTIONS_NONCEFN_TYPE_INVALID)
49499 noncefn = options.noncefn
49503 return secp256k1.sign(message, privateKey, noncefn, data)
49506 verify: function (message, signature, publicKey) {
49507 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
49508 assert.isBufferLength(message,
32, messages.MSG32_LENGTH_INVALID)
49510 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
49511 assert.isBufferLength(signature,
64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
49513 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
49514 assert.isBufferLength2(publicKey,
33,
65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
49516 return secp256k1.verify(message, signature, publicKey)
49519 recover: function (message, signature, recovery, compressed) {
49520 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
49521 assert.isBufferLength(message,
32, messages.MSG32_LENGTH_INVALID)
49523 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
49524 assert.isBufferLength(signature,
64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
49526 assert.isNumber(recovery, messages.RECOVERY_ID_TYPE_INVALID)
49527 assert.isNumberInInterval(recovery, -
1,
4, messages.RECOVERY_ID_VALUE_INVALID)
49529 compressed = initCompressedValue(compressed, true)
49531 return secp256k1.recover(message, signature, recovery, compressed)
49534 ecdh: function (publicKey, privateKey) {
49535 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
49536 assert.isBufferLength2(publicKey,
33,
65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
49538 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
49539 assert.isBufferLength(privateKey,
32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
49541 return secp256k1.ecdh(publicKey, privateKey)
49544 ecdhUnsafe: function (publicKey, privateKey, compressed) {
49545 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
49546 assert.isBufferLength2(publicKey,
33,
65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
49548 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
49549 assert.isBufferLength(privateKey,
32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
49551 compressed = initCompressedValue(compressed, true)
49553 return secp256k1.ecdhUnsafe(publicKey, privateKey, compressed)
49558 },{"./assert":
74,"./der":
75,"./messages.json":
78}],
78:[function(require,module,exports){
49560 "COMPRESSED_TYPE_INVALID": "compressed should be a boolean",
49561 "EC_PRIVATE_KEY_TYPE_INVALID": "private key should be a Buffer",
49562 "EC_PRIVATE_KEY_LENGTH_INVALID": "private key length is invalid",
49563 "EC_PRIVATE_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting private key is invalid",
49564 "EC_PRIVATE_KEY_TWEAK_MUL_FAIL": "tweak out of range",
49565 "EC_PRIVATE_KEY_EXPORT_DER_FAIL": "couldn't export to DER format",
49566 "EC_PRIVATE_KEY_IMPORT_DER_FAIL": "couldn't import from DER format",
49567 "EC_PUBLIC_KEYS_TYPE_INVALID": "public keys should be an Array",
49568 "EC_PUBLIC_KEYS_LENGTH_INVALID": "public keys Array should have at least
1 element",
49569 "EC_PUBLIC_KEY_TYPE_INVALID": "public key should be a Buffer",
49570 "EC_PUBLIC_KEY_LENGTH_INVALID": "public key length is invalid",
49571 "EC_PUBLIC_KEY_PARSE_FAIL": "the public key could not be parsed or is invalid",
49572 "EC_PUBLIC_KEY_CREATE_FAIL": "private was invalid, try again",
49573 "EC_PUBLIC_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting public key is invalid",
49574 "EC_PUBLIC_KEY_TWEAK_MUL_FAIL": "tweak out of range",
49575 "EC_PUBLIC_KEY_COMBINE_FAIL": "the sum of the public keys is not valid",
49576 "ECDH_FAIL": "scalar was invalid (zero or overflow)",
49577 "ECDSA_SIGNATURE_TYPE_INVALID": "signature should be a Buffer",
49578 "ECDSA_SIGNATURE_LENGTH_INVALID": "signature length is invalid",
49579 "ECDSA_SIGNATURE_PARSE_FAIL": "couldn't parse signature",
49580 "ECDSA_SIGNATURE_PARSE_DER_FAIL": "couldn't parse DER signature",
49581 "ECDSA_SIGNATURE_SERIALIZE_DER_FAIL": "couldn't serialize signature to DER format",
49582 "ECDSA_SIGN_FAIL": "nonce generation function failed or private key is invalid",
49583 "ECDSA_RECOVER_FAIL": "couldn't recover public key from signature",
49584 "MSG32_TYPE_INVALID": "message should be a Buffer",
49585 "MSG32_LENGTH_INVALID": "message length is invalid",
49586 "OPTIONS_TYPE_INVALID": "options should be an Object",
49587 "OPTIONS_DATA_TYPE_INVALID": "options.data should be a Buffer",
49588 "OPTIONS_DATA_LENGTH_INVALID": "options.data length is invalid",
49589 "OPTIONS_NONCEFN_TYPE_INVALID": "options.noncefn should be a Function",
49590 "RECOVERY_ID_TYPE_INVALID": "recovery should be a Number",
49591 "RECOVERY_ID_VALUE_INVALID": "recovery should have value between -
1 and
4",
49592 "TWEAK_TYPE_INVALID": "tweak should be a Buffer",
49593 "TWEAK_LENGTH_INVALID": "tweak length is invalid"
49596 },{}],
79:[function(require,module,exports){
49597 (function (Buffer){
49598 // prototype class for hash functions
49599 function Hash (blockSize, finalSize) {
49600 this._block = new Buffer(blockSize)
49601 this._finalSize = finalSize
49602 this._blockSize = blockSize
49607 Hash.prototype.update = function (data, enc) {
49608 if (typeof data === 'string') {
49609 enc = enc || 'utf8'
49610 data = new Buffer(data, enc)
49613 var l = this._len += data.length
49614 var s = this._s ||
0
49616 var buffer = this._block
49619 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
49622 for (var i =
0; i < ch; i++) {
49623 buffer[(s % this._blockSize) + i] = data[i + f]
49629 if ((s % this._blockSize) ===
0) {
49630 this._update(buffer)
49638 Hash.prototype.digest = function (enc) {
49639 // Suppose the length of the message M, in bits, is l
49640 var l = this._len *
8
49642 // Append the bit
1 to the end of the message
49643 this._block[this._len % this._blockSize] =
0x80
49645 // and then k zero bits, where k is the smallest non-negative solution to the equation (l +
1 + k) === finalSize mod blockSize
49646 this._block.fill(
0, this._len % this._blockSize +
1)
49648 if (l % (this._blockSize *
8)
>= this._finalSize *
8) {
49649 this._update(this._block)
49650 this._block.fill(
0)
49653 // to this append the block which is equal to the number l written in binary
49654 // TODO: handle case where l is
> Math.pow(
2,
29)
49655 this._block.writeInt32BE(l, this._blockSize -
4)
49657 var hash = this._update(this._block) || this._hash()
49659 return enc ? hash.toString(enc) : hash
49662 Hash.prototype._update = function () {
49663 throw new Error('_update must be implemented by subclass')
49666 module.exports = Hash
49668 }).call(this,require("buffer").Buffer)
49669 },{"buffer":
5}],
80:[function(require,module,exports){
49670 var exports = module.exports = function SHA (algorithm) {
49671 algorithm = algorithm.toLowerCase()
49673 var Algorithm = exports[algorithm]
49674 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
49676 return new Algorithm()
49679 exports.sha = require('./sha')
49680 exports.sha1 = require('./sha1')
49681 exports.sha224 = require('./sha224')
49682 exports.sha256 = require('./sha256')
49683 exports.sha384 = require('./sha384')
49684 exports.sha512 = require('./sha512')
49686 },{"./sha":
81,"./sha1":
82,"./sha224":
83,"./sha256":
84,"./sha384":
85,"./sha512":
86}],
81:[function(require,module,exports){
49687 (function (Buffer){
49689 * A JavaScript implementation of the Secure Hash Algorithm, SHA-
0, as defined
49690 * in FIPS PUB
180-
1
49691 * This source code is derived from sha1.js of the same repository.
49692 * The difference between SHA-
0 and SHA-
1 is just a bitwise rotate left
49693 * operation was added.
49696 var inherits = require('inherits')
49697 var Hash = require('./hash')
49700 0x5a827999,
0x6ed9eba1,
0x8f1bbcdc |
0,
0xca62c1d6 |
0
49703 var W = new Array(
80)
49709 Hash.call(this,
64,
56)
49712 inherits(Sha, Hash)
49714 Sha.prototype.init = function () {
49715 this._a =
0x67452301
49716 this._b =
0xefcdab89
49717 this._c =
0x98badcfe
49718 this._d =
0x10325476
49719 this._e =
0xc3d2e1f0
49724 function rotl5 (num) {
49725 return (num <<
5) | (num
>>> 27)
49728 function rotl30 (num) {
49729 return (num <<
30) | (num
>>> 2)
49732 function ft (s, b, c, d) {
49733 if (s ===
0) return (b & c) | ((~b) & d)
49734 if (s ===
2) return (b & c) | (b & d) | (c & d)
49738 Sha.prototype._update = function (M) {
49741 var a = this._a |
0
49742 var b = this._b |
0
49743 var c = this._c |
0
49744 var d = this._d |
0
49745 var e = this._e |
0
49747 for (var i =
0; i <
16; ++i) W[i] = M.readInt32BE(i *
4)
49748 for (; i <
80; ++i) W[i] = W[i -
3] ^ W[i -
8] ^ W[i -
14] ^ W[i -
16]
49750 for (var j =
0; j <
80; ++j) {
49752 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) |
0
49761 this._a = (a + this._a) |
0
49762 this._b = (b + this._b) |
0
49763 this._c = (c + this._c) |
0
49764 this._d = (d + this._d) |
0
49765 this._e = (e + this._e) |
0
49768 Sha.prototype._hash = function () {
49769 var H = new Buffer(
20)
49771 H.writeInt32BE(this._a |
0,
0)
49772 H.writeInt32BE(this._b |
0,
4)
49773 H.writeInt32BE(this._c |
0,
8)
49774 H.writeInt32BE(this._d |
0,
12)
49775 H.writeInt32BE(this._e |
0,
16)
49780 module.exports = Sha
49782 }).call(this,require(
"buffer").Buffer)
49783 },{
"./hash":
79,
"buffer":
5,
"inherits":
63}],
82:[function(require,module,exports){
49784 (function (Buffer){
49786 * A JavaScript implementation of the Secure Hash Algorithm, SHA-
1, as defined
49787 * in FIPS PUB
180-
1
49788 * Version
2.1a Copyright Paul Johnston
2000 -
2002.
49789 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
49790 * Distributed under the BSD License
49791 * See http://pajhome.org.uk/crypt/md5 for details.
49794 var inherits = require('inherits')
49795 var Hash = require('./hash')
49798 0x5a827999,
0x6ed9eba1,
0x8f1bbcdc |
0,
0xca62c1d6 |
0
49801 var W = new Array(
80)
49807 Hash.call(this,
64,
56)
49810 inherits(Sha1, Hash)
49812 Sha1.prototype.init = function () {
49813 this._a =
0x67452301
49814 this._b =
0xefcdab89
49815 this._c =
0x98badcfe
49816 this._d =
0x10325476
49817 this._e =
0xc3d2e1f0
49822 function rotl1 (num) {
49823 return (num <<
1) | (num
>>> 31)
49826 function rotl5 (num) {
49827 return (num <<
5) | (num
>>> 27)
49830 function rotl30 (num) {
49831 return (num <<
30) | (num
>>> 2)
49834 function ft (s, b, c, d) {
49835 if (s ===
0) return (b & c) | ((~b) & d)
49836 if (s ===
2) return (b & c) | (b & d) | (c & d)
49840 Sha1.prototype._update = function (M) {
49843 var a = this._a |
0
49844 var b = this._b |
0
49845 var c = this._c |
0
49846 var d = this._d |
0
49847 var e = this._e |
0
49849 for (var i =
0; i <
16; ++i) W[i] = M.readInt32BE(i *
4)
49850 for (; i <
80; ++i) W[i] = rotl1(W[i -
3] ^ W[i -
8] ^ W[i -
14] ^ W[i -
16])
49852 for (var j =
0; j <
80; ++j) {
49854 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) |
0
49863 this._a = (a + this._a) |
0
49864 this._b = (b + this._b) |
0
49865 this._c = (c + this._c) |
0
49866 this._d = (d + this._d) |
0
49867 this._e = (e + this._e) |
0
49870 Sha1.prototype._hash = function () {
49871 var H = new Buffer(
20)
49873 H.writeInt32BE(this._a |
0,
0)
49874 H.writeInt32BE(this._b |
0,
4)
49875 H.writeInt32BE(this._c |
0,
8)
49876 H.writeInt32BE(this._d |
0,
12)
49877 H.writeInt32BE(this._e |
0,
16)
49882 module.exports = Sha1
49884 }).call(this,require(
"buffer").Buffer)
49885 },{
"./hash":
79,
"buffer":
5,
"inherits":
63}],
83:[function(require,module,exports){
49886 (function (Buffer){
49888 * A JavaScript implementation of the Secure Hash Algorithm, SHA-
256, as defined
49890 * Version
2.2-beta Copyright Angel Marin, Paul Johnston
2000 -
2009.
49891 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
49895 var inherits = require('inherits')
49896 var Sha256 = require('./sha256')
49897 var Hash = require('./hash')
49899 var W = new Array(
64)
49901 function Sha224 () {
49904 this._w = W // new Array(
64)
49906 Hash.call(this,
64,
56)
49909 inherits(Sha224, Sha256)
49911 Sha224.prototype.init = function () {
49912 this._a =
0xc1059ed8
49913 this._b =
0x367cd507
49914 this._c =
0x3070dd17
49915 this._d =
0xf70e5939
49916 this._e =
0xffc00b31
49917 this._f =
0x68581511
49918 this._g =
0x64f98fa7
49919 this._h =
0xbefa4fa4
49924 Sha224.prototype._hash = function () {
49925 var H = new Buffer(
28)
49927 H.writeInt32BE(this._a,
0)
49928 H.writeInt32BE(this._b,
4)
49929 H.writeInt32BE(this._c,
8)
49930 H.writeInt32BE(this._d,
12)
49931 H.writeInt32BE(this._e,
16)
49932 H.writeInt32BE(this._f,
20)
49933 H.writeInt32BE(this._g,
24)
49938 module.exports = Sha224
49940 }).call(this,require(
"buffer").Buffer)
49941 },{
"./hash":
79,
"./sha256":
84,
"buffer":
5,
"inherits":
63}],
84:[function(require,module,exports){
49942 (function (Buffer){
49944 * A JavaScript implementation of the Secure Hash Algorithm, SHA-
256, as defined
49946 * Version
2.2-beta Copyright Angel Marin, Paul Johnston
2000 -
2009.
49947 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
49951 var inherits = require('inherits')
49952 var Hash = require('./hash')
49955 0x428A2F98,
0x71374491,
0xB5C0FBCF,
0xE9B5DBA5,
49956 0x3956C25B,
0x59F111F1,
0x923F82A4,
0xAB1C5ED5,
49957 0xD807AA98,
0x12835B01,
0x243185BE,
0x550C7DC3,
49958 0x72BE5D74,
0x80DEB1FE,
0x9BDC06A7,
0xC19BF174,
49959 0xE49B69C1,
0xEFBE4786,
0x0FC19DC6,
0x240CA1CC,
49960 0x2DE92C6F,
0x4A7484AA,
0x5CB0A9DC,
0x76F988DA,
49961 0x983E5152,
0xA831C66D,
0xB00327C8,
0xBF597FC7,
49962 0xC6E00BF3,
0xD5A79147,
0x06CA6351,
0x14292967,
49963 0x27B70A85,
0x2E1B2138,
0x4D2C6DFC,
0x53380D13,
49964 0x650A7354,
0x766A0ABB,
0x81C2C92E,
0x92722C85,
49965 0xA2BFE8A1,
0xA81A664B,
0xC24B8B70,
0xC76C51A3,
49966 0xD192E819,
0xD6990624,
0xF40E3585,
0x106AA070,
49967 0x19A4C116,
0x1E376C08,
0x2748774C,
0x34B0BCB5,
49968 0x391C0CB3,
0x4ED8AA4A,
0x5B9CCA4F,
0x682E6FF3,
49969 0x748F82EE,
0x78A5636F,
0x84C87814,
0x8CC70208,
49970 0x90BEFFFA,
0xA4506CEB,
0xBEF9A3F7,
0xC67178F2
49973 var W = new Array(
64)
49975 function Sha256 () {
49978 this._w = W // new Array(
64)
49980 Hash.call(this,
64,
56)
49983 inherits(Sha256, Hash)
49985 Sha256.prototype.init = function () {
49986 this._a =
0x6a09e667
49987 this._b =
0xbb67ae85
49988 this._c =
0x3c6ef372
49989 this._d =
0xa54ff53a
49990 this._e =
0x510e527f
49991 this._f =
0x9b05688c
49992 this._g =
0x1f83d9ab
49993 this._h =
0x5be0cd19
49998 function ch (x, y, z) {
49999 return z ^ (x & (y ^ z))
50002 function maj (x, y, z) {
50003 return (x & y) | (z & (x | y))
50006 function sigma0 (x) {
50007 return (x
>>> 2 | x <<
30) ^ (x
>>> 13 | x <<
19) ^ (x
>>> 22 | x <<
10)
50010 function sigma1 (x) {
50011 return (x
>>> 6 | x <<
26) ^ (x
>>> 11 | x <<
21) ^ (x
>>> 25 | x <<
7)
50014 function gamma0 (x) {
50015 return (x
>>> 7 | x <<
25) ^ (x
>>> 18 | x <<
14) ^ (x
>>> 3)
50018 function gamma1 (x) {
50019 return (x
>>> 17 | x <<
15) ^ (x
>>> 19 | x <<
13) ^ (x
>>> 10)
50022 Sha256.prototype._update = function (M) {
50025 var a = this._a |
0
50026 var b = this._b |
0
50027 var c = this._c |
0
50028 var d = this._d |
0
50029 var e = this._e |
0
50030 var f = this._f |
0
50031 var g = this._g |
0
50032 var h = this._h |
0
50034 for (var i =
0; i <
16; ++i) W[i] = M.readInt32BE(i *
4)
50035 for (; i <
64; ++i) W[i] = (gamma1(W[i -
2]) + W[i -
7] + gamma0(W[i -
15]) + W[i -
16]) |
0
50037 for (var j =
0; j <
64; ++j) {
50038 var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) |
0
50039 var T2 = (sigma0(a) + maj(a, b, c)) |
0
50051 this._a = (a + this._a) |
0
50052 this._b = (b + this._b) |
0
50053 this._c = (c + this._c) |
0
50054 this._d = (d + this._d) |
0
50055 this._e = (e + this._e) |
0
50056 this._f = (f + this._f) |
0
50057 this._g = (g + this._g) |
0
50058 this._h = (h + this._h) |
0
50061 Sha256.prototype._hash = function () {
50062 var H = new Buffer(
32)
50064 H.writeInt32BE(this._a,
0)
50065 H.writeInt32BE(this._b,
4)
50066 H.writeInt32BE(this._c,
8)
50067 H.writeInt32BE(this._d,
12)
50068 H.writeInt32BE(this._e,
16)
50069 H.writeInt32BE(this._f,
20)
50070 H.writeInt32BE(this._g,
24)
50071 H.writeInt32BE(this._h,
28)
50076 module.exports = Sha256
50078 }).call(this,require(
"buffer").Buffer)
50079 },{
"./hash":
79,
"buffer":
5,
"inherits":
63}],
85:[function(require,module,exports){
50080 (function (Buffer){
50081 var inherits = require('inherits')
50082 var SHA512 = require('./sha512')
50083 var Hash = require('./hash')
50085 var W = new Array(
160)
50087 function Sha384 () {
50091 Hash.call(this,
128,
112)
50094 inherits(Sha384, SHA512)
50096 Sha384.prototype.init = function () {
50097 this._ah =
0xcbbb9d5d
50098 this._bh =
0x629a292a
50099 this._ch =
0x9159015a
50100 this._dh =
0x152fecd8
50101 this._eh =
0x67332667
50102 this._fh =
0x8eb44a87
50103 this._gh =
0xdb0c2e0d
50104 this._hh =
0x47b5481d
50106 this._al =
0xc1059ed8
50107 this._bl =
0x367cd507
50108 this._cl =
0x3070dd17
50109 this._dl =
0xf70e5939
50110 this._el =
0xffc00b31
50111 this._fl =
0x68581511
50112 this._gl =
0x64f98fa7
50113 this._hl =
0xbefa4fa4
50118 Sha384.prototype._hash = function () {
50119 var H = new Buffer(
48)
50121 function writeInt64BE (h, l, offset) {
50122 H.writeInt32BE(h, offset)
50123 H.writeInt32BE(l, offset +
4)
50126 writeInt64BE(this._ah, this._al,
0)
50127 writeInt64BE(this._bh, this._bl,
8)
50128 writeInt64BE(this._ch, this._cl,
16)
50129 writeInt64BE(this._dh, this._dl,
24)
50130 writeInt64BE(this._eh, this._el,
32)
50131 writeInt64BE(this._fh, this._fl,
40)
50136 module.exports = Sha384
50138 }).call(this,require(
"buffer").Buffer)
50139 },{
"./hash":
79,
"./sha512":
86,
"buffer":
5,
"inherits":
63}],
86:[function(require,module,exports){
50140 (function (Buffer){
50141 var inherits = require('inherits')
50142 var Hash = require('./hash')
50145 0x428a2f98,
0xd728ae22,
0x71374491,
0x23ef65cd,
50146 0xb5c0fbcf,
0xec4d3b2f,
0xe9b5dba5,
0x8189dbbc,
50147 0x3956c25b,
0xf348b538,
0x59f111f1,
0xb605d019,
50148 0x923f82a4,
0xaf194f9b,
0xab1c5ed5,
0xda6d8118,
50149 0xd807aa98,
0xa3030242,
0x12835b01,
0x45706fbe,
50150 0x243185be,
0x4ee4b28c,
0x550c7dc3,
0xd5ffb4e2,
50151 0x72be5d74,
0xf27b896f,
0x80deb1fe,
0x3b1696b1,
50152 0x9bdc06a7,
0x25c71235,
0xc19bf174,
0xcf692694,
50153 0xe49b69c1,
0x9ef14ad2,
0xefbe4786,
0x384f25e3,
50154 0x0fc19dc6,
0x8b8cd5b5,
0x240ca1cc,
0x77ac9c65,
50155 0x2de92c6f,
0x592b0275,
0x4a7484aa,
0x6ea6e483,
50156 0x5cb0a9dc,
0xbd41fbd4,
0x76f988da,
0x831153b5,
50157 0x983e5152,
0xee66dfab,
0xa831c66d,
0x2db43210,
50158 0xb00327c8,
0x98fb213f,
0xbf597fc7,
0xbeef0ee4,
50159 0xc6e00bf3,
0x3da88fc2,
0xd5a79147,
0x930aa725,
50160 0x06ca6351,
0xe003826f,
0x14292967,
0x0a0e6e70,
50161 0x27b70a85,
0x46d22ffc,
0x2e1b2138,
0x5c26c926,
50162 0x4d2c6dfc,
0x5ac42aed,
0x53380d13,
0x9d95b3df,
50163 0x650a7354,
0x8baf63de,
0x766a0abb,
0x3c77b2a8,
50164 0x81c2c92e,
0x47edaee6,
0x92722c85,
0x1482353b,
50165 0xa2bfe8a1,
0x4cf10364,
0xa81a664b,
0xbc423001,
50166 0xc24b8b70,
0xd0f89791,
0xc76c51a3,
0x0654be30,
50167 0xd192e819,
0xd6ef5218,
0xd6990624,
0x5565a910,
50168 0xf40e3585,
0x5771202a,
0x106aa070,
0x32bbd1b8,
50169 0x19a4c116,
0xb8d2d0c8,
0x1e376c08,
0x5141ab53,
50170 0x2748774c,
0xdf8eeb99,
0x34b0bcb5,
0xe19b48a8,
50171 0x391c0cb3,
0xc5c95a63,
0x4ed8aa4a,
0xe3418acb,
50172 0x5b9cca4f,
0x7763e373,
0x682e6ff3,
0xd6b2b8a3,
50173 0x748f82ee,
0x5defb2fc,
0x78a5636f,
0x43172f60,
50174 0x84c87814,
0xa1f0ab72,
0x8cc70208,
0x1a6439ec,
50175 0x90befffa,
0x23631e28,
0xa4506ceb,
0xde82bde9,
50176 0xbef9a3f7,
0xb2c67915,
0xc67178f2,
0xe372532b,
50177 0xca273ece,
0xea26619c,
0xd186b8c7,
0x21c0c207,
50178 0xeada7dd6,
0xcde0eb1e,
0xf57d4f7f,
0xee6ed178,
50179 0x06f067aa,
0x72176fba,
0x0a637dc5,
0xa2c898a6,
50180 0x113f9804,
0xbef90dae,
0x1b710b35,
0x131c471b,
50181 0x28db77f5,
0x23047d84,
0x32caab7b,
0x40c72493,
50182 0x3c9ebe0a,
0x15c9bebc,
0x431d67c4,
0x9c100d4c,
50183 0x4cc5d4be,
0xcb3e42b6,
0x597f299c,
0xfc657e2a,
50184 0x5fcb6fab,
0x3ad6faec,
0x6c44198c,
0x4a475817
50187 var W = new Array(
160)
50189 function Sha512 () {
50193 Hash.call(this,
128,
112)
50196 inherits(Sha512, Hash)
50198 Sha512.prototype.init = function () {
50199 this._ah =
0x6a09e667
50200 this._bh =
0xbb67ae85
50201 this._ch =
0x3c6ef372
50202 this._dh =
0xa54ff53a
50203 this._eh =
0x510e527f
50204 this._fh =
0x9b05688c
50205 this._gh =
0x1f83d9ab
50206 this._hh =
0x5be0cd19
50208 this._al =
0xf3bcc908
50209 this._bl =
0x84caa73b
50210 this._cl =
0xfe94f82b
50211 this._dl =
0x5f1d36f1
50212 this._el =
0xade682d1
50213 this._fl =
0x2b3e6c1f
50214 this._gl =
0xfb41bd6b
50215 this._hl =
0x137e2179
50220 function Ch (x, y, z) {
50221 return z ^ (x & (y ^ z))
50224 function maj (x, y, z) {
50225 return (x & y) | (z & (x | y))
50228 function sigma0 (x, xl) {
50229 return (x
>>> 28 | xl <<
4) ^ (xl
>>> 2 | x <<
30) ^ (xl
>>> 7 | x <<
25)
50232 function sigma1 (x, xl) {
50233 return (x
>>> 14 | xl <<
18) ^ (x
>>> 18 | xl <<
14) ^ (xl
>>> 9 | x <<
23)
50236 function Gamma0 (x, xl) {
50237 return (x
>>> 1 | xl <<
31) ^ (x
>>> 8 | xl <<
24) ^ (x
>>> 7)
50240 function Gamma0l (x, xl) {
50241 return (x
>>> 1 | xl <<
31) ^ (x
>>> 8 | xl <<
24) ^ (x
>>> 7 | xl <<
25)
50244 function Gamma1 (x, xl) {
50245 return (x
>>> 19 | xl <<
13) ^ (xl
>>> 29 | x <<
3) ^ (x
>>> 6)
50248 function Gamma1l (x, xl) {
50249 return (x
>>> 19 | xl <<
13) ^ (xl
>>> 29 | x <<
3) ^ (x
>>> 6 | xl <<
26)
50252 function getCarry (a, b) {
50253 return (a
>>> 0) < (b
>>> 0) ?
1 :
0
50256 Sha512.prototype._update = function (M) {
50259 var ah = this._ah |
0
50260 var bh = this._bh |
0
50261 var ch = this._ch |
0
50262 var dh = this._dh |
0
50263 var eh = this._eh |
0
50264 var fh = this._fh |
0
50265 var gh = this._gh |
0
50266 var hh = this._hh |
0
50268 var al = this._al |
0
50269 var bl = this._bl |
0
50270 var cl = this._cl |
0
50271 var dl = this._dl |
0
50272 var el = this._el |
0
50273 var fl = this._fl |
0
50274 var gl = this._gl |
0
50275 var hl = this._hl |
0
50277 for (var i =
0; i <
32; i +=
2) {
50278 W[i] = M.readInt32BE(i *
4)
50279 W[i +
1] = M.readInt32BE(i *
4 +
4)
50281 for (; i <
160; i +=
2) {
50282 var xh = W[i -
15 *
2]
50283 var xl = W[i -
15 *
2 +
1]
50284 var gamma0 = Gamma0(xh, xl)
50285 var gamma0l = Gamma0l(xl, xh)
50288 xl = W[i -
2 *
2 +
1]
50289 var gamma1 = Gamma1(xh, xl)
50290 var gamma1l = Gamma1l(xl, xh)
50292 // W[i] = gamma0 + W[i -
7] + gamma1 + W[i -
16]
50293 var Wi7h = W[i -
7 *
2]
50294 var Wi7l = W[i -
7 *
2 +
1]
50296 var Wi16h = W[i -
16 *
2]
50297 var Wi16l = W[i -
16 *
2 +
1]
50299 var Wil = (gamma0l + Wi7l) |
0
50300 var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) |
0
50301 Wil = (Wil + gamma1l) |
0
50302 Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) |
0
50303 Wil = (Wil + Wi16l) |
0
50304 Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) |
0
50310 for (var j =
0; j <
160; j +=
2) {
50314 var majh = maj(ah, bh, ch)
50315 var majl = maj(al, bl, cl)
50317 var sigma0h = sigma0(ah, al)
50318 var sigma0l = sigma0(al, ah)
50319 var sigma1h = sigma1(eh, el)
50320 var sigma1l = sigma1(el, eh)
50322 // t1 = h + sigma1 + ch + K[j] + W[j]
50326 var chh = Ch(eh, fh, gh)
50327 var chl = Ch(el, fl, gl)
50329 var t1l = (hl + sigma1l) |
0
50330 var t1h = (hh + sigma1h + getCarry(t1l, hl)) |
0
50331 t1l = (t1l + chl) |
0
50332 t1h = (t1h + chh + getCarry(t1l, chl)) |
0
50333 t1l = (t1l + Kil) |
0
50334 t1h = (t1h + Kih + getCarry(t1l, Kil)) |
0
50335 t1l = (t1l + Wil) |
0
50336 t1h = (t1h + Wih + getCarry(t1l, Wil)) |
0
50338 // t2 = sigma0 + maj
50339 var t2l = (sigma0l + majl) |
0
50340 var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) |
0
50348 el = (dl + t1l) |
0
50349 eh = (dh + t1h + getCarry(el, dl)) |
0
50356 al = (t1l + t2l) |
0
50357 ah = (t1h + t2h + getCarry(al, t1l)) |
0
50360 this._al = (this._al + al) |
0
50361 this._bl = (this._bl + bl) |
0
50362 this._cl = (this._cl + cl) |
0
50363 this._dl = (this._dl + dl) |
0
50364 this._el = (this._el + el) |
0
50365 this._fl = (this._fl + fl) |
0
50366 this._gl = (this._gl + gl) |
0
50367 this._hl = (this._hl + hl) |
0
50369 this._ah = (this._ah + ah + getCarry(this._al, al)) |
0
50370 this._bh = (this._bh + bh + getCarry(this._bl, bl)) |
0
50371 this._ch = (this._ch + ch + getCarry(this._cl, cl)) |
0
50372 this._dh = (this._dh + dh + getCarry(this._dl, dl)) |
0
50373 this._eh = (this._eh + eh + getCarry(this._el, el)) |
0
50374 this._fh = (this._fh + fh + getCarry(this._fl, fl)) |
0
50375 this._gh = (this._gh + gh + getCarry(this._gl, gl)) |
0
50376 this._hh = (this._hh + hh + getCarry(this._hl, hl)) |
0
50379 Sha512.prototype._hash = function () {
50380 var H = new Buffer(
64)
50382 function writeInt64BE (h, l, offset) {
50383 H.writeInt32BE(h, offset)
50384 H.writeInt32BE(l, offset +
4)
50387 writeInt64BE(this._ah, this._al,
0)
50388 writeInt64BE(this._bh, this._bl,
8)
50389 writeInt64BE(this._ch, this._cl,
16)
50390 writeInt64BE(this._dh, this._dl,
24)
50391 writeInt64BE(this._eh, this._el,
32)
50392 writeInt64BE(this._fh, this._fl,
40)
50393 writeInt64BE(this._gh, this._gl,
48)
50394 writeInt64BE(this._hh, this._hl,
56)
50399 module.exports = Sha512
50401 }).call(this,require(
"buffer").Buffer)
50402 },{
"./hash":
79,
"buffer":
5,
"inherits":
63}],
87:[function(require,module,exports){
50403 var isHexPrefixed = require('is-hex-prefixed');
50406 * Removes '
0x' from a given `String` is present
50407 * @param {String} str the string value
50408 * @return {String|Optional} a string by pass if necessary
50410 module.exports = function stripHexPrefix(str) {
50411 if (typeof str !== 'string') {
50415 return isHexPrefixed(str) ? str.slice(
2) : str;
50418 },{
"is-hex-prefixed":
64}]},{},[
31])(
31)
50420 <script>function convertRippleAdrr(address) {
50421 return window.basex('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz').encode(
50422 window.basex('
123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz').decode(address)
50426 function convertRipplePriv(priv) {
50427 return window.basex('
123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz').decode(priv).toString("hex").slice(
2,
66)
50431 <script>// Select components from sjcl to suit the crypto operations bip39 requires.
50435 /** @fileOverview Javascript cryptography implementation.
50437 * Crush to remove comments, shorten variable names and
50438 * generally reduce transmission size.
50440 * @author Emily Stark
50441 * @author Mike Hamburg
50442 * @author Dan Boneh
50446 /*jslint indent:
2, bitwise: false, nomen: false, plusplus: false, white: false, regexp: false */
50447 /*global document, window, escape, unescape, module, require, Uint32Array */
50449 /** @namespace The Stanford Javascript Crypto Library, top-level namespace. */
50451 /** @namespace Symmetric ciphers. */
50454 /** @namespace Hash functions. Right now only SHA256 is implemented. */
50457 /** @namespace Key exchange functions. Right now only SRP is implemented. */
50460 /** @namespace Block cipher modes of operation. */
50463 /** @namespace Miscellaneous. HMAC and PBKDF2. */
50467 * @namespace Bit array encoders and decoders.
50470 * The members of this namespace are functions which translate between
50471 * SJCL's bitArrays and other objects (usually strings). Because it
50472 * isn't always clear which direction is encoding and which is decoding,
50473 * the method names are "fromBits" and "toBits".
50477 /** @namespace Exceptions. */
50479 /** @constructor Ciphertext is corrupt. */
50480 corrupt: function(message) {
50481 this.toString = function() { return "CORRUPT: "+this.message; };
50482 this.message = message;
50485 /** @constructor Invalid parameter. */
50486 invalid: function(message) {
50487 this.toString = function() { return "INVALID: "+this.message; };
50488 this.message = message;
50491 /** @constructor Bug or missing feature in SJCL. @constructor */
50492 bug: function(message) {
50493 this.toString = function() { return "BUG: "+this.message; };
50494 this.message = message;
50497 /** @constructor Something isn't ready. */
50498 notReady: function(message) {
50499 this.toString = function() { return "NOT READY: "+this.message; };
50500 this.message = message;
50505 if(typeof module !== 'undefined' && module.exports){
50506 module.exports = sjcl;
50508 if (typeof define === "function") {
50509 define([], function () {
50517 /** @fileOverview Arrays of bits, encoded as arrays of Numbers.
50519 * @author Emily Stark
50520 * @author Mike Hamburg
50521 * @author Dan Boneh
50524 /** @namespace Arrays of bits, encoded as arrays of Numbers.
50528 * These objects are the currency accepted by SJCL's crypto functions.
50532 * Most of our crypto primitives operate on arrays of
4-byte words internally,
50533 * but many of them can take arguments that are not a multiple of
4 bytes.
50534 * This library encodes arrays of bits (whose size need not be a multiple of
8
50535 * bits) as arrays of
32-bit words. The bits are packed, big-endian, into an
50536 * array of words,
32 bits at a time. Since the words are double-precision
50537 * floating point numbers, they fit some extra data. We use this (in a private,
50538 * possibly-changing manner) to encode the number of bits actually present
50539 * in the last word of the array.
50543 * Because bitwise ops clear this out-of-band data, these arrays can be passed
50544 * to ciphers like AES which want arrays of words.
50549 * Array slices in units of bits.
50550 * @param {bitArray} a The array to slice.
50551 * @param {Number} bstart The offset to the start of the slice, in bits.
50552 * @param {Number} bend The offset to the end of the slice, in bits. If this is undefined,
50553 * slice until the end of the array.
50554 * @return {bitArray} The requested slice.
50556 bitSlice: function (a, bstart, bend) {
50557 a = sjcl.bitArray._shiftRight(a.slice(bstart/
32),
32 - (bstart &
31)).slice(
1);
50558 return (bend === undefined) ? a : sjcl.bitArray.clamp(a, bend-bstart);
50562 * Extract a number packed into a bit array.
50563 * @param {bitArray} a The array to slice.
50564 * @param {Number} bstart The offset to the start of the slice, in bits.
50565 * @param {Number} length The length of the number to extract.
50566 * @return {Number} The requested slice.
50568 extract: function(a, bstart, blength) {
50569 // FIXME: this Math.floor is not necessary at all, but for some reason
50570 // seems to suppress a bug in the Chromium JIT.
50571 var x, sh = Math.floor((-bstart-blength) &
31);
50572 if ((bstart + blength -
1 ^ bstart) & -
32) {
50573 // it crosses a boundary
50574 x = (a[bstart/
32|
0] << (
32 - sh)) ^ (a[bstart/
32+
1|
0]
>>> sh);
50576 // within a single word
50577 x = a[bstart/
32|
0]
>>> sh;
50579 return x & ((
1<
<blength) -
1);
50583 * Concatenate two bit arrays.
50584 * @param {bitArray} a1 The first array.
50585 * @param {bitArray} a2 The second array.
50586 * @return {bitArray} The concatenation of a1 and a2.
50588 concat: function (a1, a2) {
50589 if (a1.length ===
0 || a2.length ===
0) {
50590 return a1.concat(a2);
50593 var last = a1[a1.length-
1], shift = sjcl.bitArray.getPartial(last);
50594 if (shift ===
32) {
50595 return a1.concat(a2);
50597 return sjcl.bitArray._shiftRight(a2, shift, last|
0, a1.slice(
0,a1.length-
1));
50602 * Find the length of an array of bits.
50603 * @param {bitArray} a The array.
50604 * @return {Number} The length of a, in bits.
50606 bitLength: function (a) {
50607 var l = a.length, x;
50608 if (l ===
0) { return
0; }
50610 return (l-
1) *
32 + sjcl.bitArray.getPartial(x);
50614 * Truncate an array.
50615 * @param {bitArray} a The array.
50616 * @param {Number} len The length to truncate to, in bits.
50617 * @return {bitArray} A new array, truncated to len bits.
50619 clamp: function (a, len) {
50620 if (a.length *
32 < len) { return a; }
50621 a = a.slice(
0, Math.ceil(len /
32));
50624 if (l
> 0 && len) {
50625 a[l-
1] = sjcl.bitArray.partial(len, a[l-
1] &
0x80000000 >> (len-
1),
1);
50631 * Make a partial word for a bit array.
50632 * @param {Number} len The number of bits in the word.
50633 * @param {Number} x The bits.
50634 * @param {Number} [
0] _end Pass
1 if x has already been shifted to the high side.
50635 * @return {Number} The partial word.
50637 partial: function (len, x, _end) {
50638 if (len ===
32) { return x; }
50639 return (_end ? x|
0 : x << (
32-len)) + len *
0x10000000000;
50643 * Get the number of bits used by a partial word.
50644 * @param {Number} x The partial word.
50645 * @return {Number} The number of bits used by the partial word.
50647 getPartial: function (x) {
50648 return Math.round(x/
0x10000000000) ||
32;
50652 * Compare two arrays for equality in a predictable amount of time.
50653 * @param {bitArray} a The first array.
50654 * @param {bitArray} b The second array.
50655 * @return {boolean} true if a == b; false otherwise.
50657 equal: function (a, b) {
50658 if (sjcl.bitArray.bitLength(a) !== sjcl.bitArray.bitLength(b)) {
50662 for (i=
0; i
<a.length; i++) {
50668 /** Shift an array right.
50669 * @param {bitArray} a The array to shift.
50670 * @param {Number} shift The number of bits to shift.
50671 * @param {Number} [carry=
0] A byte to carry in
50672 * @param {bitArray} [out=[]] An array to prepend to the output.
50675 _shiftRight: function (a, shift, carry, out) {
50676 var i, last2=
0, shift2;
50677 if (out === undefined) { out = []; }
50679 for (; shift
>=
32; shift -=
32) {
50684 return out.concat(a);
50687 for (i=
0; i
<a.length; i++) {
50688 out.push(carry | a[i]
>>>shift);
50689 carry = a[i] << (
32-shift);
50691 last2 = a.length ? a[a.length-
1] :
0;
50692 shift2 = sjcl.bitArray.getPartial(last2);
50693 out.push(sjcl.bitArray.partial(shift+shift2 &
31, (shift + shift2
> 32) ? carry : out.pop(),
1));
50697 /** xor a block of
4 words together.
50700 _xor4: function(x,y) {
50701 return [x[
0]^y[
0],x[
1]^y[
1],x[
2]^y[
2],x[
3]^y[
3]];
50704 /** byteswap a word array inplace.
50705 * (does not handle partial words)
50706 * @param {sjcl.bitArray} a word array
50707 * @return {sjcl.bitArray} byteswapped array
50709 byteswapM: function(a) {
50710 var i, v, m =
0xff00;
50711 for (i =
0; i < a.length; ++i) {
50713 a[i] = (v
>>> 24) | ((v
>>> 8) & m) | ((v & m) <<
8) | (v <<
24);
50720 //// codecString.js
50722 /** @fileOverview Bit array codec implementations.
50724 * @author Emily Stark
50725 * @author Mike Hamburg
50726 * @author Dan Boneh
50729 /** @namespace UTF-
8 strings */
50730 sjcl.codec.utf8String = {
50731 /** Convert from a bitArray to a UTF-
8 string. */
50732 fromBits: function (arr) {
50733 var out =
"", bl = sjcl.bitArray.bitLength(arr), i, tmp;
50734 for (i=
0; i
<bl/
8; i++) {
50738 out += String.fromCharCode(tmp
>>> 24);
50741 return decodeURIComponent(escape(out));
50744 /** Convert from a UTF-
8 string to a bitArray. */
50745 toBits: function (str) {
50746 str = unescape(encodeURIComponent(str));
50747 var out = [], i, tmp=
0;
50748 for (i=
0; i
<str.length; i++) {
50749 tmp = tmp <<
8 | str.charCodeAt(i);
50756 out.push(sjcl.bitArray.partial(
8*(i&
3), tmp));
50765 /** @fileOverview Bit array codec implementations.
50767 * @author Emily Stark
50768 * @author Mike Hamburg
50769 * @author Dan Boneh
50772 /** @namespace Hexadecimal */
50774 /** Convert from a bitArray to a hex string. */
50775 fromBits: function (arr) {
50777 for (i=
0; i
<arr.length; i++) {
50778 out += ((arr[i]|
0)+
0xF00000000000).toString(
16).substr(
4);
50780 return out.substr(
0, sjcl.bitArray.bitLength(arr)/
4);//.replace(/(.{
8})/g,
"$1 ");
50782 /** Convert from a hex string to a bitArray. */
50783 toBits: function (str) {
50784 var i, out=[], len;
50785 str = str.replace(/\s|
0x/g,
"");
50787 str = str +
"00000000";
50788 for (i=
0; i
<str.length; i+=
8) {
50789 out.push(parseInt(str.substr(i,
8),
16)^
0);
50791 return sjcl.bitArray.clamp(out, len*
4);
50798 /** @fileOverview Javascript SHA-
512 implementation.
50800 * This implementation was written for CryptoJS by Jeff Mott and adapted for
50801 * SJCL by Stefan Thomas.
50803 * CryptoJS (c)
2009–
2012 by Jeff Mott. All rights reserved.
50804 * Released with New BSD License
50806 * @author Emily Stark
50807 * @author Mike Hamburg
50808 * @author Dan Boneh
50809 * @author Jeff Mott
50810 * @author Stefan Thomas
50814 * Context for a SHA-
512 operation in progress.
50816 * @class Secure Hash Algorithm,
512 bits.
50818 sjcl.hash.sha512 = function (hash) {
50819 if (!this._key[
0]) { this._precompute(); }
50821 this._h = hash._h.slice(
0);
50822 this._buffer = hash._buffer.slice(
0);
50823 this._length = hash._length;
50830 * Hash a string or an array of words.
50832 * @param {bitArray|String} data the data to hash.
50833 * @return {bitArray} The hash value, an array of
16 big-endian words.
50835 sjcl.hash.sha512.hash = function (data) {
50836 return (new sjcl.hash.sha512()).update(data).finalize();
50839 sjcl.hash.sha512.prototype = {
50841 * The hash's block size, in bits.
50847 * Reset the hash state.
50850 reset:function () {
50851 this._h = this._init.slice(
0);
50858 * Input several words to the hash.
50859 * @param {bitArray|String} data the data to hash.
50862 update: function (data) {
50863 if (typeof data ===
"string") {
50864 data = sjcl.codec.utf8String.toBits(data);
50866 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
50868 nl = this._length = ol + sjcl.bitArray.bitLength(data);
50869 for (i =
1024+ol & -
1024; i <= nl; i+=
1024) {
50870 this._block(b.splice(
0,
32));
50876 * Complete hashing and output the hash value.
50877 * @return {bitArray} The hash value, an array of
16 big-endian words.
50879 finalize:function () {
50880 var i, b = this._buffer, h = this._h;
50882 // Round out and push the buffer
50883 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(
1,
1)]);
50885 // Round out the buffer to a multiple of
32 words, less the
4 length words.
50886 for (i = b.length +
4; i &
31; i++) {
50890 // append the length
50893 b.push(Math.floor(this._length /
0x100000000));
50894 b.push(this._length |
0);
50897 this._block(b.splice(
0,
32));
50905 * The SHA-
512 initialization vector, to be precomputed.
50911 * Least significant
24 bits of SHA512 initialization values.
50913 * Javascript only has
53 bits of precision, so we compute the
40 most
50914 * significant bits and add the remaining
24 bits as constants.
50918 _initr: [
0xbcc908,
0xcaa73b,
0x94f82b,
0x1d36f1,
0xe682d1,
0x3e6c1f,
0x41bd6b,
0x7e2179 ],
50922 [
0x6a09e667,
0xf3bcc908,
0xbb67ae85,
0x84caa73b,
0x3c6ef372,
0xfe94f82b,
0xa54ff53a,
0x5f1d36f1,
50923 0x510e527f,
0xade682d1,
0x9b05688c,
0x2b3e6c1f,
0x1f83d9ab,
0xfb41bd6b,
0x5be0cd19,
0x137e2179],
50927 * The SHA-
512 hash key, to be precomputed.
50933 * Least significant
24 bits of SHA512 key values.
50937 [
0x28ae22,
0xef65cd,
0x4d3b2f,
0x89dbbc,
0x48b538,
0x05d019,
0x194f9b,
0x6d8118,
50938 0x030242,
0x706fbe,
0xe4b28c,
0xffb4e2,
0x7b896f,
0x1696b1,
0xc71235,
0x692694,
50939 0xf14ad2,
0x4f25e3,
0x8cd5b5,
0xac9c65,
0x2b0275,
0xa6e483,
0x41fbd4,
0x1153b5,
50940 0x66dfab,
0xb43210,
0xfb213f,
0xef0ee4,
0xa88fc2,
0x0aa725,
0x03826f,
0x0e6e70,
50941 0xd22ffc,
0x26c926,
0xc42aed,
0x95b3df,
0xaf63de,
0x77b2a8,
0xedaee6,
0x82353b,
50942 0xf10364,
0x423001,
0xf89791,
0x54be30,
0xef5218,
0x65a910,
0x71202a,
0xbbd1b8,
50943 0xd2d0c8,
0x41ab53,
0x8eeb99,
0x9b48a8,
0xc95a63,
0x418acb,
0x63e373,
0xb2b8a3,
50944 0xefb2fc,
0x172f60,
0xf0ab72,
0x6439ec,
0x631e28,
0x82bde9,
0xc67915,
0x72532b,
50945 0x26619c,
0xc0c207,
0xe0eb1e,
0x6ed178,
0x176fba,
0xc898a6,
0xf90dae,
0x1c471b,
50946 0x047d84,
0xc72493,
0xc9bebc,
0x100d4c,
0x3e42b6,
0x657e2a,
0xd6faec,
0x475817],
50950 [
0x428a2f98,
0xd728ae22,
0x71374491,
0x23ef65cd,
0xb5c0fbcf,
0xec4d3b2f,
0xe9b5dba5,
0x8189dbbc,
50951 0x3956c25b,
0xf348b538,
0x59f111f1,
0xb605d019,
0x923f82a4,
0xaf194f9b,
0xab1c5ed5,
0xda6d8118,
50952 0xd807aa98,
0xa3030242,
0x12835b01,
0x45706fbe,
0x243185be,
0x4ee4b28c,
0x550c7dc3,
0xd5ffb4e2,
50953 0x72be5d74,
0xf27b896f,
0x80deb1fe,
0x3b1696b1,
0x9bdc06a7,
0x25c71235,
0xc19bf174,
0xcf692694,
50954 0xe49b69c1,
0x9ef14ad2,
0xefbe4786,
0x384f25e3,
0x0fc19dc6,
0x8b8cd5b5,
0x240ca1cc,
0x77ac9c65,
50955 0x2de92c6f,
0x592b0275,
0x4a7484aa,
0x6ea6e483,
0x5cb0a9dc,
0xbd41fbd4,
0x76f988da,
0x831153b5,
50956 0x983e5152,
0xee66dfab,
0xa831c66d,
0x2db43210,
0xb00327c8,
0x98fb213f,
0xbf597fc7,
0xbeef0ee4,
50957 0xc6e00bf3,
0x3da88fc2,
0xd5a79147,
0x930aa725,
0x06ca6351,
0xe003826f,
0x14292967,
0x0a0e6e70,
50958 0x27b70a85,
0x46d22ffc,
0x2e1b2138,
0x5c26c926,
0x4d2c6dfc,
0x5ac42aed,
0x53380d13,
0x9d95b3df,
50959 0x650a7354,
0x8baf63de,
0x766a0abb,
0x3c77b2a8,
0x81c2c92e,
0x47edaee6,
0x92722c85,
0x1482353b,
50960 0xa2bfe8a1,
0x4cf10364,
0xa81a664b,
0xbc423001,
0xc24b8b70,
0xd0f89791,
0xc76c51a3,
0x0654be30,
50961 0xd192e819,
0xd6ef5218,
0xd6990624,
0x5565a910,
0xf40e3585,
0x5771202a,
0x106aa070,
0x32bbd1b8,
50962 0x19a4c116,
0xb8d2d0c8,
0x1e376c08,
0x5141ab53,
0x2748774c,
0xdf8eeb99,
0x34b0bcb5,
0xe19b48a8,
50963 0x391c0cb3,
0xc5c95a63,
0x4ed8aa4a,
0xe3418acb,
0x5b9cca4f,
0x7763e373,
0x682e6ff3,
0xd6b2b8a3,
50964 0x748f82ee,
0x5defb2fc,
0x78a5636f,
0x43172f60,
0x84c87814,
0xa1f0ab72,
0x8cc70208,
0x1a6439ec,
50965 0x90befffa,
0x23631e28,
0xa4506ceb,
0xde82bde9,
0xbef9a3f7,
0xb2c67915,
0xc67178f2,
0xe372532b,
50966 0xca273ece,
0xea26619c,
0xd186b8c7,
0x21c0c207,
0xeada7dd6,
0xcde0eb1e,
0xf57d4f7f,
0xee6ed178,
50967 0x06f067aa,
0x72176fba,
0x0a637dc5,
0xa2c898a6,
0x113f9804,
0xbef90dae,
0x1b710b35,
0x131c471b,
50968 0x28db77f5,
0x23047d84,
0x32caab7b,
0x40c72493,
0x3c9ebe0a,
0x15c9bebc,
0x431d67c4,
0x9c100d4c,
50969 0x4cc5d4be,
0xcb3e42b6,
0x597f299c,
0xfc657e2a,
0x5fcb6fab,
0x3ad6faec,
0x6c44198c,
0x4a475817],
50973 * Function to precompute _init and _key.
50976 _precompute: function () {
50977 // XXX: This code is for precomputing the SHA256 constants, change for
50978 // SHA512 and re-enable.
50979 var i =
0, prime =
2, factor;
50981 function frac(x) { return (x-Math.floor(x)) *
0x100000000 |
0; }
50982 function frac2(x) { return (x-Math.floor(x)) *
0x10000000000 &
0xff; }
50984 outer: for (; i
<80; prime++) {
50985 for (factor=
2; factor*factor <= prime; factor++) {
50986 if (prime % factor ===
0) {
50993 this._init[i*
2] = frac(Math.pow(prime,
1/
2));
50994 this._init[i*
2+
1] = (frac2(Math.pow(prime,
1/
2)) <<
24) | this._initr[i];
50996 this._key[i*
2] = frac(Math.pow(prime,
1/
3));
50997 this._key[i*
2+
1] = (frac2(Math.pow(prime,
1/
3)) <<
24) | this._keyr[i];
51003 * Perform one cycle of SHA-
512.
51004 * @param {bitArray} words one block of words.
51007 _block:function (words) {
51009 w = words.slice(
0),
51012 h0h = h[
0], h0l = h[
1], h1h = h[
2], h1l = h[
3],
51013 h2h = h[
4], h2l = h[
5], h3h = h[
6], h3l = h[
7],
51014 h4h = h[
8], h4l = h[
9], h5h = h[
10], h5l = h[
11],
51015 h6h = h[
12], h6l = h[
13], h7h = h[
14], h7l = h[
15];
51017 // Working variables
51018 var ah = h0h, al = h0l, bh = h1h, bl = h1l,
51019 ch = h2h, cl = h2l, dh = h3h, dl = h3l,
51020 eh = h4h, el = h4l, fh = h5h, fl = h5l,
51021 gh = h6h, gl = h6l, hh = h7h, hl = h7l;
51023 for (i=
0; i
<80; i++) {
51024 // load up the input word for this round
51027 wrl = w[i *
2 +
1];
51030 var gamma0xh = w[(i-
15) *
2];
51031 var gamma0xl = w[(i-
15) *
2 +
1];
51033 ((gamma0xl <<
31) | (gamma0xh
>>> 1)) ^
51034 ((gamma0xl <<
24) | (gamma0xh
>>> 8)) ^
51037 ((gamma0xh <<
31) | (gamma0xl
>>> 1)) ^
51038 ((gamma0xh <<
24) | (gamma0xl
>>> 8)) ^
51039 ((gamma0xh <<
25) | (gamma0xl
>>> 7));
51042 var gamma1xh = w[(i-
2) *
2];
51043 var gamma1xl = w[(i-
2) *
2 +
1];
51045 ((gamma1xl <<
13) | (gamma1xh
>>> 19)) ^
51046 ((gamma1xh <<
3) | (gamma1xl
>>> 29)) ^
51049 ((gamma1xh <<
13) | (gamma1xl
>>> 19)) ^
51050 ((gamma1xl <<
3) | (gamma1xh
>>> 29)) ^
51051 ((gamma1xh <<
26) | (gamma1xl
>>> 6));
51054 var wr7h = w[(i-
7) *
2];
51055 var wr7l = w[(i-
7) *
2 +
1];
51057 var wr16h = w[(i-
16) *
2];
51058 var wr16l = w[(i-
16) *
2 +
1];
51060 // W(round) = gamma0 + W(round -
7) + gamma1 + W(round -
16)
51061 wrl = gamma0l + wr7l;
51062 wrh = gamma0h + wr7h + ((wrl
>>> 0) < (gamma0l
>>> 0) ?
1 :
0);
51064 wrh += gamma1h + ((wrl
>>> 0) < (gamma1l
>>> 0) ?
1 :
0);
51066 wrh += wr16h + ((wrl
>>> 0) < (wr16l
>>> 0) ?
1 :
0);
51070 w[i*
2 +
1] = wrl |=
0;
51073 var chh = (eh & fh) ^ (~eh & gh);
51074 var chl = (el & fl) ^ (~el & gl);
51077 var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);
51078 var majl = (al & bl) ^ (al & cl) ^ (bl & cl);
51081 var sigma0h = ((al <<
4) | (ah
>>> 28)) ^ ((ah <<
30) | (al
>>> 2)) ^ ((ah <<
25) | (al
>>> 7));
51082 var sigma0l = ((ah <<
4) | (al
>>> 28)) ^ ((al <<
30) | (ah
>>> 2)) ^ ((al <<
25) | (ah
>>> 7));
51085 var sigma1h = ((el <<
18) | (eh
>>> 14)) ^ ((el <<
14) | (eh
>>> 18)) ^ ((eh <<
23) | (el
>>> 9));
51086 var sigma1l = ((eh <<
18) | (el
>>> 14)) ^ ((eh <<
14) | (el
>>> 18)) ^ ((el <<
23) | (eh
>>> 9));
51090 var krl = k[i*
2+
1];
51092 // t1 = h + sigma1 + ch + K(round) + W(round)
51093 var t1l = hl + sigma1l;
51094 var t1h = hh + sigma1h + ((t1l
>>> 0) < (hl
>>> 0) ?
1 :
0);
51096 t1h += chh + ((t1l
>>> 0) < (chl
>>> 0) ?
1 :
0);
51098 t1h += krh + ((t1l
>>> 0) < (krl
>>> 0) ?
1 :
0);
51099 t1l = t1l + wrl|
0; // FF32..FF34 perf issue https://bugzilla.mozilla.org/show_bug.cgi?id=
1054972
51100 t1h += wrh + ((t1l
>>> 0) < (wrl
>>> 0) ?
1 :
0);
51102 // t2 = sigma0 + maj
51103 var t2l = sigma0l + majl;
51104 var t2h = sigma0h + majh + ((t2l
>>> 0) < (sigma0l
>>> 0) ?
1 :
0);
51106 // Update working variables
51113 el = (dl + t1l) |
0;
51114 eh = (dh + t1h + ((el
>>> 0) < (dl
>>> 0) ?
1 :
0)) |
0;
51121 al = (t1l + t2l) |
0;
51122 ah = (t1h + t2h + ((al
>>> 0) < (t1l
>>> 0) ?
1 :
0)) |
0;
51125 // Intermediate hash
51126 h0l = h[
1] = (h0l + al) |
0;
51127 h[
0] = (h0h + ah + ((h0l
>>> 0) < (al
>>> 0) ?
1 :
0)) |
0;
51128 h1l = h[
3] = (h1l + bl) |
0;
51129 h[
2] = (h1h + bh + ((h1l
>>> 0) < (bl
>>> 0) ?
1 :
0)) |
0;
51130 h2l = h[
5] = (h2l + cl) |
0;
51131 h[
4] = (h2h + ch + ((h2l
>>> 0) < (cl
>>> 0) ?
1 :
0)) |
0;
51132 h3l = h[
7] = (h3l + dl) |
0;
51133 h[
6] = (h3h + dh + ((h3l
>>> 0) < (dl
>>> 0) ?
1 :
0)) |
0;
51134 h4l = h[
9] = (h4l + el) |
0;
51135 h[
8] = (h4h + eh + ((h4l
>>> 0) < (el
>>> 0) ?
1 :
0)) |
0;
51136 h5l = h[
11] = (h5l + fl) |
0;
51137 h[
10] = (h5h + fh + ((h5l
>>> 0) < (fl
>>> 0) ?
1 :
0)) |
0;
51138 h6l = h[
13] = (h6l + gl) |
0;
51139 h[
12] = (h6h + gh + ((h6l
>>> 0) < (gl
>>> 0) ?
1 :
0)) |
0;
51140 h7l = h[
15] = (h7l + hl) |
0;
51141 h[
14] = (h7h + hh + ((h7l
>>> 0) < (hl
>>> 0) ?
1 :
0)) |
0;
51148 /** @fileOverview HMAC implementation.
51150 * @author Emily Stark
51151 * @author Mike Hamburg
51152 * @author Dan Boneh
51155 /** HMAC with the specified hash function.
51157 * @param {bitArray} key the key for HMAC.
51158 * @param {Object} [hash=sjcl.hash.sha256] The hash function to use.
51160 sjcl.misc.hmac = function (key, Hash) {
51161 this._hash = Hash = Hash || sjcl.hash.sha256;
51162 var exKey = [[],[]], i,
51163 bs = Hash.prototype.blockSize /
32;
51164 this._baseHash = [new Hash(), new Hash()];
51166 if (key.length
> bs) {
51167 key = Hash.hash(key);
51170 for (i=
0; i
<bs; i++) {
51171 exKey[
0][i] = key[i]^
0x36363636;
51172 exKey[
1][i] = key[i]^
0x5C5C5C5C;
51175 this._baseHash[
0].update(exKey[
0]);
51176 this._baseHash[
1].update(exKey[
1]);
51177 this._resultHash = new Hash(this._baseHash[
0]);
51180 /** HMAC with the specified hash function. Also called encrypt since it's a prf.
51181 * @param {bitArray|String} data The data to mac.
51183 sjcl.misc.hmac.prototype.encrypt = sjcl.misc.hmac.prototype.mac = function (data) {
51184 if (!this._updated) {
51186 return this.digest(data);
51188 throw new sjcl.exception.invalid(
"encrypt on already updated hmac called!");
51192 sjcl.misc.hmac.prototype.reset = function () {
51193 this._resultHash = new this._hash(this._baseHash[
0]);
51194 this._updated = false;
51197 sjcl.misc.hmac.prototype.update = function (data) {
51198 this._updated = true;
51199 this._resultHash.update(data);
51202 sjcl.misc.hmac.prototype.digest = function () {
51203 var w = this._resultHash.finalize(), result = new (this._hash)(this._baseHash[
1]).update(w).finalize();
51214 /** @fileOverview Password-based key-derivation function, version
2.0.
51216 * @author Emily Stark
51217 * @author Mike Hamburg
51218 * @author Dan Boneh
51221 /** Password-Based Key-Derivation Function, version
2.0.
51223 * Generate keys from passwords using PBKDF2-HMAC-SHA256.
51225 * This is the method specified by RSA's PKCS #
5 standard.
51227 * @param {bitArray|String} password The password.
51228 * @param {bitArray|String} salt The salt. Should have lots of entropy.
51229 * @param {Number} [count=
1000] The number of iterations. Higher numbers make the function slower but more secure.
51230 * @param {Number} [length] The length of the derived key. Defaults to the
51231 output size of the hash function.
51232 * @param {Object} [Prff=sjcl.misc.hmac] The pseudorandom function family.
51233 * @return {bitArray} the derived key.
51235 sjcl.misc.pbkdf2 = function (password, salt, count, length, Prff) {
51236 count = count ||
1000;
51238 if (length <
0 || count <
0) {
51239 throw sjcl.exception.invalid(
"invalid params to pbkdf2");
51242 if (typeof password ===
"string") {
51243 password = sjcl.codec.utf8String.toBits(password);
51246 if (typeof salt ===
"string") {
51247 salt = sjcl.codec.utf8String.toBits(salt);
51250 Prff = Prff || sjcl.misc.hmac;
51252 var prf = new Prff(password),
51253 u, ui, i, j, k, out = [], b = sjcl.bitArray;
51255 for (k =
1;
32 * out.length < (length ||
1); k++) {
51256 u = ui = prf.encrypt(b.concat(salt,[k]));
51258 for (i=
1; i
<count; i++) {
51259 ui = prf.encrypt(ui);
51260 for (j=
0; j
<ui.length; j++) {
51265 out = out.concat(u);
51268 if (length) { out = b.clamp(out, length); }
51276 /** @fileOverview Javascript SHA-
256 implementation.
51278 * An older version of this implementation is available in the public
51279 * domain, but this one is (c) Emily Stark, Mike Hamburg, Dan Boneh,
51280 * Stanford University
2008-
2010 and BSD-licensed for liability
51283 * Special thanks to Aldo Cortesi for pointing out several bugs in
51286 * @author Emily Stark
51287 * @author Mike Hamburg
51288 * @author Dan Boneh
51292 * Context for a SHA-
256 operation in progress.
51294 * @class Secure Hash Algorithm,
256 bits.
51296 sjcl.hash.sha256 = function (hash) {
51297 if (!this._key[
0]) { this._precompute(); }
51299 this._h = hash._h.slice(
0);
51300 this._buffer = hash._buffer.slice(
0);
51301 this._length = hash._length;
51308 * Hash a string or an array of words.
51310 * @param {bitArray|String} data the data to hash.
51311 * @return {bitArray} The hash value, an array of
16 big-endian words.
51313 sjcl.hash.sha256.hash = function (data) {
51314 return (new sjcl.hash.sha256()).update(data).finalize();
51317 sjcl.hash.sha256.prototype = {
51319 * The hash's block size, in bits.
51325 * Reset the hash state.
51328 reset:function () {
51329 this._h = this._init.slice(
0);
51336 * Input several words to the hash.
51337 * @param {bitArray|String} data the data to hash.
51340 update: function (data) {
51341 if (typeof data ===
"string") {
51342 data = sjcl.codec.utf8String.toBits(data);
51344 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
51346 nl = this._length = ol + sjcl.bitArray.bitLength(data);
51347 for (i =
512+ol & -
512; i <= nl; i+=
512) {
51348 this._block(b.splice(
0,
16));
51354 * Complete hashing and output the hash value.
51355 * @return {bitArray} The hash value, an array of
8 big-endian words.
51357 finalize:function () {
51358 var i, b = this._buffer, h = this._h;
51360 // Round out and push the buffer
51361 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(
1,
1)]);
51363 // Round out the buffer to a multiple of
16 words, less the
2 length words.
51364 for (i = b.length +
2; i &
15; i++) {
51368 // append the length
51369 b.push(Math.floor(this._length /
0x100000000));
51370 b.push(this._length |
0);
51373 this._block(b.splice(
0,
16));
51381 * The SHA-
256 initialization vector, to be precomputed.
51386 _init:[
0x6a09e667,
0xbb67ae85,
0x3c6ef372,
0xa54ff53a,
0x510e527f,
0x9b05688c,
0x1f83d9ab,
0x5be0cd19],
51390 * The SHA-
256 hash key, to be precomputed.
51396 [
0x428a2f98,
0x71374491,
0xb5c0fbcf,
0xe9b5dba5,
0x3956c25b,
0x59f111f1,
0x923f82a4,
0xab1c5ed5,
51397 0xd807aa98,
0x12835b01,
0x243185be,
0x550c7dc3,
0x72be5d74,
0x80deb1fe,
0x9bdc06a7,
0xc19bf174,
51398 0xe49b69c1,
0xefbe4786,
0x0fc19dc6,
0x240ca1cc,
0x2de92c6f,
0x4a7484aa,
0x5cb0a9dc,
0x76f988da,
51399 0x983e5152,
0xa831c66d,
0xb00327c8,
0xbf597fc7,
0xc6e00bf3,
0xd5a79147,
0x06ca6351,
0x14292967,
51400 0x27b70a85,
0x2e1b2138,
0x4d2c6dfc,
0x53380d13,
0x650a7354,
0x766a0abb,
0x81c2c92e,
0x92722c85,
51401 0xa2bfe8a1,
0xa81a664b,
0xc24b8b70,
0xc76c51a3,
0xd192e819,
0xd6990624,
0xf40e3585,
0x106aa070,
51402 0x19a4c116,
0x1e376c08,
0x2748774c,
0x34b0bcb5,
0x391c0cb3,
0x4ed8aa4a,
0x5b9cca4f,
0x682e6ff3,
51403 0x748f82ee,
0x78a5636f,
0x84c87814,
0x8cc70208,
0x90befffa,
0xa4506ceb,
0xbef9a3f7,
0xc67178f2],
51408 * Function to precompute _init and _key.
51411 _precompute: function () {
51412 var i =
0, prime =
2, factor;
51414 function frac(x) { return (x-Math.floor(x)) *
0x100000000 |
0; }
51416 outer: for (; i
<64; prime++) {
51417 for (factor=
2; factor*factor <= prime; factor++) {
51418 if (prime % factor ===
0) {
51425 this._init[i] = frac(Math.pow(prime,
1/
2));
51427 this._key[i] = frac(Math.pow(prime,
1/
3));
51433 * Perform one cycle of SHA-
256.
51434 * @param {bitArray} words one block of words.
51437 _block:function (words) {
51439 w = words.slice(
0),
51442 h0 = h[
0], h1 = h[
1], h2 = h[
2], h3 = h[
3],
51443 h4 = h[
4], h5 = h[
5], h6 = h[
6], h7 = h[
7];
51445 /* Rationale for placement of |
0 :
51446 * If a value can overflow is original
32 bits by a factor of more than a few
51447 * million (
2^
23 ish), there is a possibility that it might overflow the
51448 *
53-bit mantissa and lose precision.
51450 * To avoid this, we clamp back to
32 bits by |'ing with
0 on any value that
51451 * propagates around the loop, and on the hash state h[]. I don't believe
51452 * that the clamps on h4 and on h0 are strictly necessary, but it's close
51453 * (for h4 anyway), and better safe than sorry.
51455 * The clamps on h[] are necessary for the output to be correct even in the
51456 * common case and for short inputs.
51458 for (i=
0; i
<64; i++) {
51459 // load up the input word for this round
51463 a = w[(i+
1 ) &
15];
51464 b = w[(i+
14) &
15];
51465 tmp = w[i&
15] = ((a
>>>7 ^ a
>>>18 ^ a
>>>3 ^ a<
<25 ^ a<
<14) +
51466 (b
>>>17 ^ b
>>>19 ^ b
>>>10 ^ b<
<15 ^ b<
<13) +
51467 w[i&
15] + w[(i+
9) &
15]) |
0;
51470 tmp = (tmp + h7 + (h4
>>>6 ^ h4
>>>11 ^ h4
>>>25 ^ h4<
<26 ^ h4<
<21 ^ h4<
<7) + (h6 ^ h4&(h5^h6)) + k[i]); // |
0;
51473 h7 = h6; h6 = h5; h5 = h4;
51475 h3 = h2; h2 = h1; h1 = h0;
51477 h0 = (tmp + ((h1&h2) ^ (h3&(h1^h2))) + (h1
>>>2 ^ h1
>>>13 ^ h1
>>>22 ^ h1<
<30 ^ h1<
<19 ^ h1<
<10)) |
0;
51480 h[
0] = h[
0]+h0 |
0;
51481 h[
1] = h[
1]+h1 |
0;
51482 h[
2] = h[
2]+h2 |
0;
51483 h[
3] = h[
3]+h3 |
0;
51484 h[
4] = h[
4]+h4 |
0;
51485 h[
5] = h[
5]+h5 |
0;
51486 h[
6] = h[
6]+h6 |
0;
51487 h[
7] = h[
7]+h7 |
0;
51491 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
51492 WORDLISTS["english"] = [
51493 "abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse",
51494 "access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act",
51495 "action","actor","actress","actual","adapt","add","addict","address","adjust","admit",
51496 "adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent",
51497 "agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert",
51498 "alien","all","alley","allow","almost","alone","alpha","already","also","alter",
51499 "always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger",
51500 "angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique",
51501 "anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic",
51502 "area","arena","argue","arm","armed","armor","army","around","arrange","arrest",
51503 "arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset",
51504 "assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction",
51505 "audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake",
51506 "aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge",
51507 "bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain",
51508 "barrel","base","basic","basket","battle","beach","bean","beauty","because","become",
51509 "beef","before","begin","behave","behind","believe","below","belt","bench","benefit",
51510 "best","betray","better","between","beyond","bicycle","bid","bike","bind","biology",
51511 "bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless",
51512 "blind","blood","blossom","blouse","blue","blur","blush","board","boat","body",
51513 "boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss",
51514 "bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread",
51515 "breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze",
51516 "broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb",
51517 "bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy",
51518 "butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call",
51519 "calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas",
51520 "canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry",
51521 "cart","case","cash","casino","castle","casual","cat","catalog","catch","category",
51522 "cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century",
51523 "cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase",
51524 "chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child",
51525 "chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle",
51526 "citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk",
51527 "clever","click","client","cliff","climb","clinic","clip","clock","clog","close",
51528 "cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut",
51529 "code","coffee","coil","coin","collect","color","column","combine","come","comfort",
51530 "comic","common","company","concert","conduct","confirm","congress","connect","consider","control",
51531 "convince","cook","cool","copper","copy","coral","core","corn","correct","cost",
51532 "cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle",
51533 "craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek",
51534 "crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial",
51535 "cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup",
51536 "cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad",
51537 "damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal",
51538 "debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense",
51539 "define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny",
51540 "depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk",
51541 "despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond",
51542 "diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur",
51543 "direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance",
51544 "divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain",
51545 "donate","donkey","donor","door","dose","double","dove","draft","dragon","drama",
51546 "drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop",
51547 "drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf",
51548 "dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo",
51549 "ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow",
51550 "elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody",
51551 "embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless",
51552 "endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough",
51553 "enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip",
51554 "era","erase","erode","erosion","error","erupt","escape","essay","essence","estate",
51555 "eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange",
51556 "excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit",
51557 "exotic","expand","expect","expire","explain","expose","express","extend","extra","eye",
51558 "eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame",
51559 "family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father",
51560 "fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female",
51561 "fence","festival","fetch","fever","few","fiber","fiction","field","figure","file",
51562 "film","filter","final","find","fine","finger","finish","fire","firm","first",
51563 "fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor",
51564 "flee","flight","flip","float","flock","floor","flower","fluid","flush","fly",
51565 "foam","focus","fog","foil","fold","follow","food","foot","force","forest",
51566 "forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile",
51567 "frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen",
51568 "fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy",
51569 "gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp",
51570 "gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture",
51571 "ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance",
51572 "glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue",
51573 "goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown",
51574 "grab","grace","grain","grant","grape","grass","gravity","great","green","grid",
51575 "grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt",
51576 "guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy",
51577 "harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health",
51578 "heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden",
51579 "high","hill","hint","hip","hire","history","hobby","hockey","hold","hole",
51580 "holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital",
51581 "host","hotel","hour","hover","hub","huge","human","humble","humor","hundred",
51582 "hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea",
51583 "identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune",
51584 "impact","impose","improve","impulse","inch","include","income","increase","index","indicate",
51585 "indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury",
51586 "inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install",
51587 "intact","interest","into","invest","invite","involve","iron","island","isolate","issue",
51588 "item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel",
51589 "job","join","joke","journey","joy","judge","juice","jump","jungle","junior",
51590 "junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney",
51591 "kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife",
51592 "knock","know","lab","label","labor","ladder","lady","lake","lamp","language",
51593 "laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit",
51594 "layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal",
51595 "legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level",
51596 "liar","liberty","library","license","life","lift","light","like","limb","limit",
51597 "link","lion","liquid","list","little","live","lizard","load","loan","lobster",
51598 "local","lock","logic","lonely","long","loop","lottery","loud","lounge","love",
51599 "loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad",
51600 "magic","magnet","maid","mail","main","major","make","mammal","man","manage",
51601 "mandate","mango","mansion","manual","maple","marble","march","margin","marine","market",
51602 "marriage","mask","mass","master","match","material","math","matrix","matter","maximum",
51603 "maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt",
51604 "member","memory","mention","menu","mercy","merge","merit","merry","mesh","message",
51605 "metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor",
51606 "minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile",
51607 "model","modify","mom","moment","monitor","monkey","monster","month","moon","moral",
51608 "more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie",
51609 "much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual",
51610 "myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature",
51611 "near","neck","need","negative","neglect","neither","nephew","nerve","nest","net",
51612 "network","neutral","never","news","next","nice","night","noble","noise","nominee",
51613 "noodle","normal","north","nose","notable","note","nothing","notice","novel","now",
51614 "nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe",
51615 "obtain","obvious","occur","ocean","october","odor","off","offer","office","often",
51616 "oil","okay","old","olive","olympic","omit","once","one","onion","online",
51617 "only","open","opera","opinion","oppose","option","orange","orbit","orchard","order",
51618 "ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output",
51619 "outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact",
51620 "paddle","page","pair","palace","palm","panda","panel","panic","panther","paper",
51621 "parade","parent","park","parrot","party","pass","patch","path","patient","patrol",
51622 "pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen",
51623 "penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo",
51624 "phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot",
51625 "pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate",
51626 "play","please","pledge","pluck","plug","plunge","poem","poet","point","polar",
51627 "pole","police","pond","pony","pool","popular","portion","position","possible","post",
51628 "potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare",
51629 "present","pretty","prevent","price","pride","primary","print","priority","prison","private",
51630 "prize","problem","process","produce","profit","program","project","promote","proof","property",
51631 "prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin",
51632 "punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle",
51633 "pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit",
51634 "raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp",
51635 "ranch","random","range","rapid","rare","rate","rather","raven","raw","razor",
51636 "ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle",
51637 "reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release",
51638 "relief","rely","remain","remember","remind","remove","render","renew","rent","reopen",
51639 "repair","repeat","replace","report","require","rescue","resemble","resist","resource","response",
51640 "result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib",
51641 "ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot",
51642 "ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket",
51643 "romance","roof","rookie","room","rose","rotate","rough","round","route","royal",
51644 "rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness",
51645 "safe","sail","salad","salmon","salon","salt","salute","same","sample","sand",
51646 "satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter",
51647 "scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script",
51648 "scrub","sea","search","season","seat","second","secret","section","security","seed",
51649 "seek","segment","select","sell","seminar","senior","sense","sentence","series","service",
51650 "session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell",
51651 "sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop",
51652 "short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side",
51653 "siege","sight","sign","silent","silk","silly","silver","similar","simple","since",
51654 "sing","siren","sister","situate","six","size","skate","sketch","ski","skill",
51655 "skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight",
51656 "slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth",
51657 "snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda",
51658 "soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry",
51659 "sort","soul","sound","soup","source","south","space","spare","spatial","spawn",
51660 "speak","special","speed","spell","spend","sphere","spice","spider","spike","spin",
51661 "spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring",
51662 "spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp",
51663 "stand","start","state","stay","steak","steel","stem","step","stereo","stick",
51664 "still","sting","stock","stomach","stone","stool","story","stove","strategy","street",
51665 "strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway",
51666 "success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny",
51667 "sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey",
51668 "suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim",
51669 "swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag",
51670 "tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi",
51671 "teach","team","tell","ten","tenant","tennis","tent","term","test","text",
51672 "thank","that","theme","then","theory","there","they","thing","this","thought",
51673 "three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber",
51674 "time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler",
51675 "toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool",
51676 "tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist",
51677 "toward","tower","town","toy","track","trade","traffic","tragic","train","transfer",
51678 "trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick",
51679 "trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust",
51680 "truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle",
51681 "twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella",
51682 "unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform",
51683 "unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade",
51684 "uphold","upon","upper","upset","urban","urge","usage","use","used","useful",
51685 "useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van",
51686 "vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue",
51687 "verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory",
51688 "video","view","village","vintage","violin","virtual","virus","visa","visit","visual",
51689 "vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage",
51690 "wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash",
51691 "wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather",
51692 "web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat",
51693 "wheel","when","where","whip","whisper","wide","width","wife","wild","will",
51694 "win","window","wine","wing","wink","winner","winter","wire","wisdom","wise",
51695 "wish","witness","wolf","woman","wonder","wood","wool","word","work","world",
51696 "worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year",
51697 "yellow","you","young","youth","zebra","zero","zone","zoo"]
51699 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
51700 WORDLISTS["japanese"] = [
51701 "あいこくしん", "あいさつ", "あいだ", "あおぞら", "あかちゃん", "あきる", "あけがた", "あける", "あこがれる", "あさい",
51702 "あさひ", "あしあと", "あじわう", "あずかる", "あずき", "あそぶ", "あたえる", "あたためる", "あたりまえ", "あたる",
51703 "あつい", "あつかう", "あっしゅく", "あつまり", "あつめる", "あてな", "あてはまる", "あひる", "あぶら", "あぶる",
51704 "あふれる", "あまい", "あまど", "あまやかす", "あまり", "あみもの", "あめりか", "あやまる", "あゆむ", "あらいぐま",
51705 "あらし", "あらすじ", "あらためる", "あらゆる", "あらわす", "ありがとう", "あわせる", "あわてる", "あんい", "あんがい",
51706 "あんこ", "あんぜん", "あんてい", "あんない", "あんまり", "いいだす", "いおん", "いがい", "いがく", "いきおい",
51707 "いきなり", "いきもの", "いきる", "いくじ", "いくぶん", "いけばな", "いけん", "いこう", "いこく", "いこつ",
51708 "いさましい", "いさん", "いしき", "いじゅう", "いじょう", "いじわる", "いずみ", "いずれ", "いせい", "いせえび",
51709 "いせかい", "いせき", "いぜん", "いそうろう", "いそがしい", "いだい", "いだく", "いたずら", "いたみ", "いたりあ",
51710 "いちおう", "いちじ", "いちど", "いちば", "いちぶ", "いちりゅう", "いつか", "いっしゅん", "いっせい", "いっそう",
51711 "いったん", "いっち", "いってい", "いっぽう", "いてざ", "いてん", "いどう", "いとこ", "いない", "いなか",
51712 "いねむり", "いのち", "いのる", "いはつ", "いばる", "いはん", "いびき", "いひん", "いふく", "いへん",
51713 "いほう", "いみん", "いもうと", "いもたれ", "いもり", "いやがる", "いやす", "いよかん", "いよく", "いらい",
51714 "いらすと", "いりぐち", "いりょう", "いれい", "いれもの", "いれる", "いろえんぴつ", "いわい", "いわう", "いわかん",
51715 "いわば", "いわゆる", "いんげんまめ", "いんさつ", "いんしょう", "いんよう", "うえき", "うえる", "うおざ", "うがい",
51716 "うかぶ", "うかべる", "うきわ", "うくらいな", "うくれれ", "うけたまわる", "うけつけ", "うけとる", "うけもつ", "うける",
51717 "うごかす", "うごく", "うこん", "うさぎ", "うしなう", "うしろがみ", "うすい", "うすぎ", "うすぐらい", "うすめる",
51718 "うせつ", "うちあわせ", "うちがわ", "うちき", "うちゅう", "うっかり", "うつくしい", "うったえる", "うつる", "うどん",
51719 "うなぎ", "うなじ", "うなずく", "うなる", "うねる", "うのう", "うぶげ", "うぶごえ", "うまれる", "うめる",
51720 "うもう", "うやまう", "うよく", "うらがえす", "うらぐち", "うらない", "うりあげ", "うりきれ", "うるさい", "うれしい",
51721 "うれゆき", "うれる", "うろこ", "うわき", "うわさ", "うんこう", "うんちん", "うんてん", "うんどう", "えいえん",
51722 "えいが", "えいきょう", "えいご", "えいせい", "えいぶん", "えいよう", "えいわ", "えおり", "えがお", "えがく",
51723 "えきたい", "えくせる", "えしゃく", "えすて", "えつらん", "えのぐ", "えほうまき", "えほん", "えまき", "えもじ",
51724 "えもの", "えらい", "えらぶ", "えりあ", "えんえん", "えんかい", "えんぎ", "えんげき", "えんしゅう", "えんぜつ",
51725 "えんそく", "えんちょう", "えんとつ", "おいかける", "おいこす", "おいしい", "おいつく", "おうえん", "おうさま", "おうじ",
51726 "おうせつ", "おうたい", "おうふく", "おうべい", "おうよう", "おえる", "おおい", "おおう", "おおどおり", "おおや",
51727 "おおよそ", "おかえり", "おかず", "おがむ", "おかわり", "おぎなう", "おきる", "おくさま", "おくじょう", "おくりがな",
51728 "おくる", "おくれる", "おこす", "おこなう", "おこる", "おさえる", "おさない", "おさめる", "おしいれ", "おしえる",
51729 "おじぎ", "おじさん", "おしゃれ", "おそらく", "おそわる", "おたがい", "おたく", "おだやか", "おちつく", "おっと",
51730 "おつり", "おでかけ", "おとしもの", "おとなしい", "おどり", "おどろかす", "おばさん", "おまいり", "おめでとう", "おもいで",
51731 "おもう", "おもたい", "おもちゃ", "おやつ", "おやゆび", "およぼす", "おらんだ", "おろす", "おんがく", "おんけい",
51732 "おんしゃ", "おんせん", "おんだん", "おんちゅう", "おんどけい", "かあつ", "かいが", "がいき", "がいけん", "がいこう",
51733 "かいさつ", "かいしゃ", "かいすいよく", "かいぜん", "かいぞうど", "かいつう", "かいてん", "かいとう", "かいふく", "がいへき",
51734 "かいほう", "かいよう", "がいらい", "かいわ", "かえる", "かおり", "かかえる", "かがく", "かがし", "かがみ",
51735 "かくご", "かくとく", "かざる", "がぞう", "かたい", "かたち", "がちょう", "がっきゅう", "がっこう", "がっさん",
51736 "がっしょう", "かなざわし", "かのう", "がはく", "かぶか", "かほう", "かほご", "かまう", "かまぼこ", "かめれおん",
51737 "かゆい", "かようび", "からい", "かるい", "かろう", "かわく", "かわら", "がんか", "かんけい", "かんこう",
51738 "かんしゃ", "かんそう", "かんたん", "かんち", "がんばる", "きあい", "きあつ", "きいろ", "ぎいん", "きうい",
51739 "きうん", "きえる", "きおう", "きおく", "きおち", "きおん", "きかい", "きかく", "きかんしゃ", "ききて",
51740 "きくばり", "きくらげ", "きけんせい", "きこう", "きこえる", "きこく", "きさい", "きさく", "きさま", "きさらぎ",
51741 "ぎじかがく", "ぎしき", "ぎじたいけん", "ぎじにってい", "ぎじゅつしゃ", "きすう", "きせい", "きせき", "きせつ", "きそう",
51742 "きぞく", "きぞん", "きたえる", "きちょう", "きつえん", "ぎっちり", "きつつき", "きつね", "きてい", "きどう",
51743 "きどく", "きない", "きなが", "きなこ", "きぬごし", "きねん", "きのう", "きのした", "きはく", "きびしい",
51744 "きひん", "きふく", "きぶん", "きぼう", "きほん", "きまる", "きみつ", "きむずかしい", "きめる", "きもだめし",
51745 "きもち", "きもの", "きゃく", "きやく", "ぎゅうにく", "きよう", "きょうりゅう", "きらい", "きらく", "きりん",
51746 "きれい", "きれつ", "きろく", "ぎろん", "きわめる", "ぎんいろ", "きんかくじ", "きんじょ", "きんようび", "ぐあい",
51747 "くいず", "くうかん", "くうき", "くうぐん", "くうこう", "ぐうせい", "くうそう", "ぐうたら", "くうふく", "くうぼ",
51748 "くかん", "くきょう", "くげん", "ぐこう", "くさい", "くさき", "くさばな", "くさる", "くしゃみ", "くしょう",
51749 "くすのき", "くすりゆび", "くせげ", "くせん", "ぐたいてき", "くださる", "くたびれる", "くちこみ", "くちさき", "くつした",
51750 "ぐっすり", "くつろぐ", "くとうてん", "くどく", "くなん", "くねくね", "くのう", "くふう", "くみあわせ", "くみたてる",
51751 "くめる", "くやくしょ", "くらす", "くらべる", "くるま", "くれる", "くろう", "くわしい", "ぐんかん", "ぐんしょく",
51752 "ぐんたい", "ぐんて", "けあな", "けいかく", "けいけん", "けいこ", "けいさつ", "げいじゅつ", "けいたい", "げいのうじん",
51753 "けいれき", "けいろ", "けおとす", "けおりもの", "げきか", "げきげん", "げきだん", "げきちん", "げきとつ", "げきは",
51754 "げきやく", "げこう", "げこくじょう", "げざい", "けさき", "げざん", "けしき", "けしごむ", "けしょう", "げすと",
51755 "けたば", "けちゃっぷ", "けちらす", "けつあつ", "けつい", "けつえき", "けっこん", "けつじょ", "けっせき", "けってい",
51756 "けつまつ", "げつようび", "げつれい", "けつろん", "げどく", "けとばす", "けとる", "けなげ", "けなす", "けなみ",
51757 "けぬき", "げねつ", "けねん", "けはい", "げひん", "けぶかい", "げぼく", "けまり", "けみかる", "けむし",
51758 "けむり", "けもの", "けらい", "けろけろ", "けわしい", "けんい", "けんえつ", "けんお", "けんか", "げんき",
51759 "けんげん", "けんこう", "けんさく", "けんしゅう", "けんすう", "げんそう", "けんちく", "けんてい", "けんとう", "けんない",
51760 "けんにん", "げんぶつ", "けんま", "けんみん", "けんめい", "けんらん", "けんり", "こあくま", "こいぬ", "こいびと",
51761 "ごうい", "こうえん", "こうおん", "こうかん", "ごうきゅう", "ごうけい", "こうこう", "こうさい", "こうじ", "こうすい",
51762 "ごうせい", "こうそく", "こうたい", "こうちゃ", "こうつう", "こうてい", "こうどう", "こうない", "こうはい", "ごうほう",
51763 "ごうまん", "こうもく", "こうりつ", "こえる", "こおり", "ごかい", "ごがつ", "ごかん", "こくご", "こくさい",
51764 "こくとう", "こくない", "こくはく", "こぐま", "こけい", "こける", "ここのか", "こころ", "こさめ", "こしつ",
51765 "こすう", "こせい", "こせき", "こぜん", "こそだて", "こたい", "こたえる", "こたつ", "こちょう", "こっか",
51766 "こつこつ", "こつばん", "こつぶ", "こてい", "こてん", "ことがら", "ことし", "ことば", "ことり", "こなごな",
51767 "こねこね", "このまま", "このみ", "このよ", "ごはん", "こひつじ", "こふう", "こふん", "こぼれる", "ごまあぶら",
51768 "こまかい", "ごますり", "こまつな", "こまる", "こむぎこ", "こもじ", "こもち", "こもの", "こもん", "こやく",
51769 "こやま", "こゆう", "こゆび", "こよい", "こよう", "こりる", "これくしょん", "ころっけ", "こわもて", "こわれる",
51770 "こんいん", "こんかい", "こんき", "こんしゅう", "こんすい", "こんだて", "こんとん", "こんなん", "こんびに", "こんぽん",
51771 "こんまけ", "こんや", "こんれい", "こんわく", "ざいえき", "さいかい", "さいきん", "ざいげん", "ざいこ", "さいしょ",
51772 "さいせい", "ざいたく", "ざいちゅう", "さいてき", "ざいりょう", "さうな", "さかいし", "さがす", "さかな", "さかみち",
51773 "さがる", "さぎょう", "さくし", "さくひん", "さくら", "さこく", "さこつ", "さずかる", "ざせき", "さたん",
51774 "さつえい", "ざつおん", "ざっか", "ざつがく", "さっきょく", "ざっし", "さつじん", "ざっそう", "さつたば", "さつまいも",
51775 "さてい", "さといも", "さとう", "さとおや", "さとし", "さとる", "さのう", "さばく", "さびしい", "さべつ",
51776 "さほう", "さほど", "さます", "さみしい", "さみだれ", "さむけ", "さめる", "さやえんどう", "さゆう", "さよう",
51777 "さよく", "さらだ", "ざるそば", "さわやか", "さわる", "さんいん", "さんか", "さんきゃく", "さんこう", "さんさい",
51778 "ざんしょ", "さんすう", "さんせい", "さんそ", "さんち", "さんま", "さんみ", "さんらん", "しあい", "しあげ",
51779 "しあさって", "しあわせ", "しいく", "しいん", "しうち", "しえい", "しおけ", "しかい", "しかく", "じかん",
51780 "しごと", "しすう", "じだい", "したうけ", "したぎ", "したて", "したみ", "しちょう", "しちりん", "しっかり",
51781 "しつじ", "しつもん", "してい", "してき", "してつ", "じてん", "じどう", "しなぎれ", "しなもの", "しなん",
51782 "しねま", "しねん", "しのぐ", "しのぶ", "しはい", "しばかり", "しはつ", "しはらい", "しはん", "しひょう",
51783 "しふく", "じぶん", "しへい", "しほう", "しほん", "しまう", "しまる", "しみん", "しむける", "じむしょ",
51784 "しめい", "しめる", "しもん", "しゃいん", "しゃうん", "しゃおん", "じゃがいも", "しやくしょ", "しゃくほう", "しゃけん",
51785 "しゃこ", "しゃざい", "しゃしん", "しゃせん", "しゃそう", "しゃたい", "しゃちょう", "しゃっきん", "じゃま", "しゃりん",
51786 "しゃれい", "じゆう", "じゅうしょ", "しゅくはく", "じゅしん", "しゅっせき", "しゅみ", "しゅらば", "じゅんばん", "しょうかい",
51787 "しょくたく", "しょっけん", "しょどう", "しょもつ", "しらせる", "しらべる", "しんか", "しんこう", "じんじゃ", "しんせいじ",
51788 "しんちく", "しんりん", "すあげ", "すあし", "すあな", "ずあん", "すいえい", "すいか", "すいとう", "ずいぶん",
51789 "すいようび", "すうがく", "すうじつ", "すうせん", "すおどり", "すきま", "すくう", "すくない", "すける", "すごい",
51790 "すこし", "ずさん", "すずしい", "すすむ", "すすめる", "すっかり", "ずっしり", "ずっと", "すてき", "すてる",
51791 "すねる", "すのこ", "すはだ", "すばらしい", "ずひょう", "ずぶぬれ", "すぶり", "すふれ", "すべて", "すべる",
51792 "ずほう", "すぼん", "すまい", "すめし", "すもう", "すやき", "すらすら", "するめ", "すれちがう", "すろっと",
51793 "すわる", "すんぜん", "すんぽう", "せあぶら", "せいかつ", "せいげん", "せいじ", "せいよう", "せおう", "せかいかん",
51794 "せきにん", "せきむ", "せきゆ", "せきらんうん", "せけん", "せこう", "せすじ", "せたい", "せたけ", "せっかく",
51795 "せっきゃく", "ぜっく", "せっけん", "せっこつ", "せっさたくま", "せつぞく", "せつだん", "せつでん", "せっぱん", "せつび",
51796 "せつぶん", "せつめい", "せつりつ", "せなか", "せのび", "せはば", "せびろ", "せぼね", "せまい", "せまる",
51797 "せめる", "せもたれ", "せりふ", "ぜんあく", "せんい", "せんえい", "せんか", "せんきょ", "せんく", "せんげん",
51798 "ぜんご", "せんさい", "せんしゅ", "せんすい", "せんせい", "せんぞ", "せんたく", "せんちょう", "せんてい", "せんとう",
51799 "せんぬき", "せんねん", "せんぱい", "ぜんぶ", "ぜんぽう", "せんむ", "せんめんじょ", "せんもん", "せんやく", "せんゆう",
51800 "せんよう", "ぜんら", "ぜんりゃく", "せんれい", "せんろ", "そあく", "そいとげる", "そいね", "そうがんきょう", "そうき",
51801 "そうご", "そうしん", "そうだん", "そうなん", "そうび", "そうめん", "そうり", "そえもの", "そえん", "そがい",
51802 "そげき", "そこう", "そこそこ", "そざい", "そしな", "そせい", "そせん", "そそぐ", "そだてる", "そつう",
51803 "そつえん", "そっかん", "そつぎょう", "そっけつ", "そっこう", "そっせん", "そっと", "そとがわ", "そとづら", "そなえる",
51804 "そなた", "そふぼ", "そぼく", "そぼろ", "そまつ", "そまる", "そむく", "そむりえ", "そめる", "そもそも",
51805 "そよかぜ", "そらまめ", "そろう", "そんかい", "そんけい", "そんざい", "そんしつ", "そんぞく", "そんちょう", "ぞんび",
51806 "ぞんぶん", "そんみん", "たあい", "たいいん", "たいうん", "たいえき", "たいおう", "だいがく", "たいき", "たいぐう",
51807 "たいけん", "たいこ", "たいざい", "だいじょうぶ", "だいすき", "たいせつ", "たいそう", "だいたい", "たいちょう", "たいてい",
51808 "だいどころ", "たいない", "たいねつ", "たいのう", "たいはん", "だいひょう", "たいふう", "たいへん", "たいほ", "たいまつばな",
51809 "たいみんぐ", "たいむ", "たいめん", "たいやき", "たいよう", "たいら", "たいりょく", "たいる", "たいわん", "たうえ",
51810 "たえる", "たおす", "たおる", "たおれる", "たかい", "たかね", "たきび", "たくさん", "たこく", "たこやき",
51811 "たさい", "たしざん", "だじゃれ", "たすける", "たずさわる", "たそがれ", "たたかう", "たたく", "ただしい", "たたみ",
51812 "たちばな", "だっかい", "だっきゃく", "だっこ", "だっしゅつ", "だったい", "たてる", "たとえる", "たなばた", "たにん",
51813 "たぬき", "たのしみ", "たはつ", "たぶん", "たべる", "たぼう", "たまご", "たまる", "だむる", "ためいき",
51814 "ためす", "ためる", "たもつ", "たやすい", "たよる", "たらす", "たりきほんがん", "たりょう", "たりる", "たると",
51815 "たれる", "たれんと", "たろっと", "たわむれる", "だんあつ", "たんい", "たんおん", "たんか", "たんき", "たんけん",
51816 "たんご", "たんさん", "たんじょうび", "だんせい", "たんそく", "たんたい", "だんち", "たんてい", "たんとう", "だんな",
51817 "たんにん", "だんねつ", "たんのう", "たんぴん", "だんぼう", "たんまつ", "たんめい", "だんれつ", "だんろ", "だんわ",
51818 "ちあい", "ちあん", "ちいき", "ちいさい", "ちえん", "ちかい", "ちから", "ちきゅう", "ちきん", "ちけいず",
51819 "ちけん", "ちこく", "ちさい", "ちしき", "ちしりょう", "ちせい", "ちそう", "ちたい", "ちたん", "ちちおや",
51820 "ちつじょ", "ちてき", "ちてん", "ちぬき", "ちぬり", "ちのう", "ちひょう", "ちへいせん", "ちほう", "ちまた",
51821 "ちみつ", "ちみどろ", "ちめいど", "ちゃんこなべ", "ちゅうい", "ちゆりょく", "ちょうし", "ちょさくけん", "ちらし", "ちらみ",
51822 "ちりがみ", "ちりょう", "ちるど", "ちわわ", "ちんたい", "ちんもく", "ついか", "ついたち", "つうか", "つうじょう",
51823 "つうはん", "つうわ", "つかう", "つかれる", "つくね", "つくる", "つけね", "つける", "つごう", "つたえる",
51824 "つづく", "つつじ", "つつむ", "つとめる", "つながる", "つなみ", "つねづね", "つのる", "つぶす", "つまらない",
51825 "つまる", "つみき", "つめたい", "つもり", "つもる", "つよい", "つるぼ", "つるみく", "つわもの", "つわり",
51826 "てあし", "てあて", "てあみ", "ていおん", "ていか", "ていき", "ていけい", "ていこく", "ていさつ", "ていし",
51827 "ていせい", "ていたい", "ていど", "ていねい", "ていひょう", "ていへん", "ていぼう", "てうち", "ておくれ", "てきとう",
51828 "てくび", "でこぼこ", "てさぎょう", "てさげ", "てすり", "てそう", "てちがい", "てちょう", "てつがく", "てつづき",
51829 "でっぱ", "てつぼう", "てつや", "でぬかえ", "てぬき", "てぬぐい", "てのひら", "てはい", "てぶくろ", "てふだ",
51830 "てほどき", "てほん", "てまえ", "てまきずし", "てみじか", "てみやげ", "てらす", "てれび", "てわけ", "てわたし",
51831 "でんあつ", "てんいん", "てんかい", "てんき", "てんぐ", "てんけん", "てんごく", "てんさい", "てんし", "てんすう",
51832 "でんち", "てんてき", "てんとう", "てんない", "てんぷら", "てんぼうだい", "てんめつ", "てんらんかい", "でんりょく", "でんわ",
51833 "どあい", "といれ", "どうかん", "とうきゅう", "どうぐ", "とうし", "とうむぎ", "とおい", "とおか", "とおく",
51834 "とおす", "とおる", "とかい", "とかす", "ときおり", "ときどき", "とくい", "とくしゅう", "とくてん", "とくに",
51835 "とくべつ", "とけい", "とける", "とこや", "とさか", "としょかん", "とそう", "とたん", "とちゅう", "とっきゅう",
51836 "とっくん", "とつぜん", "とつにゅう", "とどける", "ととのえる", "とない", "となえる", "となり", "とのさま", "とばす",
51837 "どぶがわ", "とほう", "とまる", "とめる", "ともだち", "ともる", "どようび", "とらえる", "とんかつ", "どんぶり",
51838 "ないかく", "ないこう", "ないしょ", "ないす", "ないせん", "ないそう", "なおす", "ながい", "なくす", "なげる",
51839 "なこうど", "なさけ", "なたでここ", "なっとう", "なつやすみ", "ななおし", "なにごと", "なにもの", "なにわ", "なのか",
51840 "なふだ", "なまいき", "なまえ", "なまみ", "なみだ", "なめらか", "なめる", "なやむ", "ならう", "ならび",
51841 "ならぶ", "なれる", "なわとび", "なわばり", "にあう", "にいがた", "にうけ", "におい", "にかい", "にがて",
51842 "にきび", "にくしみ", "にくまん", "にげる", "にさんかたんそ", "にしき", "にせもの", "にちじょう", "にちようび", "にっか",
51843 "にっき", "にっけい", "にっこう", "にっさん", "にっしょく", "にっすう", "にっせき", "にってい", "になう", "にほん",
51844 "にまめ", "にもつ", "にやり", "にゅういん", "にりんしゃ", "にわとり", "にんい", "にんか", "にんき", "にんげん",
51845 "にんしき", "にんずう", "にんそう", "にんたい", "にんち", "にんてい", "にんにく", "にんぷ", "にんまり", "にんむ",
51846 "にんめい", "にんよう", "ぬいくぎ", "ぬかす", "ぬぐいとる", "ぬぐう", "ぬくもり", "ぬすむ", "ぬまえび", "ぬめり",
51847 "ぬらす", "ぬんちゃく", "ねあげ", "ねいき", "ねいる", "ねいろ", "ねぐせ", "ねくたい", "ねくら", "ねこぜ",
51848 "ねこむ", "ねさげ", "ねすごす", "ねそべる", "ねだん", "ねつい", "ねっしん", "ねつぞう", "ねったいぎょ", "ねぶそく",
51849 "ねふだ", "ねぼう", "ねほりはほり", "ねまき", "ねまわし", "ねみみ", "ねむい", "ねむたい", "ねもと", "ねらう",
51850 "ねわざ", "ねんいり", "ねんおし", "ねんかん", "ねんきん", "ねんぐ", "ねんざ", "ねんし", "ねんちゃく", "ねんど",
51851 "ねんぴ", "ねんぶつ", "ねんまつ", "ねんりょう", "ねんれい", "のいず", "のおづま", "のがす", "のきなみ", "のこぎり",
51852 "のこす", "のこる", "のせる", "のぞく", "のぞむ", "のたまう", "のちほど", "のっく", "のばす", "のはら",
51853 "のべる", "のぼる", "のみもの", "のやま", "のらいぬ", "のらねこ", "のりもの", "のりゆき", "のれん", "のんき",
51854 "ばあい", "はあく", "ばあさん", "ばいか", "ばいく", "はいけん", "はいご", "はいしん", "はいすい", "はいせん",
51855 "はいそう", "はいち", "ばいばい", "はいれつ", "はえる", "はおる", "はかい", "ばかり", "はかる", "はくしゅ",
51856 "はけん", "はこぶ", "はさみ", "はさん", "はしご", "ばしょ", "はしる", "はせる", "ぱそこん", "はそん",
51857 "はたん", "はちみつ", "はつおん", "はっかく", "はづき", "はっきり", "はっくつ", "はっけん", "はっこう", "はっさん",
51858 "はっしん", "はったつ", "はっちゅう", "はってん", "はっぴょう", "はっぽう", "はなす", "はなび", "はにかむ", "はぶらし",
51859 "はみがき", "はむかう", "はめつ", "はやい", "はやし", "はらう", "はろうぃん", "はわい", "はんい", "はんえい",
51860 "はんおん", "はんかく", "はんきょう", "ばんぐみ", "はんこ", "はんしゃ", "はんすう", "はんだん", "ぱんち", "ぱんつ",
51861 "はんてい", "はんとし", "はんのう", "はんぱ", "はんぶん", "はんぺん", "はんぼうき", "はんめい", "はんらん", "はんろん",
51862 "ひいき", "ひうん", "ひえる", "ひかく", "ひかり", "ひかる", "ひかん", "ひくい", "ひけつ", "ひこうき",
51863 "ひこく", "ひさい", "ひさしぶり", "ひさん", "びじゅつかん", "ひしょ", "ひそか", "ひそむ", "ひたむき", "ひだり",
51864 "ひたる", "ひつぎ", "ひっこし", "ひっし", "ひつじゅひん", "ひっす", "ひつぜん", "ぴったり", "ぴっちり", "ひつよう",
51865 "ひてい", "ひとごみ", "ひなまつり", "ひなん", "ひねる", "ひはん", "ひびく", "ひひょう", "ひほう", "ひまわり",
51866 "ひまん", "ひみつ", "ひめい", "ひめじし", "ひやけ", "ひやす", "ひよう", "びょうき", "ひらがな", "ひらく",
51867 "ひりつ", "ひりょう", "ひるま", "ひるやすみ", "ひれい", "ひろい", "ひろう", "ひろき", "ひろゆき", "ひんかく",
51868 "ひんけつ", "ひんこん", "ひんしゅ", "ひんそう", "ぴんち", "ひんぱん", "びんぼう", "ふあん", "ふいうち", "ふうけい",
51869 "ふうせん", "ぷうたろう", "ふうとう", "ふうふ", "ふえる", "ふおん", "ふかい", "ふきん", "ふくざつ", "ふくぶくろ",
51870 "ふこう", "ふさい", "ふしぎ", "ふじみ", "ふすま", "ふせい", "ふせぐ", "ふそく", "ぶたにく", "ふたん",
51871 "ふちょう", "ふつう", "ふつか", "ふっかつ", "ふっき", "ふっこく", "ぶどう", "ふとる", "ふとん", "ふのう",
51872 "ふはい", "ふひょう", "ふへん", "ふまん", "ふみん", "ふめつ", "ふめん", "ふよう", "ふりこ", "ふりる",
51873 "ふるい", "ふんいき", "ぶんがく", "ぶんぐ", "ふんしつ", "ぶんせき", "ふんそう", "ぶんぽう", "へいあん", "へいおん",
51874 "へいがい", "へいき", "へいげん", "へいこう", "へいさ", "へいしゃ", "へいせつ", "へいそ", "へいたく", "へいてん",
51875 "へいねつ", "へいわ", "へきが", "へこむ", "べにいろ", "べにしょうが", "へらす", "へんかん", "べんきょう", "べんごし",
51876 "へんさい", "へんたい", "べんり", "ほあん", "ほいく", "ぼうぎょ", "ほうこく", "ほうそう", "ほうほう", "ほうもん",
51877 "ほうりつ", "ほえる", "ほおん", "ほかん", "ほきょう", "ぼきん", "ほくろ", "ほけつ", "ほけん", "ほこう",
51878 "ほこる", "ほしい", "ほしつ", "ほしゅ", "ほしょう", "ほせい", "ほそい", "ほそく", "ほたて", "ほたる",
51879 "ぽちぶくろ", "ほっきょく", "ほっさ", "ほったん", "ほとんど", "ほめる", "ほんい", "ほんき", "ほんけ", "ほんしつ",
51880 "ほんやく", "まいにち", "まかい", "まかせる", "まがる", "まける", "まこと", "まさつ", "まじめ", "ますく",
51881 "まぜる", "まつり", "まとめ", "まなぶ", "まぬけ", "まねく", "まほう", "まもる", "まゆげ", "まよう",
51882 "まろやか", "まわす", "まわり", "まわる", "まんが", "まんきつ", "まんぞく", "まんなか", "みいら", "みうち",
51883 "みえる", "みがく", "みかた", "みかん", "みけん", "みこん", "みじかい", "みすい", "みすえる", "みせる",
51884 "みっか", "みつかる", "みつける", "みてい", "みとめる", "みなと", "みなみかさい", "みねらる", "みのう", "みのがす",
51885 "みほん", "みもと", "みやげ", "みらい", "みりょく", "みわく", "みんか", "みんぞく", "むいか", "むえき",
51886 "むえん", "むかい", "むかう", "むかえ", "むかし", "むぎちゃ", "むける", "むげん", "むさぼる", "むしあつい",
51887 "むしば", "むじゅん", "むしろ", "むすう", "むすこ", "むすぶ", "むすめ", "むせる", "むせん", "むちゅう",
51888 "むなしい", "むのう", "むやみ", "むよう", "むらさき", "むりょう", "むろん", "めいあん", "めいうん", "めいえん",
51889 "めいかく", "めいきょく", "めいさい", "めいし", "めいそう", "めいぶつ", "めいれい", "めいわく", "めぐまれる", "めざす",
51890 "めした", "めずらしい", "めだつ", "めまい", "めやす", "めんきょ", "めんせき", "めんどう", "もうしあげる", "もうどうけん",
51891 "もえる", "もくし", "もくてき", "もくようび", "もちろん", "もどる", "もらう", "もんく", "もんだい", "やおや",
51892 "やける", "やさい", "やさしい", "やすい", "やすたろう", "やすみ", "やせる", "やそう", "やたい", "やちん",
51893 "やっと", "やっぱり", "やぶる", "やめる", "ややこしい", "やよい", "やわらかい", "ゆうき", "ゆうびんきょく", "ゆうべ",
51894 "ゆうめい", "ゆけつ", "ゆしゅつ", "ゆせん", "ゆそう", "ゆたか", "ゆちゃく", "ゆでる", "ゆにゅう", "ゆびわ",
51895 "ゆらい", "ゆれる", "ようい", "ようか", "ようきゅう", "ようじ", "ようす", "ようちえん", "よかぜ", "よかん",
51896 "よきん", "よくせい", "よくぼう", "よけい", "よごれる", "よさん", "よしゅう", "よそう", "よそく", "よっか",
51897 "よてい", "よどがわく", "よねつ", "よやく", "よゆう", "よろこぶ", "よろしい", "らいう", "らくがき", "らくご",
51898 "らくさつ", "らくだ", "らしんばん", "らせん", "らぞく", "らたい", "らっか", "られつ", "りえき", "りかい",
51899 "りきさく", "りきせつ", "りくぐん", "りくつ", "りけん", "りこう", "りせい", "りそう", "りそく", "りてん",
51900 "りねん", "りゆう", "りゅうがく", "りよう", "りょうり", "りょかん", "りょくちゃ", "りょこう", "りりく", "りれき",
51901 "りろん", "りんご", "るいけい", "るいさい", "るいじ", "るいせき", "るすばん", "るりがわら", "れいかん", "れいぎ",
51902 "れいせい", "れいぞうこ", "れいとう", "れいぼう", "れきし", "れきだい", "れんあい", "れんけい", "れんこん", "れんさい",
51903 "れんしゅう", "れんぞく", "れんらく", "ろうか", "ろうご", "ろうじん", "ろうそく", "ろくが", "ろこつ", "ろじうら",
51904 "ろしゅつ", "ろせん", "ろてん", "ろめん", "ろれつ", "ろんぎ", "ろんぱ", "ろんぶん", "ろんり", "わかす",
51905 "わかめ", "わかやま", "わかれる", "わしつ", "わじまし", "わすれもの", "わらう", "われる"]
51907 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
51908 WORDLISTS["spanish"] = [
51909 "ábaco", "abdomen", "abeja", "abierto", "abogado", "abono", "aborto", "abrazo", "abrir", "abuelo",
51910 "abuso", "acabar", "academia", "acceso", "acción", "aceite", "acelga", "acento", "aceptar", "ácido",
51911 "aclarar", "acné", "acoger", "acoso", "activo", "acto", "actriz", "actuar", "acudir", "acuerdo",
51912 "acusar", "adicto", "admitir", "adoptar", "adorno", "aduana", "adulto", "aéreo", "afectar", "afición",
51913 "afinar", "afirmar", "ágil", "agitar", "agonía", "agosto", "agotar", "agregar", "agrio", "agua",
51914 "agudo", "águila", "aguja", "ahogo", "ahorro", "aire", "aislar", "ajedrez", "ajeno", "ajuste",
51915 "alacrán", "alambre", "alarma", "alba", "álbum", "alcalde", "aldea", "alegre", "alejar", "alerta",
51916 "aleta", "alfiler", "alga", "algodón", "aliado", "aliento", "alivio", "alma", "almeja", "almíbar",
51917 "altar", "alteza", "altivo", "alto", "altura", "alumno", "alzar", "amable", "amante", "amapola",
51918 "amargo", "amasar", "ámbar", "ámbito", "ameno", "amigo", "amistad", "amor", "amparo", "amplio",
51919 "ancho", "anciano", "ancla", "andar", "andén", "anemia", "ángulo", "anillo", "ánimo", "anís",
51920 "anotar", "antena", "antiguo", "antojo", "anual", "anular", "anuncio", "añadir", "añejo", "año",
51921 "apagar", "aparato", "apetito", "apio", "aplicar", "apodo", "aporte", "apoyo", "aprender", "aprobar",
51922 "apuesta", "apuro", "arado", "araña", "arar", "árbitro", "árbol", "arbusto", "archivo", "arco",
51923 "arder", "ardilla", "arduo", "área", "árido", "aries", "armonía", "arnés", "aroma", "arpa",
51924 "arpón", "arreglo", "arroz", "arruga", "arte", "artista", "asa", "asado", "asalto", "ascenso",
51925 "asegurar", "aseo", "asesor", "asiento", "asilo", "asistir", "asno", "asombro", "áspero", "astilla",
51926 "astro", "astuto", "asumir", "asunto", "atajo", "ataque", "atar", "atento", "ateo", "ático",
51927 "atleta", "átomo", "atraer", "atroz", "atún", "audaz", "audio", "auge", "aula", "aumento",
51928 "ausente", "autor", "aval", "avance", "avaro", "ave", "avellana", "avena", "avestruz", "avión",
51929 "aviso", "ayer", "ayuda", "ayuno", "azafrán", "azar", "azote", "azúcar", "azufre", "azul",
51930 "baba", "babor", "bache", "bahía", "baile", "bajar", "balanza", "balcón", "balde", "bambú",
51931 "banco", "banda", "baño", "barba", "barco", "barniz", "barro", "báscula", "bastón", "basura",
51932 "batalla", "batería", "batir", "batuta", "baúl", "bazar", "bebé", "bebida", "bello", "besar",
51933 "beso", "bestia", "bicho", "bien", "bingo", "blanco", "bloque", "blusa", "boa", "bobina",
51934 "bobo", "boca", "bocina", "boda", "bodega", "boina", "bola", "bolero", "bolsa", "bomba",
51935 "bondad", "bonito", "bono", "bonsái", "borde", "borrar", "bosque", "bote", "botín", "bóveda",
51936 "bozal", "bravo", "brazo", "brecha", "breve", "brillo", "brinco", "brisa", "broca", "broma",
51937 "bronce", "brote", "bruja", "brusco", "bruto", "buceo", "bucle", "bueno", "buey", "bufanda",
51938 "bufón", "búho", "buitre", "bulto", "burbuja", "burla", "burro", "buscar", "butaca", "buzón",
51939 "caballo", "cabeza", "cabina", "cabra", "cacao", "cadáver", "cadena", "caer", "café", "caída",
51940 "caimán", "caja", "cajón", "cal", "calamar", "calcio", "caldo", "calidad", "calle", "calma",
51941 "calor", "calvo", "cama", "cambio", "camello", "camino", "campo", "cáncer", "candil", "canela",
51942 "canguro", "canica", "canto", "caña", "cañón", "caoba", "caos", "capaz", "capitán", "capote",
51943 "captar", "capucha", "cara", "carbón", "cárcel", "careta", "carga", "cariño", "carne", "carpeta",
51944 "carro", "carta", "casa", "casco", "casero", "caspa", "castor", "catorce", "catre", "caudal",
51945 "causa", "cazo", "cebolla", "ceder", "cedro", "celda", "célebre", "celoso", "célula", "cemento",
51946 "ceniza", "centro", "cerca", "cerdo", "cereza", "cero", "cerrar", "certeza", "césped", "cetro",
51947 "chacal", "chaleco", "champú", "chancla", "chapa", "charla", "chico", "chiste", "chivo", "choque",
51948 "choza", "chuleta", "chupar", "ciclón", "ciego", "cielo", "cien", "cierto", "cifra", "cigarro",
51949 "cima", "cinco", "cine", "cinta", "ciprés", "circo", "ciruela", "cisne", "cita", "ciudad",
51950 "clamor", "clan", "claro", "clase", "clave", "cliente", "clima", "clínica", "cobre", "cocción",
51951 "cochino", "cocina", "coco", "código", "codo", "cofre", "coger", "cohete", "cojín", "cojo",
51952 "cola", "colcha", "colegio", "colgar", "colina", "collar", "colmo", "columna", "combate", "comer",
51953 "comida", "cómodo", "compra", "conde", "conejo", "conga", "conocer", "consejo", "contar", "copa",
51954 "copia", "corazón", "corbata", "corcho", "cordón", "corona", "correr", "coser", "cosmos", "costa",
51955 "cráneo", "cráter", "crear", "crecer", "creído", "crema", "cría", "crimen", "cripta", "crisis",
51956 "cromo", "crónica", "croqueta", "crudo", "cruz", "cuadro", "cuarto", "cuatro", "cubo", "cubrir",
51957 "cuchara", "cuello", "cuento", "cuerda", "cuesta", "cueva", "cuidar", "culebra", "culpa", "culto",
51958 "cumbre", "cumplir", "cuna", "cuneta", "cuota", "cupón", "cúpula", "curar", "curioso", "curso",
51959 "curva", "cutis", "dama", "danza", "dar", "dardo", "dátil", "deber", "débil", "década",
51960 "decir", "dedo", "defensa", "definir", "dejar", "delfín", "delgado", "delito", "demora", "denso",
51961 "dental", "deporte", "derecho", "derrota", "desayuno", "deseo", "desfile", "desnudo", "destino", "desvío",
51962 "detalle", "detener", "deuda", "día", "diablo", "diadema", "diamante", "diana", "diario", "dibujo",
51963 "dictar", "diente", "dieta", "diez", "difícil", "digno", "dilema", "diluir", "dinero", "directo",
51964 "dirigir", "disco", "diseño", "disfraz", "diva", "divino", "doble", "doce", "dolor", "domingo",
51965 "don", "donar", "dorado", "dormir", "dorso", "dos", "dosis", "dragón", "droga", "ducha",
51966 "duda", "duelo", "dueño", "dulce", "dúo", "duque", "durar", "dureza", "duro", "ébano",
51967 "ebrio", "echar", "eco", "ecuador", "edad", "edición", "edificio", "editor", "educar", "efecto",
51968 "eficaz", "eje", "ejemplo", "elefante", "elegir", "elemento", "elevar", "elipse", "élite", "elixir",
51969 "elogio", "eludir", "embudo", "emitir", "emoción", "empate", "empeño", "empleo", "empresa", "enano",
51970 "encargo", "enchufe", "encía", "enemigo", "enero", "enfado", "enfermo", "engaño", "enigma", "enlace",
51971 "enorme", "enredo", "ensayo", "enseñar", "entero", "entrar", "envase", "envío", "época", "equipo",
51972 "erizo", "escala", "escena", "escolar", "escribir", "escudo", "esencia", "esfera", "esfuerzo", "espada",
51973 "espejo", "espía", "esposa", "espuma", "esquí", "estar", "este", "estilo", "estufa", "etapa",
51974 "eterno", "ética", "etnia", "evadir", "evaluar", "evento", "evitar", "exacto", "examen", "exceso",
51975 "excusa", "exento", "exigir", "exilio", "existir", "éxito", "experto", "explicar", "exponer", "extremo",
51976 "fábrica", "fábula", "fachada", "fácil", "factor", "faena", "faja", "falda", "fallo", "falso",
51977 "faltar", "fama", "familia", "famoso", "faraón", "farmacia", "farol", "farsa", "fase", "fatiga",
51978 "fauna", "favor", "fax", "febrero", "fecha", "feliz", "feo", "feria", "feroz", "fértil",
51979 "fervor", "festín", "fiable", "fianza", "fiar", "fibra", "ficción", "ficha", "fideo", "fiebre",
51980 "fiel", "fiera", "fiesta", "figura", "fijar", "fijo", "fila", "filete", "filial", "filtro",
51981 "fin", "finca", "fingir", "finito", "firma", "flaco", "flauta", "flecha", "flor", "flota",
51982 "fluir", "flujo", "flúor", "fobia", "foca", "fogata", "fogón", "folio", "folleto", "fondo",
51983 "forma", "forro", "fortuna", "forzar", "fosa", "foto", "fracaso", "frágil", "franja", "frase",
51984 "fraude", "freír", "freno", "fresa", "frío", "frito", "fruta", "fuego", "fuente", "fuerza",
51985 "fuga", "fumar", "función", "funda", "furgón", "furia", "fusil", "fútbol", "futuro", "gacela",
51986 "gafas", "gaita", "gajo", "gala", "galería", "gallo", "gamba", "ganar", "gancho", "ganga",
51987 "ganso", "garaje", "garza", "gasolina", "gastar", "gato", "gavilán", "gemelo", "gemir", "gen",
51988 "género", "genio", "gente", "geranio", "gerente", "germen", "gesto", "gigante", "gimnasio", "girar",
51989 "giro", "glaciar", "globo", "gloria", "gol", "golfo", "goloso", "golpe", "goma", "gordo",
51990 "gorila", "gorra", "gota", "goteo", "gozar", "grada", "gráfico", "grano", "grasa", "gratis",
51991 "grave", "grieta", "grillo", "gripe", "gris", "grito", "grosor", "grúa", "grueso", "grumo",
51992 "grupo", "guante", "guapo", "guardia", "guerra", "guía", "guiño", "guion", "guiso", "guitarra",
51993 "gusano", "gustar", "haber", "hábil", "hablar", "hacer", "hacha", "hada", "hallar", "hamaca",
51994 "harina", "haz", "hazaña", "hebilla", "hebra", "hecho", "helado", "helio", "hembra", "herir",
51995 "hermano", "héroe", "hervir", "hielo", "hierro", "hígado", "higiene", "hijo", "himno", "historia",
51996 "hocico", "hogar", "hoguera", "hoja", "hombre", "hongo", "honor", "honra", "hora", "hormiga",
51997 "horno", "hostil", "hoyo", "hueco", "huelga", "huerta", "hueso", "huevo", "huida", "huir",
51998 "humano", "húmedo", "humilde", "humo", "hundir", "huracán", "hurto", "icono", "ideal", "idioma",
51999 "ídolo", "iglesia", "iglú", "igual", "ilegal", "ilusión", "imagen", "imán", "imitar", "impar",
52000 "imperio", "imponer", "impulso", "incapaz", "índice", "inerte", "infiel", "informe", "ingenio", "inicio",
52001 "inmenso", "inmune", "innato", "insecto", "instante", "interés", "íntimo", "intuir", "inútil", "invierno",
52002 "ira", "iris", "ironía", "isla", "islote", "jabalí", "jabón", "jamón", "jarabe", "jardín",
52003 "jarra", "jaula", "jazmín", "jefe", "jeringa", "jinete", "jornada", "joroba", "joven", "joya",
52004 "juerga", "jueves", "juez", "jugador", "jugo", "juguete", "juicio", "junco", "jungla", "junio",
52005 "juntar", "júpiter", "jurar", "justo", "juvenil", "juzgar", "kilo", "koala", "labio", "lacio",
52006 "lacra", "lado", "ladrón", "lagarto", "lágrima", "laguna", "laico", "lamer", "lámina", "lámpara",
52007 "lana", "lancha", "langosta", "lanza", "lápiz", "largo", "larva", "lástima", "lata", "látex",
52008 "latir", "laurel", "lavar", "lazo", "leal", "lección", "leche", "lector", "leer", "legión",
52009 "legumbre", "lejano", "lengua", "lento", "leña", "león", "leopardo", "lesión", "letal", "letra",
52010 "leve", "leyenda", "libertad", "libro", "licor", "líder", "lidiar", "lienzo", "liga", "ligero",
52011 "lima", "límite", "limón", "limpio", "lince", "lindo", "línea", "lingote", "lino", "linterna",
52012 "líquido", "liso", "lista", "litera", "litio", "litro", "llaga", "llama", "llanto", "llave",
52013 "llegar", "llenar", "llevar", "llorar", "llover", "lluvia", "lobo", "loción", "loco", "locura",
52014 "lógica", "logro", "lombriz", "lomo", "lonja", "lote", "lucha", "lucir", "lugar", "lujo",
52015 "luna", "lunes", "lupa", "lustro", "luto", "luz", "maceta", "macho", "madera", "madre",
52016 "maduro", "maestro", "mafia", "magia", "mago", "maíz", "maldad", "maleta", "malla", "malo",
52017 "mamá", "mambo", "mamut", "manco", "mando", "manejar", "manga", "maniquí", "manjar", "mano",
52018 "manso", "manta", "mañana", "mapa", "máquina", "mar", "marco", "marea", "marfil", "margen",
52019 "marido", "mármol", "marrón", "martes", "marzo", "masa", "máscara", "masivo", "matar", "materia",
52020 "matiz", "matriz", "máximo", "mayor", "mazorca", "mecha", "medalla", "medio", "médula", "mejilla",
52021 "mejor", "melena", "melón", "memoria", "menor", "mensaje", "mente", "menú", "mercado", "merengue",
52022 "mérito", "mes", "mesón", "meta", "meter", "método", "metro", "mezcla", "miedo", "miel",
52023 "miembro", "miga", "mil", "milagro", "militar", "millón", "mimo", "mina", "minero", "mínimo",
52024 "minuto", "miope", "mirar", "misa", "miseria", "misil", "mismo", "mitad", "mito", "mochila",
52025 "moción", "moda", "modelo", "moho", "mojar", "molde", "moler", "molino", "momento", "momia",
52026 "monarca", "moneda", "monja", "monto", "moño", "morada", "morder", "moreno", "morir", "morro",
52027 "morsa", "mortal", "mosca", "mostrar", "motivo", "mover", "móvil", "mozo", "mucho", "mudar",
52028 "mueble", "muela", "muerte", "muestra", "mugre", "mujer", "mula", "muleta", "multa", "mundo",
52029 "muñeca", "mural", "muro", "músculo", "museo", "musgo", "música", "muslo", "nácar", "nación",
52030 "nadar", "naipe", "naranja", "nariz", "narrar", "nasal", "natal", "nativo", "natural", "náusea",
52031 "naval", "nave", "navidad", "necio", "néctar", "negar", "negocio", "negro", "neón", "nervio",
52032 "neto", "neutro", "nevar", "nevera", "nicho", "nido", "niebla", "nieto", "niñez", "niño",
52033 "nítido", "nivel", "nobleza", "noche", "nómina", "noria", "norma", "norte", "nota", "noticia",
52034 "novato", "novela", "novio", "nube", "nuca", "núcleo", "nudillo", "nudo", "nuera", "nueve",
52035 "nuez", "nulo", "número", "nutria", "oasis", "obeso", "obispo", "objeto", "obra", "obrero",
52036 "observar", "obtener", "obvio", "oca", "ocaso", "océano", "ochenta", "ocho", "ocio", "ocre",
52037 "octavo", "octubre", "oculto", "ocupar", "ocurrir", "odiar", "odio", "odisea", "oeste", "ofensa",
52038 "oferta", "oficio", "ofrecer", "ogro", "oído", "oír", "ojo", "ola", "oleada", "olfato",
52039 "olivo", "olla", "olmo", "olor", "olvido", "ombligo", "onda", "onza", "opaco", "opción",
52040 "ópera", "opinar", "oponer", "optar", "óptica", "opuesto", "oración", "orador", "oral", "órbita",
52041 "orca", "orden", "oreja", "órgano", "orgía", "orgullo", "oriente", "origen", "orilla", "oro",
52042 "orquesta", "oruga", "osadía", "oscuro", "osezno", "oso", "ostra", "otoño", "otro", "oveja",
52043 "óvulo", "óxido", "oxígeno", "oyente", "ozono", "pacto", "padre", "paella", "página", "pago",
52044 "país", "pájaro", "palabra", "palco", "paleta", "pálido", "palma", "paloma", "palpar", "pan",
52045 "panal", "pánico", "pantera", "pañuelo", "papá", "papel", "papilla", "paquete", "parar", "parcela",
52046 "pared", "parir", "paro", "párpado", "parque", "párrafo", "parte", "pasar", "paseo", "pasión",
52047 "paso", "pasta", "pata", "patio", "patria", "pausa", "pauta", "pavo", "payaso", "peatón",
52048 "pecado", "pecera", "pecho", "pedal", "pedir", "pegar", "peine", "pelar", "peldaño", "pelea",
52049 "peligro", "pellejo", "pelo", "peluca", "pena", "pensar", "peñón", "peón", "peor", "pepino",
52050 "pequeño", "pera", "percha", "perder", "pereza", "perfil", "perico", "perla", "permiso", "perro",
52051 "persona", "pesa", "pesca", "pésimo", "pestaña", "pétalo", "petróleo", "pez", "pezuña", "picar",
52052 "pichón", "pie", "piedra", "pierna", "pieza", "pijama", "pilar", "piloto", "pimienta", "pino",
52053 "pintor", "pinza", "piña", "piojo", "pipa", "pirata", "pisar", "piscina", "piso", "pista",
52054 "pitón", "pizca", "placa", "plan", "plata", "playa", "plaza", "pleito", "pleno", "plomo",
52055 "pluma", "plural", "pobre", "poco", "poder", "podio", "poema", "poesía", "poeta", "polen",
52056 "policía", "pollo", "polvo", "pomada", "pomelo", "pomo", "pompa", "poner", "porción", "portal",
52057 "posada", "poseer", "posible", "poste", "potencia", "potro", "pozo", "prado", "precoz", "pregunta",
52058 "premio", "prensa", "preso", "previo", "primo", "príncipe", "prisión", "privar", "proa", "probar",
52059 "proceso", "producto", "proeza", "profesor", "programa", "prole", "promesa", "pronto", "propio", "próximo",
52060 "prueba", "público", "puchero", "pudor", "pueblo", "puerta", "puesto", "pulga", "pulir", "pulmón",
52061 "pulpo", "pulso", "puma", "punto", "puñal", "puño", "pupa", "pupila", "puré", "quedar",
52062 "queja", "quemar", "querer", "queso", "quieto", "química", "quince", "quitar", "rábano", "rabia",
52063 "rabo", "ración", "radical", "raíz", "rama", "rampa", "rancho", "rango", "rapaz", "rápido",
52064 "rapto", "rasgo", "raspa", "rato", "rayo", "raza", "razón", "reacción", "realidad", "rebaño",
52065 "rebote", "recaer", "receta", "rechazo", "recoger", "recreo", "recto", "recurso", "red", "redondo",
52066 "reducir", "reflejo", "reforma", "refrán", "refugio", "regalo", "regir", "regla", "regreso", "rehén",
52067 "reino", "reír", "reja", "relato", "relevo", "relieve", "relleno", "reloj", "remar", "remedio",
52068 "remo", "rencor", "rendir", "renta", "reparto", "repetir", "reposo", "reptil", "res", "rescate",
52069 "resina", "respeto", "resto", "resumen", "retiro", "retorno", "retrato", "reunir", "revés", "revista",
52070 "rey", "rezar", "rico", "riego", "rienda", "riesgo", "rifa", "rígido", "rigor", "rincón",
52071 "riñón", "río", "riqueza", "risa", "ritmo", "rito", "rizo", "roble", "roce", "rociar",
52072 "rodar", "rodeo", "rodilla", "roer", "rojizo", "rojo", "romero", "romper", "ron", "ronco",
52073 "ronda", "ropa", "ropero", "rosa", "rosca", "rostro", "rotar", "rubí", "rubor", "rudo",
52074 "rueda", "rugir", "ruido", "ruina", "ruleta", "rulo", "rumbo", "rumor", "ruptura", "ruta",
52075 "rutina", "sábado", "saber", "sabio", "sable", "sacar", "sagaz", "sagrado", "sala", "saldo",
52076 "salero", "salir", "salmón", "salón", "salsa", "salto", "salud", "salvar", "samba", "sanción",
52077 "sandía", "sanear", "sangre", "sanidad", "sano", "santo", "sapo", "saque", "sardina", "sartén",
52078 "sastre", "satán", "sauna", "saxofón", "sección", "seco", "secreto", "secta", "sed", "seguir",
52079 "seis", "sello", "selva", "semana", "semilla", "senda", "sensor", "señal", "señor", "separar",
52080 "sepia", "sequía", "ser", "serie", "sermón", "servir", "sesenta", "sesión", "seta", "setenta",
52081 "severo", "sexo", "sexto", "sidra", "siesta", "siete", "siglo", "signo", "sílaba", "silbar",
52082 "silencio", "silla", "símbolo", "simio", "sirena", "sistema", "sitio", "situar", "sobre", "socio",
52083 "sodio", "sol", "solapa", "soldado", "soledad", "sólido", "soltar", "solución", "sombra", "sondeo",
52084 "sonido", "sonoro", "sonrisa", "sopa", "soplar", "soporte", "sordo", "sorpresa", "sorteo", "sostén",
52085 "sótano", "suave", "subir", "suceso", "sudor", "suegra", "suelo", "sueño", "suerte", "sufrir",
52086 "sujeto", "sultán", "sumar", "superar", "suplir", "suponer", "supremo", "sur", "surco", "sureño",
52087 "surgir", "susto", "sutil", "tabaco", "tabique", "tabla", "tabú", "taco", "tacto", "tajo",
52088 "talar", "talco", "talento", "talla", "talón", "tamaño", "tambor", "tango", "tanque", "tapa",
52089 "tapete", "tapia", "tapón", "taquilla", "tarde", "tarea", "tarifa", "tarjeta", "tarot", "tarro",
52090 "tarta", "tatuaje", "tauro", "taza", "tazón", "teatro", "techo", "tecla", "técnica", "tejado",
52091 "tejer", "tejido", "tela", "teléfono", "tema", "temor", "templo", "tenaz", "tender", "tener",
52092 "tenis", "tenso", "teoría", "terapia", "terco", "término", "ternura", "terror", "tesis", "tesoro",
52093 "testigo", "tetera", "texto", "tez", "tibio", "tiburón", "tiempo", "tienda", "tierra", "tieso",
52094 "tigre", "tijera", "tilde", "timbre", "tímido", "timo", "tinta", "tío", "típico", "tipo",
52095 "tira", "tirón", "titán", "títere", "título", "tiza", "toalla", "tobillo", "tocar", "tocino",
52096 "todo", "toga", "toldo", "tomar", "tono", "tonto", "topar", "tope", "toque", "tórax",
52097 "torero", "tormenta", "torneo", "toro", "torpedo", "torre", "torso", "tortuga", "tos", "tosco",
52098 "toser", "tóxico", "trabajo", "tractor", "traer", "tráfico", "trago", "traje", "tramo", "trance",
52099 "trato", "trauma", "trazar", "trébol", "tregua", "treinta", "tren", "trepar", "tres", "tribu",
52100 "trigo", "tripa", "triste", "triunfo", "trofeo", "trompa", "tronco", "tropa", "trote", "trozo",
52101 "truco", "trueno", "trufa", "tubería", "tubo", "tuerto", "tumba", "tumor", "túnel", "túnica",
52102 "turbina", "turismo", "turno", "tutor", "ubicar", "úlcera", "umbral", "unidad", "unir", "universo",
52103 "uno", "untar", "uña", "urbano", "urbe", "urgente", "urna", "usar", "usuario", "útil",
52104 "utopía", "uva", "vaca", "vacío", "vacuna", "vagar", "vago", "vaina", "vajilla", "vale",
52105 "válido", "valle", "valor", "válvula", "vampiro", "vara", "variar", "varón", "vaso", "vecino",
52106 "vector", "vehículo", "veinte", "vejez", "vela", "velero", "veloz", "vena", "vencer", "venda",
52107 "veneno", "vengar", "venir", "venta", "venus", "ver", "verano", "verbo", "verde", "vereda",
52108 "verja", "verso", "verter", "vía", "viaje", "vibrar", "vicio", "víctima", "vida", "vídeo",
52109 "vidrio", "viejo", "viernes", "vigor", "vil", "villa", "vinagre", "vino", "viñedo", "violín",
52110 "viral", "virgo", "virtud", "visor", "víspera", "vista", "vitamina", "viudo", "vivaz", "vivero",
52111 "vivir", "vivo", "volcán", "volumen", "volver", "voraz", "votar", "voto", "voz", "vuelo",
52112 "vulgar", "yacer", "yate", "yegua", "yema", "yerno", "yeso", "yodo", "yoga", "yogur",
52113 "zafiro", "zanja", "zapato", "zarza", "zona", "zorro", "zumo", "zurdo"]
52115 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
52116 WORDLISTS["chinese_simplified"] = [
52117 "的", "一", "是", "在", "不", "了", "有", "和", "人", "这",
52118 "中", "大", "为", "上", "个", "国", "我", "以", "要", "他",
52119 "时", "来", "用", "们", "生", "到", "作", "地", "于", "出",
52120 "就", "分", "对", "成", "会", "可", "主", "发", "年", "动",
52121 "同", "工", "也", "能", "下", "过", "子", "说", "产", "种",
52122 "面", "而", "方", "后", "多", "定", "行", "学", "法", "所",
52123 "民", "得", "经", "十", "三", "之", "进", "着", "等", "部",
52124 "度", "家", "电", "力", "里", "如", "水", "化", "高", "自",
52125 "二", "理", "起", "小", "物", "现", "实", "加", "量", "都",
52126 "两", "体", "制", "机", "当", "使", "点", "从", "业", "本",
52127 "去", "把", "性", "好", "应", "开", "它", "合", "还", "因",
52128 "由", "其", "些", "然", "前", "外", "天", "政", "四", "日",
52129 "那", "社", "义", "事", "平", "形", "相", "全", "表", "间",
52130 "样", "与", "关", "各", "重", "新", "线", "内", "数", "正",
52131 "心", "反", "你", "明", "看", "原", "又", "么", "利", "比",
52132 "或", "但", "质", "气", "第", "向", "道", "命", "此", "变",
52133 "条", "只", "没", "结", "解", "问", "意", "建", "月", "公",
52134 "无", "系", "军", "很", "情", "者", "最", "立", "代", "想",
52135 "已", "通", "并", "提", "直", "题", "党", "程", "展", "五",
52136 "果", "料", "象", "员", "革", "位", "入", "常", "文", "总",
52137 "次", "品", "式", "活", "设", "及", "管", "特", "件", "长",
52138 "求", "老", "头", "基", "资", "边", "流", "路", "级", "少",
52139 "图", "山", "统", "接", "知", "较", "将", "组", "见", "计",
52140 "别", "她", "手", "角", "期", "根", "论", "运", "农", "指",
52141 "几", "九", "区", "强", "放", "决", "西", "被", "干", "做",
52142 "必", "战", "先", "回", "则", "任", "取", "据", "处", "队",
52143 "南", "给", "色", "光", "门", "即", "保", "治", "北", "造",
52144 "百", "规", "热", "领", "七", "海", "口", "东", "导", "器",
52145 "压", "志", "世", "金", "增", "争", "济", "阶", "油", "思",
52146 "术", "极", "交", "受", "联", "什", "认", "六", "共", "权",
52147 "收", "证", "改", "清", "美", "再", "采", "转", "更", "单",
52148 "风", "切", "打", "白", "教", "速", "花", "带", "安", "场",
52149 "身", "车", "例", "真", "务", "具", "万", "每", "目", "至",
52150 "达", "走", "积", "示", "议", "声", "报", "斗", "完", "类",
52151 "八", "离", "华", "名", "确", "才", "科", "张", "信", "马",
52152 "节", "话", "米", "整", "空", "元", "况", "今", "集", "温",
52153 "传", "土", "许", "步", "群", "广", "石", "记", "需", "段",
52154 "研", "界", "拉", "林", "律", "叫", "且", "究", "观", "越",
52155 "织", "装", "影", "算", "低", "持", "音", "众", "书", "布",
52156 "复", "容", "儿", "须", "际", "商", "非", "验", "连", "断",
52157 "深", "难", "近", "矿", "千", "周", "委", "素", "技", "备",
52158 "半", "办", "青", "省", "列", "习", "响", "约", "支", "般",
52159 "史", "感", "劳", "便", "团", "往", "酸", "历", "市", "克",
52160 "何", "除", "消", "构", "府", "称", "太", "准", "精", "值",
52161 "号", "率", "族", "维", "划", "选", "标", "写", "存", "候",
52162 "毛", "亲", "快", "效", "斯", "院", "查", "江", "型", "眼",
52163 "王", "按", "格", "养", "易", "置", "派", "层", "片", "始",
52164 "却", "专", "状", "育", "厂", "京", "识", "适", "属", "圆",
52165 "包", "火", "住", "调", "满", "县", "局", "照", "参", "红",
52166 "细", "引", "听", "该", "铁", "价", "严", "首", "底", "液",
52167 "官", "德", "随", "病", "苏", "失", "尔", "死", "讲", "配",
52168 "女", "黄", "推", "显", "谈", "罪", "神", "艺", "呢", "席",
52169 "含", "企", "望", "密", "批", "营", "项", "防", "举", "球",
52170 "英", "氧", "势", "告", "李", "台", "落", "木", "帮", "轮",
52171 "破", "亚", "师", "围", "注", "远", "字", "材", "排", "供",
52172 "河", "态", "封", "另", "施", "减", "树", "溶", "怎", "止",
52173 "案", "言", "士", "均", "武", "固", "叶", "鱼", "波", "视",
52174 "仅", "费", "紧", "爱", "左", "章", "早", "朝", "害", "续",
52175 "轻", "服", "试", "食", "充", "兵", "源", "判", "护", "司",
52176 "足", "某", "练", "差", "致", "板", "田", "降", "黑", "犯",
52177 "负", "击", "范", "继", "兴", "似", "余", "坚", "曲", "输",
52178 "修", "故", "城", "夫", "够", "送", "笔", "船", "占", "右",
52179 "财", "吃", "富", "春", "职", "觉", "汉", "画", "功", "巴",
52180 "跟", "虽", "杂", "飞", "检", "吸", "助", "升", "阳", "互",
52181 "初", "创", "抗", "考", "投", "坏", "策", "古", "径", "换",
52182 "未", "跑", "留", "钢", "曾", "端", "责", "站", "简", "述",
52183 "钱", "副", "尽", "帝", "射", "草", "冲", "承", "独", "令",
52184 "限", "阿", "宣", "环", "双", "请", "超", "微", "让", "控",
52185 "州", "良", "轴", "找", "否", "纪", "益", "依", "优", "顶",
52186 "础", "载", "倒", "房", "突", "坐", "粉", "敌", "略", "客",
52187 "袁", "冷", "胜", "绝", "析", "块", "剂", "测", "丝", "协",
52188 "诉", "念", "陈", "仍", "罗", "盐", "友", "洋", "错", "苦",
52189 "夜", "刑", "移", "频", "逐", "靠", "混", "母", "短", "皮",
52190 "终", "聚", "汽", "村", "云", "哪", "既", "距", "卫", "停",
52191 "烈", "央", "察", "烧", "迅", "境", "若", "印", "洲", "刻",
52192 "括", "激", "孔", "搞", "甚", "室", "待", "核", "校", "散",
52193 "侵", "吧", "甲", "游", "久", "菜", "味", "旧", "模", "湖",
52194 "货", "损", "预", "阻", "毫", "普", "稳", "乙", "妈", "植",
52195 "息", "扩", "银", "语", "挥", "酒", "守", "拿", "序", "纸",
52196 "医", "缺", "雨", "吗", "针", "刘", "啊", "急", "唱", "误",
52197 "训", "愿", "审", "附", "获", "茶", "鲜", "粮", "斤", "孩",
52198 "脱", "硫", "肥", "善", "龙", "演", "父", "渐", "血", "欢",
52199 "械", "掌", "歌", "沙", "刚", "攻", "谓", "盾", "讨", "晚",
52200 "粒", "乱", "燃", "矛", "乎", "杀", "药", "宁", "鲁", "贵",
52201 "钟", "煤", "读", "班", "伯", "香", "介", "迫", "句", "丰",
52202 "培", "握", "兰", "担", "弦", "蛋", "沉", "假", "穿", "执",
52203 "答", "乐", "谁", "顺", "烟", "缩", "征", "脸", "喜", "松",
52204 "脚", "困", "异", "免", "背", "星", "福", "买", "染", "井",
52205 "概", "慢", "怕", "磁", "倍", "祖", "皇", "促", "静", "补",
52206 "评", "翻", "肉", "践", "尼", "衣", "宽", "扬", "棉", "希",
52207 "伤", "操", "垂", "秋", "宜", "氢", "套", "督", "振", "架",
52208 "亮", "末", "宪", "庆", "编", "牛", "触", "映", "雷", "销",
52209 "诗", "座", "居", "抓", "裂", "胞", "呼", "娘", "景", "威",
52210 "绿", "晶", "厚", "盟", "衡", "鸡", "孙", "延", "危", "胶",
52211 "屋", "乡", "临", "陆", "顾", "掉", "呀", "灯", "岁", "措",
52212 "束", "耐", "剧", "玉", "赵", "跳", "哥", "季", "课", "凯",
52213 "胡", "额", "款", "绍", "卷", "齐", "伟", "蒸", "殖", "永",
52214 "宗", "苗", "川", "炉", "岩", "弱", "零", "杨", "奏", "沿",
52215 "露", "杆", "探", "滑", "镇", "饭", "浓", "航", "怀", "赶",
52216 "库", "夺", "伊", "灵", "税", "途", "灭", "赛", "归", "召",
52217 "鼓", "播", "盘", "裁", "险", "康", "唯", "录", "菌", "纯",
52218 "借", "糖", "盖", "横", "符", "私", "努", "堂", "域", "枪",
52219 "润", "幅", "哈", "竟", "熟", "虫", "泽", "脑", "壤", "碳",
52220 "欧", "遍", "侧", "寨", "敢", "彻", "虑", "斜", "薄", "庭",
52221 "纳", "弹", "饲", "伸", "折", "麦", "湿", "暗", "荷", "瓦",
52222 "塞", "床", "筑", "恶", "户", "访", "塔", "奇", "透", "梁",
52223 "刀", "旋", "迹", "卡", "氯", "遇", "份", "毒", "泥", "退",
52224 "洗", "摆", "灰", "彩", "卖", "耗", "夏", "择", "忙", "铜",
52225 "献", "硬", "予", "繁", "圈", "雪", "函", "亦", "抽", "篇",
52226 "阵", "阴", "丁", "尺", "追", "堆", "雄", "迎", "泛", "爸",
52227 "楼", "避", "谋", "吨", "野", "猪", "旗", "累", "偏", "典",
52228 "馆", "索", "秦", "脂", "潮", "爷", "豆", "忽", "托", "惊",
52229 "塑", "遗", "愈", "朱", "替", "纤", "粗", "倾", "尚", "痛",
52230 "楚", "谢", "奋", "购", "磨", "君", "池", "旁", "碎", "骨",
52231 "监", "捕", "弟", "暴", "割", "贯", "殊", "释", "词", "亡",
52232 "壁", "顿", "宝", "午", "尘", "闻", "揭", "炮", "残", "冬",
52233 "桥", "妇", "警", "综", "招", "吴", "付", "浮", "遭", "徐",
52234 "您", "摇", "谷", "赞", "箱", "隔", "订", "男", "吹", "园",
52235 "纷", "唐", "败", "宋", "玻", "巨", "耕", "坦", "荣", "闭",
52236 "湾", "键", "凡", "驻", "锅", "救", "恩", "剥", "凝", "碱",
52237 "齿", "截", "炼", "麻", "纺", "禁", "废", "盛", "版", "缓",
52238 "净", "睛", "昌", "婚", "涉", "筒", "嘴", "插", "岸", "朗",
52239 "庄", "街", "藏", "姑", "贸", "腐", "奴", "啦", "惯", "乘",
52240 "伙", "恢", "匀", "纱", "扎", "辩", "耳", "彪", "臣", "亿",
52241 "璃", "抵", "脉", "秀", "萨", "俄", "网", "舞", "店", "喷",
52242 "纵", "寸", "汗", "挂", "洪", "贺", "闪", "柬", "爆", "烯",
52243 "津", "稻", "墙", "软", "勇", "像", "滚", "厘", "蒙", "芳",
52244 "肯", "坡", "柱", "荡", "腿", "仪", "旅", "尾", "轧", "冰",
52245 "贡", "登", "黎", "削", "钻", "勒", "逃", "障", "氨", "郭",
52246 "峰", "币", "港", "伏", "轨", "亩", "毕", "擦", "莫", "刺",
52247 "浪", "秘", "援", "株", "健", "售", "股", "岛", "甘", "泡",
52248 "睡", "童", "铸", "汤", "阀", "休", "汇", "舍", "牧", "绕",
52249 "炸", "哲", "磷", "绩", "朋", "淡", "尖", "启", "陷", "柴",
52250 "呈", "徒", "颜", "泪", "稍", "忘", "泵", "蓝", "拖", "洞",
52251 "授", "镜", "辛", "壮", "锋", "贫", "虚", "弯", "摩", "泰",
52252 "幼", "廷", "尊", "窗", "纲", "弄", "隶", "疑", "氏", "宫",
52253 "姐", "震", "瑞", "怪", "尤", "琴", "循", "描", "膜", "违",
52254 "夹", "腰", "缘", "珠", "穷", "森", "枝", "竹", "沟", "催",
52255 "绳", "忆", "邦", "剩", "幸", "浆", "栏", "拥", "牙", "贮",
52256 "礼", "滤", "钠", "纹", "罢", "拍", "咱", "喊", "袖", "埃",
52257 "勤", "罚", "焦", "潜", "伍", "墨", "欲", "缝", "姓", "刊",
52258 "饱", "仿", "奖", "铝", "鬼", "丽", "跨", "默", "挖", "链",
52259 "扫", "喝", "袋", "炭", "污", "幕", "诸", "弧", "励", "梅",
52260 "奶", "洁", "灾", "舟", "鉴", "苯", "讼", "抱", "毁", "懂",
52261 "寒", "智", "埔", "寄", "届", "跃", "渡", "挑", "丹", "艰",
52262 "贝", "碰", "拔", "爹", "戴", "码", "梦", "芽", "熔", "赤",
52263 "渔", "哭", "敬", "颗", "奔", "铅", "仲", "虎", "稀", "妹",
52264 "乏", "珍", "申", "桌", "遵", "允", "隆", "螺", "仓", "魏",
52265 "锐", "晓", "氮", "兼", "隐", "碍", "赫", "拨", "忠", "肃",
52266 "缸", "牵", "抢", "博", "巧", "壳", "兄", "杜", "讯", "诚",
52267 "碧", "祥", "柯", "页", "巡", "矩", "悲", "灌", "龄", "伦",
52268 "票", "寻", "桂", "铺", "圣", "恐", "恰", "郑", "趣", "抬",
52269 "荒", "腾", "贴", "柔", "滴", "猛", "阔", "辆", "妻", "填",
52270 "撤", "储", "签", "闹", "扰", "紫", "砂", "递", "戏", "吊",
52271 "陶", "伐", "喂", "疗", "瓶", "婆", "抚", "臂", "摸", "忍",
52272 "虾", "蜡", "邻", "胸", "巩", "挤", "偶", "弃", "槽", "劲",
52273 "乳", "邓", "吉", "仁", "烂", "砖", "租", "乌", "舰", "伴",
52274 "瓜", "浅", "丙", "暂", "燥", "橡", "柳", "迷", "暖", "牌",
52275 "秧", "胆", "详", "簧", "踏", "瓷", "谱", "呆", "宾", "糊",
52276 "洛", "辉", "愤", "竞", "隙", "怒", "粘", "乃", "绪", "肩",
52277 "籍", "敏", "涂", "熙", "皆", "侦", "悬", "掘", "享", "纠",
52278 "醒", "狂", "锁", "淀", "恨", "牲", "霸", "爬", "赏", "逆",
52279 "玩", "陵", "祝", "秒", "浙", "貌", "役", "彼", "悉", "鸭",
52280 "趋", "凤", "晨", "畜", "辈", "秩", "卵", "署", "梯", "炎",
52281 "滩", "棋", "驱", "筛", "峡", "冒", "啥", "寿", "译", "浸",
52282 "泉", "帽", "迟", "硅", "疆", "贷", "漏", "稿", "冠", "嫩",
52283 "胁", "芯", "牢", "叛", "蚀", "奥", "鸣", "岭", "羊", "凭",
52284 "串", "塘", "绘", "酵", "融", "盆", "锡", "庙", "筹", "冻",
52285 "辅", "摄", "袭", "筋", "拒", "僚", "旱", "钾", "鸟", "漆",
52286 "沈", "眉", "疏", "添", "棒", "穗", "硝", "韩", "逼", "扭",
52287 "侨", "凉", "挺", "碗", "栽", "炒", "杯", "患", "馏", "劝",
52288 "豪", "辽", "勃", "鸿", "旦", "吏", "拜", "狗", "埋", "辊",
52289 "掩", "饮", "搬", "骂", "辞", "勾", "扣", "估", "蒋", "绒",
52290 "雾", "丈", "朵", "姆", "拟", "宇", "辑", "陕", "雕", "偿",
52291 "蓄", "崇", "剪", "倡", "厅", "咬", "驶", "薯", "刷", "斥",
52292 "番", "赋", "奉", "佛", "浇", "漫", "曼", "扇", "钙", "桃",
52293 "扶", "仔", "返", "俗", "亏", "腔", "鞋", "棱", "覆", "框",
52294 "悄", "叔", "撞", "骗", "勘", "旺", "沸", "孤", "吐", "孟",
52295 "渠", "屈", "疾", "妙", "惜", "仰", "狠", "胀", "谐", "抛",
52296 "霉", "桑", "岗", "嘛", "衰", "盗", "渗", "脏", "赖", "涌",
52297 "甜", "曹", "阅", "肌", "哩", "厉", "烃", "纬", "毅", "昨",
52298 "伪", "症", "煮", "叹", "钉", "搭", "茎", "笼", "酷", "偷",
52299 "弓", "锥", "恒", "杰", "坑", "鼻", "翼", "纶", "叙", "狱",
52300 "逮", "罐", "络", "棚", "抑", "膨", "蔬", "寺", "骤", "穆",
52301 "冶", "枯", "册", "尸", "凸", "绅", "坯", "牺", "焰", "轰",
52302 "欣", "晋", "瘦", "御", "锭", "锦", "丧", "旬", "锻", "垄",
52303 "搜", "扑", "邀", "亭", "酯", "迈", "舒", "脆", "酶", "闲",
52304 "忧", "酚", "顽", "羽", "涨", "卸", "仗", "陪", "辟", "惩",
52305 "杭", "姚", "肚", "捉", "飘", "漂", "昆", "欺", "吾", "郎",
52306 "烷", "汁", "呵", "饰", "萧", "雅", "邮", "迁", "燕", "撒",
52307 "姻", "赴", "宴", "烦", "债", "帐", "斑", "铃", "旨", "醇",
52308 "董", "饼", "雏", "姿", "拌", "傅", "腹", "妥", "揉", "贤",
52309 "拆", "歪", "葡", "胺", "丢", "浩", "徽", "昂", "垫", "挡",
52310 "览", "贪", "慰", "缴", "汪", "慌", "冯", "诺", "姜", "谊",
52311 "凶", "劣", "诬", "耀", "昏", "躺", "盈", "骑", "乔", "溪",
52312 "丛", "卢", "抹", "闷", "咨", "刮", "驾", "缆", "悟", "摘",
52313 "铒", "掷", "颇", "幻", "柄", "惠", "惨", "佳", "仇", "腊",
52314 "窝", "涤", "剑", "瞧", "堡", "泼", "葱", "罩", "霍", "捞",
52315 "胎", "苍", "滨", "俩", "捅", "湘", "砍", "霞", "邵", "萄",
52316 "疯", "淮", "遂", "熊", "粪", "烘", "宿", "档", "戈", "驳",
52317 "嫂", "裕", "徙", "箭", "捐", "肠", "撑", "晒", "辨", "殿",
52318 "莲", "摊", "搅", "酱", "屏", "疫", "哀", "蔡", "堵", "沫",
52319 "皱", "畅", "叠", "阁", "莱", "敲", "辖", "钩", "痕", "坝",
52320 "巷", "饿", "祸", "丘", "玄", "溜", "曰", "逻", "彭", "尝",
52321 "卿", "妨", "艇", "吞", "韦", "怨", "矮", "歇" ]
52323 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
52324 WORDLISTS["chinese_traditional"] = [
52325 "的", "一", "是", "在", "不", "了", "有", "和", "人", "這",
52326 "中", "大", "為", "上", "個", "國", "我", "以", "要", "他",
52327 "時", "來", "用", "們", "生", "到", "作", "地", "於", "出",
52328 "就", "分", "對", "成", "會", "可", "主", "發", "年", "動",
52329 "同", "工", "也", "能", "下", "過", "子", "說", "產", "種",
52330 "面", "而", "方", "後", "多", "定", "行", "學", "法", "所",
52331 "民", "得", "經", "十", "三", "之", "進", "著", "等", "部",
52332 "度", "家", "電", "力", "裡", "如", "水", "化", "高", "自",
52333 "二", "理", "起", "小", "物", "現", "實", "加", "量", "都",
52334 "兩", "體", "制", "機", "當", "使", "點", "從", "業", "本",
52335 "去", "把", "性", "好", "應", "開", "它", "合", "還", "因",
52336 "由", "其", "些", "然", "前", "外", "天", "政", "四", "日",
52337 "那", "社", "義", "事", "平", "形", "相", "全", "表", "間",
52338 "樣", "與", "關", "各", "重", "新", "線", "內", "數", "正",
52339 "心", "反", "你", "明", "看", "原", "又", "麼", "利", "比",
52340 "或", "但", "質", "氣", "第", "向", "道", "命", "此", "變",
52341 "條", "只", "沒", "結", "解", "問", "意", "建", "月", "公",
52342 "無", "系", "軍", "很", "情", "者", "最", "立", "代", "想",
52343 "已", "通", "並", "提", "直", "題", "黨", "程", "展", "五",
52344 "果", "料", "象", "員", "革", "位", "入", "常", "文", "總",
52345 "次", "品", "式", "活", "設", "及", "管", "特", "件", "長",
52346 "求", "老", "頭", "基", "資", "邊", "流", "路", "級", "少",
52347 "圖", "山", "統", "接", "知", "較", "將", "組", "見", "計",
52348 "別", "她", "手", "角", "期", "根", "論", "運", "農", "指",
52349 "幾", "九", "區", "強", "放", "決", "西", "被", "幹", "做",
52350 "必", "戰", "先", "回", "則", "任", "取", "據", "處", "隊",
52351 "南", "給", "色", "光", "門", "即", "保", "治", "北", "造",
52352 "百", "規", "熱", "領", "七", "海", "口", "東", "導", "器",
52353 "壓", "志", "世", "金", "增", "爭", "濟", "階", "油", "思",
52354 "術", "極", "交", "受", "聯", "什", "認", "六", "共", "權",
52355 "收", "證", "改", "清", "美", "再", "採", "轉", "更", "單",
52356 "風", "切", "打", "白", "教", "速", "花", "帶", "安", "場",
52357 "身", "車", "例", "真", "務", "具", "萬", "每", "目", "至",
52358 "達", "走", "積", "示", "議", "聲", "報", "鬥", "完", "類",
52359 "八", "離", "華", "名", "確", "才", "科", "張", "信", "馬",
52360 "節", "話", "米", "整", "空", "元", "況", "今", "集", "溫",
52361 "傳", "土", "許", "步", "群", "廣", "石", "記", "需", "段",
52362 "研", "界", "拉", "林", "律", "叫", "且", "究", "觀", "越",
52363 "織", "裝", "影", "算", "低", "持", "音", "眾", "書", "布",
52364 "复", "容", "兒", "須", "際", "商", "非", "驗", "連", "斷",
52365 "深", "難", "近", "礦", "千", "週", "委", "素", "技", "備",
52366 "半", "辦", "青", "省", "列", "習", "響", "約", "支", "般",
52367 "史", "感", "勞", "便", "團", "往", "酸", "歷", "市", "克",
52368 "何", "除", "消", "構", "府", "稱", "太", "準", "精", "值",
52369 "號", "率", "族", "維", "劃", "選", "標", "寫", "存", "候",
52370 "毛", "親", "快", "效", "斯", "院", "查", "江", "型", "眼",
52371 "王", "按", "格", "養", "易", "置", "派", "層", "片", "始",
52372 "卻", "專", "狀", "育", "廠", "京", "識", "適", "屬", "圓",
52373 "包", "火", "住", "調", "滿", "縣", "局", "照", "參", "紅",
52374 "細", "引", "聽", "該", "鐵", "價", "嚴", "首", "底", "液",
52375 "官", "德", "隨", "病", "蘇", "失", "爾", "死", "講", "配",
52376 "女", "黃", "推", "顯", "談", "罪", "神", "藝", "呢", "席",
52377 "含", "企", "望", "密", "批", "營", "項", "防", "舉", "球",
52378 "英", "氧", "勢", "告", "李", "台", "落", "木", "幫", "輪",
52379 "破", "亞", "師", "圍", "注", "遠", "字", "材", "排", "供",
52380 "河", "態", "封", "另", "施", "減", "樹", "溶", "怎", "止",
52381 "案", "言", "士", "均", "武", "固", "葉", "魚", "波", "視",
52382 "僅", "費", "緊", "愛", "左", "章", "早", "朝", "害", "續",
52383 "輕", "服", "試", "食", "充", "兵", "源", "判", "護", "司",
52384 "足", "某", "練", "差", "致", "板", "田", "降", "黑", "犯",
52385 "負", "擊", "范", "繼", "興", "似", "餘", "堅", "曲", "輸",
52386 "修", "故", "城", "夫", "夠", "送", "筆", "船", "佔", "右",
52387 "財", "吃", "富", "春", "職", "覺", "漢", "畫", "功", "巴",
52388 "跟", "雖", "雜", "飛", "檢", "吸", "助", "昇", "陽", "互",
52389 "初", "創", "抗", "考", "投", "壞", "策", "古", "徑", "換",
52390 "未", "跑", "留", "鋼", "曾", "端", "責", "站", "簡", "述",
52391 "錢", "副", "盡", "帝", "射", "草", "衝", "承", "獨", "令",
52392 "限", "阿", "宣", "環", "雙", "請", "超", "微", "讓", "控",
52393 "州", "良", "軸", "找", "否", "紀", "益", "依", "優", "頂",
52394 "礎", "載", "倒", "房", "突", "坐", "粉", "敵", "略", "客",
52395 "袁", "冷", "勝", "絕", "析", "塊", "劑", "測", "絲", "協",
52396 "訴", "念", "陳", "仍", "羅", "鹽", "友", "洋", "錯", "苦",
52397 "夜", "刑", "移", "頻", "逐", "靠", "混", "母", "短", "皮",
52398 "終", "聚", "汽", "村", "雲", "哪", "既", "距", "衛", "停",
52399 "烈", "央", "察", "燒", "迅", "境", "若", "印", "洲", "刻",
52400 "括", "激", "孔", "搞", "甚", "室", "待", "核", "校", "散",
52401 "侵", "吧", "甲", "遊", "久", "菜", "味", "舊", "模", "湖",
52402 "貨", "損", "預", "阻", "毫", "普", "穩", "乙", "媽", "植",
52403 "息", "擴", "銀", "語", "揮", "酒", "守", "拿", "序", "紙",
52404 "醫", "缺", "雨", "嗎", "針", "劉", "啊", "急", "唱", "誤",
52405 "訓", "願", "審", "附", "獲", "茶", "鮮", "糧", "斤", "孩",
52406 "脫", "硫", "肥", "善", "龍", "演", "父", "漸", "血", "歡",
52407 "械", "掌", "歌", "沙", "剛", "攻", "謂", "盾", "討", "晚",
52408 "粒", "亂", "燃", "矛", "乎", "殺", "藥", "寧", "魯", "貴",
52409 "鐘", "煤", "讀", "班", "伯", "香", "介", "迫", "句", "豐",
52410 "培", "握", "蘭", "擔", "弦", "蛋", "沉", "假", "穿", "執",
52411 "答", "樂", "誰", "順", "煙", "縮", "徵", "臉", "喜", "松",
52412 "腳", "困", "異", "免", "背", "星", "福", "買", "染", "井",
52413 "概", "慢", "怕", "磁", "倍", "祖", "皇", "促", "靜", "補",
52414 "評", "翻", "肉", "踐", "尼", "衣", "寬", "揚", "棉", "希",
52415 "傷", "操", "垂", "秋", "宜", "氫", "套", "督", "振", "架",
52416 "亮", "末", "憲", "慶", "編", "牛", "觸", "映", "雷", "銷",
52417 "詩", "座", "居", "抓", "裂", "胞", "呼", "娘", "景", "威",
52418 "綠", "晶", "厚", "盟", "衡", "雞", "孫", "延", "危", "膠",
52419 "屋", "鄉", "臨", "陸", "顧", "掉", "呀", "燈", "歲", "措",
52420 "束", "耐", "劇", "玉", "趙", "跳", "哥", "季", "課", "凱",
52421 "胡", "額", "款", "紹", "卷", "齊", "偉", "蒸", "殖", "永",
52422 "宗", "苗", "川", "爐", "岩", "弱", "零", "楊", "奏", "沿",
52423 "露", "桿", "探", "滑", "鎮", "飯", "濃", "航", "懷", "趕",
52424 "庫", "奪", "伊", "靈", "稅", "途", "滅", "賽", "歸", "召",
52425 "鼓", "播", "盤", "裁", "險", "康", "唯", "錄", "菌", "純",
52426 "借", "糖", "蓋", "橫", "符", "私", "努", "堂", "域", "槍",
52427 "潤", "幅", "哈", "竟", "熟", "蟲", "澤", "腦", "壤", "碳",
52428 "歐", "遍", "側", "寨", "敢", "徹", "慮", "斜", "薄", "庭",
52429 "納", "彈", "飼", "伸", "折", "麥", "濕", "暗", "荷", "瓦",
52430 "塞", "床", "築", "惡", "戶", "訪", "塔", "奇", "透", "梁",
52431 "刀", "旋", "跡", "卡", "氯", "遇", "份", "毒", "泥", "退",
52432 "洗", "擺", "灰", "彩", "賣", "耗", "夏", "擇", "忙", "銅",
52433 "獻", "硬", "予", "繁", "圈", "雪", "函", "亦", "抽", "篇",
52434 "陣", "陰", "丁", "尺", "追", "堆", "雄", "迎", "泛", "爸",
52435 "樓", "避", "謀", "噸", "野", "豬", "旗", "累", "偏", "典",
52436 "館", "索", "秦", "脂", "潮", "爺", "豆", "忽", "托", "驚",
52437 "塑", "遺", "愈", "朱", "替", "纖", "粗", "傾", "尚", "痛",
52438 "楚", "謝", "奮", "購", "磨", "君", "池", "旁", "碎", "骨",
52439 "監", "捕", "弟", "暴", "割", "貫", "殊", "釋", "詞", "亡",
52440 "壁", "頓", "寶", "午", "塵", "聞", "揭", "炮", "殘", "冬",
52441 "橋", "婦", "警", "綜", "招", "吳", "付", "浮", "遭", "徐",
52442 "您", "搖", "谷", "贊", "箱", "隔", "訂", "男", "吹", "園",
52443 "紛", "唐", "敗", "宋", "玻", "巨", "耕", "坦", "榮", "閉",
52444 "灣", "鍵", "凡", "駐", "鍋", "救", "恩", "剝", "凝", "鹼",
52445 "齒", "截", "煉", "麻", "紡", "禁", "廢", "盛", "版", "緩",
52446 "淨", "睛", "昌", "婚", "涉", "筒", "嘴", "插", "岸", "朗",
52447 "莊", "街", "藏", "姑", "貿", "腐", "奴", "啦", "慣", "乘",
52448 "夥", "恢", "勻", "紗", "扎", "辯", "耳", "彪", "臣", "億",
52449 "璃", "抵", "脈", "秀", "薩", "俄", "網", "舞", "店", "噴",
52450 "縱", "寸", "汗", "掛", "洪", "賀", "閃", "柬", "爆", "烯",
52451 "津", "稻", "牆", "軟", "勇", "像", "滾", "厘", "蒙", "芳",
52452 "肯", "坡", "柱", "盪", "腿", "儀", "旅", "尾", "軋", "冰",
52453 "貢", "登", "黎", "削", "鑽", "勒", "逃", "障", "氨", "郭",
52454 "峰", "幣", "港", "伏", "軌", "畝", "畢", "擦", "莫", "刺",
52455 "浪", "秘", "援", "株", "健", "售", "股", "島", "甘", "泡",
52456 "睡", "童", "鑄", "湯", "閥", "休", "匯", "舍", "牧", "繞",
52457 "炸", "哲", "磷", "績", "朋", "淡", "尖", "啟", "陷", "柴",
52458 "呈", "徒", "顏", "淚", "稍", "忘", "泵", "藍", "拖", "洞",
52459 "授", "鏡", "辛", "壯", "鋒", "貧", "虛", "彎", "摩", "泰",
52460 "幼", "廷", "尊", "窗", "綱", "弄", "隸", "疑", "氏", "宮",
52461 "姐", "震", "瑞", "怪", "尤", "琴", "循", "描", "膜", "違",
52462 "夾", "腰", "緣", "珠", "窮", "森", "枝", "竹", "溝", "催",
52463 "繩", "憶", "邦", "剩", "幸", "漿", "欄", "擁", "牙", "貯",
52464 "禮", "濾", "鈉", "紋", "罷", "拍", "咱", "喊", "袖", "埃",
52465 "勤", "罰", "焦", "潛", "伍", "墨", "欲", "縫", "姓", "刊",
52466 "飽", "仿", "獎", "鋁", "鬼", "麗", "跨", "默", "挖", "鏈",
52467 "掃", "喝", "袋", "炭", "污", "幕", "諸", "弧", "勵", "梅",
52468 "奶", "潔", "災", "舟", "鑑", "苯", "訟", "抱", "毀", "懂",
52469 "寒", "智", "埔", "寄", "屆", "躍", "渡", "挑", "丹", "艱",
52470 "貝", "碰", "拔", "爹", "戴", "碼", "夢", "芽", "熔", "赤",
52471 "漁", "哭", "敬", "顆", "奔", "鉛", "仲", "虎", "稀", "妹",
52472 "乏", "珍", "申", "桌", "遵", "允", "隆", "螺", "倉", "魏",
52473 "銳", "曉", "氮", "兼", "隱", "礙", "赫", "撥", "忠", "肅",
52474 "缸", "牽", "搶", "博", "巧", "殼", "兄", "杜", "訊", "誠",
52475 "碧", "祥", "柯", "頁", "巡", "矩", "悲", "灌", "齡", "倫",
52476 "票", "尋", "桂", "鋪", "聖", "恐", "恰", "鄭", "趣", "抬",
52477 "荒", "騰", "貼", "柔", "滴", "猛", "闊", "輛", "妻", "填",
52478 "撤", "儲", "簽", "鬧", "擾", "紫", "砂", "遞", "戲", "吊",
52479 "陶", "伐", "餵", "療", "瓶", "婆", "撫", "臂", "摸", "忍",
52480 "蝦", "蠟", "鄰", "胸", "鞏", "擠", "偶", "棄", "槽", "勁",
52481 "乳", "鄧", "吉", "仁", "爛", "磚", "租", "烏", "艦", "伴",
52482 "瓜", "淺", "丙", "暫", "燥", "橡", "柳", "迷", "暖", "牌",
52483 "秧", "膽", "詳", "簧", "踏", "瓷", "譜", "呆", "賓", "糊",
52484 "洛", "輝", "憤", "競", "隙", "怒", "粘", "乃", "緒", "肩",
52485 "籍", "敏", "塗", "熙", "皆", "偵", "懸", "掘", "享", "糾",
52486 "醒", "狂", "鎖", "淀", "恨", "牲", "霸", "爬", "賞", "逆",
52487 "玩", "陵", "祝", "秒", "浙", "貌", "役", "彼", "悉", "鴨",
52488 "趨", "鳳", "晨", "畜", "輩", "秩", "卵", "署", "梯", "炎",
52489 "灘", "棋", "驅", "篩", "峽", "冒", "啥", "壽", "譯", "浸",
52490 "泉", "帽", "遲", "矽", "疆", "貸", "漏", "稿", "冠", "嫩",
52491 "脅", "芯", "牢", "叛", "蝕", "奧", "鳴", "嶺", "羊", "憑",
52492 "串", "塘", "繪", "酵", "融", "盆", "錫", "廟", "籌", "凍",
52493 "輔", "攝", "襲", "筋", "拒", "僚", "旱", "鉀", "鳥", "漆",
52494 "沈", "眉", "疏", "添", "棒", "穗", "硝", "韓", "逼", "扭",
52495 "僑", "涼", "挺", "碗", "栽", "炒", "杯", "患", "餾", "勸",
52496 "豪", "遼", "勃", "鴻", "旦", "吏", "拜", "狗", "埋", "輥",
52497 "掩", "飲", "搬", "罵", "辭", "勾", "扣", "估", "蔣", "絨",
52498 "霧", "丈", "朵", "姆", "擬", "宇", "輯", "陝", "雕", "償",
52499 "蓄", "崇", "剪", "倡", "廳", "咬", "駛", "薯", "刷", "斥",
52500 "番", "賦", "奉", "佛", "澆", "漫", "曼", "扇", "鈣", "桃",
52501 "扶", "仔", "返", "俗", "虧", "腔", "鞋", "棱", "覆", "框",
52502 "悄", "叔", "撞", "騙", "勘", "旺", "沸", "孤", "吐", "孟",
52503 "渠", "屈", "疾", "妙", "惜", "仰", "狠", "脹", "諧", "拋",
52504 "黴", "桑", "崗", "嘛", "衰", "盜", "滲", "臟", "賴", "湧",
52505 "甜", "曹", "閱", "肌", "哩", "厲", "烴", "緯", "毅", "昨",
52506 "偽", "症", "煮", "嘆", "釘", "搭", "莖", "籠", "酷", "偷",
52507 "弓", "錐", "恆", "傑", "坑", "鼻", "翼", "綸", "敘", "獄",
52508 "逮", "罐", "絡", "棚", "抑", "膨", "蔬", "寺", "驟", "穆",
52509 "冶", "枯", "冊", "屍", "凸", "紳", "坯", "犧", "焰", "轟",
52510 "欣", "晉", "瘦", "禦", "錠", "錦", "喪", "旬", "鍛", "壟",
52511 "搜", "撲", "邀", "亭", "酯", "邁", "舒", "脆", "酶", "閒",
52512 "憂", "酚", "頑", "羽", "漲", "卸", "仗", "陪", "闢", "懲",
52513 "杭", "姚", "肚", "捉", "飄", "漂", "昆", "欺", "吾", "郎",
52514 "烷", "汁", "呵", "飾", "蕭", "雅", "郵", "遷", "燕", "撒",
52515 "姻", "赴", "宴", "煩", "債", "帳", "斑", "鈴", "旨", "醇",
52516 "董", "餅", "雛", "姿", "拌", "傅", "腹", "妥", "揉", "賢",
52517 "拆", "歪", "葡", "胺", "丟", "浩", "徽", "昂", "墊", "擋",
52518 "覽", "貪", "慰", "繳", "汪", "慌", "馮", "諾", "姜", "誼",
52519 "兇", "劣", "誣", "耀", "昏", "躺", "盈", "騎", "喬", "溪",
52520 "叢", "盧", "抹", "悶", "諮", "刮", "駕", "纜", "悟", "摘",
52521 "鉺", "擲", "頗", "幻", "柄", "惠", "慘", "佳", "仇", "臘",
52522 "窩", "滌", "劍", "瞧", "堡", "潑", "蔥", "罩", "霍", "撈",
52523 "胎", "蒼", "濱", "倆", "捅", "湘", "砍", "霞", "邵", "萄",
52524 "瘋", "淮", "遂", "熊", "糞", "烘", "宿", "檔", "戈", "駁",
52525 "嫂", "裕", "徙", "箭", "捐", "腸", "撐", "曬", "辨", "殿",
52526 "蓮", "攤", "攪", "醬", "屏", "疫", "哀", "蔡", "堵", "沫",
52527 "皺", "暢", "疊", "閣", "萊", "敲", "轄", "鉤", "痕", "壩",
52528 "巷", "餓", "禍", "丘", "玄", "溜", "曰", "邏", "彭", "嘗",
52529 "卿", "妨", "艇", "吞", "韋", "怨", "矮", "歇" ]
52531 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
52532 WORDLISTS["french"] = [
52533 "abaisser", "abandon", "abdiquer", "abeille", "abolir", "aborder", "aboutir", "aboyer", "abrasif", "abreuver",
52534 "abriter", "abroger", "abrupt", "absence", "absolu", "absurde", "abusif", "abyssal", "académie", "acajou",
52535 "acarien", "accabler", "accepter", "acclamer", "accolade", "accroche", "accuser", "acerbe", "achat", "acheter",
52536 "aciduler", "acier", "acompte", "acquérir", "acronyme", "acteur", "actif", "actuel", "adepte", "adéquat",
52537 "adhésif", "adjectif", "adjuger", "admettre", "admirer", "adopter", "adorer", "adoucir", "adresse", "adroit",
52538 "adulte", "adverbe", "aérer", "aéronef", "affaire", "affecter", "affiche", "affreux", "affubler", "agacer",
52539 "agencer", "agile", "agiter", "agrafer", "agréable", "agrume", "aider", "aiguille", "ailier", "aimable",
52540 "aisance", "ajouter", "ajuster", "alarmer", "alchimie", "alerte", "algèbre", "algue", "aliéner", "aliment",
52541 "alléger", "alliage", "allouer", "allumer", "alourdir", "alpaga", "altesse", "alvéole", "amateur", "ambigu",
52542 "ambre", "aménager", "amertume", "amidon", "amiral", "amorcer", "amour", "amovible", "amphibie", "ampleur",
52543 "amusant", "analyse", "anaphore", "anarchie", "anatomie", "ancien", "anéantir", "angle", "angoisse", "anguleux",
52544 "animal", "annexer", "annonce", "annuel", "anodin", "anomalie", "anonyme", "anormal", "antenne", "antidote",
52545 "anxieux", "apaiser", "apéritif", "aplanir", "apologie", "appareil", "appeler", "apporter", "appuyer", "aquarium",
52546 "aqueduc", "arbitre", "arbuste", "ardeur", "ardoise", "argent", "arlequin", "armature", "armement", "armoire",
52547 "armure", "arpenter", "arracher", "arriver", "arroser", "arsenic", "artériel", "article", "aspect", "asphalte",
52548 "aspirer", "assaut", "asservir", "assiette", "associer", "assurer", "asticot", "astre", "astuce", "atelier",
52549 "atome", "atrium", "atroce", "attaque", "attentif", "attirer", "attraper", "aubaine", "auberge", "audace",
52550 "audible", "augurer", "aurore", "automne", "autruche", "avaler", "avancer", "avarice", "avenir", "averse",
52551 "aveugle", "aviateur", "avide", "avion", "aviser", "avoine", "avouer", "avril", "axial", "axiome",
52552 "badge", "bafouer", "bagage", "baguette", "baignade", "balancer", "balcon", "baleine", "balisage", "bambin",
52553 "bancaire", "bandage", "banlieue", "bannière", "banquier", "barbier", "baril", "baron", "barque", "barrage",
52554 "bassin", "bastion", "bataille", "bateau", "batterie", "baudrier", "bavarder", "belette", "bélier", "belote",
52555 "bénéfice", "berceau", "berger", "berline", "bermuda", "besace", "besogne", "bétail", "beurre", "biberon",
52556 "bicycle", "bidule", "bijou", "bilan", "bilingue", "billard", "binaire", "biologie", "biopsie", "biotype",
52557 "biscuit", "bison", "bistouri", "bitume", "bizarre", "blafard", "blague", "blanchir", "blessant", "blinder",
52558 "blond", "bloquer", "blouson", "bobard", "bobine", "boire", "boiser", "bolide", "bonbon", "bondir",
52559 "bonheur", "bonifier", "bonus", "bordure", "borne", "botte", "boucle", "boueux", "bougie", "boulon",
52560 "bouquin", "bourse", "boussole", "boutique", "boxeur", "branche", "brasier", "brave", "brebis", "brèche",
52561 "breuvage", "bricoler", "brigade", "brillant", "brioche", "brique", "brochure", "broder", "bronzer", "brousse",
52562 "broyeur", "brume", "brusque", "brutal", "bruyant", "buffle", "buisson", "bulletin", "bureau", "burin",
52563 "bustier", "butiner", "butoir", "buvable", "buvette", "cabanon", "cabine", "cachette", "cadeau", "cadre",
52564 "caféine", "caillou", "caisson", "calculer", "calepin", "calibre", "calmer", "calomnie", "calvaire", "camarade",
52565 "caméra", "camion", "campagne", "canal", "caneton", "canon", "cantine", "canular", "capable", "caporal",
52566 "caprice", "capsule", "capter", "capuche", "carabine", "carbone", "caresser", "caribou", "carnage", "carotte",
52567 "carreau", "carton", "cascade", "casier", "casque", "cassure", "causer", "caution", "cavalier", "caverne",
52568 "caviar", "cédille", "ceinture", "céleste", "cellule", "cendrier", "censurer", "central", "cercle", "cérébral",
52569 "cerise", "cerner", "cerveau", "cesser", "chagrin", "chaise", "chaleur", "chambre", "chance", "chapitre",
52570 "charbon", "chasseur", "chaton", "chausson", "chavirer", "chemise", "chenille", "chéquier", "chercher", "cheval",
52571 "chien", "chiffre", "chignon", "chimère", "chiot", "chlorure", "chocolat", "choisir", "chose", "chouette",
52572 "chrome", "chute", "cigare", "cigogne", "cimenter", "cinéma", "cintrer", "circuler", "cirer", "cirque",
52573 "citerne", "citoyen", "citron", "civil", "clairon", "clameur", "claquer", "classe", "clavier", "client",
52574 "cligner", "climat", "clivage", "cloche", "clonage", "cloporte", "cobalt", "cobra", "cocasse", "cocotier",
52575 "coder", "codifier", "coffre", "cogner", "cohésion", "coiffer", "coincer", "colère", "colibri", "colline",
52576 "colmater", "colonel", "combat", "comédie", "commande", "compact", "concert", "conduire", "confier", "congeler",
52577 "connoter", "consonne", "contact", "convexe", "copain", "copie", "corail", "corbeau", "cordage", "corniche",
52578 "corpus", "correct", "cortège", "cosmique", "costume", "coton", "coude", "coupure", "courage", "couteau",
52579 "couvrir", "coyote", "crabe", "crainte", "cravate", "crayon", "créature", "créditer", "crémeux", "creuser",
52580 "crevette", "cribler", "crier", "cristal", "critère", "croire", "croquer", "crotale", "crucial", "cruel",
52581 "crypter", "cubique", "cueillir", "cuillère", "cuisine", "cuivre", "culminer", "cultiver", "cumuler", "cupide",
52582 "curatif", "curseur", "cyanure", "cycle", "cylindre", "cynique", "daigner", "damier", "danger", "danseur",
52583 "dauphin", "débattre", "débiter", "déborder", "débrider", "débutant", "décaler", "décembre", "déchirer", "décider",
52584 "déclarer", "décorer", "décrire", "décupler", "dédale", "déductif", "déesse", "défensif", "défiler", "défrayer",
52585 "dégager", "dégivrer", "déglutir", "dégrafer", "déjeuner", "délice", "déloger", "demander", "demeurer", "démolir",
52586 "dénicher", "dénouer", "dentelle", "dénuder", "départ", "dépenser", "déphaser", "déplacer", "déposer", "déranger",
52587 "dérober", "désastre", "descente", "désert", "désigner", "désobéir", "dessiner", "destrier", "détacher", "détester",
52588 "détourer", "détresse", "devancer", "devenir", "deviner", "devoir", "diable", "dialogue", "diamant", "dicter",
52589 "différer", "digérer", "digital", "digne", "diluer", "dimanche", "diminuer", "dioxyde", "directif", "diriger",
52590 "discuter", "disposer", "dissiper", "distance", "divertir", "diviser", "docile", "docteur", "dogme", "doigt",
52591 "domaine", "domicile", "dompter", "donateur", "donjon", "donner", "dopamine", "dortoir", "dorure", "dosage",
52592 "doseur", "dossier", "dotation", "douanier", "double", "douceur", "douter", "doyen", "dragon", "draper",
52593 "dresser", "dribbler", "droiture", "duperie", "duplexe", "durable", "durcir", "dynastie", "éblouir", "écarter",
52594 "écharpe", "échelle", "éclairer", "éclipse", "éclore", "écluse", "école", "économie", "écorce", "écouter",
52595 "écraser", "écrémer", "écrivain", "écrou", "écume", "écureuil", "édifier", "éduquer", "effacer", "effectif",
52596 "effigie", "effort", "effrayer", "effusion", "égaliser", "égarer", "éjecter", "élaborer", "élargir", "électron",
52597 "élégant", "éléphant", "élève", "éligible", "élitisme", "éloge", "élucider", "éluder", "emballer", "embellir",
52598 "embryon", "émeraude", "émission", "emmener", "émotion", "émouvoir", "empereur", "employer", "emporter", "emprise",
52599 "émulsion", "encadrer", "enchère", "enclave", "encoche", "endiguer", "endosser", "endroit", "enduire", "énergie",
52600 "enfance", "enfermer", "enfouir", "engager", "engin", "englober", "énigme", "enjamber", "enjeu", "enlever",
52601 "ennemi", "ennuyeux", "enrichir", "enrobage", "enseigne", "entasser", "entendre", "entier", "entourer", "entraver",
52602 "énumérer", "envahir", "enviable", "envoyer", "enzyme", "éolien", "épaissir", "épargne", "épatant", "épaule",
52603 "épicerie", "épidémie", "épier", "épilogue", "épine", "épisode", "épitaphe", "époque", "épreuve", "éprouver",
52604 "épuisant", "équerre", "équipe", "ériger", "érosion", "erreur", "éruption", "escalier", "espadon", "espèce",
52605 "espiègle", "espoir", "esprit", "esquiver", "essayer", "essence", "essieu", "essorer", "estime", "estomac",
52606 "estrade", "étagère", "étaler", "étanche", "étatique", "éteindre", "étendoir", "éternel", "éthanol", "éthique",
52607 "ethnie", "étirer", "étoffer", "étoile", "étonnant", "étourdir", "étrange", "étroit", "étude", "euphorie",
52608 "évaluer", "évasion", "éventail", "évidence", "éviter", "évolutif", "évoquer", "exact", "exagérer", "exaucer",
52609 "exceller", "excitant", "exclusif", "excuse", "exécuter", "exemple", "exercer", "exhaler", "exhorter", "exigence",
52610 "exiler", "exister", "exotique", "expédier", "explorer", "exposer", "exprimer", "exquis", "extensif", "extraire",
52611 "exulter", "fable", "fabuleux", "facette", "facile", "facture", "faiblir", "falaise", "fameux", "famille",
52612 "farceur", "farfelu", "farine", "farouche", "fasciner", "fatal", "fatigue", "faucon", "fautif", "faveur",
52613 "favori", "fébrile", "féconder", "fédérer", "félin", "femme", "fémur", "fendoir", "féodal", "fermer",
52614 "féroce", "ferveur", "festival", "feuille", "feutre", "février", "fiasco", "ficeler", "fictif", "fidèle",
52615 "figure", "filature", "filetage", "filière", "filleul", "filmer", "filou", "filtrer", "financer", "finir",
52616 "fiole", "firme", "fissure", "fixer", "flairer", "flamme", "flasque", "flatteur", "fléau", "flèche",
52617 "fleur", "flexion", "flocon", "flore", "fluctuer", "fluide", "fluvial", "folie", "fonderie", "fongible",
52618 "fontaine", "forcer", "forgeron", "formuler", "fortune", "fossile", "foudre", "fougère", "fouiller", "foulure",
52619 "fourmi", "fragile", "fraise", "franchir", "frapper", "frayeur", "frégate", "freiner", "frelon", "frémir",
52620 "frénésie", "frère", "friable", "friction", "frisson", "frivole", "froid", "fromage", "frontal", "frotter",
52621 "fruit", "fugitif", "fuite", "fureur", "furieux", "furtif", "fusion", "futur", "gagner", "galaxie",
52622 "galerie", "gambader", "garantir", "gardien", "garnir", "garrigue", "gazelle", "gazon", "géant", "gélatine",
52623 "gélule", "gendarme", "général", "génie", "genou", "gentil", "géologie", "géomètre", "géranium", "germe",
52624 "gestuel", "geyser", "gibier", "gicler", "girafe", "givre", "glace", "glaive", "glisser", "globe",
52625 "gloire", "glorieux", "golfeur", "gomme", "gonfler", "gorge", "gorille", "goudron", "gouffre", "goulot",
52626 "goupille", "gourmand", "goutte", "graduel", "graffiti", "graine", "grand", "grappin", "gratuit", "gravir",
52627 "grenat", "griffure", "griller", "grimper", "grogner", "gronder", "grotte", "groupe", "gruger", "grutier",
52628 "gruyère", "guépard", "guerrier", "guide", "guimauve", "guitare", "gustatif", "gymnaste", "gyrostat", "habitude",
52629 "hachoir", "halte", "hameau", "hangar", "hanneton", "haricot", "harmonie", "harpon", "hasard", "hélium",
52630 "hématome", "herbe", "hérisson", "hermine", "héron", "hésiter", "heureux", "hiberner", "hibou", "hilarant",
52631 "histoire", "hiver", "homard", "hommage", "homogène", "honneur", "honorer", "honteux", "horde", "horizon",
52632 "horloge", "hormone", "horrible", "houleux", "housse", "hublot", "huileux", "humain", "humble", "humide",
52633 "humour", "hurler", "hydromel", "hygiène", "hymne", "hypnose", "idylle", "ignorer", "iguane", "illicite",
52634 "illusion", "image", "imbiber", "imiter", "immense", "immobile", "immuable", "impact", "impérial", "implorer",
52635 "imposer", "imprimer", "imputer", "incarner", "incendie", "incident", "incliner", "incolore", "indexer", "indice",
52636 "inductif", "inédit", "ineptie", "inexact", "infini", "infliger", "informer", "infusion", "ingérer", "inhaler",
52637 "inhiber", "injecter", "injure", "innocent", "inoculer", "inonder", "inscrire", "insecte", "insigne", "insolite",
52638 "inspirer", "instinct", "insulter", "intact", "intense", "intime", "intrigue", "intuitif", "inutile", "invasion",
52639 "inventer", "inviter", "invoquer", "ironique", "irradier", "irréel", "irriter", "isoler", "ivoire", "ivresse",
52640 "jaguar", "jaillir", "jambe", "janvier", "jardin", "jauger", "jaune", "javelot", "jetable", "jeton",
52641 "jeudi", "jeunesse", "joindre", "joncher", "jongler", "joueur", "jouissif", "journal", "jovial", "joyau",
52642 "joyeux", "jubiler", "jugement", "junior", "jupon", "juriste", "justice", "juteux", "juvénile", "kayak",
52643 "kimono", "kiosque", "label", "labial", "labourer", "lacérer", "lactose", "lagune", "laine", "laisser",
52644 "laitier", "lambeau", "lamelle", "lampe", "lanceur", "langage", "lanterne", "lapin", "largeur", "larme",
52645 "laurier", "lavabo", "lavoir", "lecture", "légal", "léger", "légume", "lessive", "lettre", "levier",
52646 "lexique", "lézard", "liasse", "libérer", "libre", "licence", "licorne", "liège", "lièvre", "ligature",
52647 "ligoter", "ligue", "limer", "limite", "limonade", "limpide", "linéaire", "lingot", "lionceau", "liquide",
52648 "lisière", "lister", "lithium", "litige", "littoral", "livreur", "logique", "lointain", "loisir", "lombric",
52649 "loterie", "louer", "lourd", "loutre", "louve", "loyal", "lubie", "lucide", "lucratif", "lueur",
52650 "lugubre", "luisant", "lumière", "lunaire", "lundi", "luron", "lutter", "luxueux", "machine", "magasin",
52651 "magenta", "magique", "maigre", "maillon", "maintien", "mairie", "maison", "majorer", "malaxer", "maléfice",
52652 "malheur", "malice", "mallette", "mammouth", "mandater", "maniable", "manquant", "manteau", "manuel", "marathon",
52653 "marbre", "marchand", "mardi", "maritime", "marqueur", "marron", "marteler", "mascotte", "massif", "matériel",
52654 "matière", "matraque", "maudire", "maussade", "mauve", "maximal", "méchant", "méconnu", "médaille", "médecin",
52655 "méditer", "méduse", "meilleur", "mélange", "mélodie", "membre", "mémoire", "menacer", "mener", "menhir",
52656 "mensonge", "mentor", "mercredi", "mérite", "merle", "messager", "mesure", "métal", "météore", "méthode",
52657 "métier", "meuble", "miauler", "microbe", "miette", "mignon", "migrer", "milieu", "million", "mimique",
52658 "mince", "minéral", "minimal", "minorer", "minute", "miracle", "miroiter", "missile", "mixte", "mobile",
52659 "moderne", "moelleux", "mondial", "moniteur", "monnaie", "monotone", "monstre", "montagne", "monument", "moqueur",
52660 "morceau", "morsure", "mortier", "moteur", "motif", "mouche", "moufle", "moulin", "mousson", "mouton",
52661 "mouvant", "multiple", "munition", "muraille", "murène", "murmure", "muscle", "muséum", "musicien", "mutation",
52662 "muter", "mutuel", "myriade", "myrtille", "mystère", "mythique", "nageur", "nappe", "narquois", "narrer",
52663 "natation", "nation", "nature", "naufrage", "nautique", "navire", "nébuleux", "nectar", "néfaste", "négation",
52664 "négliger", "négocier", "neige", "nerveux", "nettoyer", "neurone", "neutron", "neveu", "niche", "nickel",
52665 "nitrate", "niveau", "noble", "nocif", "nocturne", "noirceur", "noisette", "nomade", "nombreux", "nommer",
52666 "normatif", "notable", "notifier", "notoire", "nourrir", "nouveau", "novateur", "novembre", "novice", "nuage",
52667 "nuancer", "nuire", "nuisible", "numéro", "nuptial", "nuque", "nutritif", "obéir", "objectif", "obliger",
52668 "obscur", "observer", "obstacle", "obtenir", "obturer", "occasion", "occuper", "océan", "octobre", "octroyer",
52669 "octupler", "oculaire", "odeur", "odorant", "offenser", "officier", "offrir", "ogive", "oiseau", "oisillon",
52670 "olfactif", "olivier", "ombrage", "omettre", "onctueux", "onduler", "onéreux", "onirique", "opale", "opaque",
52671 "opérer", "opinion", "opportun", "opprimer", "opter", "optique", "orageux", "orange", "orbite", "ordonner",
52672 "oreille", "organe", "orgueil", "orifice", "ornement", "orque", "ortie", "osciller", "osmose", "ossature",
52673 "otarie", "ouragan", "ourson", "outil", "outrager", "ouvrage", "ovation", "oxyde", "oxygène", "ozone",
52674 "paisible", "palace", "palmarès", "palourde", "palper", "panache", "panda", "pangolin", "paniquer", "panneau",
52675 "panorama", "pantalon", "papaye", "papier", "papoter", "papyrus", "paradoxe", "parcelle", "paresse", "parfumer",
52676 "parler", "parole", "parrain", "parsemer", "partager", "parure", "parvenir", "passion", "pastèque", "paternel",
52677 "patience", "patron", "pavillon", "pavoiser", "payer", "paysage", "peigne", "peintre", "pelage", "pélican",
52678 "pelle", "pelouse", "peluche", "pendule", "pénétrer", "pénible", "pensif", "pénurie", "pépite", "péplum",
52679 "perdrix", "perforer", "période", "permuter", "perplexe", "persil", "perte", "peser", "pétale", "petit",
52680 "pétrir", "peuple", "pharaon", "phobie", "phoque", "photon", "phrase", "physique", "piano", "pictural",
52681 "pièce", "pierre", "pieuvre", "pilote", "pinceau", "pipette", "piquer", "pirogue", "piscine", "piston",
52682 "pivoter", "pixel", "pizza", "placard", "plafond", "plaisir", "planer", "plaque", "plastron", "plateau",
52683 "pleurer", "plexus", "pliage", "plomb", "plonger", "pluie", "plumage", "pochette", "poésie", "poète",
52684 "pointe", "poirier", "poisson", "poivre", "polaire", "policier", "pollen", "polygone", "pommade", "pompier",
52685 "ponctuel", "pondérer", "poney", "portique", "position", "posséder", "posture", "potager", "poteau", "potion",
52686 "pouce", "poulain", "poumon", "pourpre", "poussin", "pouvoir", "prairie", "pratique", "précieux", "prédire",
52687 "préfixe", "prélude", "prénom", "présence", "prétexte", "prévoir", "primitif", "prince", "prison", "priver",
52688 "problème", "procéder", "prodige", "profond", "progrès", "proie", "projeter", "prologue", "promener", "propre",
52689 "prospère", "protéger", "prouesse", "proverbe", "prudence", "pruneau", "psychose", "public", "puceron", "puiser",
52690 "pulpe", "pulsar", "punaise", "punitif", "pupitre", "purifier", "puzzle", "pyramide", "quasar", "querelle",
52691 "question", "quiétude", "quitter", "quotient", "racine", "raconter", "radieux", "ragondin", "raideur", "raisin",
52692 "ralentir", "rallonge", "ramasser", "rapide", "rasage", "ratisser", "ravager", "ravin", "rayonner", "réactif",
52693 "réagir", "réaliser", "réanimer", "recevoir", "réciter", "réclamer", "récolter", "recruter", "reculer", "recycler",
52694 "rédiger", "redouter", "refaire", "réflexe", "réformer", "refrain", "refuge", "régalien", "région", "réglage",
52695 "régulier", "réitérer", "rejeter", "rejouer", "relatif", "relever", "relief", "remarque", "remède", "remise",
52696 "remonter", "remplir", "remuer", "renard", "renfort", "renifler", "renoncer", "rentrer", "renvoi", "replier",
52697 "reporter", "reprise", "reptile", "requin", "réserve", "résineux", "résoudre", "respect", "rester", "résultat",
52698 "rétablir", "retenir", "réticule", "retomber", "retracer", "réunion", "réussir", "revanche", "revivre", "révolte",
52699 "révulsif", "richesse", "rideau", "rieur", "rigide", "rigoler", "rincer", "riposter", "risible", "risque",
52700 "rituel", "rival", "rivière", "rocheux", "romance", "rompre", "ronce", "rondin", "roseau", "rosier",
52701 "rotatif", "rotor", "rotule", "rouge", "rouille", "rouleau", "routine", "royaume", "ruban", "rubis",
52702 "ruche", "ruelle", "rugueux", "ruiner", "ruisseau", "ruser", "rustique", "rythme", "sabler", "saboter",
52703 "sabre", "sacoche", "safari", "sagesse", "saisir", "salade", "salive", "salon", "saluer", "samedi",
52704 "sanction", "sanglier", "sarcasme", "sardine", "saturer", "saugrenu", "saumon", "sauter", "sauvage", "savant",
52705 "savonner", "scalpel", "scandale", "scélérat", "scénario", "sceptre", "schéma", "science", "scinder", "score",
52706 "scrutin", "sculpter", "séance", "sécable", "sécher", "secouer", "sécréter", "sédatif", "séduire", "seigneur",
52707 "séjour", "sélectif", "semaine", "sembler", "semence", "séminal", "sénateur", "sensible", "sentence", "séparer",
52708 "séquence", "serein", "sergent", "sérieux", "serrure", "sérum", "service", "sésame", "sévir", "sevrage",
52709 "sextuple", "sidéral", "siècle", "siéger", "siffler", "sigle", "signal", "silence", "silicium", "simple",
52710 "sincère", "sinistre", "siphon", "sirop", "sismique", "situer", "skier", "social", "socle", "sodium",
52711 "soigneux", "soldat", "soleil", "solitude", "soluble", "sombre", "sommeil", "somnoler", "sonde", "songeur",
52712 "sonnette", "sonore", "sorcier", "sortir", "sosie", "sottise", "soucieux", "soudure", "souffle", "soulever",
52713 "soupape", "source", "soutirer", "souvenir", "spacieux", "spatial", "spécial", "sphère", "spiral", "stable",
52714 "station", "sternum", "stimulus", "stipuler", "strict", "studieux", "stupeur", "styliste", "sublime", "substrat",
52715 "subtil", "subvenir", "succès", "sucre", "suffixe", "suggérer", "suiveur", "sulfate", "superbe", "supplier",
52716 "surface", "suricate", "surmener", "surprise", "sursaut", "survie", "suspect", "syllabe", "symbole", "symétrie",
52717 "synapse", "syntaxe", "système", "tabac", "tablier", "tactile", "tailler", "talent", "talisman", "talonner",
52718 "tambour", "tamiser", "tangible", "tapis", "taquiner", "tarder", "tarif", "tartine", "tasse", "tatami",
52719 "tatouage", "taupe", "taureau", "taxer", "témoin", "temporel", "tenaille", "tendre", "teneur", "tenir",
52720 "tension", "terminer", "terne", "terrible", "tétine", "texte", "thème", "théorie", "thérapie", "thorax",
52721 "tibia", "tiède", "timide", "tirelire", "tiroir", "tissu", "titane", "titre", "tituber", "toboggan",
52722 "tolérant", "tomate", "tonique", "tonneau", "toponyme", "torche", "tordre", "tornade", "torpille", "torrent",
52723 "torse", "tortue", "totem", "toucher", "tournage", "tousser", "toxine", "traction", "trafic", "tragique",
52724 "trahir", "train", "trancher", "travail", "trèfle", "tremper", "trésor", "treuil", "triage", "tribunal",
52725 "tricoter", "trilogie", "triomphe", "tripler", "triturer", "trivial", "trombone", "tronc", "tropical", "troupeau",
52726 "tuile", "tulipe", "tumulte", "tunnel", "turbine", "tuteur", "tutoyer", "tuyau", "tympan", "typhon",
52727 "typique", "tyran", "ubuesque", "ultime", "ultrason", "unanime", "unifier", "union", "unique", "unitaire",
52728 "univers", "uranium", "urbain", "urticant", "usage", "usine", "usuel", "usure", "utile", "utopie",
52729 "vacarme", "vaccin", "vagabond", "vague", "vaillant", "vaincre", "vaisseau", "valable", "valise", "vallon",
52730 "valve", "vampire", "vanille", "vapeur", "varier", "vaseux", "vassal", "vaste", "vecteur", "vedette",
52731 "végétal", "véhicule", "veinard", "véloce", "vendredi", "vénérer", "venger", "venimeux", "ventouse", "verdure",
52732 "vérin", "vernir", "verrou", "verser", "vertu", "veston", "vétéran", "vétuste", "vexant", "vexer",
52733 "viaduc", "viande", "victoire", "vidange", "vidéo", "vignette", "vigueur", "vilain", "village", "vinaigre",
52734 "violon", "vipère", "virement", "virtuose", "virus", "visage", "viseur", "vision", "visqueux", "visuel",
52735 "vital", "vitesse", "viticole", "vitrine", "vivace", "vivipare", "vocation", "voguer", "voile", "voisin",
52736 "voiture", "volaille", "volcan", "voltiger", "volume", "vorace", "vortex", "voter", "vouloir", "voyage",
52737 "voyelle", "wagon", "xénon", "yacht", "zèbre", "zénith", "zeste", "zoologie"]
52739 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
52740 WORDLISTS["italian"] = [
52741 "abaco", "abbaglio", "abbinato", "abete", "abisso", "abolire", "abrasivo", "abrogato", "accadere", "accenno",
52742 "accusato", "acetone", "achille", "acido", "acqua", "acre", "acrilico", "acrobata", "acuto", "adagio",
52743 "addebito", "addome", "adeguato", "aderire", "adipe", "adottare", "adulare", "affabile", "affetto", "affisso",
52744 "affranto", "aforisma", "afoso", "africano", "agave", "agente", "agevole", "aggancio", "agire", "agitare",
52745 "agonismo", "agricolo", "agrumeto", "aguzzo", "alabarda", "alato", "albatro", "alberato", "albo", "albume",
52746 "alce", "alcolico", "alettone", "alfa", "algebra", "aliante", "alibi", "alimento", "allagato", "allegro",
52747 "allievo", "allodola", "allusivo", "almeno", "alogeno", "alpaca", "alpestre", "altalena", "alterno", "alticcio",
52748 "altrove", "alunno", "alveolo", "alzare", "amalgama", "amanita", "amarena", "ambito", "ambrato", "ameba",
52749 "america", "ametista", "amico", "ammasso", "ammenda", "ammirare", "ammonito", "amore", "ampio", "ampliare",
52750 "amuleto", "anacardo", "anagrafe", "analista", "anarchia", "anatra", "anca", "ancella", "ancora", "andare",
52751 "andrea", "anello", "angelo", "angolare", "angusto", "anima", "annegare", "annidato", "anno", "annuncio",
52752 "anonimo", "anticipo", "anzi", "apatico", "apertura", "apode", "apparire", "appetito", "appoggio", "approdo",
52753 "appunto", "aprile", "arabica", "arachide", "aragosta", "araldica", "arancio", "aratura", "arazzo", "arbitro",
52754 "archivio", "ardito", "arenile", "argento", "argine", "arguto", "aria", "armonia", "arnese", "arredato",
52755 "arringa", "arrosto", "arsenico", "arso", "artefice", "arzillo", "asciutto", "ascolto", "asepsi", "asettico",
52756 "asfalto", "asino", "asola", "aspirato", "aspro", "assaggio", "asse", "assoluto", "assurdo", "asta",
52757 "astenuto", "astice", "astratto", "atavico", "ateismo", "atomico", "atono", "attesa", "attivare", "attorno",
52758 "attrito", "attuale", "ausilio", "austria", "autista", "autonomo", "autunno", "avanzato", "avere", "avvenire",
52759 "avviso", "avvolgere", "azione", "azoto", "azzimo", "azzurro", "babele", "baccano", "bacino", "baco",
52760 "badessa", "badilata", "bagnato", "baita", "balcone", "baldo", "balena", "ballata", "balzano", "bambino",
52761 "bandire", "baraonda", "barbaro", "barca", "baritono", "barlume", "barocco", "basilico", "basso", "batosta",
52762 "battuto", "baule", "bava", "bavosa", "becco", "beffa", "belgio", "belva", "benda", "benevole",
52763 "benigno", "benzina", "bere", "berlina", "beta", "bibita", "bici", "bidone", "bifido", "biga",
52764 "bilancia", "bimbo", "binocolo", "biologo", "bipede", "bipolare", "birbante", "birra", "biscotto", "bisesto",
52765 "bisnonno", "bisonte", "bisturi", "bizzarro", "blando", "blatta", "bollito", "bonifico", "bordo", "bosco",
52766 "botanico", "bottino", "bozzolo", "braccio", "bradipo", "brama", "branca", "bravura", "bretella", "brevetto",
52767 "brezza", "briglia", "brillante", "brindare", "broccolo", "brodo", "bronzina", "brullo", "bruno", "bubbone",
52768 "buca", "budino", "buffone", "buio", "bulbo", "buono", "burlone", "burrasca", "bussola", "busta",
52769 "cadetto", "caduco", "calamaro", "calcolo", "calesse", "calibro", "calmo", "caloria", "cambusa", "camerata",
52770 "camicia", "cammino", "camola", "campale", "canapa", "candela", "cane", "canino", "canotto", "cantina",
52771 "capace", "capello", "capitolo", "capogiro", "cappero", "capra", "capsula", "carapace", "carcassa", "cardo",
52772 "carisma", "carovana", "carretto", "cartolina", "casaccio", "cascata", "caserma", "caso", "cassone", "castello",
52773 "casuale", "catasta", "catena", "catrame", "cauto", "cavillo", "cedibile", "cedrata", "cefalo", "celebre",
52774 "cellulare", "cena", "cenone", "centesimo", "ceramica", "cercare", "certo", "cerume", "cervello", "cesoia",
52775 "cespo", "ceto", "chela", "chiaro", "chicca", "chiedere", "chimera", "china", "chirurgo", "chitarra",
52776 "ciao", "ciclismo", "cifrare", "cigno", "cilindro", "ciottolo", "circa", "cirrosi", "citrico", "cittadino",
52777 "ciuffo", "civetta", "civile", "classico", "clinica", "cloro", "cocco", "codardo", "codice", "coerente",
52778 "cognome", "collare", "colmato", "colore", "colposo", "coltivato", "colza", "coma", "cometa", "commando",
52779 "comodo", "computer", "comune", "conciso", "condurre", "conferma", "congelare", "coniuge", "connesso", "conoscere",
52780 "consumo", "continuo", "convegno", "coperto", "copione", "coppia", "copricapo", "corazza", "cordata", "coricato",
52781 "cornice", "corolla", "corpo", "corredo", "corsia", "cortese", "cosmico", "costante", "cottura", "covato",
52782 "cratere", "cravatta", "creato", "credere", "cremoso", "crescita", "creta", "criceto", "crinale", "crisi",
52783 "critico", "croce", "cronaca", "crostata", "cruciale", "crusca", "cucire", "cuculo", "cugino", "cullato",
52784 "cupola", "curatore", "cursore", "curvo", "cuscino", "custode", "dado", "daino", "dalmata", "damerino",
52785 "daniela", "dannoso", "danzare", "datato", "davanti", "davvero", "debutto", "decennio", "deciso", "declino",
52786 "decollo", "decreto", "dedicato", "definito", "deforme", "degno", "delegare", "delfino", "delirio", "delta",
52787 "demenza", "denotato", "dentro", "deposito", "derapata", "derivare", "deroga", "descritto", "deserto", "desiderio",
52788 "desumere", "detersivo", "devoto", "diametro", "dicembre", "diedro", "difeso", "diffuso", "digerire", "digitale",
52789 "diluvio", "dinamico", "dinnanzi", "dipinto", "diploma", "dipolo", "diradare", "dire", "dirotto", "dirupo",
52790 "disagio", "discreto", "disfare", "disgelo", "disposto", "distanza", "disumano", "dito", "divano", "divelto",
52791 "dividere", "divorato", "doblone", "docente", "doganale", "dogma", "dolce", "domato", "domenica", "dominare",
52792 "dondolo", "dono", "dormire", "dote", "dottore", "dovuto", "dozzina", "drago", "druido", "dubbio",
52793 "dubitare", "ducale", "duna", "duomo", "duplice", "duraturo", "ebano", "eccesso", "ecco", "eclissi",
52794 "economia", "edera", "edicola", "edile", "editoria", "educare", "egemonia", "egli", "egoismo", "egregio",
52795 "elaborato", "elargire", "elegante", "elencato", "eletto", "elevare", "elfico", "elica", "elmo", "elsa",
52796 "eluso", "emanato", "emblema", "emesso", "emiro", "emotivo", "emozione", "empirico", "emulo", "endemico",
52797 "enduro", "energia", "enfasi", "enoteca", "entrare", "enzima", "epatite", "epilogo", "episodio", "epocale",
52798 "eppure", "equatore", "erario", "erba", "erboso", "erede", "eremita", "erigere", "ermetico", "eroe",
52799 "erosivo", "errante", "esagono", "esame", "esanime", "esaudire", "esca", "esempio", "esercito", "esibito",
52800 "esigente", "esistere", "esito", "esofago", "esortato", "esoso", "espanso", "espresso", "essenza", "esso",
52801 "esteso", "estimare", "estonia", "estroso", "esultare", "etilico", "etnico", "etrusco", "etto", "euclideo",
52802 "europa", "evaso", "evidenza", "evitato", "evoluto", "evviva", "fabbrica", "faccenda", "fachiro", "falco",
52803 "famiglia", "fanale", "fanfara", "fango", "fantasma", "fare", "farfalla", "farinoso", "farmaco", "fascia",
52804 "fastoso", "fasullo", "faticare", "fato", "favoloso", "febbre", "fecola", "fede", "fegato", "felpa",
52805 "feltro", "femmina", "fendere", "fenomeno", "fermento", "ferro", "fertile", "fessura", "festivo", "fetta",
52806 "feudo", "fiaba", "fiducia", "fifa", "figurato", "filo", "finanza", "finestra", "finire", "fiore",
52807 "fiscale", "fisico", "fiume", "flacone", "flamenco", "flebo", "flemma", "florido", "fluente", "fluoro",
52808 "fobico", "focaccia", "focoso", "foderato", "foglio", "folata", "folclore", "folgore", "fondente", "fonetico",
52809 "fonia", "fontana", "forbito", "forchetta", "foresta", "formica", "fornaio", "foro", "fortezza", "forzare",
52810 "fosfato", "fosso", "fracasso", "frana", "frassino", "fratello", "freccetta", "frenata", "fresco", "frigo",
52811 "frollino", "fronde", "frugale", "frutta", "fucilata", "fucsia", "fuggente", "fulmine", "fulvo", "fumante",
52812 "fumetto", "fumoso", "fune", "funzione", "fuoco", "furbo", "furgone", "furore", "fuso", "futile",
52813 "gabbiano", "gaffe", "galateo", "gallina", "galoppo", "gambero", "gamma", "garanzia", "garbo", "garofano",
52814 "garzone", "gasdotto", "gasolio", "gastrico", "gatto", "gaudio", "gazebo", "gazzella", "geco", "gelatina",
52815 "gelso", "gemello", "gemmato", "gene", "genitore", "gennaio", "genotipo", "gergo", "ghepardo", "ghiaccio",
52816 "ghisa", "giallo", "gilda", "ginepro", "giocare", "gioiello", "giorno", "giove", "girato", "girone",
52817 "gittata", "giudizio", "giurato", "giusto", "globulo", "glutine", "gnomo", "gobba", "golf", "gomito",
52818 "gommone", "gonfio", "gonna", "governo", "gracile", "grado", "grafico", "grammo", "grande", "grattare",
52819 "gravoso", "grazia", "greca", "gregge", "grifone", "grigio", "grinza", "grotta", "gruppo", "guadagno",
52820 "guaio", "guanto", "guardare", "gufo", "guidare", "ibernato", "icona", "identico", "idillio", "idolo",
52821 "idra", "idrico", "idrogeno", "igiene", "ignaro", "ignorato", "ilare", "illeso", "illogico", "illudere",
52822 "imballo", "imbevuto", "imbocco", "imbuto", "immane", "immerso", "immolato", "impacco", "impeto", "impiego",
52823 "importo", "impronta", "inalare", "inarcare", "inattivo", "incanto", "incendio", "inchino", "incisivo", "incluso",
52824 "incontro", "incrocio", "incubo", "indagine", "india", "indole", "inedito", "infatti", "infilare", "inflitto",
52825 "ingaggio", "ingegno", "inglese", "ingordo", "ingrosso", "innesco", "inodore", "inoltrare", "inondato", "insano",
52826 "insetto", "insieme", "insonnia", "insulina", "intasato", "intero", "intonaco", "intuito", "inumidire", "invalido",
52827 "invece", "invito", "iperbole", "ipnotico", "ipotesi", "ippica", "iride", "irlanda", "ironico", "irrigato",
52828 "irrorare", "isolato", "isotopo", "isterico", "istituto", "istrice", "italia", "iterare", "labbro", "labirinto",
52829 "lacca", "lacerato", "lacrima", "lacuna", "laddove", "lago", "lampo", "lancetta", "lanterna", "lardoso",
52830 "larga", "laringe", "lastra", "latenza", "latino", "lattuga", "lavagna", "lavoro", "legale", "leggero",
52831 "lembo", "lentezza", "lenza", "leone", "lepre", "lesivo", "lessato", "lesto", "letterale", "leva",
52832 "levigato", "libero", "lido", "lievito", "lilla", "limatura", "limitare", "limpido", "lineare", "lingua",
52833 "liquido", "lira", "lirica", "lisca", "lite", "litigio", "livrea", "locanda", "lode", "logica",
52834 "lombare", "londra", "longevo", "loquace", "lorenzo", "loto", "lotteria", "luce", "lucidato", "lumaca",
52835 "luminoso", "lungo", "lupo", "luppolo", "lusinga", "lusso", "lutto", "macabro", "macchina", "macero",
52836 "macinato", "madama", "magico", "maglia", "magnete", "magro", "maiolica", "malafede", "malgrado", "malinteso",
52837 "malsano", "malto", "malumore", "mana", "mancia", "mandorla", "mangiare", "manifesto", "mannaro", "manovra",
52838 "mansarda", "mantide", "manubrio", "mappa", "maratona", "marcire", "maretta", "marmo", "marsupio", "maschera",
52839 "massaia", "mastino", "materasso", "matricola", "mattone", "maturo", "mazurca", "meandro", "meccanico", "mecenate",
52840 "medesimo", "meditare", "mega", "melassa", "melis", "melodia", "meninge", "meno", "mensola", "mercurio",
52841 "merenda", "merlo", "meschino", "mese", "messere", "mestolo", "metallo", "metodo", "mettere", "miagolare",
52842 "mica", "micelio", "michele", "microbo", "midollo", "miele", "migliore", "milano", "milite", "mimosa",
52843 "minerale", "mini", "minore", "mirino", "mirtillo", "miscela", "missiva", "misto", "misurare", "mitezza",
52844 "mitigare", "mitra", "mittente", "mnemonico", "modello", "modifica", "modulo", "mogano", "mogio", "mole",
52845 "molosso", "monastero", "monco", "mondina", "monetario", "monile", "monotono", "monsone", "montato", "monviso",
52846 "mora", "mordere", "morsicato", "mostro", "motivato", "motosega", "motto", "movenza", "movimento", "mozzo",
52847 "mucca", "mucosa", "muffa", "mughetto", "mugnaio", "mulatto", "mulinello", "multiplo", "mummia", "munto",
52848 "muovere", "murale", "musa", "muscolo", "musica", "mutevole", "muto", "nababbo", "nafta", "nanometro",
52849 "narciso", "narice", "narrato", "nascere", "nastrare", "naturale", "nautica", "naviglio", "nebulosa", "necrosi",
52850 "negativo", "negozio", "nemmeno", "neofita", "neretto", "nervo", "nessuno", "nettuno", "neutrale", "neve",
52851 "nevrotico", "nicchia", "ninfa", "nitido", "nobile", "nocivo", "nodo", "nome", "nomina", "nordico",
52852 "normale", "norvegese", "nostrano", "notare", "notizia", "notturno", "novella", "nucleo", "nulla", "numero",
52853 "nuovo", "nutrire", "nuvola", "nuziale", "oasi", "obbedire", "obbligo", "obelisco", "oblio", "obolo",
52854 "obsoleto", "occasione", "occhio", "occidente", "occorrere", "occultare", "ocra", "oculato", "odierno", "odorare",
52855 "offerta", "offrire", "offuscato", "oggetto", "oggi", "ognuno", "olandese", "olfatto", "oliato", "oliva",
52856 "ologramma", "oltre", "omaggio", "ombelico", "ombra", "omega", "omissione", "ondoso", "onere", "onice",
52857 "onnivoro", "onorevole", "onta", "operato", "opinione", "opposto", "oracolo", "orafo", "ordine", "orecchino",
52858 "orefice", "orfano", "organico", "origine", "orizzonte", "orma", "ormeggio", "ornativo", "orologio", "orrendo",
52859 "orribile", "ortensia", "ortica", "orzata", "orzo", "osare", "oscurare", "osmosi", "ospedale", "ospite",
52860 "ossa", "ossidare", "ostacolo", "oste", "otite", "otre", "ottagono", "ottimo", "ottobre", "ovale",
52861 "ovest", "ovino", "oviparo", "ovocito", "ovunque", "ovviare", "ozio", "pacchetto", "pace", "pacifico",
52862 "padella", "padrone", "paese", "paga", "pagina", "palazzina", "palesare", "pallido", "palo", "palude",
52863 "pandoro", "pannello", "paolo", "paonazzo", "paprica", "parabola", "parcella", "parere", "pargolo", "pari",
52864 "parlato", "parola", "partire", "parvenza", "parziale", "passivo", "pasticca", "patacca", "patologia", "pattume",
52865 "pavone", "peccato", "pedalare", "pedonale", "peggio", "peloso", "penare", "pendice", "penisola", "pennuto",
52866 "penombra", "pensare", "pentola", "pepe", "pepita", "perbene", "percorso", "perdonato", "perforare", "pergamena",
52867 "periodo", "permesso", "perno", "perplesso", "persuaso", "pertugio", "pervaso", "pesatore", "pesista", "peso",
52868 "pestifero", "petalo", "pettine", "petulante", "pezzo", "piacere", "pianta", "piattino", "piccino", "picozza",
52869 "piega", "pietra", "piffero", "pigiama", "pigolio", "pigro", "pila", "pilifero", "pillola", "pilota",
52870 "pimpante", "pineta", "pinna", "pinolo", "pioggia", "piombo", "piramide", "piretico", "pirite", "pirolisi",
52871 "pitone", "pizzico", "placebo", "planare", "plasma", "platano", "plenario", "pochezza", "poderoso", "podismo",
52872 "poesia", "poggiare", "polenta", "poligono", "pollice", "polmonite", "polpetta", "polso", "poltrona", "polvere",
52873 "pomice", "pomodoro", "ponte", "popoloso", "porfido", "poroso", "porpora", "porre", "portata", "posa",
52874 "positivo", "possesso", "postulato", "potassio", "potere", "pranzo", "prassi", "pratica", "precluso", "predica",
52875 "prefisso", "pregiato", "prelievo", "premere", "prenotare", "preparato", "presenza", "pretesto", "prevalso", "prima",
52876 "principe", "privato", "problema", "procura", "produrre", "profumo", "progetto", "prolunga", "promessa", "pronome",
52877 "proposta", "proroga", "proteso", "prova", "prudente", "prugna", "prurito", "psiche", "pubblico", "pudica",
52878 "pugilato", "pugno", "pulce", "pulito", "pulsante", "puntare", "pupazzo", "pupilla", "puro", "quadro",
52879 "qualcosa", "quasi", "querela", "quota", "raccolto", "raddoppio", "radicale", "radunato", "raffica", "ragazzo",
52880 "ragione", "ragno", "ramarro", "ramingo", "ramo", "randagio", "rantolare", "rapato", "rapina", "rappreso",
52881 "rasatura", "raschiato", "rasente", "rassegna", "rastrello", "rata", "ravveduto", "reale", "recepire", "recinto",
52882 "recluta", "recondito", "recupero", "reddito", "redimere", "regalato", "registro", "regola", "regresso", "relazione",
52883 "remare", "remoto", "renna", "replica", "reprimere", "reputare", "resa", "residente", "responso", "restauro",
52884 "rete", "retina", "retorica", "rettifica", "revocato", "riassunto", "ribadire", "ribelle", "ribrezzo", "ricarica",
52885 "ricco", "ricevere", "riciclato", "ricordo", "ricreduto", "ridicolo", "ridurre", "rifasare", "riflesso", "riforma",
52886 "rifugio", "rigare", "rigettato", "righello", "rilassato", "rilevato", "rimanere", "rimbalzo", "rimedio", "rimorchio",
52887 "rinascita", "rincaro", "rinforzo", "rinnovo", "rinomato", "rinsavito", "rintocco", "rinuncia", "rinvenire", "riparato",
52888 "ripetuto", "ripieno", "riportare", "ripresa", "ripulire", "risata", "rischio", "riserva", "risibile", "riso",
52889 "rispetto", "ristoro", "risultato", "risvolto", "ritardo", "ritegno", "ritmico", "ritrovo", "riunione", "riva",
52890 "riverso", "rivincita", "rivolto", "rizoma", "roba", "robotico", "robusto", "roccia", "roco", "rodaggio",
52891 "rodere", "roditore", "rogito", "rollio", "romantico", "rompere", "ronzio", "rosolare", "rospo", "rotante",
52892 "rotondo", "rotula", "rovescio", "rubizzo", "rubrica", "ruga", "rullino", "rumine", "rumoroso", "ruolo",
52893 "rupe", "russare", "rustico", "sabato", "sabbiare", "sabotato", "sagoma", "salasso", "saldatura", "salgemma",
52894 "salivare", "salmone", "salone", "saltare", "saluto", "salvo", "sapere", "sapido", "saporito", "saraceno",
52895 "sarcasmo", "sarto", "sassoso", "satellite", "satira", "satollo", "saturno", "savana", "savio", "saziato",
52896 "sbadiglio", "sbalzo", "sbancato", "sbarra", "sbattere", "sbavare", "sbendare", "sbirciare", "sbloccato", "sbocciato",
52897 "sbrinare", "sbruffone", "sbuffare", "scabroso", "scadenza", "scala", "scambiare", "scandalo", "scapola", "scarso",
52898 "scatenare", "scavato", "scelto", "scenico", "scettro", "scheda", "schiena", "sciarpa", "scienza", "scindere",
52899 "scippo", "sciroppo", "scivolo", "sclerare", "scodella", "scolpito", "scomparto", "sconforto", "scoprire", "scorta",
52900 "scossone", "scozzese", "scriba", "scrollare", "scrutinio", "scuderia", "scultore", "scuola", "scuro", "scusare",
52901 "sdebitare", "sdoganare", "seccatura", "secondo", "sedano", "seggiola", "segnalato", "segregato", "seguito", "selciato",
52902 "selettivo", "sella", "selvaggio", "semaforo", "sembrare", "seme", "seminato", "sempre", "senso", "sentire",
52903 "sepolto", "sequenza", "serata", "serbato", "sereno", "serio", "serpente", "serraglio", "servire", "sestina",
52904 "setola", "settimana", "sfacelo", "sfaldare", "sfamato", "sfarzoso", "sfaticato", "sfera", "sfida", "sfilato",
52905 "sfinge", "sfocato", "sfoderare", "sfogo", "sfoltire", "sforzato", "sfratto", "sfruttato", "sfuggito", "sfumare",
52906 "sfuso", "sgabello", "sgarbato", "sgonfiare", "sgorbio", "sgrassato", "sguardo", "sibilo", "siccome", "sierra",
52907 "sigla", "signore", "silenzio", "sillaba", "simbolo", "simpatico", "simulato", "sinfonia", "singolo", "sinistro",
52908 "sino", "sintesi", "sinusoide", "sipario", "sisma", "sistole", "situato", "slitta", "slogatura", "sloveno",
52909 "smarrito", "smemorato", "smentito", "smeraldo", "smilzo", "smontare", "smottato", "smussato", "snellire", "snervato",
52910 "snodo", "sobbalzo", "sobrio", "soccorso", "sociale", "sodale", "soffitto", "sogno", "soldato", "solenne",
52911 "solido", "sollazzo", "solo", "solubile", "solvente", "somatico", "somma", "sonda", "sonetto", "sonnifero",
52912 "sopire", "soppeso", "sopra", "sorgere", "sorpasso", "sorriso", "sorso", "sorteggio", "sorvolato", "sospiro",
52913 "sosta", "sottile", "spada", "spalla", "spargere", "spatola", "spavento", "spazzola", "specie", "spedire",
52914 "spegnere", "spelatura", "speranza", "spessore", "spettrale", "spezzato", "spia", "spigoloso", "spillato", "spinoso",
52915 "spirale", "splendido", "sportivo", "sposo", "spranga", "sprecare", "spronato", "spruzzo", "spuntino", "squillo",
52916 "sradicare", "srotolato", "stabile", "stacco", "staffa", "stagnare", "stampato", "stantio", "starnuto", "stasera",
52917 "statuto", "stelo", "steppa", "sterzo", "stiletto", "stima", "stirpe", "stivale", "stizzoso", "stonato",
52918 "storico", "strappo", "stregato", "stridulo", "strozzare", "strutto", "stuccare", "stufo", "stupendo", "subentro",
52919 "succoso", "sudore", "suggerito", "sugo", "sultano", "suonare", "superbo", "supporto", "surgelato", "surrogato",
52920 "sussurro", "sutura", "svagare", "svedese", "sveglio", "svelare", "svenuto", "svezia", "sviluppo", "svista",
52921 "svizzera", "svolta", "svuotare", "tabacco", "tabulato", "tacciare", "taciturno", "tale", "talismano", "tampone",
52922 "tannino", "tara", "tardivo", "targato", "tariffa", "tarpare", "tartaruga", "tasto", "tattico", "taverna",
52923 "tavolata", "tazza", "teca", "tecnico", "telefono", "temerario", "tempo", "temuto", "tendone", "tenero",
52924 "tensione", "tentacolo", "teorema", "terme", "terrazzo", "terzetto", "tesi", "tesserato", "testato", "tetro",
52925 "tettoia", "tifare", "tigella", "timbro", "tinto", "tipico", "tipografo", "tiraggio", "tiro", "titanio",
52926 "titolo", "titubante", "tizio", "tizzone", "toccare", "tollerare", "tolto", "tombola", "tomo", "tonfo",
52927 "tonsilla", "topazio", "topologia", "toppa", "torba", "tornare", "torrone", "tortora", "toscano", "tossire",
52928 "tostatura", "totano", "trabocco", "trachea", "trafila", "tragedia", "tralcio", "tramonto", "transito", "trapano",
52929 "trarre", "trasloco", "trattato", "trave", "treccia", "tremolio", "trespolo", "tributo", "tricheco", "trifoglio",
52930 "trillo", "trincea", "trio", "tristezza", "triturato", "trivella", "tromba", "trono", "troppo", "trottola",
52931 "trovare", "truccato", "tubatura", "tuffato", "tulipano", "tumulto", "tunisia", "turbare", "turchino", "tuta",
52932 "tutela", "ubicato", "uccello", "uccisore", "udire", "uditivo", "uffa", "ufficio", "uguale", "ulisse",
52933 "ultimato", "umano", "umile", "umorismo", "uncinetto", "ungere", "ungherese", "unicorno", "unificato", "unisono",
52934 "unitario", "unte", "uovo", "upupa", "uragano", "urgenza", "urlo", "usanza", "usato", "uscito",
52935 "usignolo", "usuraio", "utensile", "utilizzo", "utopia", "vacante", "vaccinato", "vagabondo", "vagliato", "valanga",
52936 "valgo", "valico", "valletta", "valoroso", "valutare", "valvola", "vampata", "vangare", "vanitoso", "vano",
52937 "vantaggio", "vanvera", "vapore", "varano", "varcato", "variante", "vasca", "vedetta", "vedova", "veduto",
52938 "vegetale", "veicolo", "velcro", "velina", "velluto", "veloce", "venato", "vendemmia", "vento", "verace",
52939 "verbale", "vergogna", "verifica", "vero", "verruca", "verticale", "vescica", "vessillo", "vestale", "veterano",
52940 "vetrina", "vetusto", "viandante", "vibrante", "vicenda", "vichingo", "vicinanza", "vidimare", "vigilia", "vigneto",
52941 "vigore", "vile", "villano", "vimini", "vincitore", "viola", "vipera", "virgola", "virologo", "virulento",
52942 "viscoso", "visione", "vispo", "vissuto", "visura", "vita", "vitello", "vittima", "vivanda", "vivido",
52943 "viziare", "voce", "voga", "volatile", "volere", "volpe", "voragine", "vulcano", "zampogna", "zanna",
52944 "zappato", "zattera", "zavorra", "zefiro", "zelante", "zelo", "zenzero", "zerbino", "zibetto", "zinco",
52945 "zircone", "zitto", "zolla", "zotico", "zucchero", "zufolo", "zulu", "zuppa"]
52948 * Copyright (c)
2013 Pavol Rusnak
52950 * Permission is hereby granted, free of charge, to any person obtaining a copy of
52951 * this software and associated documentation files (the "Software"), to deal in
52952 * the Software without restriction, including without limitation the rights to
52953 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
52954 * of the Software, and to permit persons to whom the Software is furnished to do
52955 * so, subject to the following conditions:
52957 * The above copyright notice and this permission notice shall be included in all
52958 * copies or substantial portions of the Software.
52960 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
52961 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
52962 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
52963 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
52964 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
52965 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
52969 * Javascript port from python by Ian Coleman
52971 * Requires code from sjcl
52972 * https://github.com/bitwiseshiftleft/sjcl
52975 var Mnemonic = function(language) {
52977 var PBKDF2_ROUNDS =
2048;
52983 var hmacSHA512 = function(key) {
52984 var hasher = new sjcl.misc.hmac(key, sjcl.hash.sha512);
52985 this.encrypt = function() {
52986 return hasher.encrypt.apply(hasher, arguments);
52991 wordlist = WORDLISTS[language];
52992 if (wordlist.length != RADIX) {
52993 err = 'Wordlist should contain ' + RADIX + ' words, but it contains ' + wordlist.length + ' words.';
52998 self.generate = function(strength) {
52999 strength = strength ||
128;
53000 var r = strength %
32;
53002 throw 'Strength should be divisible by
32, but it is not (' + r + ').';
53004 var hasStrongCrypto = 'crypto' in window && window['crypto'] !== null;
53005 if (!hasStrongCrypto) {
53006 throw 'Mnemonic should be generated with strong randomness, but crypto.getRandomValues is unavailable';
53008 var buffer = new Uint8Array(strength /
8);
53009 var data = crypto.getRandomValues(buffer);
53010 return self.toMnemonic(data);
53013 self.toMnemonic = function(byteArray) {
53014 if (byteArray.length %
4 > 0) {
53015 throw 'Data length in bits should be divisible by
32, but it is not (' + byteArray.length + ' bytes = ' + byteArray.length*
8 + ' bits).'
53018 //h = hashlib.sha256(data).hexdigest()
53019 var data = byteArrayToWordArray(byteArray);
53020 var hash = sjcl.hash.sha256.hash(data);
53021 var h = sjcl.codec.hex.fromBits(hash);
53023 // b is a binary string, eg '
00111010101100...'
53024 //b = bin(int(binascii.hexlify(data),
16))[
2:].zfill(len(data) *
8) + \
53025 // bin(int(h,
16))[
2:].zfill(
256)[:len(data) *
8 /
32]
53027 // a = bin(int(binascii.hexlify(data),
16))[
2:].zfill(len(data) *
8)
53028 // c = bin(int(h,
16))[
2:].zfill(
256)
53029 // d = c[:len(data) *
8 /
32]
53030 var a = byteArrayToBinaryString(byteArray);
53031 var c = zfill(hexStringToBinaryString(h),
256);
53032 var d = c.substring(
0, byteArray.length *
8 /
32);
53033 // b = line1 + line2
53037 var blen = b.length /
11;
53038 for (var i=
0; i
<blen; i++) {
53039 var idx = parseInt(b.substring(i *
11, (i +
1) *
11),
2);
53040 result.push(wordlist[idx]);
53042 return self.joinWords(result);
53045 self.check = function(mnemonic) {
53046 var mnemonic = self.splitWords(mnemonic);
53047 if (mnemonic.length ==
0 || mnemonic.length %
3 > 0) {
53050 // idx = map(lambda x: bin(self.wordlist.index(x))[
2:].zfill(
11), mnemonic)
53052 for (var i=
0; i
<mnemonic.length; i++) {
53053 var word = mnemonic[i];
53054 var wordIndex = wordlist.indexOf(word);
53055 if (wordIndex == -
1) {
53058 var binaryIndex = zfill(wordIndex.toString(
2),
11);
53059 idx.push(binaryIndex);
53061 var b = idx.join('');
53063 //d = b[:l /
33 *
32]
53065 var d = b.substring(
0, l /
33 *
32);
53066 var h = b.substring(l - l /
33, l);
53067 //nd = binascii.unhexlify(hex(int(d,
2))[
2:].rstrip('L').zfill(l /
33 *
8))
53068 var nd = binaryStringToWordArray(d);
53069 //nh = bin(int(hashlib.sha256(nd).hexdigest(),
16))[
2:].zfill(
256)[:l /
33]
53070 var ndHash = sjcl.hash.sha256.hash(nd);
53071 var ndHex = sjcl.codec.hex.fromBits(ndHash);
53072 var ndBstr = zfill(hexStringToBinaryString(ndHex),
256);
53073 var nh = ndBstr.substring(
0,l/
33);
53077 self.toSeed = function(mnemonic, passphrase) {
53078 passphrase = passphrase || '';
53079 mnemonic = self.joinWords(self.splitWords(mnemonic)); // removes duplicate blanks
53080 var mnemonicNormalized = self.normalizeString(mnemonic);
53081 passphrase = self.normalizeString(passphrase)
53082 passphrase =
"mnemonic" + passphrase;
53083 var mnemonicBits = sjcl.codec.utf8String.toBits(mnemonicNormalized);
53084 var passphraseBits = sjcl.codec.utf8String.toBits(passphrase);
53085 var result = sjcl.misc.pbkdf2(mnemonicBits, passphraseBits, PBKDF2_ROUNDS,
512, hmacSHA512);
53086 var hashHex = sjcl.codec.hex.fromBits(result);
53090 self.splitWords = function(mnemonic) {
53091 return mnemonic.split(/\s/g).filter(function(x) { return x.length; });
53094 self.joinWords = function(words) {
53095 // Set space correctly depending on the language
53096 // see https://github.com/bitcoin/bips/blob/master/bip-
0039/bip-
0039-wordlists.md#japanese
53098 if (language ==
"japanese") {
53099 space =
"\u3000"; // ideographic space
53101 return words.join(space);
53104 self.normalizeString = function(str) {
53105 if (typeof str.normalize ==
"function") {
53106 return str.normalize(
"NFKD");
53109 // TODO decide how to handle this in the future.
53110 // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize
53115 function byteArrayToWordArray(data) {
53117 for (var i=
0; i
<data.length/
4; i++) {
53119 v += data[i*
4 +
0] <<
8 *
3;
53120 v += data[i*
4 +
1] <<
8 *
2;
53121 v += data[i*
4 +
2] <<
8 *
1;
53122 v += data[i*
4 +
3] <<
8 *
0;
53128 function byteArrayToBinaryString(data) {
53130 for (var i=
0; i
<data.length; i++) {
53131 bin += zfill(data[i].toString(
2),
8);
53136 function hexStringToBinaryString(hexString) {
53138 for (var i=
0; i
<hexString.length; i++) {
53139 binaryString += zfill(parseInt(hexString[i],
16).toString(
2),
4);
53141 return binaryString;
53144 function binaryStringToWordArray(binary) {
53145 var aLen = binary.length /
32;
53147 for (var i=
0; i
<aLen; i++) {
53148 var valueStr = binary.substring(
0,
32);
53149 var value = parseInt(valueStr,
2);
53151 binary = binary.slice(
32);
53156 // Pad a numeric string on the left with zero digits until the given width
53158 // Note this differs to the python implementation because it does not
53159 // handle numbers starting with a sign.
53160 function zfill(source, length) {
53161 source = source.toString();
53162 while (source.length < length) {
53163 source = '
0' + source;
53173 JavaScript BigInteger library version
0.9.1
53174 http://silentmatt.com/biginteger/
53176 Copyright (c)
2009 Matthew Crumley
<email@matthewcrumley.com
>
53177 Copyright (c)
2010,
2011 by John Tobey
<John.Tobey@gmail.com
>
53178 Licensed under the MIT license.
53180 Support for arbitrary internal representation base was added by
53185 File: biginteger.js
53191 (function(exports) {
53195 An arbitrarily-large integer.
53197 <BigInteger> objects should be considered immutable. None of the "built-in"
53198 methods modify *this* or their arguments. All properties should be
53199 considered private.
53201 All the methods of
<BigInteger> instances can be called "statically". The
53202 static versions are convenient if you don't already have a
<BigInteger>
53205 As an example, these calls are equivalent.
53207 > BigInteger(
4).multiply(
5); // returns BigInteger(
20);
53208 > BigInteger.multiply(
4,
5); // returns BigInteger(
20);
53211 > var a = BigInteger.toJSValue("
0b101010"); // Not completely useless...
53214 var CONSTRUCT = {}; // Unique token to call "private" version of constructor
53217 Constructor: BigInteger()
53218 Convert a value to a
<BigInteger>.
53220 Although
<BigInteger()
> is the constructor for
<BigInteger> objects, it is
53221 best not to call it as a constructor. If *n* is a
<BigInteger> object, it is
53222 simply returned as-is. Otherwise,
<BigInteger()
> is equivalent to
<parse>
53223 without a radix argument.
53225 > var n0 = BigInteger(); // Same as
<BigInteger.ZERO
>
53226 > var n1 = BigInteger("
123"); // Create a new
<BigInteger> with value
123
53227 > var n2 = BigInteger(
123); // Create a new
<BigInteger> with value
123
53228 > var n3 = BigInteger(n2); // Return n2, unchanged
53230 The constructor form only takes an array and a sign. *n* must be an
53231 array of numbers in little-endian order, where each digit is between
0
53232 and BigInteger.base. The second parameter sets the sign: -
1 for
53233 negative, +
1 for positive, or
0 for zero. The array is *not copied and
53234 may be modified*. If the array contains only zeros, the sign parameter
53235 is ignored and is forced to zero.
53237 > new BigInteger([
5], -
1): create a new BigInteger with value -
5
53241 n - Value to convert to a
<BigInteger>.
53245 A
<BigInteger> value.
53249 <parse>,
<BigInteger>
53251 function BigInteger(n, s, token) {
53252 if (token !== CONSTRUCT) {
53253 if (n instanceof BigInteger) {
53256 else if (typeof n === "undefined") {
53259 return BigInteger.parse(n);
53262 n = n || []; // Provide the nullary constructor for subclasses.
53263 while (n.length && !n[n.length -
1]) {
53267 this._s = n.length ? (s ||
1) :
0;
53270 BigInteger._construct = function(n, s) {
53271 return new BigInteger(n, s, CONSTRUCT);
53274 // Base-
10 speedup hacks in parse, toString, exp10 and log functions
53275 // require base to be a power of
10.
10^
7 is the largest such power
53276 // that won't cause a precision loss when digits are multiplied.
53277 var BigInteger_base =
10000000;
53278 var BigInteger_base_log10 =
7;
53280 BigInteger.base = BigInteger_base;
53281 BigInteger.base_log10 = BigInteger_base_log10;
53283 var ZERO = new BigInteger([],
0, CONSTRUCT);
53286 BigInteger.ZERO = ZERO;
53288 var ONE = new BigInteger([
1],
1, CONSTRUCT);
53291 BigInteger.ONE = ONE;
53293 var M_ONE = new BigInteger(ONE._d, -
1, CONSTRUCT);
53295 //
<BigInteger> -
1.
53296 BigInteger.M_ONE = M_ONE;
53299 // Shortcut for
<ZERO>.
53300 BigInteger._0 = ZERO;
53303 // Shortcut for
<ONE>.
53304 BigInteger._1 = ONE;
53308 Array of
<BigIntegers> from
0 to
36.
53310 These are used internally for parsing, but useful when you need a "small"
53315 <ZERO>,
<ONE>,
<_0>,
<_1>
53317 BigInteger.small = [
53320 /* Assuming BigInteger_base
> 36 */
53321 new BigInteger( [
2],
1, CONSTRUCT),
53322 new BigInteger( [
3],
1, CONSTRUCT),
53323 new BigInteger( [
4],
1, CONSTRUCT),
53324 new BigInteger( [
5],
1, CONSTRUCT),
53325 new BigInteger( [
6],
1, CONSTRUCT),
53326 new BigInteger( [
7],
1, CONSTRUCT),
53327 new BigInteger( [
8],
1, CONSTRUCT),
53328 new BigInteger( [
9],
1, CONSTRUCT),
53329 new BigInteger([
10],
1, CONSTRUCT),
53330 new BigInteger([
11],
1, CONSTRUCT),
53331 new BigInteger([
12],
1, CONSTRUCT),
53332 new BigInteger([
13],
1, CONSTRUCT),
53333 new BigInteger([
14],
1, CONSTRUCT),
53334 new BigInteger([
15],
1, CONSTRUCT),
53335 new BigInteger([
16],
1, CONSTRUCT),
53336 new BigInteger([
17],
1, CONSTRUCT),
53337 new BigInteger([
18],
1, CONSTRUCT),
53338 new BigInteger([
19],
1, CONSTRUCT),
53339 new BigInteger([
20],
1, CONSTRUCT),
53340 new BigInteger([
21],
1, CONSTRUCT),
53341 new BigInteger([
22],
1, CONSTRUCT),
53342 new BigInteger([
23],
1, CONSTRUCT),
53343 new BigInteger([
24],
1, CONSTRUCT),
53344 new BigInteger([
25],
1, CONSTRUCT),
53345 new BigInteger([
26],
1, CONSTRUCT),
53346 new BigInteger([
27],
1, CONSTRUCT),
53347 new BigInteger([
28],
1, CONSTRUCT),
53348 new BigInteger([
29],
1, CONSTRUCT),
53349 new BigInteger([
30],
1, CONSTRUCT),
53350 new BigInteger([
31],
1, CONSTRUCT),
53351 new BigInteger([
32],
1, CONSTRUCT),
53352 new BigInteger([
33],
1, CONSTRUCT),
53353 new BigInteger([
34],
1, CONSTRUCT),
53354 new BigInteger([
35],
1, CONSTRUCT),
53355 new BigInteger([
36],
1, CONSTRUCT)
53358 // Used for parsing/radix conversion
53359 BigInteger.digits =
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(
"");
53363 Convert a
<BigInteger> to a string.
53365 When *base* is greater than
10, letters are upper case.
53369 base - Optional base to represent the number in (default is base
10).
53370 Must be between
2 and
36 inclusive, or an Error will be thrown.
53374 The string representation of the
<BigInteger>.
53376 BigInteger.prototype.toString = function(base) {
53377 base = +base ||
10;
53378 if (base <
2 || base
> 36) {
53379 throw new Error(
"illegal radix " + base +
".");
53381 if (this._s ===
0) {
53385 var str = this._s <
0 ?
"-" :
"";
53386 str += this._d[this._d.length -
1].toString();
53387 for (var i = this._d.length -
2; i
>=
0; i--) {
53388 var group = this._d[i].toString();
53389 while (group.length < BigInteger_base_log10) group = '
0' + group;
53395 var numerals = BigInteger.digits;
53396 base = BigInteger.small[base];
53397 var sign = this._s;
53399 var n = this.abs();
53403 while (n._s !==
0) {
53404 var divmod = n.divRem(base);
53407 // TODO: This could be changed to unshift instead of reversing at the end.
53408 // Benchmark both to compare speeds.
53409 digits.push(numerals[digit.valueOf()]);
53411 return (sign <
0 ? "-" : "") + digits.reverse().join("");
53415 // Verify strings for parsing
53416 BigInteger.radixRegex = [
53458 Parse a string into a
<BigInteger>.
53460 *base* is optional but, if provided, must be from
2 to
36 inclusive. If
53461 *base* is not provided, it will be guessed based on the leading characters
53464 - "
0x" or "
0X": *base* =
16
53465 - "
0c" or "
0C": *base* =
8
53466 - "
0b" or "
0B": *base* =
2
53467 - else: *base* =
10
53469 If no base is provided, or *base* is
10, the number can be in exponential
53470 form. For example, these are all valid:
53472 > BigInteger.parse("
1e9"); // Same as "
1000000000"
53473 > BigInteger.parse("
1.234*
10^
3"); // Same as
1234
53474 > BigInteger.parse("
56789 *
10 ** -
2"); // Same as
567
53476 If any characters fall outside the range defined by the radix, an exception
53481 s - The string to parse.
53482 base - Optional radix (default is to guess based on *s*).
53486 a
<BigInteger> instance.
53488 BigInteger.parse = function(s, base) {
53489 // Expands a number in exponential form to decimal form.
53490 // expandExponential("-
13.441*
10^
5") === "
1344100";
53491 // expandExponential("
1.12300e-1") === "
0.112300";
53492 // expandExponential(
1000000000000000000000000000000) === "
1000000000000000000000000000000";
53493 function expandExponential(str) {
53494 str = str.replace(/\s*[*xX]\s*
10\s*(\^|\*\*)\s*/, "e");
53496 return str.replace(/^([+\-])?(\d+)\.?(\d*)[eE]([+\-]?\d+)$/, function(x, s, n, f, c) {
53499 var i = n.length + c;
53500 x = (l ? n : f).length;
53501 c = ((c = Math.abs(c))
>= x ? c - x + l :
0);
53502 var z = (new Array(c +
1)).join("
0");
53504 return (s || "") + (l ? r = z + r : r += z).substr(
0, i += l ? z.length :
0) + (i < r.length ? "." + r.substr(i) : "");
53509 if (typeof base === "undefined" || +base ===
10) {
53510 s = expandExponential(s);
53514 if (typeof base === "undefined") {
53515 prefixRE = '
0[xcb]';
53517 else if (base ==
16) {
53520 else if (base ==
8) {
53523 else if (base ==
2) {
53529 var parts = new RegExp('^([+\\-]?)(' + prefixRE + ')?([
0-
9a-z]*)(?:\\.\\d*)?$', 'i').exec(s);
53531 var sign = parts[
1] || "+";
53532 var baseSection = parts[
2] || "";
53533 var digits = parts[
3] || "";
53535 if (typeof base === "undefined") {
53537 if (baseSection === "
0x" || baseSection === "
0X") { // Hex
53540 else if (baseSection === "
0c" || baseSection === "
0C") { // Octal
53543 else if (baseSection === "
0b" || baseSection === "
0B") { // Binary
53550 else if (base <
2 || base
> 36) {
53551 throw new Error(
"Illegal radix " + base +
".");
53556 // Check for digits outside the range
53557 if (!(BigInteger.radixRegex[base].test(digits))) {
53558 throw new Error(
"Bad digit for radix " + base);
53561 // Strip leading zeros, and convert to array
53562 digits = digits.replace(/^
0+/,
"").split(
"");
53563 if (digits.length ===
0) {
53567 // Get the sign (we know it's not zero)
53568 sign = (sign ===
"-") ? -
1 :
1;
53573 while (digits.length
>= BigInteger_base_log10) {
53574 d.push(parseInt(digits.splice(digits.length-BigInteger.base_log10, BigInteger.base_log10).join(''),
10));
53576 d.push(parseInt(digits.join(''),
10));
53577 return new BigInteger(d, sign, CONSTRUCT);
53580 // Do the conversion
53582 base = BigInteger.small[base];
53583 var small = BigInteger.small;
53584 for (var i =
0; i < digits.length; i++) {
53585 d = d.multiply(base).add(small[parseInt(digits[i],
36)]);
53587 return new BigInteger(d._d, sign, CONSTRUCT);
53590 throw new Error("Invalid BigInteger format: " + s);
53596 Add two
<BigIntegers>.
53600 n - The number to add to *this*. Will be converted to a
<BigInteger>.
53604 The numbers added together.
53608 <subtract>,
<multiply>,
<quotient>,
<next>
53610 BigInteger.prototype.add = function(n) {
53611 if (this._s ===
0) {
53612 return BigInteger(n);
53619 if (this._s !== n._s) {
53621 return this.subtract(n);
53628 var sum = new Array(Math.max(al, bl) +
1);
53629 var size = Math.min(al, bl);
53633 for (var i =
0; i < size; i++) {
53634 digit = a[i] + b[i] + carry;
53635 sum[i] = digit % BigInteger_base;
53636 carry = (digit / BigInteger_base) |
0;
53642 for (i = size; carry && i < al; i++) {
53643 digit = a[i] + carry;
53644 sum[i] = digit % BigInteger_base;
53645 carry = (digit / BigInteger_base) |
0;
53651 for ( ; i < al; i++) {
53655 return new BigInteger(sum, this._s, CONSTRUCT);
53660 Get the additive inverse of a
<BigInteger>.
53664 A
<BigInteger> with the same magnatude, but with the opposite sign.
53670 BigInteger.prototype.negate = function() {
53671 return new BigInteger(this._d, (-this._s) |
0, CONSTRUCT);
53676 Get the absolute value of a
<BigInteger>.
53680 A
<BigInteger> with the same magnatude, but always positive (or zero).
53686 BigInteger.prototype.abs = function() {
53687 return (this._s <
0) ? this.negate() : this;
53692 Subtract two
<BigIntegers>.
53696 n - The number to subtract from *this*. Will be converted to a
<BigInteger>.
53700 The *n* subtracted from *this*.
53704 <add>,
<multiply>,
<quotient>,
<prev>
53706 BigInteger.prototype.subtract = function(n) {
53707 if (this._s ===
0) {
53708 return BigInteger(n).negate();
53715 if (this._s !== n._s) {
53717 return this.add(n);
53721 // negative - negative =
> -|a| - -|b| =
> -|a| + |b| =
> |b| - |a|
53723 m = new BigInteger(n._d,
1, CONSTRUCT);
53724 n = new BigInteger(this._d,
1, CONSTRUCT);
53727 // Both are positive =
> a - b
53728 var sign = m.compareAbs(n);
53732 else if (sign <
0) {
53744 var diff = new Array(al); // al
>= bl since a
> b
53749 for (i =
0; i < bl; i++) {
53750 digit = a[i] - borrow - b[i];
53752 digit += BigInteger_base;
53760 for (i = bl; i < al; i++) {
53761 digit = a[i] - borrow;
53763 digit += BigInteger_base;
53771 for ( ; i < al; i++) {
53775 return new BigInteger(diff, sign, CONSTRUCT);
53779 function addOne(n, sign) {
53781 var sum = a.slice();
53786 var digit = (a[i] ||
0) +
1;
53787 sum[i] = digit % BigInteger_base;
53788 if (digit <= BigInteger_base -
1) {
53794 return new BigInteger(sum, sign, CONSTRUCT);
53797 function subtractOne(n, sign) {
53799 var sum = a.slice();
53804 var digit = (a[i] ||
0) -
1;
53806 sum[i] = digit + BigInteger_base;
53815 return new BigInteger(sum, sign, CONSTRUCT);
53820 Get the next
<BigInteger> (add one).
53830 BigInteger.prototype.next = function() {
53835 return subtractOne(this, -
1);
53838 return addOne(this,
1);
53844 Get the previous
<BigInteger> (subtract one).
53854 BigInteger.prototype.prev = function() {
53859 return addOne(this, -
1);
53862 return subtractOne(this,
1);
53868 Function: compareAbs
53869 Compare the absolute value of two
<BigIntegers>.
53871 Calling
<compareAbs> is faster than calling
<abs> twice, then
<compare>.
53875 n - The number to compare to *this*. Will be converted to a
<BigInteger>.
53879 -
1,
0, or +
1 if *|this|* is less than, equal to, or greater than *|n|*.
53885 BigInteger.prototype.compareAbs = function(n) {
53890 if (!(n instanceof BigInteger)) {
53891 if (!isFinite(n)) {
53892 return(isNaN(n) ? n : -
1);
53897 if (this._s ===
0) {
53898 return (n._s !==
0) ? -
1 :
0;
53904 var l = this._d.length;
53905 var nl = n._d.length;
53915 for (var i = l-
1; i
>=
0; i--) {
53916 if (a[i] !== b[i]) {
53917 return a[i] < b[i] ? -
1 :
1;
53926 Compare two
<BigIntegers>.
53930 n - The number to compare to *this*. Will be converted to a
<BigInteger>.
53934 -
1,
0, or +
1 if *this* is less than, equal to, or greater than *n*.
53938 <compareAbs>,
<isPositive>,
<isNegative>,
<isUnit>
53940 BigInteger.prototype.compare = function(n) {
53947 if (this._s ===
0) {
53951 if (this._s === n._s) { // both positive or both negative
53952 var cmp = this.compareAbs(n);
53953 return cmp * this._s;
53962 Return true iff *this* is either
1 or -
1.
53966 true if *this* compares equal to
<BigInteger.ONE
> or
<BigInteger.M_ONE
>.
53970 <isZero>,
<isNegative>,
<isPositive>,
<compareAbs>,
<compare>,
53971 <BigInteger.ONE
>,
<BigInteger.M_ONE
>
53973 BigInteger.prototype.isUnit = function() {
53974 return this === ONE ||
53976 (this._d.length ===
1 && this._d[
0] ===
1);
53981 Multiply two
<BigIntegers>.
53985 n - The number to multiply *this* by. Will be converted to a
53990 The numbers multiplied together.
53994 <add>,
<subtract>,
<quotient>,
<square>
53996 BigInteger.prototype.multiply = function(n) {
53997 // TODO: Consider adding Karatsuba multiplication for large numbers
53998 if (this._s ===
0) {
54006 if (this.isUnit()) {
54014 return this.negate();
54019 return this.square();
54022 var r = (this._d.length
>= n._d.length);
54023 var a = (r ? this : n)._d; // a will be longer than b
54024 var b = (r ? n : this)._d;
54029 var partial = new Array(pl);
54031 for (i =
0; i < pl; i++) {
54035 for (i =
0; i < bl; i++) {
54038 var jlimit = al + i;
54040 for (var j = i; j < jlimit; j++) {
54041 digit = partial[j] + bi * a[j - i] + carry;
54042 carry = (digit / BigInteger_base) |
0;
54043 partial[j] = (digit % BigInteger_base) |
0;
54046 digit = partial[j] + carry;
54047 carry = (digit / BigInteger_base) |
0;
54048 partial[j] = digit % BigInteger_base;
54051 return new BigInteger(partial, this._s * n._s, CONSTRUCT);
54054 // Multiply a BigInteger by a single-digit native number
54055 // Assumes that this and n are
>=
0
54056 // This is not really intended to be used outside the library itself
54057 BigInteger.prototype.multiplySingleDigit = function(n) {
54058 if (n ===
0 || this._s ===
0) {
54066 if (this._d.length ===
1) {
54067 digit = this._d[
0] * n;
54068 if (digit
>= BigInteger_base) {
54069 return new BigInteger([(digit % BigInteger_base)|
0,
54070 (digit / BigInteger_base)|
0],
1, CONSTRUCT);
54072 return new BigInteger([digit],
1, CONSTRUCT);
54076 return this.add(this);
54078 if (this.isUnit()) {
54079 return new BigInteger([n],
1, CONSTRUCT);
54086 var partial = new Array(pl);
54087 for (var i =
0; i < pl; i++) {
54092 for (var j =
0; j < al; j++) {
54093 digit = n * a[j] + carry;
54094 carry = (digit / BigInteger_base) |
0;
54095 partial[j] = (digit % BigInteger_base) |
0;
54098 partial[j] = carry;
54101 return new BigInteger(partial,
1, CONSTRUCT);
54106 Multiply a
<BigInteger> by itself.
54108 This is slightly faster than regular multiplication, since it removes the
54109 duplicated multiplcations.
54113 > this.multiply(this)
54118 BigInteger.prototype.square = function() {
54119 // Normally, squaring a
10-digit number would take
100 multiplications.
54120 // Of these
10 are unique diagonals, of the remaining
90 (
100-
10),
45 are repeated.
54121 // This procedure saves (N*(N-
1))/
2 multiplications, (e.g.,
45 of
100 multiplies).
54122 // Based on code by Gary Darby, Intellitech Systems Inc., www.DelphiForFun.org
54124 if (this._s ===
0) {
54127 if (this.isUnit()) {
54131 var digits = this._d;
54132 var length = digits.length;
54133 var imult1 = new Array(length + length +
1);
54134 var product, carry, k;
54137 // Calculate diagonal
54138 for (i =
0; i < length; i++) {
54140 product = digits[i] * digits[i];
54141 carry = (product / BigInteger_base) |
0;
54142 imult1[k] = product % BigInteger_base;
54143 imult1[k +
1] = carry;
54146 // Calculate repeating part
54147 for (i =
0; i < length; i++) {
54150 for (var j = i +
1; j < length; j++, k++) {
54151 product = digits[j] * digits[i] *
2 + imult1[k] + carry;
54152 carry = (product / BigInteger_base) |
0;
54153 imult1[k] = product % BigInteger_base;
54156 var digit = carry + imult1[k];
54157 carry = (digit / BigInteger_base) |
0;
54158 imult1[k] = digit % BigInteger_base;
54159 imult1[k +
1] += carry;
54162 return new BigInteger(imult1,
1, CONSTRUCT);
54167 Divide two
<BigIntegers> and truncate towards zero.
54169 <quotient> throws an exception if *n* is zero.
54173 n - The number to divide *this* by. Will be converted to a
<BigInteger>.
54177 The *this* / *n*, truncated to an integer.
54181 <add>,
<subtract>,
<multiply>,
<divRem>,
<remainder>
54183 BigInteger.prototype.quotient = function(n) {
54184 return this.divRem(n)[
0];
54189 Deprecated synonym for
<quotient>.
54191 BigInteger.prototype.divide = BigInteger.prototype.quotient;
54194 Function: remainder
54195 Calculate the remainder of two
<BigIntegers>.
54197 <remainder> throws an exception if *n* is zero.
54201 n - The remainder after *this* is divided *this* by *n*. Will be
54202 converted to a
<BigInteger>.
54210 <divRem>,
<quotient>
54212 BigInteger.prototype.remainder = function(n) {
54213 return this.divRem(n)[
1];
54218 Calculate the integer quotient and remainder of two
<BigIntegers>.
54220 <divRem> throws an exception if *n* is zero.
54224 n - The number to divide *this* by. Will be converted to a
<BigInteger>.
54228 A two-element array containing the quotient and the remainder.
54232 is exactly equivalent to
54234 > [a.quotient(b), a.remainder(b)]
54236 except it is faster, because they are calculated at the same time.
54240 <quotient>,
<remainder>
54242 BigInteger.prototype.divRem = function(n) {
54245 throw new Error("Divide by zero");
54247 if (this._s ===
0) {
54248 return [ZERO, ZERO];
54250 if (n._d.length ===
1) {
54251 return this.divRemSmall(n._s * n._d[
0]);
54254 // Test for easy cases -- |n1| <= |n2|
54255 switch (this.compareAbs(n)) {
54256 case
0: // n1 == n2
54257 return [this._s === n._s ? ONE : M_ONE, ZERO];
54258 case -
1: // |n1| < |n2|
54259 return [ZERO, this];
54262 var sign = this._s * n._s;
54264 var b_digits = this._d;
54265 var b_index = b_digits.length;
54266 var digits = n._d.length;
54270 var part = new BigInteger([],
0, CONSTRUCT);
54273 part._d.unshift(b_digits[--b_index]);
54274 part = new BigInteger(part._d,
1, CONSTRUCT);
54276 if (part.compareAbs(n) <
0) {
54280 if (part._s ===
0) {
54284 var xlen = part._d.length, ylen = a._d.length;
54285 var highx = part._d[xlen-
1]*BigInteger_base + part._d[xlen-
2];
54286 var highy = a._d[ylen-
1]*BigInteger_base + a._d[ylen-
2];
54287 if (part._d.length
> a._d.length) {
54288 // The length of part._d can either match a._d length,
54289 // or exceed it by one.
54290 highx = (highx+
1)*BigInteger_base;
54292 guess = Math.ceil(highx/highy);
54295 var check = a.multiplySingleDigit(guess);
54296 if (check.compareAbs(part) <=
0) {
54306 var diff = part.subtract(check);
54307 part._d = diff._d.slice();
54310 return [new BigInteger(quot.reverse(), sign, CONSTRUCT),
54311 new BigInteger(part._d, this._s, CONSTRUCT)];
54314 // Throws an exception if n is outside of (-BigInteger.base, -
1] or
54315 // [
1, BigInteger.base). It's not necessary to call this, since the
54316 // other division functions will call it if they are able to.
54317 BigInteger.prototype.divRemSmall = function(n) {
54321 throw new Error("Divide by zero");
54324 var n_s = n <
0 ? -
1 :
1;
54325 var sign = this._s * n_s;
54328 if (n <
1 || n
>= BigInteger_base) {
54329 throw new Error("Argument out of range");
54332 if (this._s ===
0) {
54333 return [ZERO, ZERO];
54336 if (n ===
1 || n === -
1) {
54337 return [(sign ===
1) ? this.abs() : new BigInteger(this._d, sign, CONSTRUCT), ZERO];
54340 //
2 <= n < BigInteger_base
54342 // divide a single digit by a single digit
54343 if (this._d.length ===
1) {
54344 var q = new BigInteger([(this._d[
0] / n) |
0],
1, CONSTRUCT);
54345 r = new BigInteger([(this._d[
0] % n) |
0],
1, CONSTRUCT);
54355 var digits = this._d.slice();
54356 var quot = new Array(digits.length);
54362 while (digits.length) {
54363 part = part * BigInteger_base + digits[digits.length -
1];
54367 diff = BigInteger_base * diff + part;
54374 guess = (part / n) |
0;
54377 var check = n * guess;
54378 diff = part - check;
54389 r = new BigInteger([diff],
1, CONSTRUCT);
54393 return [new BigInteger(quot.reverse(), sign, CONSTRUCT), r];
54398 Return true iff *this* is divisible by two.
54400 Note that
<BigInteger.ZERO
> is even.
54404 true if *this* is even, false otherwise.
54410 BigInteger.prototype.isEven = function() {
54411 var digits = this._d;
54412 return this._s ===
0 || digits.length ===
0 || (digits[
0] %
2) ===
0;
54417 Return true iff *this* is not divisible by two.
54421 true if *this* is odd, false otherwise.
54427 BigInteger.prototype.isOdd = function() {
54428 return !this.isEven();
54433 Get the sign of a
<BigInteger>.
54443 <isZero>,
<isPositive>,
<isNegative>,
<compare>,
<BigInteger.ZERO
>
54445 BigInteger.prototype.sign = function() {
54450 Function: isPositive
54451 Return true iff *this*
> 0.
54455 true if *this*.compare(
<BigInteger.ZERO
>) ==
1.
54459 <sign>,
<isZero>,
<isNegative>,
<isUnit>,
<compare>,
<BigInteger.ZERO
>
54461 BigInteger.prototype.isPositive = function() {
54462 return this._s
> 0;
54466 Function: isNegative
54467 Return true iff *this* <
0.
54471 true if *this*.compare(
<BigInteger.ZERO
>) == -
1.
54475 <sign>,
<isPositive>,
<isZero>,
<isUnit>,
<compare>,
<BigInteger.ZERO
>
54477 BigInteger.prototype.isNegative = function() {
54478 return this._s <
0;
54483 Return true iff *this* ==
0.
54487 true if *this*.compare(
<BigInteger.ZERO
>) ==
0.
54491 <sign>,
<isPositive>,
<isNegative>,
<isUnit>,
<BigInteger.ZERO
>
54493 BigInteger.prototype.isZero = function() {
54494 return this._s ===
0;
54499 Multiply a
<BigInteger> by a power of
10.
54501 This is equivalent to, but faster than
54504 > return this.multiply(BigInteger("
1e" + n));
54507 > return this.quotient(BigInteger("
1e" + -n));
54512 n - The power of
10 to multiply *this* by. *n* is converted to a
54513 javascipt number and must be no greater than
<BigInteger.MAX_EXP
>
54514 (
0x7FFFFFFF), or an exception will be thrown.
54518 *this* * (
10 ** *n*), truncated to an integer if necessary.
54524 BigInteger.prototype.exp10 = function(n) {
54529 if (Math.abs(n)
> Number(MAX_EXP)) {
54530 throw new Error("exponent too large in BigInteger.exp10");
54532 // Optimization for this ==
0. This also keeps us from having to trim zeros in the positive n case
54533 if (this._s ===
0) {
54537 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
54539 for (; n
>= BigInteger_base_log10; n -= BigInteger_base_log10) {
54545 k = k.multiplySingleDigit(Math.pow(
10, n));
54546 return (this._s <
0 ? k.negate() : k);
54547 } else if (-n
>= this._d.length*BigInteger_base_log10) {
54550 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
54552 for (n = -n; n
>= BigInteger_base_log10; n -= BigInteger_base_log10) {
54555 return (n ==
0) ? k : k.divRemSmall(Math.pow(
10, n))[
0];
54561 Raise a
<BigInteger> to a power.
54563 In this implementation,
0**
0 is
1.
54567 n - The exponent to raise *this* by. *n* must be no greater than
54568 <BigInteger.MAX_EXP
> (
0x7FFFFFFF), or an exception will be thrown.
54572 *this* raised to the *nth* power.
54578 BigInteger.prototype.pow = function(n) {
54579 if (this.isUnit()) {
54584 return BigInteger(n).isOdd() ? this : this.negate();
54592 else if (n._s <
0) {
54593 if (this._s ===
0) {
54594 throw new Error(
"Divide by zero");
54600 if (this._s ===
0) {
54607 if (n.compareAbs(MAX_EXP)
> 0) {
54608 throw new Error(
"exponent too large in BigInteger.pow");
54612 var two = BigInteger.small[
2];
54614 while (n.isPositive()) {
54616 aux = aux.multiply(x);
54622 n = n.quotient(two);
54630 Raise a
<BigInteger> to a power (mod m).
54632 Because it is reduced by a modulus,
<modPow> is not limited by
54633 <BigInteger.MAX_EXP
> like
<pow>.
54637 exponent - The exponent to raise *this* by. Must be positive.
54638 modulus - The modulus.
54642 *this* ^ *exponent* (mod *modulus*).
54648 BigInteger.prototype.modPow = function(exponent, modulus) {
54652 while (exponent.isPositive()) {
54653 if (exponent.isOdd()) {
54654 result = result.multiply(base).remainder(modulus);
54657 exponent = exponent.quotient(BigInteger.small[
2]);
54658 if (exponent.isPositive()) {
54659 base = base.square().remainder(modulus);
54668 Get the natural logarithm of a
<BigInteger> as a native JavaScript number.
54670 This is equivalent to
54672 > Math.log(this.toJSValue())
54674 but handles values outside of the native number range.
54684 BigInteger.prototype.log = function() {
54686 case
0: return -Infinity;
54687 case -
1: return NaN;
54688 default: // Fall through.
54691 var l = this._d.length;
54693 if (l*BigInteger_base_log10 <
30) {
54694 return Math.log(this.valueOf());
54697 var N = Math.ceil(
30/BigInteger_base_log10);
54698 var firstNdigits = this._d.slice(l - N);
54699 return Math.log((new BigInteger(firstNdigits,
1, CONSTRUCT)).valueOf()) + (l - N) * Math.log(BigInteger_base);
54704 Convert a
<BigInteger> to a native JavaScript integer.
54706 This is called automatically by JavaScipt to convert a
<BigInteger> to a
54711 > parseInt(this.toString(),
10)
54715 <toString>,
<toJSValue>
54717 BigInteger.prototype.valueOf = function() {
54718 return parseInt(this.toString(),
10);
54722 Function: toJSValue
54723 Convert a
<BigInteger> to a native JavaScript integer.
54725 This is the same as valueOf, but more explicitly named.
54729 > parseInt(this.toString(),
10)
54733 <toString>,
<valueOf>
54735 BigInteger.prototype.toJSValue = function() {
54736 return parseInt(this.toString(),
10);
54739 var MAX_EXP = BigInteger(
0x7FFFFFFF);
54740 // Constant: MAX_EXP
54741 // The largest exponent allowed in
<pow> and
<exp10> (
0x7FFFFFFF or
2147483647).
54742 BigInteger.MAX_EXP = MAX_EXP;
54745 function makeUnary(fn) {
54746 return function(a) {
54747 return fn.call(BigInteger(a));
54751 function makeBinary(fn) {
54752 return function(a, b) {
54753 return fn.call(BigInteger(a), BigInteger(b));
54757 function makeTrinary(fn) {
54758 return function(a, b, c) {
54759 return fn.call(BigInteger(a), BigInteger(b), BigInteger(c));
54765 var unary = "toJSValue,isEven,isOdd,sign,isZero,isNegative,abs,isUnit,square,negate,isPositive,toString,next,prev,log".split(",");
54766 var binary = "compare,remainder,divRem,subtract,add,quotient,divide,multiply,pow,compareAbs".split(",");
54767 var trinary = ["modPow"];
54769 for (i =
0; i < unary.length; i++) {
54771 BigInteger[fn] = makeUnary(BigInteger.prototype[fn]);
54774 for (i =
0; i < binary.length; i++) {
54776 BigInteger[fn] = makeBinary(BigInteger.prototype[fn]);
54779 for (i =
0; i < trinary.length; i++) {
54781 BigInteger[fn] = makeTrinary(BigInteger.prototype[fn]);
54784 BigInteger.exp10 = function(x, n) {
54785 return BigInteger(x).exp10(n);
54790 exports.BigInteger = BigInteger;
54791 })(typeof exports !== 'undefined' ? exports : this);
54793 <script>(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.zxcvbn = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&
&require;if(!u&&a)return a(o,!
0);if(i)return i(o,!
0);var f=new Error("Cannot find module '"+o+"'");throw f.
code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][
0].call(l.exports,function(e){var n=t[o][
1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&
&require;for(var o=
0;o
<r.length;o++)s(r[o]);return s})({
1:[function(require,module,exports){
54794 var adjacency_graphs;adjacency_graphs={qwerty:{
"!":[
"`~",null,null,
"2@",
"qQ",null],'
"':[";:
","[{
","]}
",null,null,"/?
"],"#
":["2@
",null,null,"4$
","eE
","wW
"],$:["3#
",null,null,"5%
","rR
","eE
"],"%
":["4$
",null,null,"6^
","tT
","rR
"],"&
":["6^
",null,null,"8*
","uU
","yY
"],"'
":[";:
","[{
","]}
",null,null,"/?
"],"(
":["8*
",null,null,"0)
","oO
","iI
"],")
":["9(
",null,null,"-_
","pP
","oO
"],"*
":["7&
",null,null,"9(
","iI
","uU
"],"+
":["-_
",null,null,null,"]}
","[{
"],",
":["mM
","kK
","lL
",".
>",null,null],"-
":["0)
",null,null,"=+
","[{
","pP
"],".
":[",<
","lL
",";:
","/?
",null,null],"/
":[".
>",";:
","'\
"",null,null,null],
0:[
"9(",null,null,
"-_",
"pP",
"oO"],
1:[
"`~",null,null,
"2@",
"qQ",null],
2:[
"1!",null,null,
"3#",
"wW",
"qQ"],
3:[
"2@",null,null,
"4$",
"eE",
"wW"],
4:[
"3#",null,null,
"5%",
"rR",
"eE"],
5:[
"4$",null,null,
"6^",
"tT",
"rR"],
6:[
"5%",null,null,
"7&",
"yY",
"tT"],
7:[
"6^",null,null,
"8*",
"uU",
"yY"],
8:[
"7&",null,null,
"9(",
"iI",
"uU"],
9:[
"8*",null,null,
"0)",
"oO",
"iI"],
":":[
"lL",
"pP",
"[{",
"'\"","/?
",".
>"],";
":["lL
","pP
","[{
","'\
"",
"/?",
".>"],
"<":[
"mM",
"kK",
"lL",
".>",null,null],
"=":[
"-_",null,null,null,
"]}",
"[{"],
">":[
",<",
"lL",
";:",
"/?",null,null],
"?":[
".>",
";:",
"'\"",null,null,null],"@
":["1!
",null,null,"3#
","wW
","qQ
"],A:[null,"qQ
","wW
","sS
","zZ
",null],B:["vV
","gG
","hH
","nN
",null,null],C:["xX
","dD
","fF
","vV
",null,null],D:["sS
","eE
","rR
","fF
","cC
","xX
"],E:["wW
","3#
","4$
","rR
","dD
","sS
"],F:["dD
","rR
","tT
","gG
","vV
","cC
"],G:["fF
","tT
","yY
","hH
","bB
","vV
"],H:["gG
","yY
","uU
","jJ
","nN
","bB
"],I:["uU
","8*
","9(
","oO
","kK
","jJ
"],J:["hH
","uU
","iI
","kK
","mM
","nN
"],K:["jJ
","iI
","oO
","lL
",",<
","mM
"],L:["kK
","oO
","pP
",";:
",".
>",",<
"],M:["nN
","jJ
","kK
",",<
",null,null],N:["bB
","hH
","jJ
","mM
",null,null],O:["iI
","9(
","0)
","pP
","lL
","kK
"],P:["oO
","0)
","-_
","[{
",";:
","lL
"],Q:[null,"1!
","2@
","wW
","aA
",null],R:["eE
","4$
","5%
","tT
","fF
","dD
"],S:["aA
","wW
","eE
","dD
","xX
","zZ
"],T:["rR
","5%
","6^
","yY
","gG
","fF
"],U:["yY
","7&
","8*
","iI
","jJ
","hH
"],V:["cC
","fF
","gG
","bB
",null,null],W:["qQ
","2@
","3#
","eE
","sS
","aA
"],X:["zZ
","sS
","dD
","cC
",null,null],Y:["tT
","6^
","7&
","uU
","hH
","gG
"],Z:[null,"aA
","sS
","xX
",null,null],"[
":["pP
","-_
","=+
","]}
","'\
"",
";:"],
"\\":[
"]}",null,null,null,null,null],
"]":[
"[{",
"=+",null,
"\\|",null,
"'\""],"^
":["5%
",null,null,"7&
","yY
","tT
"],_:["0)
",null,null,"=+
","[{
","pP
"],"`
":[null,null,null,"1!
",null,null],a:[null,"qQ
","wW
","sS
","zZ
",null],b:["vV
","gG
","hH
","nN
",null,null],c:["xX
","dD
","fF
","vV
",null,null],d:["sS
","eE
","rR
","fF
","cC
","xX
"],e:["wW
","3#
","4$
","rR
","dD
","sS
"],f:["dD
","rR
","tT
","gG
","vV
","cC
"],g:["fF
","tT
","yY
","hH
","bB
","vV
"],h:["gG
","yY
","uU
","jJ
","nN
","bB
"],i:["uU
","8*
","9(
","oO
","kK
","jJ
"],j:["hH
","uU
","iI
","kK
","mM
","nN
"],k:["jJ
","iI
","oO
","lL
",",<
","mM
"],l:["kK
","oO
","pP
",";:
",".
>",",<
"],m:["nN
","jJ
","kK
",",<
",null,null],n:["bB
","hH
","jJ
","mM
",null,null],o:["iI
","9(
","0)
","pP
","lL
","kK
"],p:["oO
","0)
","-_
","[{
",";:
","lL
"],q:[null,"1!
","2@
","wW
","aA
",null],r:["eE
","4$
","5%
","tT
","fF
","dD
"],s:["aA
","wW
","eE
","dD
","xX
","zZ
"],t:["rR
","5%
","6^
","yY
","gG
","fF
"],u:["yY
","7&
","8*
","iI
","jJ
","hH
"],v:["cC
","fF
","gG
","bB
",null,null],w:["qQ
","2@
","3#
","eE
","sS
","aA
"],x:["zZ
","sS
","dD
","cC
",null,null],y:["tT
","6^
","7&
","uU
","hH
","gG
"],z:[null,"aA
","sS
","xX
",null,null],"{
":["pP
","-_
","=+
","]}
","'\
"",
";:"],
"|":[
"]}",null,null,null,null,null],
"}":[
"[{",
"=+",null,
"\\|",null,
"'\""],"~
":[null,null,null,"1!
",null,null]},dvorak:{"!
":["`~
",null,null,"2@
","'\
"",null],'
"':[null,"1!
","2@
",",<
","aA
",null],"#
":["2@
",null,null,"4$
",".
>",",<
"],$:["3#
",null,null,"5%
","pP
",".
>"],"%
":["4$
",null,null,"6^
","yY
","pP
"],"&
":["6^
",null,null,"8*
","gG
","fF
"],"'
":[null,"1!
","2@
",",<
","aA
",null],"(
":["8*
",null,null,"0)
","rR
","cC
"],")
":["9(
",null,null,"[{
","lL
","rR
"],"*
":["7&
",null,null,"9(
","cC
","gG
"],"+
":["/?
","]}
",null,"\\|
",null,"-_
"],",
":["'\
"",
"2@",
"3#",
".>",
"oO",
"aA"],
"-":[
"sS",
"/?",
"=+",null,null,
"zZ"],
".":[
",<",
"3#",
"4$",
"pP",
"eE",
"oO"],
"/":[
"lL",
"[{",
"]}",
"=+",
"-_",
"sS"],
0:[
"9(",null,null,
"[{",
"lL",
"rR"],
1:[
"`~",null,null,
"2@",
"'\"",null],2:["1!
",null,null,"3#
",",<
","'\
""],
3:[
"2@",null,null,
"4$",
".>",
",<"],
4:[
"3#",null,null,
"5%",
"pP",
".>"],
5:[
"4$",null,null,
"6^",
"yY",
"pP"],
6:[
"5%",null,null,
"7&",
"fF",
"yY"],
7:[
"6^",null,null,
"8*",
"gG",
"fF"],
8:[
"7&",null,null,
"9(",
"cC",
"gG"],
9:[
"8*",null,null,
"0)",
"rR",
"cC"],
":":[null,
"aA",
"oO",
"qQ",null,null],
";":[null,
"aA",
"oO",
"qQ",null,null],
"<":[
"'\"","2@
","3#
",".
>","oO
","aA
"],"=
":["/?
","]}
",null,"\\|
",null,"-_
"],">":[",<
","3#
","4$
","pP
","eE
","oO
"],"?
":["lL
","[{
","]}
","=+
","-_
","sS
"],"@
":["1!
",null,null,"3#
",",<
","'\
""],A:[null,
"'\"",",<
","oO
",";:
",null],B:["xX
","dD
","hH
","mM
",null,null],C:["gG
","8*
","9(
","rR
","tT
","hH
"],D:["iI
","fF
","gG
","hH
","bB
","xX
"],E:["oO
",".
>","pP
","uU
","jJ
","qQ
"],F:["yY
","6^
","7&
","gG
","dD
","iI
"],G:["fF
","7&
","8*
","cC
","hH
","dD
"],H:["dD
","gG
","cC
","tT
","mM
","bB
"],I:["uU
","yY
","fF
","dD
","xX
","kK
"],J:["qQ
","eE
","uU
","kK
",null,null],K:["jJ
","uU
","iI
","xX
",null,null],L:["rR
","0)
","[{
","/?
","sS
","nN
"],M:["bB
","hH
","tT
","wW
",null,null],N:["tT
","rR
","lL
","sS
","vV
","wW
"],O:["aA
",",<
",".
>","eE
","qQ
",";:
"],P:[".
>","4$
","5%
","yY
","uU
","eE
"],Q:[";:
","oO
","eE
","jJ
",null,null],R:["cC
","9(
","0)
","lL
","nN
","tT
"],S:["nN
","lL
","/?
","-_
","zZ
","vV
"],T:["hH
","cC
","rR
","nN
","wW
","mM
"],U:["eE
","pP
","yY
","iI
","kK
","jJ
"],V:["wW
","nN
","sS
","zZ
",null,null],W:["mM
","tT
","nN
","vV
",null,null],X:["kK
","iI
","dD
","bB
",null,null],Y:["pP
","5%
","6^
","fF
","iI
","uU
"],Z:["vV
","sS
","-_
",null,null,null],"[
":["0)
",null,null,"]}
","/?
","lL
"],"\\
":["=+
",null,null,null,null,null],"]
":["[{
",null,null,null,"=+
","/?
"],"^
":["5%
",null,null,"7&
","fF
","yY
"],_:["sS
","/?
","=+
",null,null,"zZ
"],"`
":[null,null,null,"1!
",null,null],a:[null,"'\
"",
",<",
"oO",
";:",null],b:[
"xX",
"dD",
"hH",
"mM",null,null],c:[
"gG",
"8*",
"9(",
"rR",
"tT",
"hH"],d:[
"iI",
"fF",
"gG",
"hH",
"bB",
"xX"],e:[
"oO",
".>",
"pP",
"uU",
"jJ",
"qQ"],f:[
"yY",
"6^",
"7&",
"gG",
"dD",
"iI"],g:[
"fF",
"7&",
"8*",
"cC",
"hH",
"dD"],h:[
"dD",
"gG",
"cC",
"tT",
"mM",
"bB"],i:[
"uU",
"yY",
"fF",
"dD",
"xX",
"kK"],j:[
"qQ",
"eE",
"uU",
"kK",null,null],k:[
"jJ",
"uU",
"iI",
"xX",null,null],l:[
"rR",
"0)",
"[{",
"/?",
"sS",
"nN"],m:[
"bB",
"hH",
"tT",
"wW",null,null],n:[
"tT",
"rR",
"lL",
"sS",
"vV",
"wW"],o:[
"aA",
",<",
".>",
"eE",
"qQ",
";:"],p:[
".>",
"4$",
"5%",
"yY",
"uU",
"eE"],q:[
";:",
"oO",
"eE",
"jJ",null,null],r:[
"cC",
"9(",
"0)",
"lL",
"nN",
"tT"],s:[
"nN",
"lL",
"/?",
"-_",
"zZ",
"vV"],t:[
"hH",
"cC",
"rR",
"nN",
"wW",
"mM"],u:[
"eE",
"pP",
"yY",
"iI",
"kK",
"jJ"],v:[
"wW",
"nN",
"sS",
"zZ",null,null],w:[
"mM",
"tT",
"nN",
"vV",null,null],x:[
"kK",
"iI",
"dD",
"bB",null,null],y:[
"pP",
"5%",
"6^",
"fF",
"iI",
"uU"],z:[
"vV",
"sS",
"-_",null,null,null],
"{":[
"0)",null,null,
"]}",
"/?",
"lL"],
"|":[
"=+",null,null,null,null,null],
"}":[
"[{",null,null,null,
"=+",
"/?"],
"~":[null,null,null,
"1!",null,null]},keypad:{
"*":[
"/",null,null,null,
"-",
"+",
"9",
"8"],
"+":[
"9",
"*",
"-",null,null,null,null,
"6"],
"-":[
"*",null,null,null,null,null,
"+",
"9"],
".":[
"0",
"2",
"3",null,null,null,null,null],
"/":[null,null,null,null,
"*",
"9",
"8",
"7"],
0:[null,
"1",
"2",
"3",
".",null,null,null],
1:[null,null,
"4",
"5",
"2",
"0",null,null],
2:[
"1",
"4",
"5",
"6",
"3",
".",
"0",null],
3:[
"2",
"5",
"6",null,null,null,
".",
"0"],
4:[null,null,
"7",
"8",
"5",
"2",
"1",null],
5:[
"4",
"7",
"8",
"9",
"6",
"3",
"2",
"1"],
6:[
"5",
"8",
"9",
"+",null,null,
"3",
"2"],
7:[null,null,null,
"/",
"8",
"5",
"4",null],
8:[
"7",null,
"/",
"*",
"9",
"6",
"5",
"4"],
9:[
"8",
"/",
"*",
"-",
"+",null,
"6",
"5"]},mac_keypad:{
"*":[
"/",null,null,null,null,null,
"-",
"9"],
"+":[
"6",
"9",
"-",null,null,null,null,
"3"],
"-":[
"9",
"/",
"*",null,null,null,
"+",
"6"],
".":[
"0",
"2",
"3",null,null,null,null,null],
"/":[
"=",null,null,null,
"*",
"-",
"9",
"8"],
0:[null,
"1",
"2",
"3",
".",null,null,null],
1:[null,null,
"4",
"5",
"2",
"0",null,null],
2:[
"1",
"4",
"5",
"6",
"3",
".",
"0",null],
3:[
"2",
"5",
"6",
"+",null,null,
".",
"0"],
4:[null,null,
"7",
"8",
"5",
"2",
"1",null],
5:[
"4",
"7",
"8",
"9",
"6",
"3",
"2",
"1"],
6:[
"5",
"8",
"9",
"-",
"+",null,
"3",
"2"],
7:[null,null,null,
"=",
"8",
"5",
"4",null],
8:[
"7",null,
"=",
"/",
"9",
"6",
"5",
"4"],
9:[
"8",
"=",
"/",
"*",
"-",
"+",
"6",
"5"],
"=":[null,null,null,null,
"/",
"9",
"8",
"7"]}},module.exports=adjacency_graphs;
54796 },{}],
2:[function(require,module,exports){
54797 var feedback,scoring;scoring=require(
"./scoring"),feedback={default_feedback:{warning:
"",suggestions:[
"Use a few words, avoid common phrases",
"No need for symbols, digits, or uppercase letters"]},get_feedback:function(e,s){var a,t,r,n,o,i;if(
0===s.length)return this.default_feedback;if(e
>2)return{warning:
"",suggestions:[]};for(n=s[
0],i=s.slice(
1),t=
0,r=i.length;t
<r;t++)o=i[t],o.token.length
>n.token.length&&(n=o);return feedback=this.get_match_feedback(n,
1===s.length),
a="Add another word or two. Uncommon words are better.",null!=feedback?(feedback.suggestions.unshift(a),null==feedback.warning&&(feedback.
warning="")):feedback={warning:"",suggestions:[a]},feedback},get_match_feedback:function(e,s){var a,t;switch(e.pattern){case"dictionary":return this.get_dictionary_match_feedback(e,s);case"spatial":return a=e.graph.toUpperCase(),t=
1===e.turns?"Straight rows of keys are easy to guess":"Short keyboard patterns are easy to guess",{warning:t,suggestions:["Use a longer keyboard pattern with more turns"]};case"repeat":return t=
1===e.base_token.length?'Repeats like "aaa" are easy to guess':'Repeats like "abcabcabc" are only slightly harder to guess than "abc"',{warning:t,suggestions:["Avoid repeated words and characters"]};case"sequence":return{warning:"Sequences like abc or
6543 are easy to guess",suggestions:["Avoid sequences"]};case"regex":if("recent_year"===e.regex_name)return{warning:"Recent years are easy to guess",suggestions:["Avoid recent years","Avoid years that are associated with you"]};break;case"date":return{warning:"Dates are often easy to guess",suggestions:["Avoid dates and years that are associated with you"]}}},get_dictionary_match_feedback:function(e,s){var a,t,r,n,o;return
n="passwords"===e.dictionary_name?!s||e.l33t||e.reversed?e.guesses_log10<=
4?"This is similar to a commonly used password":void
0:e.rank<=
10?"This is a top-
10 common password":e.rank<=
100?"This is a top-
100 common password":"This is a very common password":"english"===e.dictionary_name?s?"A word by itself is easy to guess":void
0:"surnames"===(a=e.dictionary_name)||"male_names"===a||"female_names"===a?s?"Names and surnames by themselves are easy to guess":"Common names and surnames are easy to guess":"",r=[],o=e.token,o.match(scoring.START_UPPER)?r.push("Capitalization doesn't help very much"):o.match(scoring.ALL_UPPER)&&o.toLowerCase()!==o&&r.push("All-uppercase is almost as easy to guess as all-lowercase"),e.reversed&&e.token.length
>=
4&&r.push("Reversed words aren't much harder to guess"),e.l33t&&r.push("Predictable substitutions like '@' instead of 'a' don't help very much"),t={warning:n,suggestions:r}}},module.exports=feedback;
54799 },{"./scoring":
6}],
3:[function(require,module,exports){
54800 var frequency_lists;frequency_lists={passwords:"
123456,password,
12345678,qwerty,
123456789,
12345,
1234,
111111,
1234567,dragon,
123123,baseball,abc123,football,monkey,letmein,shadow,master,
696969,mustang,
666666,qwertyuiop,
123321,
1234567890,pussy,superman,
654321,
1qaz2wsx,
7777777,fuckyou,qazwsx,jordan,
123qwe,
000000,killer,trustno1,hunter,harley,zxcvbnm,asdfgh,buster,batman,soccer,tigger,charlie,sunshine,iloveyou,fuckme,ranger,hockey,computer,starwars,asshole,pepper,klaster,
112233,zxcvbn,freedom,princess,maggie,pass,ginger,
11111111,
131313,fuck,love,cheese,
159753,summer,chelsea,dallas,biteme,matrix,yankees,
6969,corvette,austin,access,thunder,merlin,secret,diamond,hello,hammer,fucker,
1234qwer,silver,gfhjkm,internet,samantha,golfer,scooter,test,orange,cookie,q1w2e3r4t5,maverick,sparky,phoenix,mickey,bigdog,snoopy,guitar,whatever,chicken,camaro,mercedes,peanut,ferrari,falcon,cowboy,welcome,sexy,samsung,steelers,smokey,dakota,arsenal,boomer,eagles,tigers,marina,nascar,booboo,gateway,yellow,porsche,monster,spider,diablo,hannah,bulldog,junior,london,purple,compaq,lakers,iceman,qwer1234,hardcore,cowboys,money,banana,ncc1701,boston,tennis,q1w2e3r4,coffee,scooby,
123654,nikita,yamaha,mother,barney,brandy,chester,fuckoff,oliver,player,forever,rangers,midnight,chicago,bigdaddy,redsox,angel,badboy,fender,jasper,slayer,rabbit,natasha,marine,bigdick,wizard,marlboro,raiders,prince,casper,fishing,flower,jasmine,iwantu,panties,adidas,winter,winner,gandalf,password1,enter,ghbdtn,
1q2w3e4r,golden,cocacola,jordan23,winston,madison,angels,panther,blowme,sexsex,bigtits,spanky,bitch,sophie,asdfasdf,horny,thx1138,toyota,tiger,dick,canada,
12344321,blowjob,
8675309,muffin,liverpoo,apples,qwerty123,passw0rd,abcd1234,pokemon,
123abc,slipknot,qazxsw,
123456a,scorpion,qwaszx,butter,startrek,rainbow,asdfghjkl,razz,newyork,redskins,gemini,cameron,qazwsxedc,florida,liverpool,turtle,sierra,viking,booger,butthead,doctor,rocket,
159357,dolphins,captain,bandit,jaguar,packers,pookie,peaches,
789456,asdf,dolphin,helpme,blue,theman,maxwell,qwertyui,shithead,lovers,maddog,giants,nirvana,metallic,hotdog,rosebud,mountain,warrior,stupid,elephant,suckit,success,bond007,jackass,alexis,porn,lucky,scorpio,samson,q1w2e3,azerty,rush2112,driver,freddy,
1q2w3e4r5t,sydney,gators,dexter,red123,
123456q,
12345a,bubba,creative,voodoo,golf,trouble,america,nissan,gunner,garfield,bullshit,asdfghjk,
5150,fucking,apollo,
1qazxsw2,
2112,eminem,legend,airborne,bear,beavis,apple,brooklyn,godzilla,skippy,
4815162342,buddy,qwert,kitten,magic,shelby,beaver,phantom,asdasd,xavier,braves,darkness,blink182,copper,platinum,qweqwe,tomcat,
01012011,girls,bigboy,
102030,animal,police,online,
11223344,voyager,lifehack,
12qwaszx,fish,sniper,
315475,trinity,blazer,heaven,lover,snowball,playboy,loveme,bubbles,hooters,cricket,willow,donkey,topgun,nintendo,saturn,destiny,pakistan,pumpkin,digital,sergey,redwings,explorer,tits,private,runner,therock,guinness,lasvegas,beatles,
789456123,fire,cassie,christin,qwerty1,celtic,asdf1234,andrey,broncos,
007007,babygirl,eclipse,fluffy,cartman,michigan,carolina,testing,alexande,birdie,pantera,cherry,vampire,mexico,dickhead,buffalo,genius,montana,beer,minecraft,maximus,flyers,lovely,stalker,metallica,doggie,snickers,speedy,bronco,lol123,paradise,yankee,horses,magnum,dreams,
147258369,lacrosse,ou812,goober,enigma,qwertyu,scotty,pimpin,bollocks,surfer,cock,poohbear,genesis,star,asd123,qweasdzxc,racing,hello1,hawaii,eagle1,viper,poopoo,einstein,boobies,
12345q,bitches,drowssap,simple,badger,alaska,action,jester,drummer,
111222,spitfire,forest,maryjane,champion,diesel,svetlana,friday,hotrod,
147258,chevy,lucky1,westside,security,google,badass,tester,shorty,thumper,hitman,mozart,zaq12wsx,boobs,reddog,
010203,lizard,a123456,
123456789a,ruslan,eagle,
1232323q,scarface,qwerty12,
147852,a12345,buddha,porno,
420420,spirit,money1,stargate,qwe123,naruto,mercury,liberty,
12345qwert,semperfi,suzuki,popcorn,spooky,marley,scotland,kitty,cherokee,vikings,simpsons,rascal,qweasd,hummer,loveyou,michael1,patches,russia,jupiter,penguin,passion,cumshot,vfhbyf,honda,vladimir,sandman,passport,raider,bastard,
123789,infinity,assman,bulldogs,fantasy,sucker,
1234554321,horney,domino,budlight,disney,ironman,usuckballz1,softball,brutus,redrum,bigred,mnbvcxz,fktrcfylh,karina,marines,digger,kawasaki,cougar,fireman,oksana,monday,cunt,justice,nigger,super,wildcats,tinker,logitech,dancer,swordfis,avalon,everton,alexandr,motorola,patriots,hentai,madonna,pussy1,ducati,colorado,connor,juventus,galore,smooth,freeuser,warcraft,boogie,titanic,wolverin,elizabet,arizona,valentin,saints,asdfg,accord,test123,password123,christ,yfnfif,stinky,slut,spiderma,naughty,chopper,hello123,ncc1701d,extreme,skyline,poop,zombie,pearljam,
123qweasd,froggy,awesome,vision,pirate,fylhtq,dreamer,bullet,predator,empire,
123123a,kirill,charlie1,panthers,penis,skipper,nemesis,rasdzv3,peekaboo,rolltide,cardinal,psycho,danger,mookie,happy1,wanker,chevelle,manutd,goblue,
9379992,hobbes,vegeta,fyfcnfcbz,
852456,picard,
159951,windows,loverboy,victory,vfrcbv,bambam,serega,
123654789,turkey,tweety,galina,hiphop,rooster,changeme,berlin,taurus,suckme,polina,electric,avatar,
134679,maksim,raptor,alpha1,hendrix,newport,bigcock,brazil,spring,a1b2c3,madmax,alpha,britney,sublime,darkside,bigman,wolfpack,classic,hercules,ronaldo,letmein1,
1q2w3e,
741852963,spiderman,blizzard,
123456789q,cheyenne,cjkysirj,tiger1,wombat,bubba1,pandora,zxc123,holiday,wildcat,devils,horse,alabama,
147852369,caesar,
12312,buddy1,bondage,pussycat,pickle,shaggy,catch22,leather,chronic,a1b2c3d4,admin,qqq111,qaz123,airplane,kodiak,freepass,billybob,sunset,katana,phpbb,chocolat,snowman,angel1,stingray,firebird,wolves,zeppelin,detroit,pontiac,gundam,panzer,vagina,outlaw,redhead,tarheels,greenday,nastya,
01011980,hardon,engineer,dragon1,hellfire,serenity,cobra,fireball,lickme,darkstar,
1029384756,
01011,mustang1,flash,
124578,strike,beauty,pavilion,
01012000,bobafett,dbrnjhbz,bigmac,bowling,chris1,ytrewq,natali,pyramid,rulez,welcome1,dodgers,apache,swimming,whynot,teens,trooper,fuckit,defender,precious,
135790,packard,weasel,popeye,lucifer,cancer,icecream,
142536,raven,swordfish,presario,viktor,rockstar,blonde,james1,wutang,spike,pimp,atlanta,airforce,thailand,casino,lennon,mouse,
741852,hacker,bluebird,hawkeye,
456123,theone,catfish,sailor,goldfish,nfnmzyf,tattoo,pervert,barbie,maxima,nipples,machine,trucks,wrangler,rocks,tornado,lights,cadillac,bubble,pegasus,madman,longhorn,browns,target,
666999,eatme,qazwsx123,microsoft,dilbert,christia,baller,lesbian,shooter,xfiles,seattle,qazqaz,cthutq,amateur,prelude,corona,freaky,malibu,
123qweasdzxc,assassin,
246810,atlantis,integra,pussies,iloveu,lonewolf,dragons,monkey1,unicorn,software,bobcat,stealth,peewee,openup,
753951,srinivas,zaqwsx,valentina,shotgun,trigger,veronika,bruins,coyote,babydoll,joker,dollar,lestat,rocky1,hottie,random,butterfly,wordpass,smiley,sweety,snake,chipper,woody,samurai,devildog,gizmo,maddie,soso123aljg,mistress,freedom1,flipper,express,hjvfirf,moose,cessna,piglet,polaris,teacher,montreal,cookies,wolfgang,scully,fatboy,wicked,balls,tickle,bunny,dfvgbh,foobar,transam,pepsi,fetish,oicu812,basketba,toshiba,hotstuff,sunday,booty,gambit,
31415926,impala,stephani,jessica1,hooker,lancer,knicks,shamrock,fuckyou2,stinger,
314159,redneck,deftones,squirt,siemens,blaster,trucker,subaru,renegade,ibanez,manson,swinger,reaper,blondie,mylove,galaxy,blahblah,enterpri,travel,
1234abcd,babylon5,indiana,skeeter,master1,sugar,ficken,smoke,bigone,sweetpea,fucked,trfnthbyf,marino,escort,smitty,bigfoot,babes,larisa,trumpet,spartan,valera,babylon,asdfghj,yankees1,bigboobs,stormy,mister,hamlet,aardvark,butterfl,marathon,paladin,cavalier,manchester,skater,indigo,hornet,buckeyes,
01011990,indians,karate,hesoyam,toronto,diamonds,chiefs,buckeye,
1qaz2wsx3edc,highland,hotsex,charger,redman,passwor,maiden,drpepper,storm,pornstar,garden,
12345678910,pencil,sherlock,timber,thuglife,insane,pizza,jungle,jesus1,aragorn,
1a2b3c,hamster,david1,triumph,techno,lollol,pioneer,catdog,
321654,fktrctq,morpheus,
141627,pascal,shadow1,hobbit,wetpussy,erotic,consumer,blabla,justme,stones,chrissy,spartak,goforit,burger,pitbull,adgjmptw,italia,barcelona,hunting,colors,kissme,virgin,overlord,pebbles,sundance,emerald,doggy,racecar,irina,element,
1478963,zipper,alpine,basket,goddess,poison,nipple,sakura,chichi,huskers,
13579,pussys,q12345,ultimate,ncc1701e,blackie,nicola,rommel,matthew1,caserta,omega,geronimo,sammy1,trojan,
123qwe123,philips,nugget,tarzan,chicks,aleksandr,bassman,trixie,portugal,anakin,dodger,bomber,superfly,madness,q1w2e3r4t5y6,loser,
123asd,fatcat,ybrbnf,soldier,warlock,wrinkle1,desire,sexual,babe,seminole,alejandr,
951753,
11235813,westham,andrei,concrete,access14,weed,letmein2,ladybug,naked,christop,trombone,tintin,bluesky,rhbcnbyf,qazxswedc,onelove,cdtnkfyf,whore,vfvjxrf,titans,stallion,truck,hansolo,blue22,smiles,beagle,panama,kingkong,flatron,inferno,mongoose,connect,poiuyt,snatch,qawsed,juice,blessed,rocker,snakes,turbo,bluemoon,sex4me,finger,jamaica,a1234567,mulder,beetle,fuckyou1,passat,immortal,plastic,
123454321,anthony1,whiskey,dietcoke,suck,spunky,magic1,monitor,cactus,exigen,planet,ripper,teen,spyder,apple1,nolimit,hollywoo,sluts,sticky,trunks,
1234321,
14789632,pickles,sailing,bonehead,ghbdtnbr,delta,charlott,rubber,
911911,
112358,molly1,yomama,hongkong,jumper,william1,ilovesex,faster,unreal,cumming,memphis,
1123581321,nylons,legion,sebastia,shalom,pentium,geheim,werewolf,funtime,ferret,orion,curious,
555666,niners,cantona,sprite,philly,pirates,abgrtyu,lollipop,eternity,boeing,super123,sweets,cooldude,tottenha,green1,jackoff,stocking,
7895123,moomoo,martini,biscuit,drizzt,colt45,fossil,makaveli,snapper,satan666,maniac,salmon,patriot,verbatim,nasty,shasta,asdzxc,shaved,blackcat,raistlin,qwerty12345,punkrock,cjkywt,
01012010,
4128,waterloo,crimson,twister,oxford,musicman,seinfeld,biggie,condor,ravens,megadeth,wolfman,cosmos,sharks,banshee,keeper,foxtrot,gn56gn56,skywalke,velvet,black1,sesame,dogs,squirrel,privet,sunrise,wolverine,sucks,legolas,grendel,ghost,cats,carrot,frosty,lvbnhbq,blades,stardust,frog,qazwsxed,
121314,coolio,brownie,groovy,twilight,daytona,vanhalen,pikachu,peanuts,licker,hershey,jericho,intrepid,ninja,
1234567a,zaq123,lobster,goblin,punisher,strider,shogun,kansas,amadeus,seven7,jason1,neptune,showtime,muscle,oldman,ekaterina,rfrfirf,getsome,showme,
111222333,obiwan,skittles,danni,tanker,maestro,tarheel,anubis,hannibal,anal,newlife,gothic,shark,fighter,blue123,blues,
123456z,princes,slick,chaos,thunder1,sabine,
1q2w3e4r5t6y,python,test1,mirage,devil,clover,tequila,chelsea1,surfing,delete,potato,chubby,panasonic,sandiego,portland,baggins,fusion,sooners,blackdog,buttons,californ,moscow,playtime,mature,
1a2b3c4d,dagger,dima,stimpy,asdf123,gangster,warriors,iverson,chargers,byteme,swallow,liquid,lucky7,dingdong,nymets,cracker,mushroom,
456852,crusader,bigguy,miami,dkflbvbh,bugger,nimrod,tazman,stranger,newpass,doodle,powder,gotcha,guardian,dublin,slapshot,septembe,
147896325,pepsi1,milano,grizzly,woody1,knights,photos,
2468,nookie,charly,rammstein,brasil,
123321123,scruffy,munchkin,poopie,
123098,kittycat,latino,walnut,
1701,thegame,viper1,
1passwor,kolobok,picasso,robert1,barcelon,bananas,trance,auburn,coltrane,eatshit,goodluck,starcraft,wheels,parrot,postal,blade,wisdom,pink,gorilla,katerina,pass123,andrew1,shaney14,dumbass,osiris,fuck_inside,oakland,discover,ranger1,spanking,lonestar,bingo,meridian,ping,heather1,dookie,stonecol,megaman,
192837465,rjntyjr,ledzep,lowrider,
25802580,richard1,firefly,griffey,racerx,paradox,ghjcnj,gangsta,zaq1xsw2,tacobell,weezer,sirius,halflife,buffett,shiloh,
123698745,vertigo,sergei,aliens,sobaka,keyboard,kangaroo,sinner,soccer1,
0.0.000,bonjour,socrates,chucky,hotboy,sprint,
0007,sarah1,scarlet,celica,shazam,formula1,sommer,trebor,qwerasdf,jeep,mailcreated5240,bollox,asshole1,fuckface,honda1,rebels,vacation,lexmark,penguins,
12369874,ragnarok,formula,
258456,tempest,vfhecz,tacoma,qwertz,colombia,flames,rockon,duck,prodigy,wookie,dodgeram,mustangs,
123qaz,sithlord,smoker,server,bang,incubus,scoobydo,oblivion,molson,kitkat,titleist,rescue,zxcv1234,carpet,
1122,bigballs,tardis,jimbob,xanadu,blueeyes,shaman,mersedes,pooper,pussy69,golfing,hearts,mallard,
12312312,kenwood,patrick1,dogg,cowboys1,oracle,
123zxc,nuttertools,
102938,topper,
1122334455,shemale,sleepy,gremlin,yourmom,
123987,gateway1,printer,monkeys,peterpan,mikey,kingston,cooler,analsex,jimbo,pa55word,asterix,freckles,birdman,frank1,defiant,aussie,stud,blondes,tatyana,
445566,aspirine,mariners,jackal,deadhead,katrin,anime,rootbeer,frogger,polo,scooter1,hallo,noodles,thomas1,parola,shaolin,celine,
11112222,plymouth,creampie,justdoit,ohyeah,fatass,assfuck,amazon,
1234567q,kisses,magnus,camel,nopass,bosco,
987456,
6751520,harley1,putter,champs,massive,spidey,lightnin,camelot,letsgo,gizmodo,aezakmi,bones,caliente,
12121,goodtime,thankyou,raiders1,brucelee,redalert,aquarius,
456654,catherin,smokin,pooh,mypass,astros,roller,porkchop,sapphire,qwert123,kevin1,a1s2d3f4,beckham,atomic,rusty1,vanilla,qazwsxedcrfv,hunter1,kaktus,cxfcnmt,blacky,
753159,elvis1,aggies,blackjac,bangkok,scream,
123321q,iforgot,power1,kasper,abc12,buster1,slappy,shitty,veritas,chevrole,amber1,
01012001,vader,amsterdam,jammer,primus,spectrum,eduard,granny,horny1,sasha1,clancy,usa123,satan,diamond1,hitler,avenger,
1221,spankme,
123456qwerty,simba,smudge,scrappy,labrador,john316,syracuse,front242,falcons,husker,candyman,commando,gator,pacman,delta1,pancho,krishna,fatman,clitoris,pineappl,lesbians,
8j4ye3uz,barkley,vulcan,punkin,boner,celtics,monopoly,flyboy,romashka,hamburg,
123456aa,lick,gangbang,
223344,area51,spartans,aaa111,tricky,snuggles,drago,homerun,vectra,homer1,hermes,topcat,cuddles,infiniti,
1234567890q,cosworth,goose,phoenix1,killer1,ivanov,bossman,qawsedrf,peugeot,exigent,doberman,durango,brandon1,plumber,telefon,horndog,laguna,rbhbkk,dawg,webmaster,breeze,beast,porsche9,beefcake,leopard,redbull,oscar1,topdog,godsmack,theking,pics,omega1,speaker,viktoria,fuckers,bowler,starbuck,gjkbyf,valhalla,anarchy,blacks,herbie,kingpin,starfish,nokia,loveit,achilles,
906090,labtec,ncc1701a,fitness,jordan1,brando,arsenal1,bull,kicker,napass,desert,sailboat,bohica,tractor,hidden,muppet,jackson1,jimmy1,terminator,phillies,pa55w0rd,terror,farside,swingers,legacy,frontier,butthole,doughboy,jrcfyf,tuesday,sabbath,daniel1,nebraska,homers,qwertyuio,azamat,fallen,agent007,striker,camels,iguana,looker,pinkfloy,moloko,qwerty123456,dannyboy,luckydog,
789654,pistol,whocares,charmed,skiing,select,franky,puppy,daniil,vladik,vette,vfrcbvrf,ihateyou,nevada,moneys,vkontakte,mandingo,puppies,
666777,mystic,zidane,kotenok,dilligaf,budman,bunghole,zvezda,
123457,triton,golfball,technics,trojans,panda,laptop,rookie,
01011991,
15426378,aberdeen,gustav,jethro,enterprise,igor,stripper,filter,hurrican,rfnthbyf,lespaul,gizmo1,butch,
132435,dthjybrf,
1366613,excalibu,
963852,nofear,momoney,possum,cutter,oilers,moocow,cupcake,gbpltw,batman1,splash,svetik,super1,soleil,bogdan,melissa1,vipers,babyboy,tdutybq,lancelot,ccbill,keystone,passwort,flamingo,firefox,dogman,vortex,rebel,noodle,raven1,zaphod,killme,pokemon1,coolman,danila,designer,skinny,kamikaze,deadman,gopher,doobie,warhammer,deeznuts,freaks,engage,chevy1,steve1,apollo13,poncho,hammers,azsxdc,dracula,
000007,sassy,bitch1,boots,deskjet,
12332,macdaddy,mighty,rangers1,manchest,sterlin,casey1,meatball,mailman,sinatra,cthulhu,summer1,bubbas,cartoon,bicycle,eatpussy,truelove,sentinel,tolkien,breast,capone,lickit,summit,
123456k,peter1,daisy1,kitty1,
123456789z,crazy1,jamesbon,texas1,sexygirl,
362436,sonic,billyboy,redhot,microsof,microlab,daddy1,rockets,iloveyo,fernand,gordon24,danie,cutlass,polska,star69,titties,pantyhos,
01011985,thekid,aikido,gofish,mayday,
1234qwe,coke,anfield,sony,lansing,smut,scotch,sexx,catman,
73501505,hustler,saun,dfkthbz,passwor1,jenny1,azsxdcfv,cheers,irish1,gabrie,tinman,orioles,
1225,charlton,fortuna,
01011970,airbus,rustam,xtreme,bigmoney,zxcasd,retard,grumpy,huskies,boxing,
4runner,kelly1,ultima,warlord,fordf150,oranges,rotten,asdfjkl,superstar,denali,sultan,bikini,saratoga,thor,figaro,sixers,wildfire,vladislav,
128500,sparta,mayhem,greenbay,chewie,music1,number1,cancun,fabie,mellon,poiuytrewq,cloud9,crunch,bigtime,chicken1,piccolo,bigbird,
321654987,billy1,mojo,
01011981,maradona,sandro,chester1,bizkit,rjirfrgbde,
789123,rightnow,jasmine1,hyperion,treasure,meatloaf,armani,rovers,jarhead,
01011986,cruise,coconut,dragoon,utopia,davids,cosmo,rfhbyf,reebok,
1066,charli,giorgi,sticks,sayang,pass1234,exodus,anaconda,zaqxsw,illini,woofwoof,emily1,sandy1,packer,poontang,govols,jedi,tomato,beaner,cooter,creamy,lionking,happy123,albatros,poodle,kenworth,dinosaur,greens,goku,happyday,eeyore,tsunami,cabbage,holyshit,turkey50,memorex,chaser,bogart,orgasm,tommy1,volley,whisper,knopka,ericsson,walleye,
321123,pepper1,katie1,chickens,tyler1,corrado,twisted,
100000,zorro,clemson,zxcasdqwe,tootsie,milana,zenith,fktrcfylhf,shania,frisco,polniypizdec0211,crazybab,junebug,fugazi,rereirf,vfvekz,
1001,sausage,vfczyz,koshka,clapton,justin1,anhyeuem,condom,fubar,hardrock,skywalker,tundra,cocks,gringo,
150781,canon,vitalik,aspire,stocks,samsung1,applepie,abc12345,arjay,gandalf1,boob,pillow,sparkle,gmoney,rockhard,lucky13,samiam,everest,hellyeah,bigsexy,skorpion,rfrnec,hedgehog,australi,candle,slacker,dicks,voyeur,jazzman,america1,bobby1,br0d3r,wolfie,vfksirf,
1qa2ws3ed,
13243546,fright,yosemite,temp,karolina,fart,barsik,surf,cheetah,baddog,deniska,starship,bootie,milena,hithere,kume,greatone,dildo,
50cent,
0.0.0.000,albion,amanda1,midget,lion,maxell,football1,cyclone,freeporn,nikola,bonsai,kenshin,slider,balloon,roadkill,killbill,
222333,jerkoff,
78945612,dinamo,tekken,rambler,goliath,cinnamon,malaka,backdoor,fiesta,packers1,rastaman,fletch,sojdlg123aljg,stefano,artemis,calico,nyjets,damnit,robotech,duchess,rctybz,hooter,keywest,
18436572,hal9000,mechanic,pingpong,operator,presto,sword,rasputin,spank,bristol,faggot,shado,
963852741,amsterda,
321456,wibble,carrera,alibaba,majestic,ramses,duster,route66,trident,clipper,steeler,wrestlin,divine,kipper,gotohell,kingfish,snake1,passwords,buttman,pompey,viagra,zxcvbnm1,spurs,
332211,slutty,lineage2,oleg,macross,pooter,brian1,qwert1,charles1,slave,jokers,yzerman,swimmer,ne1469,nwo4life,solnce,seamus,lolipop,pupsik,moose1,ivanova,secret1,matador,love69,
420247,ktyjxrf,subway,cinder,vermont,pussie,chico,florian,magick,guiness,allsop,ghetto,flash1,a123456789,typhoon,dfkthf,depeche,skydive,dammit,seeker,fuckthis,crysis,kcj9wx5n,umbrella,r2d2c3po,
123123q,snoopdog,critter,theboss,ding,
162534,splinter,kinky,cyclops,jayhawk,
456321,caramel,qwer123,underdog,caveman,onlyme,grapes,feather,hotshot,fuckher,renault,george1,sex123,pippen,
000001,
789987,floppy,cunts,megapass,
1000,pornos,usmc,kickass,great1,quattro,
135246,wassup,helloo,p0015123,nicole1,chivas,shannon1,bullseye,java,fishes,blackhaw,jamesbond,tunafish,juggalo,dkflbckfd,
123789456,dallas1,translator,
122333,beanie,alucard,gfhjkm123,supersta,magicman,ashley1,cohiba,xbox360,caligula,
12131415,facial,
7753191,dfktynbyf,cobra1,cigars,fang,klingon,bob123,safari,looser,
10203,deepthroat,malina,
200000,tazmania,gonzo,goalie,jacob1,monaco,cruiser,misfit,vh5150,tommyboy,marino13,yousuck,sharky,vfhufhbnf,horizon,absolut,brighton,
123456r,death1,kungfu,maxx,forfun,mamapapa,enter1,budweise,banker,getmoney,kostya,qazwsx12,bigbear,vector,fallout,nudist,gunners,royals,chainsaw,scania,trader,blueboy,walrus,eastside,kahuna,qwerty1234,love123,steph,
01011989,cypress,champ,undertaker,ybrjkfq,europa,snowboar,sabres,moneyman,chrisbln,minime,nipper,groucho,whitey,viewsonic,penthous,wolf359,fabric,flounder,coolguy,whitesox,passme,smegma,skidoo,thanatos,fucku2,snapple,dalejr,mondeo,thesims,mybaby,panasoni,sinbad,thecat,topher,frodo,sneakers,q123456,z1x2c3,alfa,chicago1,taylor1,ghjcnjnfr,cat123,olivier,cyber,titanium,
0420,madison1,jabroni,dang,hambone,intruder,holly1,gargoyle,sadie1,static,poseidon,studly,newcastl,sexxxx,poppy,johannes,danzig,beastie,musica,buckshot,sunnyday,adonis,bluedog,bonkers,
2128506,chrono,compute,spawn,
01011988,turbo1,smelly,wapbbs,goldstar,ferrari1,
778899,quantum,pisces,boomboom,gunnar,
1024,test1234,florida1,nike,superman1,multiplelo,custom,motherlode,
1qwerty,westwood,usnavy,apple123,daewoo,korn,stereo,sasuke,sunflowe,watcher,dharma,
555777,mouse1,assholes,babyblue,
123qwerty,marius,walmart,snoop,starfire,tigger1,paintbal,knickers,aaliyah,lokomotiv,theend,winston1,sapper,rover,erotica,scanner,racer,zeus,sexy69,doogie,bayern,joshua1,newbie,scott1,losers,droopy,outkast,martin1,dodge1,wasser,ufkbyf,rjycnfynby,thirteen,
12345z,
112211,hotred,deejay,hotpussy,
192837,jessic,philippe,scout,panther1,cubbies,havefun,magpie,fghtkm,avalanch,newyork1,pudding,leonid,harry1,cbr600,audia4,bimmer,fucku,
01011984,idontknow,vfvfgfgf,
1357,aleksey,builder,
01011987,zerocool,godfather,mylife,donuts,allmine,redfish,
777888,sascha,nitram,bounce,
333666,smokes,
1x2zkg8w,rodman,stunner,zxasqw12,hoosier,hairy,beretta,insert,
123456s,rtyuehe,francesc,tights,cheese1,micron,quartz,hockey1,gegcbr,searay,jewels,bogey,paintball,celeron,padres,bing,syncmaster,ziggy,simon1,beaches,prissy,diehard,orange1,mittens,aleksandra,queens,
02071986,biggles,thongs,southpark,artur,twinkle,gretzky,rabota,cambiami,monalisa,gollum,chuckles,spike1,gladiator,whisky,spongebob,sexy1,
03082006,mazafaka,meathead,
4121,ou8122,barefoot,
12345678q,cfitymrf,bigass,a1s2d3,kosmos,blessing,titty,clevelan,terrapin,ginger1,johnboy,maggot,clarinet,deeznutz,
336699,stumpy,stoney,footbal,traveler,volvo,bucket,snapon,pianoman,hawkeyes,futbol,casanova,tango,goodboy,scuba,honey1,sexyman,warthog,mustard,abc1234,nickel,
10203040,meowmeow,
1012,boricua,prophet,sauron,
12qwas,reefer,andromeda,crystal1,joker1,
90210,goofy,loco,lovesex,triangle,whatsup,mellow,bengals,monster1,maste,
01011910,lover1,love1,
123aaa,sunshin,smeghead,hokies,sting,welder,rambo,cerberus,bunny1,rockford,monke,
1q2w3e4r5,goldwing,gabriell,buzzard,crjhgbjy,james007,rainman,groove,tiberius,purdue,nokia6300,hayabusa,shou,jagger,diver,zigzag,poochie,usarmy,phish,redwood,redwing,
12345679,salamander,silver1,abcd123,sputnik,boobie,ripple,eternal,
12qw34er,thegreat,allstar,slinky,gesperrt,mishka,whiskers,pinhead,overkill,sweet1,rhfcjnrf,montgom240,sersolution,jamie1,starman,proxy,swords,nikolay,bacardi,rasta,badgirl,rebecca1,wildman,penny1,spaceman,
1007,
10101,logan1,hacked,bulldog1,helmet,windsor,buffy1,runescape,trapper,
123451,banane,dbrnjh,ripken,
12345qwe,frisky,shun,fester,oasis,lightning,ib6ub9,cicero,kool,pony,thedog,
784512,
01011992,megatron,illusion,edward1,napster,
11223,squash,roadking,woohoo,
19411945,hoosiers,
01091989,tracker,bagira,midway,leavemealone,br549,
14725836,
235689,menace,rachel1,feng,laser,stoned,realmadrid,
787898,balloons,tinkerbell,
5551212,maria1,pobeda,heineken,sonics,moonlight,optimus,comet,orchid,
02071982,jaybird,kashmir,
12345678a,chuang,chunky,peach,mortgage,rulezzz,saleen,chuckie,zippy,fishing1,gsxr750,doghouse,maxim,reader,shai,buddah,benfica,chou,salomon,meister,eraser,blackbir,bigmike,starter,pissing,angus,deluxe,eagles1,hardcock,
135792468,mian,seahawks,godfathe,bookworm,gregor,intel,talisman,blackjack,babyface,hawaiian,dogfood,zhong,
01011975,sancho,ludmila,medusa,mortimer,
123456654321,roadrunn,just4me,stalin,
01011993,handyman,alphabet,pizzas,calgary,clouds,password2,cgfhnfr,f**k,cubswin,gong,lexus,max123,xxx123,digital1,gfhjkm1,
7779311,missy1,michae,beautifu,gator1,
1005,pacers,buddie,chinook,heckfy,dutchess,sally1,breasts,beowulf,darkman,jenn,tiffany1,zhei,quan,qazwsx1,satana,shang,idontkno,smiths,puddin,nasty1,teddybea,valkyrie,passwd,chao,boxster,killers,yoda,cheater,inuyasha,beast1,wareagle,foryou,dragonball,mermaid,bhbirf,teddy1,dolphin1,misty1,delphi,gromit,sponge,qazzaq,fytxrf,gameover,diao,sergi,beamer,beemer,kittykat,rancid,manowar,adam12,diggler,assword,austin1,wishbone,gonavy,sparky1,fisting,thedude,sinister,
1213,venera,novell,salsero,jayden,fuckoff1,linda1,vedder,
02021987,
1pussy,redline,lust,jktymrf,
02011985,dfcbkbq,dragon12,chrome,gamecube,titten,cong,bella1,leng,
02081988,eureka,bitchass,
147369,banner,lakota,
123321a,mustafa,preacher,hotbox,
02041986,z1x2c3v4,playstation,
01011977,claymore,electra,checkers,zheng,qing,armagedon,
02051986,wrestle,svoboda,bulls,nimbus,alenka,madina,newpass6,onetime,aa123456,bartman,
02091987,silverad,electron,
12345t,devil666,oliver1,skylar,rhtdtlrj,gobucks,johann,
12011987,milkman,
02101985,camper,thunderb,bigbutt,jammin,davide,cheeks,goaway,lighter,claudi,thumbs,pissoff,ghostrider,cocaine,teng,squall,lotus,hootie,blackout,doitnow,subzero,
02031986,marine1,
02021988,pothead,
123456qw,skate,
1369,peng,antoni,neng,miao,bcfields,
1492,marika,
794613,musashi,tulips,nong,piao,chai,ruan,southpar,
02061985,nude,mandarin,
654123,ninjas,cannabis,jetski,xerxes,zhuang,kleopatra,dickie,bilbo,pinky,morgan1,
1020,
1017,dieter,baseball1,tottenham,quest,yfnfkmz,dirtbike,
1234567890a,mango,jackson5,ipswich,iamgod,
02011987,tdutybz,modena,qiao,slippery,qweasd123,bluefish,samtron,toon,
111333,iscool,
02091986,petrov,fuzzy,zhou,
1357924680,mollydog,deng,
02021986,
1236987,pheonix,zhun,ghblehjr,othello,starcraf,
000111,sanfran,a11111,cameltoe,badman,vasilisa,jiang,
1qaz2ws,luan,sveta,
12qw12,akira,chuai,
369963,cheech,beatle,pickup,paloma,
01011983,caravan,elizaveta,gawker,banzai,pussey,mullet,seng,bingo1,bearcat,flexible,farscape,borussia,zhuai,templar,guitar1,toolman,yfcntymrf,chloe1,xiang,slave1,guai,nuggets,
02081984,mantis,slim,scorpio1,fyutkbyf,thedoors,
02081987,
02061986,
123qq123,zappa,fergie,
7ugd
5hip
2j,huai,asdfzxcv,sunflower,pussyman,deadpool,bigtit,
01011982,love12,lassie,skyler,gatorade,carpedie,jockey,mancity,spectre,
02021984,cameron1,artemka,reng,
02031984,iomega,jing,moritz,spice,rhino,spinner,heater,zhai,hover,talon,grease,qiong,corleone,ltybcrf,tian,cowboy1,hippie,chimera,ting,alex123,
02021985,mickey1,corsair,sonoma,aaron1,xxxpass,bacchus,webmaste,chuo,xyz123,chrysler,spurs1,artem,shei,cosmic,
01020304,deutsch,gabriel1,
123455,oceans,
987456321,binladen,latinas,a12345678,speedo,buttercu,
02081989,
21031988,merlot,millwall,ceng,kotaku,jiong,dragonba,
2580,stonecold,snuffy,
01011999,
02011986,hellos,blaze,maggie1,slapper,istanbul,bonjovi,babylove,mazda,bullfrog,phoeni,meng,porsche1,nomore,
02061989,bobdylan,capslock,orion1,zaraza,teddybear,ntktajy,myname,rong,wraith,mets,niao,
02041984,smokie,chevrolet,dialog,gfhjkmgfhjkm,dotcom,vadim,monarch,athlon,mikey1,hamish,pian,liang,coolness,chui,thoma,ramones,ciccio,chippy,eddie1,house1,ning,marker,cougars,jackpot,barbados,reds,pdtplf,knockers,cobalt,amateurs,dipshit,napoli,kilroy,pulsar,jayhawks,daemon,alexey,weng,shuang,
9293709b13,shiner,eldorado,soulmate,mclaren,golfer1,andromed,duan,
50spanks,sexyboy,dogshit,
02021983,shuo,kakashka,syzygy,
111111a,yeahbaby,qiang,netscape,fulham,
120676,gooner,zhui,rainbow6,laurent,dog123,halifax,freeway,carlitos,
147963,eastwood,microphone,monkey12,
1123,persik,coldbeer,geng,nuan,danny1,fgtkmcby,entropy,gadget,just4fun,sophi,baggio,carlito,
1234567891,
02021989,
02041983,specialk,piramida,suan,bigblue,salasana,hopeful,mephisto,bailey1,hack,annie1,generic,violetta,spencer1,arcadia,
02051983,hondas,
9562876,trainer,jones1,smashing,liao,
159632,iceberg,rebel1,snooker,temp123,zang,matteo,fastball,q2w3e4r5,bamboo,fuckyo,shutup,astro,buddyboy,nikitos,redbird,maxxxx,shitface,
02031987,kuai,kissmyass,sahara,radiohea,
1234asdf,wildcard,maxwell1,patric,plasma,heynow,bruno1,shao,bigfish,misfits,sassy1,sheng,
02011988,
02081986,testpass,nanook,cygnus,licking,slavik,pringles,xing,
1022,ninja1,submit,dundee,tiburon,pinkfloyd,yummy,shuai,guang,chopin,obelix,insomnia,stroker,
1a2s3d4f,
1223,playboy1,lazarus,jorda,spider1,homerj,sleeper,
02041982,darklord,cang,
02041988,
02041987,tripod,magician,jelly,telephon,
15975,vsjasnel12,pasword,iverson3,pavlov,homeboy,gamecock,amigo,brodie,budapest,yjdsqgfhjkm,reckless,
02011980,pang,tiger123,
2469,mason1,orient,
01011979,zong,cdtnbr,maksimka,
1011,bushido,taxman,giorgio,sphinx,kazantip,
02101984,concorde,verizon,lovebug,georg,sam123,seadoo,qazwsxedc123,jiao,jezebel,pharmacy,abnormal,jellybea,maxime,puffy,islander,bunnies,jiggaman,drakon,
010180,pluto,zhjckfd,
12365,classics,crusher,mordor,hooligan,strawberry,
02081985,scrabble,hawaii50,
1224,wg8e3wjf,cthtuf,premium,arrow,
123456qwe,mazda626,ramrod,tootie,rhjrjlbk,ghost1,
1211,bounty,niang,
02071984,goat,killer12,sweetnes,porno1,masamune,
426hemi,corolla,mariposa,hjccbz,doomsday,bummer,blue12,zhao,bird33,excalibur,samsun,kirsty,buttfuck,kfhbcf,zhuo,marcello,ozzy,
02021982,dynamite,
655321,master12,
123465,lollypop,stepan,
1qa2ws,spiker,goirish,callum,michael2,moonbeam,attila,henry1,lindros,andrea1,sporty,lantern,
12365478,nextel,violin,volcom,
998877,water1,imation,inspiron,dynamo,citadel,placebo,clowns,tiao,
02061988,tripper,dabears,haggis,merlin1,
02031985,anthrax,amerika,iloveme,vsegda,burrito,bombers,snowboard,forsaken,katarina,a1a2a3,woofer,tigger2,fullmoon,tiger2,spock,hannah1,snoopy1,sexxxy,sausages,stanislav,cobain,robotics,exotic,green123,mobydick,senators,pumpkins,fergus,asddsa,
147741,
258852,windsurf,reddevil,vfitymrf,nevermind,nang,woodland,
4417,mick,shui,q1q2q3,wingman,
69696,superb,zuan,ganesh,pecker,zephyr,anastasiya,icu812,larry1,
02081982,broker,zalupa,mihail,vfibyf,dogger,
7007,paddle,varvara,schalke,
1z2x3c,presiden,yankees2,tuning,poopy,
02051982,concord,vanguard,stiffy,rjhjktdf,felix1,wrench,firewall,boxer,bubba69,popper,
02011984,temppass,gobears,cuan,tipper,fuckme1,kamila,thong,puss,bigcat,drummer1,
02031982,sowhat,digimon,tigers1,rang,jingle,bian,uranus,soprano,mandy1,dusty1,fandango,aloha,pumpkin1,postman,
02061980,dogcat,bombay,pussy123,onetwo,highheel,pippo,julie1,laura1,pepito,beng,smokey1,stylus,stratus,reload,duckie,karen1,jimbo1,
225588,
369258,krusty,snappy,asdf12,electro,
111qqq,kuang,fishin,clit,abstr,christma,qqqqq1,
1234560,carnage,guyver,boxers,kittens,zeng,
1000000,qwerty11,toaster,cramps,yugioh,
02061987,icehouse,zxcvbnm123,pineapple,namaste,harrypotter,mygirl,falcon1,earnhard,fender1,spikes,nutmeg,
01081989,dogboy,
02091983,
369852,softail,mypassword,prowler,bigboss,
1112,harvest,heng,jubilee,killjoy,basset,keng,zaqxswcde,redsox1,biao,titan,misfit99,robot,wifey,kidrock,
02101987,gameboy,enrico,
1z2x3c4v,broncos1,arrows,havana,banger,cookie1,chriss,
123qw,platypus,cindy1,lumber,pinball,foxy,london1,
1023,
05051987,
02041985,password12,superma,longbow,radiohead,nigga,
12051988,spongebo,qwert12345,abrakadabra,dodgers1,
02101989,chillin,niceguy,pistons,hookup,santafe,bigben,jets,
1013,vikings1,mankind,viktoriya,beardog,hammer1,
02071980,reddwarf,magelan,longjohn,jennife,gilles,carmex2,
02071987,stasik,bumper,doofus,slamdunk,pixies,garion,steffi,alessandro,beerman,niceass,warrior1,honolulu,
134679852,visa,johndeer,mother1,windmill,boozer,oatmeal,aptiva,busty,delight,tasty,slick1,bergkamp,badgers,guitars,puffin,
02091981,nikki1,irishman,miller1,zildjian,
123000,airwolf,magnet,anai,install,
02041981,
02061983,astra,romans,megan1,mudvayne,freebird,muscles,dogbert,
02091980,
02091984,snowflak,
01011900,mang,joseph1,nygiants,playstat,junior1,vjcrdf,qwer12,webhompas,giraffe,pelican,jefferso,comanche,bruiser,monkeybo,kjkszpj,
123456l,micro,albany,
02051987,angel123,epsilon,aladin,death666,hounddog,josephin,altima,chilly,
02071988,
78945,ultra,
02041979,gasman,thisisit,pavel,idunno,kimmie,
05051985,paulie,ballin,medion,moondog,manolo,pallmall,climber,fishbone,genesis1,
153624,toffee,tbone,clippers,krypton,jerry1,picturs,compass,
111111q,
02051988,
1121,
02081977,sairam,getout,
333777,cobras,
22041987,bigblock,severin,booster,norwich,whiteout,ctrhtn,
123456m,
02061984,hewlett,shocker,fuckinside,
02031981,chase1,white1,versace,
123456789s,basebal,iloveyou2,bluebell,
08031986,anthon,stubby,foreve,undertak,werder,saiyan,mama123,medic,chipmunk,mike123,mazdarx7,qwe123qwe,bowwow,kjrjvjnbd,celeb,choochoo,demo,lovelife,
02051984,colnago,lithium,
02051989,
15051981,zzzxxx,welcom,anastasi,fidelio,franc,
26061987,roadster,stone55,drifter,hookem,hellboy,
1234qw,cbr900rr,sinned,good123654,storm1,gypsy,zebra,zachary1,toejam,buceta,
02021979,testing1,redfox,lineage,mike1,highbury,koroleva,nathan1,washingt,
02061982,
02091985,vintage,redbaron,dalshe,mykids,
11051987,macbeth,julien,james123,krasotka,
111000,
10011986,
987123,pipeline,tatarin,sensei,codered,komodo,frogman,
7894561230,nascar24,juicy,
01031988,redrose,mydick,pigeon,tkbpfdtnf,smirnoff,
1215,spam,winner1,flyfish,moskva,
81fukkc,
21031987,olesya,starligh,summer99,
13041988,fishhead,freesex,super12,
06061986,azazel,scoobydoo,
02021981,cabron,yogibear,sheba1,konstantin,tranny,chilli,terminat,ghbywtccf,slowhand,soccer12,cricket1,fuckhead,
1002,seagull,achtung,blam,bigbob,bdsm,nostromo,survivor,cnfybckfd,lemonade,boomer1,rainbow1,rober,irinka,cocksuck,peaches1,itsme,sugar1,zodiac,upyours,dinara,
135791,sunny1,chiara,johnson1,
02041989,solitude,habibi,sushi,markiz,smoke1,rockies,catwoman,johnny1,qwerty7,bearcats,username,
01011978,wanderer,ohshit,
02101986,sigma,stephen1,paradigm,
02011989,flanker,sanity,jsbach,spotty,bologna,fantasia,chevys,borabora,cocker,
74108520,
123ewq,
12021988,
01061990,gtnhjdbx,
02071981,
01011960,sundevil,
3000gt,mustang6,gagging,maggi,armstron,yfnfkb,
13041987,revolver,
02021976,trouble1,madcat,jeremy1,jackass1,volkswag,
30051985,corndog,pool6123,marines1,
03041991,pizza1,piggy,sissy,
02031979,sunfire,angelus,undead,
24061986,
14061991,wildbill,shinobi,
45m2do5bs,
123qwer,
21011989,cleopatr,lasvega,hornets,amorcit,
11081989,coventry,nirvana1,destin,sidekick,
20061988,
02081983,gbhfvblf,sneaky,bmw325,
22021989,nfytxrf,sekret,kalina,zanzibar,hotone,qazws,wasabi,heidi1,highlander,blues1,hitachi,paolo,
23041987,slayer1,simba1,
02011981,tinkerbe,kieran,
01121986,
172839,boiler,
1125,bluesman,waffle,asdfgh01,threesom,conan,
1102,reflex,
18011987,nautilus,everlast,fatty,vader1,
01071986,cyborg,ghbdtn123,birddog,rubble,
02071983,suckers,
02021973,skyhawk,
12qw12qw,dakota1,joebob,nokia6233,woodie,longdong,lamer,troll,ghjcnjgfhjkm,
420000,boating,nitro,armada,messiah,
1031,penguin1,
02091989,americ,
02071989,redeye,asdqwe123,
07071987,monty1,goten,spikey,sonata,
635241,tokiohotel,sonyericsson,citroen,compaq1,
1812,umpire,belmont,jonny,pantera1,nudes,palmtree,
14111986,fenway,bighead,razor,gryphon,andyod22,aaaaa1,taco,
10031988,enterme,malachi,dogface,reptile,
01041985,dindom,handball,marseille,candy1,
19101987,torino,tigge,matthias,viewsoni,
13031987,stinker,evangelion,
24011985,
123456123,rampage,sandrine,
02081980,thecrow,astral,
28041987,sprinter,private1,seabee,shibby,
02101988,
25081988,fearless,junkie,
01091987,aramis,antelope,draven,fuck1,mazda6,eggman,
02021990,barselona,buddy123,
19061987,fyfnjkbq,nancy1,
12121990,
10071987,sluggo,kille,hotties,irishka,zxcasdqwe123,shamus,fairlane,honeybee,soccer10,
13061986,fantomas,
17051988,
10051987,
20111986,gladiato,karachi,gambler,gordo,
01011995,biatch,matthe,
25800852,papito,excite,buffalo1,bobdole,cheshire,player1,
28021992,thewho,
10101986,pinky1,mentor,tomahawk,brown1,
03041986,bismillah,bigpoppa,ijrjkfl,
01121988,runaway,
08121986,skibum,studman,helper,squeak,holycow,manfred,harlem,glock,gideon,
987321,
14021985,yellow1,wizard1,margarit,success1,medved,sf49ers,lambda,pasadena,johngalt,quasar,
1776,
02031980,coldplay,amand,playa,bigpimp,
04041991,capricorn,elefant,sweetness,bruce1,luca,dominik,
10011990,biker,
09051945,datsun,elcamino,trinitro,malice,audi,voyager1,
02101983,joe123,carpente,spartan1,mario1,glamour,diaper,
12121985,
22011988,winter1,asimov,callisto,nikolai,pebble,
02101981,vendetta,david123,boytoy,
11061985,
02031989,iloveyou1,stupid1,cayman,casper1,zippo,yamahar1,wildwood,foxylady,calibra,
02041980,
27061988,dungeon,leedsutd,
30041986,
11051990,bestbuy,antares,dominion,
24680,
01061986,skillet,enforcer,derparol,
01041988,
196969,
29071983,f00tball,purple1,mingus,
25031987,
21031990,remingto,giggles,klaste,
3x7pxr,
01011994,coolcat,
29051989,megane,
20031987,
02051980,
04041988,synergy,
0000007,macman,iforget,adgjmp,vjqgfhjkm,
28011987,rfvfcenhf,
16051989,
25121987,
16051987,rogue,mamamia,
08051990,
20091991,
1210,carnival,bolitas,paris1,dmitriy,dimas,
05051989,papillon,knuckles,
29011985,hola,tophat,
28021990,
100500,cutiepie,devo,
415263,ducks,ghjuhfvvf,asdqwe,
22021986,freefall,parol,
02011983,zarina,buste,vitamin,warez,bigones,
17061988,baritone,jamess,twiggy,mischief,bitchy,hetfield,
1003,dontknow,grinch,sasha_007,
18061990,
12031985,
12031987,calimero,
224466,letmei,
15011987,acmilan,alexandre,
02031977,
08081988,whiteboy,
21051991,barney1,
02071978,money123,
18091985,bigdawg,
02031988,cygnusx1,zoloto,
31011987,firefigh,blowfish,screamer,lfybbk,
20051988,chelse,
11121986,
01031989,harddick,sexylady,
30031988,
02041974,auditt,pizdec,kojak,kfgjxrf,
20091988,
123456ru,wp2003wp,
1204,
15051990,slugger,kordell1,
03031986,swinging,
01011974,
02071979,rockie,dimples,
1234123,
1dragon,trucking,rusty2,roger1,marijuana,kerouac,
02051978,
08031985,paco,thecure,keepout,kernel,noname123,
13121985,francisc,bozo,
02011982,
22071986,
02101979,obsidian,
12345qw,spud,tabasco,
02051985,jaguars,dfktynby,kokomo,popova,notused,sevens,
4200,magneto,
02051976,roswell,
15101986,
21101986,lakeside,bigbang,aspen,little1,
14021986,loki,suckmydick,strawber,carlos1,nokian73,dirty1,joshu,
25091987,
16121987,
02041975,advent,
17011987,slimshady,whistler,
10101990,stryker,
22031984,
15021985,
01031985,blueball,
26031988,ksusha,bahamut,robocop,w_pass,chris123,impreza,prozac,bookie,bricks,
13021990,alice1,cassandr,
11111q,john123,
4ever,korova,
02051973,
142857,
25041988,paramedi,eclipse1,salope,
07091990,
1124,darkangel,
23021986,
999666,nomad,
02051981,smackdow,
01021990,yoyoma,argentin,moonligh,
57chevy,bootys,hardone,capricor,galant,spanker,dkflbr,
24111989,magpies,krolik,
21051988,cevthrb,cheddar,
22041988,bigbooty,scuba1,qwedsa,duffman,bukkake,acura,johncena,sexxy,p@ssw0rd,
258369,cherries,
12345s,asgard,leopold,fuck123,mopar,lalakers,dogpound,matrix1,crusty,spanner,kestrel,fenris,universa,peachy,assasin,lemmein,eggplant,hejsan,canucks,wendy1,doggy1,aikman,tupac,turnip,godlike,fussball,golden1,
19283746,april1,django,petrova,captain1,vincent1,ratman,taekwondo,chocha,serpent,perfect1,capetown,vampir,amore,gymnast,timeout,nbvjatq,blue32,ksenia,k.lvbkf,nazgul,budweiser,clutch,mariya,sylveste,
02051972,beaker,cartman1,q11111,sexxx,forever1,loser1,marseill,magellan,vehpbr,sexgod,jktxrf,hallo123,
132456,liverpool1,southpaw,seneca,camden,
357159,camero,tenchi,johndoe,
145236,roofer,
741963,vlad,
02041978,fktyrf,zxcv123,wingnut,wolfpac,notebook,pufunga7782,brandy1,biteme1,goodgirl,redhat,
02031978,challeng,millenium,hoops,maveric,noname,angus1,gaell,onion,olympus,sabrina1,ricard,sixpack,gratis,gagged,camaross,hotgirls,flasher,
02051977,bubba123,goldfing,moonshin,gerrard,volkov,sonyfuck,mandrake,
258963,tracer,lakers1,asians,susan1,money12,helmut,boater,diablo2,
1234zxcv,dogwood,bubbles1,happy2,randy1,aries,beach1,marcius2,navigator,goodie,hellokitty,fkbyjxrf,earthlink,lookout,jumbo,opendoor,stanley1,marie1,
12345m,
07071977,ashle,wormix,murzik,
02081976,lakewood,bluejays,loveya,commande,gateway2,peppe,
01011976,
7896321,goth,oreo,slammer,rasmus,faith1,knight1,stone1,redskin,ironmaiden,gotmilk,destiny1,dejavu,
1master,midnite,timosha,espresso,delfin,toriamos,oberon,ceasar,markie,
1a2s3d,ghhh47hj7649,vjkjrj,daddyo,dougie,disco,auggie,lekker,therock1,ou8123,start1,noway,p4ssw0rd,shadow12,
333444,saigon,
2fast4u,capecod,
23skidoo,qazxcv,beater,bremen,aaasss,roadrunner,peace1,
12345qwer,
02071975,platon,bordeaux,vbkfirf,
135798642,test12,supernov,beatles1,qwert40,optimist,vanessa1,prince1,ilovegod,nightwish,natasha1,alchemy,bimbo,blue99,patches1,gsxr1000,richar,hattrick,hott,solaris,proton,nevets,enternow,beavis1,amigos,
159357a,ambers,lenochka,
147896,suckdick,shag,intercourse,blue1234,spiral,
02061977,tosser,ilove,
02031975,cowgirl,canuck,q2w3e4,munch,spoons,waterboy,
123567,evgeniy,savior,zasada,redcar,mamacita,terefon,globus,doggies,htubcnhfwbz,
1008,cuervo,suslik,azertyui,limewire,houston1,stratfor,steaua,coors,tennis1,
12345qwerty,stigmata,derf,klondike,patrici,marijuan,hardball,odyssey,nineinch,boston1,pass1,beezer,sandr,charon,power123,a1234,vauxhall,
875421,awesome1,reggae,boulder,funstuff,iriska,krokodil,rfntymrf,sterva,champ1,bball,peeper,m123456,toolbox,cabernet,sheepdog,magic32,pigpen,
02041977,holein1,lhfrjy,banan,dabomb,natalie1,jennaj,montana1,joecool,funky,steven1,ringo,junio,sammy123,qqqwww,baltimor,footjob,geezer,
357951,mash4077,cashmone,pancake,monic,grandam,bongo,yessir,gocubs,nastia,vancouve,barley,dragon69,watford,ilikepie,
02071976,laddie,
123456789m,hairball,toonarmy,pimpdadd,cvthnm,hunte,davinci,lback,sophie1,firenze,q1234567,admin1,bonanza,elway7,daman,strap,azert,wxcvbn,afrika,theforce,
123456t,idefix,wolfen,houdini,scheisse,default,beech,maserati,
02061976,sigmachi,dylan1,bigdicks,eskimo,mizzou,
02101976,riccardo,egghead,
111777,kronos,ghbrjk,chaos1,jomama,rfhnjirf,rodeo,dolemite,cafc91,nittany,pathfind,mikael,password9,vqsablpzla,purpl,gabber,modelsne,myxworld,hellsing,punker,rocknrol,fishon,fuck69,
02041976,lolol,twinkie,tripleh,cirrus,redbone,killer123,biggun,allegro,gthcbr,smith1,wanking,bootsy,barry1,mohawk,koolaid,
5329,futurama,samoht,klizma,
996633,lobo,honeys,peanut1,
556677,zxasqw,joemama,javelin,samm,
223322,sandra1,flicks,montag,nataly,
3006,tasha1,
1235789,dogbone,poker1,p0o9i8u7,goodday,smoothie,toocool,max333,metroid,archange,vagabond,billabon,
22061941,tyson1,
02031973,darkange,skateboard,evolutio,morrowind,wizards,frodo1,rockin,cumslut,plastics,zaqwsxcde,
5201314,doit,outback,bumble,dominiqu,persona,nevermore,alinka,
02021971,forgetit,sexo,all4one,c2h5oh,petunia,sheeba,kenny1,elisabet,aolsucks,woodstoc,pumper,
02011975,fabio,granada,scrapper,
123459,minimoni,q123456789,breaker,
1004,
02091976,ncc74656,slimshad,friendster,austin31,wiseguy,donner,dilbert1,
132465,blackbird,buffet,jellybean,barfly,behappy,
01011971,carebear,fireblad,
02051975,boxcar,cheeky,kiteboy,hello12,panda1,elvisp,opennow,doktor,alex12,
02101977,pornking,flamengo,
02091975,snowbird,lonesome,robin1,
11111a,weed420,baracuda,bleach,
12345abc,nokia1,metall,singapor,mariner,herewego,dingo,tycoon,cubs,blunts,proview,
123456789d,kamasutra,lagnaf,vipergts,navyseal,starwar,masterbate,wildone,peterbil,cucumber,butkus,
123qwert,climax,deniro,gotribe,cement,scooby1,summer69,harrier,shodan,newyear,
02091977,starwars1,romeo1,sedona,harald,doubled,sasha123,bigguns,salami,awnyce,kiwi,homemade,pimping,azzer,bradley1,warhamme,linkin,dudeman,qwe321,pinnacle,maxdog,flipflop,lfitymrf,fucker1,acidburn,esquire,sperma,fellatio,jeepster,thedon,sexybitch,pookey,spliff,widget,vfntvfnbrf,trinity1,mutant,samuel1,meliss,gohome,
1q2q3q,mercede,comein,grin,cartoons,paragon,henrik,rainyday,pacino,senna,bigdog1,alleycat,
12345qaz,narnia,mustang2,tanya1,gianni,apollo11,wetter,clovis,escalade,rainbows,freddy1,smart1,daisydog,s123456,cocksucker,pushkin,lefty,sambo,fyutkjxtr,hiziad,boyz,whiplash,orchard,newark,adrenalin,
1598753,bootsie,chelle,trustme,chewy,golfgti,tuscl,ambrosia,
5wr2i7h8,penetration,shonuf,jughead,payday,stickman,gotham,kolokol,johnny5,kolbasa,stang,puppydog,charisma,gators1,mone,jakarta,draco,nightmar,
01011973,inlove,laetitia,
02091973,tarpon,nautica,meadow,
0192837465,luckyone,
14881488,chessie,goldeney,tarakan,
69camaro,bungle,wordup,interne,fuckme2,
515000,dragonfl,sprout,
02081974,gerbil,bandit1,
02071971,melanie1,phialpha,camber,kathy1,adriano,gonzo1,
10293847,bigjohn,bismarck,
7777777a,scamper,
12348765,rabbits,
222777,bynthytn,dima123,alexander1,mallorca,dragster,favorite6,beethove,burner,cooper1,fosters,hello2,normandy,
777999,sebring,
1michael,lauren1,blake1,killa,
02091971,nounours,trumpet1,thumper1,playball,xantia,rugby1,rocknroll,guillaum,angela1,strelok,prosper,buttercup,masterp,dbnfkbr,cambridg,venom,treefrog,lumina,
1234566,supra,sexybabe,freee,shen,frogs,driller,pavement,grace1,dicky,checker,smackdown,pandas,cannibal,asdffdsa,blue42,zyjxrf,nthvbyfnjh,melrose,neon,jabber,gamma,
369258147,aprilia,atticus,benessere,catcher,skipper1,azertyuiop,sixty9,thierry,treetop,jello,melons,
123456789qwe,tantra,buzzer,catnip,bouncer,computer1,sexyone,ananas,young1,olenka,sexman,mooses,kittys,sephiroth,contra,hallowee,skylark,sparkles,
777333,
1qazxsw23edc,lucas1,q1w2e3r,gofast,hannes,amethyst,ploppy,flower2,hotass,amatory,volleyba,dixie1,bettyboo,ticklish,
02061974,frenchy,phish1,murphy1,trustno,
02061972,leinad,mynameis,spooge,jupiter1,hyundai,frosch,junkmail,abacab,marbles,
32167,casio,sunshine1,wayne1,longhair,caster,snicker,
02101973,gannibal,skinhead,hansol,gatsby,segblue2,montecar,plato,gumby,kaboom,matty,bosco1,
888999,jazzy,panter,jesus123,charlie2,giulia,candyass,sex69,travis1,farmboy,special1,
02041973,letsdoit,password01,allison1,abcdefg1,notredam,ilikeit,
789654123,liberty1,rugger,uptown,alcatraz,
123456w,airman,
007bond,navajo,kenobi,terrier,stayout,grisha,frankie1,fluff,
1qazzaq1,
1234561,virginie,
1234568,tango1,werdna,octopus,fitter,dfcbkbcf,blacklab,
115599,montrose,allen1,supernova,frederik,ilovepussy,justice1,radeon,playboy2,blubber,sliver,swoosh,motocros,lockdown,pearls,thebear,istheman,pinetree,biit,
1234rewq,rustydog,tampabay,titts,babycake,jehovah,vampire1,streaming,collie,camil,fidelity,calvin1,stitch,gatit,restart,puppy1,budgie,grunt,capitals,hiking,dreamcas,zorro1,
321678,riffraff,makaka,playmate,napalm,rollin,amstel,zxcvb123,samanth,rumble,fuckme69,jimmys,
951357,pizzaman,
1234567899,tralala,delpiero,alexi,yamato,itisme,
1million,vfndtq,kahlua,londo,wonderboy,carrots,tazz,ratboy,rfgecnf,
02081973,nico,fujitsu,tujhrf,sergbest,blobby,
02051970,sonic1,
1357911,smirnov,video1,panhead,bucky,
02031974,
44332211,duffer,cashmoney,left4dead,bagpuss,salman,
01011972,titfuck,
66613666,england1,malish,dresden,lemans,darina,zapper,
123456as,
123456qqq,met2002,
02041972,redstar,blue23,
1234509876,pajero,booyah,please1,tetsuo,semper,finder,hanuman,sunlight,
123456n,
02061971,treble,cupoi,password99,dimitri,
3ip76k2,popcorn1,lol12345,stellar,nympho,shark1,keith1,saskia,bigtruck,revoluti,rambo1,asd222,feelgood,phat,gogators,bismark,cola,puck,furball,burnout,slonik,bowtie,mommy1,icecube,fabienn,mouser,papamama,rolex,giants1,blue11,trooper1,momdad,iklo,morten,rhubarb,gareth,
123456d,blitz,canada1,r2d2,brest,tigercat,usmarine,lilbit,benny1,azrael,lebowski,
12345r,madagaskar,begemot,loverman,dragonballz,italiano,mazda3,naughty1,onions,diver1,cyrano,capcom,asdfg123,forlife,fisherman,weare138,requiem,mufasa,alpha123,piercing,hellas,abracadabra,duckman,caracas,macintos,
02011971,jordan2,crescent,fduecn,hogtied,eatmenow,ramjet,
18121812,kicksass,whatthe,discus,rfhfvtkmrf,rufus1,sqdwfe,mantle,vegitto,trek,dan123,paladin1,rudeboy,liliya,lunchbox,riversid,acapulco,libero,dnsadm,maison,toomuch,boobear,hemlock,sextoy,pugsley,misiek,athome,migue,altoids,marcin,
123450,rhfcfdbwf,jeter2,rhinos,rjhjkm,mercury1,ronaldinho,shampoo,makayla,kamilla,masterbating,tennesse,holger,john1,matchbox,hores,poptart,parlament,goodyear,asdfgh1,
02081970,hardwood,alain,erection,hfytnrb,highlife,implants,benjami,dipper,jeeper,bendover,supersonic,babybear,laserjet,gotenks,bama,natedogg,aol123,pokemo,rabbit1,raduga,sopranos,cashflow,menthol,pharao,hacking,
334455,ghjcnbnenrf,lizzy,muffin1,pooky,penis1,flyer,gramma,dipset,becca,ireland1,diana1,donjuan,pong,ziggy1,alterego,simple1,cbr900,logger,
111555,claudia1,cantona7,matisse,ljxtymrf,victori,harle,mamas,encore,mangos,iceman1,diamon,alexxx,tiamat,
5000,desktop,mafia,smurf,princesa,shojou,blueberr,welkom,maximka,
123890,
123q123,tammy1,bobmarley,clips,demon666,ismail,termite,laser1,missie,altair,donna1,bauhaus,trinitron,mogwai,flyers88,juniper,nokia5800,boroda,jingles,qwerasdfzxcv,shakur,
777666,legos,mallrats,
1qazxsw,goldeneye,tamerlan,julia1,backbone,spleen,
49ers,shady,darkone,medic1,justi,giggle,cloudy,aisan,douche,parkour,bluejay,huskers1,redwine,
1qw23er4,satchmo,
1231234,nineball,stewart1,ballsack,probes,kappa,amiga,flipper1,dortmund,
963258,trigun,
1237895,homepage,blinky,screwy,gizzmo,belkin,chemist,coolhand,chachi,braves1,thebest,greedisgood,pro100,banana1,
101091m,
123456g,wonderfu,barefeet,
8inches,
1111qqqq,kcchiefs,qweasdzxc123,metal1,jennifer1,xian,asdasd123,pollux,cheerleaers,fruity,mustang5,turbos,shopper,photon,espana,hillbill,oyster,macaroni,gigabyte,jesper,motown,tuxedo,buster12,triplex,cyclones,estrell,mortis,holla,
456987,fiddle,sapphic,jurassic,thebeast,ghjcnjq,baura,spock1,metallica1,karaoke,nemrac58,love1234,
02031970,flvbybcnhfnjh,frisbee,diva,ajax,feathers,flower1,soccer11,allday,mierda,pearl1,amature,marauder,
333555,redheads,womans,egorka,godbless,
159263,nimitz,aaaa1111,sashka,madcow,socce,greywolf,baboon,pimpdaddy,
123456789r,reloaded,lancia,rfhfylfi,dicker,placid,grimace,
22446688,olemiss,whores,culinary,wannabe,maxi,
1234567aa,amelie,riley1,trample,phantom1,baberuth,bramble,asdfqwer,vides,
4you,abc123456,taichi,aztnm,smother,outsider,hakr,blackhawk,bigblack,girlie,spook,valeriya,gianluca,freedo,
1q2q3q4q,handbag,lavalamp,cumm,pertinant,whatup,nokia123,redlight,patrik,
111aaa,poppy1,dfytxrf,aviator,sweeps,kristin1,cypher,elway,yinyang,access1,poophead,tucson,noles1,monterey,waterfal,dank,dougal,
918273,suede,minnesot,legman,bukowski,ganja,mammoth,riverrat,asswipe,daredevi,lian,arizona1,kamikadze,alex1234,smile1,angel2,
55bgates,bellagio,
0001,wanrltw,stiletto,lipton,arsena,biohazard,bbking,chappy,tetris,as123456,darthvad,lilwayne,nopassword,
7412369,
123456789987654321,natchez,glitter,
14785236,mytime,rubicon,moto,pyon,wazzup,tbird,shane1,nightowl,getoff,beckham7,trueblue,hotgirl,nevermin,deathnote,
13131,taffy,bigal,copenhag,apricot,gallaries,dtkjcbgtl,totoro,onlyone,civicsi,jesse1,baby123,sierra1,festus,abacus,sickboy,fishtank,fungus,charle,golfpro,teensex,mario66,seaside,aleksei,rosewood,blackberry,
1020304050,bedlam,schumi,deerhunt,contour,darkelf,surveyor,deltas,pitchers,
741258963,dipstick,funny1,lizzard,
112233445566,jupiter2,softtail,titman,greenman,z1x2c3v4b5,smartass,
12345677,notnow,myworld,nascar1,chewbacc,nosferatu,downhill,dallas22,kuan,blazers,whales,soldat,craving,powerman,yfcntyf,hotrats,cfvceyu,qweasdzx,princess1,feline,qqwwee,chitown,
1234qaz,mastermind,
114477,dingbat,care1839,standby,kismet,atreides,dogmeat,icarus,monkeyboy,alex1,mouses,nicetits,sealteam,chopper1,crispy,winter99,rrpass1,myporn,myspace1,corazo,topolino,ass123,lawman,muffy,orgy,
1love,passord,hooyah,ekmzyf,pretzel,amonra,nestle,
01011950,jimbeam,happyman,z12345,stonewal,helios,manunited,harcore,dick1,gaymen,
2hot4u,light1,qwerty13,kakashi,pjkjnj,alcatel,taylo,allah,buddydog,ltkmaby,mongo,blonds,start123,audia6,
123456v,civilwar,bellaco,turtles,mustan,deadspin,aaa123,fynjirf,lucky123,tortoise,amor,summe,waterski,zulu,drag0n,dtxyjcnm,gizmos,strife,interacial,pusyy,goose1,bear1,equinox,matri,jaguar1,tobydog,sammys,nachos,traktor,bryan1,morgoth,
444555,dasani,miami1,mashka,xxxxxx1,ownage,nightwin,hotlips,passmast,cool123,skolko,eldiablo,manu,
1357908642,screwyou,badabing,foreplay,hydro,kubrick,seductive,demon1,comeon,galileo,aladdin,metoo,happines,
902100,mizuno,caddy,bizzare,girls1,redone,ohmygod,sable,bonovox,girlies,hamper,opus,gizmodo1,aaabbb,pizzahut,
999888,rocky2,anton1,kikimora,peavey,ocelot,a1a2a3a4,
2wsx3edc,jackie1,solace,sprocket,galary,chuck1,volvo1,shurik,poop123,locutus,virago,wdtnjxtr,tequier,bisexual,doodles,makeitso,fishy,
789632145,nothing1,fishcake,sentry,libertad,oaktree,fivestar,adidas1,vegitta,mississi,spiffy,carme,neutron,vantage,agassi,boners,
123456789v,hilltop,taipan,barrage,kenneth1,fister,martian,willem,lfybkf,bluestar,moonman,ntktdbpjh,paperino,bikers,daffy,benji,quake,dragonfly,suckcock,danilka,lapochka,belinea,calypso,asshol,camero1,abraxas,mike1234,womam,q1q2q3q4q5,youknow,maxpower,pic's,audi80,sonora,raymond1,tickler,tadpole,belair,crazyman,finalfantasy,
999000,jonatha,paisley,kissmyas,morgana,monste,mantra,spunk,magic123,jonesy,mark1,alessand,
741258,baddest,ghbdtnrfrltkf,zxccxz,tictac,augustin,racers,
7grout,foxfire,
99762000,openit,nathanie,
1z2x3c4v5b,seadog,gangbanged,lovehate,hondacbr,harpoon,mamochka,fisherma,bismilla,locust,wally1,spiderman1,saffron,utjhubq,
123456987,
20spanks,safeway,pisser,bdfyjd,kristen1,bigdick1,magenta,vfhujif,anfisa,friday13,qaz123wsx,
0987654321q,tyrant,guan,meggie,kontol,nurlan,ayanami,rocket1,yaroslav,websol76,mutley,hugoboss,websolutions,elpaso,gagarin,badboys,sephirot,
918273645,newuser,qian,edcrfv,booger1,
852258,lockout,timoxa94,mazda323,firedog,sokolova,skydiver,jesus777,
1234567890z,soulfly,canary,malinka,guillerm,hookers,dogfart,surfer1,osprey,india123,rhjkbr,stoppedby,nokia5530,
123456789o,blue1,werter,divers,
3000,
123456f,alpina,cali,whoknows,godspeed,
986532,foreskin,fuzzy1,heyyou,didier,slapnuts,fresno,rosebud1,sandman1,bears1,blade1,honeybun,queen1,baronn,pakista,philipp,
9111961,topsecret,sniper1,
214365,slipper,letsfuck,pippen33,godawgs,mousey,qw123456,scrotum,loveis,lighthou,bp2002,nancy123,jeffrey1,susieq,buddy2,ralphie,trout1,willi,antonov,sluttey,rehbwf,marty1,darian,losangeles,letme1n,
12345d,pusssy,godiva,ender,golfnut,leonidas,a1b2c3d4e5,puffer,general1,wizzard,lehjxrf,racer1,bigbucks,cool12,buddys,zinger,esprit,vbienrf,josep,tickling,froggie,
987654321a,
895623,daddys,crumbs,gucci,mikkel,opiate,tracy1,christophe,came11,
777555,petrovich,humbug,dirtydog,allstate,horatio,wachtwoord,creepers,squirts,rotary,bigd,georgia1,fujifilm,
2sweet,dasha,yorkie,slimjim,wiccan,kenzie,system1,skunk,b12345,getit,pommes,daredevil,sugars,bucker,piston,lionheart,
1bitch,
515051,catfight,recon,icecold,fantom,vodafone,kontakt,boris1,vfcnth,canine,
01011961,valleywa,faraon,chickenwing101,qq123456,livewire,livelife,roosters,jeepers,ilya1234,coochie,pavlik,dewalt,dfhdfhf,architec,blackops,
1qaz2wsx3edc4rfv,rhfcjnf,wsxedc,teaser,sebora,
25252,rhino1,ankara,swifty,decimal,redleg,shanno,nermal,candies,smirnova,dragon01,photo1,ranetki,a1s2d3f4g5,axio,wertzu,maurizio,
6uldv
8,zxcvasdf,punkass,flowe,graywolf,peddler,
3rjs1la7qe,mpegs,seawolf,ladyboy,pianos,piggies,vixen,alexus,orpheus,gdtrfb,z123456,macgyver,hugetits,ralph1,flathead,maurici,mailru,goofball,nissan1,nikon,stopit,odin,big1,smooch,reboot,famil,bullit,anthony7,gerhard,methos,
124038,morena,eagle2,jessica2,zebras,getlost,gfynthf,
123581321,sarajevo,indon,comets,tatjana,rfgbnjirf,joystick,batman12,
123456c,sabre,beerme,victory1,kitties,
1475369,badboy1,booboo1,comcast,slava,squid,saxophon,lionhear,qaywsx,bustle,nastena,roadway,loader,hillside,starlight,
24681012,niggers,access99,bazooka,molly123,blackice,bandi,cocacol,nfhfrfy,timur,muschi,horse1,quant4307s,squerting,oscars,mygirls,flashman,tangerin,goofy1,p0o9i8,housewifes,newness,monkey69,escorpio,password11,hippo,warcraft3,qazxsw123,qpalzm,ribbit,ghbdtndctv,bogota,star123,
258000,lincoln1,bigjim,lacoste,firestorm,legenda,indain,ludacris,milamber,
1009,evangeli,letmesee,a111111,hooters1,bigred1,shaker,husky,a4tech,cnfkrth,argyle,rjhjdf,nataha,
0o9i8u7y,gibson1,sooners1,glendale,archery,hoochie,stooge,aaaaaa1,scorpions,school1,vegas1,rapier,mike23,bassoon,groupd2013,macaco,baker1,labia,freewill,santiag,silverado,butch1,vflfufcrfh,monica1,rugrat,cornhole,aerosmit,bionicle,gfgfvfvf,daniel12,virgo,fmale,favorite2,detroit1,pokey,shredder,baggies,wednesda,cosmo1,mimosa,sparhawk,firehawk,romario,
911turbo,funtimes,fhntvrf,nexus6,
159753456,timothy1,bajingan,terry1,frenchie,raiden,
1mustang,babemagnet,
74123698,nadejda,truffles,rapture,douglas1,lamborghini,motocross,rjcvjc,
748596,skeeter1,dante1,angel666,telecom,carsten,pietro,bmw318,astro1,carpediem,samir,orang,helium,scirocco,fuzzball,rushmore,rebelz,hotspur,lacrimosa,chevys10,madonna1,domenico,yfnfirf,jachin,shelby1,bloke,dawgs,dunhill,atlanta1,service1,mikado,devilman,angelit,reznor,euphoria,lesbain,checkmat,browndog,phreak,blaze1,crash1,farida,mutter,luckyme,horsemen,vgirl,jediknig,asdas,cesare,allnight,rockey,starlite,truck1,passfan,close-up,samue,cazzo,wrinkles,homely,eatme1,sexpot,snapshot,dima1995,asthma,thetruth,ducky,blender,priyanka,gaucho,dutchman,sizzle,kakarot,
651550,passcode,justinbieber,
666333,elodie,sanjay,
110442,alex01,lotus1,
2300mj,lakshmi,zoomer,quake3,
12349876,teapot,
12345687,ramada,pennywis,striper,pilot1,chingon,optima,nudity,ethan1,euclid,beeline,loyola,biguns,zaq12345,bravo1,disney1,buffa,assmunch,vivid,
6661313,wellingt,aqwzsx,madala11,
9874123,sigmar,pictere,tiptop,bettyboop,dinero,tahiti,gregory1,bionic,speed1,fubar1,lexus1,denis1,hawthorn,saxman,suntzu,bernhard,dominika,camaro1,hunter12,balboa,bmw2002,seville,diablo1,vfhbyjxrf,
1234abc,carling,lockerroom,punani,darth,baron1,vaness,
1password,libido,picher,
232425,karamba,futyn007,daydream,
11001001,dragon123,friends1,bopper,rocky123,chooch,asslover,shimmer,riddler,openme,tugboat,sexy123,midori,gulnara,christo,swatch,laker,offroad,puddles,hackers,mannheim,manager1,horseman,roman1,dancer1,komputer,pictuers,nokia5130,ejaculation,lioness,
123456y,evilone,nastenka,pushok,javie,lilman,
3141592,mjolnir,toulouse,pussy2,bigworm,smoke420,fullback,extensa,dreamcast,belize,delboy,willie1,casablanca,csyjxtr,ricky1,bonghit,salvator,basher,pussylover,rosie1,
963258741,vivitron,cobra427,meonly,armageddon,myfriend,zardoz,qwedsazxc,kraken,fzappa,starfox,
333999,illmatic,capoeira,weenie,ramzes,freedom2,toasty,pupkin,shinigami,fhvfutljy,nocturne,churchil,thumbnils,tailgate,neworder,sexymama,goarmy,cerebus,michelle1,vbifyz,surfsup,earthlin,dabulls,basketbal,aligator,mojojojo,saibaba,welcome2,wifes,wdtnjr,
12345w,slasher,papabear,terran,footman,hocke,
153759,texans,tom123,sfgiants,billabong,aassdd,monolith,xxx777,l3tm31n,ticktock,newone,hellno,japanees,contortionist,admin123,scout1,alabama1,divx1,rochard,privat,radar1,bigdad,fhctybq,tortuga,citrus,avanti,fantasy1,woodstock,s12345,fireman1,embalmer,woodwork,bonzai,konyor,newstart,jigga,panorama,goats,smithy,rugrats,hotmama,daedalus,nonstop,fruitbat,lisenok,quaker,violator,
12345123,my3sons,cajun,fraggle,gayboy,oldfart,vulva,knickerless,orgasms,undertow,binky,litle,kfcnjxrf,masturbation,bunnie,alexis1,planner,transexual,sparty,leeloo,monies,fozzie,stinger1,landrove,anakonda,scoobie,yamaha1,henti,star12,rfhlbyfk,beyonce,catfood,cjytxrf,zealots,strat,fordtruc,archangel,silvi,sativa,boogers,miles1,bigjoe,tulip,petite,greentea,shitter,jonboy,voltron,morticia,evanescence,
3edc4rfv,longshot,windows1,serge,aabbcc,starbucks,sinful,drywall,prelude1,www123,camel1,homebrew,marlins,
123412,letmeinn,domini,swampy,plokij,fordf350,webcam,michele1,bolivi,
27731828,wingzero,qawsedrftg,shinji,sverige,jasper1,piper1,cummer,iiyama,gocats,amour,alfarome,jumanji,mike69,fantasti,
1monkey,w00t88,shawn1,lorien,
1a2s3d4f5g,koleso,murph,natascha,sunkist,kennwort,emine,grinder,m12345,q1q2q3q4,cheeba,money2,qazwsxedc1,diamante,prosto,pdiddy,stinky1,gabby1,luckys,franci,pornographic,moochie,gfhjdjp,samdog,empire1,comicbookdb,emili,motdepasse,iphone,braveheart,reeses,nebula,sanjose,bubba2,kickflip,arcangel,superbow,porsche911,xyzzy,nigger1,dagobert,devil1,alatam,monkey2,barbara1,
12345v,vfpfafrf,alessio,babemagn,aceman,arrakis,kavkaz,
987789,jasons,berserk,sublime1,rogue1,myspace,buckwhea,csyekz,pussy4me,vette1,boots1,boingo,arnaud,budlite,redstorm,paramore,becky1,imtheman,chango,marley1,milkyway,
666555,giveme,mahalo,lux2000,lucian,paddy,praxis,shimano,bigpenis,creeper,newproject2004,rammstei,j3qq4h7h2v,hfljcnm,lambchop,anthony2,bugman,gfhjkm12,dreamer1,stooges,cybersex,diamant,cowboyup,maximus1,sentra,
615243,goethe,manhatta,fastcar,selmer,
1213141516,yfnfitymrf,denni,chewey,yankee1,elektra,
123456789p,trousers,fishface,topspin,orwell,vorona,sodapop,motherfu,ibilltes,forall,kookie,ronald1,balrog,maximilian,mypasswo,sonny1,zzxxcc,tkfkdg,magoo,mdogg,heeled,gitara,lesbos,marajade,tippy,morozova,enter123,lesbean,pounded,asd456,fialka,scarab,sharpie,spanky1,gstring,sachin,
12345asd,princeto,hellohel,ursitesux,billows,
1234kekc,kombat,cashew,duracell,kseniya,sevenof9,kostik,arthur1,corvet07,rdfhnbhf,songoku,tiberian,needforspeed,
1qwert,dropkick,kevin123,panache,libra,a123456a,kjiflm,vfhnsirf,cntgfy,iamcool,narut,buffer,sk8ordie,urlaub,fireblade,blanked,marishka,gemini1,altec,gorillaz,chief1,revival47,ironman1,space1,ramstein,doorknob,devilmaycry,nemesis1,sosiska,pennstat,monday1,pioner,shevchenko,detectiv,evildead,blessed1,aggie,coffees,tical,scotts,bullwink,marsel,krypto,adrock,rjitxrf,asmodeus,rapunzel,theboys,hotdogs,deepthro,maxpayne,veronic,fyyeirf,otter,cheste,abbey1,thanos,bedrock,bartok,google1,xxxzzz,rodent,montecarlo,hernande,mikayla,
123456789l,bravehea,
12locked,ltymub,pegasus1,ameteur,saltydog,faisal,milfnew,momsuck,everques,ytngfhjkz,m0nkey,businessbabe,cooki,custard,
123456ab,lbvjxrf,outlaws,
753357,qwerty78,udacha,insider,chees,fuckmehard,shotokan,katya,seahorse,vtldtlm,turtle1,mike12,beebop,heathe,everton1,darknes,barnie,rbcekz,alisher,toohot,theduke,
555222,reddog1,breezy,bulldawg,monkeyman,baylee,losangel,mastermi,apollo1,aurelie,zxcvb12345,cayenne,bastet,wsxzaq,geibcnbr,yello,fucmy69,redwall,ladybird,bitchs,cccccc1,rktjgfnhf,ghjdthrf,quest1,oedipus,linus,impalass,fartman,
12345k,fokker,
159753a,optiplex,bbbbbb1,realtor,slipkno,santacru,rowdy,jelena,smeller,
3984240,ddddd1,sexyme,janet1,
3698741,eatme69,cazzone,today1,poobear,ignatius,master123,newpass1,heather2,snoopdogg,blondinka,pass12,honeydew,fuckthat,
890098890,lovem,goldrush,gecko,biker1,llama,pendejo,avalanche,fremont,snowman1,gandolf,chowder,
1a2b3c4d5e,flyguy,magadan,
1fuck,pingvin,nokia5230,ab1234,lothar,lasers,bignuts,renee1,royboy,skynet,
12340987,
1122334,dragrace,lovely1,
22334455,booter,
12345612,corvett,
123456qq,capital1,videoes,funtik,wyvern,flange,sammydog,hulkster,
13245768,not4you,vorlon,omegared,l58jkdjp!,filippo,
123mudar,samadams,petrus,chris12,charlie123,
123456789123,icetea,sunderla,adrian1,
123qweas,kazanova,aslan,monkey123,fktyeirf,goodsex,
123ab,lbtest,banaan,bluenose,
837519,asd12345,waffenss,whateve,
1a2a3a4a,trailers,vfhbirf,bhbcrf,klaatu,turk182,monsoon,beachbum,sunbeam,succes,clyde1,viking1,rawhide,bubblegum,princ,mackenzi,hershey1,
222555,dima55,niggaz,manatee,aquila,anechka,pamel,bugsbunn,lovel,sestra,newport1,althor,hornyman,wakeup,zzz111,phishy,cerber,torrent,thething,solnishko,babel,buckeye1,peanu,ethernet,uncencored,baraka,
665544,chris2,rb26dett,willy1,choppers,texaco,biggirl,
123456b,anna2614,sukebe,caralho,callofduty,rt6ytere,jesus7,angel12,
1money,timelord,allblack,pavlova,romanov,tequiero,yitbos,lookup,bulls23,snowflake,dickweed,barks,lever,irisha,firestar,fred1234,ghjnjnbg,danman,gatito,betty1,milhouse,kbctyjr,masterbaiting,delsol,papit,doggys,
123698741,bdfyjdf,invictus,bloods,kayla1,yourmama,apple2,angelok,bigboy1,pontiac1,verygood,yeshua,twins2,porn4me,
141516,rasta69,james2,bosshog,candys,adventur,stripe,djkjlz,dokken,austin316,skins,hogwarts,vbhevbh,navigato,desperado,xxx666,cneltyn,vasiliy,hazmat,daytek,eightbal,fred1,four20,
74227422,fabia,aerosmith,manue,wingchun,boohoo,hombre,sanity72,goatboy,fuckm,partizan,avrora,utahjazz,submarin,pussyeat,heinlein,control1,costaric,smarty,chuan,triplets,snowy,snafu,teacher1,vangogh,vandal,evergree,cochise,qwerty99,pyramid1,saab900,sniffer,qaz741,lebron23,mark123,wolvie,blackbelt,yoshi,feeder,janeway,nutella,fuking,asscock,deepak,poppie,bigshow,housewife,grils,tonto,cynthia1,temptress,irakli,belle1,russell1,manders,frank123,seabass,gforce,songbird,zippy1,naught,brenda1,chewy1,hotshit,topaz,
43046721,girfriend,marinka,jakester,thatsme,planeta,falstaff,patrizia,reborn,riptide,cherry1,shuan,nogard,chino,oasis1,qwaszx12,goodlife,davis1,
1911a1,harrys,shitfuck,
12345678900,russian7,
007700,bulls1,porshe,danil,dolphi,river1,sabaka,gobigred,deborah1,volkswagen,miamo,alkaline,muffdive,
1letmein,fkbyrf,goodguy,hallo1,nirvan,ozzie,cannonda,cvbhyjdf,marmite,germany1,joeblow,radio1,love11,raindrop,
159852,jacko,newday,fathead,elvis123,caspe,citibank,sports1,deuce,boxter,fakepass,golfman,snowdog,birthday4,nonmembe,niklas,parsifal,krasota,theshit,
1235813,maganda,nikita1,omicron,cassie1,columbo,buick,sigma1,thistle,bassin,rickster,apteka,sienna,skulls,miamor,coolgirl,gravis,
1qazxc,virgini,hunter2,akasha,batma,motorcyc,bambino,tenerife,fordf250,zhuan,iloveporn,markiza,hotbabes,becool,fynjybyf,wapapapa,forme,mamont,pizda,dragonz,sharon1,scrooge,mrbill,pfloyd,leeroy,natedog,ishmael,
777111,tecumseh,carajo,nfy.irf,
0000000000o,blackcock,fedorov,antigone,feanor,novikova,bobert,peregrin,spartan117,pumkin,rayman,manuals,tooltime,
555333,bonethug,marina1,bonnie1,tonyhawk,laracroft,mahalkita,
18273645,terriers,gamer,hoser,littlema,molotok,glennwei,lemon1,caboose,tater,
12345654321,brians,fritz1,mistral,jigsaw,fuckshit,hornyguy,southside,edthom,antonio1,bobmarle,pitures,ilikesex,crafty,nexus,boarder,fulcrum,astonvil,yanks1,yngwie,account1,zooropa,hotlegs,sammi,gumbo,rover1,perkele,maurolarastefy,lampard,
357753,barracud,dmband,abcxyz,pathfinder,
335577,yuliya,micky,jayman,asdfg12345,
1596321,halcyon,rerfhtre,feniks,zaxscd,gotyoass,jaycee,samson1,jamesb,vibrate,grandpri,camino,colossus,davidb,mamo4ka,nicky1,homer123,pinguin,watermelon,shadow01,lasttime,glider,
823762,helen1,pyramids,tulane,osama,rostov,john12,scoote,bhbyrf,gohan,galeries,joyful,bigpussy,tonka,mowgli,astalavista,zzz123,leafs,dalejr8,unicorn1,
777000,primal,bigmama,okmijn,killzone,qaz12345,snookie,zxcvvcxz,davidc,epson,rockman,ceaser,beanbag,katten,
3151020,duckhunt,segreto,matros,ragnar,
699669,sexsexse,
123123z,fuckyeah,bigbutts,gbcmrf,element1,marketin,saratov,elbereth,blaster1,yamahar6,grime,masha,juneau,
1230123,pappy,lindsay1,mooner,seattle1,katzen,lucent,polly1,lagwagon,pixie,misiaczek,
666666a,smokedog,lakers24,eyeball,ironhors,ametuer,volkodav,vepsrf,kimmy,gumby1,poi098,ovation,
1q2w3,drinker,penetrating,summertime,
1dallas,prima,modles,takamine,hardwork,macintosh,tahoe,passthie,chiks,sundown,flowers1,boromir,music123,phaedrus,albert1,joung,malakas,gulliver,parker1,balder,sonne,jessie1,domainlock2005,express1,vfkbyf,youandme,raketa,koala,dhjnvytyjub,nhfrnjh,testibil,ybrbnjc,
987654321q,axeman,pintail,pokemon123,dogggg,shandy,thesaint,
11122233,x72jhhu3z,theclash,raptors,zappa1,djdjxrf,hell666,friday1,vivaldi,pluto1,lance1,guesswho,jeadmi,corgan,skillz,skippy1,mango1,gymnastic,satori,
362514,theedge,cxfcnkbdfz,sparkey,deicide,bagels,lololol,lemmings,r4e3w2q1,silve,staind,schnuffi,dazzle,basebal1,leroy1,bilbo1,luckie,qwerty2,goodfell,hermione,peaceout,davidoff,yesterda,killah,flippy,chrisb,zelda1,headless,muttley,fuckof,tittys,catdaddy,photog,beeker,reaver,ram1500,yorktown,bolero,tryagain,arman,chicco,learjet,alexei,jenna1,go2hell,
12s3t4p55,momsanaladventure,mustang9,protoss,rooter,ginola,dingo1,mojave,erica1,
1qazse4,marvin1,redwolf,sunbird,dangerou,maciek,girsl,hawks1,packard1,excellen,dashka,soleda,toonces,acetate,nacked,jbond007,alligator,debbie1,wellhung,monkeyma,supers,rigger,larsson,vaseline,rjnzhf,maripos,
123456asd,cbr600rr,doggydog,cronic,jason123,trekker,flipmode,druid,sonyvaio,dodges,mayfair,mystuff,fun4me,samanta,sofiya,magics,
1ranger,arcane,sixtynin,
222444,omerta,luscious,gbyudby,bobcats,envision,chance1,seaweed,holdem,tomate,mensch,slicer,acura1,goochi,qweewq,punter,repoman,tomboy,never1,cortina,gomets,
147896321,
369852147,dogma,bhjxrf,loglatin,eragon,strato,gazelle,growler,
885522,klaudia,payton34,fuckem,butchie,scorpi,lugano,
123456789k,nichola,chipper1,spide,uhbujhbq,rsalinas,vfylfhby,longhorns,bugatti,everquest,!qaz2wsx,blackass,
999111,snakeman,p455w0rd,fanatic,family1,pfqxbr,
777vlad,mysecret,marat,phoenix2,october1,genghis,panties1,cooker,citron,ace123,
1234569,gramps,blackcoc,kodiak1,hickory,ivanhoe,blackboy,escher,sincity,beaks,meandyou,spaniel,canon1,timmy1,lancaste,polaroid,edinburg,fuckedup,hotman,cueball,golfclub,gopack,bookcase,worldcup,dkflbvbhjdbx,twostep,
17171717aa,letsplay,zolushka,stella1,pfkegf,kingtut,
67camaro,barracuda,wiggles,gjhjkm,prancer,patata,kjifhf,theman1,romanova,sexyass,copper1,dobber,sokolov,pomidor,algernon,cadman,amoremio,william2,silly1,bobbys,hercule,hd764nw5d7e1vb1,defcon,deutschland,robinhood,alfalfa,machoman,lesbens,pandora1,easypay,tomservo,nadezhda,goonies,saab9000,jordyn,f15eagle,dbrecz,
12qwerty,greatsex,thrawn,blunted,baywatch,doggystyle,loloxx,chevy2,january1,kodak,bushel,
78963214,ub6ib9,zz8807zpl,briefs,hawker,
224488,first1,bonzo,brent1,erasure,
69213124,sidewind,soccer13,
622521,mentos,kolibri,onepiece,united1,ponyboy,keksa12,wayer,mypussy,andrej,mischa,mille,bruno123,garter,bigpun,talgat,familia,jazzy1,mustang8,newjob,
747400,bobber,blackbel,hatteras,ginge,asdfjkl;,camelot1,blue44,rebbyt34,ebony1,vegas123,myboys,aleksander,ijrjkflrf,lopata,pilsner,lotus123,m0nk3y,andreev,freiheit,balls1,drjynfrnt,mazda1,waterpolo,shibumi,
852963,
123bbb,cezer121,blondie1,volkova,rattler,kleenex,ben123,sanane,happydog,satellit,qazplm,qazwsxedcrfvtgb,meowmix,badguy,facefuck,spice1,blondy,major1,
25000,anna123,
654321a,sober1,deathrow,patterso,china1,naruto1,hawkeye1,waldo1,butchy,crayon,
5tgb6yhn,klopik,crocodil,mothra,imhorny,pookie1,splatter,slippy,lizard1,router,buratino,yahweh,
123698,dragon11,
123qwe456,peepers,trucker1,ganjaman,
1hxboqg2,cheyanne,storys,sebastie,zztop,maddison,
4rfv3edc,darthvader,jeffro,iloveit,victor1,hotty,delphin,lifeisgood,gooseman,shifty,insertions,dude123,abrupt,
123masha,boogaloo,chronos,stamford,pimpster,kthjxrf,getmein,amidala,flubber,fettish,grapeape,dantes,oralsex,jack1,foxcg33,winchest,francis1,getin,archon,cliffy,blueman,
1basebal,sport1,emmitt22,porn123,bignasty,morga,
123hfjdk147,ferrar,juanito,fabiol,caseydog,steveo,peternorth,paroll,kimchi,bootleg,gaijin,secre,acacia,eatme2,amarillo,monkey11,rfhfgep,tylers,a1a2a3a4a5,sweetass,blower,rodina,babushka,camilo,cimbom,tiffan,vfnbkmlf,ohbaby,gotigers,lindsey1,dragon13,romulus,qazxsw12,zxcvbn1,dropdead,hitman47,snuggle,eleven11,bloopers,
357mag,avangard,bmw320,ginscoot,dshade,masterkey,voodoo1,rootedit,caramba,leahcim,hannover,
8phrowz622,tim123,cassius,
000000a,angelito,zzzzz1,badkarma,star1,malaga,glenwood,footlove,golf1,summer12,helpme1,fastcars,titan1,police1,polinka,k.jdm,marusya,augusto,shiraz,pantyhose,donald1,blaise,arabella,brigada,c3por2d2,peter01,marco1,hellow,dillweed,uzumymw,geraldin,loveyou2,toyota1,
088011,gophers,indy500,slainte,
5hsu75kpot,teejay,renat,racoon,sabrin,angie1,shiznit,harpua,sexyred,latex,tucker1,alexandru,wahoo,teamwork,deepblue,goodison,rundmc,r2d2c3p0,puppys,samba,ayrton,boobed,
999777,topsecre,blowme1,
123321z,loudog,random1,pantie,drevil,mandolin,
121212q,hottub,brother1,failsafe,spade1,matvey,open1234,carmen1,priscill,schatzi,kajak,gooddog,trojans1,gordon1,kayak,calamity,argent,ufhvjybz,seviyi,penfold,assface,dildos,hawkwind,crowbar,yanks,ruffles,rastus,luv2epus,open123,aquafina,dawns,jared1,teufel,
12345c,vwgolf,pepsi123,amores,passwerd,
01478520,boliva,smutty,headshot,password3,davidd,zydfhm,gbgbcmrf,pornpass,insertion,ceckbr,test2,car123,checkit,dbnfkbq,niggas,nyyankee,muskrat,nbuhtyjr,gunner1,ocean1,fabienne,chrissy1,wendys,loveme89,batgirl,cerveza,igorek,steel1,ragman,boris123,novifarm,sexy12,qwerty777,mike01,giveitup,
123456abc,fuckall,crevice,hackerz,gspot,eight8,assassins,texass,swallows,
123458,baldur,moonshine,labatt,modem,sydney1,voland,dbnfkz,hotchick,jacker,princessa,dawgs1,holiday1,booper,reliant,miranda1,jamaica1,andre1,badnaamhere,barnaby,tiger7,david12,margaux,corsica,
085tzzqi,universi,thewall,nevermor,martin6,qwerty77,cipher,apples1,
0102030405,seraphim,black123,imzadi,gandon,ducati99,
1shadow,dkflbvbhjdyf,
44magnum,bigbad,feedme,samantha1,ultraman,redneck1,jackdog,usmc0311,fresh1,monique1,tigre,alphaman,cool1,greyhoun,indycar,crunchy,
55chevy,carefree,willow1,
063dyjuy,xrated,assclown,federica,hilfiger,trivia,bronco1,mamita,
100200300,simcity,lexingky,akatsuki,retsam,johndeere,abudfv,raster,elgato,businka,satanas,mattingl,redwing1,shamil,patate,mannn,moonstar,evil666,b123456,bowl300,tanechka,
34523452,carthage,babygir,santino,bondarenko,jesuss,chico1,numlock,shyguy,sound1,kirby1,needit,mostwanted,
427900,funky1,steve123,passions,anduril,kermit1,prospero,lusty,barakuda,dream1,broodwar,porky,christy1,mahal,yyyyyy1,allan1,
1sexy,flintsto,capri,cumeater,heretic,robert2,hippos,blindax,marykay,collecti,kasumi,
1qaz!qaz,
112233q,
123258,chemistr,coolboy,
0o9i8u,kabuki,righton,tigress,nessie,sergej,andrew12,yfafyz,ytrhjvfyn,angel7,victo,mobbdeep,lemming,transfor,
1725782,myhouse,aeynbr,muskie,leno4ka,westham1,cvbhyjd,daffodil,pussylicker,pamela1,stuffer,warehous,tinker1,
2w3e4r,pluton,louise1,polarbea,
253634,prime1,anatoliy,januar,wysiwyg,cobraya,ralphy,whaler,xterra,cableguy,
112233a,porn69,jamesd,aqualung,jimmy123,lumpy,luckyman,kingsize,golfing1,alpha7,leeds1,marigold,lol1234,teabag,alex11,
10sne1,saopaulo,shanny,roland1,basser,
3216732167,carol1,year2005,morozov,saturn1,joseluis,bushed,redrock,memnoch,lalaland,indiana1,lovegod,gulnaz,buffalos,loveyou1,anteater,pattaya,jaydee,redshift,bartek,summerti,coffee1,ricochet,incest,schastie,rakkaus,h2opolo,suikoden,perro,dance1,loveme1,whoopass,vladvlad,boober,flyers1,alessia,gfcgjhn,pipers,papaya,gunsling,coolone,blackie1,gonads,gfhjkzytn,foxhound,qwert12,gangrel,ghjvtntq,bluedevi,mywife,summer01,hangman,licorice,patter,vfr750,thorsten,
515253,ninguna,dakine,strange1,mexic,vergeten,
12345432,
8phrowz624,stampede,floyd1,sailfish,raziel,ananda,giacomo,freeme,crfprf,
74185296,allstars,master01,solrac,gfnhbjn,bayliner,bmw525,
3465xxx,catter,single1,michael3,pentium4,nitrox,mapet123456,halibut,killroy,xxxxx1,phillip1,poopsie,arsenalfc,buffys,kosova,all4me,
32165498,arslan,opensesame,brutis,charles2,pochta,nadegda,backspac,mustang0,invis,gogeta,
654321q,adam25,niceday,truckin,gfdkbr,biceps,sceptre,bigdave,lauras,user345,sandys,shabba,ratdog,cristiano,natha,march13,gumball,getsdown,wasdwasd,redhead1,dddddd1,longlegs,
13572468,starsky,ducksoup,bunnys,omsairam,whoami,fred123,danmark,flapper,swanky,lakings,yfhenj,asterios,rainier,searcher,dapper,ltdjxrf,horsey,seahawk,shroom,tkfkdgo,aquaman,tashkent,number9,messi10,
1asshole,milenium,illumina,vegita,jodeci,buster01,bareback,goldfinger,fire1,
33rjhjds,sabian,thinkpad,smooth1,sully,bonghits,sushi1,magnavox,colombi,voiture,limpone,oldone,aruba,rooster1,zhenya,nomar5,touchdow,limpbizkit,rhfcfdxbr,baphomet,afrodita,bball1,madiso,ladles,lovefeet,matthew2,theworld,thunderbird,dolly1,
123rrr,forklift,alfons,berkut,speedy1,saphire,oilman,creatine,pussylov,bastard1,
456258,wicked1,filimon,skyline1,fucing,yfnfkbz,hot123,abdulla,nippon,nolimits,billiard,booty1,buttplug,westlife,coolbean,aloha1,lopas,asasin,
1212121,october2,whodat,good4u,d12345,kostas,ilya1992,regal,pioneer1,volodya,focus1,bastos,nbvjif,fenix,anita1,vadimka,nickle,jesusc,
123321456,teste,christ1,essendon,evgenii,celticfc,adam1,forumwp,lovesme,
26exkp,chillout,burly,thelast1,marcus1,metalgear,test11,ronaldo7,socrate,world1,franki,mommie,vicecity,postov1000,charlie3,oldschool,
333221,legoland,antoshka,counterstrike,buggy,mustang3,
123454,qwertzui,toons,chesty,bigtoe,tigger12,limpopo,rerehepf,diddle,nokia3250,solidsnake,conan1,rockroll,
963369,titanic1,qwezxc,cloggy,prashant,katharin,maxfli,takashi,cumonme,michael9,mymother,pennstate,khalid,
48151623,fightclub,showboat,mateusz,elrond,teenie,arrow1,mammamia,dustydog,dominator,erasmus,zxcvb1,
1a2a3a,bones1,dennis1,galaxie,pleaseme,whatever1,junkyard,galadriel,charlies,
2wsxzaq1,crimson1,behemoth,teres,master11,fairway,shady1,pass99,
1batman,joshua12,baraban,apelsin,mousepad,melon,twodogs,
123321qwe,metalica,ryjgrf,pipiska,rerfhfxf,lugnut,cretin,iloveu2,powerade,aaaaaaa1,omanko,kovalenko,isabe,chobits,
151nxjmt,shadow11,zcxfcnkbdf,gy3yt2rgls,vfhbyrf,
159753123,bladerunner,goodone,wonton,doodie,
333666999,fuckyou123,kitty123,chisox,orlando1,skateboa,red12345,destroye,snoogans,satan1,juancarlo,goheels,jetson,scottt,fuckup,aleksa,gfhfljrc,passfind,oscar123,derrick1,hateme,viper123,pieman,audi100,tuffy,andover,shooter1,
10000,makarov,grant1,nighthaw,
13576479,browneye,batigol,nfvfhf,chocolate1,
7hrdnw23,petter,bantam,morlii,jediknight,brenden,argonaut,goodstuf,wisconsi,
315920,abigail1,dirtbag,splurge,k123456,lucky777,valdepen,gsxr600,
322223,ghjnjrjk,zaq1xsw2cde3,schwanz,walter1,letmein22,nomads,
124356,codeblue,nokian70,fucke,footbal1,agyvorc,aztecs,passw0r,smuggles,femmes,ballgag,krasnodar,tamuna,schule,sixtynine,empires,erfolg,dvader,ladygaga,elite1,venezuel,nitrous,kochamcie,olivia1,trustn01,arioch,sting1,
131415,tristar,
555000,maroon,
135799,marsik,
555556,fomoco,natalka,cwoui,tartan,davecole,nosferat,hotsauce,dmitry,horus,dimasik,skazka,boss302,bluebear,vesper,ultras,tarantul,asd123asd,azteca,theflash,
8ball,
1footbal,titlover,lucas123,number6,sampson1,
789852,party1,dragon99,adonai,carwash,metropol,psychnau,vthctltc,hounds,firework,blink18,
145632,wildcat1,satchel,rice80,ghtktcnm,sailor1,cubano,anderso,rocks1,mike11,famili,dfghjc,besiktas,roygbiv,nikko,bethan,minotaur,rakesh,orange12,hfleuf,jackel,myangel,favorite7,
1478520,asssss,agnieszka,haley1,raisin,htubyf,
1buster,cfiekz,derevo,
1a2a3a4a5a,baltika,raffles,scruffy1,clitlick,louis1,buddha1,fy.nrf,walker1,makoto,shadow2,redbeard,vfvfvskfhfve,mycock,sandydog,lineman,network1,favorite8,longdick,mustangg,mavericks,indica,
1killer,cisco1,angelofwar,blue69,brianna1,bubbaa,slayer666,level42,baldrick,brutus1,lowdown,haribo,lovesexy,
500000,thissuck,picker,stephy,
1fuckme,characte,telecast,
1bigdog,repytwjdf,thematrix,hammerhe,chucha,ganesha,gunsmoke,georgi,sheltie,
1harley,knulla,sallas,westie,dragon7,conker,crappie,margosha,lisboa,
3e2w1q,shrike,grifter,ghjcnjghjcnj,asdfg1,mnbvcxz1,myszka,posture,boggie,rocketman,flhtyfkby,twiztid,vostok,pi314159,force1,televizor,gtkmvtym,samhain,imcool,jadzia,dreamers,strannik,k2trix,steelhea,nikitin,commodor,brian123,chocobo,whopper,ibilljpf,megafon,ararat,thomas12,ghbrjkbcn,q1234567890,hibernia,kings1,jim123,redfive,
68camaro,iawgk2,xavier1,
1234567u,d123456,ndirish,airborn,halfmoon,fluffy1,ranchero,sneaker,soccer2,passion1,cowman,birthday1,johnn,razzle,glock17,wsxqaz,nubian,lucky2,jelly1,henderso,eric1,
123123e,boscoe01,fuck0ff,simpson1,sassie,rjyjgkz,nascar3,watashi,loredana,janus,wilso,conman,david2,mothe,iloveher,snikers,davidj,fkmnthyfnbdf,mettss,ratfink,
123456h,lostsoul,sweet16,brabus,wobble,petra1,fuckfest,otters,sable1,svetka,spartacu,bigstick,milashka,
1lover,pasport,champagn,papichul,hrvatska,hondacivic,kevins,tacit,moneybag,gohogs,rasta1,
246813579,ytyfdbcnm,gubber,darkmoon,vitaliy,
233223,playboys,tristan1,joyce1,oriflame,mugwump,access2,autocad,thematri,qweqwe123,lolwut,ibill01,multisyn,
1233211,pelikan,rob123,chacal,
1234432,griffon,pooch,dagestan,geisha,satriani,anjali,rocketma,gixxer,pendrago,vincen,hellokit,killyou,ruger,doodah,bumblebe,badlands,galactic,emachines,foghorn,jackso,jerem,avgust,frontera,
123369,daisymae,hornyboy,welcome123,tigger01,diabl,angel13,interex,iwantsex,rockydog,kukolka,sawdust,online1,
3234412,bigpapa,jewboy,
3263827,dave123,riches,
333222,tony1,toggle,farter,
124816,tities,balle,brasilia,southsid,micke,ghbdtn12,patit,ctdfcnjgjkm,olds442,zzzzzz1,nelso,gremlins,gypsy1,carter1,slut69,farcry,
7415963,michael8,birdie1,charl,
123456789abc,
100001,aztec,sinjin,bigpimpi,closeup,atlas1,nvidia,doggone,classic1,manana,malcolm1,rfkbyf,hotbabe,rajesh,dimebag,ganjubas,rodion,jagr68,seren,syrinx,funnyman,karapuz,
123456789n,bloomin,admin18533362,biggdogg,ocarina,poopy1,hellome,internet1,booties,blowjobs,matt1,donkey1,swede,
1jennife,evgeniya,lfhbyf,coach1,
444777,green12,patryk,pinewood,justin12,
271828,
89600506779,notredame,tuborg,lemond,sk8ter,million1,wowser,pablo1,st0n3,jeeves,funhouse,hiroshi,gobucs,angeleye,bereza,winter12,catalin,qazedc,andros,ramazan,vampyre,sweethea,imperium,murat,jamest,flossy,sandeep,morgen,salamandra,bigdogg,stroller,njdevils,nutsack,vittorio,%%passwo,playful,rjyatnrf,tookie,ubnfhf,michi,
777444,shadow13,devils1,radiance,toshiba1,beluga,amormi,dandfa,trust1,killemall,smallville,polgara,billyb,landscap,steves,exploite,zamboni,damage11,dzxtckfd,trader12,pokey1,kobe08,damager,egorov,dragon88,ckfdbr,lisa69,blade2,audis4,nelson1,nibbles,
23176djivanfros,mutabor,artofwar,matvei,metal666,hrfzlz,schwinn,poohbea,seven77,thinker,
123456789qwerty,sobriety,jakers,karamelka,vbkfyf,volodin,iddqd,dale03,roberto1,lizaveta,qqqqqq1,cathy1,
08154711,davidm,quixote,bluenote,tazdevil,katrina1,bigfoot1,bublik,marma,olechka,fatpussy,marduk,arina,nonrev67,qqqq1111,camill,wtpfhm,truffle,fairview,mashina,voltaire,qazxswedcvfr,dickface,grassy,lapdance,bosstone,crazy8,yackwin,mobil,danielit,mounta1n,player69,bluegill,mewtwo,reverb,cnthdf,pablito,a123321,elena1,warcraft1,orland,ilovemyself,rfntyjr,joyride,schoo,dthjxrf,thetachi,goodtimes,blacksun,humpty,chewbacca,guyute,
123xyz,lexicon,blue45,qwe789,galatasaray,centrino,hendrix1,deimos,saturn5,craig1,vlad1996,sarah123,tupelo,ljrnjh,hotwife,bingos,
1231231,nicholas1,flamer,pusher,
1233210,heart1,hun999,jiggy,giddyup,oktober,
123456zxc,budda,galahad,glamur,samwise,oneton,bugsbunny,dominic1,scooby2,freetime,internat,
159753852,sc00ter,wantit,mazinger,inflames,laracrof,greedo,
014789,godofwar,repytwjd,water123,fishnet,venus1,wallace1,tenpin,paula1,
1475963,mania,novikov,qwertyasdfgh,goldmine,homies,
777888999,
8balls,holeinon,paper1,samael,
013579,mansur,nikit,ak1234,blueline,polska1,hotcock,laredo,windstar,vbkbwbz,raider1,newworld,lfybkrf,catfish1,shorty1,piranha,treacle,royale,
2234562,smurfs,minion,cadence,flapjack,
123456p,sydne,
135531,robinhoo,nasdaq,decatur,cyberonline,newage,gemstone,jabba,touchme,hooch,pigdog,indahous,fonzie,zebra1,juggle,patrick2,nihongo,hitomi,oldnavy,qwerfdsa,ukraina,shakti,allure,kingrich,diane1,canad,piramide,hottie1,clarion,college1,
5641110,connect1,therion,clubber,velcro,dave1,astra1,
13579-,astroboy,skittle,isgreat,photoes,cvzefh1gkc,
001100,
2cool4u,
7555545,ginger12,
2wsxcde3,camaro69,invader,domenow,asd1234,colgate,qwertasdfg,jack123,pass01,maxman,bronte,whkzyc,peter123,bogie,yecgaa,abc321,
1qay2wsx,enfield,camaroz2,trashman,bonefish,system32,azsxdcfvgb,peterose,iwantyou,dick69,temp1234,blastoff,capa200,connie1,blazin,
12233445,sexybaby,
123456j,brentfor,pheasant,hommer,jerryg,thunders,august1,lager,kapusta,boobs1,nokia5300,rocco1,xytfu7,stars1,tugger,
123sas,blingbling,
1bubba,
0wnsyo0,
1george,baile,richard2,habana,
1diamond,sensatio,
1golfer,maverick1,
1chris,clinton1,michael7,dragons1,sunrise1,pissant,fatim,mopar1,levani,rostik,pizzapie,
987412365,oceans11,
748159263,cum4me,palmetto,
4r3e2w1q,paige1,muncher,arsehole,kratos,gaffer,banderas,billys,prakash,crabby,bungie,silver12,caddis,spawn1,xboxlive,sylvania,littlebi,
524645,futura,valdemar,isacs155,prettygirl,big123,
555444,slimer,chicke,newstyle,skypilot,sailormoon,fatluvr69,jetaime,sitruc,jesuschrist,sameer,bear12,hellion,yendor,country1,etnies,conejo,jedimast,darkknight,toobad,yxcvbn,snooks,porn4life,calvary,alfaromeo,ghostman,yannick,fnkfynblf,vatoloco,homebase,
5550666,barret,
1111111111zz,odysseus,edwardss,favre4,jerrys,crybaby,xsw21qaz,firestor,spanks,indians1,squish,kingair,babycakes,haters,sarahs,
212223,teddyb,xfactor,cumload,rhapsody,death123,three3,raccoon,thomas2,slayer66,
1q2q3q4q5q,thebes,mysterio,thirdeye,orkiox.,nodoubt,bugsy,schweiz,dima1996,angels1,darkwing,jeronimo,moonpie,ronaldo9,peaches2,mack10,manish,denise1,fellowes,carioca,taylor12,epaulson,makemoney,oc247ngucz,kochanie,
3edcvfr4,vulture,
1qw23e,
1234567z,munchie,picard1,xthtgfirf,sportste,psycho1,tahoe1,creativ,perils,slurred,hermit,scoob,diesel1,cards1,wipeout,weeble,integra1,out3xf,powerpc,chrism,kalle,ariadne,kailua,phatty,dexter1,fordman,bungalow,paul123,compa,train1,thejoker,jys6wz,pussyeater,eatmee,sludge,dominus,denisa,tagheuer,yxcvbnm,bill1,ghfdlf,
300zx,nikita123,carcass,semaj,ramone,muenchen,animal1,greeny,annemari,dbrf134,jeepcj7,mollys,garten,sashok,ironmaid,coyotes,astoria,george12,westcoast,primetim,
123456o,panchito,rafae,japan1,framer,auralo,tooshort,egorova,qwerty22,callme,medicina,warhawk,w1w2w3w4,cristia,merli,alex22,kawaii,chatte,wargames,utvols,muaddib,trinket,andreas1,jjjjj1,cleric,scooters,cuntlick,gggggg1,slipknot1,
235711,handcuff,stussy,guess1,leiceste,ppppp1,passe,lovegun,chevyman,hugecock,driver1,buttsex,psychnaut1,cyber1,black2,alpha12,melbourn,man123,metalman,yjdsqujl,blondi,bungee,freak1,stomper,caitlin1,nikitina,flyaway,prikol,begood,desperad,aurelius,john1234,whosyourdaddy,slimed123,bretagne,den123,hotwheel,king123,roodypoo,izzicam,save13tx,warpten,nokia3310,samolet,ready1,coopers,scott123,bonito,
1aaaaa,yomomma,dawg1,rache,itworks,asecret,fencer,
451236,polka,olivetti,sysadmin,zepplin,sanjuan,
479373,lickem,hondacrx,pulamea,future1,naked1,sexyguy,w4g8at,lollol1,declan,runner1,rumple,daddy123,
4snz9g,grandprix,calcio,whatthefuck,nagrom,asslick,pennst,negrit,squiggy,
1223334444,police22,giovann,toronto1,tweet,yardbird,seagate,truckers,
554455,scimitar,pescator,slydog,gaysex,dogfish,fuck777,
12332112,qazxswed,morkovka,daniela1,imback,horny69,
789123456,
123456789w,jimmy2,bagger,ilove69,nikolaus,atdhfkm,rebirth,
1111aaaa,pervasive,gjgeufq,dte4uw,gfhnbpfy,skeletor,whitney1,walkman,delorean,disco1,
555888,as1234,ishikawa,fuck12,reaper1,dmitrii,bigshot,morrisse,purgen,qwer4321,itachi,willys,
123123qwe,kisska,roma123,trafford,sk84life,
326159487,pedros,idiom,plover,bebop,
159875321,jailbird,arrowhea,qwaszx123,zaxscdvf,catlover,bakers,
13579246,bones69,vermont1,helloyou,simeon,chevyz71,funguy,stargaze,parolparol,steph1,bubby,apathy,poppet,laxman,kelly123,goodnews,
741236,boner1,gaetano,astonvilla,virtua,luckyboy,rocheste,hello2u,elohim,trigger1,cstrike,pepsicola,miroslav,
96385274,fistfuck,cheval,magyar,svetlanka,lbfyjxrf,mamedov,
123123123q,ronaldo1,scotty1,
1nicole,pittbull,fredd,bbbbb1,dagwood,gfhkfvtyn,ghblehrb,logan5,
1jordan,sexbomb,omega2,montauk,
258741,dtythf,gibbon,winamp,thebomb,millerli,
852654,gemin,baldy,halflife2,dragon22,mulberry,morrigan,hotel6,zorglub,surfin,
951159,excell,arhangel,emachine,moses1,
968574,reklama,bulldog2,cuties,barca,twingo,saber,elite11,redtruck,casablan,ashish,moneyy,pepper12,cnhtktw,rjcnbr,arschloch,phenix,cachorro,sunita,madoka,joselui,adams1,mymoney,hemicuda,fyutkjr,jake12,chicas,eeeee1,sonnyboy,smarties,birdy,kitten1,cnfcbr,island1,kurosaki,taekwond,konfetka,bennett1,omega3,jackson2,fresca,minako,octavian,kban667,feyenoord,muaythai,jakedog,fktrcfylhjdyf,
1357911q,phuket,sexslave,fktrcfylhjdbx,asdfjk,
89015173454,qwerty00,kindbud,eltoro,sex6969,nyknicks,
12344321q,caballo,evenflow,hoddle,love22,metro1,mahalko,lawdog,tightass,manitou,buckie,whiskey1,anton123,
335533,password4,primo,ramair,timbo,brayden,stewie,pedro1,yorkshir,ganster,hellothe,tippy1,direwolf,genesi,rodrig,enkeli,vaz21099,sorcerer,winky,oneshot,boggle,serebro,badger1,japanes,comicbook,kamehame,alcat,denis123,echo45,sexboy,gr8ful,hondo,voetbal,blue33,
2112rush,geneviev,danni1,moosey,polkmn,matthew7,ironhead,hot2trot,ashley12,sweeper,imogen,blue21,retep,stealth1,guitarra,bernard1,tatian,frankfur,vfnhbwf,slacking,haha123,
963741,asdasdas,katenok,airforce1,
123456789qaz,shotgun1,
12qwasz,reggie1,sharo,
976431,pacifica,dhip6a,neptun,kardon,spooky1,beaut,
555555a,toosweet,tiedup,
11121314,startac,lover69,rediska,pirata,vfhrbp,
1234qwerty,energize,hansolo1,playbo,larry123,oemdlg,cnjvfnjkju,a123123,alexan,gohawks,antonius,fcbayern,mambo,yummy1,kremlin,ellen1,tremere,vfiekz,bellevue,charlie9,izabella,malishka,fermat,rotterda,dawggy,becket,chasey,kramer1,
21125150,lolit,cabrio,schlong,arisha,verity,
3some,favorit,maricon,travelle,hotpants,red1234,garrett1,home123,knarf,seven777,figment,asdewq,canseco,good2go,warhol,thomas01,pionee,al9agd,panacea,chevy454,brazzers,oriole,azerty123,finalfan,patricio,northsta,rebelde,bulldo,stallone,boogie1,
7uftyx,cfhfnjd,compusa,cornholi,config,deere,hoopster,sepultura,grasshop,babygurl,lesbo,diceman,proverbs,reddragon,nurbek,tigerwoo,superdup,buzzsaw,kakaroto,golgo13,edwar,
123qaz123,butter1,sssss1,texas2,respekt,ou812ic,
123456qaz,
55555a,doctor1,mcgwire,maria123,aol999,cinders,aa1234,joness,ghbrjkmyj,makemone,sammyboy,
567765,
380zliki,theraven,testme,mylene,elvira26,indiglo,tiramisu,shannara,baby1,
123666,gfhreh,papercut,johnmish,orange8,bogey1,mustang7,bagpipes,dimarik,vsijyjr,
4637324,ravage,cogito,seven11,natashka,warzone,hr3ytm,
4free,bigdee,
000006,
243462536,bigboi,
123333,trouts,sandy123,szevasz,monica2,guderian,newlife1,ratchet,r12345,razorbac,
12345i,piazza31,oddjob,beauty1,fffff1,anklet,nodrog,pepit,olivi,puravida,robert12,transam1,portman,bubbadog,steelers1,wilson1,eightball,mexico1,superboy,
4rfv5tgb,mzepab,samurai1,fuckslut,colleen1,girdle,vfrcbvec,q1w2e3r4t,soldier1,
19844891,alyssa1,a12345a,fidelis,skelter,nolove,mickeymouse,frehley,password69,watermel,aliska,soccer15,
12345e,ladybug1,abulafia,adagio,tigerlil,takehana,hecate,bootneck,junfan,arigato,wonkette,bobby123,trustnoone,phantasm,
132465798,brianjo,w12345,t34vfrc1991,deadeye,
1robert,
1daddy,adida,check1,grimlock,muffi,airwalk,prizrak,onclick,longbeac,ernie1,eadgbe,moore1,geniu,shadow123,bugaga,jonathan1,cjrjkjdf,orlova,buldog,talon1,westport,aenima,
541233432442,barsuk,chicago2,kellys,hellbent,toughguy,iskander,skoal,whatisit,jake123,scooter2,fgjrfkbgcbc,ghandi,love13,adelphia,vjhrjdrf,adrenali,niunia,jemoeder,rainbo,all4u8,anime1,freedom7,seraph,
789321,tommys,antman,firetruc,neogeo,natas,bmwm3,froggy1,paul1,mamit,bayview,gateways,kusanagi,ihateu,frederi,rock1,centurion,grizli,biggin,fish1,stalker1,
3girls,ilovepor,klootzak,lollo,redsox04,kirill123,jake1,pampers,vasya,hammers1,teacup,towing,celtic1,ishtar,yingyang,
4904s677075,dahc1,patriot1,patrick9,redbirds,doremi,rebecc,yoohoo,makarova,epiphone,rfgbnfy,milesd,blister,chelseafc,katana1,blackrose,
1james,primrose,shock5,hard1,scooby12,c6h12o6,dustoff,boing,chisel,kamil,
1william,defiant1,tyvugq,mp8o6d,aaa340,nafets,sonnet,flyhigh,
242526,crewcom,love23,strike1,stairway,katusha,salamand,cupcake1,password0,
007james,sunnie,multisync,harley01,tequila1,fred12,driver8,q8zo8wzq,hunter01,mozzer,temporar,eatmeraw,mrbrownxx,kailey,sycamore,flogger,tincup,rahasia,ganymede,bandera,slinger,
1111122222,vander,woodys,
1cowboy,khaled,jamies,london12,babyboo,tzpvaw,diogenes,budice,mavrick,
135797531,cheeta,macros,squonk,blackber,topfuel,apache1,falcon16,darkjedi,cheeze,vfhvtkfl,sparco,change1,gfhfif,freestyl,kukuruza,loveme2,
12345f,kozlov,sherpa,marbella,
44445555,bocephus,
1winner,alvar,hollydog,gonefish,iwantin,barman,godislove,amanda18,rfpfynbg,eugen,abcdef1,redhawk,thelema,spoonman,baller1,harry123,
475869,tigerman,cdtnjxrf,marillio,scribble,elnino,carguy,hardhead,l2g7k3,troopers,selen,dragon76,antigua,ewtosi,ulysse,astana,paroli,cristo,carmex,marjan,bassfish,letitbe,kasparov,jay123,
19933991,blue13,eyecandy,scribe,mylord,ukflbjkec,ellie1,beaver1,destro,neuken,halfpint,ameli,lilly1,satanic,xngwoj,
12345trewq,asdf1,bulldogg,asakura,jesucrist,flipside,packers4,biggy,kadett,biteme69,bobdog,silverfo,saint1,bobbo,packman,knowledg,foolio,fussbal,
12345g,kozerog,westcoas,minidisc,nbvcxw,martini1,alastair,rasengan,superbee,memento,porker,lena123,florenc,kakadu,bmw123,getalife,bigsky,monkee,people1,schlampe,red321,memyself,
0147896325,
12345678900987654321,soccer14,realdeal,gfgjxrf,bella123,juggs,doritos,celtics1,peterbilt,ghbdtnbrb,gnusmas,xcountry,ghbdtn1,batman99,deusex,gtnhjdf,blablabl,juster,marimba,love2,rerjkrf,alhambra,micros,siemens1,assmaste,moonie,dashadasha,atybrc,eeeeee1,wildrose,blue55,davidl,xrp23q,skyblue,leo123,ggggg1,bestfriend,franny,
1234rmvb,fun123,rules1,sebastien,chester2,hakeem,winston2,fartripper,atlant,
07831505,iluvsex,q1a2z3,larrys,
009900,ghjkju,capitan,rider1,qazxsw21,belochka,andy123,hellya,chicca,maximal,juergen,password1234,howard1,quetzal,daniel123,qpwoeiruty,
123555,bharat,ferrari3,numbnuts,savant,ladydog,phipsi,lovepussy,etoile,power2,mitten,britneys,chilidog,
08522580,
2fchbg,kinky1,bluerose,loulo,ricardo1,doqvq3,kswbdu,
013cpfza,timoha,ghbdtnghbdtn,
3stooges,gearhead,browns1,g00ber,super7,greenbud,kitty2,pootie,toolshed,gamers,coffe,ibill123,freelove,anasazi,sister1,jigger,natash,stacy1,weronika,luzern,soccer7,hoopla,dmoney,valerie1,canes,razdvatri,washere,greenwoo,rfhjkbyf,anselm,pkxe62,maribe,daniel2,maxim1,faceoff,carbine,xtkjdtr,buddy12,stratos,jumpman,buttocks,aqswdefr,pepsis,sonechka,steeler1,lanman,nietzsch,ballz,biscuit1,wrxsti,goodfood,juventu,federic,mattman,vika123,strelec,jledfyxbr,sideshow,
4life,fredderf,bigwilly,
12347890,
12345671,sharik,bmw325i,fylhtqrf,dannon4,marky,mrhappy,drdoom,maddog1,pompier,cerbera,goobers,howler,jenny69,evely,letitrid,cthuttdyf,felip,shizzle,golf12,t123456,yamah,bluearmy,squishy,roxan,
10inches,dollface,babygirl1,blacksta,kaneda,lexingto,canadien,
222888,kukushka,sistema,
224422,shadow69,ppspankp,mellons,barbie1,free4all,alfa156,lostone,
2w3e4r5t,painkiller,robbie1,binger,
8dihc6,jaspe,rellik,quark,sogood,hoopstar,number2,snowy1,dad2ownu,cresta,qwe123asd,hjvfyjdf,gibsonsg,qbg26i,dockers,grunge,duckling,lfiekz,cuntsoup,kasia1,
1tigger,woaini,reksio,tmoney,firefighter,neuron,audia3,woogie,powerboo,powermac,fatcock,
12345666,upnfmc,lustful,porn1,gotlove,amylee,kbytqrf,
11924704,
25251325,sarasota,sexme,ozzie1,berliner,nigga1,guatemal,seagulls,iloveyou!,chicken2,qwerty21,
010203040506,
1pillow,libby1,vodoley,backlash,piglets,teiubesc,
019283,vonnegut,perico,thunde,buckey,gtxtymrf,manunite,iiiii1,lost4815162342,madonn,
270873_,britney1,kevlar,piano1,boondock,colt1911,salamat,doma77ns,anuradha,cnhjqrf,rottweil,newmoon,topgun1,mauser,fightclu,birthday21,reviewpa,herons,aassddff,lakers32,melissa2,vredina,jiujitsu,mgoblue,shakey,moss84,
12345zxcvb,funsex,benji1,garci,
113322,chipie,windex,nokia5310,pwxd5x,bluemax,cosita,chalupa,trotsky,new123,g3ujwg,newguy,canabis,gnaget,happydays,felixx,
1patrick,cumface,sparkie,kozlova,
123234,newports,broncos7,golf18,recycle,hahah,harrypot,cachondo,open4me,miria,guessit,pepsione,knocker,usmc1775,countach,playe,wiking,landrover,cracksevi,drumline,a7777777,smile123,manzana,panty,liberta,pimp69,dolfan,quality1,schnee,superson,elaine22,webhompass,mrbrownx,deepsea,
4wheel,mamasita,rockport,rollie,myhome,jordan12,kfvgjxrf,hockey12,seagrave,ford1,chelsea2,samsara,marissa1,lamesa,mobil1,piotrek,tommygun,yyyyy1,wesley1,billy123,homersim,julies,amanda12,shaka,maldini,suzenet,springst,iiiiii1,yakuza,
111111aa,westwind,helpdesk,annamari,bringit,hopefull,hhhhhhh1,saywhat,mazdarx8,bulova,jennife1,baikal,gfhjkmxbr,victoria1,gizmo123,alex99,defjam,
2girls,sandrock,positivo,shingo,syncmast,opensesa,silicone,fuckina,senna1,karlos,duffbeer,montagne,gehrig,thetick,pepino,hamburge,paramedic,scamp,smokeweed,fabregas,phantoms,venom121293,
2583458,badone,porno69,manwhore,vfvf123,notagain,vbktyf,rfnthbyrf,wildblue,kelly001,dragon66,camell,curtis1,frolova,
1212123,dothedew,tyler123,reddrago,planetx,promethe,gigolo,
1001001,thisone,eugeni,blackshe,cruzazul,incognito,puller,joonas,quick1,spirit1,gazza,zealot,gordito,hotrod1,mitch1,pollito,hellcat,mythos,duluth,
383pdjvl,easy123,hermos,binkie,its420,lovecraf,darien,romina,doraemon,
19877891,syclone,hadoken,transpor,ichiro,intell,gargamel,dragon2,wavpzt,
557744,rjw7x4,jennys,kickit,rjynfrn,likeit,
555111,corvus,nec3520,
133113,mookie1,bochum,samsung2,locoman0,
154ugeiu,vfvfbgfgf,
135792,[start],tenni,
20001,vestax,hufmqw,neveragain,wizkid,kjgfnf,nokia6303,tristen,saltanat,louie1,gandalf2,sinfonia,alpha3,tolstoy,ford150,f00bar,
1hello,alici,lol12,riker1,hellou,
333888,
1hunter,qw1234,vibrator,mets86,
43211234,gonzale,cookies1,sissy1,john11,bubber,blue01,cup2006,gtkmvtyb,nazareth,heybaby,suresh,teddie,mozilla,rodeo1,madhouse,gamera,
123123321,naresh,dominos,foxtrot1,taras,powerup,kipling,jasonb,fidget,galena,meatman,alpacino,bookmark,farting,humper,titsnass,gorgon,castaway,dianka,anutka,gecko1,fucklove,connery,wings1,erika1,peoria,moneymaker,ichabod,heaven1,paperboy,phaser,breakers,nurse1,westbrom,alex13,brendan1,
123asd123,almera,grubber,clarkie,thisisme,welkom01,
51051051051,crypto,freenet,pflybwf,black12,testme2,changeit,autobahn,attica,chaoss,denver1,tercel,gnasher23,master2,vasilii,sherman1,gomer,bigbuck,derek1,qwerzxcv,jumble,dragon23,art131313,numark,beasty,cxfcnmttcnm,updown,starion,glist,sxhq65,ranger99,monkey7,shifter,wolves1,
4r5t6y,phone1,favorite5,skytommy,abracada,
1martin,
102030405060,gatech,giulio,blacktop,cheer1,africa1,grizzly1,inkjet,shemales,durango1,booner,
11223344q,supergirl,vanyarespekt,dickless,srilanka,weaponx,
6string,nashvill,spicey,boxer1,fabien,
2sexy2ho,bowhunt,jerrylee,acrobat,tawnee,ulisse,nolimit8,l8g3bkde,pershing,gordo1,allover,gobrowns,
123432,
123444,
321456987,spoon1,hhhhh1,sailing1,gardenia,teache,sexmachine,tratata,pirate1,niceone,jimbos,
314159265,qsdfgh,bobbyy,ccccc1,carla1,vjkjltw,savana,biotech,frigid,
123456789g,dragon10,yesiam,alpha06,oakwood,tooter,winsto,radioman,vavilon,asnaeb,google123,nariman,kellyb,dthyjcnm,password6,parol1,golf72,skate1,lthtdj,
1234567890s,kennet,rossia,lindas,nataliya,perfecto,eminem1,kitana,aragorn1,rexona,arsenalf,planot,coope,testing123,timex,blackbox,bullhead,barbarian,dreamon,polaris1,cfvjktn,frdfhbev,gametime,slipknot666,nomad1,hfgcjlbz,happy69,fiddler,brazil1,joeboy,indianali,
113355,obelisk,telemark,ghostrid,preston1,anonim,wellcome,verizon1,sayangku,censor,timeport,dummies,adult1,nbnfybr,donger,thales,iamgay,sexy1234,deadlift,pidaras,doroga,
123qwe321,portuga,asdfgh12,happys,cadr14nu,pi3141,maksik,dribble,cortland,darken,stepanova,bommel,tropic,sochi2014,bluegras,shahid,merhaba,nacho,
2580456,orange44,kongen,
3cudjz,
78girl,my3kids,marcopol,deadmeat,gabbie,saruman,jeepman,freddie1,katie123,master99,ronal,ballbag,centauri,killer7,xqgann,pinecone,jdeere,geirby,aceshigh,
55832811,pepsimax,rayden,razor1,tallyho,ewelina,coldfire,florid,glotest,
999333,sevenup,bluefin,limaperu,apostol,bobbins,charmed1,michelin,sundin,centaur,alphaone,christof,trial1,lions1,
45645,just4you,starflee,vicki1,cougar1,green2,jellyfis,batman69,games1,hihje863,crazyzil,w0rm1,oklick,dogbite,yssup,sunstar,paprika,postov10,
124578963,x24ik3,kanada,buckster,iloveamy,bear123,smiler,nx74205,ohiostat,spacey,bigbill,doudo,nikolaeva,hcleeb,sex666,mindy1,buster11,deacons,boness,njkcnsq,candy2,cracker1,turkey1,qwertyu1,gogreen,tazzzz,edgewise,ranger01,qwerty6,blazer1,arian,letmeinnow,cigar1,jjjjjj1,grigio,frien,tenchu,f9lmwd,imissyou,filipp,heathers,coolie,salem1,woodduck,scubadiv,
123kat,raffaele,nikolaev,dapzu455,skooter,
9inches,lthgfhjkm,gr8one,ffffff1,zujlrf,amanda69,gldmeo,m5wkqf,rfrltkf,televisi,bonjou,paleale,stuff1,cumalot,fuckmenow,climb7,mark1234,t26gn4,oneeye,george2,utyyflbq,hunting1,tracy71,ready2go,hotguy,accessno,charger1,rudedog,kmfdm,goober1,sweetie1,wtpmjgda,dimensio,ollie1,pickles1,hellraiser,mustdie,
123zzz,
99887766,stepanov,verdun,tokenbad,anatol,bartende,cidkid86,onkelz,timmie,mooseman,patch1,
12345678c,marta1,dummy1,bethany1,myfamily,history1,
178500,lsutiger,phydeaux,moren,dbrnjhjdbx,gnbxrf,uniden,drummers,abpbrf,godboy,daisy123,hogan1,ratpack,irland,tangerine,greddy,flore,sqrunch,billyjoe,q55555,clemson1,
98745632,marios,ishot,angelin,access12,naruto12,lolly,scxakv,austin12,sallad,cool99,rockit,mongo1,mark22,ghbynth,ariadna,senha,docto,tyler2,mobius,hammarby,
192168,anna12,claire1,pxx3eftp,secreto,greeneye,stjabn,baguvix,satana666,rhbcnbyjxrf,dallastx,garfiel,michaelj,
1summer,montan,
1234ab,filbert,squids,fastback,lyudmila,chucho,eagleone,kimberle,ar3yuk3,jake01,nokids,soccer22,
1066ad,ballon,cheeto,review69,madeira,taylor2,sunny123,chubbs,lakeland,striker1,porche,qwertyu8,digiview,go1234,ferari,lovetits,aditya,minnow,green3,matman,cellphon,fortytwo,minni,pucara,
69a20a,roman123,fuente,
12e3e456,paul12,jacky,demian,littleman,jadakiss,vlad1997,franca,
282860,midian,nunzio,xaccess2,colibri,jessica0,revilo,
654456,harvey1,wolf1,macarena,corey1,husky1,arsen,milleniu,
852147,crowes,redcat,combat123654,hugger,psalms,quixtar,ilovemom,toyot,ballss,ilovekim,serdar,james23,avenger1,serendip,malamute,nalgas,teflon,shagger,letmein6,vyjujnjxbt,assa1234,student1,dixiedog,gznybwf13,fuckass,aq1sw2de3,robroy,hosehead,sosa21,
123345,ias100,teddy123,poppin,dgl70460,zanoza,farhan,quicksilver,
1701d,tajmahal,depechemode,paulchen,angler,tommy2,recoil,megamanx,scarecro,nicole2,
152535,rfvtgb,skunky,fatty1,saturno,wormwood,milwauke,udbwsk,sexlover,stefa,
7bgiqk,gfnhbr,omar10,bratan,lbyfvj,slyfox,forest1,jambo,william3,tempus,solitari,lucydog,murzilka,qweasdzxc1,vehpbkrf,
12312345,fixit,woobie,andre123,
123456789x,lifter,zinaida,soccer17,andone,foxbat,torsten,apple12,teleport,
123456i,leglover,bigcocks,vologda,dodger1,martyn,d6o8pm,naciona,eagleeye,maria6,rimshot,bentley1,octagon,barbos,masaki,gremio,siemen,s1107d,mujeres,bigtits1,cherr,saints1,mrpink,simran,ghzybr,ferrari2,secret12,tornado1,kocham,picolo,deneme,onelove1,rolan,fenster,
1fuckyou,cabbie,pegaso,nastyboy,password5,aidana,mine2306,mike13,wetone,tigger69,ytreza,bondage1,myass,golova,tolik,happyboy,poilkj,nimda2k,rammer,rubies,hardcore1,jetset,hoops1,jlaudio,misskitt,
1charlie,google12,theone1,phred,porsch,aalborg,luft4,charlie5,password7,gnosis,djgabbab,
1daniel,vinny,borris,cumulus,member1,trogdor,darthmau,andrew2,ktjybl,relisys,kriste,rasta220,chgobndg,weener,qwerty66,fritter,followme,freeman1,ballen,blood1,peache,mariso,trevor1,biotch,gtfullam,chamonix,friendste,alligato,misha1,
1soccer,
18821221,venkat,superd,molotov,bongos,mpower,acun3t1x,dfcmrf,h4x3d,rfhfufylf,tigran,booyaa,plastic1,monstr,rfnhby,lookatme,anabolic,tiesto,simon123,soulman,canes1,skyking,tomcat1,madona,bassline,dasha123,tarheel1,dutch1,xsw23edc,qwerty123456789,imperator,slaveboy,bateau,paypal,house123,pentax,wolf666,drgonzo,perros,digger1,juninho,hellomoto,bladerun,zzzzzzz1,keebler,take8422,fffffff1,ginuwine,israe,caesar1,crack1,precious1,garand,magda1,zigazaga,
321ewq,johnpaul,mama1234,iceman69,sanjeev,treeman,elric,rebell,
1thunder,cochon,deamon,zoltan,straycat,uhbyuj,luvfur,mugsy,primer,wonder1,teetime,candycan,pfchfytw,fromage,gitler,salvatio,piggy1,
23049307,zafira,chicky,sergeev,katze,bangers,andriy,jailbait,vaz2107,ghbhjlf,dbjktnnf,aqswde,zaratustra,asroma,
1pepper,alyss,kkkkk1,ryan1,radish,cozumel,waterpol,pentium1,rosebowl,farmall,steinway,dbrekz,baranov,jkmuf,another1,chinacat,qqqqqqq1,hadrian,devilmaycry4,ratbag,teddy2,love21,pullings,packrat,robyn1,boobo,qw12er34,tribe1,rosey,celestia,nikkie,fortune12,olga123,danthema,gameon,vfrfhjys,dilshod,henry14,jenova,redblue,chimaera,pennywise,sokrates,danimal,qqaazz,fuaqz4,killer2,
198200,tbone1,kolyan,wabbit,lewis1,maxtor,egoist,asdfas,spyglass,omegas,jack12,nikitka,esperanz,doozer,matematika,wwwww1,ssssss1,poiu0987,suchka,courtney1,gungho,alpha2,fktyjxrf,summer06,bud420,devildriver,heavyd,saracen,foucault,choclate,rjdfktyrj,goblue1,monaro,jmoney,dcpugh,efbcapa201,qqh92r,pepsicol,bbb747,ch5nmk,honeyb,beszoptad,tweeter,intheass,iseedeadpeople,
123dan,
89231243658s,farside1,findme,smiley1,
55556666,sartre,ytcnjh,kacper,costarica,
134679258,mikeys,nolimit9,vova123,withyou,
5rxypn,love143,freebie,rescue1,
203040,michael6,
12monkey,redgreen,steff,itstime,naveen,good12345,acidrain,
1dawg,miramar,playas,daddio,orion2,
852741,studmuff,kobe24,senha123,stephe,mehmet,allalone,scarface1,helloworld,smith123,blueyes,vitali,memphis1,mybitch,colin1,
159874,
1dick,podaria,d6wnro,brahms,f3gh65,dfcbkmtd,xxxman,corran,ugejvp,qcfmtz,marusia,totem,arachnid,matrix2,antonell,fgntrf,zemfira,christos,surfing1,naruto123,plato1,
56qhxs,madzia,vanille,
043aaa,asq321,mutton,ohiostate,golde,cdznjckfd,rhfcysq,green5,elephan,superdog,jacqueli,bollock,lolitas,nick12,
1orange,maplelea,july23,argento,waldorf,wolfer,pokemon12,zxcvbnmm,flicka,drexel,outlawz,harrie,atrain,juice2,falcons1,charlie6,
19391945,tower1,dragon21,hotdamn,dirtyboy,love4ever,
1ginger,thunder2,virgo1,alien1,bubblegu,
4wwvte,
123456789qqq,realtime,studio54,passss,vasilek,awsome,giorgia,bigbass,
2002tii,sunghile,mosdef,simbas,count0,uwrl7c,summer05,lhepmz,ranger21,sugarbea,principe,
5550123,tatanka,
9638v,cheerios,majere,nomercy,jamesbond007,bh90210,
7550055,jobber,karaganda,pongo,trickle,defamer,
6chid8,
1q2a3z,tuscan,nick123,.adgjm,loveyo,hobbes1,note1234,shootme,
171819,loveporn,
9788960,monty123,fabrice,macduff,monkey13,shadowfa,tweeker,hanna1,madball,telnet,loveu2,qwedcxzas,thatsit,vfhcbr,ptfe3xxp,gblfhfcs,ddddddd1,hakkinen,liverune,deathsta,misty123,suka123,recon1,inferno1,
232629,polecat,sanibel,grouch,hitech,hamradio,rkfdbfnehf,vandam,nadin,fastlane,shlong,iddqdidkfa,ledzeppelin,sexyfeet,
098123,stacey1,negras,roofing,lucifer1,ikarus,tgbyhn,melnik,barbaria,montego,twisted1,bigal1,jiggle,darkwolf,acerview,silvio,treetops,bishop1,iwanna,pornsite,happyme,gfccdjhl,
114411,veritech,batterse,casey123,yhntgb,mailto,milli,guster,q12345678,coronet,sleuth,fuckmeha,armadill,kroshka,geordie,lastochka,pynchon,killall,tommy123,sasha1996,godslove,hikaru,clticic,cornbrea,vfkmdbyf,passmaster,
123123123a,souris,nailer,diabolo,skipjack,martin12,hinata,mof6681,brookie,dogfight,johnso,karpov,
326598,rfvbrflpt,travesti,caballer,galaxy1,wotan,antoha,art123,xakep1234,ricflair,pervert1,p00kie,ambulanc,santosh,berserker,larry33,bitch123,a987654321,dogstar,angel22,cjcbcrf,redhouse,toodles,gold123,hotspot,kennedy1,glock21,chosen1,schneide,mainman,taffy1,
3ki42x,
4zqauf,ranger2,
4meonly,year2000,
121212a,kfylsi,netzwerk,diese,picasso1,rerecz,
225522,dastan,swimmer1,brooke1,blackbea,oneway,ruslana,dont4get,phidelt,chrisp,gjyxbr,xwing,kickme,shimmy,kimmy1,
4815162342lost,qwerty5,fcporto,jazzbo,mierd,
252627,basses,sr20det,
00133,florin,howdy1,kryten,goshen,koufax,cichlid,imhotep,andyman,wrest666,saveme,dutchy,anonymou,semprini,siempre,mocha1,forest11,wildroid,aspen1,sesam,kfgekz,cbhbec,a55555,sigmanu,slash1,giggs11,vatech,marias,candy123,jericho1,kingme,
123a123,drakula,cdjkjxm,mercur,oneman,hoseman,plumper,ilovehim,lancers,sergey1,takeshi,goodtogo,cranberr,ghjcnj123,harvick,qazxs,
1972chev,horsesho,freedom3,letmein7,saitek,anguss,vfvfgfgfz,
300000,elektro,toonporn,
999111999q,mamuka,q9umoz,edelweis,subwoofer,bayside,disturbe,volition,lucky3,
12345678z,
3mpz4r,march1,atlantida,strekoza,seagrams,
090909t,yy5rbfsc,jack1234,sammy12,sampras,mark12,eintrach,chaucer,lllll1,nochance,whitepower,
197000,lbvekz,passer,torana,
12345as,pallas,koolio,
12qw34,nokia8800,findout,
1thomas,mmmmm1,
654987,mihaela,chinaman,superduper,donnas,ringo1,jeroen,gfdkjdf,professo,cdtnrf,tranmere,tanstaaf,himera,ukflbfnjh,
667788,alex32,joschi,w123456,okidoki,flatline,papercli,super8,doris1,
2good4u,
4z34l0ts,pedigree,freeride,gsxr1100,wulfgar,benjie,ferdinan,king1,charlie7,djdxbr,fhntvbq,ripcurl,
2wsx1qaz,kingsx,desade,sn00py,loveboat,rottie,evgesha,
4money,dolittle,adgjmpt,buzzers,brett1,makita,
123123qweqwe,rusalka,sluts1,
123456e,jameson1,bigbaby,
1z2z3z,ckjybr,love4u,fucker69,erhfbyf,jeanluc,farhad,fishfood,merkin,giant1,golf69,rfnfcnhjaf,camera1,stromb,smoothy,
774411,nylon,juice1,rfn.irf,newyor,
123456789t,marmot,star11,jennyff,jester1,hisashi,kumquat,alex777,helicopt,merkur,dehpye,cummin,zsmj2v,kristjan,april12,englan,honeypot,badgirls,uzumaki,keines,p12345,guita,quake1,duncan1,juicer,milkbone,hurtme,
123456789b,qq123456789,schwein,p3wqaw,
54132442,qwertyytrewq,andreeva,ruffryde,punkie,abfkrf,kristinka,anna1987,ooooo1,
335533aa,umberto,amber123,
456123789,
456789123,beelch,manta,peeker,
1112131415,
3141592654,gipper,wrinkle5,katies,asd123456,james11,
78n3s5af,michael0,daboss,jimmyb,hotdog1,david69,
852123,blazed,sickan,eljefe,
2n6wvq,gobills,rfhfcm,squeaker,cabowabo,luebri,karups,test01,melkor,angel777,smallvil,modano,olorin,
4rkpkt,leslie1,koffie,shadows1,littleon,amiga1,topeka,summer20,asterix1,pitstop,aloysius,k12345,magazin,joker69,panocha,pass1word,
1233214,ironpony,
368ejhih,
88keys,pizza123,sonali,
57np39,quake2,
1234567890qw,
1020304,sword1,fynjif,abcde123,dfktyjr,rockys,grendel1,harley12,kokakola,super2,azathoth,lisa123,shelley1,girlss,ibragim,seven1,jeff24,
1bigdick,dragan,autobot,t4nvp7,omega123,
900000,hecnfv,
889988,nitro1,doggie1,fatjoe,
811pahc,tommyt,savage1,pallino,smitty1,jg3h4hfn,jamielee,
1qazwsx,zx123456,machine1,asdfgh123,guinnes,
789520,sharkman,jochen,legend1,sonic2,extreme1,dima12,photoman,
123459876,nokian95,
775533,vaz2109,april10,becks,repmvf,pooker,qwer12345,themaster,nabeel,monkey10,gogetit,hockey99,bbbbbbb1,zinedine,dolphin2,anelka,
1superma,winter01,muggsy,horny2,
669966,kuleshov,jesusis,calavera,bullet1,
87t5hdf,sleepers,winkie,vespa,lightsab,carine,magister,
1spider,shitbird,salavat,becca1,wc18c2,shirak,galactus,zaskar,barkley1,reshma,dogbreat,fullsail,asasa,boeder,
12345ta,zxcvbnm12,lepton,elfquest,tony123,vkaxcs,savatage,sevilia1,badkitty,munkey,pebbles1,diciembr,qapmoc,gabriel2,
1qa2ws3e,cbcmrb,welldone,nfyufh,kaizen,jack11,manisha,grommit,g12345,maverik,chessman,heythere,mixail,jjjjjjj1,sylvia1,fairmont,harve,skully,global1,youwish,pikachu1,badcat,zombie1,
49527843,ultra1,redrider,offsprin,lovebird,
153426,stymie,aq1sw2,sorrento,
0000001,r3ady41t,webster1,
95175,adam123,coonass,
159487,slut1,gerasim,monkey99,slutwife,
159963,
1pass1page,hobiecat,bigtymer,all4you,maggie2,olamide,comcast1,infinit,bailee,vasileva,.ktxrf,asdfghjkl1,
12345678912,setter,fuckyou7,nnagqx,lifesuck,draken,austi,feb2000,cable1,
1234qwerasdf,hax0red,zxcv12,vlad7788,nosaj,lenovo,underpar,huskies1,lovegirl,feynman,suerte,babaloo,alskdjfhg,oldsmobi,bomber1,redrover,pupuce,methodman,phenom,cutegirl,countyli,gretsch,godisgood,bysunsu,hardhat,mironova,
123qwe456rty,rusty123,salut,
187211,
555666777,
11111z,mahesh,rjntyjxtr,br00klyn,dunce1,timebomb,bovine,makelove,littlee,shaven,rizwan,patrick7,
42042042,bobbijo,rustem,buttmunc,dongle,tiger69,bluecat,blackhol,shirin,peaces,cherub,cubase,longwood,lotus7,gwju3g,bruin,pzaiu8,green11,uyxnyd,seventee,dragon5,tinkerbel,bluess,bomba,fedorova,joshua2,bodyshop,peluche,gbpacker,shelly1,d1i2m3a4,ghtpbltyn,talons,sergeevna,misato,chrisc,sexmeup,brend,olddog,davros,hazelnut,bridget1,hzze929b,readme,brethart,wild1,ghbdtnbr1,nortel,kinger,royal1,bucky1,allah1,drakkar,emyeuanh,gallaghe,hardtime,jocker,tanman,flavio,abcdef123,leviatha,squid1,skeet,sexse,
123456x,mom4u4mm,lilred,djljktq,ocean11,cadaver,baxter1,
808state,fighton,primavera,
1andrew,moogle,limabean,goddess1,vitalya,blue56,
258025,bullride,cicci,
1234567d,connor1,gsxr11,oliveoil,leonard1,legsex,gavrik,rjnjgtc,mexicano,
2bad4u,goodfellas,ornw6d,mancheste,hawkmoon,zlzfrh,schorsch,g9zns4,bashful,rossi46,stephie,rfhfntkm,sellout,
123fuck,stewar1,solnze,
00007,thor5200,compaq12,didit,bigdeal,hjlbyf,zebulon,wpf8eu,kamran,emanuele,
197500,carvin,ozlq6qwm,
3syqo15hil,pennys,epvjb6,asdfghjkl123,
198000,nfbcbz,jazzer,asfnhg66,zoloft,albundy,aeiou,getlaid,planet1,gjkbyjxrf,alex2000,brianb,moveon,maggie11,eieio,vcradq,shaggy1,novartis,cocoloco,dunamis,
554uzpad,sundrop,
1qwertyu,alfie,feliks,briand,
123www,red456,addams,fhntv1998,goodhead,theway,javaman,angel01,stratoca,lonsdale,
15987532,bigpimpin,skater1,issue43,muffie,yasmina,slowride,crm114,sanity729,himmel,carolcox,bustanut,parabola,masterlo,computador,crackhea,dynastar,rockbott,doggysty,wantsome,bigten,gaelle,juicy1,alaska1,etower,sixnine,suntan,froggies,nokia7610,hunter11,njnets,alicante,buttons1,diosesamo,elizabeth1,chiron,trustnoo,amatuers,tinytim,mechta,sammy2,cthulu,trs8f7,poonam,m6cjy69u35,cookie12,blue25,jordans,santa1,kalinka,mikey123,lebedeva,
12345689,kissss,queenbee,vjybnjh,ghostdog,cuckold,bearshare,rjcntyrj,alinochka,ghjcnjrdfibyj,aggie1,teens1,
3qvqod,dauren,tonino,hpk2qc,iqzzt580,bears85,nascar88,theboy,njqcw4,masyanya,pn5jvw,intranet,lollone,shadow99,
00096462,techie,cvtifhbrb,redeemed,gocanes,
62717315,topman,intj3a,cobrajet,antivirus,whyme,berserke,ikilz083,airedale,brandon2,hopkig,johanna1,danil8098,gojira,arthu,vision1,pendragon,milen,chrissie,vampiro,mudder,chris22,blowme69,omega7,surfers,goterps,italy1,baseba11,diego1,gnatsum,birdies,semenov,joker123,zenit2011,wojtek,cab4ma99,watchmen,damia,forgotte,fdm7ed,strummer,freelanc,cingular,orange77,mcdonalds,vjhjpjdf,kariya,tombston,starlet,hawaii1,dantheman,megabyte,nbvjirf,anjing,ybrjkftdbx,hotmom,kazbek,pacific1,sashimi,asd12,coorslig,yvtte545,kitte,elysium,klimenko,cobblers,kamehameha,only4me,redriver,triforce,sidorov,vittoria,fredi,dank420,m1234567,fallout2,
989244342a,crazy123,crapola,servus,volvos,
1scooter,griffin1,autopass,ownzyou,deviant,george01,
2kgwai,boeing74,simhrq,hermosa,hardcor,griffy,rolex1,hackme,cuddles1,master3,bujhtr,aaron123,popolo,blader,
1sexyred,gerry1,cronos,ffvdj474,yeehaw,bob1234,carlos2,mike77,buckwheat,ramesh,acls2h,monster2,montess,
11qq22ww,lazer,zx123456789,chimpy,masterch,sargon,lochness,archana,
1234qwert,hbxfhl,sarahb,altoid,zxcvbn12,dakot,caterham,dolomite,chazz,r29hqq,longone,pericles,grand1,sherbert,eagle3,pudge,irontree,synapse,boome,nogood,summer2,pooki,gangsta1,mahalkit,elenka,lbhtrnjh,dukedog,
19922991,hopkins1,evgenia,domino1,x123456,manny1,tabbycat,drake1,jerico,drahcir,kelly2,
708090a,facesit,
11c645df,mac123,boodog,kalani,hiphop1,critters,hellothere,tbirds,valerka,
551scasi,love777,paloalto,mrbrown,duke3d,killa1,arcturus,spider12,dizzy1,smudger,goddog,
75395,spammy,
1357997531,
78678,datalife,zxcvbn123,
1122112211,london22,
23dp4x,rxmtkp,biggirls,ownsu,lzbs2twz,sharps,geryfe,
237081a,golakers,nemesi,sasha1995,pretty1,mittens1,d1lakiss,speedrac,gfhjkmm,sabbat,hellrais,
159753258,qwertyuiop123,playgirl,crippler,salma,strat1,celest,hello5,omega5,cheese12,ndeyl5,edward12,soccer3,cheerio,davido,vfrcbr,gjhjctyjr,boscoe,inessa,shithole,ibill,qwepoi,
201jedlz,asdlkj,davidk,spawn2,ariel1,michael4,jamie123,romantik,micro1,pittsbur,canibus,katja,muhtar,thomas123,studboy,masahiro,rebrov,patrick8,hotboys,sarge1,
1hammer,nnnnn1,eistee,datalore,jackdani,sasha2010,mwq6qlzo,cmfnpu,klausi,cnhjbntkm,andrzej,ilovejen,lindaa,hunter123,vvvvv1,novembe,hamster1,x35v8l,lacey1,
1silver,iluvporn,valter,herson,alexsandr,cojones,backhoe,womens,
777angel,beatit,klingon1,ta8g4w,luisito,benedikt,maxwel,inspecto,zaq12ws,wladimir,bobbyd,peterj,asdfg12,hellspawn,bitch69,nick1234,golfer23,sony123,jello1,killie,chubby1,kodaira52,yanochka,buckfast,morris1,roaddogg,snakeeye,sex1234,mike22,mmouse,fucker11,dantist,brittan,vfrfhjdf,doc123,plokijuh,emerald1,batman01,serafim,elementa,soccer9,footlong,cthuttdbx,hapkido,eagle123,getsmart,getiton,batman2,masons,mastiff,
098890,cfvfhf,james7,azalea,sherif,saun24865709,
123red,cnhtrjpf,martina1,pupper,michael5,alan12,shakir,devin1,ha8fyp,palom,mamulya,trippy,deerhunter,happyone,monkey77,
3mta3,
123456789f,crownvic,teodor,natusik,
0137485,vovchik,strutter,triumph1,cvetok,moremone,sonnen,screwbal,akira1,sexnow,pernille,independ,poopies,samapi,kbcbxrf,master22,swetlana,urchin,viper2,magica,slurpee,postit,gilgames,kissarmy,clubpenguin,limpbizk,timber1,celin,lilkim,fuckhard,lonely1,mom123,goodwood,extasy,sdsadee23,foxglove,malibog,clark1,casey2,shell1,odense,balefire,dcunited,cubbie,pierr,solei,
161718,bowling1,areyukesc,batboy,r123456,
1pionee,marmelad,maynard1,cn42qj,cfvehfq,heathrow,qazxcvbn,connecti,secret123,newfie,xzsawq21,tubitzen,nikusha,enigma1,yfcnz123,
1austin,michaelc,splunge,wanger,phantom2,jason2,pain4me,primetime21,babes1,liberte,sugarray,undergro,zonker,labatts,djhjyf,watch1,eagle5,madison2,cntgfirf,sasha2,masterca,fiction7,slick50,bruins1,sagitari,
12481632,peniss,insuranc,
2b8riedt,
12346789,mrclean,ssptx452,tissot,q1w2e3r4t5y6u7,avatar1,comet1,spacer,vbrjkf,pass11,wanker1,
14vbqk9p,noshit,money4me,sayana,fish1234,seaways,pipper,romeo123,karens,wardog,ab123456,gorilla1,andrey123,lifesucks,jamesr,
4wcqjn,bearman,glock22,matt11,dflbvrf,barbi,maine1,dima1997,sunnyboy,
6bjvpe,bangkok1,
666666q,rafiki,letmein0,
0raziel0,dalla,london99,wildthin,patrycja,skydog,qcactw,tmjxn151,yqlgr667,jimmyd,stripclub,deadwood,
863abgsg,horses1,qn632o,scatman,sonia1,subrosa,woland,kolya,charlie4,moleman,j12345,summer11,angel11,blasen,sandal,mynewpas,retlaw,cambria,mustang4,nohack04,kimber45,fatdog,maiden1,bigload,necron,dupont24,ghost123,turbo2,.ktymrf,radagast,balzac,vsevolod,pankaj,argentum,
2bigtits,mamabear,bumblebee,mercury7,maddie1,chomper,jq24nc,snooky,pussylic,
1lovers,taltos,warchild,diablo66,jojo12,sumerki,aventura,gagger,annelies,drumset,cumshots,azimut,
123580,clambake,bmw540,birthday54,psswrd,paganini,wildwest,filibert,teaseme,
1test,scampi,thunder5,antosha,purple12,supersex,hhhhhh1,brujah,
111222333a,
13579a,bvgthfnjh,
4506802a,killians,choco,qqqwwweee,raygun,
1grand,koetsu13,sharp1,mimi92139,fastfood,idontcare,bluered,chochoz,
4z3al0ts,target1,sheffiel,labrat,stalingrad,
147123,cubfan,corvett1,holden1,snapper1,
4071505,amadeo,pollo,desperados,lovestory,marcopolo,mumbles,familyguy,kimchee,marcio,support1,tekila,shygirl1,trekkie,submissi,ilaria,salam,loveu,wildstar,master69,sales1,netware,homer2,arseniy,gerrity1,raspberr,atreyu,stick1,aldric,tennis12,matahari,alohomora,dicanio,michae1,michaeld,
666111,luvbug,boyscout,esmerald,mjordan,admiral1,steamboa,
616913,ybhdfyf,
557711,
555999,sunray,apokalipsis,theroc,bmw330,buzzy,chicos,lenusik,shadowma,eagles05,
444222,peartree,qqq123,sandmann,spring1,
430799,phatass,andi03,binky1,arsch,bamba,kenny123,fabolous,loser123,poop12,maman,phobos,tecate,myxworld4,metros,cocorico,nokia6120,johnny69,hater,spanked,
313233,markos,love2011,mozart1,viktoriy,reccos,
331234,hornyone,vitesse,
1um
83z,
55555q,proline,v12345,skaven,alizee,bimini,fenerbahce,
543216,zaqqaz,poi123,stabilo,brownie1,
1qwerty1,dinesh,baggins1,
1234567t,davidkin,friend1,lietuva,octopuss,spooks,
12345qq,myshit,buttface,paradoxx,pop123,golfin,sweet69,rfghbp,sambuca,kayak1,bogus1,girlz,dallas12,millers,
123456zx,operatio,pravda,eternal1,chase123,moroni,proust,blueduck,harris1,redbarch,
996699,
1010101,mouche,millenni,
1123456,score1,
1234565,
1234576,eae21157,dave12,pussyy,gfif1991,
1598741,hoppy,darrian,snoogins,fartface,ichbins,vfkbyrf,rusrap,
2741001,fyfrjylf,aprils,favre,thisis,bannana,serval,wiggum,satsuma,matt123,ivan123,gulmira,
123zxc123,oscar2,acces,annie2,dragon0,emiliano,allthat,pajaro,amandine,rawiswar,sinead,tassie,karma1,piggys,nokias,orions,origami,type40,mondo,ferrets,monker,biteme2,gauntlet,arkham,ascona,ingram01,klem1,quicksil,bingo123,blue66,plazma,onfire,shortie,spjfet,
123963,thered,fire777,lobito,vball,
1chicken,moosehea,elefante,babe23,jesus12,parallax,elfstone,number5,shrooms,freya,hacker1,roxette,snoops,number7,fellini,dtlmvf,chigger,mission1,mitsubis,kannan,whitedog,james01,ghjgecr,rfnfgekmnf,everythi,getnaked,prettybo,sylvan,chiller,carrera4,cowbo,biochem,azbuka,qwertyuiop1,midnight1,informat,audio1,alfred1,
0range,sucker1,scott2,russland,
1eagle,torben,djkrjlfd,rocky6,maddy1,bonobo,portos,chrissi,xjznq5,dexte,vdlxuc,teardrop,pktmxr,iamtheone,danijela,eyphed,suzuki1,etvww4,redtail,ranger11,mowerman,asshole2,coolkid,adriana1,bootcamp,longcut,evets,npyxr5,bighurt,bassman1,stryder,giblet,nastja,blackadd,topflite,wizar,cumnow,technolo,bassboat,bullitt,kugm7b,maksimus,wankers,mine12,sunfish,pimpin1,shearer9,user1,vjzgjxnf,tycobb,
80070633pc,stanly,vitaly,shirley1,cinzia,carolyn1,angeliqu,teamo,qdarcv,aa123321,ragdoll,bonit,ladyluck,wiggly,vitara,jetbalance,
12345600,ozzman,dima12345,mybuddy,shilo,satan66,erebus,warrio,
090808qwe,stupi,bigdan,paul1234,chiapet,brooks1,philly1,dually,gowest,farmer1,
1qa2ws3ed4rf,alberto1,beachboy,barne,aa12345,aliyah,radman,benson1,dfkthbq,highball,bonou2,i81u812,workit,darter,redhook,csfbr5yy,buttlove,episode1,ewyuza,porthos,lalal,abcd12,papero,toosexy,keeper1,silver7,jujitsu,corset,pilot123,simonsay,pinggolf,katerinka,kender,drunk1,fylhjvtlf,rashmi,nighthawk,maggy,juggernaut,larryb,cabibble,fyabcf,
247365,gangstar,jaybee,verycool,
123456789qw,forbidde,prufrock,
12345zxc,malaika,blackbur,docker,filipe,koshechka,gemma1,djamaal,dfcbkmtdf,gangst,
9988aa,ducks1,pthrfkj,puertorico,muppets,griffins,whippet,sauber,timofey,larinso,
123456789zxc,quicken,qsefth,liteon,headcase,bigdadd,zxc321,maniak,jamesc,bassmast,bigdogs,
1girls,
123xxx,trajan,lerochka,noggin,mtndew,
04975756,domin,wer123,fumanchu,lambada,thankgod,june22,kayaking,patchy,summer10,timepass,poiu1234,kondor,kakka,lament,zidane10,
686xqxfg,l8v53x,caveman1,nfvthkfy,holymoly,pepita,alex1996,mifune,fighter1,asslicker,jack22,abc123abc,zaxxon,midnigh,winni,psalm23,punky,monkey22,password13,mymusic,justyna,annushka,lucky5,briann,
495rus19,withlove,almaz,supergir,miata,bingbong,bradpitt,kamasutr,yfgjktjy,vanman,pegleg,amsterdam1,
123a321,letmein9,shivan,korona,bmw520,annette1,scotsman,gandal,welcome12,sc00by,qpwoei,fred69,m1sf1t,hamburg1,
1access,dfkmrbhbz,excalibe,boobies1,fuckhole,karamel,starfuck,star99,breakfas,georgiy,ywvxpz,smasher,fatcat1,allanon,
12345n,coondog,whacko,avalon1,scythe,saab93,timon,khorne,atlast,nemisis,brady12,blenheim,
52678677,mick7278,
9skw5g,fleetwoo,ruger1,kissass,pussy7,scruff,
12345l,bigfun,vpmfsz,yxkck878,evgeny,
55667788,lickher,foothill,alesis,poppies,
77777778,californi,mannie,bartjek,qhxbij,thehulk,xirt2k,angelo4ek,rfkmrekznjh,tinhorse,
1david,sparky12,night1,luojianhua,bobble,nederland,rosemari,travi,minou,ciscokid,beehive,
565hlgqo,alpine1,samsung123,trainman,xpress,logistic,vw198m2n,hanter,zaqwsx123,qwasz,mariachi,paska,kmg365,kaulitz,sasha12,north1,polarbear,mighty1,makeksa11,
123456781,one4all,gladston,notoriou,polniypizdec110211,gosia,grandad,xholes,timofei,invalidp,speaker1,zaharov,maggiema,loislane,gonoles,br5499,discgolf,kaskad,snooper,newman1,belial,demigod,vicky1,pridurok,alex1990,tardis1,cruzer,hornie,sacramen,babycat,burunduk,mark69,oakland1,me1234,gmctruck,extacy,sexdog,putang,poppen,billyd,
1qaz2w,loveable,gimlet,azwebitalia,ragtop,
198500,qweas,mirela,rock123,
11bravo,sprewell,tigrenok,jaredleto,vfhbif,blue2,rimjob,catwalk,sigsauer,loqse,doromich,jack01,lasombra,jonny5,newpassword,profesor,garcia1,
123as123,croucher,demeter,
4_life,rfhfvtkm,superman2,rogues,assword1,russia1,jeff1,mydream,z123456789,rascal1,darre,kimberl,pickle1,ztmfcq,ponchik,lovesporn,hikari,gsgba368,pornoman,chbjun,choppy,diggity,nightwolf,viktori,camar,vfhecmrf,alisa1,minstrel,wishmaster,mulder1,aleks,gogirl,gracelan,
8womys,highwind,solstice,dbrnjhjdyf,nightman,pimmel,beertje,ms6nud,wwfwcw,fx3tuo,poopface,asshat,dirtyd,jiminy,luv2fuck,ptybnxtvgbjy,dragnet,pornogra,
10inch,scarlet1,guido1,raintree,v123456,
1aaaaaaa,maxim1935,hotwater,gadzooks,playaz,harri,brando1,defcon1,ivanna,
123654a,arsenal2,candela,nt5d27,jaime1,duke1,burton1,allstar1,dragos,newpoint,albacore,
1236987z,verygoodbot,
1wildcat,fishy1,ptktysq,chris11,puschel,itdxtyrj,
7kbe9d,serpico,jazzie,
1zzzzz,kindbuds,wenef45313,
1compute,tatung,sardor,gfyfcjybr,test99,toucan,meteora,lysander,asscrack,jowgnx,hevnm4,suckthis,masha123,karinka,marit,oqglh565,dragon00,vvvbbb,cheburashka,vfrfrf,downlow,unforgiven,p3e85tr,kim123,sillyboy,gold1,golfvr6,quicksan,irochka,froglegs,shortsto,caleb1,tishka,bigtitts,smurfy,bosto,dropzone,nocode,jazzbass,digdug,green7,saltlake,therat,dmitriev,lunita,deaddog,summer0,
1212qq,bobbyg,mty3rh,isaac1,gusher,helloman,sugarbear,corvair,extrem,teatime,tujazopi,titanik,efyreg,jo9k2jw2,counchac,tivoli,utjvtnhbz,bebit,jacob6,clayton1,incubus1,flash123,squirter,dima2010,cock1,rawks,komatsu,forty2,
98741236,cajun1,madelein,mudhoney,magomed,q111111,qaswed,consense,
12345b,bakayaro,silencer,zoinks,bigdic,werwolf,pinkpuss,
96321478,alfie1,ali123,sarit,minette,musics,chato,iaapptfcor,cobaka,strumpf,datnigga,sonic123,yfnecbr,vjzctvmz,pasta1,tribbles,crasher,htlbcrf,
1tiger,shock123,bearshar,syphon,a654321,cubbies1,jlhanes,eyespy,fucktheworld,carrie1,bmw325is,suzuk,mander,dorina,mithril,hondo1,vfhnbyb,sachem,newton1,
12345x,
7777755102q,
230857z,xxxsex,scubapro,hayastan,spankit,delasoul,searock6,fallout3,nilrem,
24681357,pashka,voluntee,pharoh,willo,india1,badboy69,roflmao,gunslinger,lovergir,mama12,melange,
640xwfkv,chaton,darkknig,bigman1,aabbccdd,harleyd,birdhouse,giggsy,hiawatha,tiberium,joker7,hello1234,sloopy,tm371855,greendog,solar1,bignose,djohn11,espanol,oswego,iridium,kavitha,pavell,mirjam,cyjdsvujljv,alpha5,deluge,hamme,luntik,turismo,stasya,kjkbnf,caeser,schnecke,tweety1,tralfaz,lambrett,prodigy1,trstno1,pimpshit,werty1,karman,bigboob,pastel,blackmen,matthew8,moomin,q1w2e,gilly,primaver,jimmyg,house2,elviss,
15975321,
1jessica,monaliza,salt55,vfylfhbyrf,harley11,tickleme,murder1,nurgle,kickass1,theresa1,fordtruck,pargolf,managua,inkognito,sherry1,gotit,friedric,metro2033,slk230,freeport,cigarett,
492529,vfhctkm,thebeach,twocats,bakugan,yzerman1,charlieb,motoko,skiman,
1234567w,pussy3,love77,asenna,buffie,
260zntpc,kinkos,access20,mallard1,fuckyou69,monami,rrrrr1,bigdog69,mikola,
1boomer,godzila,ginger2,dima2000,skorpion39,dima1234,hawkdog79,warrior2,ltleirf,supra1,jerusale,monkey01,
333z333,
666888,kelsey1,w8gkz2x1,fdfnfh,msnxbi,qwe123rty,mach1,monkey3,
123456789qq,c123456,nezabudka,barclays,nisse,dasha1,
12345678987654321,dima1993,oldspice,frank2,rabbitt,prettyboy,ov3ajy,iamthema,kawasak,banjo1,gtivr6,collants,gondor,hibees,cowboys2,codfish,buster2,purzel,rubyred,kayaker,bikerboy,qguvyt,masher,sseexx,kenshiro,moonglow,semenova,rosari,eduard1,deltaforce,grouper,bongo1,tempgod,
1taylor,goldsink,qazxsw1,
1jesus,m69fg2w,maximili,marysia,husker1,kokanee,sideout,googl,south1,plumber1,trillian,
00001,
1357900,farkle,
1xxxxx,pascha,emanuela,bagheera,hound1,mylov,newjersey,swampfox,sakic19,torey,geforce,wu4etd,conrail,pigman,martin2,ber02,nascar2,angel69,barty,kitsune,cornet,yes90125,goomba,daking,anthea,sivart,weather1,ndaswf,scoubidou,masterchief,rectum,
3364068,oranges1,copter,
1samanth,eddies,mimoza,ahfywbz,celtic88,
86mets,applemac,amanda11,taliesin,
1angel,imhere,london11,bandit12,killer666,beer1,
06225930,psylocke,james69,schumach,
24pnz6kc,endymion,wookie1,poiu123,birdland,smoochie,lastone,rclaki,olive1,pirat,thunder7,chris69,rocko,
151617,djg4bb4b,lapper,ajcuivd289,colole57,shadow7,dallas21,ajtdmw,executiv,dickies,omegaman,jason12,newhaven,aaaaaas,pmdmscts,s456123789,beatri,applesauce,levelone,strapon,benladen,creaven,ttttt1,saab95,f123456,pitbul,
54321a,sex12345,robert3,atilla,mevefalkcakk,
1johnny,veedub,lilleke,nitsuj,
5t6y7u8i,teddys,bluefox,nascar20,vwjetta,buffy123,playstation3,loverr,qweasd12,lover2,telekom,benjamin1,alemania,neutrino,rockz,valjean,testicle,trinity3,realty,firestarter,
794613852,ardvark,guadalup,philmont,arnold1,holas,zw6syj,birthday299,dover1,sexxy1,gojets,
741236985,cance,blue77,xzibit,qwerty88,komarova,qweszxc,footer,rainger,silverst,ghjcnb,catmando,tatooine,
31217221027711,amalgam,
69dude,qwerty321,roscoe1,
74185,cubby,alfa147,perry1,darock,katmandu,darknight,knicks1,freestuff,
45454,kidman,
4tlved,axlrose,cutie1,quantum1,joseph10,ichigo,pentium3,rfhectkm,rowdy1,woodsink,justforfun,sveta123,pornografia,mrbean,bigpig,tujheirf,delta9,portsmou,hotbod,kartal,
10111213,fkbyf001,pavel1,pistons1,necromancer,verga,c7lrwu,doober,thegame1,hatesyou,sexisfun,
1melissa,tuczno18,bowhunte,gobama,scorch,campeon,bruce2,fudge1,herpderp,bacon1,redsky,blackeye,
19966991,
19992000,ripken8,masturba,
34524815,primax,paulina1,vp6y38,
427cobra,
4dwvjj,dracon,fkg7h4f3v6,longview,arakis,panama1,honda2,lkjhgfdsaz,razors,steels,fqkw5m,dionysus,mariajos,soroka,enriqu,nissa,barolo,king1234,hshfd4n279,holland1,flyer1,tbones,
343104ky,modems,tk421,ybrbnrf,pikapp,sureshot,wooddoor,florida2,mrbungle,vecmrf,catsdogs,axolotl,nowayout,francoi,chris21,toenail,hartland,asdjkl,nikkii,onlyyou,buckskin,fnord,flutie,holen1,rincewind,lefty1,ducky1,
199000,fvthbrf,redskin1,ryno23,lostlove,
19mtpgam19,abercrom,benhur,jordan11,roflcopter,ranma,phillesh,avondale,igromania,p4ssword,jenny123,tttttt1,spycams,cardigan,
2112yyz,sleepy1,paris123,mopars,lakers34,hustler1,james99,matrix3,popimp,
12pack,eggbert,medvedev,testit,performa,logitec,marija,sexybeast,supermanboy,iwantit,rjktcj,jeffer,svarog,halo123,whdbtp,nokia3230,heyjoe,marilyn1,speeder,ibxnsm,prostock,bennyboy,charmin,codydog,parol999,ford9402,jimmer,crayola,
159357258,alex77,joey1,cayuga,phish420,poligon,specops,tarasova,caramelo,draconis,dimon,cyzkhw,june29,getbent,
1guitar,jimjam,dictiona,shammy,flotsam,
0okm9ijn,crapper,technic,fwsadn,rhfdxtyrj,zaq11qaz,anfield1,
159753q,curious1,hip-hop,
1iiiii,gfhjkm2,cocteau,liveevil,friskie,crackhead,b1afra,elektrik,lancer1,b0ll0cks,jasond,z1234567,tempest1,alakazam,asdfasd,duffy1,oneday,dinkle,qazedctgb,kasimir,happy7,salama,hondaciv,nadezda,andretti,cannondale,sparticu,znbvjd,blueice,money01,finster,eldar,moosie,pappa,delta123,neruda,bmw330ci,jeanpaul,malibu1,alevtina,sobeit,travolta,fullmetal,enamorad,mausi,boston12,greggy,smurf1,ratrace,ichiban,ilovepus,davidg,wolf69,villa1,cocopuff,football12,starfury,zxc12345,forfree,fairfiel,dreams1,tayson,mike2,dogday,hej123,oldtimer,sanpedro,clicker,mollycat,roadstar,golfe,lvbnhbq1,topdevice,a1b2c,sevastopol,calli,milosc,fire911,pink123,team3x,nolimit5,snickers1,annies,
09877890,jewel1,steve69,justin11,autechre,killerbe,browncow,slava1,christer,fantomen,redcloud,elenberg,beautiful1,passw0rd1,nazira,advantag,cockring,chaka,rjpzdrf,
99941,az123456,biohazar,energie,bubble1,bmw323,tellme,printer1,glavine,
1starwar,coolbeans,april17,carly1,quagmire,admin2,djkujuhfl,pontoon,texmex,carlos12,thermo,vaz2106,nougat,bob666,
1hockey,
1john,cricke,qwerty10,twinz,totalwar,underwoo,tijger,lildevil,
123q321,germania,freddd,
1scott,beefy,
5t4r3e2w1q,fishbait,nobby,hogger,dnstuff,jimmyc,redknapp,flame1,tinfloor,balla,nfnfhby,yukon1,vixens,batata,danny123,
1zxcvbnm,gaetan,homewood,greats,tester1,green99,
1fucker,sc0tland,starss,glori,arnhem,goatman,
1234asd,supertra,bill123,elguapo,sexylegs,jackryan,usmc69,innow,roaddog,alukard,winter11,crawler,gogiants,rvd420,alessandr,homegrow,gobbler,esteba,valeriy,happy12,
1joshua,hawking,sicnarf,waynes,iamhappy,bayadera,august2,sashas,gotti,dragonfire,pencil1,halogen,borisov,bassingw,
15975346,zachar,sweetp,soccer99,sky123,flipyou,spots3,xakepy,cyclops1,dragon77,rattolo58,motorhea,piligrim,helloween,dmb2010,supermen,shad0w,eatcum,sandokan,pinga,ufkfrnbrf,roksana,amista,pusser,sony1234,azerty1,
1qasw2,ghbdt,q1w2e3r4t5y6u7i8,ktutylf,brehznev,zaebali,shitass,creosote,gjrtvjy,
14938685,naughtyboy,pedro123,
21crack,maurice1,joesakic,nicolas1,matthew9,lbyfhf,elocin,hfcgbplzq,pepper123,tiktak,mycroft,ryan11,firefly1,arriva,cyecvevhbr,loreal,peedee,jessica8,lisa01,anamari,pionex,ipanema,airbag,frfltvbz,
123456789aa,epwr49,casper12,sweethear,sanandreas,wuschel,cocodog,france1,
119911,redroses,erevan,xtvgbjy,bigfella,geneve,volvo850,evermore,amy123,moxie,celebs,geeman,underwor,haslo1,joy123,hallow,chelsea0,
12435687,abarth,
12332145,tazman1,roshan,yummie,genius1,chrisd,ilovelife,seventy7,qaz1wsx2,rocket88,gaurav,bobbyboy,tauchen,roberts1,locksmit,masterof,www111,d9ungl,volvos40,asdasd1,golfers,jillian1,
7xm5rq,arwpls4u,gbhcf2,elloco,football2,muerte,bob101,sabbath1,strider1,killer66,notyou,lawnboy,de7mdf,johnnyb,voodoo2,sashaa,homedepo,bravos,nihao123,braindea,weedhead,rajeev,artem1,camille1,rockss,bobbyb,aniston,frnhbcf,oakridge,biscayne,cxfcnm,dressage,jesus3,kellyann,king69,juillet,holliste,h00ters,ripoff,
123645,
1999ar,eric12,
123777,tommi,dick12,bilder,chris99,rulezz,getpaid,chicubs,ender1,byajhvfnbrf,milkshak,sk8board,freakshow,antonella,monolit,shelb,hannah01,masters1,pitbull1,
1matthew,luvpussy,agbdlcid,panther2,alphas,euskadi,
8318131,ronnie1,
7558795,sweetgirl,cookie59,sequoia,
5552555,ktyxbr,
4500455,money7,severus,shinobu,dbityrf,phisig,rogue2,fractal,redfred,sebastian1,nelli,b00mer,cyberman,zqjphsyf6ctifgu,oldsmobile,redeemer,pimpi,lovehurts,
1slayer,black13,rtynfdh,airmax,g00gle,
1panther,artemon,nopasswo,fuck1234,luke1,trinit,
666000,ziadma,oscardog,davex,hazel1,isgood,demond,james5,construc,
555551,january2,m1911a1,flameboy,merda,nathan12,nicklaus,dukester,hello99,scorpio7,leviathan,dfcbktr,pourquoi,vfrcbv123,shlomo,rfcgth,rocky3,ignatz,ajhneyf,roger123,squeek,
4815162342a,biskit,mossimo,soccer21,gridlock,lunker,popstar,ghhh47hj764,chutney,nitehawk,vortec,gamma1,codeman,dragula,kappasig,rainbow2,milehigh,blueballs,ou8124me,rulesyou,collingw,mystere,aster,astrovan,firetruck,fische,crawfish,hornydog,morebeer,tigerpaw,radost,
144000,
1chance,
1234567890qwe,gracie1,myopia,oxnard,seminoles,evgeni,edvard,partytim,domani,tuffy1,jaimatadi,blackmag,kzueirf,peternor,mathew1,maggie12,henrys,k1234567,fasted,pozitiv,cfdtkbq,jessica7,goleafs,bandito,girl78,sharingan,skyhigh,bigrob,zorros,poopers,oldschoo,pentium2,gripper,norcal,kimba,artiller,moneymak,
00197400,
272829,shadow1212,thebull,handbags,all4u2c,bigman2,civics,godisgoo,section8,bandaid,suzanne1,zorba,
159123,racecars,i62gbq,rambo123,ironroad,johnson2,knobby,twinboys,sausage1,kelly69,enter2,rhjirf,yessss,james12,anguilla,boutit,iggypop,vovochka,
06060,budwiser,romuald,meditate,good1,sandrin,herkules,lakers8,honeybea,
11111111a,miche,rangers9,lobster1,seiko,belova,midcon,mackdadd,bigdaddy1,daddie,sepultur,freddy12,damon1,stormy1,hockey2,bailey12,hedimaptfcor,dcowboys,sadiedog,thuggin,horny123,josie1,nikki2,beaver69,peewee1,mateus,viktorija,barrys,cubswin1,matt1234,timoxa,rileydog,sicilia,luckycat,candybar,julian1,abc456,pussylip,phase1,acadia,catty,
246800,evertonf,bojangle,qzwxec,nikolaj,fabrizi,kagome,noncapa0,marle,popol,hahaha1,cossie,carla10,diggers,spankey,sangeeta,cucciolo,breezer,starwar1,cornholio,rastafari,spring99,yyyyyyy1,webstar,
72d5tn,sasha1234,inhouse,gobuffs,civic1,redstone,
234523,minnie1,rivaldo,angel5,sti2000,xenocide,
11qq11,
1phoenix,herman1,holly123,tallguy,sharks1,madri,superbad,ronin,jalal123,hardbody,
1234567r,assman1,vivahate,buddylee,
38972091,bonds25,
40028922,qrhmis,wp2005,ceejay,pepper01,
51842543,redrum1,renton,varadero,tvxtjk7r,vetteman,djhvbrc,curly1,fruitcak,jessicas,maduro,popmart,acuari,dirkpitt,buick1,bergerac,golfcart,pdtpljxrf,hooch1,dudelove,d9ebk7,
123452000,afdjhbn,greener,
123455432,parachut,mookie12,
123456780,jeepcj5,potatoe,sanya,qwerty2010,waqw3p,gotika,freaky1,chihuahu,buccanee,ecstacy,crazyboy,slickric,blue88,fktdnbyf,
2004rj,delta4,
333222111,calient,ptbdhw,
1bailey,blitz1,sheila1,master23,hoagie,pyf8ah,orbita,daveyboy,prono1,delta2,heman,
1horny,tyrik123,ostrov,md2020,herve,rockfish,el546218,rfhbyjxrf,chessmaster,redmoon,lenny1,
215487,tomat,guppy,amekpass,amoeba,my3girls,nottingh,kavita,natalia1,puccini,fabiana,
8letters,romeos,netgear,casper2,taters,gowings,iforgot1,pokesmot,pollit,lawrun,petey1,rosebuds,
007jr,gthtcnhjqrf,k9dls02a,neener,azertyu,duke11,manyak,tiger01,petros,supermar,mangas,twisty,spotter,takagi,dlanod,qcmfd454,tusymo,zz123456,chach,navyblue,gilbert1,
2kash6zq,avemaria,
1hxboqg2s,viviane,lhbjkjubz2957704,nowwowtg,
1a2b3c4,m0rn3,kqigb7,superpuper,juehtw,gethigh,theclown,makeme,pradeep,sergik,deion21,nurik,devo2706,nbvibt,roman222,kalima,nevaeh,martin7,anathema,florian1,tamwsn3sja,dinmamma,
133159,
123654q,slicks,pnp0c08,yojimbo,skipp,kiran,pussyfuck,teengirl,apples12,myballs,angeli,
1234a,
125678,opelastra,blind1,armagedd,fish123,pitufo,chelseaf,thedevil,nugget1,cunt69,beetle1,carter15,apolon,collant,password00,fishboy,djkrjdf,deftone,celti,three11,cyrus1,lefthand,skoal1,ferndale,aries1,fred01,roberta1,chucks,cornbread,lloyd1,icecrea,cisco123,newjerse,vfhrbpf,passio,volcom1,rikimaru,yeah11,djembe,facile,a1l2e3x4,batman7,nurbol,lorenzo1,monica69,blowjob1,
998899,spank1,
233391,n123456,
1bear,bellsout,
999998,celtic67,sabre1,putas,y9enkj,alfabeta,heatwave,honey123,hard4u,insane1,xthysq,magnum1,lightsaber,
123qweqwe,fisher1,pixie1,precios,benfic,thegirls,bootsman,
4321rewq,nabokov,hightime,djghjc,
1chelsea,junglist,august16,t3fkvkmj,
1232123,lsdlsd12,chuckie1,pescado,granit,toogood,cathouse,natedawg,bmw530,
123kid,hajime,
198400,engine1,wessonnn,kingdom1,novembre,
1rocks,kingfisher,qwerty89,jordan22,zasranec,megat,sucess,installutil,fetish01,yanshi1982,
1313666,
1314520,clemence,wargod,time1,newzealand,snaker,
13324124,cfrehf,hepcat,mazahaka,bigjay,denisov,eastwest,
1yellow,mistydog,cheetos,
1596357,ginger11,mavrik,bubby1,bhbyf,pyramide,giusepp,luthien,honda250,andrewjackie,kentavr,lampoon,zaq123wsx,sonicx,davidh,
1ccccc,gorodok,windsong,programm,blunt420,vlad1995,zxcvfdsa,tarasov,mrskin,sachas,mercedes1,koteczek,rawdog,honeybear,stuart1,kaktys,richard7,
55555n,azalia,hockey10,scouter,francy,
1xxxxxx,julie456,tequilla,penis123,schmoe,tigerwoods,
1ferrari,popov,snowdrop,matthieu,smolensk,cornflak,jordan01,love2000,
23wesdxc,kswiss,anna2000,geniusnet,baby2000,
33ds5x,waverly,onlyone4,networkingpe,raven123,blesse,gocards,wow123,pjflkork,juicey,poorboy,freeee,billybo,shaheen,zxcvbnm.,berlit,truth1,gepard,ludovic,gunther1,bobby2,bob12345,sunmoon,septembr,bigmac1,bcnjhbz,seaking,all4u,
12qw34er56ty,bassie,nokia5228,
7355608,sylwia,charvel,billgate,davion,chablis,catsmeow,kjiflrf,amylynn,rfvbkkf,mizredhe,handjob,jasper12,erbol,solara,bagpipe,biffer,notime,erlan,
8543852,sugaree,oshkosh,fedora,bangbus,
5lyedn,longball,teresa1,bootyman,aleksand,qazwsxedc12,nujbhc,tifosi,zpxvwy,lights1,slowpoke,tiger12,kstate,password10,alex69,collins1,
9632147,doglover,baseball2,security1,grunts,orange2,godloves,
213qwe879,julieb,
1qazxsw23edcvfr4,noidea,
8uiazp,betsy1,junior2,parol123,
123456zz,piehonkii,kanker,bunky,hingis,reese1,qaz123456,sidewinder,tonedup,footsie,blackpoo,jalapeno,mummy1,always1,josh1,rockyboy,plucky,chicag,nadroj,blarney,blood123,wheaties,packer1,ravens1,mrjones,gfhjkm007,anna2010,awatar,guitar12,hashish,scale1,tomwaits,amrita,fantasma,rfpfym,pass2,tigris,bigair,slicker,sylvi,shilpa,cindylou,archie1,bitches1,poppys,ontime,horney1,camaroz28,alladin,bujhm,cq2kph,alina1,wvj5np,
1211123a,tetons,scorelan,concordi,morgan2,awacs,shanty,tomcat14,andrew123,bear69,vitae,fred99,chingy,octane,belgario,fatdaddy,rhodan,password23,sexxes,boomtown,joshua01,war3demo,my2kids,buck1,hot4you,monamour,
12345aa,yumiko,parool,carlton1,neverland,rose12,right1,sociald,grouse,brandon0,cat222,alex00,civicex,bintang,malkav,arschloc,dodgeviper,qwerty666,goduke,dante123,boss1,ontheroc,corpsman,love14,uiegu451,hardtail,irondoor,ghjrehfnehf,
36460341,konijn,h2slca,kondom25,
123456ss,cfytxrf,btnjey,nando,freemail,comander,natas666,siouxsie,hummer1,biomed,dimsum,yankees0,diablo666,lesbian1,pot420,jasonm,glock23,jennyb,itsmine,lena2010,whattheh,beandip,abaddon,kishore,signup,apogee,biteme12,suzieq,vgfun4,iseeyou,rifleman,qwerta,
4pussy,hawkman,guest1,june17,dicksuck,bootay,cash12,bassale,ktybyuhfl,leetch,nescafe,
7ovtgimc,clapton1,auror,boonie,tracker1,john69,bellas,cabinboy,yonkers,silky1,ladyffesta,drache,kamil1,davidp,bad123,snoopy12,sanche,werthvfy,achille,nefertiti,gerald1,slage33,warszawa,macsan26,mason123,kotopes,welcome8,nascar99,kiril,
77778888,hairy1,monito,comicsans,
81726354,killabee,arclight,yuo67,feelme,
86753099,nnssnn,monday12,
88351132,
88889999,websters,subito,asdf12345,vaz2108,zvbxrpl,
159753456852,rezeda,multimed,noaccess,henrique,tascam,captiva,zadrot,hateyou,sophie12,
123123456,snoop1,charlie8,birmingh,hardline,libert,azsxdcf,
89172735872,rjpthju,bondar,philips1,olegnaruto,myword,yakman,stardog,banana12,
1234567890w,farout,annick,duke01,rfj422,billard,glock19,shaolin1,master10,cinderel,deltaone,manning1,biggreen,sidney1,patty1,goforit1,
766rglqy,sevendus,aristotl,armagedo,blumen,gfhfyjz,kazakov,lekbyxxx,accord1,idiota,soccer16,texas123,victoire,ololo,chris01,bobbbb,
299792458,eeeeeee1,confiden,
07070,clarks,techno1,kayley,stang1,wwwwww1,uuuuu1,neverdie,jasonr,cavscout,
481516234,mylove1,shaitan,
1qazxcvb,barbaros,
123456782000,
123wer,thissucks,
7seven,
227722,faerie,hayduke,dbacks,snorkel,zmxncbv,tiger99,unknown1,melmac,polo1234,sssssss1,
1fire,
369147,bandung,bluejean,nivram,stanle,ctcnhf,soccer20,blingbli,dirtball,alex2112,
183461,skylin,boobman,geronto,brittany1,yyz2112,gizmo69,ktrcec,dakota12,chiken,sexy11,vg08k714,bernadet,
1bulldog,beachs,hollyb,maryjoy,margo1,danielle1,chakra,alexand,hullcity,matrix12,sarenna,pablos,antler,supercar,chomsky,german1,airjordan,
545ettvy,camaron,flight1,netvideo,tootall,valheru,
481516,
1234as,skimmer,redcross,inuyash,uthvfy,
1012nw,edoardo,bjhgfi,golf11,
9379992a,lagarto,socball,boopie,krazy,.adgjmptw,gaydar,kovalev,geddylee,firstone,turbodog,loveee,
135711,badbo,trapdoor,opopop11,danny2,max2000,
526452,kerry1,leapfrog,daisy2,
134kzbip,
1andrea,playa1,peekab00,heskey,pirrello,gsewfmck,dimon4ik,puppie,chelios,
554433,hypnodanny,fantik,yhwnqc,ghbdtngjrf,anchorag,buffett1,fanta,sappho,
024680,vialli,chiva,lucylu,hashem,exbntkm,thema,
23jordan,jake11,wildside,smartie,emerica,
2wj2k9oj,ventrue,timoth,lamers,baerchen,suspende,boobis,denman85,
1adam12,otello,king12,dzakuni,qsawbbs,isgay,porno123,jam123,daytona1,tazzie,bunny123,amaterasu,jeffre,crocus,mastercard,bitchedup,chicago7,aynrand,intel1,tamila,alianza,mulch,merlin12,rose123,alcapone,mircea,loveher,joseph12,chelsea6,dorothy1,wolfgar,unlimite,arturik,qwerty3,paddy1,piramid,linda123,cooool,millie1,warlock1,forgotit,tort02,ilikeyou,avensis,loveislife,dumbass1,clint1,
2110se,drlove,olesia,kalinina,sergey123,
123423,alicia1,markova,tri5a3,media1,willia1,xxxxxxx1,beercan,smk7366,jesusislord,motherfuck,smacker,birthday5,jbaby,harley2,hyper1,a9387670a,honey2,corvet,gjmptw,rjhjkmbien,apollon,madhuri,
3a5irt,cessna17,saluki,digweed,tamia1,yja3vo,cfvlehfr,
1111111q,martyna,stimpy1,anjana,yankeemp,jupiler,idkfa,
1blue,fromv,afric,
3xbobobo,liverp00l,nikon1,amadeus1,acer123,napoleo,david7,vbhjckfdf,mojo69,percy1,pirates1,grunt1,alenushka,finbar,zsxdcf,mandy123,
1fred,timewarp,
747bbb,druids,julia123,
123321qq,spacebar,dreads,fcbarcelona,angela12,anima,christopher1,stargazer,
123123s,hockey11,brewski,marlbor,blinker,motorhead,damngood,werthrf,letmein3,moremoney,killer99,anneke,eatit,pilatus,andrew01,fiona1,maitai,blucher,zxgdqn,e5pftu,nagual,panic1,andron,openwide,alphabeta,alison1,chelsea8,fende,mmm666,
1shot2,a19l1980,
123456@,
1black,m1chael,vagner,realgood,maxxx,vekmnbr,stifler,
2509mmh,tarkan,sherzod,
1234567b,gunners1,artem2010,shooby,sammie1,p123456,piggie,abcde12345,nokia6230,moldir,piter,
1qaz3edc,frequenc,acuransx,
1star,nikeair,alex21,dapimp,ranjan,ilovegirls,anastasiy,berbatov,manso,
21436587,leafs1,
106666,angelochek,ingodwetrust,
123456aaa,deano,korsar,pipetka,thunder9,minka,himura,installdevic,
1qqqqq,digitalprodu,suckmeoff,plonker,headers,vlasov,ktr1996,windsor1,mishanya,garfield1,korvin,littlebit,azaz09,vandamme,scripto,s4114d,passward,britt1,r1chard,ferrari5,running1,
7xswzaq,falcon2,pepper76,trademan,ea53g5,graham1,volvos80,reanimator,micasa,
1234554321q,kairat,escorpion,sanek94,karolina1,kolovrat,karen2,
1qaz@wsx,racing1,splooge,sarah2,deadman1,creed1,nooner,minicoop,oceane,room112,charme,
12345ab,summer00,wetcunt,drewman,nastyman,redfire,appels,merlin69,dolfin,bornfree,diskette,ohwell,
12345678qwe,jasont,madcap,cobra2,dolemit1,whatthehell,juanit,voldemar,rocke,bianc,elendil,vtufgjkbc,hotwheels,spanis,sukram,pokerface,k1ller,freakout,dontae,realmadri,drumss,gorams,
258789,snakey,jasonn,whitewolf,befree,johnny99,pooka,theghost,kennys,vfvektxrf,toby1,jumpman23,deadlock,barbwire,stellina,alexa1,dalamar,mustanggt,northwes,tesoro,chameleo,sigtau,satoshi,george11,hotcum,cornell1,golfer12,geek01d,trololo,kellym,megapolis,pepsi2,hea666,monkfish,blue52,sarajane,bowler1,skeets,ddgirls,hfccbz,bailey01,isabella1,dreday,moose123,baobab,crushme,
000009,veryhot,roadie,meanone,mike18,henriett,dohcvtec,moulin,gulnur,adastra,angel9,western1,natura,sweetpe,dtnfkm,marsbar,daisys,frogger1,virus1,redwood1,streetball,fridolin,d78unhxq,midas,michelob,cantik,sk2000,kikker,macanudo,rambone,fizzle,
20000,peanuts1,cowpie,stone32,astaroth,dakota01,redso,mustard1,sexylove,giantess,teaparty,bobbin,beerbong,monet1,charles3,anniedog,anna1988,cameleon,longbeach,tamere,qpful542,mesquite,waldemar,
12345zx,iamhere,lowboy,canard,granp,daisymay,love33,moosejaw,nivek,ninjaman,shrike01,aaa777,
88002000600,vodolei,bambush,falcor,harley69,alphaomega,severine,grappler,bosox,twogirls,gatorman,vettes,buttmunch,chyna,excelsio,crayfish,birillo,megumi,lsia9dnb9y,littlebo,stevek,hiroyuki,firehous,master5,briley2,gangste,chrisk,camaleon,bulle,troyboy,froinlaven,mybutt,sandhya,rapala,jagged,crazycat,lucky12,jetman,wavmanuk,
1heather,beegee,negril,mario123,funtime1,conehead,abigai,mhorgan,patagoni,travel1,backspace,frenchfr,mudcat,dashenka,baseball3,rustys,
741852kk,dickme,baller23,griffey1,suckmycock,fuhrfzgc,jenny2,spuds,berlin1,justfun,icewind,bumerang,pavlusha,minecraft123,shasta1,ranger12,
123400,twisters,buthead,miked,finance1,dignity7,hello9,lvjdp383,jgthfnjh,dalmatio,paparoach,miller31,
2bornot2b,fathe,monterre,theblues,satans,schaap,jasmine2,sibelius,manon,heslo,jcnhjd,shane123,natasha2,pierrot,bluecar,iloveass,harriso,red12,london20,job314,beholder,reddawg,fuckyou!,pussylick,bologna1,austintx,ole4ka,blotto,onering,jearly,balbes,lightbul,bighorn,crossfir,lee123,prapor,
1ashley,gfhjkm22,wwe123,
09090,sexsite,marina123,jagua,witch1,schmoo,parkview,dragon3,chilango,ultimo,abramova,nautique,
2bornot2,duende,
1arthur,nightwing,surfboar,quant4307,
15s9pu03,karina1,shitball,walleye1,wildman1,whytesha,
1morgan,my2girls,polic,baranova,berezuckiy,kkkkkk1,forzima,fornow,qwerty02,gokart,suckit69,davidlee,whatnow,edgard,tits1,bayshore,
36987412,ghbphfr,daddyy,explore1,zoidberg,
5qnzjx,morgane,danilov,blacksex,mickey12,balsam,
83y6pv,sarahc,slaye,all4u2,slayer69,nadia1,rlzwp503,
4cranker,kaylie,numberon,teremok,wolf12,deeppurple,goodbeer,aaa555,
66669999,whatif,harmony1,ue8fpw,
3tmnej,
254xtpss,dusty197,wcksdypk,zerkalo,dfnheirf,motorol,digita,whoareyou,darksoul,manics,rounders,killer11,d2000lb,cegthgfhjkm,catdog1,beograd,pepsico,julius1,
123654987,softbal,killer23,weasel1,lifeson,q123456q,
444555666,bunches,andy1,darby1,service01,bear11,jordan123,amega,duncan21,yensid,lerxst,rassvet,bronco2,fortis,pornlove,paiste,
198900,asdflkjh,
1236547890,futur,eugene1,winnipeg261,fk8bhydb,seanjohn,brimston,matthe1,bitchedu,crisco,
302731,roxydog,woodlawn,volgograd,ace1210,boy4u2ownnyc,laura123,pronger,parker12,z123456z,andrew13,longlife,sarang,drogba,gobruins,soccer4,holida,espace,almira,murmansk,green22,safina,wm00022,
1chevy,schlumpf,doroth,ulises,golf99,hellyes,detlef,mydog,erkina,bastardo,mashenka,sucram,wehttam,generic1,
195000,spaceboy,lopas123,scammer,skynyrd,daddy2,titani,ficker,cr250r,kbnthfnehf,takedown,sticky1,davidruiz,desant,nremtp,painter1,bogies,agamemno,kansas1,smallfry,archi,
2b4dnvsx,
1player,saddie,peapod,
6458zn7a,qvw6n2,gfxqx686,twice2,sh4d0w3d,mayfly,
375125,phitau,yqmbevgk,
89211375759,kumar1,pfhfpf,toyboy,way2go,
7pvn4t,pass69,chipster,spoony,buddycat,diamond3,rincewin,hobie,david01,billbo,hxp4life,matild,pokemon2,dimochka,clown1,
148888,jenmt3,cuxldv,cqnwhy,cde34rfv,simone1,verynice,toobig,pasha123,mike00,maria2,lolpop,firewire,dragon9,martesana,a1234567890,birthday3,providen,kiska,pitbulls,
556655,misawa,damned69,martin11,goldorak,gunship,glory1,winxclub,sixgun,splodge,agent1,splitter,dome69,ifghjb,eliza1,snaiper,wutang36,phoenix7,
666425,arshavin,paulaner,namron,m69fg1w,qwert1234,terrys,zesyrmvu,joeman,scoots,dwml9f,
625vrobg,sally123,gostoso,symow8,pelota,c43qpul5rz,majinbuu,lithium1,bigstuff,horndog1,kipelov,kringle,
1beavis,loshara,octobe,jmzacf,
12342000,qw12qw,runescape1,chargers1,krokus,piknik,jessy,
778811,gjvbljh,
474jdvff,pleaser,misskitty,breaker1,
7f4df451,dayan,twinky,yakumo,chippers,matia,tanith,len2ski1,manni,nichol1,f00b4r,nokia3110,standart,
123456789i,shami,steffie,larrywn,chucker,john99,chamois,jjjkkk,penmouse,ktnj2010,gooners,hemmelig,rodney1,merlin01,bearcat1,
1yyyyy,
159753z,
1fffff,
1ddddd,thomas11,gjkbyrf,ivanka,f1f2f3,petrovna,phunky,conair,brian2,creative1,klipsch,vbitymrf,freek,breitlin,cecili,westwing,gohabsgo,tippmann,
1steve,quattro6,fatbob,sp00ky,rastas,
1123581,redsea,rfnmrf,jerky1,
1aaaaaa,spk666,simba123,qwert54321,
123abcd,beavis69,fyfyfc,starr1,
1236547,peanutbutter,sintra,
12345abcde,
1357246,abcde1,climbon,
755dfx,mermaids,monte1,serkan,geilesau,
777win,jasonc,parkside,imagine1,rockhead,producti,playhard,principa,spammer,gagher,escada,tsv1860,dbyjuhfl,cruiser1,kennyg,montgome,
2481632,pompano,cum123,angel6,sooty,bear01,april6,bodyhamm,pugsly,getrich,mikes,pelusa,fosgate,jasonp,rostislav,kimberly1,
128mo,dallas11,gooner1,manuel1,cocacola1,imesh,
5782790,password8,daboys,
1jones,intheend,e3w2q1,whisper1,madone,pjcgujrat,
1p2o3i,jamesp,felicida,nemrac,phikap,firecat,jrcfyjxrf,matt12,bigfan,doedel,
005500,jasonx,
1234567k,badfish,goosey,utjuhfabz,wilco,artem123,igor123,spike123,jor23dan,dga9la,v2jmsz,morgan12,avery1,dogstyle,natasa,
221195ws,twopac,oktober7,karthik,poop1,mightymo,davidr,zermatt,jehova,aezakmi1,dimwit,monkey5,serega123,qwerty111,blabl,casey22,boy123,
1clutch,asdfjkl1,hariom,bruce10,jeep95,
1smith,sm9934,karishma,bazzzz,aristo,
669e53e1,nesterov,kill666,fihdfv,
1abc2,anna1,silver11,mojoman,telefono,goeagles,sd3lpgdr,rfhfynby,melinda1,llcoolj,idteul,bigchief,rocky13,timberwo,ballers,gatekeep,kashif,hardass,anastasija,max777,vfuyjkbz,riesling,agent99,kappas,dalglish,tincan,orange3,turtoise,abkbvjy,mike24,hugedick,alabala,geolog,aziza,devilboy,habanero,waheguru,funboy,freedom5,natwest,seashore,impaler,qwaszx1,pastas,bmw535,tecktonik,mika00,jobsearc,pinche,puntang,aw96b6,
1corvett,skorpio,foundati,zzr1100,gembird,vfnhjcrby,soccer18,vaz2110,peterp,archer1,cross1,samedi,dima1992,hunter99,lipper,hotbody,zhjckfdf,ducati1,trailer1,
04325956,cheryl1,benetton,kononenko,sloneczko,rfgtkmrf,nashua,balalaika,ampere,eliston,dorsai,digge,flyrod,oxymoron,minolta,ironmike,majortom,karimov,fortun,putaria,an83546921an13,blade123,franchis,mxaigtg5,dynxyu,devlt4,brasi,terces,wqmfuh,nqdgxz,dale88,minchia,seeyou,housepen,
1apple,
1buddy,mariusz,bighouse,tango2,flimflam,nicola1,qwertyasd,tomek1,shumaher,kartoshka,bassss,canaries,redman1,
123456789as,preciosa,allblacks,navidad,tommaso,beaudog,forrest1,green23,ryjgjxrf,go4it,ironman2,badnews,butterba,
1grizzly,isaeva,rembrand,toront,
1richard,bigjon,yfltymrf,
1kitty,
4ng62t,littlejo,wolfdog,ctvtyjd,spain1,megryan,tatertot,raven69,
4809594q,tapout,stuntman,a131313,lagers,hotstuf,lfdbl11,stanley2,advokat,boloto,
7894561,dooker,adxel187,cleodog,
4play,
0p9o8i,masterb,bimota,charlee,toystory,
6820055,
6666667,crevette,
6031769,corsa,bingoo,dima1990,tennis11,samuri,avocado,melissa6,unicor,habari,metart,needsex,cockman,hernan,
3891576,
3334444,amigo1,gobuffs2,mike21,allianz,
2835493,
179355,midgard,joey123,oneluv,ellis1,towncar,shonuff,scouse,tool69,thomas19,chorizo,jblaze,lisa1,dima1999,sophia1,anna1989,vfvekbxrf,krasavica,redlegs,jason25,tbontb,katrine,eumesmo,vfhufhbnrf,
1654321,asdfghj1,motdepas,booga,doogle,
1453145,byron1,
158272,kardinal,tanne,fallen1,abcd12345,ufyljy,n12345,kucing,burberry,bodger,
1234578,februar,
1234512,nekkid,prober,harrison1,idlewild,rfnz90,foiegras,pussy21,bigstud,denzel,tiffany2,bigwill,
1234567890zzz,hello69,compute1,viper9,hellspaw,trythis,gococks,dogballs,delfi,lupine,millenia,newdelhi,charlest,basspro,
1mike,joeblack,
975310,
1rosebud,batman11,misterio,fucknut,charlie0,august11,juancho,ilonka,jigei743ks,adam1234,
889900,goonie,alicat,ggggggg1,
1zzzzzzz,sexywife,northstar,chris23,
888111,containe,trojan1,jason5,graikos,
1ggggg,
1eeeee,tigers01,indigo1,hotmale,jacob123,mishima,richard3,cjxb2014,coco123,meagain,thaman,wallst,edgewood,bundas,
1power,matilda1,maradon,hookedup,jemima,r3vi3wpass,
2004-
10-,mudman,taz123,xswzaq,emerson1,anna21,warlord1,toering,pelle,tgwdvu,masterb8,wallstre,moppel,priora,ghjcnjrdfif,yoland,
12332100,
1j9e7f6f,jazzzz,yesman,brianm,
42qwerty42,
12345698,darkmanx,nirmal,john31,bb123456,neuspeed,billgates,moguls,fj1200,hbhlair,shaun1,ghbdfn,
305pwzlr,nbu3cd,susanb,pimpdad,mangust6403,joedog,dawidek,gigante,
708090,
703751,
700007,ikalcr,tbivbn,
697769,marvi,iyaayas,karen123,jimmyboy,dozer1,e6z8jh,bigtime1,getdown,kevin12,brookly,zjduc3,nolan1,cobber,yr8wdxcq,liebe,m1garand,blah123,
616879,action1,
600000,sumitomo,albcaz,asian1,
557799,dave69,
556699,sasa123,streaker,michel1,karate1,buddy7,daulet,koks888,roadtrip,wapiti,oldguy,illini1,
1234qq,mrspock,kwiatek,buterfly,august31,jibxhq,jackin,taxicab,tristram,talisker,
446655,
444666,chrisa,freespace,vfhbfyyf,chevell,
444333,notyours,
442244,christian1,seemore,sniper12,marlin1,joker666,multik,devilish,crf450,cdfoli,eastern1,asshead,duhast,voyager2,cyberia,
1wizard,cybernet,iloveme1,veterok,karandash,
392781,looksee,diddy,diabolic,foofight,missey,herbert1,bmw318i,premier1,zsfmpv,eric1234,dun6sm,fuck11,
345543,spudman,lurker,bitem,lizzy1,ironsink,minami,
339311,s7fhs127,sterne,
332233,plankton,galax,azuywe,changepa,august25,mouse123,sikici,killer69,xswqaz,quovadis,gnomik,
033028pw,
777777a,barrakuda,spawn666,goodgod,slurp,morbius,yelnats,cujo31,norman1,fastone,earwig,aureli,wordlife,bnfkbz,yasmi,austin123,timberla,missy2,legalize,netcom,liljon,takeit,georgin,
987654321z,warbird,vitalina,all4u3,mmmmmm1,bichon,ellobo,wahoos,fcazmj,aksarben,lodoss,satnam,vasili,
197800,maarten,sam138989,
0u812,ankita,walte,prince12,anvils,bestia,hoschi,
198300,univer,jack10,ktyecbr,gr00vy,hokie,wolfman1,fuckwit,geyser,emmanue,ybrjkftd,qwerty33,karat,dblock,avocat,bobbym,womersle,
1please,nostra,dayana,billyray,alternat,iloveu1,qwerty69,rammstein1,mystikal,winne,drawde,executor,craxxxs,ghjcnjnf,
999888777,welshman,access123,
963214785,
951753852,babe69,fvcnthlfv,****me,
666999666,testing2,
199200,nintendo64,oscarr,guido8,zhanna,gumshoe,jbird,
159357456,pasca,
123452345,satan6,mithrand,fhbirf,aa1111aa,viggen,ficktjuv,radial9,davids1,rainbow7,futuro,hipho,platin,poppy123,rhenjq,fulle,rosit,chicano,scrumpy,lumpy1,seifer,uvmrysez,autumn1,xenon,susie1,
7u8i
9o
0p,gamer1,sirene,muffy1,monkeys1,kalinin,olcrackmaster,hotmove,uconn,gshock,merson,lthtdyz,pizzaboy,peggy1,pistache,pinto1,fishka,ladydi,pandor,baileys,hungwell,redboy,rookie1,amanda01,passwrd,clean1,matty1,tarkus,jabba1,bobster,beer30,solomon1,moneymon,sesamo,fred11,sunnysid,jasmine5,thebears,putamadre,workhard,flashbac,counter1,liefde,magnat,corky1,green6,abramov,lordik,univers,shortys,david3,vip123,gnarly,
1234567s,billy2,honkey,deathstar,grimmy,govinda,direktor,
12345678s,linus1,shoppin,rekbrjdf,santeria,prett,berty75,mohican,daftpunk,uekmyfhf,chupa,strats,ironbird,giants56,salisbur,koldun,summer04,pondscum,jimmyj,miata1,george3,redshoes,weezie,bartman1,
0p9o8i7u,s1lver,dorkus,
125478,omega9,sexisgood,mancow,patric1,jetta1,
074401,ghjuhtcc,gfhjk,bibble,terry2,
123213,medicin,rebel2,hen3ry,
4freedom,aldrin,lovesyou,browny,renwod,winnie1,belladon,
1house,tyghbn,blessme,rfhfrfnbwf,haylee,deepdive,booya,phantasy,gansta,cock69,
4mnveh,gazza1,redapple,structur,anakin1,manolito,steve01,poolman,chloe123,vlad1998,qazwsxe,pushit,random123,ontherocks,o236nq,brain1,dimedrol,agape,rovnogod,
1balls,knigh,alliso,love01,wolf01,flintstone,beernuts,tuffguy,isengard,highfive,alex23,casper99,rubina,getreal,chinita,italian1,airsoft,qwerty23,muffdiver,willi1,grace123,orioles1,redbull1,chino1,ziggy123,breadman,estefan,ljcneg,gotoit,logan123,wideglid,mancity1,treess,qwe123456,kazumi,qweasdqwe,oddworld,naveed,protos,towson,a801016,godislov,at_asp,bambam1,soccer5,dark123,
67vette,carlos123,hoser1,scouser,wesdxc,pelus,dragon25,pflhjn,abdula,
1freedom,policema,tarkin,eduardo1,mackdad,gfhjkm11,lfplhfgthvf,adilet,zzzzxxxx,childre,samarkand,cegthgegth,shama,fresher,silvestr,greaser,allout,plmokn,sexdrive,nintendo1,fantasy7,oleander,fe126fd,crumpet,pingzing,dionis,hipster,yfcnz,requin,calliope,jerome1,housecat,abc123456789,doghot,snake123,augus,brillig,chronic1,gfhjkbot,expediti,noisette,master7,caliban,whitetai,favorite3,lisamari,educatio,ghjhjr,saber1,zcegth,
1958proman,vtkrbq,milkdud,imajica,thehip,bailey10,hockey19,dkflbdjcnjr,j123456,bernar,aeiouy,gamlet,deltachi,endzone,conni,bcgfybz,brandi1,auckland2010,
7653ajl1,mardigra,testuser,bunko18,camaro67,
36936,greenie,
454dfmcq,
6xe8j2z4,mrgreen,ranger5,headhunt,banshee1,moonunit,zyltrc,hello3,pussyboy,stoopid,tigger11,yellow12,drums1,blue02,kils123,junkman,banyan,jimmyjam,tbbucs,sportster,badass1,joshie,braves10,lajolla,
1amanda,antani,
78787,antero,
19216801,chich,rhett32,sarahm,beloit,sucker69,corkey,nicosnn,rccola,caracol,daffyduc,bunny2,mantas,monkies,hedonist,cacapipi,ashton1,sid123,
19899891,patche,greekgod,cbr1000,leader1,
19977991,ettore,chongo,
113311,picass,cfif123,rhtfnbd,frances1,andy12,minnette,bigboy12,green69,alices,babcia,partyboy,javabean,freehand,qawsed123,xxx111,harold1,passwo,jonny1,kappa1,w2dlww3v5p,
1merlin,
222999,tomjones,jakeman,franken,markhegarty,john01,carole1,daveman,caseys,apeman,mookey,moon123,claret,titans1,residentevil,campari,curitiba,dovetail,aerostar,jackdaniels,basenji,zaq12w,glencoe,biglove,goober12,ncc170,far7766,monkey21,eclipse9,
1234567v,vanechka,aristote,grumble,belgorod,abhishek,neworleans,pazzword,dummie,sashadog,diablo11,mst3000,koala1,maureen1,jake99,isaiah1,funkster,gillian1,ekaterina20,chibears,astra123,
4me2no,winte,skippe,necro,windows9,vinograd,demolay,vika2010,quiksilver,
19371ayj,dollar1,shecky,qzwxecrv,butterfly1,merrill1,scoreland,
1crazy,megastar,mandragora,track1,dedhed,jacob2,newhope,qawsedrftgyh,shack1,samvel,gatita,shyster,clara1,telstar,office1,crickett,truls,nirmala,joselito,chrisl,lesnik,aaaabbbb,austin01,leto2010,bubbie,aaa12345,widder,
234432,salinger,mrsmith,qazsedcft,newshoes,skunks,yt1300,bmw316,arbeit,smoove,
123321qweewq,
123qazwsx,
22221111,seesaw,
0987654321a,peach1,
1029384756q,sereda,gerrard8,shit123,batcave,energy1,peterb,mytruck,peter12,alesya,tomato1,spirou,laputaxx,magoo1,omgkremidia,knight12,norton1,vladislava,shaddy,austin11,jlbyjxrf,kbdthgekm,punheta,fetish69,exploiter,roger2,manstein,gtnhjd,
32615948worms,dogbreath,ujkjdjkjvrf,vodka1,ripcord,fatrat,kotek1,tiziana,larrybir,thunder3,nbvfnb,
9kyq6fge,remembe,likemike,gavin1,shinigam,yfcnfcmz,
13245678,jabbar,vampyr,ane4ka,lollipo,ashwin,scuderia,limpdick,deagle,
3247562,vishenka,fdhjhf,alex02,volvov70,mandys,bioshock,caraca,tombraider,matrix69,jeff123,
13579135,parazit,black3,noway1,diablos,hitmen,garden1,aminor,decembe,august12,b00ger,
006900,
452073t,schach,hitman1,mariner1,vbnmrf,paint1,
742617000027,bitchboy,pfqxjyjr,
5681392,marryher,sinnet,malik1,muffin12,aninha,piolin,lady12,traffic1,cbvjyf,
6345789,june21,ivan2010,ryan123,honda99,gunny,coorslight,asd321,hunter69,
7224763,sonofgod,dolphins1,
1dolphin,pavlenko,woodwind,lovelov,pinkpant,gblfhfcbyf,hotel1,justinbiebe,vinter,jeff1234,mydogs,
1pizza,boats1,parrothe,shawshan,brooklyn1,cbrown,
1rocky,hemi426,dragon64,redwings1,porsches,ghostly,hubbahub,buttnut,b929ezzh,sorokina,flashg,fritos,b7mguk,metatron,treehous,vorpal,
8902792,marcu,free123,labamba,chiefs1,zxc123zxc,keli_14,hotti,
1steeler,money4,rakker,foxwoods,free1,ahjkjd,sidorova,snowwhit,neptune1,mrlover,trader1,nudelamb,baloo,power7,deltasig,bills1,trevo,
7gorwell,nokia6630,nokia5320,madhatte,
1cowboys,manga1,namtab,sanjar,fanny1,birdman1,adv12775,carlo1,dude1998,babyhuey,nicole11,madmike,ubvyfpbz,qawsedr,lifetec,skyhook,stalker123,toolong,robertso,ripazha,zippy123,
1111111a,manol,dirtyman,analslut,jason3,dutches,minhasenha,cerise,fenrir,jayjay1,flatbush,franka,bhbyjxrf,
26429vadim,lawntrax,
198700,fritzy,nikhil,ripper1,harami,truckman,nemvxyheqdd5oqxyxyzi,gkfytnf,bugaboo,cableman,hairpie,xplorer,movado,hotsex69,mordred,ohyeah1,patrick3,frolov,katieh,
4311111q,mochaj,presari,bigdo,
753951852,freedom4,kapitan,tomas1,
135795,sweet123,pokers,shagme,tane4ka,sentinal,ufgyndmv,jonnyb,skate123,
123456798,
123456788,very1,gerrit,damocles,dollarbi,caroline1,lloyds,pizdets,flatland,
92702689,dave13,meoff,ajnjuhfabz,achmed,madison9,
744744z,amonte,avrillavigne,elaine1,norma1,asseater,everlong,buddy23,cmgang1,trash1,mitsu,flyman,ulugbek,june27,magistr,fittan,sebora64,dingos,sleipnir,caterpil,cindys,
212121qaz,partys,dialer,gjytltkmybr,qweqaz,janvier,rocawear,lostboy,aileron,sweety1,everest1,pornman,boombox,potter1,blackdic,
44448888,eric123,
112233aa,
2502557i,novass,nanotech,yourname,x12345,indian1,
15975300,
1234567l,carla51,chicago0,coleta,cxzdsaewq,qqwweerr,marwan,deltic,hollys,qwerasd,pon32029,rainmake,nathan0,matveeva,legioner,kevink,riven,tombraid,blitzen,a54321,jackyl,chinese1,shalimar,oleg1995,beaches1,tommylee,eknock,berli,monkey23,badbob,pugwash,likewhoa,jesus2,yujyd360,belmar,shadow22,utfp5e,angelo1,minimax,pooder,cocoa1,moresex,tortue,lesbia,panthe,snoopy2,drumnbass,alway,gmcz71,
6jhwmqku,leppard,dinsdale,blair1,boriqua,money111,virtuagirl,
267605,rattlesn,
1sunshin,monica12,veritas1,newmexic,millertime,turandot,rfvxfnrf,jaydog,kakawka,bowhunter,booboo12,deerpark,erreway,taylorma,rfkbybyf,wooglin,weegee,rexdog,iamhorny,cazzo1,vhou812,bacardi1,dctktyyfz,godpasi,peanut12,bertha1,fuckyoubitch,ghosty,altavista,jertoot,smokeit,ghjcnbvtyz,fhnehxbr,rolsen,qazxcdews,maddmaxx,redrocke,qazokm,spencer2,thekiller,asdf11,
123sex,tupac1,p1234567,dbrown,
1biteme,tgo4466,
316769,sunghi,shakespe,frosty1,gucci1,arcana,bandit01,lyubov,poochy,dartmout,magpies1,sunnyd,mouseman,summer07,chester7,shalini,danbury,pigboy,dave99,deniss,harryb,ashley11,pppppp1,
01081988m,balloon1,tkachenko,bucks1,master77,pussyca,tricky1,zzxxccvv,zoulou,doomer,mukesh,iluv69,supermax,todays,thefox,don123,dontask,diplom,piglett,shiney,fahbrf,qaz12wsx,temitope,reggin,project1,buffy2,inside1,lbpfqyth,vanilla1,lovecock,u4slpwra,fylh.irf,
123211,
7ertu3ds,necroman,chalky,artist1,simpso,
4x7wjr,chaos666,lazyacres,harley99,ch33s3,marusa,eagle7,dilligas,computadora,lucky69,denwer,nissan350z,unforgiv,oddball,schalke0,aztec1,borisova,branden1,parkave,marie123,germa,lafayett,
878kckxy,
405060,cheeseca,bigwave,fred22,andreea,poulet,mercutio,psycholo,andrew88,o4izdmxu,sanctuar,newhome,milion,suckmydi,rjvgm.nth,warior,goodgame,
1qwertyuiop,
6339cndh,scorpio2,macker,southbay,crabcake,toadie,paperclip,fatkid,maddo,cliff1,rastafar,maries,twins1,geujdrf,anjela,wc4fun,dolina,mpetroff,rollout,zydeco,shadow3,pumpki,steeda,volvo240,terras,blowjo,blue2000,incognit,badmojo,gambit1,zhukov,station1,aaronb,graci,duke123,clipper1,qazxsw2,ledzeppe,kukareku,sexkitte,cinco,
007008,lakers12,a1234b,acmilan1,afhfjy,starrr,slutty3,phoneman,kostyan,bonzo1,sintesi07,ersatz,cloud1,nephilim,nascar03,rey619,kairos,
123456789e,hardon1,boeing1,juliya,hfccdtn,vgfun8,polizei,
456838,keithb,minouche,ariston,savag,
213141,clarkken,microwav,london2,santacla,campeo,qr5mx7,
464811,mynuts,bombo,
1mickey,lucky8,danger1,ironside,carter12,wyatt1,borntorun,iloveyou123,jose1,pancake1,tadmichaels,monsta,jugger,hunnie,triste,heat7777,ilovejesus,queeny,luckycharm,lieben,gordolee85,jtkirk,forever21,jetlag,skylane,taucher,neworlea,holera,
000005,anhnhoem,melissa7,mumdad,massimiliano,dima1994,nigel1,madison3,slicky,shokolad,serenit,jmh1978,soccer123,chris3,drwho,rfpzdrf,
1qasw23ed,free4me,wonka,sasquatc,sanan,maytag,verochka,bankone,molly12,monopoli,xfqybr,lamborgini,gondolin,candycane,needsome,jb007,scottie1,brigit,
0147258369,kalamazo,lololyo123,bill1234,ilovejes,lol123123,popkorn,april13,
567rntvm,downunde,charle1,angelbab,guildwars,homeworld,qazxcvbnm,superma1,dupa123,kryptoni,happyy,artyom,stormie,cool11,calvin69,saphir,konovalov,jansport,october8,liebling,druuna,susans,megans,tujhjdf,wmegrfux,jumbo1,ljb4dt7n,
012345678910,kolesnik,speculum,at4gftlw,kurgan,
93pn75,cahek0980,dallas01,godswill,fhifdby,chelsea4,jump23,barsoom,catinhat,urlacher,angel99,vidadi1,
678910,lickme69,topaz1,westend,loveone,c12345,gold12,alex1959,mamon,barney12,
1maggie,alex12345,lp2568cskt,s1234567,gjikbdctyf,anthony0,browns99,chips1,sunking,widespre,lalala1,tdutif,fucklife,master00,alino4ka,stakan,blonde1,phoebus,tenore,bvgthbz,brunos,suzjv8,uvdwgt,revenant,
1banana,veroniqu,sexfun,sp1der,
4g3izhox,isakov,shiva1,scooba,bluefire,wizard12,dimitris,funbags,perseus,hoodoo,keving,malboro,
157953,a32tv8ls,latics,animate,mossad,yejntb,karting,qmpq39zr,busdrive,jtuac3my,jkne9y,sr20dett,
4gxrzemq,keylargo,
741147,rfktylfhm,toast1,skins1,xcalibur,gattone,seether,kameron,glock9mm,julio1,delenn,gameday,tommyd,str8edge,bulls123,
66699,carlsberg,woodbird,adnama,
45auto,codyman,truck2,
1w2w3w4w,pvjegu,method1,luetdi,
41d8cd98f00b,bankai,
5432112345,
94rwpe,reneee,chrisx,melvins,
775577,sam2000,scrappy1,rachid,grizzley,margare,morgan01,winstons,gevorg,gonzal,crawdad,gfhfdjp,babilon,noneya,pussy11,barbell,easyride,c00li0,
777771,
311music,karla1,golions,
19866891,peejay,leadfoot,hfvbkm,kr9z40sy,cobra123,isotwe,grizz,sallys,****you,aaa123a,dembel,foxs14,hillcres,webman,mudshark,alfredo1,weeded,lester1,hovepark,ratface,
000777fffa,huskie,wildthing,elbarto,waikiki,masami,call911,goose2,regin,dovajb,agricola,cjytxrj,andy11,penny123,family01,a121212,
1braves,upupa68,happy100,
824655,cjlove,firsttim,kalel,redhair,dfhtymt,sliders,bananna,loverbo,fifa2008,crouton,chevy350,panties2,kolya1,alyona,hagrid,spagetti,q2w3e4r,
867530,narkoman,nhfdvfnjkju123,
1ccccccc,napolean,
0072563,allay,w8sted,wigwam,jamesk,state1,parovoz,beach69,kevinb,rossella,logitech1,celula,gnocca,canucks1,loginova,marlboro1,aaaa1,kalleanka,mester,mishutka,milenko,alibek,jersey1,peterc,
1mouse,nedved,blackone,ghfplybr,
682regkh,beejay,newburgh,ruffian,clarets,noreaga,xenophon,hummerh2,tenshi,smeagol,soloyo,vfhnby,ereiamjh,ewq321,goomie,sportin,cellphone,sonnie,jetblack,saudan,gblfhfc,matheus,uhfvjnf,alicja,jayman1,devon1,hexagon,bailey2,vtufajy,yankees7,salty1,
908070,killemal,gammas,eurocard,sydney12,tuesday1,antietam,wayfarer,beast666,
19952009sa,aq12ws,eveli,hockey21,haloreach,dontcare,xxxx1,andrea11,karlmarx,jelszo,tylerb,protools,timberwolf,ruffneck,pololo,
1bbbbb,waleed,sasami,twinss,fairlady,illuminati,alex007,sucks1,homerjay,scooter7,tarbaby,barmaley,amistad,vanes,randers,tigers12,dreamer2,goleafsg,googie,bernie1,as12345,godeep,james3,phanto,gwbush,cumlover,
2196dc,studioworks,
995511,golf56,titova,kaleka,itali,socks1,kurwamac,daisuke,hevonen,woody123,daisie,wouter,henry123,gostosa,guppie,porpoise,iamsexy,
276115,paula123,
1020315,
38gjgeuftd,rjrfrjkf,knotty,idiot1,sasha12345,matrix13,securit,radical1,ag764ks,jsmith,coolguy1,secretar,juanas,sasha1988,itout,
00000001,tiger11,
1butthea,putain,cavalo,basia1,kobebryant,
1232323,
12345asdfg,sunsh1ne,cyfqgth,tomkat,dorota,dashit,pelmen,
5t6y7u,whipit,smokeone,helloall,bonjour1,snowshoe,nilknarf,x1x2x3,lammas,
1234599,lol123456,atombomb,ironchef,noclue,alekseev,gwbush1,silver2,
12345678m,yesican,fahjlbnf,chapstic,alex95,open1,tiger200,lisichka,pogiako,cbr929,searchin,tanya123,alex1973,phil413,alex1991,dominati,geckos,freddi,silenthill,egroeg,vorobey,antoxa,dark666,shkola,apple22,rebellio,shamanking,
7f8srt,cumsucker,partagas,bill99,
22223333,arnster55,fucknuts,proxima,silversi,goblues,parcells,vfrcbvjdf,piloto,avocet,emily2,
1597530,miniskir,himitsu,pepper2,juiceman,venom1,bogdana,jujube,quatro,botafogo,mama2010,junior12,derrickh,asdfrewq,miller2,chitarra,silverfox,napol,prestigio,devil123,mm111qm,ara123,max33484,sex2000,primo1,sephan,anyuta,alena2010,viborg,verysexy,hibiscus,terps,josefin,oxcart,spooker,speciali,raffaello,partyon,vfhvtkflrf,strela,a123456z,worksuck,glasss,lomonosov,dusty123,dukeblue,
1winter,sergeeva,lala123,john22,cmc09,sobolev,bettylou,dannyb,gjkrjdybr,hagakure,iecnhbr,awsedr,pmdmsctsk,costco,alekseeva,fktrcttd,bazuka,flyingv,garuda,buffy16,gutierre,beer12,stomatolog,ernies,palmeiras,golf123,love269,n.kmgfy,gjkysqgbpltw,youare,joeboo,baksik,lifeguar,
111a111,nascar8,mindgame,dude1,neopets,frdfkfyu,june24,phoenix8,penelopa,merlin99,mercenar,badluck,mishel,bookert,deadsexy,power9,chinchil,
1234567m,alex10,skunk1,rfhkcjy,sammycat,wright1,randy2,marakesh,temppassword,elmer251,mooki,patrick0,bonoedge,
1tits,chiar,kylie1,graffix,milkman1,cornel,mrkitty,nicole12,ticketmaster,beatles4,number20,ffff1,terps1,superfre,yfdbufnjh,jake1234,flblfc,
1111qq,zanuda,jmol01,wpoolejr,polopol,nicolett,omega13,cannonba,
123456789.,sandy69,ribeye,bo243ns,marilena,bogdan123,milla,redskins1,
19733791,alias1,movie1,ducat,marzena,shadowru,
56565,coolman1,pornlover,teepee,spiff,nafanya,gateway3,fuckyou0,hasher,
34778,booboo69,staticx,hang10,qq12345,garnier,bosco123,
1234567qw,carson1,samso,
1xrg4kcq,cbr929rr,allan123,motorbik,andrew22,pussy101,miroslava,cytujdbr,camp0017,cobweb,snusmumrik,salmon1,cindy2,aliya,serendipity,co437at,tincouch,timmy123,hunter22,st1100,vvvvvv1,blanka,krondor,sweeti,nenit,kuzmich,gustavo1,bmw320i,alex2010,trees1,kyliem,essayons,april26,kumari,sprin,fajita,appletre,fghbjhb,
1green,katieb,steven2,corrado1,satelite,
1michell,
123456789c,cfkfvfylhf,acurarsx,slut543,inhere,bob2000,pouncer,k123456789,fishie,aliso,audia8,bluetick,soccer69,jordan99,fromhell,mammoth1,fighting54,mike25,pepper11,extra1,worldwid,chaise,vfr800,sordfish,almat,nofate,listopad,hellgate,dctvghbdf,jeremia,qantas,lokiju,honker,sprint1,maral,triniti,compaq3,sixsix6,married1,loveman,juggalo1,repvtyrj,zxcasdqw,
123445,whore1,
123678,monkey6,west123,warcraf,pwnage,mystery1,creamyou,ant123,rehjgfnrf,corona1,coleman1,steve121,alderaan,barnaul,celeste1,junebug1,bombshel,gretzky9,tankist,targa,cachou,vaz2101,playgolf,boneyard,strateg,romawka,iforgotit,pullup,garbage1,irock,archmage,shaft1,oceano,sadies,alvin1,
135135ab,psalm69,lmfao,ranger02,zaharova,
33334444,perkman,realman,salguod,cmoney,astonmartin,glock1,greyfox,viper99,helpm,blackdick,
46775575,family5,shazbot,dewey1,qwertyas,shivani,black22,mailman1,greenday1,
57392632,red007,stanky,sanchez1,tysons,daruma,altosax,krayzie,
85852008,
1forever,
98798798,irock.,
123456654,
142536789,ford22,brick1,michela,preciou,crazy4u,
01telemike01,nolife,concac,safety1,annie123,brunswic,destini,
123456qwer,madison0,snowball1,
137946,
1133557799,jarule,scout2,songohan,thedead,
00009999,murphy01,spycam,hirsute,aurinko,associat,
1miller,baklan,hermes1,
2183rm,martie,kangoo,shweta,yvonne1,westsid,jackpot1,rotciv,maratik,fabrika,claude1,nursultan,noentry,ytnhjufnm,electra1,ghjcnjnfr1,puneet,smokey01,integrit,bugeye,trouble2,
14071789,paul01,omgwtf,dmh415,ekilpool,yourmom1,moimeme,sparky11,boludo,ruslan123,kissme1,demetrio,appelsin,asshole3,raiders2,bunns,fynjybj,billygoa,p030710p$e4o,macdonal,
248ujnfk,acorns,schmidt1,sparrow1,vinbylrj,weasle,jerom,ycwvrxxh,skywalk,gerlinde,solidus,postal1,poochie1,
1charles,rhianna,terorist,rehnrf,omgwtfbbq,assfucke,deadend,zidan,jimboy,vengence,maroon5,
7452tr,dalejr88,sombra,anatole,elodi,amazonas,
147789,q12345q,gawker1,juanma,kassidy,greek1,bruces,bilbob,mike44,
0o9i8u7y6t,kaligula,agentx,familie,anders1,pimpjuice,
0128um,birthday10,lawncare,hownow,grandorgue,juggerna,scarfac,kensai,swatteam,
123four,motorbike,repytxbr,other1,celicagt,pleomax,gen0303,godisgreat,icepick,lucifer666,heavy1,tea4two,forsure,
02020,shortdog,webhead,chris13,palenque,
3techsrl,knights1,orenburg,prong,nomarg,wutang1,
80637852730,laika,iamfree,
12345670,pillow1,
12343412,bigears,peterg,stunna,rocky5,
12123434,damir,feuerwehr,
7418529630,danone,yanina,valenci,andy69,
111222q,silvia1,
1jjjjj,loveforever,passwo1,stratocaster,
8928190a,motorolla,lateralu,ujujkm,chubba,ujkjdf,signon,
123456789zx,serdce,stevo,wifey200,ololo123,popeye1,
1pass,central1,melena,luxor,nemezida,poker123,ilovemusic,qaz1234,noodles1,lakeshow,amarill,ginseng,billiam,trento,
321cba,fatback,soccer33,master13,marie2,newcar,bigtop,dark1,camron,nosgoth,
155555,biglou,redbud,jordan7,
159789,diversio,actros,dazed,drizzit,hjcnjd,wiktoria,justic,gooses,luzifer,darren1,chynna,tanuki,
11335577,icculus,boobss,biggi,firstson,ceisi123,gatewa,hrothgar,jarhead1,happyjoy,felipe1,bebop1,medman,athena1,boneman,keiths,djljgfl,dicklick,russ120,mylady,zxcdsa,rock12,bluesea,kayaks,provista,luckies,smile4me,bootycal,enduro,
123123f,heartbre,ern3sto,apple13,bigpappa,fy.njxrf,bigtom,cool69,perrito,quiet1,puszek,cious,cruella,temp1,david26,alemap,aa123123,teddies,tricolor,smokey12,kikiriki,mickey01,robert01,super5,ranman,stevenso,deliciou,money777,degauss,mozar,susanne1,asdasd12,shitbag,mommy123,wrestle1,imfree,fuckyou12,barbaris,florent,ujhijr,f8yruxoj,tefjps,anemone,toltec,
2gether,left4dead2,ximen,gfkmvf,dunca,emilys,diana123,
16473a,mark01,bigbro,annarbor,nikita2000,
11aa11,tigres,llllll1,loser2,fbi11213,jupite,qwaszxqw,macabre,
123ert,rev2000,mooooo,klapaucius,bagel1,chiquit,iyaoyas,bear101,irocz28,vfktymrfz,smokey2,love99,rfhnbyf,dracul,keith123,slicko,peacock1,orgasmic,thesnake,solder,wetass,doofer,david5,rhfcyjlfh,swanny,tammys,turkiye,tubaman,estefani,firehose,funnyguy,servo,grace17,pippa1,arbiter,jimmy69,nfymrf,asdf67nm,rjcnzy,demon123,thicknes,sexysex,kristall,michail,encarta,banderos,minty,marchenko,de1987ma,mo5kva,aircav,naomi1,bonni,tatoo,cronaldo,
49ers1,mama1963,
1truck,telecaster,punksnotdead,erotik,
1eagles,
1fender,luv269,acdeehan,tanner1,freema,
1q3e5t7u,linksys,tiger6,megaman1,neophyte,australia1,mydaddy,
1jeffrey,fgdfgdfg,gfgekz,
1986irachka,keyman,m0b1l3,dfcz123,mikeyg,playstation2,abc125,slacker1,
110491g,lordsoth,bhavani,ssecca,dctvghbdtn,niblick,hondacar,baby01,worldcom,
4034407,
51094didi,
3657549,
3630000,
3578951,sweetpussy,majick,supercoo,robert11,abacabb,panda123,gfhjkm13,ford4x4,zippo1,lapin,
1726354,lovesong,dude11,moebius,paravoz,
1357642,matkhau,solnyshko,daniel4,multiplelog,starik,martusia,iamtheman,greentre,jetblue,motorrad,vfrcbvev,redoak,dogma1,gnorman,komlos,tonka1,
1010220,
666satan,losenord,lateralus,absinthe,command1,jigga1,iiiiiii1,pants1,jungfrau,
926337,ufhhbgjnnth,yamakasi,
888555,sunny7,gemini69,alone1,zxcvbnmz,cabezon,skyblues,zxc1234,
456123a,zero00,caseih,azzurra,legolas1,menudo,murcielago,
785612,
779977,benidorm,viperman,dima1985,piglet1,hemligt,hotfeet,
7elephants,hardup,gamess,a000000,
267ksyjf,kaitlynn,sharkie,sisyphus,yellow22,
667766,redvette,
666420,mets69,ac2zxdty,hxxrvwcy,cdavis,alan1,noddy,
579300,druss,eatshit1,
555123,appleseed,simpleplan,kazak,
526282,fynfyfyfhbde,birthday6,dragon6,
1pookie,bluedevils,omg123,hj8z6e,x5dxwp,
455445,batman23,termin,chrisbrown,animals1,lucky9,
443322,kzktxrf,takayuki,fermer,assembler,zomu9q,sissyboy,sergant,felina,nokia6230i,eminem12,croco,hunt4red,festina,darknigh,cptnz062,ndshnx4s,twizzler,wnmaz7sd,aamaax,gfhfcjkmrf,alabama123,barrynov,happy5,punt0it,durandal,
8xuuobe4,cmu9ggzh,bruno12,
316497,crazyfrog,vfvfktyf,apple3,kasey1,mackdaddy,anthon1,sunnys,angel3,cribbage,moon1,donal,bryce1,pandabear,mwss474,whitesta,freaker,
197100,bitche,p2ssw0rd,turnb,tiktonik,moonlite,ferret1,jackas,ferrum,bearclaw,liberty2,
1diablo,caribe,snakeeyes,janbam,azonic,rainmaker,vetalik,bigeasy,baby1234,sureno13,blink1,kluivert,calbears,lavanda,
198600,dhtlbyf,medvedeva,fox123,whirling,bonscott,freedom9,october3,manoman,segredo,cerulean,robinso,bsmith,flatus,dannon,password21,rrrrrr1,callista,romai,rainman1,trantor,mickeymo,bulldog7,g123456,pavlin,pass22,snowie,hookah,
7ofnine,bubba22,cabible,nicerack,moomoo1,summer98,yoyo123,milan1,lieve27,mustang69,jackster,exocet,nadege,qaz12,bahama,watson1,libras,eclipse2,bahram,bapezm,up9x8rww,ghjcnjz,themaste,deflep27,ghost16,gattaca,fotograf,junior123,gilber,gbjyth,
8vjzus,rosco1,begonia,aldebara,flower12,novastar,buzzman,manchild,lopez1,mama11,william7,yfcnz1,blackstar,spurs123,moom4242,
1amber,iownyou,tightend,
07931505,paquito,
1johnson,smokepot,pi31415,snowmass,ayacdc,jessicam,giuliana,
5tgbnhy6,harlee,giuli,bigwig,tentacle,scoubidou2,benelli,vasilina,nimda,
284655,jaihind,lero4ka,
1tommy,reggi,ididit,jlbyjxtcndj,mike26,qbert,wweraw,lukasz,loosee123,palantir,flint1,mapper,baldie,saturne,virgin1,meeeee,elkcit,iloveme2,blue15,themoon,radmir,number3,shyanne,missle,hannelor,jasmina,karin1,lewie622,ghjcnjqgfhjkm,blasters,oiseau,sheela,grinders,panget,rapido,positiv,twink,fltkbyf,kzsfj874,daniel01,enjoyit,nofags,doodad,rustler,squealer,fortunat,peace123,khushi,devils2,
7inches,candlebo,topdawg,armen,soundman,zxcqweasd,april7,gazeta,netman,hoppers,bear99,ghbjhbntn,mantle7,bigbo,harpo,jgordon,bullshi,vinny1,krishn,star22,thunderc,galinka,phish123,tintable,nightcrawler,tigerboy,rbhgbx,messi,basilisk,masha1998,nina123,yomamma,kayla123,geemoney,
0000000000d,motoman,a3jtni,ser123,owen10,italien,vintelok,
12345rewq,nightime,jeepin,ch1tt1ck,mxyzptlk,bandido,ohboy,doctorj,hussar,superted,parfilev,grundle,
1jack,livestrong,chrisj,matthew3,access22,moikka,fatone,miguelit,trivium,glenn1,smooches,heiko,dezember,spaghett,stason,molokai,bossdog,guitarma,waderh,boriska,photosho,path13,hfrtnf,audre,junior24,monkey24,silke,vaz21093,bigblue1,trident1,candide,arcanum,klinker,orange99,bengals1,rosebu,mjujuj,nallepuh,mtwapa1a,ranger69,level1,bissjop,leica,
1tiffany,rutabega,elvis77,kellie1,sameas,barada,karabas,frank12,queenb,toutoune,surfcity,samanth1,monitor1,littledo,kazakova,fodase,mistral1,april22,carlit,shakal,batman123,fuckoff2,alpha01,
5544332211,buddy3,towtruck,kenwood1,vfiekmrf,jkl123,pypsik,ranger75,sitges,toyman,bartek1,ladygirl,booman,boeing77,installsqlst,
222666,gosling,bigmack,
223311,bogos,kevin2,gomez1,xohzi3g4,kfnju842,klubnika,cubalibr,
123456789101,kenpo,
0147852369,raptor1,tallulah,boobys,jjones,
1q2s3c,moogie,vid2600,almas,wombat1,extra300,xfiles1,green77,sexsex1,heyjude,sammyy,missy123,maiyeuem,nccpl25282,thicluv,sissie,raven3,fldjrfn,buster22,broncos2,laurab,letmein4,harrydog,solovey,fishlips,asdf4321,ford123,superjet,norwegen,movieman,psw333333,intoit,postbank,deepwate,ola123,geolog323,murphys,eshort,a3eilm2s2y,kimota,belous,saurus,
123321qaz,i81b4u,aaa12,monkey20,buckwild,byabybnb,mapleleafs,yfcnzyfcnz,baby69,summer03,twista,
246890,
246824,ltcnhjth,z1z2z3,monika1,sad123,uto29321,bathory,villan,funkey,poptarts,spam967888,
705499fh,sebast,porn1234,earn381,
1porsche,whatthef,
123456789y,polo12,brillo,soreilly,waters1,eudora,allochka,is_a_bot,winter00,bassplay,
531879fiz,onemore,bjarne,red911,kot123,artur1,qazxdr,c0rvette,diamond7,matematica,klesko,beaver12,
2enter,seashell,panam,chaching,edward2,browni,xenogear,cornfed,aniram,chicco22,darwin1,ancella2,sophie2,vika1998,anneli,shawn41,babie,resolute,pandora2,william8,twoone,coors1,jesusis1,teh012,cheerlea,renfield,tessa1,anna1986,madness1,bkmlfh,
19719870,liebherr,ck6znp42,gary123,
123654z,alsscan,eyedoc,matrix7,metalgea,chinito,
4iter,falcon11,
7jokx7b9du,bigfeet,tassadar,retnuh,muscle1,klimova,darion,batistuta,bigsur,
1herbier,noonie,ghjrehjh,karimova,faustus,snowwhite,
1manager,dasboot,michael12,analfuck,inbed,dwdrums,jaysoncj,maranell,bsheep75,
164379,rolodex,
166666,rrrrrrr1,almaz666,
167943,russel1,negrito,alianz,goodpussy,veronik,
1w2q3r4e,efremov,emb377,sdpass,william6,alanfahy,nastya1995,panther5,automag,
123qwe12,vfvf2011,fishe,
1peanut,speedie,qazwsx1234,pass999,
171204j,ketamine,sheena1,energizer,usethis1,
123abc123,buster21,thechamp,flvbhfk,frank69,chane,hopeful1,claybird,pander,anusha,bigmaxxx,faktor,housebed,dimidrol,bigball,shashi,derby1,fredy,dervish,bootycall,
80988218126,killerb,cheese2,pariss,mymail,dell123,catbert,christa1,chevytru,gjgjdf,
00998877,overdriv,ratten,golf01,nyyanks,dinamite,bloembol,gismo,magnus1,march2,twinkles,ryan22,duckey,
118a105b,kitcat,brielle,poussin,lanzarot,youngone,ssvegeta,hero63,battle1,kiler,fktrcfylh1,newera,vika1996,dynomite,oooppp,beer4me,foodie,ljhjuf,sonshine,godess,doug1,constanc,thinkbig,steve2,damnyou,autogod,www333,kyle1,ranger7,roller1,harry2,dustin1,hopalong,tkachuk,b00bies,bill2,deep111,stuffit,fire69,redfish1,andrei123,graphix,
1fishing,kimbo1,mlesp31,ifufkbyf,gurkan,
44556,emily123,busman,and123,
8546404,paladine,
1world,bulgakov,
4294967296,bball23,
1wwwww,mycats,elain,delta6,
36363,emilyb,color1,
6060842,cdtnkfyrf,hedonism,gfgfrfhkj,
5551298,scubad,gostate,sillyme,hdbiker,beardown,fishers,sektor,
00000007,newbaby,rapid1,braves95,gator2,nigge,anthony3,sammmy,oou812,heffer,phishin,roxanne1,yourass,hornet1,albator,
2521659,underwat,tanusha,dianas,
3f3fpht7op,dragon20,bilbobag,cheroke,radiatio,dwarf1,majik,
33st33,dochka,garibald,robinh,sham69,temp01,wakeboar,violet1,
1w2w3w,registr,tonite,maranello,
1593570,parolamea,galatasara,loranthos,
1472583,asmodean,
1362840,scylla,doneit,jokerr,porkypig,kungen,mercator,koolhaas,come2me,debbie69,calbear,liverpoolfc,yankees4,
12344321a,kennyb,madma,
85200258,dustin23,thomas13,tooling,mikasa,mistic,crfnbyf,
112233445,sofia1,heinz57,colts1,price1,snowey,joakim,mark11,
963147,cnhfcnm,kzinti,
1bbbbbbb,rubberdu,donthate,rupert1,sasha1992,regis1,nbuhbwf,fanboy,sundial,sooner1,wayout,vjnjhjkf,deskpro,arkangel,willie12,mikeyb,celtic1888,luis1,buddy01,duane1,grandma1,aolcom,weeman,
172839456,basshead,hornball,magnu,pagedown,molly2,
131517,rfvtgbyhn,astonmar,mistery,madalina,cash1,
1happy,shenlong,matrix01,nazarova,
369874125,
800500,webguy,rse2540,ashley2,briank,
789551,
786110,chunli,j0nathan,greshnik,courtne,suckmyco,mjollnir,
789632147,asdfg1234,
754321,odelay,ranma12,zebedee,artem777,bmw318is,butt1,rambler1,yankees9,alabam,
5w76rnqp,rosies,mafioso,studio1,babyruth,tranzit,magical123,gfhjkm135,
12345$,soboleva,
709394,ubique,drizzt1,elmers,teamster,pokemons,
1472583690,
1597532486,shockers,merckx,melanie2,ttocs,clarisse,earth1,dennys,slobber,flagman,farfalla,troika,
4fa82hyx,hakan,x4ww5qdr,cumsuck,leather1,forum1,july20,barbel,zodiak,samuel12,ford01,rushfan,bugsy1,invest1,tumadre,screwme,a666666,money5,henry8,tiddles,sailaway,starburs,
100years,killer01,comando,hiromi,ranetka,thordog,blackhole,palmeira,verboten,solidsna,q1w1e1,humme,kevinc,gbrfxe,gevaudan,hannah11,peter2,vangar,sharky7,talktome,jesse123,chuchi,pammy,!qazxsw2,siesta,twenty1,wetwilly,
477041,natural1,sun123,daniel3,intersta,shithead1,hellyea,bonethugs,solitair,bubbles2,father1,nick01,
444000,adidas12,dripik,cameron2,
442200,a7nz8546,respublika,fkojn6gb,
428054,snoppy,rulez1,haslo,rachael1,purple01,zldej102,ab12cd34,cytuehjxrf,madhu,astroman,preteen,handsoff,mrblonde,biggio,testin,vfdhif,twolves,unclesam,asmara,kpydskcw,lg2wmgvr,grolsch,biarritz,feather1,williamm,s62i93,bone1,penske,
337733,
336633,taurus1,
334433,billet,diamondd,
333000,nukem,fishhook,godogs,thehun,lena1982,blue00,smelly1,unb4g9ty,
65pjv22,applegat,mikehunt,giancarlo,krillin,felix123,december1,soapy,
46doris,nicole23,bigsexy1,justin10,pingu,bambou,falcon12,dgthtl,
1surfer,qwerty01,estrellit,nfqcjy,easygo,konica,qazqwe,
1234567890m,stingers,nonrev,
3e4r5t,champio,bbbbbb99,
196400,allen123,seppel,simba2,rockme,zebra3,tekken3,endgame,sandy2,
197300,fitte,monkey00,eldritch,littleone,rfyfgkz,
1member,
66chevy,oohrah,cormac,hpmrbm41,
197600,grayfox,elvis69,celebrit,maxwell7,rodders,krist,
1camaro,broken1,kendall1,silkcut,katenka,angrick,maruni,
17071994a,tktyf,kruemel,snuffles,iro4ka,baby12,alexis01,marryme,vlad1994,forward1,culero,badaboom,malvin,hardtoon,hatelove,molley,knopo4ka,duchess1,mensuck,cba321,kickbutt,zastava,wayner,fuckyou6,eddie123,cjkysir,john33,dragonfi,cody1,jabell,cjhjrf,badseed,sweden1,marihuana,brownlov,elland,nike1234,kwiettie,jonnyboy,togepi,billyk,robert123,bb334,florenci,ssgoku,
198910,bristol1,bob007,allister,yjdujhjl,gauloise,
198920,bellaboo,
9lives,aguilas,wltfg4ta,foxyroxy,rocket69,fifty50,babalu,master21,malinois,kaluga,gogosox,obsessio,yeahrigh,panthers1,capstan,liza2000,leigh1,paintball1,blueskie,cbr600f3,bagdad,jose98,mandreki,shark01,wonderbo,muledeer,xsvnd4b2,hangten,
200001,grenden,anaell,apa195,model1,
245lufpq,zip100,ghjcgtrn,wert1234,misty2,charro,juanjose,fkbcrf,frostbit,badminto,buddyy,
1doctor,vanya,archibal,parviz,spunky1,footboy,dm6tzsgp,legola,samadhi,poopee,ytdxz2ca,hallowboy,dposton,gautie,theworm,guilherme,dopehead,iluvtits,bobbob1,ranger6,worldwar,lowkey,chewbaca,oooooo99,ducttape,dedalus,celular,
8i9o0p,borisenko,taylor01,
111111z,arlingto,p3nnywiz,rdgpl3ds,boobless,kcmfwesg,blacksab,mother2,markus1,leachim,secret2,s123456789,
1derful,espero,russell2,tazzer,marykate,freakme,mollyb,lindros8,james00,gofaster,stokrotka,kilbosik,aquamann,pawel1,shedevil,mousie,slot2009,october6,
146969,mm259up,brewcrew,choucho,uliana,sexfiend,fktirf,pantss,vladimi,starz,sheeps,
12341234q,bigun,tiggers,crjhjcnm,libtech,pudge1,home12,zircon,klaus1,jerry2,pink1,lingus,monkey66,dumass,polopolo09,feuerweh,rjyatnf,chessy,beefer,shamen,poohbear1,
4jjcho,bennevis,fatgirls,ujnbrf,cdexswzaq,
9noize9,rich123,nomoney,racecar1,hacke,clahay,acuario,getsum,hondacrv,william0,cheyenn,techdeck,atljhjdf,wtcacq,suger,fallenangel,bammer,tranquil,carla123,relayer,lespaul1,portvale,idontno,bycnbnen,trooper2,gennadiy,pompon,billbob,amazonka,akitas,chinatow,atkbrc,busters,fitness1,cateye,selfok2013,
1murphy,fullhous,mucker,bajskorv,nectarin,littlebitch,love24,feyenoor,bigal37,lambo1,pussybitch,icecube1,biged,kyocera,ltybcjdf,boodle,theking1,gotrice,sunset1,abm1224,fromme,sexsells,inheat,kenya1,swinger1,aphrodit,kurtcobain,rhind101,poidog,poiulkjh,kuzmina,beantown,tony88,stuttgar,drumer,joaqui,messenge,motorman,amber2,nicegirl,rachel69,andreia,faith123,studmuffin,jaiden,red111,vtkmybr,gamecocks,gumper,bosshogg,
4me2know,tokyo1,kleaner,roadhog,fuckmeno,phoenix3,seeme,buttnutt,boner69,andreyka,myheart,katerin,rugburn,jvtuepip,dc3ubn,chile1,ashley69,happy99,swissair,balls2,fylhttdf,jimboo,
55555d,mickey11,voronin,m7hsqstm,stufff,merete,weihnachte,dowjones,baloo1,freeones,bears34,auburn1,beverl,timberland,
1elvis,guinness1,bombadil,flatron1,logging7,telefoon,merl1n,masha1,andrei1,cowabung,yousuck1,
1matrix,peopl,asd123qwe,sweett,mirror1,torrente,joker12,diamond6,jackaroo,
00000a,millerlite,ironhorse,
2twins,stryke,gggg1,zzzxxxccc,roosevel,
8363eddy,angel21,depeche1,d0ct0r,blue14,areyou,veloce,grendal,frederiksberg,cbcntvf,cb207sl,sasha2000,was.here,fritzz,rosedale,spinoza,cokeisit,gandalf3,skidmark,ashley01,
12345j,
1234567890qaz,sexxxxxx,beagles,lennart,
12345789,pass10,politic,max007,gcheckou,
12345611,tiffy,lightman,mushin,velosiped,brucewayne,gauthie,elena123,greenegg,h2oski,clocker,nitemare,
123321s,megiddo,cassidy1,david13,boywonde,flori,peggy12,pgszt6md,batterie,redlands,scooter6,bckhere,trueno,bailey11,maxwell2,bandana,timoth1,startnow,ducati74,tiern,maxine1,blackmetal,suzyq,balla007,phatfarm,kirsten1,titmouse,benhogan,culito,forbin,chess1,warren1,panman,mickey7,
24lover,dascha,speed2,redlion,andrew10,johnwayn,nike23,chacha1,bendog,bullyboy,goldtree,spookie,tigger99,
1cookie,poutine,cyclone1,woodpony,camaleun,bluesky1,dfadan,eagles20,lovergirl,peepshow,mine1,dima1989,rjdfkmxer,
11111aaaaa,machina,august17,
1hhhhh,
0773417k,
1monster,freaksho,jazzmin,davidw,kurupt,chumly,huggies,sashenka,ccccccc1,bridge1,giggalo,cincinna,pistol1,hello22,david77,lightfoo,lucky6,jimmy12,
261397,lisa12,tabaluga,mysite,belo4ka,greenn,eagle99,punkrawk,salvado,slick123,wichsen,knight99,dummys,fefolico,contrera,kalle1,anna1984,delray,robert99,garena,pretende,racefan,alons,serenada,ludmilla,cnhtkjr,l0swf9gx,hankster,dfktynbyrf,sheep1,john23,cv141ab,kalyani,
944turbo,crystal2,blackfly,zrjdktdf,eus1sue1,mario5,riverplate,harddriv,melissa3,elliott1,sexybitc,cnhfyybr,jimdavis,bollix,beta1,amberlee,skywalk1,natala,
1blood,brattax,shitty1,gb15kv99,ronjon,rothmans,thedoc,joey21,hotboi,firedawg,bimbo38,jibber,aftermat,nomar,
01478963,phishing,domodo,anna13,materia,martha1,budman1,gunblade,exclusiv,sasha1997,anastas,rebecca2,fackyou,kallisti,fuckmyass,norseman,ipswich1,
151500,
1edward,intelinside,darcy1,bcrich,yjdjcnbf,failte,buzzzz,cream1,tatiana1,
7eleven,green8,
153351,
1a2s3d4f5g6h,
154263,milano1,bambi1,bruins77,rugby2,jamal1,bolita,sundaypunch,bubba12,realmadr,vfyxtcnth,iwojima,notlob,black666,valkiria,nexus1,millerti,birthday100,swiss1,appollo,gefest,greeneyes,celebrat,tigerr,slava123,izumrud,bubbabub,legoman,joesmith,katya123,sweetdream,john44,wwwwwww1,oooooo1,socal,lovespor,s5r8ed67s,
258147,heidis,cowboy22,wachovia,michaelb,qwe1234567,i12345,
255225,goldie1,alfa155,
45colt,safeu851,antonova,longtong,
1sparky,gfvznm,busen,hjlbjy,whateva,rocky4,cokeman,joshua3,kekskek1,sirocco,jagman,
123456qwert,phinupi,thomas10,loller,sakur,vika2011,fullred,mariska,azucar,ncstate,glenn74,halima,aleshka,ilovemylife,verlaat,baggie,scoubidou6,phatboy,jbruton,scoop1,barney11,blindman,def456,maximus2,master55,nestea,
11223355,diego123,sexpistols,sniffy,philip1,f12345,prisonbreak,nokia2700,ajnjuhfa,yankees3,colfax,ak470000,mtnman,bdfyeirf,fotball,ichbin,trebla,ilusha,riobravo,beaner1,thoradin,polkaudi,kurosawa,honda123,ladybu,valerik,poltava,saviola,fuckyouguys,
754740g0,anallove,microlab1,juris01,ncc1864,garfild,shania1,qagsud,makarenko,cindy69,lebedev,andrew11,johnnybo,groovy1,booster1,sanders1,tommyb,johnson4,kd189nlcih,hondaman,vlasova,chick1,sokada,sevisgur,bear2327,chacho,sexmania,roma1993,hjcnbckfd,valley1,howdie,tuppence,jimandanne,strike3,y4kuz4,nhfnfnf,tsubasa,
19955991,scabby,quincunx,dima1998,uuuuuu1,logica,skinner1,pinguino,lisa1234,xpressmusic,getfucked,qqqq1,bbbb1,matulino,ulyana,upsman,johnsmith,
123579,co2000,spanner1,todiefor,mangoes,isabel1,
123852,negra,snowdon,nikki123,bronx1,booom,ram2500,chuck123,fireboy,creek1,batman13,princesse,az12345,maksat,
1knight,
28infern,
241455,r7112s,muselman,mets1986,katydid,vlad777,playme,kmfdm1,asssex,
1prince,iop890,bigbroth,mollymoo,waitron,lizottes,
125412,juggler,quinta,
0sister0,zanardi,nata123,heckfyxbr,
22q04w90e,engine2,nikita95,zamira,hammer22,lutscher,carolina1,zz6319,sanman,vfuflfy,buster99,rossco,kourniko,aggarwal,tattoo1,janice1,finger1,
125521,
19911992,shdwlnds,rudenko,vfvfgfgf123,galatea,monkeybu,juhani,premiumcash,classact,devilmay,helpme2,knuddel,hardpack,ramil,perrit,basil1,zombie13,stockcar,tos8217,honeypie,nowayman,alphadog,melon1,talula,
125689,tiribon12,tornike,haribol,telefone,tiger22,sucka,lfytxrf,chicken123,muggins,a23456,b1234567,lytdybr,otter1,pippa,vasilisk,cooking1,helter,
78978,bestboy,viper7,ahmed1,whitewol,mommys,apple5,shazam1,chelsea7,kumiko,masterma,rallye,bushmast,jkz123,entrar,andrew6,nathan01,alaric,tavasz,heimdall,gravy1,jimmy99,cthlwt,powerr,gthtrhtcnjr,canesfan,sasha11,ybrbnf_25,august9,brucie,artichok,arnie1,superdude,tarelka,mickey22,dooper,luners,holeshot,good123,gettysbu,bicho,hammer99,divine5,
1zxcvbn,stronzo,q22222,disne,bmw750il,godhead,hallodu,aerith,nastik,differen,cestmoi,amber69,
5string,pornosta,dirtygirl,ginger123,formel1,scott12,honda200,hotspurs,johnatha,firstone123,lexmark1,msconfig,karlmasc,l123456,
123qweasdzx,baldman,sungod,furka,retsub,
9811020,ryder1,tcglyued,astron,lbvfcbr,minddoc,dirt49,baseball12,tbear,simpl,schuey,artimus,bikman,plat1num,quantex,gotyou,hailey1,justin01,ellada,
8481068,
000002,manimal,dthjybxrf,buck123,dick123,
6969696,nospam,strong1,kodeord,bama12,
123321w,superman123,gladiolus,nintend,
5792076,dreamgirl,spankme1,gautam,arianna1,titti,tetas,cool1234,belladog,importan,
4206969,
87e5nclizry,teufelo7,doller,yfl.irf,quaresma,
3440172,melis,bradle,nnmaster,fast1,iverso,blargh,lucas12,chrisg,iamsam,
123321az,tomjerry,kawika,
2597174,standrew,billyg,muskan,gizmodo2,rz93qpmq,
870621345,sathya,qmezrxg4,januari,marthe,moom4261,cum2me,hkger286,lou1988,suckit1,croaker,klaudia1,
753951456,aidan1,fsunoles,romanenko,abbydog,isthebes,akshay,corgi,fuck666,walkman555,ranger98,scorpian,hardwareid,bluedragon,fastman,
2305822q,iddqdiddqd,
1597532,gopokes,zvfrfcb,w1234567,sputnik1,tr1993,pa$$w0rd,
2i5fdruv,havvoc,
1357913,
1313131,bnm123,cowd00d,flexscan,thesims2,boogiema,bigsexxy,powerstr,ngc4565,joshman,babyboy1,
123jlb,funfunfu,qwe456,honor1,puttana,bobbyj,daniel21,pussy12,shmuck,
1232580,
123578951,maxthedo,hithere1,bond0007,gehenna,nomames,blueone,r1234567,bwana,gatinho,
1011111,torrents,cinta,
123451234,tiger25,money69,edibey,pointman,mmcm19,wales1,caffreys,phaedra,bloodlus,
321ret32,rufuss,tarbit,joanna1,
102030405,stickboy,lotrfotr34,jamshid,mclarenf1,ataman,
99ford,yarrak,logan2,ironlung,pushistik,dragoon1,unclebob,tigereye,pinokio,tylerj,mermaid1,stevie1,jaylen,
888777,ramana,roman777,brandon7,
17711771s,thiago,luigi1,edgar1,brucey,videogam,classi,birder,faramir,twiddle,cubalibre,grizzy,fucky,jjvwd4,august15,idinahui,ranita,nikita1998,
123342,w1w2w3,
78621323,
4cancel,
789963,(null,vassago,jaydog472,
123452,timt42,canada99,
123589,rebenok,htyfnf,
785001,osipov,maks123,neverwinter,love2010,
777222,
67390436,eleanor1,bykemo,aquemini,frogg,roboto,thorny,shipmate,logcabin,
66005918,nokian,gonzos,louisian,
1abcdefg,triathlo,ilovemar,couger,letmeino,supera,runvs,fibonacci,muttly,
58565254,
5thgbqi,vfnehsv,electr,jose12,artemis1,newlove,thd1shr,hawkey,grigoryan,saisha,tosca,redder,lifesux,temple1,bunnyman,thekids,sabbeth,tarzan1,
182838,
158uefas,dell50,
1super,
666222,
47ds8x,jackhamm,mineonly,rfnfhbyf,
048ro,
665259,kristina1,bombero,
52545856,secure1,bigloser,peterk,alex2,
51525354,anarchy1,superx,teenslut,money23,sigmapi,sanfrancisco,acme34,private5,eclips,qwerttrewq,axelle,kokain,hardguy,peter69,jesuschr,dyanna,dude69,sarah69,toyota91,amberr,
45645645,bugmenot,bigted,
44556677,
556644,wwr8x9pu,alphaome,harley13,kolia123,wejrpfpu,revelati,nairda,sodoff,cityboy,pinkpussy,dkalis,miami305,wow12345,triplet,tannenbau,asdfasdf1,darkhors,
527952,retired1,soxfan,nfyz123,
37583867,goddes,
515069,gxlmxbewym,
1warrior,
36925814,dmb2011,topten,karpova,
89876065093rax,naturals,gateway9,cepseoun,turbot,
493949,cock22,italia1,sasafras,gopnik,stalke,
1qazxdr5,wm2006,ace1062,alieva,blue28,aracel,sandia,motoguzz,terri1,emmajane,conej,recoba,alex1995,jerkyboy,cowboy12,arenrone,precisio,
31415927,scsa316,panzer1,studly1,powerhou,bensam,mashoutq,billee,eeyore1,reape,thebeatl,rul3z,montesa,doodle1,cvzefh1gk,
424365,a159753,zimmerma,gumdrop,ashaman,grimreap,icandoit,borodina,branca,dima2009,keywest1,vaders,bubluk,diavolo,assss,goleta,eatass,napster1,
382436,
369741,
5411pimo,lenchik,pikach,gilgamesh,kalimera,singer1,gordon2,rjycnbnewbz,maulwurf,joker13,
2much4u,bond00,alice123,robotec,fuckgirl,zgjybz,redhorse,margaret1,brady1,pumpkin2,chinky,fourplay,
1booger,roisin,
1brandon,sandan,blackheart,cheez,blackfin,cntgfyjdf,mymoney1,
09080706,goodboss,sebring1,rose1,kensingt,bigboner,marcus12,ym3cautj,struppi,thestone,lovebugs,stater,silver99,forest99,qazwsx12345,vasile,longboar,mkonji,huligan,rhfcbdfz,airmail,porn11,
1ooooo,sofun,snake2,msouthwa,dougla,
1iceman,shahrukh,sharona,dragon666,france98,
196800,
196820,ps253535,zjses9evpa,sniper01,design1,konfeta,jack99,drum66,good4you,station2,brucew,regedit,school12,mvtnr765,pub113,fantas,tiburon1,king99,ghjcnjgbpltw,checkito,
308win,
1ladybug,corneliu,svetasveta,
197430,icicle,imaccess,ou81269,jjjdsl,brandon6,bimbo1,smokee,piccolo1,
3611jcmg,children2,cookie2,conor1,darth1,margera,aoi856,paully,ou812345,sklave,eklhigcz,
30624700,amazing1,wahooo,seau55,
1beer,apples2,chulo,dolphin9,heather6,
198206,
198207,hergood,miracle1,njhyflj,
4real,milka,silverfi,fabfive,spring12,ermine,mammy,jumpjet,adilbek,toscana,caustic,hotlove,sammy69,lolita1,byoung,whipme,barney01,mistys,tree1,buster3,kaylin,gfccgjhn,
132333,aishiteru,pangaea,fathead1,smurph,
198701,ryslan,gasto,xexeylhf,anisimov,chevyss,saskatoo,brandy12,tweaker,irish123,music2,denny1,palpatin,outlaw1,lovesuck,woman1,mrpibb,diadora,hfnfneq,poulette,harlock,mclaren1,cooper12,newpass3,bobby12,rfgecnfcerf,alskdjfh,mini14,dukers,raffael,
199103,cleo123,
1234567qwertyu,mossberg,scoopy,dctulf,starline,hjvjxrf,misfits1,rangers2,bilbos,blackhea,pappnase,atwork,purple2,daywalker,summoner,
1jjjjjjj,swansong,chris10,laluna,
12345qqq,charly1,lionsden,money99,silver33,hoghead,bdaddy,
199430,saisg002,nosaints,tirpitz,
1gggggg,jason13,kingss,ernest1,
0cdh0v99ue,pkunzip,arowana,spiri,deskjet1,armine,lances,magic2,thetaxi,
14159265,cacique,
14142135,orange10,richard0,backdraf,
255ooo,humtum,kohsamui,c43dae874d,wrestling1,cbhtym,sorento,megha,pepsiman,qweqwe12,bliss7,mario64,korolev,balls123,schlange,gordit,optiquest,fatdick,fish99,richy,nottoday,dianne1,armyof1,
1234qwerasdfzxcv,bbonds,aekara,lidiya,baddog1,yellow5,funkie,ryan01,greentree,gcheckout,marshal1,liliput,
000000z,rfhbyrf,gtogto43,rumpole,tarado,marcelit,aqwzsxedc,kenshin1,sassydog,system12,belly1,zilla,kissfan,tools1,desember,donsdad,nick11,scorpio6,poopoo1,toto99,steph123,dogfuck,rocket21,thx113,dude12,sanek,sommar,smacky,pimpsta,letmego,k1200rs,lytghjgtnhjdcr,abigale,buddog,deles,baseball9,roofus,carlsbad,hamzah,hereiam,genial,schoolgirlie,yfz450,breads,piesek,washear,chimay,apocalyp,nicole18,gfgf1234,gobulls,dnevnik,wonderwall,beer1234,
1moose,beer69,maryann1,adpass,mike34,birdcage,hottuna,gigant,penquin,praveen,donna123,
123lol
123,thesame,fregat,adidas11,selrahc,pandoras,test3,chasmo,
111222333000,pecos,daniel11,ingersol,shana1,mama12345,cessna15,myhero,
1simpson,nazarenko,cognit,seattle2,irina1,azfpc310,rfycthdf,hardy1,jazmyn,sl1200,hotlanta,jason22,kumar123,sujatha,fsd9shtyu,highjump,changer,entertai,kolding,mrbig,sayuri,eagle21,qwertzu,jorge1,
0101dd,bigdong,ou812a,sinatra1,htcnjhfy,oleg123,videoman,pbyfblf,tv612se,bigbird1,kenaidog,gunite,silverma,ardmore,
123123qq,hotbot,cascada,cbr600f4,harakiri,chico123,boscos,aaron12,glasgow1,kmn5hc,lanfear,
1light,liveoak,fizika,ybrjkftdyf,surfside,intermilan,multipas,redcard,
72chevy,balata,coolio1,schroede,kanat,testerer,camion,kierra,hejmeddig,antonio2,tornados,isidor,pinkey,n8skfswa,ginny1,houndog,
1bill,chris25,hastur,
1marine,greatdan,french1,hatman,
123qqq,z1z2z3z4,kicker1,katiedog,usopen,smith22,mrmagoo,
1234512i,assa123,
7seven7,monster7,june12,bpvtyf,
149521,guenter,alex1985,voronina,mbkugegs,zaqwsxcderfv,rusty5,mystic1,master0,abcdef12,jndfkb,r4zpm3,cheesey,skripka,blackwhite,sharon69,dro8smwq,lektor,techman,boognish,deidara,heckfyf,quietkey,authcode,monkey4,jayboy,pinkerto,merengue,chulita,bushwick,turambar,kittykit,joseph2,dad123,kristo,pepote,scheiss,hambone1,bigballa,restaura,tequil,
111luzer,euro2000,motox,denhaag,chelsi,flaco1,preeti,lillo,
1001sin,passw,august24,beatoff,
555555d,willis1,kissthis,qwertyz,rvgmw2gl,iloveboobies,timati,kimbo,msinfo,dewdrop,sdbaker,fcc5nky2,messiah1,catboy,small1,chode,beastie1,star77,hvidovre,short1,xavie,dagobah,alex1987,papageno,dakota2,toonami,fuerte,jesus33,lawina,souppp,dirtybir,chrish,naturist,channel1,peyote,flibble,gutentag,lactate,killem,zucchero,robinho,ditka,grumpy1,avr7000,boxxer,topcop,berry1,mypass1,beverly1,deuce1,
9638527410,cthuttdf,kzkmrf,lovethem,band1t,cantona1,purple11,apples123,wonderwo,
123a456,fuzzie,lucky99,dancer2,hoddling,rockcity,winner12,spooty,mansfiel,aimee1,
287hf71h,rudiger,culebra,god123,agent86,daniel0,bunky1,notmine,
9ball,goofus,puffy1,xyh28af4,kulikov,bankshot,vurdf5i2,kevinm,ercole,sexygirls,razvan,october7,goater,lollie,raissa,thefrog,mdmaiwa3,mascha,jesussaves,union1,anthony9,crossroa,brother2,areyuke,rodman91,toonsex,dopeman,gericom,vaz2115,cockgobbler,
12356789,
12345699,signatur,alexandra1,coolwhip,erwin1,awdrgyjilp,pens66,ghjrjgtyrj,linkinpark,emergenc,psych0,blood666,bootmort,wetworks,piroca,johnd,iamthe1,supermario,homer69,flameon,image1,bebert,fylhtq1,annapoli,apple11,hockey22,
10048,indahouse,mykiss,
1penguin,markp,misha123,foghat,march11,hank1,santorin,defcon4,tampico,vbnhjafy,robert22,bunkie,athlon64,sex777,nextdoor,koskesh,lolnoob,seemnemaailm,black23,march15,yeehaa,chiqui,teagan,siegheil,monday2,cornhusk,mamusia,chilis,sthgrtst,feldspar,scottm,pugdog,rfghjy,micmac,gtnhjdyf,terminato,
1jackson,kakosja,bogomol,
123321aa,rkbvtyrj,tresor,tigertig,fuckitall,vbkkbjy,caramon,zxc12,balin,dildo1,soccer09,avata,abby123,cheetah1,marquise,jennyc,hondavfr,tinti,anna1985,dennis2,jorel,mayflowe,icema,hal2000,nikkis,bigmouth,greenery,nurjan,leonov,liberty7,fafnir,larionov,sat321321,byteme1,nausicaa,hjvfynbrf,everto,zebra123,sergio1,titone,wisdom1,kahala,
104328q,marcin1,salima,pcitra,
1nnnnn,nalini,galvesto,neeraj,rick1,squeeky,agnes1,jitterbu,agshar,maria12,
0112358,traxxas,stivone,prophet1,bananza,sommer1,canoneos,hotfun,redsox11,
1bigmac,dctdjkjl,legion1,everclea,valenok,black9,danny001,roxie1,
1theman,mudslide,july16,lechef,chula,glamis,emilka,canbeef,ioanna,cactus1,rockshox,im2cool,ninja9,thvfrjdf,june28,milo17,missyou,micky1,nbibyf,nokiaa,goldi,mattias,fuckthem,asdzxc123,ironfist,junior01,nesta,crazzy,killswit,hygge,zantac,kazama,melvin1,allston,maandag,hiccup,prototyp,specboot,dwl610,hello6,
159456,baldhead,redwhite,calpoly,whitetail,agile1,cousteau,matt01,aust1n,malcolmx,gjlfhjr,semperf1,ferarri,a1b2c3d,vangelis,mkvdari,bettis36,andzia,comand,tazzman,morgaine,pepluv,anna1990,inandout,anetka,anna1997,wallpape,moonrake,huntress,hogtie,cameron7,sammy7,singe11,clownboy,newzeala,wilmar,safrane,rebeld,poopi,granat,hammertime,nermin,
11251422,xyzzy1,bogeys,jkmxbr,fktrcfyl,
11223311,nfyrbcn,
11223300,powerpla,zoedog,ybrbnbyf,zaphod42,tarawa,jxfhjdfirf,dude1234,g5wks9,goobe,czekolada,blackros,amaranth,medical1,thereds,julija,nhecsyfujkjdt,promopas,buddy4,marmalad,weihnachten,tronic,letici,passthief,
67mustan,ds7zamnw,morri,w8woord,cheops,pinarell,sonofsam,av473dv,sf161pn,
5c92v5h6,purple13,tango123,plant1,
1baby,xufrgemw,fitta,
1rangers,spawns,kenned,taratata,
19944991,
11111118,coronas,
4ebouux8,roadrash,corvette1,dfyjdf846,marley12,qwaszxerdfcv,
68stang,
67stang,racin,ellehcim,sofiko,nicetry,seabass1,jazzman1,zaqwsx1,laz2937,uuuuuuu1,vlad123,rafale,j1234567,
223366,nnnnnn1,
226622,junkfood,asilas,cer980,daddymac,persepho,neelam,
00700,shithappens,
255555,qwertyy,xbox36,
19755791,qweasd1,bearcub,jerryb,a1b1c1,polkaudio,basketball1,
456rty,
1loveyou,marcus2,mama1961,palace1,transcend,shuriken,sudhakar,teenlove,anabelle,matrix99,pogoda,notme,bartend,jordana,nihaoma,ataris,littlegi,ferraris,redarmy,giallo,fastdraw,accountbloc,peludo,pornostar,pinoyako,cindee,glassjaw,dameon,johnnyd,finnland,saudade,losbravo,slonko,toplay,smalltit,nicksfun,stockhol,penpal,caraj,divedeep,cannibus,poppydog,pass88,viktory,walhalla,arisia,lucozade,goldenbo,tigers11,caball,ownage123,tonna,handy1,johny,capital5,faith2,stillher,brandan,pooky1,antananarivu,hotdick,
1justin,lacrimos,goathead,bobrik,cgtwbfkbcn,maywood,kamilek,gbplf123,gulnar,beanhead,vfvjyn,shash,viper69,ttttttt1,hondacr,kanako,muffer,dukies,justin123,agapov58,mushka,bad11bad,muleman,jojo123,andreika,makeit,vanill,boomers,bigals,merlin11,quacker,aurelien,spartak1922,ligeti,diana2,lawnmowe,fortune1,awesom,rockyy,anna1994,oinker,love88,eastbay,ab55484,poker0,ozzy666,papasmurf,antihero,photogra,ktm250,painkill,jegr2d2,p3orion,canman,dextur,qwest123,samboy,yomismo,sierra01,herber,vfrcbvvfrcbv,gloria1,llama1,pie123,bobbyjoe,buzzkill,skidrow,grabber,phili,javier1,
9379992q,geroin,oleg1994,sovereig,rollover,zaq12qaz,battery1,killer13,alina123,groucho1,mario12,peter22,butterbean,elise1,lucycat,neo123,ferdi,golfer01,randie,gfhfyjbr,ventura1,chelsea3,pinoy,mtgox,yrrim7,shoeman,mirko,ffggyyo,
65mustan,ufdibyjd,john55,suckfuck,greatgoo,fvfnjhb,mmmnnn,love20,
1bullshi,sucesso,easy1234,robin123,rockets1,diamondb,wolfee,nothing0,joker777,glasnost,richar1,guille,sayan,koresh,goshawk,alexx,batman21,a123456b,hball,
243122,rockandr,coolfool,isaia,mary1,yjdbrjdf,lolopc,cleocat,cimbo,lovehina,
8vfhnf,passking,bonapart,diamond2,bigboys,kreator,ctvtyjdf,sassy123,shellac,table54781,nedkelly,philbert,sux2bu,nomis,sparky99,python1,littlebear,numpty,silmaril,sweeet,jamesw,cbufhtnf,peggysue,wodahs,luvsex,wizardry,venom123,love4you,bama1,samat,reviewpass,ned467,cjkjdtq,mamula,gijoe,amersham,devochka,redhill,gisel,preggo,polock,cando,rewster,greenlantern,panasonik,dave1234,mikeee,
1carlos,miledi,darkness1,p0o9i8u7y6,kathryn1,happyguy,dcp500,assmaster,sambuka,sailormo,antonio3,logans,
18254288,nokiax2,qwertzuiop,zavilov,totti,xenon1,edward11,targa1,something1,tony_t,q1w2e3r4t5y6u7i8o9p0,
02551670,vladimir1,monkeybutt,greenda,neel21,craiger,saveliy,dei008,honda450,fylhtq95,spike2,fjnq8915,passwordstandard,vova12345,talonesi,richi,gigemags,pierre1,westin,trevoga,dorothee,bastogne,
25563o,brandon3,truegrit,krimml,iamgreat,servis,a112233,paulinka,azimuth,corperfmonsy,
358hkyp,homerun1,dogbert1,eatmyass,cottage1,savina,baseball7,bigtex,gimmesum,asdcxz,lennon1,a159357,
1bastard,
413276191q,pngfilt,pchealth,netsnip,bodiroga,
1matt,webtvs,ravers,adapters,siddis,mashamasha,coffee2,myhoney,anna1982,marcia1,fairchil,maniek,iloveluc,batmonh,wildon,bowie1,netnwlnk,fancy1,tom204,olga1976,vfif123,queens1,ajax01,lovess,mockba,icam4usb,triada,odinthor,rstlne,exciter,sundog,anchorat,girls69,nfnmzyrf,soloma,gti16v,shadowman,ottom,rataros,tonchin,vishal,chicken0,pornlo,christiaan,volante,likesit,mariupol,runfast,gbpltw123,missys,villevalo,kbpjxrf,ghibli,calla,cessna172,kinglear,dell11,swift1,walera,
1cricket,pussy5,turbo911,tucke,maprchem56458,rosehill,thekiwi1,ygfxbkgt,mandarinka,
98xa29,magnit,cjfrf,paswoord,grandam1,shenmue,leedsuni,hatrick,zagadka,angeldog,michaell,dance123,koichi,bballs,
29palms,xanth,
228822,ppppppp1,
1kkkkk,
1lllll,mynewbots,spurss,madmax1,
224455,city1,mmmmmmm1,nnnnnnn1,biedronka,thebeatles,elessar,f14tomcat,jordan18,bobo123,ayi000,tedbear,
86chevyx,user123,bobolink,maktub,elmer1,flyfishi,franco1,gandalf0,traxdata,david21,enlighte,dmitrij,beckys,
1giants,flippe,
12345678w,jossie,rugbyman,snowcat,rapeme,peanut11,gemeni,udders,techn9ne,armani1,chappie,war123,vakantie,maddawg,sewanee,jake5253,tautt1,anthony5,letterma,jimbo2,kmdtyjr,hextall,jessica6,amiga500,hotcunt,phoenix9,veronda,saqartvelo,scubas,sixer3,williamj,nightfal,shihan,melnikova,kosssss,handily,killer77,jhrl0821,march17,rushman,
6gcf636i,metoyou,irina123,mine11,primus1,formatters,matthew5,infotech,gangster1,jordan45,moose69,kompas,motoxxx,greatwhi,cobra12,kirpich,weezer1,hello23,montse,tracy123,connecte,cjymrf,hemingwa,azreal,gundam00,mobila,boxman,slayers1,ravshan,june26,fktrcfylhjd,bermuda1,tylerd,maersk,qazwsx11,eybdthcbntn,ash123,camelo,kat123,backd00r,cheyenne1,
1king,jerkin,tnt123,trabant,warhammer40k,rambos,punto,home77,pedrito,
1frank,brille,guitarman,george13,rakas,tgbxtcrbq,flute1,bananas1,lovezp1314,thespot,postie,buster69,sexytime,twistys,zacharia,sportage,toccata,denver7,terry123,bogdanova,devil69,higgins1,whatluck,pele10,kkk666,jeffery1,
1qayxsw2,riptide1,chevy11,munchy,lazer1,hooker1,ghfgjh,vergesse,playgrou,
4077mash,gusev,humpin,oneputt,hydepark,monster9,tiger8,tangsoo,guy123,hesoyam1,uhtqneyu,thanku,lomond,ortezza,kronik,geetha,rabbit66,killas,qazxswe,alabaste,
1234567890qwerty,capone1,andrea12,geral,beatbox,slutfuck,booyaka,jasmine7,ostsee,maestro1,beatme,tracey1,buster123,donaldduck,ironfish,happy6,konnichi,gintonic,momoney1,dugan1,today2,enkidu,destiny2,trim7gun,katuha,fractals,morganstanley,polkadot,gotime,prince11,
204060,fifa2010,bobbyt,seemee,amanda10,airbrush,bigtitty,heidie,layla1,cotton1,
5speed,fyfnjkmtdyf,flynavy,joxury8f,meeko,akuma,dudley1,flyboy1,moondog1,trotters,mariami,signin,chinna,legs11,pussy4,
1s1h1e1f1,felici,optimus1,iluvu,marlins1,gavaec,balance1,glock40,london01,kokot,southwes,comfort1,sammy11,rockbottom,brianc,litebeer,homero,chopsuey,greenlan,charit,freecell,hampster,smalldog,viper12,blofeld,
1234567890987654321,realsex,romann,cartman2,cjdthitycndj,nelly1,bmw528,zwezda,masterba,jeep99,turtl,america2,sunburst,sanyco,auntjudy,
125wm,blue10,qwsazx,cartma,toby12,robbob,red222,ilovecock,losfix16,
1explore,helge,vaz2114,whynotme,baba123,mugen,
1qazwsxedc,albertjr,
0101198,sextime,supras,nicolas2,wantsex,pussy6,checkm8,winam,
24gordon,misterme,curlew,gbljhfcs,medtech,franzi,butthea,voivod,blackhat,egoiste,pjkeirf,maddog69,pakalolo,hockey4,igor1234,rouges,snowhite,homefree,sexfreak,acer12,dsmith,blessyou,
199410,vfrcbvjd,falco02,belinda1,yaglasph,april21,groundho,jasmin1,nevergiveup,elvir,gborv526,c00kie,emma01,awesome2,larina,mike12345,maximu,anupam,bltynbabrfwbz,tanushka,sukkel,raptor22,josh12,schalke04,cosmodog,fuckyou8,busybee,
198800,bijoux,frame1,blackmor,giveit,issmall,bear13,
123-
123,bladez,littlegirl,ultra123,fletch1,flashnet,loploprock,rkelly,
12step,lukas1,littlewhore,cuntfinger,stinkyfinger,laurenc,
198020,n7td4bjl,jackie69,camel123,ben1234,
1gateway,adelheid,fatmike,thuglove,zzaaqq,chivas1,
4815162342q,mamadou,nadano,james22,benwin,andrea99,rjirf,michou,abkbgg,d50gnn,aaazzz,a123654,blankman,booboo11,medicus,bigbone,
197200,justine1,bendix,morphius,njhvjp,
44mag,zsecyus56,goodbye1,nokiadermo,a333444,waratsea,
4rzp8ab7,fevral,brillian,kirbys,minim,erathia,grazia,zxcvb1234,dukey,snaggle,poppi,hymen,
1video,dune2000,jpthjdf,cvbn123,zcxfcnkbdfz,astonv,ginnie,
316271,engine3,pr1ncess,
64chevy,glass1,laotzu,hollyy,comicbooks,assasins,nuaddn9561,scottsda,hfcnfvfy,accobra,
7777777z,werty123,metalhead,romanson,redsand,
365214,shalo,arsenii,
1989cc,sissi,duramax,
382563,petera,
414243,mamapap,jollymon,field1,fatgirl,janets,trompete,matchbox20,rambo2,nepenthe,
441232,qwertyuiop10,bozo123,phezc419hv,romantika,lifestyl,pengui,decembre,demon6,panther6,
444888,scanman,ghjcnjabkz,pachanga,buzzword,indianer,spiderman3,tony12,startre,frog1,fyutk,
483422,tupacshakur,albert12,
1drummer,bmw328i,green17,aerdna,invisibl,summer13,calimer,mustaine,lgnu9d,morefun,hesoyam123,escort1,scrapland,stargat,barabbas,dead13,
545645,mexicali,sierr,gfhfpbn,gonchar,moonstafa,searock,counte,foster1,jayhawk1,floren,maremma,nastya2010,softball1,adaptec,halloo,barrabas,zxcasd123,hunny,mariana1,kafedra,freedom0,green420,vlad1234,method7,
665566,tooting,hallo12,davinchi,conducto,medias,
666444,invernes,madhatter,
456asd,
12345678i,
687887,le33px,spring00,help123,bellybut,billy5,vitalik1,river123,gorila,bendis,power666,
747200,footslav,acehigh,qazxswedc123,q1a1z1,richard9,peterburg,tabletop,gavrilov,
123qwe1,kolosov,fredrau,run4fun,
789056,jkbvgbflf,chitra,
87654321q,steve22,wideopen,access88,surfe,tdfyutkbjy,impossib,kevin69,
880888,cantina,
887766,wxcvb,dontforg,qwer1209,asslicke,mamma123,indig,arkasha,scrapp,morelia,vehxbr,jones2,scratch1,cody11,cassie12,gerbera,dontgotm,underhil,maks2010,hollywood1,hanibal,elena2010,jason11,
1010321,stewar,elaman,fireplug,goodby,sacrific,babyphat,bobcat12,bruce123,
1233215,tony45,tiburo,love15,bmw750,wallstreet,
2h0t4me,
1346795,lamerz,munkee,
134679q,granvill,
1512198,armastus,aiden1,pipeutvj,g1234567,angeleyes,usmc1,
102030q,putangina,brandnew,shadowfax,eagles12,
1falcon,brianw,lokomoti,
2022958,scooper,pegas,jabroni1,
2121212,buffal,siffredi,wewiz,twotone,rosebudd,nightwis,carpet1,mickey2,
2525252,sleddog,red333,jamesm,
2797349,jeff12,onizuka,felixxxx,rf6666,fine1,ohlala,forplay,chicago5,muncho,scooby11,ptichka,johnnn,
19851985p,dogphil3650,totenkopf,monitor2,macross7,
3816778,dudder,semaj1,bounder,racerx1,
5556633,
7085506,ofclr278,brody1,
7506751,nantucke,hedj2n4q,drew1,aessedai,trekbike,pussykat,samatron,imani,
9124852,wiley1,dukenukem,iampurehaha2,
9556035,obvious1,mccool24,apache64,kravchenko,justforf,basura,jamese,s0ccer,safado,darksta,surfer69,damian1,gjpbnbd,gunny1,wolley,sananton,zxcvbn123456,odt4p6sv8,sergei1,modem1,mansikka,zzzz1,rifraf,dima777,mary69,looking4,donttell,red100,ninjutsu,uaeuaeman,bigbri,brasco,queenas8151,demetri,angel007,bubbl,kolort,conny,antonia1,avtoritet,kaka22,kailayu,sassy2,wrongway,chevy3,
1nascar,patriots1,chrisrey,mike99,sexy22,chkdsk,sd3utre7,padawan,a6pihd,doming,mesohorny,tamada,donatello,emma22,eather,susan69,pinky123,stud69,fatbitch,pilsbury,thc420,lovepuss,
1creativ,golf1234,hurryup,
1honda,huskerdu,marino1,gowron,girl1,fucktoy,gtnhjpfdjlcr,dkjfghdk,pinkfl,loreli,
7777777s,donkeykong,rockytop,staples1,sone4ka,xxxjay,flywheel,toppdogg,bigbubba,aaa123456,
2letmein,shavkat,paule,dlanor,adamas,
0147852,aassaa,dixon1,bmw328,mother12,ilikepussy,holly2,tsmith,excaliber,fhutynbyf,nicole3,tulipan,emanue,flyvholm,currahee,godsgift,antonioj,torito,dinky1,sanna,yfcnzvjz,june14,anime123,
123321456654,hanswurst,bandman,hello101,xxxyyy,chevy69,technica,tagada,arnol,v00d00,lilone,filles,drumandbass,dinamit,a1234a,eatmeat,elway07,inout,james6,dawid1,thewolf,diapason,yodaddy,qscwdv,fuckit1,liljoe,sloeber,simbacat,sascha1,qwe1234,
1badger,prisca,angel17,gravedig,jakeyboy,longboard,truskawka,golfer11,pyramid7,highspee,pistola,theriver,hammer69,
1packers,dannyd,alfonse,qwertgfdsa,
11119999,basket1,ghjtrn,saralee,
12inches,paolo1,zse4xdr5,taproot,sophieh6,grizzlie,hockey69,danang,biggums,hotbitch,
5alive,beloved1,bluewave,dimon95,koketka,multiscan,littleb,leghorn,poker2,delite,skyfir,bigjake,persona1,amberdog,hannah12,derren,ziffle,
1sarah,
1assword,sparky01,seymur,tomtom1,
123321qw,goskins,soccer19,luvbekki,bumhole,
2balls,
1muffin,borodin,monkey9,yfeiybrb,
1alex,betmen,freder,nigger123,azizbek,gjkzrjdf,lilmike,
1bigdadd,
1rock,taganrog,snappy1,andrey1,kolonka,bunyan,gomango,vivia,clarkkent,satur,gaudeamus,mantaray,
1month,whitehea,fargus,andrew99,ray123,redhawks,liza2009,qw12345,den12345,vfhnsyjdf,
147258369a,mazepa,newyorke,
1arsenal,hondas2000,demona,fordgt,steve12,birthday2,
12457896,dickster,edcwsxqaz,sahalin,pantyman,skinny1,hubertus,cumshot1,chiro,kappaman,mark3434,canada12,lichking,bonkers1,ivan1985,sybase,valmet,doors1,deedlit,kyjelly,bdfysx,ford11,throatfuck,backwood,fylhsq,lalit,boss429,kotova,bricky,steveh,joshua19,kissa,imladris,star1234,lubimka,partyman,crazyd,tobias1,ilike69,imhome,whome,fourstar,scanner1,ujhjl312,anatoli,
85bears,jimbo69,
5678ytr,potapova,nokia7070,sunday1,kalleank,
1996gta,refinnej,july1,molodec,nothanks,enigm,
12play,sugardog,nhfkbdfkb,larousse,cannon1,
144444,qazxcdew,stimorol,jhereg,spawn7,
143000,fearme,hambur,merlin21,dobie,is3yeusc,partner1,dekal,varsha,
478jfszk,flavi,hippo1,
9hmlpyjd,july21,
7imjfstw,lexxus,truelov,nokia5200,carlos6,anais,mudbone,anahit,taylorc,tashas,larkspur,animal2000,nibiru,jan123,miyvarxar,deflep,dolore,communit,ifoptfcor,laura2,anadrol,mamaliga,mitzi1,blue92,april15,matveev,kajlas,wowlook1,
1flowers,shadow14,alucard1,
1golf,bantha,scotlan,singapur,mark13,manchester1,telus01,superdav,jackoff1,madnes,bullnuts,world123,clitty,palmer1,david10,spider10,sargsyan,rattlers,david4,windows2,sony12,visigoth,qqqaaa,penfloor,cabledog,camilla1,natasha123,eagleman,softcore,bobrov,dietmar,divad,sss123,d1234567,tlbyjhju,
1q1q1q1,paraiso,dav123,lfiekmrf,drachen,lzhan16889,tplate,gfghbrf,casio1,
123boots1,
123test,sys64738,heavymetal,andiamo,meduza,soarer,coco12,negrita,amigas,heavymet,bespin,
1asdfghj,wharfrat,wetsex,tight1,janus1,sword123,ladeda,dragon98,austin2,atep1,jungle1,
12345abcd,lexus300,pheonix1,alex1974,
123qw123,
137955,bigtim,shadow88,igor1994,goodjob,arzen,champ123,
121ebay,changeme1,brooksie,frogman1,buldozer,morrowin,achim,trish1,lasse,festiva,bubbaman,scottb,kramit,august22,tyson123,passsword,oompah,al123456,fucking1,green45,noodle1,looking1,ashlynn,al1716,stang50,coco11,greese,bob111,brennan1,jasonj,
1cherry,
1q2345,
1xxxxxxx,fifa2011,brondby,zachar1,satyam,easy1,magic7,
1rainbow,cheezit,
1eeeeeee,ashley123,assass1,amanda123,jerbear,
1bbbbbb,azerty12,
15975391,
654321z,twinturb,onlyone1,denis1988,
6846kg3r,jumbos,pennydog,dandelion,haileris,epervier,snoopy69,afrodite,oldpussy,green55,poopypan,verymuch,katyusha,recon7,mine69,tangos,contro,blowme2,jade1,skydive1,fiveiron,dimo4ka,bokser,stargirl,fordfocus,tigers2,platina,baseball11,raque,pimper,jawbreak,buster88,walter34,chucko,penchair,horizon1,thecure1,scc1975,adrianna1,kareta,duke12,krille,dumbfuck,cunt1,aldebaran,laverda,harumi,knopfler,pongo1,pfhbyf,dogman1,rossigno,
1hardon,scarlets,nuggets1,ibelieve,akinfeev,xfhkbr,athene,falcon69,happie,billly,nitsua,fiocco,qwerty09,gizmo2,slava2,
125690,doggy123,craigs,vader123,silkeborg,
124365,peterm,
123978,krakatoa,
123699,
123592,kgvebmqy,pensacol,d1d2d3,snowstor,goldenboy,gfg65h7,ev700,church1,orange11,g0dz1ll4,chester3,acheron,cynthi,hotshot1,jesuschris,motdepass,zymurgy,one2one,fietsbel,harryp,wisper,pookster,nn527hp,dolla,milkmaid,rustyboy,terrell1,epsilon1,lillian1,dale3,crhbgrf,maxsim,selecta,mamada,fatman1,ufkjxrf,shinchan,fuckuall,women1,
000008,bossss,greta1,rbhjxrf,mamasboy,purple69,felicidade,sexy21,cathay,hunglow,splatt,kahless,shopping1,
1gandalf,themis,delta7,moon69,blue24,parliame,mamma1,miyuki,
2500hd,jackmeof,razer,rocker1,juvis123,noremac,boing747,
9z5ve9rrcz,icewater,titania,alley1,moparman,christo1,oliver2,vinicius,tigerfan,chevyy,joshua99,doda99,matrixx,ekbnrf,jackfrost,viper01,kasia,cnfhsq,triton1,ssbt8ae2,rugby8,ramman,
1lucky,barabash,ghtlfntkm,junaid,apeshit,enfant,kenpo1,shit12,
007000,marge1,shadow10,qwerty789,richard8,vbitkm,lostboys,jesus4me,richard4,hifive,kolawole,damilola,prisma,paranoya,prince2,lisaann,happyness,cardss,methodma,supercop,a8kd47v5,gamgee,polly123,irene1,number8,hoyasaxa,
1digital,matthew0,dclxvi,lisica,roy123,
2468013579,sparda,queball,vaffanculo,pass1wor,repmvbx,
999666333,freedom8,botanik,
777555333,marcos1,lubimaya,flash2,einstei,
08080,
123456789j,
159951159,
159357123,carrot1,alina1995,sanjos,dilara,mustang67,wisteria,jhnjgtl12,
98766789,darksun,arxangel,
87062134,creativ1,malyshka,fuckthemall,barsic,rocksta,
2big4u,
5nizza,genesis2,romance1,ofcourse,
1horse,latenite,cubana,sactown,
789456123a,milliona,
61808861,
57699434,imperia,bubba11,yellow3,change12,
55495746,flappy,jimbo123,
19372846,
19380018,cutlass1,craig123,klepto,beagle1,solus,
51502112,pasha1,
19822891,
46466452,
19855891,petshop,nikolaevna,
119966,nokia6131,evenpar,hoosier1,contrasena,jawa350,gonzo123,mouse2,
115511,eetfuk,gfhfvgfvgfv,
1crystal,sofaking,coyote1,kwiatuszek,fhrflbq,valeria1,anthro,
0123654789,alltheway,zoltar,maasikas,wildchil,fredonia,earlgrey,gtnhjczy,matrix123,solid1,slavko,
12monkeys,fjdksl,inter1,nokia6500,
59382113kevinp,spuddy,cachero,coorslit,password!,kiba1z,karizma,vova1994,chicony,english1,bondra12,
1rocket,hunden,jimbob1,zpflhjn1,th0mas,deuce22,meatwad,fatfree,congas,sambora,cooper2,janne,clancy1,stonie,busta,kamaz,speedy2,jasmine3,fahayek,arsenal0,beerss,trixie1,boobs69,luansantana,toadman,control2,ewing33,maxcat,mama1964,diamond4,tabaco,joshua0,piper2,music101,guybrush,reynald,pincher,katiebug,starrs,pimphard,frontosa,alex97,cootie,clockwor,belluno,skyeseth,booty69,chaparra,boochie,green4,bobcat1,havok,saraann,pipeman,aekdb,jumpshot,wintermu,chaika,
1chester,rjnjatq,emokid,reset1,regal1,j0shua,
134679a,asmodey,sarahh,zapidoo,ciccione,sosexy,beckham23,hornets1,alex1971,delerium,manageme,connor11,
1rabbit,sane4ek,caseyboy,cbljhjdf,redsox20,tttttt99,haustool,ander,pantera6,passwd1,journey1,
9988776655,blue135,writerspace,xiaoyua123,justice2,niagra,cassis,scorpius,bpgjldsgjldthnf,gamemaster,bloody1,retrac,stabbin,toybox,fight1,ytpyf.,glasha,va2001,taylor11,shameles,ladylove,
10078,karmann,rodeos,eintritt,lanesra,tobasco,jnrhjqcz,navyman,pablit,leshka,jessica3,
123vika,alena1,platinu,ilford,storm7,undernet,sasha777,
1legend,anna2002,kanmax1994,porkpie,thunder0,gundog,pallina,easypass,duck1,supermom,roach1,twincam,
14028,tiziano,qwerty32,
123654789a,evropa,shampoo1,yfxfkmybr,cubby1,tsunami1,fktrcttdf,yasacrac,
17098,happyhap,bullrun,rodder,oaktown,holde,isbest,taylor9,reeper,hammer11,julias,rolltide1,compaq123,fourx4,subzero1,hockey9,
7mary3,busines,ybrbnjcbr,wagoneer,danniash,portishead,digitex,alex1981,david11,infidel,
1snoopy,free30,jaden,tonto1,redcar27,footie,moskwa,thomas21,hammer12,burzum,cosmo123,
50000,burltree,
54343,
54354,vwpassat,jack5225,cougars1,burlpony,blackhorse,alegna,petert,katemoss,ram123,nels0n,ferrina,angel77,cstock,
1christi,dave55,abc123a,alex1975,av626ss,flipoff,folgore,max1998,science1,si711ne,yams7,wifey1,sveiks,cabin1,volodia,ox3ford,cartagen,platini,picture1,sparkle1,tiedomi,service321,wooody,christi1,gnasher,brunob,hammie,iraffert,bot2010,dtcyeirf,
1234567890p,cooper11,alcoholi,savchenko,adam01,chelsea5,niewiem,icebear,lllooottt,ilovedick,sweetpus,money8,cookie13,rfnthbyf1988,booboo2,angus123,blockbus,david9,chica1,nazaret,samsung9,smile4u,daystar,skinnass,john10,thegirl,sexybeas,wasdwasd1,sigge1,
1qa2ws3ed4rf5tg,czarny,ripley1,chris5,ashley19,anitha,pokerman,prevert,trfnthby,tony69,georgia2,stoppedb,qwertyuiop12345,miniclip,franky1,durdom,cabbages,
1234567890o,delta5,liudmila,nhfycajhvths,court1,josiew,abcd1,doghead,diman,masiania,songline,boogle,triston,deepika,sexy4me,grapple,spacebal,ebonee,winter0,smokewee,nargiza,dragonla,sassys,andy2000,menards,yoshio,massive1,suckmy1k,passat99,sexybo,nastya1996,isdead,stratcat,hokuto,infix,pidoras,daffyduck,cumhard,baldeagl,kerberos,yardman,shibainu,guitare,cqub6553,tommyy,bk.irf,bigfoo,hecto,july27,james4,biggus,esbjerg,isgod,
1irish,phenmarr,jamaic,roma1990,diamond0,yjdbrjd,girls4me,tampa1,kabuto,vaduz,hanse,spieng,dianochka,csm101,lorna1,ogoshi,plhy6hql,
2wsx4rfv,cameron0,adebayo,oleg1996,sharipov,bouboule,hollister1,frogss,yeababy,kablam,adelante,memem,howies,thering,cecilia1,onetwo12,ojp123456,jordan9,msorcloledbr,neveraga,evh5150,redwin,
1august,canno,
1mercede,moody1,mudbug,chessmas,tiikeri,stickdaddy77,alex15,kvartira,
7654321a,lollol123,qwaszxedc,algore,solana,vfhbyfvfhbyf,blue72,misha1111,smoke20,junior13,mogli,threee,shannon2,fuckmylife,kevinh,saransk,karenw,isolde,sekirarr,orion123,thomas0,debra1,laketaho,alondra,curiva,jazz1234,
1tigers,jambos,lickme2,suomi,gandalf7,
028526,zygote,brett123,br1ttany,supafly,
159000,kingrat,luton1,cool-ca,bocman,thomasd,skiller,katter,mama777,chanc,tomass,
1rachel,oldno7,rfpfyjdf,bigkev,yelrah,primas,osito,kipper1,msvcr71,bigboy11,thesun,noskcaj,chicc,sonja1,lozinka,mobile1,
1vader,ummagumma,waves1,punter12,tubgtn,server1,irina1991,magic69,dak001,pandemonium,dead1,berlingo,cherrypi,
1montana,lohotron,chicklet,asdfgh123456,stepside,ikmvw103,icebaby,trillium,
1sucks,ukrnet,glock9,ab12345,thepower,robert8,thugstools,hockey13,buffon,livefree,sexpics,dessar,ja0000,rosenrot,james10,
1fish,svoloch,mykitty,muffin11,evbukb,shwing,artem1992,andrey1992,sheldon1,passpage,nikita99,fubar123,vannasx,eight888,marial,max2010,express2,violentj,
2ykn5ccf,spartan11,brenda69,jackiech,abagail,robin2,grass1,andy76,bell1,taison,superme,vika1995,xtr451,fred20,
89032073168,denis1984,
2000jeep,weetabix,
199020,daxter,tevion,panther8,h9iymxmc,bigrig,kalambur,tsalagi,
12213443,racecar02,jeffrey4,nataxa,bigsam,purgator,acuracl,troutbum,potsmoke,jimmyz,manutd1,nytimes,pureevil,bearss,cool22,dragonage,nodnarb,dbrbyu,
4seasons,freude,elric1,werule,hockey14,
12758698,corkie,yeahright,blademan,tafkap,clave,liziko,hofner,jeffhardy,nurich,runne,stanisla,lucy1,monk3y,forzaroma,eric99,bonaire,blackwoo,fengshui,
1qaz0okm,newmoney,pimpin69,
07078,anonymer,laptop1,cherry12,ace111,salsa1,wilbur1,doom12,diablo23,jgtxzbhr,under1,honda01,breadfan,megan2,juancarlos,stratus1,ackbar,love5683,happytim,lambert1,cbljhtyrj,komarov,spam69,nfhtkrf,brownn,sarmat,ifiksr,spike69,hoangen,angelz,economia,tanzen,avogadro,
1vampire,spanners,mazdarx,queequeg,oriana,hershil,sulaco,joseph11,
8seconds,aquariu,cumberla,heather9,anthony8,burton12,crystal0,maria3,qazwsxc,snow123,notgood,
198520,raindog,heehaw,consulta,dasein,miller01,cthulhu1,dukenuke,iubire,baytown,hatebree,
198505,sistem,lena12,welcome01,maraca,middleto,sindhu,mitsou,phoenix5,vovan,donaldo,dylandog,domovoy,lauren12,byrjuybnj,
123llll,stillers,sanchin,tulpan,smallvill,
1mmmmm,patti1,folgers,mike31,colts18,
123456rrr,njkmrjz,phoenix0,biene,ironcity,kasperok,password22,fitnes,matthew6,spotligh,bujhm123,tommycat,hazel5,guitar11,
145678,vfcmrf,compass1,willee,
1barney,jack2000,littleminge,shemp,derrek,xxx12345,littlefuck,spuds1,karolinka,camneely,qwertyu123,
142500,brandon00,munson15,falcon3,passssap,z3cn2erv,goahead,baggio10,
141592,denali1,
37kazoo,copernic,
123456789asd,orange88,bravada,rush211,
197700,pablo123,uptheass,samsam1,demoman,mattylad10,heydude,mister2,werken,
13467985,marantz,a22222,f1f2f3f4,fm12mn12,gerasimova,burrito1,sony1,glenny,baldeagle,rmfidd,fenomen,verbati,forgetme,
5element,wer138,chanel1,ooicu812,
10293847qp,minicooper,chispa,myturn,deisel,vthrehbq,boredboi4u,filatova,anabe,poiuyt1,barmalei,yyyy1,fourkids,naumenko,bangbros,pornclub,okaykk,euclid90,warrior3,kornet,palevo,patatina,gocart,antanta,jed1054,clock1,
111111w,dewars,mankind1,peugeot406,liten,tahira,howlin,naumov,rmracing,corone,cunthole,passit,rock69,jaguarxj,bumsen,
197101,sweet2,
197010,whitecat,sawadee,money100,yfhrjnbrb,andyboy,
9085603566,trace1,fagget,robot1,angel20,
6yhn7ujm,specialinsta,kareena,newblood,chingada,boobies2,bugger1,squad51,
133andre,call06,ashes1,ilovelucy,success2,kotton,cavalla,philou,deebee,theband,nine09,artefact,
196100,kkkkkkk1,nikolay9,onelov,basia,emilyann,sadman,fkrjujkbr,teamomuch,david777,padrino,money21,firdaus,orion3,chevy01,albatro,erdfcv,
2legit,sarah7,torock,kevinn,holio,soloy,enron714,starfleet,qwer11,neverman,doctorwh,lucy11,dino12,trinity7,seatleon,o123456,pimpman,
1asdfgh,snakebit,chancho,prorok,bleacher,ramire,darkseed,warhorse,michael123,
1spanky,
1hotdog,
34erdfcv,n0th1ng,dimanche,repmvbyf,michaeljackson,login1,icequeen,toshiro,sperme,racer2,veget,birthday26,daniel9,lbvekmrf,charlus,bryan123,wspanic,schreibe,
1andonly,dgoins,kewell,apollo12,egypt1,fernie,tiger21,aa123456789,blowj,spandau,bisquit,
12345678d,deadmau5,fredie,
311420,happyface,samant,gruppa,filmstar,andrew17,bakesale,sexy01,justlook,cbarkley,paul11,bloodred,rideme,birdbath,nfkbcvfy,jaxson,sirius1,kristof,virgos,nimrod1,hardc0re,killerbee,
1abcdef,pitcher1,justonce,vlada,dakota99,vespucci,wpass,outside1,puertori,rfvbkf,teamlosi,vgfun2,porol777,empire11,
20091989q,jasong,webuivalidat,escrima,lakers08,trigger2,addpass,
342500,mongini,dfhtybr,horndogg,palermo1,
136900,babyblu,alla98,dasha2010,jkelly,kernow,yfnecz,rockhopper,toeman,tlaloc,silver77,dave01,kevinr,
1234567887654321,
135642,me2you,
8096468644q,remmus,spider7,jamesa,jilly,samba1,drongo,
770129ji,supercat,juntas,tema1234,esthe,
1234567892000,drew11,qazqaz123,beegees,blome,rattrace,howhigh,tallboy,rufus2,sunny2,sou812,miller12,indiana7,irnbru,patch123,letmeon,welcome5,nabisco,
9hotpoin,hpvteb,lovinit,stormin,assmonke,trill,atlanti,money1234,cubsfan,mello1,stars2,ueptkm,agate,dannym88,lover123,wordz,worldnet,julemand,chaser1,s12345678,pissword,cinemax,woodchuc,point1,hotchkis,packers2,bananana,kalender,
420666,penguin8,awo8rx3wa8t,hoppie,metlife,ilovemyfamily,weihnachtsbau,pudding1,luckystr,scully1,fatboy1,amizade,dedham,jahbless,blaat,surrende,****er,
1panties,bigasses,ghjuhfvbcn,asshole123,dfktyrb,likeme,nickers,plastik,hektor,deeman,muchacha,cerebro,santana5,testdrive,dracula1,canalc,l1750sq,savannah1,murena,
1inside,pokemon00,
1iiiiiii,jordan20,sexual1,mailliw,calipso,
014702580369,
1zzzzzz,
1jjjjjj,break1,
15253545,yomama1,katinka,kevin11,
1ffffff,martijn,sslazio,daniel5,porno2,nosmas,leolion,jscript,
15975312,pundai,kelli1,kkkddd,obafgkm,marmaris,lilmama,london123,rfhfnt,elgordo,talk87,daniel7,thesims3,
444111,bishkek,afrika2002,toby22,
1speedy,daishi,
2children,afroman,qqqqwwww,oldskool,hawai,v55555,syndicat,pukimak,fanatik,tiger5,parker01,bri5kev6,timexx,wartburg,love55,ecosse,yelena03,madinina,highway1,uhfdbwfgf,karuna,buhjvfybz,wallie,
46and2,khalif,europ,qaz123wsx456,bobbybob,wolfone,falloutboy,manning18,scuba10,schnuff,ihateyou1,lindam,sara123,popcor,fallengun,divine1,montblanc,qwerty8,rooney10,roadrage,bertie1,latinus,lexusis,rhfvfnjhcr,opelgt,hitme,agatka,
1yamaha,dmfxhkju,imaloser,michell1,sb211st,silver22,lockedup,andrew9,monica01,sassycat,dsobwick,tinroof,ctrhtnyj,bultaco,rhfcyjzhcr,aaaassss,
14ss88,joanne1,momanddad,ahjkjdf,yelhsa,zipdrive,telescop,
500600,
1sexsex,facial1,motaro,
511647,stoner1,temujin,elephant1,greatman,honey69,kociak,ukqmwhj6,altezza,cumquat,zippos,kontiki,
123max,altec1,bibigon,tontos,qazsew,nopasaran,militar,supratt,oglala,kobayash,agathe,yawetag,dogs1,cfiekmrf,megan123,jamesdea,porosenok,tiger23,berger1,hello11,seemann,stunner1,walker2,imissu,jabari,minfd,lollol12,hjvfy,
1-oct,stjohns,
2278124q,
123456789qwer,alex1983,glowworm,chicho,mallards,bluedevil,explorer1,
543211,casita,
1time,lachesis,alex1982,airborn1,dubesor,changa,lizzie1,captaink,socool,bidule,march23,
1861brr,k.ljxrf,watchout,fotze,
1brian,keksa2,aaaa1122,matrim,providian,privado,dreame,merry1,aregdone,davidt,nounour,twenty2,play2win,artcast2,zontik,
552255,shit1,sluggy,
552861,dr8350,brooze,alpha69,thunder6,kamelia2011,caleb123,mmxxmm,jamesh,lfybkjd,
125267,
125000,
124536,bliss1,dddsss,indonesi,bob69,
123888,tgkbxfgy,gerar,themack,hijodeputa,good4now,ddd123,clk430,kalash,tolkien1,
132forever,blackb,whatis,s1s2s3s4,lolkin09,yamahar,
48n25rcc,djtiesto,
111222333444555,bigbull,blade55,coolbree,kelse,ichwill,yamaha12,sakic,bebeto,katoom,donke,sahar,wahine,
645202,god666,berni,starwood,june15,sonoio,time123,llbean,deadsoul,lazarev,cdtnf,ksyusha,madarchod,technik,jamesy,
4speed,tenorsax,legshow,yoshi1,chrisbl,
44e3ebda,trafalga,heather7,serafima,favorite4,havefun1,wolve,
55555r,james13,nosredna,bodean,jlettier,borracho,mickael,marinus,brutu,sweet666,kiborg,rollrock,jackson6,macross1,ousooner,
9085084232,takeme,
123qwaszx,firedept,vfrfhjd,jackfros,
123456789000,briane,cookie11,baby22,bobby18,gromova,systemofadown,martin01,silver01,pimaou,darthmaul,hijinx,commo,chech,skyman,sunse,
2vrd6,vladimirovna,uthvfybz,nicole01,kreker,bobo1,v123456789,erxtgb,meetoo,drakcap,vfvf12,misiek1,butane,network2,flyers99,riogrand,jennyk,e12345,spinne,avalon11,lovejone,studen,maint,porsche2,qwerty100,chamberl,bluedog1,sungam,just4u,andrew23,summer22,ludic,musiclover,aguil,beardog1,libertin,pippo1,joselit,patito,bigberth,digler,sydnee,jockstra,poopo,jas4an,nastya123,profil,fuesse,default1,titan2,mendoz,kpcofgs,anamika,brillo021,bomberman,guitar69,latching,
69pussy,blues2,phelge,ninja123,m7n56xo,qwertasd,alex1976,cunningh,estrela,gladbach,marillion,mike2000,
258046,bypop,muffinman,kd5396b,zeratul,djkxbwf,john77,sigma2,
1linda,selur,reppep,quartz1,teen1,freeclus,spook1,kudos4ever,clitring,sexiness,blumpkin,macbook,tileman,centra,escaflowne,pentable,shant,grappa,zverev,
1albert,lommerse,coffee11,
777123,polkilo,muppet1,alex74,lkjhgfdsazx,olesica,april14,ba25547,souths,jasmi,arashi,smile2,
2401pedro,mybabe,alex111,quintain,pimp1,tdeir8b2,makenna,
122333444455555,%e2%
82%ac,tootsie1,pass111,zaqxsw123,gkfdfybt,cnfnbcnbrf,usermane,iloveyou12,hard69,osasuna,firegod,arvind,babochka,kiss123,cookie123,julie123,kamakazi,dylan2,
223355,tanguy,nbhtqa,tigger13,tubby1,makavel,asdflkj,sambo1,mononoke,mickeys,gayguy,win123,green33,wcrfxtvgbjy,bigsmall,
1newlife,clove,babyfac,bigwaves,mama1970,shockwav,
1friday,bassey,yarddog,codered1,victory7,bigrick,kracker,gulfstre,chris200,sunbanna,bertuzzi,begemotik,kuolema,pondus,destinee,
123456789zz,abiodun,flopsy,amadeusptfcor,geronim,yggdrasi,contex,daniel6,suck1,adonis1,moorea,el345612,f22raptor,moviebuf,raunchy,
6043dkf,zxcvbnm123456789,eric11,deadmoin,ratiug,nosliw,fannies,danno,
888889,blank1,mikey2,gullit,thor99,mamiya,ollieb,thoth,dagger1,websolutionssu,bonker,prive,
1346798520,
03038,q1234q,mommy2,contax,zhipo,gwendoli,gothic1,
1234562000,lovedick,gibso,digital2,space199,b26354,
987654123,golive,serious1,pivkoo,better1,
824358553,
794613258,nata1980,logout,fishpond,buttss,squidly,good4me,redsox19,jhonny,zse45rdx,matrixxx,honey12,ramina,
213546879,motzart,fall99,newspape,killit,gimpy,photowiz,olesja,thebus,marco123,
147852963,bedbug,
147369258,hellbound,gjgjxrf,
123987456,lovehurt,five55,hammer01,
1234554321a,alina2011,peppino,ang238,questor,
112358132,alina1994,alina1998,money77,bobjones,aigerim,cressida,madalena,
420smoke,tinchair,raven13,mooser,mauric,lovebu,adidas69,krypton1,
1111112,loveline,divin,voshod,michaelm,cocotte,gbkbuhbv,
76689295,kellyj,rhonda1,sweetu70,steamforums,geeque,nothere,
124c41,quixotic,steam181,
1169900,rfcgthcrbq,rfvbkm,sexstuff,
1231230,djctvm,rockstar1,fulhamfc,bhecbr,rfntyf,quiksilv,
56836803,jedimaster,pangit,gfhjkm777,tocool,
1237654,stella12,
55378008,
19216811,potte,fender12,mortalkombat,ball1,nudegirl,palace22,rattrap,debeers,lickpussy,jimmy6,not4u2c,wert12,bigjuggs,sadomaso,
1357924,
312mas,laser123,arminia,branford,coastie,mrmojo,
19801982,scott11,banaan123,ingres,
300zxtt,hooters6,sweeties,
19821983,
19831985,
19833891,sinnfein,welcome4,winner69,killerman,tachyon,tigre1,nymets1,kangol,martinet,sooty1,
19921993,
789qwe,harsingh,
1597535,thecount,phantom3,
36985214,lukas123,
117711,pakistan1,madmax11,willow01,
19932916,fucker12,flhrci,opelagila,theword,ashley24,tigger3,crazyj,rapide,deadfish,allana,
31359092,sasha1993,sanders2,discman,zaq!
2wsx,boilerma,mickey69,jamesg,babybo,jackson9,orion7,alina2010,indien,breeze1,atease,warspite,bazongaz,
1celtic,asguard,mygal,fitzgera,
1secret,duke33,cyklone,dipascuc,potapov,
1escobar2,c0l0rad0,kki177hk,
1little,macondo,victoriya,peter7,red666,winston6,kl?benhavn,muneca,jackme,jennan,happylife,am4h39d8nh,bodybuil,
201980,dutchie,biggame,lapo4ka,rauchen,black10,flaquit,water12,
31021364,command2,lainth88,mazdamx5,typhon,colin123,rcfhlfc,qwaszx11,g0away,ramir,diesirae,hacked1,cessna1,woodfish,enigma2,pqnr67w5,odgez8j3,grisou,hiheels,
5gtgiaxm,
2580258,ohotnik,transits,quackers,serjik,makenzie,mdmgatew,bryana,superman12,melly,lokit,thegod,slickone,fun4all,netpass,penhorse,
1cooper,nsync,asdasd22,otherside,honeydog,herbie1,chiphi,proghouse,l0nd0n,shagg,select1,frost1996,casper123,countr,magichat,greatzyo,jyothi,
3bears,thefly,nikkita,fgjcnjk,nitros,hornys,san123,lightspe,maslova,kimber1,newyork2,spammm,mikejone,pumpk1n,bruiser1,bacons,prelude9,boodie,dragon4,kenneth2,love98,power5,yodude,pumba,thinline,blue30,sexxybj,
2dumb2live,matt21,forsale,
1carolin,innova,ilikeporn,rbgtkjd,a1s2d3f,wu9942,ruffus,blackboo,qwerty999,draco1,marcelin,hideki,gendalf,trevon,saraha,cartmen,yjhbkmcr,time2go,fanclub,ladder1,chinni,
6942987,united99,lindac,quadra,paolit,mainstre,beano002,lincoln7,bellend,anomie,
8520456,bangalor,goodstuff,chernov,stepashka,gulla,mike007,frasse,harley03,omnislash,
8538622,maryjan,sasha2011,gineok,
8807031,hornier,gopinath,princesit,bdr529,godown,bosslady,hakaone,
1qwe2,madman1,joshua11,lovegame,bayamon,jedi01,stupid12,sport123,aaa666,tony44,collect1,charliem,chimaira,cx18ka,trrim777,chuckd,thedream,redsox99,goodmorning,delta88,iloveyou11,newlife2,figvam,chicago3,jasonk,
12qwer,
9875321,lestat1,satcom,conditio,capri50,sayaka,
9933162,trunks1,chinga,snooch,alexand1,findus,poekie,cfdbyf,kevind,mike1969,fire13,leftie,bigtuna,chinnu,silence1,celos1,blackdra,alex24,gfgfif,
2boobs,happy8,enolagay,sataniv1993,turner1,dylans,peugeo,sasha1994,hoppel,conno,moonshot,santa234,meister1,
008800,hanako,tree123,qweras,gfitymrf,reggie31,august29,supert,joshua10,akademia,gbljhfc,zorro123,nathalia,redsox12,hfpdjl,mishmash,nokiae51,nyyankees,tu190022,strongbo,none1,not4u2no,katie2,popart,harlequi,santan,michal1,
1therock,screwu,csyekmrf,olemiss1,tyrese,hoople,sunshin1,cucina,starbase,topshelf,fostex,california1,castle1,symantec,pippolo,babare,turntabl,
1angela,moo123,ipvteb,gogolf,alex88,cycle1,maxie1,phase2,selhurst,furnitur,samfox,fromvermine,shaq34,gators96,captain2,delonge,tomatoe,bisous,zxcvbnma,glacius,pineapple1,cannelle,ganibal,mko09ijn,paraklast1974,hobbes12,petty43,artema,junior8,mylover,
1234567890d,fatal1ty,prostreet,peruan,
10020,nadya,caution1,marocas,chanel5,summer08,metal123,
111lox,scrapy,thatguy,eddie666,washingto,yannis,minnesota_hp,lucky4,playboy6,naumova,azzurro,patat,dale33,pa55wd,speedster,zemanova,saraht,newto,tony22,qscesz,arkady,
1oliver,death6,vkfwx046,antiflag,stangs,jzf7qf2e,brianp,fozzy,cody123,startrek1,yoda123,murciela,trabajo,lvbnhbtdf,canario,fliper,adroit,henry5,goducks,papirus,alskdj,soccer6,
88mike,gogetter,tanelorn,donking,marky1,leedsu,badmofo,al1916,wetdog,akmaral,pallet,april24,killer00,nesterova,rugby123,coffee12,browseui,ralliart,paigow,calgary1,armyman,vtldtltd,frodo2,frxtgb,iambigal,benno,jaytee,
2hot4you,askar,bigtee,brentwoo,palladin,eddie2,al1916w,horosho,entrada,ilovetits,venture1,dragon19,jayde,chuvak,jamesl,fzr600,brandon8,vjqvbh,snowbal,snatch1,bg6njokf,pudder,karolin,candoo,pfuflrf,satchel1,manteca,khongbiet,critter1,partridg,skyclad,bigdon,ginger69,brave1,anthony4,spinnake,chinadol,passout,cochino,nipples1,
15058,lopesk,sixflags,lloo999,parkhead,breakdance,cia123,fidodido,yuitre12,fooey,artem1995,gayathri,medin,nondriversig,l12345,bravo7,happy13,kazuya,camster,alex1998,luckyy,zipcode,dizzle,boating1,opusone,newpassw,movies23,kamikazi,zapato,bart316,cowboys0,corsair1,kingshit,hotdog12,rolyat,h200svrm,qwerty4,boofer,rhtyltkm,chris999,vaz21074,simferopol,pitboss,love3,britania,tanyshka,brause,
123qwerty123,abeille,moscow1,ilkaev,manut,process1,inetcfg,dragon05,fortknox,castill,rynner,mrmike,koalas,jeebus,stockpor,longman,juanpabl,caiman,roleplay,jeremi,
26058,prodojo,
002200,magical1,black5,bvlgari,doogie1,cbhtqa,mahina,a1s2d3f4g5h6,jblpro,usmc01,bismilah,guitar01,april9,santana1,
1234aa,monkey14,sorokin,evan1,doohan,animalsex,pfqxtyjr,dimitry,catchme,chello,silverch,glock45,dogleg,litespee,nirvana9,peyton18,alydar,warhamer,iluvme,sig229,minotavr,lobzik,jack23,bushwack,onlin,football123,joshua5,federov,winter2,bigmax,fufnfrhbcnb,hfpldfnhb,
1dakota,f56307,chipmonk,
4nick8,praline,vbhjh123,king11,
22tango,gemini12,street1,
77879,doodlebu,homyak,
165432,chuluthu,trixi,karlito,salom,reisen,cdtnkzxjr,pookie11,tremendo,shazaam,welcome0,
00000ty,peewee51,pizzle,gilead,bydand,sarvar,upskirt,legends1,freeway1,teenfuck,ranger9,darkfire,dfymrf,hunt0802,justme1,buffy1ma,
1harry,
671fsa75yt,burrfoot,budster,pa437tu,jimmyp,alina2006,malacon,charlize,elway1,free12,summer02,gadina,manara,gomer1,
1cassie,sanja,kisulya,money3,pujols,ford50,midiland,turga,orange6,demetriu,freakboy,orosie1,radio123,open12,vfufpby,mustek,chris33,animes,meiling,nthtvjr,jasmine9,gfdkjd,oligarh,marimar,chicago9,.kzirf,bugssgub,samuraix,jackie01,pimpjuic,macdad,cagiva,vernost,willyboy,fynjyjdf,tabby1,privet123,torres9,retype,blueroom,raven11,q12we3,alex1989,bringiton,ridered,kareltje,ow8jtcs8t,ciccia,goniners,countryb,
24688642,covingto,
24861793,beyblade,vikin,badboyz,wlafiga,walstib,mirand,needajob,chloes,balaton,kbpfdtnf,freyja,bond9007,gabriel12,stormbri,hollage,love4eve,fenomeno,darknite,dragstar,kyle123,milfhunter,ma123123123,samia,ghislain,enrique1,ferien12,xjy6721,natalie2,reglisse,wilson2,wesker,rosebud7,amazon1,robertr,roykeane,xtcnth,mamatata,crazyc,mikie,savanah,blowjob69,jackie2,forty1,
1coffee,fhbyjxrf,bubbah,goteam,hackedit,risky1,logoff,h397pnvr,buck13,robert23,bronc,st123st,godflesh,pornog,iamking,cisco69,septiembr,dale38,zhongguo,tibbar,panther9,buffa1,bigjohn1,mypuppy,vehvfycr,april16,shippo,fire1234,green15,q123123,gungadin,steveg,olivier1,chinaski,magnoli,faithy,storm12,toadfrog,paul99,
78791,august20,automati,squirtle,cheezy,positano,burbon,nunya,llebpmac,kimmi,turtle2,alan123,prokuror,violin1,durex,pussygal,visionar,trick1,chicken6,
29024,plowboy,rfybreks,imbue,sasha13,wagner1,vitalogy,cfymrf,thepro,
26028,gorbunov,dvdcom,letmein5,duder,fastfun,pronin,libra1,conner1,harley20,stinker1,
20068,
20038,amitech,syoung,dugway,
18068,welcome7,jimmypag,anastaci,kafka1,pfhfnecnhf,catsss,campus100,shamal,nacho1,fire12,vikings2,brasil1,rangerover,mohamma,peresvet,
14058,cocomo,aliona,
14038,qwaser,vikes,cbkmdf,skyblue1,ou81234,goodlove,dfkmltvfh,
108888,roamer,pinky2,static1,zxcv4321,barmen,rock22,shelby2,morgans,
1junior,pasword1,logjam,fifty5,nhfrnjhbcn,chaddy,philli,nemesis2,ingenier,djkrjd,ranger3,aikman8,knothead,daddy69,love007,vsythb,ford350,tiger00,renrut,owen11,energy12,march14,alena123,robert19,carisma,orange22,murphy11,podarok,prozak,kfgeirf,wolf13,lydia1,shazza,parasha,akimov,tobbie,pilote,heather4,baster,leones,gznfxjr,megama,
987654321g,bullgod,boxster1,minkey,wombats,vergil,colegiata,lincol,smoothe,pride1,carwash1,latrell,bowling3,fylhtq123,pickwick,eider,bubblebox,bunnies1,loquit,slipper1,nutsac,purina,xtutdfhf,plokiju,
1qazxs,uhjpysq,zxcvbasdfg,enjoy1,
1pumpkin,phantom7,mama22,swordsma,wonderbr,dogdays,milker,u23456,silvan,dfkthbr,slagelse,yeahman,twothree,boston11,wolf100,dannyg,troll1,fynjy123,ghbcnfd,bftest,ballsdeep,bobbyorr,alphasig,cccdemo,fire123,norwest,claire2,august10,lth1108,problemas,sapito,alex06,
1rusty,maccom,goirish1,ohyes,bxdumb,nabila,boobear1,rabbit69,princip,alexsander,travail,chantal1,dogggy,greenpea,diablo69,alex2009,bergen09,petticoa,classe,ceilidh,vlad2011,kamakiri,lucidity,qaz321,chileno,cexfhf,
99ranger,mcitra,estoppel,volvos60,carter80,webpass,temp12,touareg,fcgbhby,bubba8,sunitha,
200190ru,bitch2,shadow23,iluvit,nicole0,ruben1,nikki69,butttt,shocker1,souschef,lopotok01,kantot,corsano,cfnfyf,riverat,makalu,swapna,all4u9,cdtnkfy,ntktgepbr,ronaldo99,thomasj,bmw540i,chrisw,boomba,open321,z1x2c3v4b5n6m7,gaviota,iceman44,frosya,chris100,chris24,cosette,clearwat,micael,boogyman,pussy9,camus1,chumpy,heccrbq,konoplya,chester8,scooter5,ghjgfufylf,giotto,koolkat,zero000,bonita1,ckflrbq,j1964,mandog,
18n28n24a,renob,head1,shergar,ringo123,tanita,sex4free,johnny12,halberd,reddevils,biolog,dillinge,fatb0y,c00per,hyperlit,wallace2,spears1,vitamine,buheirf,sloboda,alkash,mooman,marion1,arsenal7,sunder,nokia5610,edifier,pippone,fyfnjkmtdbx,fujimo,pepsi12,kulikova,bolat,duetto,daimon,maddog01,timoshka,ezmoney,desdemon,chesters,aiden,hugues,patrick5,aikman08,robert4,roenick,nyranger,writer1,
36169544,foxmulder,
118801,kutter,shashank,jamjar,
118811,
119955,aspirina,dinkus,
1sailor,nalgene,
19891959,snarf,allie1,cracky,resipsa,
45678912,kemerovo,
19841989,netware1,alhimik,
19801984,nicole123,
19761977,
51501984,malaka1,montella,peachfuz,jethro1,cypress1,henkie,holdon,esmith,
55443322,
1friend,quique,bandicoot,statistika,great123,death13,ucht36,master4,
67899876,bobsmith,nikko1,jr1234,hillary1,
78978978,rsturbo,lzlzdfcz,bloodlust,shadow00,skagen,bambina,yummies,
88887777,
91328378,matthew4,itdoes,
98256518,
102938475,alina2002,
123123789,fubared,dannys,
123456321,nikifor,suck69,newmexico,scubaman,rhbcnb,fifnfy,puffdadd,
159357852,dtheyxbr,theman22,
212009164,prohor,shirle,nji90okm,newmedia,goose5,roma1995,letssee,iceman11,aksana,wirenut,pimpdady,
1212312121,tamplier,pelican1,domodedovo,
1928374655,fiction6,duckpond,ybrecz,thwack,onetwo34,gunsmith,murphydo,fallout1,spectre1,jabberwo,jgjesq,turbo6,bobo12,redryder,blackpus,elena1971,danilova,antoin,bobo1234,bobob,bobbobbo,dean1,
222222a,jesusgod,matt23,musical1,darkmage,loppol,werrew,josepha,rebel12,toshka,gadfly,hawkwood,alina12,dnomyar,sexaddict,dangit,cool23,yocrack,archimed,farouk,nhfkzkz,lindalou,
111zzzzz,ghjatccjh,wethepeople,m123456789,wowsers,kbkbxrf,bulldog5,m_roesel,sissinit,yamoon6,
123ewqasd,dangel,miruvor79,kaytee,falcon7,bandit11,dotnet,dannii,arsenal9,miatamx5,
1trouble,strip4me,dogpile,sexyred1,rjdfktdf,google10,shortman,crystal7,awesome123,cowdog,haruka,birthday28,jitter,diabolik,boomer12,dknight,bluewate,hockey123,crm0624,blueboys,willy123,jumpup,google2,cobra777,llabesab,vicelord,hopper1,gerryber,remmah,j10e5d4,qqqqqqw,agusti,fre_ak8yj,nahlik,redrobin,scott3,epson1,dumpy,bundao,aniolek,hola123,jergens,itsasecret,maxsam,bluelight,mountai1,bongwater,
1london,pepper14,freeuse,dereks,qweqw,fordgt40,rfhfdfy,raider12,hunnybun,compac,splicer,megamon,tuffgong,gymnast1,butter11,modaddy,wapbbs_1,dandelio,soccer77,ghjnbdjcnjzybt,
123xyi2,fishead,x002tp00,whodaman,
555aaa,oussama,brunodog,technici,pmtgjnbl,qcxdw8ry,schweden,redsox3,throbber,collecto,japan10,dbm123dm,hellhoun,tech1,deadzone,kahlan,wolf123,dethklok,xzsawq,bigguy1,cybrthc,chandle,buck01,qq123123,secreta,williams1,c32649135,delta12,flash33,
123joker,spacejam,polopo,holycrap,daman1,tummybed,financia,nusrat,euroline,magicone,jimkirk,ameritec,daniel26,sevenn,topazz,kingpins,dima1991,macdog,spencer5,oi812,geoffre,music11,baffle,
123569,usagi,cassiope,polla,lilcrowe,thecakeisalie,vbhjndjhtw,vthokies,oldmans,sophie01,ghoster,penny2,
129834,locutus1,meesha,magik,jerry69,daddysgirl,irondesk,andrey12,jasmine123,vepsrfyn,likesdick,
1accord,jetboat,grafix,tomuch,showit,protozoa,mosias98,taburetka,blaze420,esenin,anal69,zhv84kv,puissant,charles0,aishwarya,babylon6,bitter1,lenina,raleigh1,lechat,access01,kamilka,fynjy,sparkplu,daisy3112,choppe,zootsuit,
1234567j,rubyrose,gorilla9,nightshade,alternativa,cghfdjxybr,snuggles1,
10121v,vova1992,leonardo1,dave2,matthewd,vfhfnbr,
1986mets,nobull,bacall,mexican1,juanjo,mafia1,boomer22,soylent,edwards1,jordan10,blackwid,alex86,gemini13,lunar2,dctvcjcfnm,malaki,plugger,eagles11,snafu2,
1shelly,cintaku,hannah22,tbird1,maks5843,irish88,homer22,amarok,fktrcfylhjdf,lincoln2,acess,gre69kik,need4speed,hightech,core2duo,blunt1,ublhjgjybrf,dragon33,
1autopas,autopas1,wwww1,
15935746,daniel20,
2500aa,massim,
1ggggggg,
96ford,hardcor1,cobra5,blackdragon,vovan_lt,orochimaru,hjlbntkb,qwertyuiop12,tallen,paradoks,frozenfish,ghjuhfvvbcn,gerri1,nuggett,camilit,doright,trans1,serena1,catch2,bkmyeh,fireston,afhvfwtdn,purple3,figure8,fuckya,scamp1,laranja,ontheoutside,louis123,yellow7,moonwalk,mercury2,tolkein,raide,amenra,a13579,dranreb,
5150vh,harish,tracksta,sexking,ozzmosis,katiee,alomar,matrix19,headroom,jahlove,ringding,apollo8,
132546,
132613,
12345672000,saretta,
135798,
136666,thomas7,
136913,onetwothree,hockey33,calida,nefertit,bitwise,tailhook,boop4,kfgecbr,bujhmbujhm,metal69,thedark,meteoro,felicia1,house12,tinuviel,istina,vaz2105,pimp13,toolfan,nina1,tuesday2,maxmotives,lgkp500,locksley,treech,darling1,kurama,aminka,ramin,redhed,dazzler,jager1,stpiliot,cardman,rfvtym,cheeser,
14314314,paramoun,samcat,plumpy,stiffie,vsajyjr,panatha,qqq777,car12345,
098poi,asdzx,keegan1,furelise,kalifornia,vbhjckfd,beast123,zcfvfzkexifz,harry5,
1birdie,
96328i,escola,extra330,henry12,gfhfyjqz,
14u2nv,max1234,templar1,
1dave,
02588520,catrin,pangolin,marhaba,latin1,amorcito,dave22,escape1,advance1,yasuhiro,grepw,meetme,orange01,ernes,erdna,zsergn,nautica1,justinb,soundwav,miasma,greg78,nadine1,sexmad,lovebaby,promo1,excel1,babys,dragonma,camry1,sonnenschein,farooq,wazzkaprivet,magal,katinas,elvis99,redsox24,rooney1,chiefy,peggys,aliev,pilsung,mudhen,dontdoit,dennis12,supercal,energia,ballsout,funone,claudiu,brown2,amoco,dabl1125,philos,gjdtkbntkm,servette,
13571113,whizzer,nollie,
13467982,upiter,
12string,bluejay1,silkie,william4,kosta1,
143333,connor12,sustanon,
06068,corporat,ssnake,laurita,king10,tahoes,arsenal123,sapato,charless,jeanmarc,levent,algerie,marine21,jettas,winsome,dctvgbplf,
1701ab,xxxp455w0rd5,lllllll1,ooooooo1,monalis,koufax32,anastasya,debugger,sarita2,jason69,ufkxjyjr,gjlcnfdf,
1jerry,daniel10,balinor,sexkitten,death2,qwertasdfgzxcvb,s9te949f,vegeta1,sysman,maxxam,dimabilan,mooose,ilovetit,june23,illest,doesit,mamou,abby12,longjump,transalp,moderato,littleguy,magritte,dilnoza,hawaiiguy,winbig,nemiroff,kokaine,admira,myemail,dream2,browneyes,destiny7,dragonss,suckme1,asa123,andranik,suckem,fleshbot,dandie,timmys,scitra,timdog,hasbeen,guesss,smellyfe,arachne,deutschl,harley88,birthday27,nobody1,papasmur,home1,jonass,bunia3,epatb1,embalm,vfvekmrf,apacer,
12345656,estreet,weihnachtsbaum,mrwhite,admin12,kristie1,kelebek,yoda69,socken,tima123,bayern1,fktrcfylth,tamiya,
99strenght,andy01,denis2011,
19delta,stokecit,aotearoa,stalker2,nicnac,conrad1,popey,agusta,bowl36,
1bigfish,mossyoak,
1stunner,getinnow,jessejames,gkfnjy,drako,
1nissan,egor123,hotness,
1hawaii,zxc123456,cantstop,
1peaches,madlen,west1234,jeter1,markis,judit,attack1,artemi,silver69,
153246,crazy2,green9,yoshimi,
1vette,chief123,jasper2,
1sierra,twentyon,drstrang,aspirant,yannic,jenna123,bongtoke,slurpy,
1sugar,civic97,rusty21,shineon,james19,anna12345,wonderwoman,
1kevin,karol1,kanabis,wert21,fktif6115,evil1,kakaha,
54gv768,
826248s,tyrone1,
1winston,sugar2,falcon01,adelya,mopar440,zasxcd,leecher,kinkysex,mercede1,travka,
11234567,rebon,geekboy".split(","),
54801 english_wikipedia:"the,of,and,in,was,is,for,as,on,with,by,he,at,from,his,an,were,are,which,doc,https,also,or,has,had,first,one,their,its,after,new,who,they,two,her,she,been,other,when,time,during,there,into,school,more,may,years,over,only,year,most,would,world,city,some,where,between,later,three,state,such,then,national,used,made,known,under,many,university,united,while,part,season,team,these,american,than,film,second,born,south,became,states,war,through,being,including,both,before,north,high,however,people,family,early,history,album,area,them,series,against,until,since,district,county,name,work,life,group,music,following,number,company,several,four,called,played,released,career,league,game,government,house,each,based,day,same,won,use,station,club,international,town,located,population,general,college,east,found,age,march,end,september,began,home,public,church,line,june,river,member,system,place,century,band,july,york,january,october,song,august,best,former,british,party,named,held,village,show,local,november,took,service,december,built,another,major,within,along,members,five,single,due,although,small,old,left,final,large,include,building,served,president,received,games,death,february,main,third,set,children,own,order,species,park,law,air,published,road,died,book,men,women,army,often,according,education,central,country,division,english,top,included,development,french,community,among,water,play,side,list,times,near,late,form,original,different,center,power,led,students,german,moved,court,six,land,council,island,u.s.,record,million,research,art,established,award,street,military,television,given,region,support,western,production,non,political,point,cup,period,business,title,started,various,election,using,england,role,produced,become,program,works,field,total,office,class,written,association,radio,union,level,championship,director,few,force,created,department,founded,services,married,though,per,n't,site,open,act,short,society,version,royal,present,northern,worked,professional,full,returned,joined,story,france,european,currently,language,social,california,india,days,design,st.,further,round,australia,wrote,san,project,control,southern,railway,board,popular,continued,free,battle,considered,video,common,position,living,half,playing,recorded,red,post,described,average,records,special,modern,appeared,announced,areas,rock,release,elected,others,example,term,opened,similar,formed,route,census,current,schools,originally,lake,developed,race,himself,forces,addition,information,upon,province,match,event,songs,result,events,win,eastern,track,lead,teams,science,human,construction,minister,germany,awards,available,throughout,training,style,body,museum,australian,health,seven,signed,chief,eventually,appointed,sea,centre,debut,tour,points,media,light,range,character,across,features,families,largest,indian,network,less,performance,players,refer,europe,sold,festival,usually,taken,despite,designed,committee,process,return,official,episode,institute,stage,followed,performed,japanese,personal,thus,arts,space,low,months,includes,china,study,middle,magazine,leading,japan,groups,aircraft,featured,federal,civil,rights,model,coach,canadian,books,remained,eight,type,independent,completed,capital,academy,instead,kingdom,organization,countries,studies,competition,sports,size,above,section,finished,gold,involved,reported,management,systems,industry,directed,market,fourth,movement,technology,bank,ground,campaign,base,lower,sent,rather,added,provided,coast,grand,historic,valley,conference,bridge,winning,approximately,films,chinese,awarded,degree,russian,shows,native,female,replaced,municipality,square,studio,medical,data,african,successful,mid,bay,attack,previous,operations,spanish,theatre,student,republic,beginning,provide,ship,primary,owned,writing,tournament,culture,introduced,texas,related,natural,parts,governor,reached,ireland,units,senior,decided,italian,whose,higher,africa,standard,income,professor,placed,regional,los,buildings,championships,active,novel,energy,generally,interest,via,economic,previously,stated,itself,channel,below,operation,leader,traditional,trade,structure,limited,runs,prior,regular,famous,saint,navy,foreign,listed,artist,catholic,airport,results,parliament,collection,unit,officer,goal,attended,command,staff,commission,lived,location,plays,commercial,places,foundation,significant,older,medal,self,scored,companies,highway,activities,programs,wide,musical,notable,library,numerous,paris,towards,individual,allowed,plant,property,annual,contract,whom,highest,initially,required,earlier,assembly,artists,rural,seat,practice,defeated,ended,soviet,length,spent,manager,press,associated,author,issues,additional,characters,lord,zealand,policy,engine,township,noted,historical,complete,financial,religious,mission,contains,nine,recent,represented,pennsylvania,administration,opening,secretary,lines,report,executive,youth,closed,theory,writer,italy,angeles,appearance,feature,queen,launched,legal,terms,entered,issue,edition,singer,greek,majority,background,source,anti,cultural,complex,changes,recording,stadium,islands,operated,particularly,basketball,month,uses,port,castle,mostly,names,fort,selected,increased,status,earth,subsequently,pacific,cover,variety,certain,goals,remains,upper,congress,becoming,studied,irish,nature,particular,loss,caused,chart,dr.,forced,create,era,retired,material,review,rate,singles,referred,larger,individuals,shown,provides,products,speed,democratic,poland,parish,olympics,cities,themselves,temple,wing,genus,households,serving,cost,wales,stations,passed,supported,view,cases,forms,actor,male,matches,males,stars,tracks,females,administrative,median,effect,biography,train,engineering,camp,offered,chairman,houses,mainly,
19th,surface,therefore,nearly,score,ancient,subject,prime,seasons,claimed,experience,specific,jewish,failed,overall,believed,plot,troops,greater,spain,consists,broadcast,heavy,increase,raised,separate,campus,
1980s,appears,presented,lies,composed,recently,influence,fifth,nations,creek,references,elections,britain,double,cast,meaning,earned,carried,producer,latter,housing,brothers,attempt,article,response,border,remaining,nearby,direct,ships,value,workers,politician,academic,label,
1970s,commander,rule,fellow,residents,authority,editor,transport,dutch,projects,responsible,covered,territory,flight,races,defense,tower,emperor,albums,facilities,daily,stories,assistant,managed,primarily,quality,function,proposed,distribution,conditions,prize,journal,code,vice,newspaper,corps,highly,constructed,mayor,critical,secondary,corporation,rugby,regiment,ohio,appearances,serve,allow,nation,multiple,discovered,directly,scene,levels,growth,elements,acquired,
1990s,officers,physical,
20th,latin,host,jersey,graduated,arrived,issued,literature,metal,estate,vote,immediately,quickly,asian,competed,extended,produce,urban,
1960s,promoted,contemporary,global,formerly,appear,industrial,types,opera,ministry,soldiers,commonly,mass,formation,smaller,typically,drama,shortly,density,senate,effects,iran,polish,prominent,naval,settlement,divided,basis,republican,languages,distance,treatment,continue,product,mile,sources,footballer,format,clubs,leadership,initial,offers,operating,avenue,officially,columbia,grade,squadron,fleet,percent,farm,leaders,agreement,likely,equipment,website,mount,grew,method,transferred,intended,renamed,iron,asia,reserve,capacity,politics,widely,activity,advanced,relations,scottish,dedicated,crew,founder,episodes,lack,amount,build,efforts,concept,follows,ordered,leaves,positive,economy,entertainment,affairs,memorial,ability,illinois,communities,color,text,railroad,scientific,focus,comedy,serves,exchange,environment,cars,direction,organized,firm,description,agency,analysis,purpose,destroyed,reception,planned,revealed,infantry,architecture,growing,featuring,household,candidate,removed,situated,models,knowledge,solo,technical,organizations,assigned,conducted,participated,largely,purchased,register,gained,combined,headquarters,adopted,potential,protection,scale,approach,spread,independence,mountains,titled,geography,applied,safety,mixed,accepted,continues,captured,rail,defeat,principal,recognized,lieutenant,mentioned,semi,owner,joint,liberal,actress,traffic,creation,basic,notes,unique,supreme,declared,simply,plants,sales,massachusetts,designated,parties,jazz,compared,becomes,resources,titles,concert,learning,remain,teaching,versions,content,alongside,revolution,sons,block,premier,impact,champions,districts,generation,estimated,volume,image,sites,account,roles,sport,quarter,providing,zone,yard,scoring,classes,presence,performances,representatives,hosted,split,taught,origin,olympic,claims,critics,facility,occurred,suffered,municipal,damage,defined,resulted,respectively,expanded,platform,draft,opposition,expected,educational,ontario,climate,reports,atlantic,surrounding,performing,reduced,ranked,allows,birth,nominated,younger,newly,kong,positions,theater,philadelphia,heritage,finals,disease,sixth,laws,reviews,constitution,tradition,swedish,theme,fiction,rome,medicine,trains,resulting,existing,deputy,environmental,labour,classical,develop,fans,granted,receive,alternative,begins,nuclear,fame,buried,connected,identified,palace,falls,letters,combat,sciences,effort,villages,inspired,regions,towns,conservative,chosen,animals,labor,attacks,materials,yards,steel,representative,orchestra,peak,entitled,officials,returning,reference,northwest,imperial,convention,examples,ocean,publication,painting,subsequent,frequently,religion,brigade,fully,sides,acts,cemetery,relatively,oldest,suggested,succeeded,achieved,application,programme,cells,votes,promotion,graduate,armed,supply,flying,communist,figures,literary,netherlands,korea,worldwide,citizens,
1950s,faculty,draw,stock,seats,occupied,methods,unknown,articles,claim,holds,authorities,audience,sweden,interview,obtained,covers,settled,transfer,marked,allowing,funding,challenge,southeast,unlike,crown,rise,portion,transportation,sector,phase,properties,edge,tropical,standards,institutions,philosophy,legislative,hills,brand,fund,conflict,unable,founding,refused,attempts,metres,permanent,starring,applications,creating,effective,aired,extensive,employed,enemy,expansion,billboard,rank,battalion,multi,vehicle,fought,alliance,category,perform,federation,poetry,bronze,bands,entry,vehicles,bureau,maximum,billion,trees,intelligence,greatest,screen,refers,commissioned,gallery,injury,confirmed,setting,treaty,adult,americans,broadcasting,supporting,pilot,mobile,writers,programming,existence,squad,minnesota,copies,korean,provincial,sets,defence,offices,agricultural,internal,core,northeast,retirement,factory,actions,prevent,communications,ending,weekly,containing,functions,attempted,interior,weight,bowl,recognition,incorporated,increasing,ultimately,documentary,derived,attacked,lyrics,mexican,external,churches,centuries,metropolitan,selling,opposed,personnel,mill,visited,presidential,roads,pieces,norwegian,controlled,
18th,rear,influenced,wrestling,weapons,launch,composer,locations,developing,circuit,specifically,studios,shared,canal,wisconsin,publishing,approved,domestic,consisted,determined,comic,establishment,exhibition,southwest,fuel,electronic,cape,converted,educated,melbourne,hits,wins,producing,norway,slightly,occur,surname,identity,represent,constituency,funds,proved,links,structures,athletic,birds,contest,users,poet,institution,display,receiving,rare,contained,guns,motion,piano,temperature,publications,passenger,contributed,toward,cathedral,inhabitants,architect,exist,athletics,muslim,courses,abandoned,signal,successfully,disambiguation,tennessee,dynasty,heavily,maryland,jews,representing,budget,weather,missouri,introduction,faced,pair,chapel,reform,height,vietnam,occurs,motor,cambridge,lands,focused,sought,patients,shape,invasion,chemical,importance,communication,selection,regarding,homes,voivodeship,maintained,borough,failure,aged,passing,agriculture,oregon,teachers,flow,philippines,trail,seventh,portuguese,resistance,reaching,negative,fashion,scheduled,downtown,universities,trained,skills,scenes,views,notably,typical,incident,candidates,engines,decades,composition,commune,chain,inc.,austria,sale,values,employees,chamber,regarded,winners,registered,task,investment,colonial,swiss,user,entirely,flag,stores,closely,entrance,laid,journalist,coal,equal,causes,turkish,quebec,techniques,promote,junction,easily,dates,kentucky,singapore,residence,violence,advance,survey,humans,expressed,passes,streets,distinguished,qualified,folk,establish,egypt,artillery,visual,improved,actual,finishing,medium,protein,switzerland,productions,operate,poverty,neighborhood,organisation,consisting,consecutive,sections,partnership,extension,reaction,factor,costs,bodies,device,ethnic,racial,flat,objects,chapter,improve,musicians,courts,controversy,membership,merged,wars,expedition,interests,arab,comics,gain,describes,mining,bachelor,crisis,joining,decade,
1930s,distributed,habitat,routes,arena,cycle,divisions,briefly,vocals,directors,degrees,object,recordings,installed,adjacent,demand,voted,causing,businesses,ruled,grounds,starred,drawn,opposite,stands,formal,operates,persons,counties,compete,wave,israeli,ncaa,resigned,brief,greece,combination,demographics,historian,contain,commonwealth,musician,collected,argued,louisiana,session,cabinet,parliamentary,electoral,loan,profit,regularly,conservation,islamic,purchase,
17th,charts,residential,earliest,designs,paintings,survived,moth,items,goods,grey,anniversary,criticism,images,discovery,observed,underground,progress,additionally,participate,thousands,reduce,elementary,owners,stating,iraq,resolution,capture,tank,rooms,hollywood,finance,queensland,reign,maintain,iowa,landing,broad,outstanding,circle,path,manufacturing,assistance,sequence,gmina,crossing,leads,universal,shaped,kings,attached,medieval,ages,metro,colony,affected,scholars,oklahoma,coastal,soundtrack,painted,attend,definition,meanwhile,purposes,trophy,require,marketing,popularity,cable,mathematics,mississippi,represents,scheme,appeal,distinct,factors,acid,subjects,roughly,terminal,economics,senator,diocese,prix,contrast,argentina,czech,wings,relief,stages,duties,
16th,novels,accused,whilst,equivalent,charged,measure,documents,couples,request,danish,defensive,guide,devices,statistics,credited,tries,passengers,allied,frame,puerto,peninsula,concluded,instruments,wounded,differences,associate,forests,afterwards,replace,requirements,aviation,solution,offensive,ownership,inner,legislation,hungarian,contributions,actors,translated,denmark,steam,depending,aspects,assumed,injured,severe,admitted,determine,shore,technique,arrival,measures,translation,debuted,delivered,returns,rejected,separated,visitors,damaged,storage,accompanied,markets,industries,losses,gulf,charter,strategy,corporate,socialist,somewhat,significantly,physics,mounted,satellite,experienced,constant,relative,pattern,restored,belgium,connecticut,partners,harvard,retained,networks,protected,mode,artistic,parallel,collaboration,debate,involving,journey,linked,salt,authors,components,context,occupation,requires,occasionally,policies,tamil,ottoman,revolutionary,hungary,poem,versus,gardens,amongst,audio,makeup,frequency,meters,orthodox,continuing,suggests,legislature,coalition,guitarist,eighth,classification,practices,soil,tokyo,instance,limit,coverage,considerable,ranking,colleges,cavalry,centers,daughters,twin,equipped,broadway,narrow,hosts,rates,domain,boundary,arranged,
12th,whereas,brazilian,forming,rating,strategic,competitions,trading,covering,baltimore,commissioner,infrastructure,origins,replacement,praised,disc,collections,expression,ukraine,driven,edited,austrian,solar,ensure,premiered,successor,wooden,operational,hispanic,concerns,rapid,prisoners,childhood,meets,influential,tunnel,employment,tribe,qualifying,adapted,temporary,celebrated,appearing,increasingly,depression,adults,cinema,entering,laboratory,script,flows,romania,accounts,fictional,pittsburgh,achieve,monastery,franchise,formally,tools,newspapers,revival,sponsored,processes,vienna,springs,missions,classified,
13th,annually,branches,lakes,gender,manner,advertising,normally,maintenance,adding,characteristics,integrated,decline,modified,strongly,critic,victims,malaysia,arkansas,nazi,restoration,powered,monument,hundreds,depth,
15th,controversial,admiral,criticized,brick,honorary,initiative,output,visiting,birmingham,progressive,existed,carbon,
1920s,credits,colour,rising,hence,defeating,superior,filmed,listing,column,surrounded,orleans,principles,territories,struck,participation,indonesia,movements,index,commerce,conduct,constitutional,spiritual,ambassador,vocal,completion,edinburgh,residing,tourism,finland,bears,medals,resident,themes,visible,indigenous,involvement,basin,electrical,ukrainian,concerts,boats,styles,processing,rival,drawing,vessels,experimental,declined,touring,supporters,compilation,coaching,cited,dated,roots,string,explained,transit,traditionally,poems,minimum,representation,
14th,releases,effectively,architectural,triple,indicated,greatly,elevation,clinical,printed,
10th,proposal,peaked,producers,romanized,rapidly,stream,innings,meetings,counter,householder,honour,lasted,agencies,document,exists,surviving,experiences,honors,landscape,hurricane,harbor,panel,competing,profile,vessel,farmers,lists,revenue,exception,customers,
11th,participants,wildlife,utah,bible,gradually,preserved,replacing,symphony,begun,longest,siege,provinces,mechanical,genre,transmission,agents,executed,videos,benefits,funded,rated,instrumental,ninth,similarly,dominated,destruction,passage,technologies,thereafter,outer,facing,affiliated,opportunities,instrument,governments,scholar,evolution,channels,shares,sessions,widespread,occasions,engineers,scientists,signing,battery,competitive,alleged,eliminated,supplies,judges,hampshire,regime,portrayed,penalty,taiwan,denied,submarine,scholarship,substantial,transition,victorian,http,nevertheless,filed,supports,continental,tribes,ratio,doubles,useful,honours,blocks,principle,retail,departure,ranks,patrol,yorkshire,vancouver,inter,extent,afghanistan,strip,railways,component,organ,symbol,categories,encouraged,abroad,civilian,periods,traveled,writes,struggle,immediate,recommended,adaptation,egyptian,graduating,assault,drums,nomination,historically,voting,allies,detailed,achievement,percentage,arabic,assist,frequent,toured,apply,and/or,intersection,maine,touchdown,throne,produces,contribution,emerged,obtain,archbishop,seek,researchers,remainder,populations,clan,finnish,overseas,fifa,licensed,chemistry,festivals,mediterranean,injuries,animated,seeking,publisher,volumes,limits,venue,jerusalem,generated,trials,islam,youngest,ruling,glasgow,germans,songwriter,persian,municipalities,donated,viewed,belgian,cooperation,posted,tech,dual,volunteer,settlers,commanded,claiming,approval,delhi,usage,terminus,partly,electricity,locally,editions,premiere,absence,belief,traditions,statue,indicate,manor,stable,attributed,possession,managing,viewers,chile,overview,seed,regulations,essential,minority,cargo,segment,endemic,forum,deaths,monthly,playoffs,erected,practical,machines,suburb,relation,mrs.,descent,indoor,continuous,characterized,solutions,caribbean,rebuilt,serbian,summary,contested,psychology,pitch,attending,muhammad,tenure,drivers,diameter,assets,venture,punk,airlines,concentration,athletes,volunteers,pages,mines,influences,sculpture,protest,ferry,behalf,drafted,apparent,furthermore,ranging,romanian,democracy,lanka,significance,linear,d.c.,certified,voters,recovered,tours,demolished,boundaries,assisted,identify,grades,elsewhere,mechanism,
1940s,reportedly,aimed,conversion,suspended,photography,departments,beijing,locomotives,publicly,dispute,magazines,resort,conventional,platforms,internationally,capita,settlements,dramatic,derby,establishing,involves,statistical,implementation,immigrants,exposed,diverse,layer,vast,ceased,connections,belonged,interstate,uefa,organised,abuse,deployed,cattle,partially,filming,mainstream,reduction,automatic,rarely,subsidiary,decides,merger,comprehensive,displayed,amendment,guinea,exclusively,manhattan,concerning,commons,radical,serbia,baptist,buses,initiated,portrait,harbour,choir,citizen,sole,unsuccessful,manufactured,enforcement,connecting,increases,patterns,sacred,muslims,clothing,hindu,unincorporated,sentenced,advisory,tanks,campaigns,fled,repeated,remote,rebellion,implemented,texts,fitted,tribute,writings,sufficient,ministers,
21st,devoted,jurisdiction,coaches,interpretation,pole,businessman,peru,sporting,prices,cuba,relocated,opponent,arrangement,elite,manufacturer,responded,suitable,distinction,calendar,dominant,tourist,earning,prefecture,ties,preparation,anglo,pursue,worship,archaeological,chancellor,bangladesh,scores,traded,lowest,horror,outdoor,biology,commented,specialized,loop,arriving,farming,housed,historians,'the,patent,pupils,christianity,opponents,athens,northwestern,maps,promoting,reveals,flights,exclusive,lions,norfolk,hebrew,extensively,eldest,shops,acquisition,virtual,renowned,margin,ongoing,essentially,iranian,alternate,sailed,reporting,conclusion,originated,temperatures,exposure,secured,landed,rifle,framework,identical,martial,focuses,topics,ballet,fighters,belonging,wealthy,negotiations,evolved,bases,oriented,acres,democrat,heights,restricted,vary,graduation,aftermath,chess,illness,participating,vertical,collective,immigration,demonstrated,leaf,completing,organic,missile,leeds,eligible,grammar,confederate,improvement,congressional,wealth,cincinnati,spaces,indicates,corresponding,reaches,repair,isolated,taxes,congregation,ratings,leagues,diplomatic,submitted,winds,awareness,photographs,maritime,nigeria,accessible,animation,restaurants,philippine,inaugural,dismissed,armenian,illustrated,reservoir,speakers,programmes,resource,genetic,interviews,camps,regulation,computers,preferred,travelled,comparison,distinctive,recreation,requested,southeastern,dependent,brisbane,breeding,playoff,expand,bonus,gauge,departed,qualification,inspiration,shipping,slaves,variations,shield,theories,munich,recognised,emphasis,favour,variable,seeds,undergraduate,territorial,intellectual,qualify,mini,banned,pointed,democrats,assessment,judicial,examination,attempting,objective,partial,characteristic,hardware,pradesh,execution,ottawa,metre,drum,exhibitions,withdrew,attendance,phrase,journalism,logo,measured,error,christians,trio,protestant,theology,respective,atmosphere,buddhist,substitute,curriculum,fundamental,outbreak,rabbi,intermediate,designation,globe,liberation,simultaneously,diseases,experiments,locomotive,difficulties,mainland,nepal,relegated,contributing,database,developments,veteran,carries,ranges,instruction,lodge,protests,obama,newcastle,experiment,physician,describing,challenges,corruption,delaware,adventures,ensemble,succession,renaissance,tenth,altitude,receives,approached,crosses,syria,croatia,warsaw,professionals,improvements,worn,airline,compound,permitted,preservation,reducing,printing,scientist,activist,comprises,sized,societies,enters,ruler,gospel,earthquake,extend,autonomous,croatian,serial,decorated,relevant,ideal,grows,grass,tier,towers,wider,welfare,columns,alumni,descendants,interface,reserves,banking,colonies,manufacturers,magnetic,closure,pitched,vocalist,preserve,enrolled,cancelled,equation,
2000s,nickname,bulgaria,heroes,exile,mathematical,demands,input,structural,tube,stem,approaches,argentine,axis,manuscript,inherited,depicted,targets,visits,veterans,regard,removal,efficiency,organisations,concepts,lebanon,manga,petersburg,rally,supplied,amounts,yale,tournaments,broadcasts,signals,pilots,azerbaijan,architects,enzyme,literacy,declaration,placing,batting,incumbent,bulgarian,consistent,poll,defended,landmark,southwestern,raid,resignation,travels,casualties,prestigious,namely,aims,recipient,warfare,readers,collapse,coached,controls,volleyball,coup,lesser,verse,pairs,exhibited,proteins,molecular,abilities,integration,consist,aspect,advocate,administered,governing,hospitals,commenced,coins,lords,variation,resumed,canton,artificial,elevated,palm,difficulty,civic,efficient,northeastern,inducted,radiation,affiliate,boards,stakes,byzantine,consumption,freight,interaction,oblast,numbered,seminary,contracts,extinct,predecessor,bearing,cultures,functional,neighboring,revised,cylinder,grants,narrative,reforms,athlete,tales,reflect,presidency,compositions,specialist,cricketer,founders,sequel,widow,disbanded,associations,backed,thereby,pitcher,commanding,boulevard,singers,crops,militia,reviewed,centres,waves,consequently,fortress,tributary,portions,bombing,excellence,nest,payment,mars,plaza,unity,victories,scotia,farms,nominations,variant,attacking,suspension,installation,graphics,estates,comments,acoustic,destination,venues,surrender,retreat,libraries,quarterback,customs,berkeley,collaborated,gathered,syndrome,dialogue,recruited,shanghai,neighbouring,psychological,saudi,moderate,exhibit,innovation,depot,binding,brunswick,situations,certificate,actively,shakespeare,editorial,presentation,ports,relay,nationalist,methodist,archives,experts,maintains,collegiate,bishops,maintaining,temporarily,embassy,essex,wellington,connects,reformed,bengal,recalled,inches,doctrine,deemed,legendary,reconstruction,statements,palestinian,meter,achievements,riders,interchange,spots,auto,accurate,chorus,dissolved,missionary,thai,operators,e.g.,generations,failing,delayed,cork,nashville,perceived,venezuela,cult,emerging,tomb,abolished,documented,gaining,canyon,episcopal,stored,assists,compiled,kerala,kilometers,mosque,grammy,theorem,unions,segments,glacier,arrives,theatrical,circulation,conferences,chapters,displays,circular,authored,conductor,fewer,dimensional,nationwide,liga,yugoslavia,peer,vietnamese,fellowship,armies,regardless,relating,dynamic,politicians,mixture,serie,somerset,imprisoned,posts,beliefs,beta,layout,independently,electronics,provisions,fastest,logic,headquartered,creates,challenged,beaten,appeals,plains,protocol,graphic,accommodate,iraqi,midfielder,span,commentary,freestyle,reflected,palestine,lighting,burial,virtually,backing,prague,tribal,heir,identification,prototype,criteria,dame,arch,tissue,footage,extending,procedures,predominantly,updated,rhythm,preliminary,cafe,disorder,prevented,suburbs,discontinued,retiring,oral,followers,extends,massacre,journalists,conquest,larvae,pronounced,behaviour,diversity,sustained,addressed,geographic,restrictions,voiced,milwaukee,dialect,quoted,grid,nationally,nearest,roster,twentieth,separation,indies,manages,citing,intervention,guidance,severely,migration,artwork,focusing,rivals,trustees,varied,enabled,committees,centered,skating,slavery,cardinals,forcing,tasks,auckland,youtube,argues,colored,advisor,mumbai,requiring,theological,registration,refugees,nineteenth,survivors,runners,colleagues,priests,contribute,variants,workshop,concentrated,creator,lectures,temples,exploration,requirement,interactive,navigation,companion,perth,allegedly,releasing,citizenship,observation,stationed,ph.d.,sheep,breed,discovers,encourage,kilometres,journals,performers,isle,saskatchewan,hybrid,hotels,lancashire,dubbed,airfield,anchor,suburban,theoretical,sussex,anglican,stockholm,permanently,upcoming,privately,receiver,optical,highways,congo,colours,aggregate,authorized,repeatedly,varies,fluid,innovative,transformed,praise,convoy,demanded,discography,attraction,export,audiences,ordained,enlisted,occasional,westminster,syrian,heavyweight,bosnia,consultant,eventual,improving,aires,wickets,epic,reactions,scandal,i.e.,discrimination,buenos,patron,investors,conjunction,testament,construct,encountered,celebrity,expanding,georgian,brands,retain,underwent,algorithm,foods,provision,orbit,transformation,associates,tactical,compact,varieties,stability,refuge,gathering,moreover,manila,configuration,gameplay,discipline,entity,comprising,composers,skill,monitoring,ruins,museums,sustainable,aerial,altered,codes,voyage,friedrich,conflicts,storyline,travelling,conducting,merit,indicating,referendum,currency,encounter,particles,automobile,workshops,acclaimed,inhabited,doctorate,cuban,phenomenon,dome,enrollment,tobacco,governance,trend,equally,manufacture,hydrogen,grande,compensation,download,pianist,grain,shifted,neutral,evaluation,define,cycling,seized,array,relatives,motors,firms,varying,automatically,restore,nicknamed,findings,governed,investigate,manitoba,administrator,vital,integral,indonesian,confusion,publishers,enable,geographical,inland,naming,civilians,reconnaissance,indianapolis,lecturer,deer,tourists,exterior,rhode,bassist,symbols,scope,ammunition,yuan,poets,punjab,nursing,cent,developers,estimates,presbyterian,nasa,holdings,generate,renewed,computing,cyprus,arabia,duration,compounds,gastropod,permit,valid,touchdowns,facade,interactions,mineral,practiced,allegations,consequence,goalkeeper,baronet,copyright,uprising,carved,targeted,competitors,mentions,sanctuary,fees,pursued,tampa,chronicle,capabilities,specified,specimens,toll,accounting,limestone,staged,upgraded,philosophical,streams,guild,revolt,rainfall,supporter,princeton,terrain,hometown,probability,assembled,paulo,surrey,voltage,developer,destroyer,floors,lineup,curve,prevention,potentially,onwards,trips,imposed,hosting,striking,strict,admission,apartments,solely,utility,proceeded,observations,euro,incidents,vinyl,profession,haven,distant,expelled,rivalry,runway,torpedo,zones,shrine,dimensions,investigations,lithuania,idaho,pursuit,copenhagen,considerably,locality,wireless,decrease,genes,thermal,deposits,hindi,habitats,withdrawn,biblical,monuments,casting,plateau,thesis,managers,flooding,assassination,acknowledged,interim,inscription,guided,pastor,finale,insects,transported,activists,marshal,intensity,airing,cardiff,proposals,lifestyle,prey,herald,capitol,aboriginal,measuring,lasting,interpreted,occurring,desired,drawings,healthcare,panels,elimination,oslo,ghana,blog,sabha,intent,superintendent,governors,bankruptcy,p.m.,equity,disk,layers,slovenia,prussia,quartet,mechanics,graduates,politically,monks,screenplay,nato,absorbed,topped,petition,bold,morocco,exhibits,canterbury,publish,rankings,crater,dominican,enhanced,planes,lutheran,governmental,joins,collecting,brussels,unified,streak,strategies,flagship,surfaces,oval,archive,etymology,imprisonment,instructor,noting,remix,opposing,servant,rotation,width,trans,maker,synthesis,excess,tactics,snail,ltd.,lighthouse,sequences,cornwall,plantation,mythology,performs,foundations,populated,horizontal,speedway,activated,performer,diving,conceived,edmonton,subtropical,environments,prompted,semifinals,caps,bulk,treasury,recreational,telegraph,continent,portraits,relegation,catholics,graph,velocity,rulers,endangered,secular,observer,learns,inquiry,idol,dictionary,certification,estimate,cluster,armenia,observatory,revived,nadu,consumers,hypothesis,manuscripts,contents,arguments,editing,trails,arctic,essays,belfast,acquire,promotional,undertaken,corridor,proceedings,antarctic,millennium,labels,delegates,vegetation,acclaim,directing,substance,outcome,diploma,philosopher,malta,albanian,vicinity,degc,legends,regiments,consent,terrorist,scattered,presidents,gravity,orientation,deployment,duchy,refuses,estonia,crowned,separately,renovation,rises,wilderness,objectives,agreements,empress,slopes,inclusion,equality,decree,ballot,criticised,rochester,recurring,struggled,disabled,henri,poles,prussian,convert,bacteria,poorly,sudan,geological,wyoming,consistently,minimal,withdrawal,interviewed,proximity,repairs,initiatives,pakistani,republicans,propaganda,viii,abstract,commercially,availability,mechanisms,naples,discussions,underlying,lens,proclaimed,advised,spelling,auxiliary,attract,lithuanian,editors,o'brien,accordance,measurement,novelist,ussr,formats,councils,contestants,indie,facebook,parishes,barrier,battalions,sponsor,consulting,terrorism,implement,uganda,crucial,unclear,notion,distinguish,collector,attractions,filipino,ecology,investments,capability,renovated,iceland,albania,accredited,scouts,armor,sculptor,cognitive,errors,gaming,condemned,successive,consolidated,baroque,entries,regulatory,reserved,treasurer,variables,arose,technological,rounded,provider,rhine,agrees,accuracy,genera,decreased,frankfurt,ecuador,edges,particle,rendered,calculated,careers,faction,rifles,americas,gaelic,portsmouth,resides,merchants,fiscal,premises,coin,draws,presenter,acceptance,ceremonies,pollution,consensus,membrane,brigadier,nonetheless,genres,supervision,predicted,magnitude,finite,differ,ancestry,vale,delegation,removing,proceeds,placement,emigrated,siblings,molecules,payments,considers,demonstration,proportion,newer,valve,achieving,confederation,continuously,luxury,notre,introducing,coordinates,charitable,squadrons,disorders,geometry,winnipeg,ulster,loans,longtime,receptor,preceding,belgrade,mandate,wrestler,neighbourhood,factories,buddhism,imported,sectors,protagonist,steep,elaborate,prohibited,artifacts,prizes,pupil,cooperative,sovereign,subspecies,carriers,allmusic,nationals,settings,autobiography,neighborhoods,analog,facilitate,voluntary,jointly,newfoundland,organizing,raids,exercises,nobel,machinery,baltic,crop,granite,dense,websites,mandatory,seeks,surrendered,anthology,comedian,bombs,slot,synopsis,critically,arcade,marking,equations,halls,indo,inaugurated,embarked,speeds,clause,invention,premiership,likewise,presenting,demonstrate,designers,organize,examined,km/h,bavaria,troop,referee,detection,zurich,prairie,rapper,wingspan,eurovision,luxembourg,slovakia,inception,disputed,mammals,entrepreneur,makers,evangelical,yield,clergy,trademark,defunct,allocated,depicting,volcanic,batted,conquered,sculptures,providers,reflects,armoured,locals,walt,herzegovina,contracted,entities,sponsorship,prominence,flowing,ethiopia,marketed,corporations,withdraw,carnegie,induced,investigated,portfolio,flowering,opinions,viewing,classroom,donations,bounded,perception,leicester,fruits,charleston,academics,statute,complaints,smallest,deceased,petroleum,resolved,commanders,algebra,southampton,modes,cultivation,transmitter,spelled,obtaining,sizes,acre,pageant,bats,abbreviated,correspondence,barracks,feast,tackles,raja,derives,geology,disputes,translations,counted,constantinople,seating,macedonia,preventing,accommodation,homeland,explored,invaded,provisional,transform,sphere,unsuccessfully,missionaries,conservatives,highlights,traces,organisms,openly,dancers,fossils,absent,monarchy,combining,lanes,stint,dynamics,chains,missiles,screening,module,tribune,generating,miners,nottingham,seoul,unofficial,owing,linking,rehabilitation,citation,louisville,mollusk,depicts,differential,zimbabwe,kosovo,recommendations,responses,pottery,scorer,aided,exceptions,dialects,telecommunications,defines,elderly,lunar,coupled,flown,
25th,espn,formula_1,bordered,fragments,guidelines,gymnasium,valued,complexity,papal,presumably,maternal,challenging,reunited,advancing,comprised,uncertain,favorable,twelfth,correspondent,nobility,livestock,expressway,chilean,tide,researcher,emissions,profits,lengths,accompanying,witnessed,itunes,drainage,slope,reinforced,feminist,sanskrit,develops,physicians,outlets,isbn,coordinator,averaged,termed,occupy,diagnosed,yearly,humanitarian,prospect,spacecraft,stems,enacted,linux,ancestors,karnataka,constitute,immigrant,thriller,ecclesiastical,generals,celebrations,enhance,heating,advocated,evident,advances,bombardment,watershed,shuttle,wicket,twitter,adds,branded,teaches,schemes,pension,advocacy,conservatory,cairo,varsity,freshwater,providence,seemingly,shells,cuisine,specially,peaks,intensive,publishes,trilogy,skilled,nacional,unemployment,destinations,parameters,verses,trafficking,determination,infinite,savings,alignment,linguistic,countryside,dissolution,measurements,advantages,licence,subfamily,highlands,modest,regent,algeria,crest,teachings,knockout,brewery,combine,conventions,descended,chassis,primitive,fiji,explicitly,cumberland,uruguay,laboratories,bypass,elect,informal,preceded,holocaust,tackle,minneapolis,quantity,securities,console,doctoral,religions,commissioners,expertise,unveiled,precise,diplomat,standings,infant,disciplines,sicily,endorsed,systematic,charted,armored,mild,lateral,townships,hurling,prolific,invested,wartime,compatible,galleries,moist,battlefield,decoration,convent,tubes,terrestrial,nominee,requests,delegate,leased,dubai,polar,applying,addresses,munster,sings,commercials,teamed,dances,eleventh,midland,cedar,flee,sandstone,snails,inspection,divide,asset,themed,comparable,paramount,dairy,archaeology,intact,institutes,rectangular,instances,phases,reflecting,substantially,applies,vacant,lacked,copa,coloured,encounters,sponsors,encoded,possess,revenues,ucla,chaired,a.m.,enabling,playwright,stoke,sociology,tibetan,frames,motto,financing,illustrations,gibraltar,chateau,bolivia,transmitted,enclosed,persuaded,urged,folded,suffolk,regulated,bros.,submarines,myth,oriental,malaysian,effectiveness,narrowly,acute,sunk,replied,utilized,tasmania,consortium,quantities,gains,parkway,enlarged,sided,employers,adequate,accordingly,assumption,ballad,mascot,distances,peaking,saxony,projected,affiliation,limitations,metals,guatemala,scots,theaters,kindergarten,verb,employer,differs,discharge,controller,seasonal,marching,guru,campuses,avoided,vatican,maori,excessive,chartered,modifications,caves,monetary,sacramento,mixing,institutional,celebrities,irrigation,shapes,broadcaster,anthem,attributes,demolition,offshore,specification,surveys,yugoslav,contributor,auditorium,lebanese,capturing,airports,classrooms,chennai,paths,tendency,determining,lacking,upgrade,sailors,detected,kingdoms,sovereignty,freely,decorative,momentum,scholarly,georges,gandhi,speculation,transactions,undertook,interact,similarities,cove,teammate,constituted,painters,tends,madagascar,partnerships,afghan,personalities,attained,rebounds,masses,synagogue,reopened,asylum,embedded,imaging,catalogue,defenders,taxonomy,fiber,afterward,appealed,communists,lisbon,rica,judaism,adviser,batsman,ecological,commands,lgbt,cooling,accessed,wards,shiva,employs,thirds,scenic,worcester,tallest,contestant,humanities,economist,textile,constituencies,motorway,tram,percussion,cloth,leisure,
1880s,baden,flags,resemble,riots,coined,sitcom,composite,implies,daytime,tanzania,penalties,optional,competitor,excluded,steering,reversed,autonomy,reviewer,breakthrough,professionally,damages,pomeranian,deputies,valleys,ventures,highlighted,electorate,mapping,shortened,executives,tertiary,specimen,launching,bibliography,sank,pursuing,binary,descendant,marched,natives,ideology,turks,adolf,archdiocese,tribunal,exceptional,nigerian,preference,fails,loading,comeback,vacuum,favored,alter,remnants,consecrated,spectators,trends,patriarch,feedback,paved,sentences,councillor,astronomy,advocates,broader,commentator,commissions,identifying,revealing,theatres,incomplete,enables,constituent,reformation,tract,haiti,atmospheric,screened,explosive,czechoslovakia,acids,symbolic,subdivision,liberals,incorporate,challenger,erie,filmmaker,laps,kazakhstan,organizational,evolutionary,chemicals,dedication,riverside,fauna,moths,maharashtra,annexed,gen.,resembles,underwater,garnered,timeline,remake,suited,educator,hectares,automotive,feared,latvia,finalist,narrator,portable,airways,plaque,designing,villagers,licensing,flank,statues,struggles,deutsche,migrated,cellular,jacksonville,wimbledon,defining,highlight,preparatory,planets,cologne,employ,frequencies,detachment,readily,libya,resign,halt,helicopters,reef,landmarks,collaborative,irregular,retaining,helsinki,folklore,weakened,viscount,interred,professors,memorable,mega,repertoire,rowing,dorsal,albeit,progressed,operative,coronation,liner,telugu,domains,philharmonic,detect,bengali,synthetic,tensions,atlas,dramatically,paralympics,xbox,shire,kiev,lengthy,sued,notorious,seas,screenwriter,transfers,aquatic,pioneers,unesco,radius,abundant,tunnels,syndicated,inventor,accreditation,janeiro,exeter,ceremonial,omaha,cadet,predators,resided,prose,slavic,precision,abbot,deity,engaging,cambodia,estonian,compliance,demonstrations,protesters,reactor,commodore,successes,chronicles,mare,extant,listings,minerals,tonnes,parody,cultivated,traders,pioneering,supplement,slovak,preparations,collision,partnered,vocational,atoms,malayalam,welcomed,documentation,curved,functioning,presently,formations,incorporates,nazis,botanical,nucleus,ethical,greeks,metric,automated,whereby,stance,europeans,duet,disability,purchasing,email,telescope,displaced,sodium,comparative,processor,inning,precipitation,aesthetic,import,coordination,feud,alternatively,mobility,tibet,regained,succeeding,hierarchy,apostolic,catalog,reproduction,inscriptions,vicar,clusters,posthumously,rican,loosely,additions,photographic,nowadays,selective,derivative,keyboards,guides,collectively,affecting,combines,operas,networking,decisive,terminated,continuity,finishes,ancestor,consul,heated,simulation,leipzig,incorporating,georgetown,formula_2,circa,forestry,portrayal,councillors,advancement,complained,forewings,confined,transaction,definitions,reduces,televised,
1890s,rapids,phenomena,belarus,alps,landscapes,quarterly,specifications,commemorate,continuation,isolation,antenna,downstream,patents,ensuing,tended,saga,lifelong,columnist,labeled,gymnastics,papua,anticipated,demise,encompasses,madras,antarctica,interval,icon,rams,midlands,ingredients,priory,strengthen,rouge,explicit,gaza,aging,securing,anthropology,listeners,adaptations,underway,vista,malay,fortified,lightweight,violations,concerto,financed,jesuit,observers,trustee,descriptions,nordic,resistant,opted,accepts,prohibition,andhra,inflation,negro,wholly,imagery,spur,instructed,gloucester,cycles,middlesex,destroyers,statewide,evacuated,hyderabad,peasants,mice,shipyard,coordinate,pitching,colombian,exploring,numbering,compression,countess,hiatus,exceed,raced,archipelago,traits,soils,o'connor,vowel,android,facto,angola,amino,holders,logistics,circuits,emergence,kuwait,partition,emeritus,outcomes,submission,promotes,barack,negotiated,loaned,stripped,
50th,excavations,treatments,fierce,participant,exports,decommissioned,cameo,remarked,residences,fuselage,mound,undergo,quarry,node,midwest,specializing,occupies,etc.,showcase,molecule,offs,modules,salon,exposition,revision,peers,positioned,hunters,competes,algorithms,reside,zagreb,calcium,uranium,silicon,airs,counterpart,outlet,collectors,sufficiently,canberra,inmates,anatomy,ensuring,curves,aviv,firearms,basque,volcano,thrust,sheikh,extensions,installations,aluminum,darker,sacked,emphasized,aligned,asserted,pseudonym,spanning,decorations,eighteenth,orbital,spatial,subdivided,notation,decay,macedonian,amended,declining,cyclist,feat,unusually,commuter,birthplace,latitude,activation,overhead,
30th,finalists,whites,encyclopedia,tenor,qatar,survives,complement,concentrations,uncommon,astronomical,bangalore,pius,genome,memoir,recruit,prosecutor,modification,paired,container,basilica,arlington,displacement,germanic,mongolia,proportional,debates,matched,calcutta,rows,tehran,aerospace,prevalent,arise,lowland,
24th,spokesman,supervised,advertisements,clash,tunes,revelation,wanderers,quarterfinals,fisheries,steadily,memoirs,pastoral,renewable,confluence,acquiring,strips,slogan,upstream,scouting,analyst,practitioners,turbine,strengthened,heavier,prehistoric,plural,excluding,isles,persecution,turin,rotating,villain,hemisphere,unaware,arabs,corpus,relied,singular,unanimous,schooling,passive,angles,dominance,instituted,aria,outskirts,balanced,beginnings,financially,structured,parachute,viewer,attitudes,subjected,escapes,derbyshire,erosion,addressing,styled,declaring,originating,colts,adjusted,stained,occurrence,fortifications,baghdad,nitrogen,localities,yemen,galway,debris,lodz,victorious,pharmaceutical,substances,unnamed,dwelling,atop,developmental,activism,voter,refugee,forested,relates,overlooking,genocide,kannada,insufficient,oversaw,partisan,dioxide,recipients,factions,mortality,capped,expeditions,receptors,reorganized,prominently,atom,flooded,flute,orchestral,scripts,mathematician,airplay,detached,rebuilding,dwarf,brotherhood,salvation,expressions,arabian,cameroon,poetic,recruiting,bundesliga,inserted,scrapped,disabilities,evacuation,pasha,undefeated,crafts,rituals,aluminium,norm,pools,submerged,occupying,pathway,exams,prosperity,wrestlers,promotions,basal,permits,nationalism,trim,merge,gazette,tributaries,transcription,caste,porto,emerge,modeled,adjoining,counterparts,paraguay,redevelopment,renewal,unreleased,equilibrium,similarity,minorities,soviets,comprise,nodes,tasked,unrelated,expired,johan,precursor,examinations,electrons,socialism,exiled,admiralty,floods,wigan,nonprofit,lacks,brigades,screens,repaired,hanover,fascist,labs,osaka,delays,judged,statutory,colt,col.,offspring,solving,bred,assisting,retains,somalia,grouped,corresponds,tunisia,chaplain,eminent,chord,
22nd,spans,viral,innovations,possessions,mikhail,kolkata,icelandic,implications,introduces,racism,workforce,alto,compulsory,admits,censorship,onset,reluctant,inferior,iconic,progression,liability,turnout,satellites,behavioral,coordinated,exploitation,posterior,averaging,fringe,krakow,mountainous,greenwich,para,plantations,reinforcements,offerings,famed,intervals,constraints,individually,nutrition,
1870s,taxation,threshold,tomatoes,fungi,contractor,ethiopian,apprentice,diabetes,wool,gujarat,honduras,norse,bucharest,
23rd,arguably,accompany,prone,teammates,perennial,vacancy,polytechnic,deficit,okinawa,functionality,reminiscent,tolerance,transferring,myanmar,concludes,neighbours,hydraulic,economically,slower,plots,charities,synod,investor,catholicism,identifies,bronx,interpretations,adverse,judiciary,hereditary,nominal,sensor,symmetry,cubic,triangular,tenants,divisional,outreach,representations,passages,undergoing,cartridge,testified,exceeded,impacts,limiting,railroads,defeats,regain,rendering,humid,retreated,reliability,governorate,antwerp,infamous,implied,packaging,lahore,trades,billed,extinction,ecole,rejoined,recognizes,projection,qualifications,stripes,forts,socially,lexington,accurately,sexuality,westward,wikipedia,pilgrimage,abolition,choral,stuttgart,nests,expressing,strikeouts,assessed,monasteries,reconstructed,humorous,marxist,fertile,consort,urdu,patronage,peruvian,devised,lyric,baba,nassau,communism,extraction,popularly,markings,inability,litigation,accounted,processed,emirates,tempo,cadets,eponymous,contests,broadly,oxide,courtyard,frigate,directory,apex,outline,regency,chiefly,patrols,secretariat,cliffs,residency,privy,armament,australians,dorset,geometric,genetics,scholarships,fundraising,flats,demographic,multimedia,captained,documentaries,updates,canvas,blockade,guerrilla,songwriting,administrators,intake,drought,implementing,fraction,cannes,refusal,inscribed,meditation,announcing,exported,ballots,formula_3,curator,basel,arches,flour,subordinate,confrontation,gravel,simplified,berkshire,patriotic,tuition,employing,servers,castile,posting,combinations,discharged,miniature,mutations,constellation,incarnation,ideals,necessity,granting,ancestral,crowds,pioneered,mormon,methodology,rama,indirect,complexes,bavarian,patrons,uttar,skeleton,bollywood,flemish,viable,bloc,breeds,triggered,sustainability,tailed,referenced,comply,takeover,latvian,homestead,platoon,communal,nationality,excavated,targeting,sundays,posed,physicist,turret,endowment,marginal,dispatched,commentators,renovations,attachment,collaborations,ridges,barriers,obligations,shareholders,prof.,defenses,presided,rite,backgrounds,arbitrary,affordable,gloucestershire,thirteenth,inlet,miniseries,possesses,detained,pressures,subscription,realism,solidarity,proto,postgraduate,noun,burmese,abundance,homage,reasoning,anterior,robust,fencing,shifting,vowels,garde,profitable,loch,anchored,coastline,samoa,terminology,prostitution,magistrate,venezuelan,speculated,regulate,fixture,colonists,digit,induction,manned,expeditionary,computational,centennial,principally,vein,preserving,engineered,numerical,cancellation,conferred,continually,borne,seeded,advertisement,unanimously,treaties,infections,ions,sensors,lowered,amphibious,lava,fourteenth,bahrain,niagara,nicaragua,squares,congregations,
26th,periodic,proprietary,
1860s,contributors,seller,overs,emission,procession,presumed,illustrator,zinc,gases,tens,applicable,stretches,reproductive,sixteenth,apparatus,accomplishments,canoe,guam,oppose,recruitment,accumulated,limerick,namibia,staging,remixes,ordnance,uncertainty,pedestrian,temperate,treason,deposited,registry,cerambycidae,attracting,lankan,reprinted,shipbuilding,homosexuality,neurons,eliminating,
1900s,resume,ministries,beneficial,blackpool,surplus,northampton,licenses,constructing,announcer,standardized,alternatives,taipei,inadequate,failures,yields,medalist,titular,obsolete,torah,burlington,predecessors,lublin,retailers,castles,depiction,issuing,gubernatorial,propulsion,tiles,damascus,discs,alternating,pomerania,peasant,tavern,redesignated,
27th,illustration,focal,mans,codex,specialists,productivity,antiquity,controversies,promoter,pits,companions,behaviors,lyrical,prestige,creativity,swansea,dramas,approximate,feudal,tissues,crude,campaigned,unprecedented,chancel,amendments,surroundings,allegiance,exchanges,align,firmly,optimal,commenting,reigning,landings,obscure,
1850s,contemporaries,paternal,devi,endurance,communes,incorporation,denominations,exchanged,routing,resorts,amnesty,slender,explores,suppression,heats,pronunciation,centred,coupe,stirling,freelance,treatise,linguistics,laos,informs,discovering,pillars,encourages,halted,robots,definitive,maturity,tuberculosis,venetian,silesian,unchanged,originates,mali,lincolnshire,quotes,seniors,premise,contingent,distribute,danube,gorge,logging,dams,curling,seventeenth,specializes,wetlands,deities,assess,thickness,rigid,culminated,utilities,substrate,insignia,nile,assam,shri,currents,suffrage,canadians,mortar,asteroid,bosnian,discoveries,enzymes,sanctioned,replica,hymn,investigators,tidal,dominate,derivatives,converting,leinster,verbs,honoured,criticisms,dismissal,discrete,masculine,reorganization,unlimited,wurttemberg,sacks,allocation,bahn,jurisdictions,participates,lagoon,famine,communion,culminating,surveyed,shortage,cables,intersects,cassette,foremost,adopting,solicitor,outright,bihar,reissued,farmland,dissertation,turnpike,baton,photographed,christchurch,kyoto,finances,rails,histories,linebacker,kilkenny,accelerated,dispersed,handicap,absorption,rancho,ceramic,captivity,cites,font,weighed,mater,utilize,bravery,extract,validity,slovenian,seminars,discourse,ranged,duel,ironically,warships,sega,temporal,surpassed,prolonged,recruits,northumberland,greenland,contributes,patented,eligibility,unification,discusses,reply,translates,beirut,relies,torque,northward,reviewers,monastic,accession,neural,tramway,heirs,sikh,subscribers,amenities,taliban,audit,rotterdam,wagons,kurdish,favoured,combustion,meanings,persia,browser,diagnostic,niger,formula_4,denomination,dividing,parameter,branding,badminton,leningrad,sparked,hurricanes,beetles,propeller,mozambique,refined,diagram,exhaust,vacated,readings,markers,reconciliation,determines,concurrent,imprint,primera,organism,demonstrating,filmmakers,vanderbilt,affiliates,traction,evaluated,defendants,megachile,investigative,zambia,assassinated,rewarded,probable,staffordshire,foreigners,directorate,nominees,consolidation,commandant,reddish,differing,unrest,drilling,bohemia,resembling,instrumentation,considerations,haute,promptly,variously,dwellings,clans,tablet,enforced,cockpit,semifinal,hussein,prisons,ceylon,emblem,monumental,phrases,correspond,crossover,outlined,characterised,acceleration,caucus,crusade,protested,composing,rajasthan,habsburg,rhythmic,interception,inherent,cooled,ponds,spokesperson,gradual,consultation,kuala,globally,suppressed,builders,avengers,suffix,integer,enforce,fibers,unionist,proclamation,uncovered,infrared,adapt,eisenhower,utilizing,captains,stretched,observing,assumes,prevents,analyses,saxophone,caucasus,notices,villains,dartmouth,mongol,hostilities,stretching,veterinary,lenses,texture,prompting,overthrow,excavation,islanders,masovian,battleship,biographer,replay,degradation,departing,luftwaffe,fleeing,oversight,immigrated,serbs,fishermen,strengthening,respiratory,italians,denotes,radial,escorted,motif,wiltshire,expresses,accessories,reverted,establishments,inequality,protocols,charting,famously,satirical,entirety,trench,friction,atletico,sampling,subset,weekday,upheld,sharply,correlation,incorrect,mughal,travelers,hasan,earnings,offset,evaluate,specialised,recognizing,flexibility,nagar,postseason,algebraic,capitalism,crystals,melodies,polynomial,racecourse,defences,austro,wembley,attracts,anarchist,resurrection,reviewing,decreasing,prefix,ratified,mutation,displaying,separating,restoring,assemblies,ordinance,priesthood,cruisers,appoint,moldova,imports,directive,epidemic,militant,senegal,signaling,restriction,critique,retrospective,nationalists,undertake,sioux,canals,algerian,redesigned,philanthropist,depict,conceptual,turbines,intellectuals,eastward,applicants,contractors,vendors,undergone,namesake,ensured,tones,substituted,hindwings,arrests,tombs,transitional,principality,reelection,taiwanese,cavity,manifesto,broadcasters,spawned,thoroughbred,identities,generators,proposes,hydroelectric,johannesburg,cortex,scandinavian,killings,aggression,boycott,catalyst,physiology,fifteenth,waterfront,chromosome,organist,costly,calculation,cemeteries,flourished,recognise,juniors,merging,disciples,ashore,workplace,enlightenment,diminished,debated,hailed,podium,educate,mandated,distributor,litre,electromagnetic,flotilla,estuary,peterborough,staircase,selections,melodic,confronts,wholesale,integrate,intercepted,catalonia,unite,immense,palatinate,switches,earthquakes,occupational,successors,praising,concluding,faculties,firstly,overhaul,empirical,metacritic,inauguration,evergreen,laden,winged,philosophers,amalgamated,geoff,centimeters,napoleonic,upright,planting,brewing,fined,sensory,migrants,wherein,inactive,headmaster,warwickshire,siberia,terminals,denounced,academia,divinity,bilateral,clive,omitted,peerage,relics,apartheid,syndicate,fearing,fixtures,desirable,dismantled,ethnicity,valves,biodiversity,aquarium,ideological,visibility,creators,analyzed,tenant,balkan,postwar,supplier,smithsonian,risen,morphology,digits,bohemian,wilmington,vishnu,demonstrates,aforementioned,biographical,mapped,khorasan,phosphate,presentations,ecosystem,processors,calculations,mosaic,clashes,penned,recalls,coding,angular,lattice,macau,accountability,extracted,pollen,therapeutic,overlap,violinist,deposed,candidacy,infants,covenant,bacterial,restructuring,dungeons,ordination,conducts,builds,invasive,customary,concurrently,relocation,cello,statutes,borneo,entrepreneurs,sanctions,packet,rockefeller,piedmont,comparisons,waterfall,receptions,glacial,surge,signatures,alterations,advertised,enduring,somali,botanist,
100th,canonical,motifs,longitude,circulated,alloy,indirectly,margins,preserves,internally,besieged,shale,peripheral,drained,baseman,reassigned,tobago,soloist,socio,grazing,contexts,roofs,portraying,ottomans,shrewsbury,noteworthy,lamps,supplying,beams,qualifier,portray,greenhouse,stronghold,hitter,rites,cretaceous,urging,derive,nautical,aiming,fortunes,verde,donors,reliance,exceeding,exclusion,exercised,simultaneous,continents,guiding,pillar,gradient,poznan,eruption,clinics,moroccan,indicator,trams,piers,parallels,fragment,teatro,potassium,satire,compressed,businessmen,influx,seine,perspectives,shelters,decreases,mounting,formula_5,confederacy,equestrian,expulsion,mayors,liberia,resisted,affinity,shrub,unexpectedly,stimulus,amtrak,deported,perpendicular,statesman,wharf,storylines,romanesque,weights,surfaced,interceptions,dhaka,crambidae,orchestras,rwanda,conclude,constitutes,subsidiaries,admissions,prospective,shear,bilingual,campaigning,presiding,domination,commemorative,trailing,confiscated,petrol,acquisitions,polymer,onlyinclude,chloride,elevations,resolutions,hurdles,pledged,likelihood,objected,erect,encoding,databases,aristotle,hindus,marshes,bowled,ministerial,grange,acronym,annexation,squads,ambient,pilgrims,botany,sofla,astronomer,planetary,descending,bestowed,ceramics,diplomacy,metabolism,colonization,potomac,africans,engraved,recycling,commitments,resonance,disciplinary,jamaican,narrated,spectral,tipperary,waterford,stationary,arbitration,transparency,threatens,crossroads,slalom,oversee,centenary,incidence,economies,livery,moisture,newsletter,autobiographical,bhutan,propelled,dependence,moderately,adobe,barrels,subdivisions,outlook,labelled,stratford,arising,diaspora,barony,automobiles,ornamental,slated,norms,primetime,generalized,analysts,vectors,libyan,yielded,certificates,rooted,vernacular,belarusian,marketplace,prediction,fairfax,malawi,viruses,wooded,demos,mauritius,prosperous,coincided,liberties,huddersfield,ascent,warnings,hinduism,glucose,pulitzer,unused,filters,illegitimate,acquitted,protestants,canopy,staple,psychedelic,winding,abbas,pathways,cheltenham,lagos,niche,invaders,proponents,barred,conversely,doncaster,recession,embraced,rematch,concession,emigration,upgrades,bowls,tablets,remixed,loops,kensington,shootout,monarchs,organizers,harmful,punjabi,broadband,exempt,neolithic,profiles,portrays,parma,cyrillic,quasi,attested,regimental,revive,torpedoes,heidelberg,rhythms,spherical,denote,hymns,icons,theologian,qaeda,exceptionally,reinstated,comune,playhouse,lobbying,grossing,viceroy,delivers,visually,armistice,utrecht,syllable,vertices,analogous,annex,refurbished,entrants,knighted,disciple,rhetoric,detailing,inactivated,ballads,algae,intensified,favourable,sanitation,receivers,pornography,commemorated,cannons,entrusted,manifold,photographers,pueblo,textiles,steamer,myths,marquess,onward,liturgical,romney,uzbekistan,consistency,denoted,hertfordshire,convex,hearings,sulfur,universidad,podcast,selecting,emperors,arises,justices,
1840s,mongolian,exploited,termination,digitally,infectious,sedan,symmetric,penal,illustrate,formulation,attribute,problematic,modular,inverse,berth,searches,rutgers,leicestershire,enthusiasts,lockheed,upwards,transverse,accolades,backward,archaeologists,crusaders,nuremberg,defects,ferries,vogue,containers,openings,transporting,separates,lumpur,purchases,attain,wichita,topology,woodlands,deleted,periodically,syntax,overturned,musicals,corp.,strasbourg,instability,nationale,prevailing,cache,marathi,versailles,unmarried,grains,straits,antagonist,segregation,assistants,d'etat,contention,dictatorship,unpopular,motorcycles,criterion,analytical,salzburg,militants,hanged,worcestershire,emphasize,paralympic,erupted,convinces,offences,oxidation,nouns,populace,atari,spanned,hazardous,educators,playable,births,baha'i,preseason,generates,invites,meteorological,handbook,foothills,enclosure,diffusion,mirza,convergence,geelong,coefficient,connector,formula_6,cylindrical,disasters,pleaded,knoxville,contamination,compose,libertarian,arrondissement,franciscan,intercontinental,susceptible,initiation,malaria,unbeaten,consonants,waived,saloon,popularized,estadio,pseudo,interdisciplinary,transports,transformers,carriages,bombings,revolves,ceded,collaborator,celestial,exemption,colchester,maltese,oceanic,ligue,crete,shareholder,routed,depictions,ridden,advisors,calculate,lending,guangzhou,simplicity,newscast,scheduling,snout,eliot,undertaking,armenians,nottinghamshire,whitish,consulted,deficiency,salle,cinemas,superseded,rigorous,kerman,convened,landowners,modernization,evenings,pitches,conditional,scandinavia,differed,formulated,cyclists,swami,guyana,dunes,electrified,appalachian,abdomen,scenarios,prototypes,sindh,consonant,adaptive,boroughs,wolverhampton,modelling,cylinders,amounted,minimize,ambassadors,lenin,settler,coincide,approximation,grouping,murals,bullying,registers,rumours,engagements,energetic,vertex,annals,bordering,geologic,yellowish,runoff,converts,allegheny,facilitated,saturdays,colliery,monitored,rainforest,interfaces,geographically,impaired,prevalence,joachim,paperback,slowed,shankar,distinguishing,seminal,categorized,authorised,auspices,bandwidth,asserts,rebranded,balkans,supplemented,seldom,weaving,capsule,apostles,populous,monmouth,payload,symphonic,densely,shoreline,managerial,masonry,antioch,averages,textbooks,royalist,coliseum,tandem,brewers,diocesan,posthumous,walled,incorrectly,distributions,ensued,reasonably,graffiti,propagation,automation,harmonic,augmented,middleweight,limbs,elongated,landfall,comparatively,literal,grossed,koppen,wavelength,
1830s,cerebral,boasts,congestion,physiological,practitioner,coasts,cartoonist,undisclosed,frontal,launches,burgundy,qualifiers,imposing,stade,flanked,assyrian,raided,multiplayer,montane,chesapeake,pathology,drains,vineyards,intercollegiate,semiconductor,grassland,convey,citations,predominant,rejects,benefited,yahoo,graphs,busiest,encompassing,hamlets,explorers,suppress,minors,graphical,calculus,sediment,intends,diverted,mainline,unopposed,cottages,initiate,alumnus,towed,autism,forums,darlington,modernist,oxfordshire,lectured,capitalist,suppliers,panchayat,actresses,foundry,southbound,commodity,wesleyan,divides,palestinians,luton,caretaker,nobleman,mutiny,organizer,preferences,nomenclature,splits,unwilling,offenders,timor,relying,halftime,semitic,arithmetic,milestone,jesuits,arctiidae,retrieved,consuming,contender,edged,plagued,inclusive,transforming,khmer,federally,insurgents,distributing,amherst,rendition,prosecutors,viaduct,disqualified,kabul,liturgy,prevailed,reelected,instructors,swimmers,aperture,churchyard,interventions,totals,darts,metropolis,fuels,fluent,northbound,correctional,inflicted,barrister,realms,culturally,aristocratic,collaborating,emphasizes,choreographer,inputs,ensembles,humboldt,practised,endowed,strains,infringement,archaeologist,congregational,magna,relativity,efficiently,proliferation,mixtape,abruptly,regeneration,commissioning,yukon,archaic,reluctantly,retailer,northamptonshire,universally,crossings,boilers,nickelodeon,revue,abbreviation,retaliation,scripture,routinely,medicinal,benedictine,kenyan,retention,deteriorated,glaciers,apprenticeship,coupling,researched,topography,entrances,anaheim,pivotal,compensate,arched,modify,reinforce,dusseldorf,journeys,motorsport,conceded,sumatra,spaniards,quantitative,loire,cinematography,discarded,botswana,morale,engined,zionist,philanthropy,sainte,fatalities,cypriot,motorsports,indicators,pricing,institut,bethlehem,implicated,gravitational,differentiation,rotor,thriving,precedent,ambiguous,concessions,forecast,conserved,fremantle,asphalt,landslide,middlesbrough,formula_7,humidity,overseeing,chronological,diaries,multinational,crimean,turnover,improvised,youths,declares,tasmanian,canadiens,fumble,refinery,weekdays,unconstitutional,upward,guardians,brownish,imminent,hamas,endorsement,naturalist,martyrs,caledonia,chords,yeshiva,reptiles,severity,mitsubishi,fairs,installment,substitution,repertory,keyboardist,interpreter,silesia,noticeable,rhineland,transmit,inconsistent,booklet,academies,epithet,pertaining,progressively,aquatics,scrutiny,prefect,toxicity,rugged,consume,o'donnell,evolve,uniquely,cabaret,mediated,landowner,transgender,palazzo,compilations,albuquerque,induce,sinai,remastered,efficacy,underside,analogue,specify,possessing,advocating,compatibility,liberated,greenville,mecklenburg,header,memorials,sewage,rhodesia,
1800s,salaries,atoll,coordinating,partisans,repealed,amidst,subjective,optimization,nectar,evolving,exploits,madhya,styling,accumulation,raion,postage,responds,buccaneers,frontman,brunei,choreography,coated,kinetic,sampled,inflammatory,complementary,eclectic,norte,vijay,a.k.a,mainz,casualty,connectivity,laureate,franchises,yiddish,reputed,unpublished,economical,periodicals,vertically,bicycles,brethren,capacities,unitary,archeological,tehsil,domesday,wehrmacht,justification,angered,mysore,fielded,abuses,nutrients,ambitions,taluk,battleships,symbolism,superiority,neglect,attendees,commentaries,collaborators,predictions,yorker,breeders,investing,libretto,informally,coefficients,memorandum,pounder,collingwood,tightly,envisioned,arbor,mistakenly,captures,nesting,conflicting,enhancing,streetcar,manufactures,buckinghamshire,rewards,commemorating,stony,expenditure,tornadoes,semantic,relocate,weimar,iberian,sighted,intending,ensign,beverages,expectation,differentiate,centro,utilizes,saxophonist,catchment,transylvania,ecosystems,shortest,sediments,socialists,ineffective,kapoor,formidable,heroine,guantanamo,prepares,scattering,pamphlet,verified,elector,barons,totaling,shrubs,pyrenees,amalgamation,mutually,longitudinal,comte,negatively,masonic,envoy,sexes,akbar,mythical,tonga,bishopric,assessments,malaya,warns,interiors,reefs,reflections,neutrality,musically,nomadic,waterways,provence,collaborate,scaled,adulthood,emerges,euros,optics,incentives,overland,periodical,liege,awarding,realization,slang,affirmed,schooner,hokkaido,czechoslovak,protectorate,undrafted,disagreed,commencement,electors,spruce,swindon,fueled,equatorial,inventions,suites,slovene,backdrop,adjunct,energies,remnant,inhabit,alliances,simulcast,reactors,mosques,travellers,outfielder,plumage,migratory,benin,experimented,fibre,projecting,drafting,laude,evidenced,northernmost,indicted,directional,replication,croydon,comedies,jailed,organizes,devotees,reservoirs,turrets,originate,economists,songwriters,junta,trenches,mounds,proportions,comedic,apostle,azerbaijani,farmhouse,resembled,disrupted,playback,mixes,diagonal,relevance,govern,programmer,gdansk,maize,soundtracks,tendencies,mastered,impacted,believers,kilometre,intervene,chairperson,aerodrome,sails,subsidies,ensures,aesthetics,congresses,ratios,sardinia,southernmost,functioned,controllers,downward,randomly,distortion,regents,palatine,disruption,spirituality,vidhan,tracts,compiler,ventilation,anchorage,symposium,assert,pistols,excelled,avenues,convoys,moniker,constructions,proponent,phased,spines,organising,schleswig,policing,campeonato,mined,hourly,croix,lucrative,authenticity,haitian,stimulation,burkina,espionage,midfield,manually,staffed,awakening,metabolic,biographies,entrepreneurship,conspicuous,guangdong,preface,subgroup,mythological,adjutant,feminism,vilnius,oversees,honourable,tripoli,stylized,kinase,societe,notoriety,altitudes,configurations,outward,transmissions,announces,auditor,ethanol,clube,nanjing,mecca,haifa,blogs,postmaster,paramilitary,depart,positioning,potent,recognizable,spire,brackets,remembrance,overlapping,turkic,articulated,scientology,operatic,deploy,readiness,biotechnology,restrict,cinematographer,inverted,synonymous,administratively,westphalia,commodities,replaces,downloads,centralized,munitions,preached,sichuan,fashionable,implementations,matrices,hiv/aids,loyalist,luzon,celebrates,hazards,heiress,mercenaries,synonym,creole,ljubljana,technician,auditioned,technicians,viewpoint,wetland,mongols,princely,sharif,coating,dynasties,southward,doubling,formula_8,mayoral,harvesting,conjecture,goaltender,oceania,spokane,welterweight,bracket,gatherings,weighted,newscasts,mussolini,affiliations,disadvantage,vibrant,spheres,sultanate,distributors,disliked,establishes,marches,drastically,yielding,jewellery,yokohama,vascular,airlift,canons,subcommittee,repression,strengths,graded,outspoken,fused,pembroke,filmography,redundant,fatigue,repeal,threads,reissue,pennant,edible,vapor,corrections,stimuli,commemoration,dictator,anand,secession,amassed,orchards,pontifical,experimentation,greeted,bangor,forwards,decomposition,quran,trolley,chesterfield,traverse,sermons,burials,skier,climbs,consultants,petitioned,reproduce,parted,illuminated,kurdistan,reigned,occupants,packaged,geometridae,woven,regulating,protagonists,crafted,affluent,clergyman,consoles,migrant,supremacy,attackers,caliph,defect,convection,rallies,huron,resin,segunda,quota,warship,overseen,criticizing,shrines,glamorgan,lowering,beaux,hampered,invasions,conductors,collects,bluegrass,surrounds,substrates,perpetual,chronology,pulmonary,executions,crimea,compiling,noctuidae,battled,tumors,minsk,novgorod,serviced,yeast,computation,swamps,theodor,baronetcy,salford,uruguayan,shortages,odisha,siberian,novelty,cinematic,invitational,decks,dowager,oppression,bandits,appellate,state-of-the-art,clade,palaces,signalling,galaxies,industrialist,tensor,learnt,incurred,magistrates,binds,orbits,ciudad,willingness,peninsular,basins,biomedical,shafts,marlborough,bournemouth,withstand,fitzroy,dunedin,variance,steamship,integrating,muscular,fines,akron,bulbophyllum,malmo,disclosed,cornerstone,runways,medicines,twenty20,gettysburg,progresses,frigates,bodied,transformations,transforms,helens,modelled,versatile,regulator,pursuits,legitimacy,amplifier,scriptures,voyages,examines,presenters,octagonal,poultry,formula_9,anatolia,computed,migrate,directorial,hybrids,localized,preferring,guggenheim,persisted,grassroots,inflammation,fishery,otago,vigorous,professions,instructional,inexpensive,insurgency,legislators,sequels,surnames,agrarian,stainless,nairobi,minas,forerunner,aristocracy,transitions,sicilian,showcased,doses,hiroshima,summarized,gearbox,emancipation,limitation,nuclei,seismic,abandonment,dominating,appropriations,occupations,electrification,hilly,contracting,exaggerated,entertainer,kazan,oricon,cartridges,characterization,parcel,maharaja,exceeds,aspiring,obituary,flattened,contrasted,narration,replies,oblique,outpost,fronts,arranger,talmud,keynes,doctrines,endured,confesses,fortification,supervisors,kilometer,academie,jammu,bathurst,piracy,prostitutes,navarre,cumulative,cruises,lifeboat,twinned,radicals,interacting,expenditures,wexford,libre,futsal,curated,clockwise,colloquially,procurement,immaculate,lyricist,enhancement,porcelain,alzheimer,highlighting,judah,disagreements,storytelling,sheltered,wroclaw,vaudeville,contrasts,neoclassical,compares,contrasting,deciduous,francaise,descriptive,cyclic,reactive,antiquities,meiji,repeats,creditors,forcibly,newmarket,picturesque,impending,uneven,bison,raceway,solvent,ecumenical,optic,professorship,harvested,waterway,banjo,pharaoh,geologist,scanning,dissent,recycled,unmanned,retreating,gospels,aqueduct,branched,tallinn,groundbreaking,syllables,hangar,designations,procedural,craters,cabins,encryption,anthropologist,montevideo,outgoing,inverness,chattanooga,fascism,calais,chapels,groundwater,downfall,misleading,robotic,tortricidae,pixel,handel,prohibit,crewe,renaming,reprised,kickoff,leftist,spaced,integers,causeway,pines,authorship,organise,ptolemy,accessibility,virtues,lesions,iroquois,qur'an,atheist,synthesized,biennial,confederates,dietary,skaters,stresses,tariff,koreans,intercity,republics,quintet,baroness,naive,amplitude,insistence,tbilisi,residues,grammatical,diversified,egyptians,accompaniment,vibration,repository,mandal,topological,distinctions,coherent,invariant,batters,nuevo,internationals,implements,follower,bahia,widened,independents,cantonese,totaled,guadalajara,wolverines,befriended,muzzle,surveying,hungarians,medici,deportation,rayon,approx,recounts,attends,clerical,hellenic,furnished,alleging,soluble,systemic,gallantry,bolshevik,intervened,hostel,gunpowder,specialising,stimulate,leiden,removes,thematic,floral,bafta,printers,conglomerate,eroded,analytic,successively,lehigh,thessaloniki,kilda,clauses,ascended,nehru,scripted,tokugawa,competence,diplomats,exclude,consecration,freedoms,assaults,revisions,blacksmith,textual,sparse,concacaf,slain,uploaded,enraged,whaling,guise,stadiums,debuting,dormitory,cardiovascular,yunnan,dioceses,consultancy,notions,lordship,archdeacon,collided,medial,airfields,garment,wrestled,adriatic,reversal,refueling,verification,jakob,horseshoe,intricate,veracruz,sarawak,syndication,synthesizer,anthologies,stature,feasibility,guillaume,narratives,publicized,antrim,intermittent,constituents,grimsby,filmmaking,doping,unlawful,nominally,transmitting,documenting,seater,internationale,ejected,steamboat,alsace,boise,ineligible,geared,vassal,mustered,ville,inline,pairing,eurasian,kyrgyzstan,barnsley,reprise,stereotypes,rushes,conform,firefighters,deportivo,revolutionaries,rabbis,concurrency,charters,sustaining,aspirations,algiers,chichester,falkland,morphological,systematically,volcanoes,designate,artworks,reclaimed,jurist,anglia,resurrected,chaotic,feasible,circulating,simulated,environmentally,confinement,adventist,harrisburg,laborers,ostensibly,universiade,pensions,influenza,bratislava,octave,refurbishment,gothenburg,putin,barangay,annapolis,breaststroke,illustrates,distorted,choreographed,promo,emphasizing,stakeholders,descends,exhibiting,intrinsic,invertebrates,evenly,roundabout,salts,formula_10,strata,inhibition,branching,stylistic,rumored,realises,mitochondrial,commuted,adherents,logos,bloomberg,telenovela,guineas,charcoal,engages,winery,reflective,siena,cambridgeshire,ventral,flashback,installing,engraving,grasses,traveller,rotated,proprietor,nationalities,precedence,sourced,trainers,cambodian,reductions,depleted,saharan,classifications,biochemistry,plaintiffs,arboretum,humanist,fictitious,aleppo,climates,bazaar,his/her,homogeneous,multiplication,moines,indexed,linguist,skeletal,foliage,societal,differentiated,informing,mammal,infancy,archival,cafes,malls,graeme,musee,schizophrenia,fargo,pronouns,derivation,descend,ascending,terminating,deviation,recaptured,confessions,weakening,tajikistan,bahadur,pasture,b/hip,donegal,supervising,sikhs,thinkers,euclidean,reinforcement,friars,portage,fuscous,lucknow,synchronized,assertion,choirs,privatization,corrosion,multitude,skyscraper,royalties,ligament,usable,spores,directs,clashed,stockport,fronted,dependency,contiguous,biologist,backstroke,powerhouse,frescoes,phylogenetic,welding,kildare,gabon,conveyed,augsburg,severn,continuum,sahib,lille,injuring,passeriformesfamily,succeeds,translating,unitarian,startup,turbulent,outlying,philanthropic,stanislaw,idols,claremont,conical,haryana,armagh,blended,implicit,conditioned,modulation,rochdale,labourers,coinage,shortstop,potsdam,gears,obesity,bestseller,advisers,bouts,comedians,jozef,lausanne,taxonomic,correlated,columbian,marne,indications,psychologists,libel,edict,beaufort,disadvantages,renal,finalized,racehorse,unconventional,disturbances,falsely,zoology,adorned,redesign,executing,narrower,commended,appliances,stalls,resurgence,saskatoon,miscellaneous,permitting,epoch,formula_11,cumbria,forefront,vedic,eastenders,disposed,supermarkets,rower,inhibitor,magnesium,colourful,yusuf,harrow,formulas,centrally,balancing,ionic,nocturnal,consolidate,ornate,raiding,charismatic,accelerate,nominate,residual,dhabi,commemorates,attribution,uninhabited,mindanao,atrocities,genealogical,romani,applicant,enactment,abstraction,trough,pulpit,minuscule,misconduct,grenades,timely,supplements,messaging,curvature,ceasefire,telangana,susquehanna,braking,redistribution,shreveport,neighbourhoods,gregorian,widowed,khuzestan,empowerment,scholastic,evangelist,peptide,topical,theorist,historia,thence,sudanese,museo,jurisprudence,masurian,frankish,headlined,recounted,netball,petitions,tolerant,hectare,truncated,southend,methane,captives,reigns,massif,subunit,acidic,weightlifting,footballers,sabah,britannia,tunisian,segregated,sawmill,withdrawing,unpaid,weaponry,somme,perceptions,unicode,alcoholism,durban,wrought,waterfalls,jihad,auschwitz,upland,eastbound,adjective,anhalt,evaluating,regimes,guildford,reproduced,pamphlets,hierarchical,maneuvers,hanoi,fabricated,repetition,enriched,arterial,replacements,tides,globalization,adequately,westbound,satisfactory,fleets,phosphorus,lastly,neuroscience,anchors,xinjiang,membranes,improvisation,shipments,orthodoxy,submissions,bolivian,mahmud,ramps,leyte,pastures,outlines,flees,transmitters,fares,sequential,stimulated,novice,alternately,symmetrical,breakaway,layered,baronets,lizards,blackish,edouard,horsepower,penang,principals,mercantile,maldives,overwhelmingly,hawke,rallied,prostate,conscription,juveniles,maccabi,carvings,strikers,sudbury,spurred,improves,lombardy,macquarie,parisian,elastic,distillery,shetland,humane,brentford,wrexham,warehouses,routines,encompassed,introductory,isfahan,instituto,palais,revolutions,sporadic,impoverished,portico,fellowships,speculative,enroll,dormant,adhere,fundamentally,sculpted,meritorious,template,upgrading,reformer,rectory,uncredited,indicative,creeks,galveston,radically,hezbollah,firearm,educating,prohibits,trondheim,locus,refit,headwaters,screenings,lowlands,wasps,coarse,attaining,sedimentary,perished,pitchfork,interned,cerro,stagecoach,aeronautical,liter,transitioned,haydn,inaccurate,legislatures,bromwich,knesset,spectroscopy,butte,asiatic,degraded,concordia,catastrophic,lobes,wellness,pensacola,periphery,hapoel,theta,horizontally,freiburg,liberalism,pleas,durable,warmian,offenses,mesopotamia,shandong,unsuitable,hospitalized,appropriately,phonetic,encompass,conversions,observes,illnesses,breakout,assigns,crowns,inhibitors,nightly,manifestation,fountains,maximize,alphabetical,sloop,expands,newtown,widening,gaddafi,commencing,camouflage,footprint,tyrol,barangays,universite,highlanders,budgets,query,lobbied,westchester,equator,stipulated,pointe,distinguishes,allotted,embankment,advises,storing,loyalists,fourier,rehearsals,starvation,gland,rihanna,tubular,expressive,baccalaureate,intersections,revered,carbonate,eritrea,craftsmen,cosmopolitan,sequencing,corridors,shortlisted,bangladeshi,persians,mimic,parades,repetitive,recommends,flanks,promoters,incompatible,teaming,ammonia,greyhound,solos,improper,legislator,newsweek,recurrent,vitro,cavendish,eireann,crises,prophets,mandir,strategically,guerrillas,formula_12,ghent,contenders,equivalence,drone,sociological,hamid,castes,statehood,aland,clinched,relaunched,tariffs,simulations,williamsburg,rotate,mediation,smallpox,harmonica,lodges,lavish,restrictive,o'sullivan,detainees,polynomials,echoes,intersecting,learners,elects,charlemagne,defiance,epsom,liszt,facilitating,absorbing,revelations,padua,pieter,pious,penultimate,mammalian,montenegrin,supplementary,widows,aromatic,croats,roanoke,trieste,legions,subdistrict,babylonian,grasslands,volga,violently,sparsely,oldies,telecommunication,respondents,quarries,downloadable,commandos,taxpayer,catalytic,malabar,afforded,copying,declines,nawab,junctions,assessing,filtering,classed,disused,compliant,christoph,gottingen,civilizations,hermitage,caledonian,whereupon,ethnically,springsteen,mobilization,terraces,indus,excel,zoological,enrichment,simulate,guitarists,registrar,cappella,invoked,reused,manchu,configured,uppsala,genealogy,mergers,casts,curricular,rebelled,subcontinent,horticultural,parramatta,orchestrated,dockyard,claudius,decca,prohibiting,turkmenistan,brahmin,clandestine,obligatory,elaborated,parasitic,helix,constraint,spearheaded,rotherham,eviction,adapting,albans,rescues,sociologist,guiana,convicts,occurrences,kamen,antennas,asturias,wheeled,sanitary,deterioration,trier,theorists,baseline,announcements,valea,planners,factual,serialized,serials,bilbao,demoted,fission,jamestown,cholera,alleviate,alteration,indefinite,sulfate,paced,climatic,valuation,artisans,proficiency,aegean,regulators,fledgling,sealing,influencing,servicemen,frequented,cancers,tambon,narayan,bankers,clarified,embodied,engraver,reorganisation,dissatisfied,dictated,supplemental,temperance,ratification,puget,nutrient,pretoria,papyrus,uniting,ascribed,cores,coptic,schoolhouse,barrio,
1910s,armory,defected,transatlantic,regulates,ported,artefacts,specifies,boasted,scorers,mollusks,emitted,navigable,quakers,projective,dialogues,reunification,exponential,vastly,banners,unsigned,dissipated,halves,coincidentally,leasing,purported,escorting,estimation,foxes,lifespan,inflorescence,assimilation,showdown,staunch,prologue,ligand,superliga,telescopes,northwards,keynote,heaviest,taunton,redeveloped,vocalists,podlaskie,soyuz,rodents,azores,moravian,outset,parentheses,apparel,domestically,authoritative,polymers,monterrey,inhibit,launcher,jordanian,folds,taxis,mandates,singled,liechtenstein,subsistence,marxism,ousted,governorship,servicing,offseason,modernism,prism,devout,translators,islamist,chromosomes,pitted,bedfordshire,fabrication,authoritarian,javanese,leaflets,transient,substantive,predatory,sigismund,assassinate,diagrams,arrays,rediscovered,reclamation,spawning,fjord,peacekeeping,strands,fabrics,highs,regulars,tirana,ultraviolet,athenian,filly,barnet,naacp,nueva,favourites,terminates,showcases,clones,inherently,interpreting,bjorn,finely,lauded,unspecified,chola,pleistocene,insulation,antilles,donetsk,funnel,nutritional,biennale,reactivated,southport,primate,cavaliers,austrians,interspersed,restarted,suriname,amplifiers,wladyslaw,blockbuster,sportsman,minogue,brightness,benches,bridgeport,initiating,israelis,orbiting,newcomers,externally,scaling,transcribed,impairment,luxurious,longevity,impetus,temperament,ceilings,tchaikovsky,spreads,pantheon,bureaucracy,
1820s,heraldic,villas,formula_13,galician,meath,avoidance,corresponded,headlining,connacht,seekers,rappers,solids,monograph,scoreless,opole,isotopes,himalayas,parodies,garments,microscopic,republished,havilland,orkney,demonstrators,pathogen,saturated,hellenistic,facilitates,aerodynamic,relocating,indochina,laval,astronomers,bequeathed,administrations,extracts,nagoya,torquay,demography,medicare,ambiguity,renumbered,pursuant,concave,syriac,electrode,dispersal,henan,bialystok,walsall,crystalline,puebla,janata,illumination,tianjin,enslaved,coloration,championed,defamation,grille,johor,rejoin,caspian,fatally,planck,workings,appointing,institutionalized,wessex,modernized,exemplified,regatta,jacobite,parochial,programmers,blending,eruptions,insurrection,regression,indices,sited,dentistry,mobilized,furnishings,levant,primaries,ardent,nagasaki,conqueror,dorchester,opined,heartland,amman,mortally,wellesley,bowlers,outputs,coveted,orthography,immersion,disrepair,disadvantaged,curate,childless,condensed,codice_1,remodeled,resultant,bolsheviks,superfamily,saxons,
2010s,contractual,rivalries,malacca,oaxaca,magnate,vertebrae,quezon,olympiad,yucatan,tyres,macro,specialization,commendation,caliphate,gunnery,exiles,excerpts,fraudulent,adjustable,aramaic,interceptor,drumming,standardization,reciprocal,adolescents,federalist,aeronautics,favorably,enforcing,reintroduced,zhejiang,refining,biplane,banknotes,accordion,intersect,illustrating,summits,classmate,militias,biomass,massacres,epidemiology,reworked,wrestlemania,nantes,auditory,taxon,elliptical,chemotherapy,asserting,avoids,proficient,airmen,yellowstone,multicultural,alloys,utilization,seniority,kuyavian,huntsville,orthogonal,bloomington,cultivars,casimir,internment,repulsed,impedance,revolving,fermentation,parana,shutout,partnering,empowered,islamabad,polled,classify,amphibians,greyish,obedience,
4x100,projectile,khyber,halfback,relational,d'ivoire,synonyms,endeavour,padma,customized,mastery,defenceman,berber,purge,interestingly,covent,promulgated,restricting,condemnation,hillsborough,walkers,privateer,intra,captaincy,naturalized,huffington,detecting,hinted,migrating,bayou,counterattack,anatomical,foraging,unsafe,swiftly,outdated,paraguayan,attire,masjid,endeavors,jerseys,triassic,quechua,growers,axial,accumulate,wastewater,cognition,fungal,animator,pagoda,kochi,uniformly,antibody,yerevan,hypotheses,combatants,italianate,draining,fragmentation,snowfall,formative,inversion,kitchener,identifier,additive,lucha,selects,ashland,cambrian,racetrack,trapping,congenital,primates,wavelengths,expansions,yeomanry,harcourt,wealthiest,awaited,punta,intervening,aggressively,vichy,piloted,midtown,tailored,heyday,metadata,guadalcanal,inorganic,hadith,pulses,francais,tangent,scandals,erroneously,tractors,pigment,constabulary,jiangsu,landfill,merton,basalt,astor,forbade,debuts,collisions,exchequer,stadion,roofed,flavour,sculptors,conservancy,dissemination,electrically,undeveloped,existent,surpassing,pentecostal,manifested,amend,formula_14,superhuman,barges,tunis,analytics,argyll,liquids,mechanized,domes,mansions,himalayan,indexing,reuters,nonlinear,purification,exiting,timbers,triangles,decommissioning,departmental,causal,fonts,americana,sept.,seasonally,incomes,razavi,sheds,memorabilia,rotational,terre,sutra,protege,yarmouth,grandmaster,annum,looted,imperialism,variability,liquidation,baptised,isotope,showcasing,milling,rationale,hammersmith,austen,streamlined,acknowledging,contentious,qaleh,breadth,turing,referees,feral,toulon,unofficially,identifiable,standout,labeling,dissatisfaction,jurgen,angrily,featherweight,cantons,constrained,dominates,standalone,relinquished,theologians,markedly,italics,downed,nitrate,likened,gules,craftsman,singaporean,pixels,mandela,moray,parity,departement,antigen,academically,burgh,brahma,arranges,wounding,triathlon,nouveau,vanuatu,banded,acknowledges,unearthed,stemming,authentication,byzantines,converge,nepali,commonplace,deteriorating,recalling,palette,mathematicians,greenish,pictorial,ahmedabad,rouen,validation,u.s.a.,'best,malvern,archers,converter,undergoes,fluorescent,logistical,notification,transvaal,illicit,symphonies,stabilization,worsened,fukuoka,decrees,enthusiast,seychelles,blogger,louvre,dignitaries,burundi,wreckage,signage,pinyin,bursts,federer,polarization,urbana,lazio,schism,nietzsche,venerable,administers,seton,kilograms,invariably,kathmandu,farmed,disqualification,earldom,appropriated,fluctuations,kermanshah,deployments,deformation,wheelbase,maratha,psalm,bytes,methyl,engravings,skirmish,fayette,vaccines,ideally,astrology,breweries,botanic,opposes,harmonies,irregularities,contended,gaulle,prowess,constants,aground,filipinos,fresco,ochreous,jaipur,willamette,quercus,eastwards,mortars,champaign,braille,reforming,horned,hunan,spacious,agitation,draught,specialties,flourishing,greensboro,necessitated,swedes,elemental,whorls,hugely,structurally,plurality,synthesizers,embassies,assad,contradictory,inference,discontent,recreated,inspectors,unicef,commuters,embryo,modifying,stints,numerals,communicated,boosted,trumpeter,brightly,adherence,remade,leases,restrained,eucalyptus,dwellers,planar,grooves,gainesville,daimler,anzac,szczecin,cornerback,prized,peking,mauritania,khalifa,motorized,lodging,instrumentalist,fortresses,cervical,formula_15,passerine,sectarian,researches,apprenticed,reliefs,disclose,gliding,repairing,queue,kyushu,literate,canoeing,sacrament,separatist,calabria,parkland,flowed,investigates,statistically,visionary,commits,dragoons,scrolls,premieres,revisited,subdued,censored,patterned,elective,outlawed,orphaned,leyland,richly,fujian,miniatures,heresy,plaques,countered,nonfiction,exponent,moravia,dispersion,marylebone,midwestern,enclave,ithaca,federated,electronically,handheld,microscopy,tolls,arrivals,climbers,continual,cossacks,moselle,deserts,ubiquitous,gables,forecasts,deforestation,vertebrates,flanking,drilled,superstructure,inspected,consultative,bypassed,ballast,subsidy,socioeconomic,relic,grenada,journalistic,administering,accommodated,collapses,appropriation,reclassified,foreword,porte,assimilated,observance,fragmented,arundel,thuringia,gonzaga,shenzhen,shipyards,sectional,ayrshire,sloping,dependencies,promenade,ecuadorian,mangrove,constructs,goalscorer,heroism,iteration,transistor,omnibus,hampstead,cochin,overshadowed,chieftain,scalar,finishers,ghanaian,abnormalities,monoplane,encyclopaedia,characterize,travancore,baronetage,bearers,biking,distributes,paving,christened,inspections,banco,humber,corinth,quadratic,albanians,lineages,majored,roadside,inaccessible,inclination,darmstadt,fianna,epilepsy,propellers,papacy,montagu,bhutto,sugarcane,optimized,pilasters,contend,batsmen,brabant,housemates,sligo,ascot,aquinas,supervisory,accorded,gerais,echoed,nunavut,conservatoire,carniola,quartermaster,gminas,impeachment,aquitaine,reformers,quarterfinal,karlsruhe,accelerator,coeducational,archduke,gelechiidae,seaplane,dissident,frenchman,palau,depots,hardcover,aachen,darreh,denominational,groningen,parcels,reluctance,drafts,elliptic,counters,decreed,airship,devotional,contradiction,formula_16,undergraduates,qualitative,guatemalan,slavs,southland,blackhawks,detrimental,abolish,chechen,manifestations,arthritis,perch,fated,hebei,peshawar,palin,immensely,havre,totalling,rampant,ferns,concourse,triples,elites,olympian,larva,herds,lipid,karabakh,distal,monotypic,vojvodina,batavia,multiplied,spacing,spellings,pedestrians,parchment,glossy,industrialization,dehydrogenase,patriotism,abolitionist,mentoring,elizabethan,figurative,dysfunction,abyss,constantin,middletown,stigma,mondays,gambia,gaius,israelites,renounced,nepalese,overcoming,buren,sulphur,divergence,predation,looting,iberia,futuristic,shelved,anthropological,innsbruck,escalated,clermont,entrepreneurial,benchmark,mechanically,detachments,populist,apocalyptic,exited,embryonic,stanza,readership,chiba,landlords,expansive,boniface,therapies,perpetrators,whitehall,kassel,masts,carriageway,clinch,pathogens,mazandaran,undesirable,teutonic,miocene,nagpur,juris,cantata,compile,diffuse,dynastic,reopening,comptroller,o'neal,flourish,electing,scientifically,departs,welded,modal,cosmology,fukushima,libertadores,chang'an,asean,generalization,localization,afrikaans,cricketers,accompanies,emigrants,esoteric,southwards,shutdown,prequel,fittings,innate,wrongly,equitable,dictionaries,senatorial,bipolar,flashbacks,semitism,walkway,lyrically,legality,sorbonne,vigorously,durga,samoan,karel,interchanges,patna,decider,registering,electrodes,anarchists,excursion,overthrown,gilan,recited,michelangelo,advertiser,kinship,taboo,cessation,formula_17,premiers,traversed,madurai,poorest,torneo,exerted,replicate,spelt,sporadically,horde,landscaping,razed,hindered,esperanto,manchuria,propellant,jalan,baha'is,sikkim,linguists,pandit,racially,ligands,dowry,francophone,escarpment,behest,magdeburg,mainstay,villiers,yangtze,grupo,conspirators,martyrdom,noticeably,lexical,kazakh,unrestricted,utilised,sired,inhabits,proofs,joseon,pliny,minted,buddhists,cultivate,interconnected,reuse,viability,australasian,derelict,resolving,overlooks,menon,stewardship,playwrights,thwarted,filmfare,disarmament,protections,bundles,sidelined,hypothesized,singer/songwriter,forage,netted,chancery,townshend,restructured,quotation,hyperbolic,succumbed,parliaments,shenandoah,apical,kibbutz,storeys,pastors,lettering,ukrainians,hardships,chihuahua,avail,aisles,taluka,antisemitism,assent,ventured,banksia,seamen,hospice,faroe,fearful,woreda,outfield,chlorine,transformer,tatar,panoramic,pendulum,haarlem,styria,cornice,importing,catalyzes,subunits,enamel,bakersfield,realignment,sorties,subordinates,deanery,townland,gunmen,tutelage,evaluations,allahabad,thrace,veneto,mennonite,sharia,subgenus,satisfies,puritan,unequal,gastrointestinal,ordinances,bacterium,horticulture,argonauts,adjectives,arable,duets,visualization,woolwich,revamped,euroleague,thorax,completes,originality,vasco,freighter,sardar,oratory,sects,extremes,signatories,exporting,arisen,exacerbated,departures,saipan,furlongs,d'italia,goring,dakar,conquests,docked,offshoot,okrug,referencing,disperse,netting,summed,rewritten,articulation,humanoid,spindle,competitiveness,preventive,facades,westinghouse,wycombe,synthase,emulate,fostering,abdel,hexagonal,myriad,caters,arjun,dismay,axiom,psychotherapy,colloquial,complemented,martinique,fractures,culmination,erstwhile,atrium,electronica,anarchism,nadal,montpellier,algebras,submitting,adopts,stemmed,overcame,internacional,asymmetric,gallipoli,gliders,flushing,extermination,hartlepool,tesla,interwar,patriarchal,hitherto,ganges,combatant,marred,philology,glastonbury,reversible,isthmus,undermined,southwark,gateshead,andalusia,remedies,hastily,optimum,smartphone,evade,patrolled,beheaded,dopamine,waivers,ugandan,gujarati,densities,predicting,intestinal,tentative,interstellar,kolonia,soloists,penetrated,rebellions,qeshlaq,prospered,colegio,deficits,konigsberg,deficient,accessing,relays,kurds,politburo,codified,incarnations,occupancy,cossack,metaphysical,deprivation,chopra,piccadilly,formula_18,makeshift,protestantism,alaskan,frontiers,faiths,tendon,dunkirk,durability,autobots,bonuses,coinciding,emails,gunboat,stucco,magma,neutrons,vizier,subscriptions,visuals,envisaged,carpets,smoky,schema,parliamentarian,immersed,domesticated,parishioners,flinders,diminutive,mahabharata,ballarat,falmouth,vacancies,gilded,twigs,mastering,clerics,dalmatia,islington,slogans,compressor,iconography,congolese,sanction,blends,bulgarians,moderator,outflow,textures,safeguard,trafalgar,tramways,skopje,colonialism,chimneys,jazeera,organisers,denoting,motivations,ganga,longstanding,deficiencies,gwynedd,palladium,holistic,fascia,preachers,embargo,sidings,busan,ignited,artificially,clearwater,cemented,northerly,salim,equivalents,crustaceans,oberliga,quadrangle,historiography,romanians,vaults,fiercely,incidental,peacetime,tonal,bhopal,oskar,radha,pesticides,timeslot,westerly,cathedrals,roadways,aldershot,connectors,brahmins,paler,aqueous,gustave,chromatic,linkage,lothian,specialises,aggregation,tributes,insurgent,enact,hampden,ghulam,federations,instigated,lyceum,fredrik,chairmanship,floated,consequent,antagonists,intimidation,patriarchate,warbler,heraldry,entrenched,expectancy,habitation,partitions,widest,launchers,nascent,ethos,wurzburg,lycee,chittagong,mahatma,merseyside,asteroids,yokosuka,cooperatives,quorum,redistricting,bureaucratic,yachts,deploying,rustic,phonology,chorale,cellist,stochastic,crucifixion,surmounted,confucian,portfolios,geothermal,crested,calibre,tropics,deferred,nasir,iqbal,persistence,essayist,chengdu,aborigines,fayetteville,bastion,interchangeable,burlesque,kilmarnock,specificity,tankers,colonels,fijian,quotations,enquiry,quito,palmerston,delle,multidisciplinary,polynesian,iodine,antennae,emphasised,manganese,baptists,galilee,jutland,latent,excursions,skepticism,tectonic,precursors,negligible,musique,misuse,vitoria,expressly,veneration,sulawesi,footed,mubarak,chongqing,chemically,midday,ravaged,facets,varma,yeovil,ethnographic,discounted,physicists,attache,disbanding,essen,shogunate,cooperated,waikato,realising,motherwell,pharmacology,sulfide,inward,expatriate,devoid,cultivar,monde,andean,groupings,goran,unaffected,moldovan,postdoctoral,coleophora,delegated,pronoun,conductivity,coleridge,disapproval,reappeared,microbial,campground,olsztyn,fostered,vaccination,rabbinical,champlain,milestones,viewership,caterpillar,effected,eupithecia,financier,inferred,uzbek,bundled,bandar,balochistan,mysticism,biosphere,holotype,symbolizes,lovecraft,photons,abkhazia,swaziland,subgroups,measurable,falkirk,valparaiso,ashok,discriminatory,rarity,tabernacle,flyweight,jalisco,westernmost,antiquarian,extracellular,margrave,colspan=
9,midsummer,digestive,reversing,burgeoning,substitutes,medallist,khrushchev,guerre,folio,detonated,partido,plentiful,aggregator,medallion,infiltration,shaded,santander,fared,auctioned,permian,ramakrishna,andorra,mentors,diffraction,bukit,potentials,translucent,feminists,tiers,protracted,coburg,wreath,guelph,adventurer,he/she,vertebrate,pipelines,celsius,outbreaks,australasia,deccan,garibaldi,unionists,buildup,biochemical,reconstruct,boulders,stringent,barbed,wording,furnaces,pests,befriends,organises,popes,rizal,tentacles,cadre,tallahassee,punishments,occidental,formatted,mitigation,rulings,rubens,cascades,inducing,choctaw,volta,synagogues,movable,altarpiece,mitigate,practise,intermittently,encountering,memberships,earns,signify,retractable,amounting,pragmatic,wilfrid,dissenting,divergent,kanji,reconstituted,devonian,constitutions,levied,hendrik,starch,costal,honduran,ditches,polygon,eindhoven,superstars,salient,argus,punitive,purana,alluvial,flaps,inefficient,retracted,advantageous,quang,andersson,danville,binghamton,symbolize,conclave,shaanxi,silica,interpersonal,adept,frans,pavilions,lubbock,equip,sunken,limburg,activates,prosecutions,corinthian,venerated,shootings,retreats,parapet,orissa,riviere,animations,parodied,offline,metaphysics,bluffs,plume,piety,fruition,subsidized,steeplechase,shanxi,eurasia,angled,forecasting,suffragan,ashram,larval,labyrinth,chronicler,summaries,trailed,merges,thunderstorms,filtered,formula_19,advertisers,alpes,informatics,parti,constituting,undisputed,certifications,javascript,molten,sclerosis,rumoured,boulogne,hmong,lewes,breslau,notts,bantu,ducal,messengers,radars,nightclubs,bantamweight,carnatic,kaunas,fraternal,triggering,controversially,londonderry,visas,scarcity,offaly,uprisings,repelled,corinthians,pretext,kuomintang,kielce,empties,matriculated,pneumatic,expos,agile,treatises,midpoint,prehistory,oncology,subsets,hydra,hypertension,axioms,wabash,reiterated,swapped,achieves,premio,ageing,overture,curricula,challengers,subic,selangor,liners,frontline,shutter,validated,normalized,entertainers,molluscs,maharaj,allegation,youngstown,synth,thoroughfare,regionally,pillai,transcontinental,pedagogical,riemann,colonia,easternmost,tentatively,profiled,herefordshire,nativity,meuse,nucleotide,inhibits,huntingdon,throughput,recorders,conceding,domed,homeowners,centric,gabled,canoes,fringes,breeder,subtitled,fluoride,haplogroup,zionism,izmir,phylogeny,kharkiv,romanticism,adhesion,usaaf,delegations,lorestan,whalers,biathlon,vaulted,mathematically,pesos,skirmishes,heisman,kalamazoo,gesellschaft,launceston,interacts,quadruple,kowloon,psychoanalysis,toothed,ideologies,navigational,valence,induces,lesotho,frieze,rigging,undercarriage,explorations,spoof,eucharist,profitability,virtuoso,recitals,subterranean,sizeable,herodotus,subscriber,huxley,pivot,forewing,warring,boleslaw,bharatiya,suffixes,trois,percussionist,downturn,garrisons,philosophies,chants,mersin,mentored,dramatist,guilds,frameworks,thermodynamic,venomous,mehmed,assembling,rabbinic,hegemony,replicas,enlargement,claimant,retitled,utica,dumfries,metis,deter,assortment,tubing,afflicted,weavers,rupture,ornamentation,transept,salvaged,upkeep,callsign,rajput,stevenage,trimmed,intracellular,synchronization,consular,unfavorable,royalists,goldwyn,fasting,hussars,doppler,obscurity,currencies,amiens,acorn,tagore,townsville,gaussian,migrations,porta,anjou,graphite,seaport,monographs,gladiators,metrics,calligraphy,sculptural,swietokrzyskie,tolombeh,eredivisie,shoals,queries,carts,exempted,fiberglass,mirrored,bazar,progeny,formalized,mukherjee,professed,amazon.com,cathode,moreton,removable,mountaineers,nagano,transplantation,augustinian,steeply,epilogue,adapter,decisively,accelerating,mediaeval,substituting,tasman,devonshire,litres,enhancements,himmler,nephews,bypassing,imperfect,argentinian,reims,integrates,sochi,ascii,licences,niches,surgeries,fables,versatility,indra,footpath,afonso,crore,evaporation,encodes,shelling,conformity,simplify,updating,quotient,overt,firmware,umpires,architectures,eocene,conservatism,secretion,embroidery,f.c..,tuvalu,mosaics,shipwreck,prefectural,cohort,grievances,garnering,centerpiece,apoptosis,djibouti,bethesda,formula_20,shonen,richland,justinian,dormitories,meteorite,reliably,obtains,pedagogy,hardness,cupola,manifolds,amplification,steamers,familial,dumbarton,jerzy,genital,maidstone,salinity,grumman,signifies,presbytery,meteorology,procured,aegis,streamed,deletion,nuestra,mountaineering,accords,neuronal,khanate,grenoble,axles,dispatches,tokens,turku,auctions,propositions,planters,proclaiming,recommissioned,stravinsky,obverse,bombarded,waged,saviour,massacred,reformist,purportedly,resettlement,ravenna,embroiled,minden,revitalization,hikers,bridging,torpedoed,depletion,nizam,affectionately,latitudes,lubeck,spore,polymerase,aarhus,nazism,
101st,buyout,galerie,diets,overflow,motivational,renown,brevet,deriving,melee,goddesses,demolish,amplified,tamworth,retake,brokerage,beneficiaries,henceforth,reorganised,silhouette,browsers,pollutants,peron,lichfield,encircled,defends,bulge,dubbing,flamenco,coimbatore,refinement,enshrined,grizzlies,capacitor,usefulness,evansville,interscholastic,rhodesian,bulletins,diamondbacks,rockers,platted,medalists,formosa,transporter,slabs,guadeloupe,disparate,concertos,violins,regaining,mandible,untitled,agnostic,issuance,hamiltonian,brampton,srpska,homology,downgraded,florentine,epitaph,kanye,rallying,analysed,grandstand,infinitely,antitrust,plundered,modernity,colspan=
3|total,amphitheatre,doric,motorists,yemeni,carnivorous,probabilities,prelate,struts,scrapping,bydgoszcz,pancreatic,signings,predicts,compendium,ombudsman,apertura,appoints,rebbe,stereotypical,valladolid,clustered,touted,plywood,inertial,kettering,curving,d'honneur,housewives,grenadier,vandals,barbarossa,necked,waltham,reputedly,jharkhand,cistercian,pursues,viscosity,organiser,cloister,islet,stardom,moorish,himachal,strives,scripps,staggered,blasts,westwards,millimeters,angolan,hubei,agility,admirals,mordellistena,coincides,platte,vehicular,cordillera,riffs,schoolteacher,canaan,acoustics,tinged,reinforcing,concentrates,daleks,monza,selectively,musik,polynesia,exporter,reviving,macclesfield,bunkers,ballets,manors,caudal,microbiology,primes,unbroken,outcry,flocks,pakhtunkhwa,abelian,toowoomba,luminous,mould,appraisal,leuven,experimentally,interoperability,hideout,perak,specifying,knighthood,vasily,excerpt,computerized,niels,networked,byzantium,reaffirmed,geographer,obscured,fraternities,mixtures,allusion,accra,lengthened,inquest,panhandle,pigments,revolts,bluetooth,conjugate,overtaken,foray,coils,breech,streaks,impressionist,mendelssohn,intermediary,panned,suggestive,nevis,upazila,rotunda,mersey,linnaeus,anecdotes,gorbachev,viennese,exhaustive,moldavia,arcades,irrespective,orator,diminishing,predictive,cohesion,polarized,montage,avian,alienation,conus,jaffna,urbanization,seawater,extremity,editorials,scrolling,dreyfus,traverses,topographic,gunboats,extratropical,normans,correspondents,recognises,millennia,filtration,ammonium,voicing,complied,prefixes,diplomas,figurines,weakly,gated,oscillator,lucerne,embroidered,outpatient,airframe,fractional,disobedience,quarterbacks,formula_21,shinto,chiapas,epistle,leakage,pacifist,avignon,penrith,renders,mantua,screenplays,gustaf,tesco,alphabetically,rations,discharges,headland,tapestry,manipur,boolean,mediator,ebenezer,subchannel,fable,bestselling,ateneo,trademarks,recurrence,dwarfs,britannica,signifying,vikram,mediate,condensation,censuses,verbandsgemeinde,cartesian,sprang,surat,britons,chelmsford,courtenay,statistic,retina,abortions,liabilities,closures,mississauga,skyscrapers,saginaw,compounded,aristocrat,msnbc,stavanger,septa,interpretive,hinder,visibly,seeding,shutouts,irregularly,quebecois,footbridge,hydroxide,implicitly,lieutenants,simplex,persuades,midshipman,heterogeneous,officiated,crackdown,lends,tartu,altars,fractions,dissidents,tapered,modernisation,scripting,blazon,aquaculture,thermodynamics,sistan,hasidic,bellator,pavia,propagated,theorized,bedouin,transnational,mekong,chronicled,declarations,kickstarter,quotas,runtime,duquesne,broadened,clarendon,brownsville,saturation,tatars,electorates,malayan,replicated,observable,amphitheater,endorsements,referral,allentown,mormons,pantomime,eliminates,typeface,allegorical,varna,conduction,evoke,interviewer,subordinated,uyghur,landscaped,conventionally,ascend,edifice,postulated,hanja,whitewater,embarking,musicologist,tagalog,frontage,paratroopers,hydrocarbons,transliterated,nicolae,viewpoints,surrealist,asheville,falklands,hacienda,glide,opting,zimbabwean,discal,mortgages,nicaraguan,yadav,ghosh,abstracted,castilian,compositional,cartilage,intergovernmental,forfeited,importation,rapping,artes,republika,narayana,condominium,frisian,bradman,duality,marche,extremist,phosphorylation,genomes,allusions,valencian,habeas,ironworks,multiplex,harpsichord,emigrate,alternated,breda,waffen,smartphones,familiarity,regionalliga,herbaceous,piping,dilapidated,carboniferous,xviii,critiques,carcinoma,sagar,chippewa,postmodern,neapolitan,excludes,notoriously,distillation,tungsten,richness,installments,monoxide,chand,privatisation,molded,maths,projectiles,luoyang,epirus,lemma,concentric,incline,erroneous,sideline,gazetted,leopards,fibres,renovate,corrugated,unilateral,repatriation,orchestration,saeed,rockingham,loughborough,formula_22,bandleader,appellation,openness,nanotechnology,massively,tonnage,dunfermline,exposes,moored,ridership,motte,eurobasket,majoring,feats,silla,laterally,playlist,downwards,methodologies,eastbourne,daimyo,cellulose,leyton,norwalk,oblong,hibernian,opaque,insular,allegory,camogie,inactivation,favoring,masterpieces,rinpoche,serotonin,portrayals,waverley,airliner,longford,minimalist,outsourcing,excise,meyrick,qasim,organisational,synaptic,farmington,gorges,scunthorpe,zoned,tohoku,librarians,davao,decor,theatrically,brentwood,pomona,acquires,planter,capacitors,synchronous,skateboarding,coatings,turbocharged,ephraim,capitulation,scoreboard,hebrides,ensues,cereals,ailing,counterpoint,duplication,antisemitic,clique,aichi,oppressive,transcendental,incursions,rename,renumbering,powys,vestry,bitterly,neurology,supplanted,affine,susceptibility,orbiter,activating,overlaps,ecoregion,raman,canoer,darfur,microorganisms,precipitated,protruding,torun,anthropologists,rennes,kangaroos,parliamentarians,edits,littoral,archived,begum,rensselaer,microphones,ypres,empower,etruscan,wisden,montfort,calibration,isomorphic,rioting,kingship,verbally,smyrna,cohesive,canyons,fredericksburg,rahul,relativistic,micropolitan,maroons,industrialized,henchmen,uplift,earthworks,mahdi,disparity,cultured,transliteration,spiny,fragmentary,extinguished,atypical,inventors,biosynthesis,heralded,curacao,anomalies,aeroplane,surya,mangalore,maastricht,ashkenazi,fusiliers,hangzhou,emitting,monmouthshire,schwarzenegger,ramayana,peptides,thiruvananthapuram,alkali,coimbra,budding,reasoned,epithelial,harbors,rudimentary,classically,parque,ealing,crusades,rotations,riparian,pygmy,inertia,revolted,microprocessor,calendars,solvents,kriegsmarine,accademia,cheshmeh,yoruba,ardabil,mitra,genomic,notables,propagate,narrates,univision,outposts,polio,birkenhead,urinary,crocodiles,pectoral,barrymore,deadliest,rupees,chaim,protons,comical,astrophysics,unifying,formula_23,vassals,cortical,audubon,pedals,tenders,resorted,geophysical,lenders,recognising,tackling,lanarkshire,doctrinal,annan,combating,guangxi,estimating,selectors,tribunals,chambered,inhabiting,exemptions,curtailed,abbasid,kandahar,boron,bissau,
150th,codenamed,wearer,whorl,adhered,subversive,famer,smelting,inserting,mogadishu,zoologist,mosul,stumps,almanac,olympiacos,stamens,participatory,cults,honeycomb,geologists,dividend,recursive,skiers,reprint,pandemic,liber,percentages,adversely,stoppage,chieftains,tubingen,southerly,overcrowding,unorganized,hangars,fulfil,hails,cantilever,woodbridge,pinus,wiesbaden,fertilization,fluorescence,enhances,plenary,troublesome,episodic,thrissur,kickboxing,allele,staffing,garda,televisions,philatelic,spacetime,bullpen,oxides,leninist,enrolling,inventive,truro,compatriot,ruskin,normative,assay,gotha,murad,illawarra,gendarmerie,strasse,mazraeh,rebounded,fanfare,liaoning,rembrandt,iranians,emirate,governs,latency,waterfowl,chairmen,katowice,aristocrats,eclipsed,sentient,sonatas,interplay,sacking,decepticons,dynamical,arbitrarily,resonant,petar,velocities,alludes,wastes,prefectures,belleville,sensibility,salvadoran,consolidating,medicaid,trainees,vivekananda,molar,porous,upload,youngster,infused,doctorates,wuhan,annihilation,enthusiastically,gamespot,kanpur,accumulating,monorail,operetta,tiling,sapporo,finns,calvinist,hydrocarbon,sparrows,orienteering,cornelis,minster,vuelta,plebiscite,embraces,panchayats,focussed,remediation,brahman,olfactory,reestablished,uniqueness,northumbria,rwandan,predominately,abode,ghats,balances,californian,uptake,bruges,inert,westerns,reprints,cairn,yarra,resurfaced,audible,rossini,regensburg,italiana,fleshy,irrigated,alerts,yahya,varanasi,marginalized,expatriates,cantonment,normandie,sahitya,directives,rounder,hulls,fictionalized,constables,inserts,hipped,potosi,navies,biologists,canteen,husbandry,augment,fortnight,assamese,kampala,o'keefe,paleolithic,bluish,promontory,consecutively,striving,niall,reuniting,dipole,friendlies,disapproved,thrived,netflix,liberian,dielectric,medway,strategist,sankt,pickups,hitters,encode,rerouted,claimants,anglesey,partitioned,cavan,flutes,reared,repainted,armaments,bowed,thoracic,balliol,piero,chaplains,dehestan,sender,junkers,sindhi,sickle,dividends,metallurgy,honorific,berths,namco,springboard,resettled,gansu,copyrighted,criticizes,utopian,bendigo,ovarian,binomial,spaceflight,oratorio,proprietors,supergroup,duplicated,foreground,strongholds,revolved,optimize,layouts,westland,hurler,anthropomorphic,excelsior,merchandising,reeds,vetoed,cryptography,hollyoaks,monash,flooring,ionian,resilience,johnstown,resolves,lawmakers,alegre,wildcards,intolerance,subculture,selector,slums,formulate,bayonet,istvan,restitution,interchangeably,awakens,rostock,serpentine,oscillation,reichstag,phenotype,recessed,piotr,annotated,preparedness,consultations,clausura,preferential,euthanasia,genoese,outcrops,freemasonry,geometrical,genesee,islets,prometheus,panamanian,thunderbolt,terraced,stara,shipwrecks,futebol,faroese,sharqi,aldermen,zeitung,unify,formula_24,humanism,syntactic,earthen,blyth,taxed,rescinded,suleiman,cymru,dwindled,vitality,superieure,resupply,adolphe,ardennes,rajiv,profiling,olympique,gestation,interfaith,milosevic,tagline,funerary,druze,silvery,plough,shrubland,relaunch,disband,nunatak,minimizing,excessively,waned,attaching,luminosity,bugle,encampment,electrostatic,minesweeper,dubrovnik,rufous,greenock,hochschule,assyrians,extracting,malnutrition,priya,attainment,anhui,connotations,predicate,seabirds,deduced,pseudonyms,gopal,plovdiv,refineries,imitated,kwazulu,terracotta,tenets,discourses,brandeis,whigs,dominions,pulmonate,landslides,tutors,determinant,richelieu,farmstead,tubercles,technicolor,hegel,redundancy,greenpeace,shortening,mules,distilled,xxiii,fundamentalist,acrylic,outbuildings,lighted,corals,signaled,transistors,cavite,austerity,
76ers,exposures,dionysius,outlining,commutative,permissible,knowledgeable,howrah,assemblage,inhibited,crewmen,mbit/s,pyramidal,aberdeenshire,bering,rotates,atheism,howitzer,saone,lancet,fermented,contradicted,materiel,ofsted,numeric,uniformity,josephus,nazarene,kuwaiti,noblemen,pediment,emergent,campaigner,akademi,murcia,perugia,gallen,allsvenskan,finned,cavities,matriculation,rosters,twickenham,signatory,propel,readable,contends,artisan,flamboyant,reggio,italo,fumbles,widescreen,rectangle,centimetres,collaborates,envoys,rijeka,phonological,thinly,refractive,civilisation,reductase,cognate,dalhousie,monticello,lighthouses,jitsu,luneburg,socialite,fermi,collectible,optioned,marquee,jokingly,architecturally,kabir,concubine,nationalisation,watercolor,wicklow,acharya,pooja,leibniz,rajendra,nationalized,stalemate,bloggers,glutamate,uplands,shivaji,carolingian,bucuresti,dasht,reappears,muscat,functionally,formulations,hinged,hainan,catechism,autosomal,incremental,asahi,coeur,diversification,multilateral,fewest,recombination,finisher,harrogate,hangul,feasts,photovoltaic,paget,liquidity,alluded,incubation,applauded,choruses,malagasy,hispanics,bequest,underparts,cassava,kazimierz,gastric,eradication,mowtowr,tyrosine,archbishopric,e9e9e9,unproductive,uxbridge,hydrolysis,harbours,officio,deterministic,devonport,kanagawa,breaches,freetown,rhinoceros,chandigarh,janos,sanatorium,liberator,inequalities,agonist,hydrophobic,constructors,nagorno,snowboarding,welcomes,subscribed,iloilo,resuming,catalysts,stallions,jawaharlal,harriers,definitively,roughriders,hertford,inhibiting,elgar,randomized,incumbents,episcopate,rainforests,yangon,improperly,kemal,interpreters,diverged,uttarakhand,umayyad,phnom,panathinaikos,shabbat,diode,jiangxi,forbidding,nozzle,artistry,licensee,processions,staffs,decimated,expressionism,shingle,palsy,ontology,mahayana,maribor,sunil,hostels,edwardian,jetty,freehold,overthrew,eukaryotic,schuylkill,rawalpindi,sheath,recessive,ferenc,mandibles,berlusconi,confessor,convergent,ababa,slugging,rentals,sephardic,equivalently,collagen,markov,dynamically,hailing,depressions,sprawling,fairgrounds,indistinguishable,plutarch,pressurized,banff,coldest,braunschweig,mackintosh,sociedad,wittgenstein,tromso,airbase,lecturers,subtitle,attaches,purified,contemplated,dreamworks,telephony,prophetic,rockland,aylesbury,biscay,coherence,aleksandar,judoka,pageants,theses,homelessness,luthor,sitcoms,hinterland,fifths,derwent,privateers,enigmatic,nationalistic,instructs,superimposed,conformation,tricycle,dusan,attributable,unbeknownst,laptops,etching,archbishops,ayatollah,cranial,gharbi,interprets,lackawanna,abingdon,saltwater,tories,lender,minaj,ancillary,ranching,pembrokeshire,topographical,plagiarism,murong,marque,chameleon,assertions,infiltrated,guildhall,reverence,schenectady,formula_25,kollam,notary,mexicana,initiates,abdication,basra,theorems,ionization,dismantling,eared,censors,budgetary,numeral,verlag,excommunicated,distinguishable,quarried,cagliari,hindustan,symbolizing,watertown,descartes,relayed,enclosures,militarily,sault,devolved,dalian,djokovic,filaments,staunton,tumour,curia,villainous,decentralized,galapagos,moncton,quartets,onscreen,necropolis,brasileiro,multipurpose,alamos,comarca,jorgen,concise,mercia,saitama,billiards,entomologist,montserrat,lindbergh,commuting,lethbridge,phoenician,deviations,anaerobic,denouncing,redoubt,fachhochschule,principalities,negros,announcers,seconded,parrots,konami,revivals,approving,devotee,riyadh,overtook,morecambe,lichen,expressionist,waterline,silverstone,geffen,sternites,aspiration,behavioural,grenville,tripura,mediums,genders,pyotr,charlottesville,sacraments,programmable,ps100,shackleton,garonne,sumerian,surpass,authorizing,interlocking,lagoons,voiceless,advert,steeple,boycotted,alouettes,yosef,oxidative,sassanid,benefiting,sayyid,nauru,predetermined,idealism,maxillary,polymerization,semesters,munchen,conor,outfitted,clapham,progenitor,gheorghe,observational,recognitions,numerically,colonized,hazrat,indore,contaminants,fatality,eradicate,assyria,convocation,cameos,skillful,skoda,corfu,confucius,overtly,ramadan,wollongong,placements,d.c..,permutation,contemporaneous,voltages,elegans,universitat,samar,plunder,dwindling,neuter,antonin,sinhala,campania,solidified,stanzas,fibrous,marburg,modernize,sorcery,deutscher,florets,thakur,disruptive,infielder,disintegration,internazionale,vicariate,effigy,tripartite,corrective,klamath,environs,leavenworth,sandhurst,workmen,compagnie,hoseynabad,strabo,palisades,ordovician,sigurd,grandsons,defection,viacom,sinhalese,innovator,uncontrolled,slavonic,indexes,refrigeration,aircrew,superbike,resumption,neustadt,confrontations,arras,hindenburg,ripon,embedding,isomorphism,dwarves,matchup,unison,lofty,argos,louth,constitutionally,transitive,newington,facelift,degeneration,perceptual,aviators,enclosing,igneous,symbolically,academician,constitutionality,iso/iec,sacrificial,maturation,apprentices,enzymology,naturalistic,hajji,arthropods,abbess,vistula,scuttled,gradients,pentathlon,etudes,freedmen,melaleuca,thrice,conductive,sackville,franciscans,stricter,golds,kites,worshiped,monsignor,trios,orally,tiered,primacy,bodywork,castleford,epidemics,alveolar,chapelle,chemists,hillsboro,soulful,warlords,ngati,huguenot,diurnal,remarking,luger,motorways,gauss,jahan,cutoff,proximal,bandai,catchphrase,jonubi,ossetia,codename,codice_2,throated,itinerant,chechnya,riverfront,leela,evoked,entailed,zamboanga,rejoining,circuitry,haymarket,khartoum,feuds,braced,miyazaki,mirren,lubusz,caricature,buttresses,attrition,characterizes,widnes,evanston,materialism,contradictions,marist,midrash,gainsborough,ulithi,turkmen,vidya,escuela,patrician,inspirations,reagent,premierships,humanistic,euphrates,transitioning,belfry,zedong,adaption,kaliningrad,lobos,epics,waiver,coniferous,polydor,inductee,refitted,moraine,unsatisfactory,worsening,polygamy,rajya,nested,subgenre,broadside,stampeders,lingua,incheon,pretender,peloton,persuading,excitation,multan,predates,tonne,brackish,autoimmune,insulated,podcasts,iraqis,bodybuilding,condominiums,midlothian,delft,debtor,asymmetrical,lycaenidae,forcefully,pathogenic,tamaulipas,andaman,intravenous,advancements,senegalese,chronologically,realigned,inquirer,eusebius,dekalb,additives,shortlist,goldwater,hindustani,auditing,caterpillars,pesticide,nakhon,ingestion,lansdowne,traditionalist,northland,thunderbirds,josip,nominating,locale,ventricular,animators,verandah,epistles,surveyors,anthems,dredd,upheaval,passaic,anatolian,svalbard,associative,floodplain,taranaki,estuaries,irreducible,beginners,hammerstein,allocate,coursework,secreted,counteract,handwritten,foundational,passover,discoverer,decoding,wares,bourgeoisie,playgrounds,nazionale,abbreviations,seanad,golan,mishra,godavari,rebranding,attendances,backstory,interrupts,lettered,hasbro,ultralight,hormozgan,armee,moderne,subdue,disuse,improvisational,enrolment,persists,moderated,carinthia,hatchback,inhibitory,capitalized,anatoly,abstracts,albemarle,bergamo,insolvency,sentai,cellars,walloon,joked,kashmiri,dirac,materialized,renomination,homologous,gusts,eighteens,centrifugal,storied,baluchestan,formula_26,poincare,vettel,infuriated,gauges,streetcars,vedanta,stately,liquidated,goguryeo,swifts,accountancy,levee,acadian,hydropower,eustace,comintern,allotment,designating,torsion,molding,irritation,aerobic,halen,concerted,plantings,garrisoned,gramophone,cytoplasm,onslaught,requisitioned,relieving,genitive,centrist,jeong,espanola,dissolving,chatterjee,sparking,connaught,varese,arjuna,carpathian,empowering,meteorologist,decathlon,opioid,hohenzollern,fenced,ibiza,avionics,footscray,scrum,discounts,filament,directories,a.f.c,stiffness,quaternary,adventurers,transmits,harmonious,taizong,radiating,germantown,ejection,projectors,gaseous,nahuatl,vidyalaya,nightlife,redefined,refuted,destitute,arista,potters,disseminated,distanced,jamboree,kaohsiung,tilted,lakeshore,grained,inflicting,kreis,novelists,descendents,mezzanine,recast,fatah,deregulation,ac/dc,australis,kohgiluyeh,boreal,goths,authoring,intoxicated,nonpartisan,theodosius,pyongyang,shree,boyhood,sanfl,plenipotentiary,photosynthesis,presidium,sinaloa,honshu,texan,avenida,transmembrane,malays,acropolis,catalunya,vases,inconsistencies,methodists,quell,suisse,banat,simcoe,cercle,zealanders,discredited,equine,sages,parthian,fascists,interpolation,classifying,spinoff,yehuda,cruised,gypsum,foaled,wallachia,saraswati,imperialist,seabed,footnotes,nakajima,locales,schoolmaster,drosophila,bridgehead,immanuel,courtier,bookseller,niccolo,stylistically,portmanteau,superleague,konkani,millimetres,arboreal,thanjavur,emulation,sounders,decompression,commoners,infusion,methodological,osage,rococo,anchoring,bayreuth,formula_27,abstracting,symbolized,bayonne,electrolyte,rowed,corvettes,traversing,editorship,sampler,presidio,curzon,adirondack,swahili,rearing,bladed,lemur,pashtun,behaviours,bottling,zaire,recognisable,systematics,leeward,formulae,subdistricts,smithfield,vijaya,buoyancy,boosting,cantonal,rishi,airflow,kamakura,adana,emblems,aquifer,clustering,husayn,woolly,wineries,montessori,turntable,exponentially,caverns,espoused,pianists,vorpommern,vicenza,latterly,o'rourke,williamstown,generale,kosice,duisburg,poirot,marshy,mismanagement,mandalay,dagenham,universes,chiral,radiated,stewards,vegan,crankshaft,kyrgyz,amphibian,cymbals,infrequently,offenbach,environmentalist,repatriated,permutations,midshipmen,loudoun,refereed,bamberg,ornamented,nitric,selim,translational,dorsum,annunciation,gippsland,reflector,informational,regia,reactionary,ahmet,weathering,erlewine,legalized,berne,occupant,divas,manifests,analyzes,disproportionate,mitochondria,totalitarian,paulista,interscope,anarcho,correlate,brookfield,elongate,brunel,ordinal,precincts,volatility,equaliser,hittite,somaliland,ticketing,monochrome,ubuntu,chhattisgarh,titleholder,ranches,referendums,blooms,accommodates,merthyr,religiously,ryukyu,tumultuous,checkpoints,anode,mi'kmaq,cannonball,punctuation,remodelled,assassinations,criminology,alternates,yonge,pixar,namibian,piraeus,trondelag,hautes,lifeboats,shoal,atelier,vehemently,sadat,postcode,jainism,lycoming,undisturbed,lutherans,genomics,popmatters,tabriz,isthmian,notched,autistic,horsham,mites,conseil,bloomsbury,seung,cybertron,idris,overhauled,disbandment,idealized,goldfields,worshippers,lobbyist,ailments,paganism,herbarium,athenians,messerschmitt,faraday,entangled,'olya,untreated,criticising,howitzers,parvati,lobed,debussy,atonement,tadeusz,permeability,mueang,sepals,degli,optionally,fuelled,follies,asterisk,pristina,lewiston,congested,overpass,affixed,pleads,telecasts,stanislaus,cryptographic,friesland,hamstring,selkirk,antisubmarine,inundated,overlay,aggregates,fleur,trolleybus,sagan,ibsen,inductees,beltway,tiled,ladders,cadbury,laplace,ascetic,micronesia,conveying,bellingham,cleft,batches,usaid,conjugation,macedon,assisi,reappointed,brine,jinnah,prairies,screenwriting,oxidized,despatches,linearly,fertilizers,brazilians,absorbs,wagga,modernised,scorsese,ashraf,charlestown,esque,habitable,nizhny,lettres,tuscaloosa,esplanade,coalitions,carbohydrates,legate,vermilion,standardised,galleria,psychoanalytic,rearrangement,substation,competency,nationalised,reshuffle,reconstructions,mehdi,bougainville,receivership,contraception,enlistment,conducive,aberystwyth,solicitors,dismisses,fibrosis,montclair,homeowner,surrealism,s.h.i.e.l.d,peregrine,compilers,
1790s,parentage,palmas,rzeszow,worldview,eased,svenska,housemate,bundestag,originator,enlisting,outwards,reciprocity,formula_28,carbohydrate,democratically,firefighting,romagna,acknowledgement,khomeini,carbide,quests,vedas,characteristically,guwahati,brixton,unintended,brothels,parietal,namur,sherbrooke,moldavian,baruch,milieu,undulating,laurier,entre,dijon,ethylene,abilene,heracles,paralleling,ceres,dundalk,falun,auspicious,chisinau,polarity,foreclosure,templates,ojibwe,punic,eriksson,biden,bachchan,glaciation,spitfires,norsk,nonviolent,heidegger,algonquin,capacitance,cassettes,balconies,alleles,airdate,conveys,replays,classifies,infrequent,amine,cuttings,rarer,woking,olomouc,amritsar,rockabilly,illyrian,maoist,poignant,tempore,stalinist,segmented,bandmate,mollusc,muhammed,totalled,byrds,tendered,endogenous,kottayam,aisne,oxidase,overhears,illustrators,verve,commercialization,purplish,directv,moulded,lyttelton,baptismal,captors,saracens,georgios,shorten,polity,grids,fitzwilliam,sculls,impurities,confederations,akhtar,intangible,oscillations,parabolic,harlequin,maulana,ovate,tanzanian,singularity,confiscation,qazvin,speyer,phonemes,overgrown,vicarage,gurion,undocumented,niigata,thrones,preamble,stave,interment,liiga,ataturk,aphrodite,groupe,indentured,habsburgs,caption,utilitarian,ozark,slovenes,reproductions,plasticity,serbo,dulwich,castel,barbuda,salons,feuding,lenape,wikileaks,swamy,breuning,shedding,afield,superficially,operationally,lamented,okanagan,hamadan,accolade,furthering,adolphus,fyodor,abridged,cartoonists,pinkish,suharto,cytochrome,methylation,debit,colspan=
9|,refine,taoist,signalled,herding,leaved,bayan,fatherland,rampart,sequenced,negation,storyteller,occupiers,barnabas,pelicans,nadir,conscripted,railcars,prerequisite,furthered,columba,carolinas,markup,gwalior,franche,chaco,eglinton,ramparts,rangoon,metabolites,pollination,croat,televisa,holyoke,testimonial,setlist,safavid,sendai,georgians,shakespearean,galleys,regenerative,krzysztof,overtones,estado,barbary,cherbourg,obispo,sayings,composites,sainsbury,deliberation,cosmological,mahalleh,embellished,ascap,biala,pancras,calumet,grands,canvases,antigens,marianas,defenseman,approximated,seedlings,soren,stele,nuncio,immunology,testimonies,glossary,recollections,suitability,tampere,venous,cohomology,methanol,echoing,ivanovich,warmly,sterilization,imran,multiplying,whitechapel,undersea,xuanzong,tacitus,bayesian,roundhouse,correlations,rioters,molds,fiorentina,bandmates,mezzo,thani,guerilla,
200th,premiums,tamils,deepwater,chimpanzees,tribesmen,selwyn,globo,turnovers,punctuated,erode,nouvelle,banbury,exponents,abolishing,helical,maimonides,endothelial,goteborg,infield,encroachment,cottonwood,mazowiecki,parable,saarbrucken,reliever,epistemology,artistes,enrich,rationing,formula_29,palmyra,subfamilies,kauai,zoran,fieldwork,arousal,creditor,friuli,celts,comoros,equated,escalation,negev,tallied,inductive,anion,netanyahu,mesoamerican,lepidoptera,aspirated,remit,westmorland,italic,crosse,vaclav,fuego,owain,balmain,venetians,ethnicities,deflected,ticino,apulia,austere,flycatcher,reprising,repressive,hauptbahnhof,subtype,ophthalmology,summarizes,eniwetok,colonisation,subspace,nymphalidae,earmarked,tempe,burnet,crests,abbots,norwegians,enlarge,ashoka,frankfort,livorno,malware,renters,singly,iliad,moresby,rookies,gustavus,affirming,alleges,legume,chekhov,studded,abdicated,suzhou,isidore,townsite,repayment,quintus,yankovic,amorphous,constructor,narrowing,industrialists,tanganyika,capitalization,connective,mughals,rarities,aerodynamics,worthing,antalya,diagnostics,shaftesbury,thracian,obstetrics,benghazi,multiplier,orbitals,livonia,roscommon,intensify,ravel,oaths,overseer,locomotion,necessities,chickasaw,strathclyde,treviso,erfurt,aortic,contemplation,accrington,markazi,predeceased,hippocampus,whitecaps,assemblyman,incursion,ethnography,extraliga,reproducing,directorship,benzene,byway,stupa,taxable,scottsdale,onondaga,favourably,countermeasures,lithuanians,thatched,deflection,tarsus,consuls,annuity,paralleled,contextual,anglian,klang,hoisted,multilingual,enacting,samaj,taoiseach,carthaginian,apologised,hydrology,entrant,seamless,inflorescences,mugabe,westerners,seminaries,wintering,penzance,mitre,sergeants,unoccupied,delimitation,discriminate,upriver,abortive,nihon,bessarabia,calcareous,buffaloes,patil,daegu,streamline,berks,chaparral,laity,conceptions,typified,kiribati,threaded,mattel,eccentricity,signified,patagonia,slavonia,certifying,adnan,astley,sedition,minimally,enumerated,nikos,goalless,walid,narendra,causa,missoula,coolant,dalek,outcrop,hybridization,schoolchildren,peasantry,afghans,confucianism,shahr,gallic,tajik,kierkegaard,sauvignon,commissar,patriarchs,tuskegee,prussians,laois,ricans,talmudic,officiating,aesthetically,baloch,antiochus,separatists,suzerainty,arafat,shading,u.s.c,chancellors,inc..,toolkit,nepenthes,erebidae,solicited,pratap,kabbalah,alchemist,caltech,darjeeling,biopic,spillway,kaiserslautern,nijmegen,bolstered,neath,pahlavi,eugenics,bureaus,retook,northfield,instantaneous,deerfield,humankind,selectivity,putative,boarders,cornhuskers,marathas,raikkonen,aliabad,mangroves,garages,gulch,karzai,poitiers,chernobyl,thane,alexios,belgrano,scion,solubility,urbanized,executable,guizhou,nucleic,tripled,equalled,harare,houseguests,potency,ghazi,repeater,overarching,regrouped,broward,ragtime,d'art,nandi,regalia,campsites,mamluk,plating,wirral,presumption,zenit,archivist,emmerdale,decepticon,carabidae,kagoshima,franconia,guarani,formalism,diagonally,submarginal,denys,walkways,punts,metrolink,hydrographic,droplets,upperside,martyred,hummingbird,antebellum,curiously,mufti,friary,chabad,czechs,shaykh,reactivity,berklee,turbonilla,tongan,sultans,woodville,unlicensed,enmity,dominicans,operculum,quarrying,watercolour,catalyzed,gatwick,'what,mesozoic,auditors,shizuoka,footballing,haldane,telemundo,appended,deducted,disseminate,o'shea,pskov,abrasive,entente,gauteng,calicut,lemurs,elasticity,suffused,scopula,staining,upholding,excesses,shostakovich,loanwords,naidu,championnat,chromatography,boasting,goaltenders,engulfed,salah,kilogram,morristown,shingles,shi'a,labourer,renditions,frantisek,jekyll,zonal,nanda,sheriffs,eigenvalues,divisione,endorsing,ushered,auvergne,cadres,repentance,freemasons,utilising,laureates,diocletian,semiconductors,o'grady,vladivostok,sarkozy,trackage,masculinity,hydroxyl,mervyn,muskets,speculations,gridiron,opportunistic,mascots,aleutian,fillies,sewerage,excommunication,borrowers,capillary,trending,sydenham,synthpop,rajah,cagayan,deportes,kedah,faure,extremism,michoacan,levski,culminates,occitan,bioinformatics,unknowingly,inciting,emulated,footpaths,piacenza,dreadnought,viceroyalty,oceanographic,scouted,combinatorial,ornithologist,cannibalism,mujahideen,independiente,cilicia,hindwing,minimized,odeon,gyorgy,rubles,purchaser,collieries,kickers,interurban,coiled,lynchburg,respondent,plzen,detractors,etchings,centering,intensification,tomography,ranjit,warblers,retelling,reinstatement,cauchy,modulus,redirected,evaluates,beginner,kalateh,perforated,manoeuvre,scrimmage,internships,megawatts,mottled,haakon,tunbridge,kalyan,summarised,sukarno,quetta,canonized,henryk,agglomeration,coahuila,diluted,chiropractic,yogyakarta,talladega,sheik,cation,halting,reprisals,sulfuric,musharraf,sympathizers,publicised,arles,lectionary,fracturing,startups,sangha,latrobe,rideau,ligaments,blockading,cremona,lichens,fabaceae,modulated,evocative,embodies,battersea,indistinct,altai,subsystem,acidity,somatic,formula_30,tariq,rationality,sortie,ashlar,pokal,cytoplasmic,valour,bangla,displacing,hijacking,spectrometry,westmeath,weill,charing,goias,revolvers,individualized,tenured,nawaz,piquet,chanted,discard,bernd,phalanx,reworking,unilaterally,subclass,yitzhak,piloting,circumvent,disregarded,semicircular,viscous,tibetans,endeavours,retaliated,cretan,vienne,workhouse,sufficiency,aurangzeb,legalization,lipids,expanse,eintracht,sanjak,megas,
125th,bahraini,yakima,eukaryotes,thwart,affirmation,peloponnese,retailing,carbonyl,chairwoman,macedonians,dentate,rockaway,correctness,wealthier,metamorphic,aragonese,fermanagh,pituitary,schrodinger,evokes,spoiler,chariots,akita,genitalia,combe,confectionery,desegregation,experiential,commodores,persepolis,viejo,restorations,virtualization,hispania,printmaking,stipend,yisrael,theravada,expended,radium,tweeted,polygonal,lippe,charente,leveraged,cutaneous,fallacy,fragrant,bypasses,elaborately,rigidity,majid,majorca,kongo,plasmodium,skits,audiovisual,eerste,staircases,prompts,coulthard,northwestward,riverdale,beatrix,copyrights,prudential,communicates,mated,obscenity,asynchronous,analyse,hansa,searchlight,farnborough,patras,asquith,qarah,contours,fumbled,pasteur,redistributed,almeria,sanctuaries,jewry,israelite,clinicians,koblenz,bookshop,affective,goulburn,panelist,sikorsky,cobham,mimics,ringed,portraiture,probabilistic,girolamo,intelligible,andalusian,jalal,athenaeum,eritrean,auxiliaries,pittsburg,devolution,sangam,isolating,anglers,cronulla,annihilated,kidderminster,synthesize,popularised,theophilus,bandstand,innumerable,chagrin,retroactively,weser,multiples,birdlife,goryeo,pawnee,grosser,grappling,tactile,ahmadinejad,turboprop,erdogan,matchday,proletarian,adhering,complements,austronesian,adverts,luminaries,archeology,impressionism,conifer,sodomy,interracial,platoons,lessen,postings,pejorative,registrations,cookery,persecutions,microbes,audits,idiosyncratic,subsp,suspensions,restricts,colouring,ratify,instrumentals,nucleotides,sulla,posits,bibliotheque,diameters,oceanography,instigation,subsumed,submachine,acceptor,legation,borrows,sedge,discriminated,loaves,insurers,highgate,detectable,abandons,kilns,sportscaster,harwich,iterations,preakness,arduous,tensile,prabhu,shortwave,philologist,shareholding,vegetative,complexities,councilors,distinctively,revitalize,automaton,amassing,montreux,khanh,surabaya,nurnberg,pernambuco,cuisines,charterhouse,firsts,tercera,inhabitant,homophobia,naturalism,einar,powerplant,coruna,entertainments,whedon,rajputs,raton,democracies,arunachal,oeuvre,wallonia,jeddah,trolleybuses,evangelism,vosges,kiowa,minimise,encirclement,undertakes,emigrant,beacons,deepened,grammars,publius,preeminent,seyyed,repechage,crafting,headingley,osteopathic,lithography,hotly,bligh,inshore,betrothed,olympians,formula_31,dissociation,trivandrum,arran,petrovic,stettin,disembarked,simplification,bronzes,philo,acrobatic,jonsson,conjectured,supercharged,kanto,detects,cheeses,correlates,harmonics,lifecycle,sudamericana,reservists,decayed,elitserien,parametric,
113th,dusky,hogarth,modulo,symbiotic,monopolies,discontinuation,converges,southerners,tucuman,eclipses,enclaves,emits,famicom,caricatures,artistically,levelled,mussels,erecting,mouthparts,cunard,octaves,crucible,guardia,unusable,lagrangian,droughts,ephemeral,pashto,canis,tapering,sasebo,silurian,metallurgical,outscored,evolves,reissues,sedentary,homotopy,greyhawk,reagents,inheriting,onshore,tilting,rebuffed,reusable,naturalists,basingstoke,insofar,offensives,dravidian,curators,planks,rajan,isoforms,flagstaff,preside,globular,egalitarian,linkages,biographers,goalscorers,molybdenum,centralised,nordland,jurists,ellesmere,rosberg,hideyoshi,restructure,biases,borrower,scathing,redress,tunnelling,workflow,magnates,mahendra,dissenters,plethora,transcriptions,handicrafts,keyword,xi'an,petrograd,unser,prokofiev,
90deg,madan,bataan,maronite,kearny,carmarthen,termini,consulates,disallowed,rockville,bowery,fanzine,docklands,bests,prohibitions,yeltsin,selassie,naturalization,realisation,dispensary,tribeca,abdulaziz,pocahontas,stagnation,pamplona,cuneiform,propagating,subsurface,christgau,epithelium,schwerin,lynching,routledge,hanseatic,upanishad,glebe,yugoslavian,complicity,endowments,girona,mynetworktv,entomology,plinth,ba'ath,supercup,torus,akkadian,salted,englewood,commandery,belgaum,prefixed,colorless,dartford,enthroned,caesarea,nominative,sandown,safeguards,hulled,formula_32,leamington,dieppe,spearhead,generalizations,demarcation,llanelli,masque,brickwork,recounting,sufism,strikingly,petrochemical,onslow,monologues,emigrating,anderlecht,sturt,hossein,sakhalin,subduction,novices,deptford,zanjan,airstrikes,coalfield,reintroduction,timbaland,hornby,messianic,stinging,universalist,situational,radiocarbon,strongman,rowling,saloons,traffickers,overran,fribourg,cambrai,gravesend,discretionary,finitely,archetype,assessor,pilipinas,exhumed,invocation,interacted,digitized,timisoara,smelter,teton,sexism,precepts,srinagar,pilsudski,carmelite,hanau,scoreline,hernando,trekking,blogging,fanbase,wielded,vesicles,nationalization,banja,rafts,motoring,luang,takeda,girder,stimulates,histone,sunda,nanoparticles,attains,jumpers,catalogued,alluding,pontus,ancients,examiners,shinkansen,ribbentrop,reimbursement,pharmacological,ramat,stringed,imposes,cheaply,transplanted,taiping,mizoram,looms,wallabies,sideman,kootenay,encased,sportsnet,revolutionized,tangier,benthic,runic,pakistanis,heatseekers,shyam,mishnah,presbyterians,stadt,sutras,straddles,zoroastrian,infer,fueling,gymnasts,ofcom,gunfight,journeyman,tracklist,oshawa,ps500,pa'in,mackinac,xiongnu,mississippian,breckinridge,freemason,bight,autoroute,liberalization,distantly,thrillers,solomons,presumptive,romanization,anecdotal,bohemians,unpaved,milder,concurred,spinners,alphabets,strenuous,rivieres,kerrang,mistreatment,dismounted,intensively,carlist,dancehall,shunting,pluralism,trafficked,brokered,bonaventure,bromide,neckar,designates,malian,reverses,sotheby,sorghum,serine,environmentalists,languedoc,consulship,metering,bankstown,handlers,militiamen,conforming,regularity,pondicherry,armin,capsized,consejo,capitalists,drogheda,granular,purged,acadians,endocrine,intramural,elicit,terns,orientations,miklos,omitting,apocryphal,slapstick,brecon,pliocene,affords,typography,emigre,tsarist,tomasz,beset,nishi,necessitating,encyclical,roleplaying,journeyed,inflow,sprints,progressives,novosibirsk,cameroonian,ephesus,speckled,kinshasa,freiherr,burnaby,dalmatian,torrential,rigor,renegades,bhakti,nurburgring,cosimo,convincingly,reverting,visayas,lewisham,charlottetown,charadriiformesfamily,transferable,jodhpur,converters,deepening,camshaft,underdeveloped,protease,polonia,uterine,quantify,tobruk,dealerships,narasimha,fortran,inactivity,
1780s,victors,categorised,naxos,workstation,skink,sardinian,chalice,precede,dammed,sondheim,phineas,tutored,sourcing,uncompromising,placer,tyneside,courtiers,proclaims,pharmacies,hyogo,booksellers,sengoku,kursk,spectrometer,countywide,wielkopolski,bobsleigh,shetty,llywelyn,consistory,heretics,guinean,cliches,individualism,monolithic,imams,usability,bursa,deliberations,railings,torchwood,inconsistency,balearic,stabilizer,demonstrator,facet,radioactivity,outboard,educates,d'oyly,heretical,handover,jurisdictional,shockwave,hispaniola,conceptually,routers,unaffiliated,trentino,formula_33,cypriots,intervenes,neuchatel,formulating,maggiore,delisted,alcohols,thessaly,potable,estimator,suborder,fluency,mimicry,clergymen,infrastructures,rivals.com,baroda,subplot,majlis,plano,clinching,connotation,carinae,savile,intercultural,transcriptional,sandstones,ailerons,annotations,impresario,heinkel,scriptural,intermodal,astrological,ribbed,northeastward,posited,boers,utilise,kalmar,phylum,breakwater,skype,textured,guideline,azeri,rimini,massed,subsidence,anomalous,wolfsburg,polyphonic,accrediting,vodacom,kirov,captaining,kelantan,logie,fervent,eamon,taper,bundeswehr,disproportionately,divination,slobodan,pundits,hispano,kinetics,reunites,makati,ceasing,statistician,amending,chiltern,eparchy,riverine,melanoma,narragansett,pagans,raged,toppled,breaching,zadar,holby,dacian,ochre,velodrome,disparities,amphoe,sedans,webpage,williamsport,lachlan,groton,baring,swastika,heliport,unwillingness,razorbacks,exhibitors,foodstuffs,impacting,tithe,appendages,dermot,subtypes,nurseries,balinese,simulating,stary,remakes,mundi,chautauqua,geologically,stockade,hakka,dilute,kalimantan,pahang,overlapped,fredericton,baha'u'llah,jahangir,damping,benefactors,shomali,triumphal,cieszyn,paradigms,shielded,reggaeton,maharishi,zambian,shearing,golestan,mirroring,partitioning,flyover,songbook,incandescent,merrimack,huguenots,sangeet,vulnerabilities,trademarked,drydock,tantric,honoris,queenstown,labelling,iterative,enlists,statesmen,anglicans,herge,qinghai,burgundian,islami,delineated,zhuge,aggregated,banknote,qatari,suitably,tapestries,asymptotic,charleroi,majorities,pyramidellidae,leanings,climactic,tahir,ramsar,suppressor,revisionist,trawler,ernakulam,penicillium,categorization,slits,entitlement,collegium,earths,benefice,pinochet,puritans,loudspeaker,stockhausen,eurocup,roskilde,alois,jaroslav,rhondda,boutiques,vigor,neurotransmitter,ansar,malden,ferdinando,sported,relented,intercession,camberwell,wettest,thunderbolts,positional,oriel,cloverleaf,penalized,shoshone,rajkumar,completeness,sharjah,chromosomal,belgians,woolen,ultrasonic,sequentially,boleyn,mordella,microsystems,initiator,elachista,mineralogy,rhododendron,integrals,compostela,hamza,sawmills,stadio,berlioz,maidens,stonework,yachting,tappeh,myocardial,laborer,workstations,costumed,nicaea,lanark,roundtable,mashhad,nablus,algonquian,stuyvesant,sarkar,heroines,diwan,laments,intonation,intrigues,almaty,feuded,grandes,algarve,rehabilitate,macrophages,cruciate,dismayed,heuristic,eliezer,kozhikode,covalent,finalised,dimorphism,yaroslavl,overtaking,leverkusen,middlebury,feeders,brookings,speculates,insoluble,lodgings,jozsef,cysteine,shenyang,habilitation,spurious,brainchild,mtdna,comique,albedo,recife,partick,broadening,shahi,orientated,himalaya,swabia,palme,mennonites,spokeswoman,conscripts,sepulchre,chartres,eurozone,scaffold,invertebrate,parishad,bagan,heian,watercolors,basse,supercomputer,commences,tarragona,plainfield,arthurian,functor,identically,murex,chronicling,pressings,burrowing,histoire,guayaquil,goalkeeping,differentiable,warburg,machining,aeneas,kanawha,holocene,ramesses,reprisal,qingdao,avatars,turkestan,cantatas,besieging,repudiated,teamsters,equipping,hydride,ahmadiyya,euston,bottleneck,computations,terengganu,kalinga,stela,rediscovery,'this,azhar,stylised,karelia,polyethylene,kansai,motorised,lounges,normalization,calculators,
1700s,goalkeepers,unfolded,commissary,cubism,vignettes,multiverse,heaters,briton,sparingly,childcare,thorium,plock,riksdag,eunuchs,catalysis,limassol,perce,uncensored,whitlam,ulmus,unites,mesopotamian,refraction,biodiesel,forza,fulda,unseated,mountbatten,shahrak,selenium,osijek,mimicking,antimicrobial,axons,simulcasting,donizetti,swabian,sportsmen,hafiz,neared,heraclius,locates,evaded,subcarpathian,bhubaneswar,negeri,jagannath,thaksin,aydin,oromo,lateran,goldsmiths,multiculturalism,cilia,mihai,evangelists,lorient,qajar,polygons,vinod,mechanised,anglophone,prefabricated,mosses,supervillain,airliners,biofuels,iodide,innovators,valais,wilberforce,logarithm,intelligentsia,dissipation,sanctioning,duchies,aymara,porches,simulators,mostar,telepathic,coaxial,caithness,burghs,fourths,stratification,joaquim,scribes,meteorites,monarchist,germination,vries,desiring,replenishment,istria,winemaking,tammany,troupes,hetman,lanceolate,pelagic,triptych,primeira,scant,outbound,hyphae,denser,bentham,basie,normale,executes,ladislaus,kontinental,herat,cruiserweight,activision,customization,manoeuvres,inglewood,northwood,waveform,investiture,inpatient,alignments,kiryat,rabat,archimedes,ustad,monsanto,archetypal,kirkby,sikhism,correspondingly,catskill,overlaid,petrels,widowers,unicameral,federalists,metalcore,gamerankings,mussel,formula_34,lymphocytes,cystic,southgate,vestiges,immortals,kalam,strove,amazons,pocono,sociologists,sopwith,adheres,laurens,caregivers,inspecting,transylvanian,rebroadcast,rhenish,miserables,pyrams,blois,newtonian,carapace,redshirt,gotland,nazir,unilever,distortions,linebackers,federalism,mombasa,lumen,bernoulli,favouring,aligarh,denounce,steamboats,dnieper,stratigraphic,synths,bernese,umass,icebreaker,guanajuato,heisenberg,boldly,diodes,ladakh,dogmatic,scriptwriter,maritimes,battlestar,symposia,adaptable,toluca,bhavan,nanking,ieyasu,picardy,soybean,adalbert,brompton,deutsches,brezhnev,glandular,laotian,hispanicized,ibadan,personification,dalit,yamuna,regio,dispensed,yamagata,zweibrucken,revising,fandom,stances,participle,flavours,khitan,vertebral,crores,mayaguez,dispensation,guntur,undefined,harpercollins,unionism,meena,leveling,philippa,refractory,telstra,judea,attenuation,pylons,elaboration,elegy,edging,gracillariidae,residencies,absentia,reflexive,deportations,dichotomy,stoves,sanremo,shimon,menachem,corneal,conifers,mordellidae,facsimile,diagnoses,cowper,citta,viticulture,divisive,riverview,foals,mystics,polyhedron,plazas,airspeed,redgrave,motherland,impede,multiplicity,barrichello,airships,pharmacists,harvester,clays,payloads,differentiating,popularize,caesars,tunneling,stagnant,circadian,indemnity,sensibilities,musicology,prefects,serfs,metra,lillehammer,carmarthenshire,kiosks,welland,barbican,alkyl,tillandsia,gatherers,asociacion,showings,bharati,brandywine,subversion,scalable,pfizer,dawla,barium,dardanelles,nsdap,konig,ayutthaya,hodgkin,sedimentation,completions,purchasers,sponsorships,maximizing,banked,taoism,minot,enrolls,fructose,aspired,capuchin,outages,artois,carrollton,totality,osceola,pawtucket,fontainebleau,converged,queretaro,competencies,botha,allotments,sheaf,shastri,obliquely,banding,catharines,outwardly,monchengladbach,driest,contemplative,cassini,ranga,pundit,kenilworth,tiananmen,disulfide,formula_35,townlands,codice_3,looping,caravans,rachmaninoff,segmentation,fluorine,anglicised,gnostic,dessau,discern,reconfigured,altrincham,rebounding,battlecruiser,ramblers,
1770s,convective,triomphe,miyagi,mourners,instagram,aloft,breastfeeding,courtyards,folkestone,changsha,kumamoto,saarland,grayish,provisionally,appomattox,uncial,classicism,mahindra,elapsed,supremes,monophyletic,cautioned,formula_36,noblewoman,kernels,sucre,swaps,bengaluru,grenfell,epicenter,rockhampton,worshipful,licentiate,metaphorical,malankara,amputated,wattle,palawan,tankobon,nobunaga,polyhedra,transduction,jilin,syrians,affinities,fluently,emanating,anglicized,sportscar,botanists,altona,dravida,chorley,allocations,kunming,luanda,premiering,outlived,mesoamerica,lingual,dissipating,impairments,attenborough,balustrade,emulator,bakhsh,cladding,increments,ascents,workington,qal'eh,winless,categorical,petrel,emphasise,dormer,toros,hijackers,telescopic,solidly,jankovic,cession,gurus,madoff,newry,subsystems,northside,talib,englishmen,farnese,holographic,electives,argonne,scrivener,predated,brugge,nauvoo,catalyses,soared,siddeley,graphically,powerlifting,funicular,sungai,coercive,fusing,uncertainties,locos,acetic,diverge,wedgwood,dressings,tiebreaker,didactic,vyacheslav,acreage,interplanetary,battlecruisers,sunbury,alkaloids,hairpin,automata,wielkie,interdiction,plugins,monkees,nudibranch,esporte,approximations,disabling,powering,characterisation,ecologically,martinsville,termen,perpetuated,lufthansa,ascendancy,motherboard,bolshoi,athanasius,prunus,dilution,invests,nonzero,mendocino,charan,banque,shaheed,counterculture,unita,voivode,hospitalization,vapour,supermarine,resistor,steppes,osnabruck,intermediates,benzodiazepines,sunnyside,privatized,geopolitical,ponta,beersheba,kievan,embody,theoretic,sangh,cartographer,blige,rotors,thruway,battlefields,discernible,demobilized,broodmare,colouration,sagas,policymakers,serialization,augmentation,hoare,frankfurter,transnistria,kinases,detachable,generational,converging,antiaircraft,khaki,bimonthly,coadjutor,arkhangelsk,kannur,buffers,livonian,northwich,enveloped,cysts,yokozuna,herne,beeching,enron,virginian,woollen,excepting,competitively,outtakes,recombinant,hillcrest,clearances,pathe,cumbersome,brasov,u.s.a,likud,christiania,cruciform,hierarchies,wandsworth,lupin,resins,voiceover,sitar,electrochemical,mediacorp,typhus,grenadiers,hepatic,pompeii,weightlifter,bosniak,oxidoreductase,undersecretary,rescuers,ranji,seleucid,analysing,exegesis,tenancy,toure,kristiansand,
110th,carillon,minesweepers,poitou,acceded,palladian,redevelop,naismith,rifled,proletariat,shojo,hackensack,harvests,endpoint,kuban,rosenborg,stonehenge,authorisation,jacobean,revocation,compatriots,colliding,undetermined,okayama,acknowledgment,angelou,fresnel,chahar,ethereal,mg/kg,emmet,mobilised,unfavourable,cultura,characterizing,parsonage,skeptics,expressways,rabaul,medea,guardsmen,visakhapatnam,caddo,homophobic,elmwood,encircling,coexistence,contending,seljuk,mycologist,infertility,moliere,insolvent,covenants,underpass,holme,landesliga,workplaces,delinquency,methamphetamine,contrived,tableau,tithes,overlying,usurped,contingents,spares,oligocene,molde,beatification,mordechai,balloting,pampanga,navigators,flowered,debutant,codec,orogeny,newsletters,solon,ambivalent,ubisoft,archdeaconry,harpers,kirkus,jabal,castings,kazhagam,sylhet,yuwen,barnstaple,amidships,causative,isuzu,watchtower,granules,canaveral,remuneration,insurer,payout,horizonte,integrative,attributing,kiwis,skanderbeg,asymmetry,gannett,urbanism,disassembled,unaltered,precluded,melodifestivalen,ascends,plugin,gurkha,bisons,stakeholder,industrialisation,abbotsford,sextet,bustling,uptempo,slavia,choreographers,midwives,haram,javed,gazetteer,subsection,natively,weighting,lysine,meera,redbridge,muchmusic,abruzzo,adjoins,unsustainable,foresters,kbit/s,cosmopterigidae,secularism,poetics,causality,phonograph,estudiantes,ceausescu,universitario,adjoint,applicability,gastropods,nagaland,kentish,mechelen,atalanta,woodpeckers,lombards,gatineau,romansh,avraham,acetylcholine,perturbation,galois,wenceslaus,fuzhou,meandering,dendritic,sacristy,accented,katha,therapeutics,perceives,unskilled,greenhouses,analogues,chaldean,timbre,sloped,volodymyr,sadiq,maghreb,monogram,rearguard,caucuses,mures,metabolite,uyezd,determinism,theosophical,corbet,gaels,disruptions,bicameral,ribosomal,wolseley,clarksville,watersheds,tarsi,radon,milanese,discontinuous,aristotelian,whistleblower,representational,hashim,modestly,localised,atrial,hazara,ravana,troyes,appointees,rubus,morningside,amity,aberdare,ganglia,wests,zbigniew,aerobatic,depopulated,corsican,introspective,twinning,hardtop,shallower,cataract,mesolithic,emblematic,graced,lubrication,republicanism,voronezh,bastions,meissen,irkutsk,oboes,hokkien,sprites,tenet,individualist,capitulated,oakville,dysentery,orientalist,hillsides,keywords,elicited,incised,lagging,apoel,lengthening,attractiveness,marauders,sportswriter,decentralization,boltzmann,contradicts,draftsman,precipitate,solihull,norske,consorts,hauptmann,riflemen,adventists,syndromes,demolishing,customize,continuo,peripherals,seamlessly,linguistically,bhushan,orphanages,paraul,lessened,devanagari,quarto,responders,patronymic,riemannian,altoona,canonization,honouring,geodetic,exemplifies,republica,enzymatic,porters,fairmount,pampa,sufferers,kamchatka,conjugated,coachella,uthman,repositories,copious,headteacher,awami,phoneme,homomorphism,franconian,moorland,davos,quantified,kamloops,quarks,mayoralty,weald,peacekeepers,valerian,particulate,insiders,perthshire,caches,guimaraes,piped,grenadines,kosciuszko,trombonist,artemisia,covariance,intertidal,soybeans,beatified,ellipse,fruiting,deafness,dnipropetrovsk,accrued,zealous,mandala,causation,junius,kilowatt,bakeries,montpelier,airdrie,rectified,bungalows,toleration,debian,pylon,trotskyist,posteriorly,two-and-a-half,herbivorous,islamists,poetical,donne,wodehouse,frome,allium,assimilate,phonemic,minaret,unprofitable,darpa,untenable,leaflet,bitcoin,zahir,thresholds,argentino,jacopo,bespoke,stratified,wellbeing,shiite,basaltic,timberwolves,secrete,taunts,marathons,isomers,carre,consecrators,penobscot,pitcairn,sakha,crosstown,inclusions,impassable,fenders,indre,uscgc,jordi,retinue,logarithmic,pilgrimages,railcar,cashel,blackrock,macroscopic,aligning,tabla,trestle,certify,ronson,palps,dissolves,thickened,silicate,taman,walsingham,hausa,lowestoft,rondo,oleksandr,cuyahoga,retardation,countering,cricketing,holborn,identifiers,hells,geophysics,infighting,sculpting,balaji,webbed,irradiation,runestone,trusses,oriya,sojourn,forfeiture,colonize,exclaimed,eucharistic,lackluster,glazing,northridge,gutenberg,stipulates,macroeconomic,priori,outermost,annular,udinese,insulating,headliner,godel,polytope,megalithic,salix,sharapova,derided,muskegon,braintree,plateaus,confers,autocratic,isomer,interstitial,stamping,omits,kirtland,hatchery,evidences,intifada,
111th,podgorica,capua,motivating,nuneaton,jakub,korsakov,amitabh,mundial,monrovia,gluten,predictor,marshalling,d'orleans,levers,touchscreen,brantford,fricative,banishment,descendent,antagonism,ludovico,loudspeakers,formula_37,livelihoods,manassas,steamships,dewsbury,uppermost,humayun,lures,pinnacles,dependents,lecce,clumps,observatories,paleozoic,dedicating,samiti,draughtsman,gauls,incite,infringing,nepean,pythagorean,convents,triumvirate,seigneur,gaiman,vagrant,fossa,byproduct,serrated,renfrewshire,sheltering,achaemenid,dukedom,catchers,sampdoria,platelet,bielefeld,fluctuating,phenomenology,strikeout,ethnology,prospectors,woodworking,tatra,wildfires,meditations,agrippa,fortescue,qureshi,wojciech,methyltransferase,accusative,saatchi,amerindian,volcanism,zeeland,toyama,vladimirovich,allege,polygram,redox,budgeted,advisories,nematode,chipset,starscream,tonbridge,hardening,shales,accompanist,paraded,phonographic,whitefish,sportive,audiobook,kalisz,hibernation,latif,duels,ps200,coxeter,nayak,safeguarding,cantabria,minesweeping,zeiss,dunams,catholicos,sawtooth,ontological,nicobar,bridgend,unclassified,intrinsically,hanoverian,rabbitohs,kenseth,alcalde,northumbrian,raritan,septuagint,presse,sevres,origen,dandenong,peachtree,intersected,impeded,usages,hippodrome,novara,trajectories,customarily,yardage,inflected,yanow,kalan,taverns,liguria,librettist,intermarriage,
1760s,courant,gambier,infanta,ptolemaic,ukulele,haganah,sceptical,manchukuo,plexus,implantation,hilal,intersex,efficiencies,arbroath,hagerstown,adelphi,diario,marais,matti,lifes,coining,modalities,divya,bletchley,conserving,ivorian,mithridates,generative,strikeforce,laymen,toponymy,pogrom,satya,meticulously,agios,dufferin,yaakov,fortnightly,cargoes,deterrence,prefrontal,przemysl,mitterrand,commemorations,chatsworth,gurdwara,abuja,chakraborty,badajoz,geometries,artiste,diatonic,ganglion,presides,marymount,nanak,cytokines,feudalism,storks,rowers,widens,politico,evangelicals,assailants,pittsfield,allowable,bijapur,telenovelas,dichomeris,glenelg,herbivores,keita,inked,radom,fundraisers,constantius,boheme,portability,komnenos,crystallography,derrida,moderates,tavistock,fateh,spacex,disjoint,bristles,commercialized,interwoven,empirically,regius,bulacan,newsday,showa,radicalism,yarrow,pleura,sayed,structuring,cotes,reminiscences,acetyl,edicts,escalators,aomori,encapsulated,legacies,bunbury,placings,fearsome,postscript,powerfully,keighley,hildesheim,amicus,crevices,deserters,benelux,aurangabad,freeware,ioannis,carpathians,chirac,seceded,prepaid,landlocked,naturalised,yanukovych,soundscan,blotch,phenotypic,determinants,twente,dictatorial,giessen,composes,recherche,pathophysiology,inventories,ayurveda,elevating,gravestone,degeneres,vilayet,popularizing,spartanburg,bloemfontein,previewed,renunciation,genotype,ogilvy,tracery,blacklisted,emissaries,diploid,disclosures,tupolev,shinjuku,antecedents,pennine,braganza,bhattacharya,countable,spectroscopic,ingolstadt,theseus,corroborated,compounding,thrombosis,extremadura,medallions,hasanabad,lambton,perpetuity,glycol,besancon,palaiologos,pandey,caicos,antecedent,stratum,laserdisc,novitiate,crowdfunding,palatal,sorceress,dassault,toughness,celle,cezanne,vientiane,tioga,hander,crossbar,gisborne,cursor,inspectorate,serif,praia,sphingidae,nameplate,psalter,ivanovic,sitka,equalised,mutineers,sergius,outgrowth,creationism,haredi,rhizomes,predominate,undertakings,vulgate,hydrothermal,abbeville,geodesic,kampung,physiotherapy,unauthorised,asteraceae,conservationist,minoan,supersport,mohammadabad,cranbrook,mentorship,legitimately,marshland,datuk,louvain,potawatomi,carnivores,levies,lyell,hymnal,regionals,tinto,shikoku,conformal,wanganui,beira,lleida,standstill,deloitte,formula_40,corbusier,chancellery,mixtapes,airtime,muhlenberg,formula_39,bracts,thrashers,prodigious,gironde,chickamauga,uyghurs,substitutions,pescara,batangas,gregarious,gijon,paleo,mathura,pumas,proportionally,hawkesbury,yucca,kristiania,funimation,fluted,eloquence,mohun,aftermarket,chroniclers,futurist,nonconformist,branko,mannerisms,lesnar,opengl,altos,retainers,ashfield,shelbourne,sulaiman,divisie,gwent,locarno,lieder,minkowski,bivalve,redeployed,cartography,seaway,bookings,decays,ostend,antiquaries,pathogenesis,formula_38,chrysalis,esperance,valli,motogp,homelands,bridged,bloor,ghazal,vulgaris,baekje,prospector,calculates,debtors,hesperiidae,titian,returner,landgrave,frontenac,kelowna,pregame,castelo,caius,canoeist,watercolours,winterthur,superintendents,dissonance,dubstep,adorn,matic,salih,hillel,swordsman,flavoured,emitter,assays,monongahela,deeded,brazzaville,sufferings,babylonia,fecal,umbria,astrologer,gentrification,frescos,phasing,zielona,ecozone,candido,manoj,quadrilateral,gyula,falsetto,prewar,puntland,infinitive,contraceptive,bakhtiari,ohrid,socialization,tailplane,evoking,havelock,macapagal,plundering,
104th,keynesian,templars,phrasing,morphologically,czestochowa,humorously,catawba,burgas,chiswick,ellipsoid,kodansha,inwards,gautama,katanga,orthopaedic,heilongjiang,sieges,outsourced,subterminal,vijayawada,hares,oration,leitrim,ravines,manawatu,cryogenic,tracklisting,about.com,ambedkar,degenerated,hastened,venturing,lobbyists,shekhar,typefaces,northcote,rugen,'good,ornithology,asexual,hemispheres,unsupported,glyphs,spoleto,epigenetic,musicianship,donington,diogo,kangxi,bisected,polymorphism,megawatt,salta,embossed,cheetahs,cruzeiro,unhcr,aristide,rayleigh,maturing,indonesians,noire,llano,ffffff,camus,purges,annales,convair,apostasy,algol,phage,apaches,marketers,aldehyde,pompidou,kharkov,forgeries,praetorian,divested,retrospectively,gornji,scutellum,bitumen,pausanias,magnification,imitations,nyasaland,geographers,floodlights,athlone,hippolyte,expositions,clarinetist,razak,neutrinos,rotax,sheykh,plush,interconnect,andalus,cladogram,rudyard,resonator,granby,blackfriars,placido,windscreen,sahel,minamoto,haida,cations,emden,blackheath,thematically,blacklist,pawel,disseminating,academical,undamaged,raytheon,harsher,powhatan,ramachandran,saddles,paderborn,capping,zahra,prospecting,glycine,chromatin,profane,banska,helmand,okinawan,dislocation,oscillators,insectivorous,foyle,gilgit,autonomic,tuareg,sluice,pollinated,multiplexed,granary,narcissus,ranchi,staines,nitra,goalscoring,midwifery,pensioners,algorithmic,meetinghouse,biblioteca,besar,narva,angkor,predate,lohan,cyclical,detainee,occipital,eventing,faisalabad,dartmoor,kublai,courtly,resigns,radii,megachilidae,cartels,shortfall,xhosa,unregistered,benchmarks,dystopian,bulkhead,ponsonby,jovanovic,accumulates,papuan,bhutanese,intuitively,gotaland,headliners,recursion,dejan,novellas,diphthongs,imbued,withstood,analgesic,amplify,powertrain,programing,maidan,alstom,affirms,eradicated,summerslam,videogame,molla,severing,foundered,gallium,atmospheres,desalination,shmuel,howmeh,catolica,bossier,reconstructing,isolates,lyase,tweets,unconnected,tidewater,divisible,cohorts,orebro,presov,furnishing,folklorist,simplifying,centrale,notations,factorization,monarchies,deepen,macomb,facilitation,hennepin,declassified,redrawn,microprocessors,preliminaries,enlarging,timeframe,deutschen,shipbuilders,patiala,ferrous,aquariums,genealogies,vieux,unrecognized,bridgwater,tetrahedral,thule,resignations,gondwana,registries,agder,dataset,felled,parva,analyzer,worsen,coleraine,columella,blockaded,polytechnique,reassembled,reentry,narvik,greys,nigra,knockouts,bofors,gniezno,slotted,hamasaki,ferrers,conferring,thirdly,domestication,photojournalist,universality,preclude,ponting,halved,thereupon,photosynthetic,ostrava,mismatch,pangasinan,intermediaries,abolitionists,transited,headings,ustase,radiological,interconnection,dabrowa,invariants,honorius,preferentially,chantilly,marysville,dialectical,antioquia,abstained,gogol,dirichlet,muricidae,symmetries,reproduces,brazos,fatwa,bacillus,ketone,paribas,chowk,multiplicative,dermatitis,mamluks,devotes,adenosine,newbery,meditative,minefields,inflection,oxfam,conwy,bystrica,imprints,pandavas,infinitesimal,conurbation,amphetamine,reestablish,furth,edessa,injustices,frankston,serjeant,
4x200,khazar,sihanouk,longchamp,stags,pogroms,coups,upperparts,endpoints,infringed,nuanced,summing,humorist,pacification,ciaran,jamaat,anteriorly,roddick,springboks,faceted,hypoxia,rigorously,cleves,fatimid,ayurvedic,tabled,ratna,senhora,maricopa,seibu,gauguin,holomorphic,campgrounds,amboy,coordinators,ponderosa,casemates,ouachita,nanaimo,mindoro,zealander,rimsky,cluny,tomaszow,meghalaya,caetano,tilak,roussillon,landtag,gravitation,dystrophy,cephalopods,trombones,glens,killarney,denominated,anthropogenic,pssas,roubaix,carcasses,montmorency,neotropical,communicative,rabindranath,ordinated,separable,overriding,surged,sagebrush,conciliation,codice_4,durrani,phosphatase,qadir,votive,revitalized,taiyuan,tyrannosaurus,graze,slovaks,nematodes,environmentalism,blockhouse,illiteracy,schengen,ecotourism,alternation,conic,wields,hounslow,blackfoot,kwame,ambulatory,volhynia,hordaland,croton,piedras,rohit,drava,conceptualized,birla,illustrative,gurgaon,barisal,tutsi,dezong,nasional,polje,chanson,clarinets,krasnoyarsk,aleksandrovich,cosmonaut,d'este,palliative,midseason,silencing,wardens,durer,girders,salamanders,torrington,supersonics,lauda,farid,circumnavigation,embankments,funnels,bajnoksag,lorries,cappadocia,jains,warringah,retirees,burgesses,equalization,cusco,ganesan,algal,amazonian,lineups,allocating,conquerors,usurper,mnemonic,predating,brahmaputra,ahmadabad,maidenhead,numismatic,subregion,encamped,reciprocating,freebsd,irgun,tortoises,governorates,zionists,airfoil,collated,ajmer,fiennes,etymological,polemic,chadian,clerestory,nordiques,fluctuated,calvados,oxidizing,trailhead,massena,quarrels,dordogne,tirunelveli,pyruvate,pulsed,athabasca,sylar,appointee,serer,japonica,andronikos,conferencing,nicolaus,chemin,ascertained,incited,woodbine,helices,hospitalised,emplacements,to/from,orchestre,tyrannical,pannonia,methodism,pop/rock,shibuya,berbers,despot,seaward,westpac,separator,perpignan,alamein,judeo,publicize,quantization,ethniki,gracilis,menlo,offside,oscillating,unregulated,succumbing,finnmark,metrical,suleyman,raith,sovereigns,bundesstrasse,kartli,fiduciary,darshan,foramen,curler,concubines,calvinism,larouche,bukhara,sophomores,mohanlal,lutheranism,monomer,eamonn,'black,uncontested,immersive,tutorials,beachhead,bindings,permeable,postulates,comite,transformative,indiscriminate,hofstra,associacao,amarna,dermatology,lapland,aosta,babur,unambiguous,formatting,schoolboys,gwangju,superconducting,replayed,adherent,aureus,compressors,forcible,spitsbergen,boulevards,budgeting,nossa,annandale,perumal,interregnum,sassoon,kwajalein,greenbrier,caldas,triangulation,flavius,increment,shakhtar,nullified,pinfall,nomen,microfinance,depreciation,cubist,steeper,splendour,gruppe,everyman,chasers,campaigners,bridle,modality,percussive,darkly,capes,velar,picton,triennial,factional,padang,toponym,betterment,norepinephrine,
112th,estuarine,diemen,warehousing,morphism,ideologically,pairings,immunization,crassus,exporters,sefer,flocked,bulbous,deseret,booms,calcite,bohol,elven,groot,pulau,citigroup,wyeth,modernizing,layering,pastiche,complies,printmaker,condenser,theropod,cassino,oxyrhynchus,akademie,trainings,lowercase,coxae,parte,chetniks,pentagonal,keselowski,monocoque,morsi,reticulum,meiosis,clapboard,recoveries,tinge,an/fps,revista,sidon,livre,epidermis,conglomerates,kampong,congruent,harlequins,tergum,simplifies,epidemiological,underwriting,tcp/ip,exclusivity,multidimensional,mysql,columbine,ecologist,hayat,sicilies,levees,handset,aesop,usenet,pacquiao,archiving,alexandrian,compensatory,broadsheet,annotation,bahamian,d'affaires,interludes,phraya,shamans,marmara,customizable,immortalized,ambushes,chlorophyll,diesels,emulsion,rheumatoid,voluminous,screenwriters,tailoring,sedis,runcorn,democratization,bushehr,anacostia,constanta,antiquary,sixtus,radiate,advaita,antimony,acumen,barristers,reichsbahn,ronstadt,symbolist,pasig,cursive,secessionist,afrikaner,munnetra,inversely,adsorption,syllabic,moltke,idioms,midline,olimpico,diphosphate,cautions,radziwill,mobilisation,copelatus,trawlers,unicron,bhaskar,financiers,minimalism,derailment,marxists,oireachtas,abdicate,eigenvalue,zafar,vytautas,ganguly,chelyabinsk,telluride,subordination,ferried,dived,vendee,pictish,dimitrov,expiry,carnation,cayley,magnitudes,lismore,gretna,sandwiched,unmasked,sandomierz,swarthmore,tetra,nanyang,pevsner,dehradun,mormonism,rashi,complying,seaplanes,ningbo,cooperates,strathcona,mornington,mestizo,yulia,edgbaston,palisade,ethno,polytopes,espirito,tymoshenko,pronunciations,paradoxical,taichung,chipmunks,erhard,maximise,accretion,kanda,`abdu'l,narrowest,umpiring,mycenaean,divisor,geneticist,ceredigion,barque,hobbyists,equates,auxerre,spinose,cheil,sweetwater,guano,carboxylic,archiv,tannery,cormorant,agonists,fundacion,anbar,tunku,hindrance,meerut,concordat,secunderabad,kachin,achievable,murfreesboro,comprehensively,forges,broadest,synchronised,speciation,scapa,aliyev,conmebol,tirelessly,subjugated,pillaged,udaipur,defensively,lakhs,stateless,haasan,headlamps,patterning,podiums,polyphony,mcmurdo,mujer,vocally,storeyed,mucosa,multivariate,scopus,minimizes,formalised,certiorari,bourges,populate,overhanging,gaiety,unreserved,borromeo,woolworths,isotopic,bashar,purify,vertebra,medan,juxtaposition,earthwork,elongation,chaudhary,schematic,piast,steeped,nanotubes,fouls,achaea,legionnaires,abdur,qmjhl,embraer,hardback,centerville,ilocos,slovan,whitehorse,mauritian,moulding,mapuche,donned,provisioning,gazprom,jonesboro,audley,lightest,calyx,coldwater,trigonometric,petroglyphs,psychoanalyst,congregate,zambezi,fissure,supervises,bexley,etobicoke,wairarapa,tectonics,emphasises,formula_41,debugging,linfield,spatially,ionizing,ungulates,orinoco,clades,erlangen,news/talk,vols.,ceara,yakovlev,finsbury,entanglement,fieldhouse,graphene,intensifying,grigory,keyong,zacatecas,ninian,allgemeine,keswick,societa,snorri,femininity,najib,monoclonal,guyanese,postulate,huntly,abbeys,machinist,yunus,emphasising,ishaq,urmia,bremerton,pretenders,lumiere,thoroughfares,chikara,dramatized,metathorax,taiko,transcendence,wycliffe,retrieves,umpired,steuben,racehorses,taylors,kuznetsov,montezuma,precambrian,canopies,gaozong,propodeum,disestablished,retroactive,shoreham,rhizome,doubleheader,clinician,diwali,quartzite,shabaab,agassiz,despatched,stormwater,luxemburg,callao,universidade,courland,skane,glyph,dormers,witwatersrand,curacy,qualcomm,nansen,entablature,lauper,hausdorff,lusaka,ruthenian,
360deg,cityscape,douai,vaishnava,spars,vaulting,rationalist,gygax,sequestration,typology,pollinates,accelerators,leben,colonials,cenotaph,imparted,carthaginians,equaled,rostrum,gobind,bodhisattva,oberst,bicycling,arabi,sangre,biophysics,hainaut,vernal,lunenburg,apportioned,finches,lajos,nenad,repackaged,zayed,nikephoros,r.e.m,swaminarayan,gestalt,unplaced,crags,grohl,sialkot,unsaturated,gwinnett,linemen,forays,palakkad,writs,instrumentalists,aircrews,badged,terrapins,
180deg,oneness,commissariat,changi,pupation,circumscribed,contador,isotropic,administrated,fiefs,nimes,intrusions,minoru,geschichte,nadph,tainan,changchun,carbondale,frisia,swapo,evesham,hawai'i,encyclopedic,transporters,dysplasia,formula_42,onsite,jindal,guetta,judgements,narbonne,permissions,paleogene,rationalism,vilna,isometric,subtracted,chattahoochee,lamina,missa,greville,pervez,lattices,persistently,crystallization,timbered,hawaiians,fouling,interrelated,masood,ripening,stasi,gamal,visigothic,warlike,cybernetics,tanjung,forfar,cybernetic,karelian,brooklands,belfort,greifswald,campeche,inexplicably,refereeing,understory,uninterested,prius,collegiately,sefid,sarsfield,categorize,biannual,elsevier,eisteddfod,declension,autonoma,procuring,misrepresentation,novelization,bibliographic,shamanism,vestments,potash,eastleigh,ionized,turan,lavishly,scilly,balanchine,importers,parlance,'that,kanyakumari,synods,mieszko,crossovers,serfdom,conformational,legislated,exclave,heathland,sadar,differentiates,propositional,konstantinos,photoshop,manche,vellore,appalachia,orestes,taiga,exchanger,grozny,invalidated,baffin,spezia,staunchly,eisenach,robustness,virtuosity,ciphers,inlets,bolagh,understandings,bosniaks,parser,typhoons,sinan,luzerne,webcomic,subtraction,jhelum,businessweek,ceske,refrained,firebox,mitigated,helmholtz,dilip,eslamabad,metalwork,lucan,apportionment,provident,gdynia,schooners,casement,danse,hajjiabad,benazir,buttress,anthracite,newsreel,wollaston,dispatching,cadastral,riverboat,provincetown,nantwich,missal,irreverent,juxtaposed,darya,ennobled,electropop,stereoscopic,maneuverability,laban,luhansk,udine,collectibles,haulage,holyrood,materially,supercharger,gorizia,shkoder,townhouses,pilate,layoffs,folkloric,dialectic,exuberant,matures,malla,ceuta,citizenry,crewed,couplet,stopover,transposition,tradesmen,antioxidant,amines,utterance,grahame,landless,isere,diction,appellant,satirist,urbino,intertoto,subiaco,antonescu,nehemiah,ubiquitin,emcee,stourbridge,fencers,
103rd,wranglers,monteverdi,watertight,expounded,xiamen,manmohan,pirie,threefold,antidepressant,sheboygan,grieg,cancerous,diverging,bernini,polychrome,fundamentalism,bihari,critiqued,cholas,villers,tendulkar,dafydd,vastra,fringed,evangelization,episcopalian,maliki,sana'a,ashburton,trianon,allegany,heptathlon,insufficiently,panelists,pharrell,hexham,amharic,fertilized,plumes,cistern,stratigraphy,akershus,catalans,karoo,rupee,minuteman,quantification,wigmore,leutnant,metanotum,weeknights,iridescent,extrasolar,brechin,deuterium,kuching,lyricism,astrakhan,brookhaven,euphorbia,hradec,bhagat,vardar,aylmer,positron,amygdala,speculators,unaccompanied,debrecen,slurry,windhoek,disaffected,rapporteur,mellitus,blockers,fronds,yatra,sportsperson,precession,physiologist,weeknight,pidgin,pharma,condemns,standardize,zetian,tibor,glycoprotein,emporia,cormorants,amalie,accesses,leonhard,denbighshire,roald,
116th,will.i.am,symbiosis,privatised,meanders,chemnitz,jabalpur,shing,secede,ludvig,krajina,homegrown,snippets,sasanian,euripides,peder,cimarron,streaked,graubunden,kilimanjaro,mbeki,middleware,flensburg,bukovina,lindwall,marsalis,profited,abkhaz,polis,camouflaged,amyloid,morgantown,ovoid,bodleian,morte,quashed,gamelan,juventud,natchitoches,storyboard,freeview,enumeration,cielo,preludes,bulawayo,
1600s,olympiads,multicast,faunal,asura,reinforces,puranas,ziegfeld,handicraft,seamount,kheil,noche,hallmarks,dermal,colorectal,encircle,hessen,umbilicus,sunnis,leste,unwin,disclosing,superfund,montmartre,refuelling,subprime,kolhapur,etiology,bismuth,laissez,vibrational,mazar,alcoa,rumsfeld,recurve,ticonderoga,lionsgate,onlookers,homesteads,filesystem,barometric,kingswood,biofuel,belleza,moshav,occidentalis,asymptomatic,northeasterly,leveson,huygens,numan,kingsway,primogeniture,toyotomi,yazoo,limpets,greenbelt,booed,concurrence,dihedral,ventrites,raipur,sibiu,plotters,kitab,
109th,trackbed,skilful,berthed,effendi,fairing,sephardi,mikhailovich,lockyer,wadham,invertible,paperbacks,alphabetic,deuteronomy,constitutive,leathery,greyhounds,estoril,beechcraft,poblacion,cossidae,excreted,flamingos,singha,olmec,neurotransmitters,ascoli,nkrumah,forerunners,dualism,disenchanted,benefitted,centrum,undesignated,noida,o'donoghue,collages,egrets,egmont,wuppertal,cleave,montgomerie,pseudomonas,srinivasa,lymphatic,stadia,resold,minima,evacuees,consumerism,ronde,biochemist,automorphism,hollows,smuts,improvisations,vespasian,bream,pimlico,eglin,colne,melancholic,berhad,ousting,saale,notaulices,ouest,hunslet,tiberias,abdomina,ramsgate,stanislas,donbass,pontefract,sucrose,halts,drammen,chelm,l'arc,taming,trolleys,konin,incertae,licensees,scythian,giorgos,dative,tanglewood,farmlands,o'keeffe,caesium,romsdal,amstrad,corte,oglethorpe,huntingdonshire,magnetization,adapts,zamosc,shooto,cuttack,centrepiece,storehouse,winehouse,morbidity,woodcuts,ryazan,buddleja,buoyant,bodmin,estero,austral,verifiable,periyar,christendom,curtail,shura,kaifeng,cotswold,invariance,seafaring,gorica,androgen,usman,seabird,forecourt,pekka,juridical,audacious,yasser,cacti,qianlong,polemical,d'amore,espanyol,distrito,cartographers,pacifism,serpents,backa,nucleophilic,overturning,duplicates,marksman,oriente,vuitton,oberleutnant,gielgud,gesta,swinburne,transfiguration,
1750s,retaken,celje,fredrikstad,asuka,cropping,mansard,donates,blacksmiths,vijayanagara,anuradhapura,germinate,betis,foreshore,jalandhar,bayonets,devaluation,frazione,ablaze,abidjan,approvals,homeostasis,corollary,auden,superfast,redcliffe,luxembourgish,datum,geraldton,printings,ludhiana,honoree,synchrotron,invercargill,hurriedly,
108th,three-and-a-half,colonist,bexar,limousin,bessemer,ossetian,nunataks,buddhas,rebuked,thais,tilburg,verdicts,interleukin,unproven,dordrecht,solent,acclamation,muammar,dahomey,operettas,
4x400,arrears,negotiators,whitehaven,apparitions,armoury,psychoactive,worshipers,sculptured,elphinstone,airshow,kjell,o'callaghan,shrank,professorships,predominance,subhash,coulomb,sekolah,retrofitted,samos,overthrowing,vibrato,resistors,palearctic,datasets,doordarshan,subcutaneous,compiles,immorality,patchwork,trinidadian,glycogen,pronged,zohar,visigoths,freres,akram,justo,agora,intakes,craiova,playwriting,bukhari,militarism,iwate,petitioners,harun,wisla,inefficiency,vendome,ledges,schopenhauer,kashi,entombed,assesses,tenn.,noumea,baguio,carex,o'donovan,filings,hillsdale,conjectures,blotches,annuals,lindisfarne,negated,vivek,angouleme,trincomalee,cofactor,verkhovna,backfield,twofold,automaker,rudra,freighters,darul,gharana,busway,formula_43,plattsburgh,portuguesa,showrunner,roadmap,valenciennes,erdos,biafra,spiritualism,transactional,modifies,carne,
107th,cocos,gcses,tiverton,radiotherapy,meadowlands,gunma,srebrenica,foxtel,authenticated,enslavement,classicist,klaipeda,minstrels,searchable,infantrymen,incitement,shiga,nadp+,urals,guilders,banquets,exteriors,counterattacks,visualized,diacritics,patrimony,svensson,transepts,prizren,telegraphy,najaf,emblazoned,coupes,effluent,ragam,omani,greensburg,taino,flintshire,cd/dvd,lobbies,narrating,cacao,seafarers,bicolor,collaboratively,suraj,floodlit,sacral,puppetry,tlingit,malwa,login,motionless,thien,overseers,vihar,golem,specializations,bathhouse,priming,overdubs,winningest,archetypes,uniao,acland,creamery,slovakian,lithographs,maryborough,confidently,excavating,stillborn,ramallah,audiencia,alava,ternary,hermits,rostam,bauxite,gawain,lothair,captions,gulfstream,timelines,receded,mediating,petain,bastia,rudbar,bidders,disclaimer,shrews,tailings,trilobites,yuriy,jamil,demotion,gynecology,rajinikanth,madrigals,ghazni,flycatchers,vitebsk,bizet,computationally,kashgar,refinements,frankford,heralds,europe/africa,levante,disordered,sandringham,queues,ransacked,trebizond,verdes,comedie,primitives,figurine,organists,culminate,gosport,coagulation,ferrying,hoyas,polyurethane,prohibitive,midfielders,ligase,progesterone,defectors,sweetened,backcountry,diodorus,waterside,nieuport,khwaja,jurong,decried,gorkha,ismaili,
300th,octahedral,kindergartens,paseo,codification,notifications,disregarding,risque,reconquista,shortland,atolls,texarkana,perceval,d'etudes,kanal,herbicides,tikva,nuova,gatherer,dissented,soweto,dexterity,enver,bacharach,placekicker,carnivals,automate,maynooth,symplectic,chetnik,militaire,upanishads,distributive,strafing,championing,moiety,miliband,blackadder,enforceable,maung,dimer,stadtbahn,diverges,obstructions,coleophoridae,disposals,shamrocks,aural,banca,bahru,coxed,grierson,vanadium,watermill,radiative,ecoregions,berets,hariri,bicarbonate,evacuations,mallee,nairn,rushden,loggia,slupsk,satisfactorily,milliseconds,cariboo,reine,cyclo,pigmentation,postmodernism,aqueducts,vasari,bourgogne,dilemmas,liquefied,fluminense,alloa,ibaraki,tenements,kumasi,humerus,raghu,labours,putsch,soundcloud,bodybuilder,rakyat,domitian,pesaro,translocation,sembilan,homeric,enforcers,tombstones,lectureship,rotorua,salamis,nikolaos,inferences,superfortress,lithgow,surmised,undercard,tarnow,barisan,stingrays,federacion,coldstream,haverford,ornithological,heerenveen,eleazar,jyoti,murali,bamako,riverbed,subsidised,theban,conspicuously,vistas,conservatorium,madrasa,kingfishers,arnulf,credential,syndicalist,sheathed,discontinuity,prisms,tsushima,coastlines,escapees,vitis,optimizing,megapixel,overground,embattled,halide,sprinters,buoys,mpumalanga,peculiarities,
106th,roamed,menezes,macao,prelates,papyri,freemen,dissertations,irishmen,pooled,sverre,reconquest,conveyance,subjectivity,asturian,circassian,formula_45,comdr,thickets,unstressed,monro,passively,harmonium,moveable,dinar,carlsson,elysees,chairing,b'nai,confusingly,kaoru,convolution,godolphin,facilitator,saxophones,eelam,jebel,copulation,anions,livres,licensure,pontypridd,arakan,controllable,alessandria,propelling,stellenbosch,tiber,wolka,liberators,yarns,d'azur,tsinghua,semnan,amhara,ablation,melies,tonality,historique,beeston,kahne,intricately,sonoran,robespierre,gyrus,boycotts,defaulted,infill,maranhao,emigres,framingham,paraiba,wilhelmshaven,tritium,skyway,labial,supplementation,possessor,underserved,motets,maldivian,marrakech,quays,wikimedia,turbojet,demobilization,petrarch,encroaching,sloops,masted,karbala,corvallis,agribusiness,seaford,stenosis,hieronymus,irani,superdraft,baronies,cortisol,notability,veena,pontic,cyclin,archeologists,newham,culled,concurring,aeolian,manorial,shouldered,fords,philanthropists,
105th,siddharth,gotthard,halim,rajshahi,jurchen,detritus,practicable,earthenware,discarding,travelogue,neuromuscular,elkhart,raeder,zygmunt,metastasis,internees,
102nd,vigour,upmarket,summarizing,subjunctive,offsets,elizabethtown,udupi,pardubice,repeaters,instituting,archaea,substandard,technische,linga,anatomist,flourishes,velika,tenochtitlan,evangelistic,fitchburg,springbok,cascading,hydrostatic,avars,occasioned,filipina,perceiving,shimbun,africanus,consternation,tsing,optically,beitar,
45deg,abutments,roseville,monomers,huelva,lotteries,hypothalamus,internationalist,electromechanical,hummingbirds,fibreglass,salaried,dramatists,uncovers,invokes,earners,excretion,gelding,ancien,aeronautica,haverhill,stour,ittihad,abramoff,yakov,ayodhya,accelerates,industrially,aeroplanes,deleterious,dwelt,belvoir,harpalus,atpase,maluku,alasdair,proportionality,taran,epistemological,interferometer,polypeptide,adjudged,villager,metastatic,marshalls,madhavan,archduchess,weizmann,kalgoorlie,balan,predefined,sessile,sagaing,brevity,insecticide,psychosocial,africana,steelworks,aether,aquifers,belem,mineiro,almagro,radiators,cenozoic,solute,turbocharger,invicta,guested,buccaneer,idolatry,unmatched,paducah,sinestro,dispossessed,conforms,responsiveness,cyanobacteria,flautist,procurator,complementing,semifinalist,rechargeable,permafrost,cytokine,refuges,boomed,gelderland,franchised,jinan,burnie,doubtless,randomness,colspan=
12,angra,ginebra,famers,nuestro,declarative,roughness,lauenburg,motile,rekha,issuer,piney,interceptors,napoca,gipsy,formulaic,formula_44,viswanathan,ebrahim,thessalonica,galeria,muskogee,unsold,html5,taito,mobutu,icann,carnarvon,fairtrade,morphisms,upsilon,nozzles,fabius,meander,murugan,strontium,episcopacy,sandinista,parasol,attenuated,bhima,primeval,panay,ordinator,negara,osteoporosis,glossop,ebook,paradoxically,grevillea,modoc,equating,phonetically,legumes,covariant,dorje,quatre,bruxelles,pyroclastic,shipbuilder,zhaozong,obscuring,sveriges,tremolo,extensible,barrack,multnomah,hakon,chaharmahal,parsing,volumetric,astrophysical,glottal,combinatorics,freestanding,encoder,paralysed,cavalrymen,taboos,heilbronn,orientalis,lockport,marvels,ozawa,dispositions,waders,incurring,saltire,modulate,papilio,phenol,intermedia,rappahannock,plasmid,fortify,phenotypes,transiting,correspondences,leaguer,larnaca,incompatibility,mcenroe,deeming,endeavoured,aboriginals,helmed,salar,arginine,werke,ferrand,expropriated,delimited,couplets,phoenicians,petioles,ouster,anschluss,protectionist,plessis,urchins,orquesta,castleton,juniata,bittorrent,fulani,donji,mykola,rosemont,chandos,scepticism,signer,chalukya,wicketkeeper,coquitlam,programmatic,o'brian,carteret,urology,steelhead,paleocene,konkan,bettered,venkatesh,surfacing,longitudinally,centurions,popularization,yazid,douro,widths,premios,leonards,gristmill,fallujah,arezzo,leftists,ecliptic,glycerol,inaction,disenfranchised,acrimonious,depositing,parashah,cockatoo,marechal,bolzano,chios,cablevision,impartiality,pouches,thickly,equities,bentinck,emotive,boson,ashdown,conquistadors,parsi,conservationists,reductive,newlands,centerline,ornithologists,waveguide,nicene,philological,hemel,setanta,masala,aphids,convening,casco,matrilineal,chalcedon,orthographic,hythe,replete,damming,bolivarian,admixture,embarks,borderlands,conformed,nagarjuna,blenny,chaitanya,suwon,shigeru,tatarstan,lingayen,rejoins,grodno,merovingian,hardwicke,puducherry,prototyping,laxmi,upheavals,headquarter,pollinators,bromine,transom,plantagenet,arbuthnot,chidambaram,woburn,osamu,panelling,coauthored,zhongshu,hyaline,omissions,aspergillus,offensively,electrolytic,woodcut,sodom,intensities,clydebank,piotrkow,supplementing,quipped,focke,harbinger,positivism,parklands,wolfenbuttel,cauca,tryptophan,taunus,curragh,tsonga,remand,obscura,ashikaga,eltham,forelimbs,analogs,trnava,observances,kailash,antithesis,ayumi,abyssinia,dorsally,tralee,pursuers,misadventures,padova,perot,mahadev,tarim,granth,licenced,compania,patuxent,baronial,korda,cochabamba,codices,karna,memorialized,semaphore,playlists,mandibular,halal,sivaji,scherzinger,stralsund,foundries,ribosome,mindfulness,nikolayevich,paraphyletic,newsreader,catalyze,ioannina,thalamus,gbit/s,paymaster,sarab,
500th,replenished,gamepro,cracow,formula_46,gascony,reburied,lessing,easement,transposed,meurthe,satires,proviso,balthasar,unbound,cuckoos,durbar,louisbourg,cowes,wholesalers,manet,narita,xiaoping,mohamad,illusory,cathal,reuptake,alkaloid,tahrir,mmorpg,underlies,anglicanism,repton,aharon,exogenous,buchenwald,indigent,odostomia,milled,santorum,toungoo,nevsky,steyr,urbanisation,darkseid,subsonic,canaanite,akiva,eglise,dentition,mediators,cirencester,peloponnesian,malmesbury,durres,oerlikon,tabulated,saens,canaria,ischemic,esterhazy,ringling,centralization,walthamstow,nalanda,lignite,takht,leninism,expiring,circe,phytoplankton,promulgation,integrable,breeches,aalto,menominee,borgo,scythians,skrull,galleon,reinvestment,raglan,reachable,liberec,airframes,electrolysis,geospatial,rubiaceae,interdependence,symmetrically,simulcasts,keenly,mauna,adipose,zaidi,fairport,vestibular,actuators,monochromatic,literatures,congestive,sacramental,atholl,skytrain,tycho,tunings,jamia,catharina,modifier,methuen,tapings,infiltrating,colima,grafting,tauranga,halides,pontificate,phonetics,koper,hafez,grooved,kintetsu,extrajudicial,linkoping,cyberpunk,repetitions,laurentian,parnu,bretton,darko,sverdlovsk,foreshadowed,akhenaten,rehnquist,gosford,coverts,pragmatism,broadleaf,ethiopians,instated,mediates,sodra,opulent,descriptor,enugu,shimla,leesburg,officership,giffard,refectory,lusitania,cybermen,fiume,corus,tydfil,lawrenceville,ocala,leviticus,burghers,ataxia,richthofen,amicably,acoustical,watling,inquired,tiempo,multiracial,parallelism,trenchard,tokyopop,germanium,usisl,philharmonia,shapur,jacobites,latinized,sophocles,remittances,o'farrell,adder,dimitrios,peshwa,dimitar,orlov,outstretched,musume,satish,dimensionless,serialised,baptisms,pagasa,antiviral,
1740s,quine,arapaho,bombardments,stratosphere,ophthalmic,injunctions,carbonated,nonviolence,asante,creoles,sybra,boilermakers,abington,bipartite,permissive,cardinality,anheuser,carcinogenic,hohenlohe,surinam,szeged,infanticide,generically,floorball,'white,automakers,cerebellar,homozygous,remoteness,effortlessly,allude,'great,headmasters,minting,manchurian,kinabalu,wemyss,seditious,widgets,marbled,almshouses,bards,subgenres,tetsuya,faulting,kickboxer,gaulish,hoseyn,malton,fluvial,questionnaires,mondale,downplayed,traditionalists,vercelli,sumatran,landfills,gamesradar,exerts,franciszek,unlawfully,huesca,diderot,libertarians,professorial,laane,piecemeal,conidae,taiji,curatorial,perturbations,abstractions,szlachta,watercraft,mullah,zoroastrianism,segmental,khabarovsk,rectors,affordability,scuola,diffused,stena,cyclonic,workpiece,romford,'little,jhansi,stalag,zhongshan,skipton,maracaibo,bernadotte,thanet,groening,waterville,encloses,sahrawi,nuffield,moorings,chantry,annenberg,islay,marchers,tenses,wahid,siegen,furstenberg,basques,resuscitation,seminarians,tympanum,gentiles,vegetarianism,tufted,venkata,fantastical,pterophoridae,machined,superposition,glabrous,kaveri,chicane,executors,phyllonorycter,bidirectional,jasta,undertones,touristic,majapahit,navratilova,unpopularity,barbadian,tinian,webcast,hurdler,rigidly,jarrah,staphylococcus,igniting,irrawaddy,stabilised,airstrike,ragas,wakayama,energetically,ekstraklasa,minibus,largemouth,cultivators,leveraging,waitangi,carnaval,weaves,turntables,heydrich,sextus,excavate,govind,ignaz,pedagogue,uriah,borrowings,gemstones,infractions,mycobacterium,batavian,massing,praetor,subalpine,massoud,passers,geostationary,jalil,trainsets,barbus,impair,budejovice,denbigh,pertain,historicity,fortaleza,nederlandse,lamenting,masterchef,doubs,gemara,conductance,ploiesti,cetaceans,courthouses,bhagavad,mihailovic,occlusion,bremerhaven,bulwark,morava,kaine,drapery,maputo,conquistador,kaduna,famagusta,first-past-the-post,erudite,galton,undated,tangential,filho,dismembered,dashes,criterium,darwen,metabolized,blurring,everard,randwick,mohave,impurity,acuity,ansbach,chievo,surcharge,plantain,algoma,porosity,zirconium,selva,sevenoaks,venizelos,gwynne,golgi,imparting,separatism,courtesan,idiopathic,gravestones,hydroelectricity,babar,orford,purposeful,acutely,shard,ridgewood,viterbo,manohar,expropriation,placenames,brevis,cosine,unranked,richfield,newnham,recoverable,flightless,dispersing,clearfield,abu'l,stranraer,kempe,streamlining,goswami,epidermal,pieta,conciliatory,distilleries,electrophoresis,bonne,tiago,curiosities,candidature,picnicking,perihelion,lintel,povoa,gullies,configure,excision,facies,signers,
1730s,insufficiency,semiotics,streatham,deactivation,entomological,skippers,albacete,parodying,escherichia,honorees,singaporeans,counterterrorism,tiruchirappalli,omnivorous,metropole,globalisation,athol,unbounded,codice_5,landforms,classifier,farmhouses,reaffirming,reparation,yomiuri,technologists,mitte,medica,viewable,steampunk,konya,kshatriya,repelling,edgewater,lamiinae,devas,potteries,llandaff,engendered,submits,virulence,uplifted,educationist,metropolitans,frontrunner,dunstable,forecastle,frets,methodius,exmouth,linnean,bouchet,repulsion,computable,equalling,liceo,tephritidae,agave,hydrological,azarenka,fairground,l'homme,enforces,xinhua,cinematographers,cooperstown,sa'id,paiute,christianization,tempos,chippenham,insulator,kotor,stereotyped,dello,cours,hisham,d'souza,eliminations,supercars,passau,rebrand,natures,coote,persephone,rededicated,cleaved,plenum,blistering,indiscriminately,cleese,safed,recursively,compacted,revues,hydration,shillong,echelons,garhwal,pedimented,grower,zwolle,wildflower,annexing,methionine,petah,valens,famitsu,petiole,specialities,nestorian,shahin,tokaido,shearwater,barberini,kinsmen,experimenter,alumnae,cloisters,alumina,pritzker,hardiness,soundgarden,julich,ps300,watercourse,cementing,wordplay,olivet,demesne,chasseurs,amide,zapotec,gaozu,porphyry,absorbers,indium,analogies,devotions,engravers,limestones,catapulted,surry,brickworks,gotra,rodham,landline,paleontologists,shankara,islip,raucous,trollope,arpad,embarkation,morphemes,recites,picardie,nakhchivan,tolerances,formula_47,khorramabad,nichiren,adrianople,kirkuk,assemblages,collider,bikaner,bushfires,roofline,coverings,reredos,bibliotheca,mantras,accentuated,commedia,rashtriya,fluctuation,serhiy,referential,fittipaldi,vesicle,geeta,iraklis,immediacy,chulalongkorn,hunsruck,bingen,dreadnoughts,stonemason,meenakshi,lebesgue,undergrowth,baltistan,paradoxes,parlement,articled,tiflis,dixieland,meriden,tejano,underdogs,barnstable,exemplify,venter,tropes,wielka,kankakee,iskandar,zilina,pharyngeal,spotify,materialised,picts,atlantique,theodoric,prepositions,paramilitaries,pinellas,attlee,actuated,piedmontese,grayling,thucydides,multifaceted,unedited,autonomously,universelle,utricularia,mooted,preto,incubated,underlie,brasenose,nootka,bushland,sensu,benzodiazepine,esteghlal,seagoing,amenhotep,azusa,sappers,culpeper,smokeless,thoroughbreds,dargah,gorda,alumna,mankato,zdroj,deleting,culvert,formula_49,punting,wushu,hindering,immunoglobulin,standardisation,birger,oilfield,quadrangular,ulama,recruiters,netanya,
1630s,communaute,istituto,maciej,pathan,meher,vikas,characterizations,playmaker,interagency,intercepts,assembles,horthy,introspection,narada,matra,testes,radnicki,estonians,csiro,instar,mitford,adrenergic,crewmembers,haaretz,wasatch,lisburn,rangefinder,ordre,condensate,reforestation,corregidor,spvgg,modulator,mannerist,faulted,aspires,maktoum,squarepants,aethelred,piezoelectric,mulatto,dacre,progressions,jagiellonian,norge,samaria,sukhoi,effingham,coxless,hermetic,humanists,centrality,litters,stirlingshire,beaconsfield,sundanese,geometrically,caretakers,habitually,bandra,pashtuns,bradenton,arequipa,laminar,brickyard,hitchin,sustains,shipboard,ploughing,trechus,wheelers,bracketed,ilyushin,subotica,d'hondt,reappearance,bridgestone,intermarried,fulfilment,aphasia,birkbeck,transformational,strathmore,hornbill,millstone,lacan,voids,solothurn,gymnasiums,laconia,viaducts,peduncle,teachta,edgware,shinty,supernovae,wilfried,exclaim,parthia,mithun,flashpoint,moksha,cumbia,metternich,avalanches,militancy,motorist,rivadavia,chancellorsville,federals,gendered,bounding,footy,gauri,caliphs,lingam,watchmaker,unrecorded,riverina,unmodified,seafloor,droit,pfalz,chrysostom,gigabit,overlordship,besiege,espn2,oswestry,anachronistic,ballymena,reactivation,duchovny,ghani,abacetus,duller,legio,watercourses,nord-pas-de-calais,leiber,optometry,swarms,installer,sancti,adverbs,iheartmedia,meiningen,zeljko,kakheti,notional,circuses,patrilineal,acrobatics,infrastructural,sheva,oregonian,adjudication,aamir,wloclawek,overfishing,obstructive,subtracting,aurobindo,archeologist,newgate,'cause,secularization,tehsils,abscess,fingal,janacek,elkhorn,trims,kraftwerk,mandating,irregulars,faintly,congregationalist,sveti,kasai,mishaps,kennebec,provincially,durkheim,scotties,aicte,rapperswil,imphal,surrenders,morphs,nineveh,hoxha,cotabato,thuringian,metalworking,retold,shogakukan,anthers,proteasome,tippeligaen,disengagement,mockumentary,palatial,erupts,flume,corrientes,masthead,jaroslaw,rereleased,bharti,labors,distilling,tusks,varzim,refounded,enniskillen,melkite,semifinalists,vadodara,bermudian,capstone,grasse,origination,populus,alesi,arrondissements,semigroup,verein,opossum,messrs.,portadown,bulbul,tirupati,mulhouse,tetrahedron,roethlisberger,nonverbal,connexion,warangal,deprecated,gneiss,octet,vukovar,hesketh,chambre,despatch,claes,kargil,hideo,gravelly,tyndale,aquileia,tuners,defensible,tutte,theotokos,constructivist,ouvrage,dukla,polisario,monasticism,proscribed,commutation,testers,nipissing,codon,mesto,olivine,concomitant,exoskeleton,purports,coromandel,eyalet,dissension,hippocrates,purebred,yaounde,composting,oecophoridae,procopius,o'day,angiogenesis,sheerness,intelligencer,articular,felixstowe,aegon,endocrinology,trabzon,licinius,pagodas,zooplankton,hooghly,satie,drifters,sarthe,mercian,neuilly,tumours,canal+,scheldt,inclinations,counteroffensive,roadrunners,tuzla,shoreditch,surigao,predicates,carnot,algeciras,militaries,generalize,bulkheads,gawler,pollutant,celta,rundgren,microrna,gewog,olimpija,placental,lubelski,roxburgh,discerned,verano,kikuchi,musicale,l'enfant,ferocity,dimorphic,antigonus,erzurum,prebendary,recitative,discworld,cyrenaica,stigmella,totnes,sutta,pachuca,ulsan,downton,landshut,castellan,pleural,siedlce,siecle,catamaran,cottbus,utilises,trophic,freeholders,holyhead,u.s.s,chansons,responder,waziristan,suzuka,birding,shogi,asker,acetone,beautification,cytotoxic,dixit,hunterdon,cobblestone,formula_48,kossuth,devizes,sokoto,interlaced,shuttered,kilowatts,assiniboine,isaak,salto,alderney,sugarloaf,franchising,aggressiveness,toponyms,plaintext,antimatter,henin,equidistant,salivary,bilingualism,mountings,obligate,extirpated,irenaeus,misused,pastoralists,aftab,immigrating,warping,tyrolean,seaforth,teesside,soundwave,oligarchy,stelae,pairwise,iupac,tezuka,posht,orchestrations,landmass,ironstone,gallia,hjalmar,carmelites,strafford,elmhurst,palladio,fragility,teleplay,gruffudd,karoly,yerba,potok,espoo,inductance,macaque,nonprofits,pareto,rock'n'roll,spiritualist,shadowed,skateboarder,utterances,generality,congruence,prostrate,deterred,yellowknife,albarn,maldon,battlements,mohsen,insecticides,khulna,avellino,menstruation,glutathione,springdale,parlophone,confraternity,korps,countrywide,bosphorus,preexisting,damodar,astride,alexandrovich,sprinting,crystallized,botev,leaching,interstates,veers,angevin,undaunted,yevgeni,nishapur,northerners,alkmaar,bethnal,grocers,sepia,tornus,exemplar,trobe,charcot,gyeonggi,larne,tournai,lorain,voided,genji,enactments,maxilla,adiabatic,eifel,nazim,transducer,thelonious,pyrite,deportiva,dialectal,bengt,rosettes,labem,sergeyevich,synoptic,conservator,statuette,biweekly,adhesives,bifurcation,rajapaksa,mammootty,republique,yusef,waseda,marshfield,yekaterinburg,minnelli,fundy,fenian,matchups,dungannon,supremacist,panelled,drenthe,iyengar,fibula,narmada,homeport,oceanside,precept,antibacterial,altarpieces,swath,ospreys,lillooet,legnica,lossless,formula_50,galvatron,iorga,stormont,rsfsr,loggers,kutno,phenomenological,medallists,cuatro,soissons,homeopathy,bituminous,injures,syndicates,typesetting,displacements,dethroned,makassar,lucchese,abergavenny,targu,alborz,akb48,boldface,gastronomy,sacra,amenity,accumulator,myrtaceae,cornices,mourinho,denunciation,oxbow,diddley,aargau,arbitrage,bedchamber,gruffydd,zamindar,klagenfurt,caernarfon,slowdown,stansted,abrasion,tamaki,suetonius,dukakis,individualistic,ventrally,hotham,perestroika,ketones,fertilisation,sobriquet,couplings,renderings,misidentified,rundfunk,sarcastically,braniff,concours,dismissals,elegantly,modifiers,crediting,combos,crucially,seafront,lieut,ischemia,manchus,derivations,proteases,aristophanes,adenauer,porting,hezekiah,sante,trulli,hornblower,foreshadowing,ypsilanti,dharwad,khani,hohenstaufen,distillers,cosmodrome,intracranial,turki,salesian,gorzow,jihlava,yushchenko,leichhardt,venables,cassia,eurogamer,airtel,curative,bestsellers,timeform,sortied,grandview,massillon,ceding,pilbara,chillicothe,heredity,elblag,rogaland,ronne,millennial,batley,overuse,bharata,fille,campbelltown,abeyance,counterclockwise,
250cc,neurodegenerative,consigned,electromagnetism,sunnah,saheb,exons,coxswain,gleaned,bassoons,worksop,prismatic,immigrate,pickets,takeo,bobsledder,stosur,fujimori,merchantmen,stiftung,forli,endorses,taskforce,thermally,atman,gurps,floodplains,enthalpy,extrinsic,setubal,kennesaw,grandis,scalability,durations,showrooms,prithvi,outro,overruns,andalucia,amanita,abitur,hipper,mozambican,sustainment,arsene,chesham,palaeolithic,reportage,criminality,knowsley,haploid,atacama,shueisha,ridgefield,astern,getafe,lineal,timorese,restyled,hollies,agincourt,unter,justly,tannins,mataram,industrialised,tarnovo,mumtaz,mustapha,stretton,synthetase,condita,allround,putra,stjepan,troughs,aechmea,specialisation,wearable,kadokawa,uralic,aeros,messiaen,existentialism,jeweller,effigies,gametes,fjordane,cochlear,interdependent,demonstrative,unstructured,emplacement,famines,spindles,amplitudes,actuator,tantalum,psilocybe,apnea,monogatari,expulsions,seleucus,tsuen,hospitaller,kronstadt,eclipsing,olympiakos,clann,canadensis,inverter,helio,egyptologist,squamous,resonate,munir,histology,torbay,khans,jcpenney,veterinarians,aintree,microscopes,colonised,reflectors,phosphorylated,pristimantis,tulare,corvinus,multiplexing,midweek,demosthenes,transjordan,ecija,tengku,vlachs,anamorphic,counterweight,radnor,trinitarian,armidale,maugham,njsiaa,futurism,stairways,avicenna,montebello,bridgetown,wenatchee,lyonnais,amass,surinamese,streptococcus,m*a*s*h,hydrogenation,frazioni,proscenium,kalat,pennsylvanian,huracan,tallying,kralove,nucleolar,phrygian,seaports,hyacinthe,ignace,donning,instalment,regnal,fonds,prawn,carell,folktales,goaltending,bracknell,vmware,patriarchy,mitsui,kragujevac,pythagoras,soult,thapa,disproved,suwalki,secures,somoza,l'ecole,divizia,chroma,herders,technologist,deduces,maasai,rampur,paraphrase,raimi,imaged,magsaysay,ivano,turmeric,formula_51,subcommittees,axillary,ionosphere,organically,indented,refurbishing,pequot,violinists,bearn,colle,contralto,silverton,mechanization,etruscans,wittelsbach,pasir,redshirted,marrakesh,scarp,plein,wafers,qareh,teotihuacan,frobenius,sinensis,rehoboth,bundaberg,newbridge,hydrodynamic,traore,abubakar,adjusts,storytellers,dynamos,verbandsliga,concertmaster,exxonmobil,appreciable,sieradz,marchioness,chaplaincy,rechristened,cunxu,overpopulation,apolitical,sequencer,beaked,nemanja,binaries,intendant,absorber,filamentous,indebtedness,nusra,nashik,reprises,psychedelia,abwehr,ligurian,isoform,resistive,pillaging,mahathir,reformatory,lusatia,allerton,ajaccio,tepals,maturin,njcaa,abyssinian,objector,fissures,sinuous,ecclesiastic,dalits,caching,deckers,phosphates,wurlitzer,navigated,trofeo,berea,purefoods,solway,unlockable,grammys,kostroma,vocalizations,basilan,rebuke,abbasi,douala,helsingborg,ambon,bakar,runestones,cenel,tomislav,pigmented,northgate,excised,seconda,kirke,determinations,dedicates,vilas,pueblos,reversion,unexploded,overprinted,ekiti,deauville,masato,anaesthesia,endoplasmic,transponders,aguascalientes,hindley,celluloid,affording,bayeux,piaget,rickshaws,eishockey,camarines,zamalek,undersides,hardwoods,hermitian,mutinied,monotone,blackmails,affixes,jpmorgan,habermas,mitrovica,paleontological,polystyrene,thana,manas,conformist,turbofan,decomposes,logano,castration,metamorphoses,patroness,herbicide,mikolaj,rapprochement,macroeconomics,barranquilla,matsudaira,lintels,femina,hijab,spotsylvania,morpheme,bitola,baluchistan,kurukshetra,otway,extrusion,waukesha,menswear,helder,trung,bingley,protester,boars,overhang,differentials,exarchate,hejaz,kumara,unjustified,timings,sharpness,nuovo,taisho,sundar,etc..,jehan,unquestionably,muscovy,daltrey,canute,paneled,amedeo,metroplex,elaborates,telus,tetrapods,dragonflies,epithets,saffir,parthenon,lucrezia,refitting,pentateuch,hanshin,montparnasse,lumberjacks,sanhedrin,erectile,odors,greenstone,resurgent,leszek,amory,substituents,prototypical,viewfinder,monck,universiteit,joffre,revives,chatillon,seedling,scherzo,manukau,ashdod,gympie,homolog,stalwarts,ruinous,weibo,tochigi,wallenberg,gayatri,munda,satyagraha,storefronts,heterogeneity,tollway,sportswriters,binocular,gendarmes,ladysmith,tikal,ortsgemeinde,ja'far,osmotic,linlithgow,bramley,telecoms,pugin,repose,rupaul,sieur,meniscus,garmisch,reintroduce,
400th,shoten,poniatowski,drome,kazakhstani,changeover,astronautics,husserl,herzl,hypertext,katakana,polybius,antananarivo,seong,breguet,reliquary,utada,aggregating,liangshan,sivan,tonawanda,audiobooks,shankill,coulee,phenolic,brockton,bookmakers,handsets,boaters,wylde,commonality,mappings,silhouettes,pennines,maurya,pratchett,singularities,eschewed,pretensions,vitreous,ibero,totalitarianism,poulenc,lingered,directx,seasoning,deputation,interdict,illyria,feedstock,counterbalance,muzik,buganda,parachuted,violist,homogeneity,comix,fjords,corsairs,punted,verandahs,equilateral,laoghaire,magyars,
117th,alesund,televoting,mayotte,eateries,refurbish,nswrl,yukio,caragiale,zetas,dispel,codecs,inoperable,outperformed,rejuvenation,elstree,modernise,contributory,pictou,tewkesbury,chechens,ashina,psionic,refutation,medico,overdubbed,nebulae,sandefjord,personages,eccellenza,businessperson,placename,abenaki,perryville,threshing,reshaped,arecibo,burslem,colspan=
3|turnout,rebadged,lumia,erinsborough,interactivity,bitmap,indefatigable,theosophy,excitatory,gleizes,edsel,bermondsey,korce,saarinen,wazir,diyarbakir,cofounder,liberalisation,onsen,nighthawks,siting,retirements,semyon,d'histoire,
114th,redditch,venetia,praha,'round,valdosta,hieroglyphic,postmedial,edirne,miscellany,savona,cockpits,minimization,coupler,jacksonian,appeasement,argentines,saurashtra,arkwright,hesiod,folios,fitzalan,publica,rivaled,civitas,beermen,constructivism,ribeira,zeitschrift,solanum,todos,deformities,chilliwack,verdean,meagre,bishoprics,gujrat,yangzhou,reentered,inboard,mythologies,virtus,unsurprisingly,rusticated,museu,symbolise,proportionate,thesaban,symbian,aeneid,mitotic,veliki,compressive,cisterns,abies,winemaker,massenet,bertolt,ahmednagar,triplemania,armorial,administracion,tenures,smokehouse,hashtag,fuerza,regattas,gennady,kanazawa,mahmudabad,crustal,asaph,valentinian,ilaiyaraaja,honeyeater,trapezoidal,cooperatively,unambiguously,mastodon,inhospitable,harnesses,riverton,renewables,djurgardens,haitians,airings,humanoids,boatswain,shijiazhuang,faints,veera,punjabis,steepest,narain,karlovy,serre,sulcus,collectives,
1500m,arion,subarctic,liberally,apollonius,ostia,droplet,headstones,norra,robusta,maquis,veronese,imola,primers,luminance,escadrille,mizuki,irreconcilable,stalybridge,temur,paraffin,stuccoed,parthians,counsels,fundamentalists,vivendi,polymath,sugababes,mikko,yonne,fermions,vestfold,pastoralist,kigali,unseeded,glarus,cusps,amasya,northwesterly,minorca,astragalus,verney,trevelyan,antipathy,wollstonecraft,bivalves,boulez,royle,divisao,quranic,bareilly,coronal,deviates,lulea,erectus,petronas,chandan,proxies,aeroflot,postsynaptic,memoriam,moyne,gounod,kuznetsova,pallava,ordinating,reigate,'first,lewisburg,exploitative,danby,academica,bailiwick,brahe,injective,stipulations,aeschylus,computes,gulden,hydroxylase,liveries,somalis,underpinnings,muscovite,kongsberg,domus,overlain,shareware,variegated,jalalabad,agence,ciphertext,insectivores,dengeki,menuhin,cladistic,baerum,betrothal,tokushima,wavelet,expansionist,pottsville,siyuan,prerequisites,carpi,nemzeti,nazar,trialled,eliminator,irrorated,homeward,redwoods,undeterred,strayed,lutyens,multicellular,aurelian,notated,lordships,alsatian,idents,foggia,garros,chalukyas,lillestrom,podlaski,pessimism,hsien,demilitarized,whitewashed,willesden,kirkcaldy,sanctorum,lamia,relaying,escondido,paediatric,contemplates,demarcated,bluestone,betula,penarol,capitalise,kreuznach,kenora,
115th,hold'em,reichswehr,vaucluse,m.i.a,windings,boys/girls,cajon,hisar,predictably,flemington,ysgol,mimicked,clivina,grahamstown,ionia,glyndebourne,patrese,aquaria,sleaford,dayal,sportscenter,malappuram,m.b.a.,manoa,carbines,solvable,designator,ramanujan,linearity,academicians,sayid,lancastrian,factorial,strindberg,vashem,delos,comyn,condensing,superdome,merited,kabaddi,intransitive,bideford,neuroimaging,duopoly,scorecards,ziggler,heriot,boyars,virology,marblehead,microtubules,westphalian,anticipates,hingham,searchers,harpist,rapides,morricone,convalescent,mises,nitride,metrorail,matterhorn,bicol,drivetrain,marketer,snippet,winemakers,muban,scavengers,halberstadt,herkimer,peten,laborious,stora,montgomeryshire,booklist,shamir,herault,eurostar,anhydrous,spacewalk,ecclesia,calliostoma,highschool,d'oro,suffusion,imparts,overlords,tagus,rectifier,counterinsurgency,ministered,eilean,milecastle,contre,micromollusk,okhotsk,bartoli,matroid,hasidim,thirunal,terme,tarlac,lashkar,presque,thameslink,flyby,troopship,renouncing,fatih,messrs,vexillum,bagration,magnetite,bornholm,androgynous,vehement,tourette,philosophic,gianfranco,tuileries,codice_6,radially,flexion,hants,reprocessing,setae,burne,palaeographically,infantryman,shorebirds,tamarind,moderna,threading,militaristic,crohn,norrkoping,
125cc,stadtholder,troms,klezmer,alphanumeric,brome,emmanuelle,tiwari,alchemical,formula_52,onassis,bleriot,bipedal,colourless,hermeneutics,hosni,precipitating,turnstiles,hallucinogenic,panhellenic,wyandotte,elucidated,chita,ehime,generalised,hydrophilic,biota,niobium,rnzaf,gandhara,longueuil,logics,sheeting,bielsko,cuvier,kagyu,trefoil,docent,pancrase,stalinism,postures,encephalopathy,monckton,imbalances,epochs,leaguers,anzio,diminishes,pataki,nitrite,amuro,nabil,maybach,l'aquila,babbler,bacolod,thutmose,evora,gaudi,breakage,recur,preservative,
60deg,mendip,functionaries,columnar,maccabiah,chert,verden,bromsgrove,clijsters,dengue,pastorate,phuoc,principia,viareggio,kharagpur,scharnhorst,anyang,bosons,l'art,criticises,ennio,semarang,brownian,mirabilis,asperger,calibers,typographical,cartooning,minos,disembark,supranational,undescribed,etymologically,alappuzha,vilhelm,lanao,pakenham,bhagavata,rakoczi,clearings,astrologers,manitowoc,bunuel,acetylene,scheduler,defamatory,trabzonspor,leaded,scioto,pentathlete,abrahamic,minigames,aldehydes,peerages,legionary,
1640s,masterworks,loudness,bryansk,likeable,genocidal,vegetated,towpath,declination,pyrrhus,divinely,vocations,rosebery,associazione,loaders,biswas,oeste,tilings,xianzong,bhojpuri,annuities,relatedness,idolator,psers,constriction,chuvash,choristers,hanafi,fielders,grammarian,orpheum,asylums,millbrook,gyatso,geldof,stabilise,tableaux,diarist,kalahari,panini,cowdenbeath,melanin,
4x100m,resonances,pinar,atherosclerosis,sheringham,castlereagh,aoyama,larks,pantograph,protrude,natak,gustafsson,moribund,cerevisiae,cleanly,polymeric,holkar,cosmonauts,underpinning,lithosphere,firuzabad,languished,mingled,citrate,spadina,lavas,daejeon,fibrillation,porgy,pineville,ps1000,cobbled,emamzadeh,mukhtar,dampers,indelible,salonika,nanoscale,treblinka,eilat,purporting,fluctuate,mesic,hagiography,cutscenes,fondation,barrens,comically,accrue,ibrox,makerere,defections,'there,hollandia,skene,grosseto,reddit,objectors,inoculation,rowdies,playfair,calligrapher,namor,sibenik,abbottabad,propellants,hydraulically,chloroplasts,tablelands,tecnico,schist,klasse,shirvan,bashkortostan,bullfighting,north/south,polski,hanns,woodblock,kilmore,ejecta,ignacy,nanchang,danubian,commendations,snohomish,samaritans,argumentation,vasconcelos,hedgehogs,vajrayana,barents,kulkarni,kumbakonam,identifications,hillingdon,weirs,nayanar,beauvoir,messe,divisors,atlantiques,broods,affluence,tegucigalpa,unsuited,autodesk,akash,princeps,culprits,kingstown,unassuming,goole,visayan,asceticism,blagojevich,irises,paphos,unsound,maurier,pontchartrain,desertification,sinfonietta,latins,especial,limpet,valerenga,glial,brainstem,mitral,parables,sauropod,judean,iskcon,sarcoma,venlo,justifications,zhuhai,blavatsky,alleviated,usafe,steppenwolf,inversions,janko,chagall,secretory,basildon,saguenay,pergamon,hemispherical,harmonized,reloading,franjo,domaine,extravagance,relativism,metamorphosed,labuan,baloncesto,gmail,byproducts,calvinists,counterattacked,vitus,bubonic,
120th,strachey,ritually,brookwood,selectable,savinja,incontinence,meltwater,jinja,
1720s,brahmi,morgenthau,sheaves,sleeved,stratovolcano,wielki,utilisation,avoca,fluxus,panzergrenadier,philately,deflation,podlaska,prerogatives,kuroda,theophile,zhongzong,gascoyne,magus,takao,arundell,fylde,merdeka,prithviraj,venkateswara,liepaja,daigo,dreamland,reflux,sunnyvale,coalfields,seacrest,soldering,flexor,structuralism,alnwick,outweighed,unaired,mangeshkar,batons,glaad,banshees,irradiated,organelles,biathlete,cabling,chairlift,lollapalooza,newsnight,capacitive,succumbs,flatly,miramichi,burwood,comedienne,charteris,biotic,workspace,aficionados,sokolka,chatelet,o'shaughnessy,prosthesis,neoliberal,refloated,oppland,hatchlings,econometrics,loess,thieu,androids,appalachians,jenin,pterostichinae,downsized,foils,chipsets,stencil,danza,narrate,maginot,yemenite,bisects,crustacean,prescriptive,melodious,alleviation,empowers,hansson,autodromo,obasanjo,osmosis,daugava,rheumatism,moraes,leucine,etymologies,chepstow,delaunay,bramall,bajaj,flavoring,approximates,marsupials,incisive,microcomputer,tactically,waals,wilno,fisichella,ursus,hindmarsh,mazarin,lomza,xenophobia,lawlessness,annecy,wingers,gornja,gnaeus,superieur,tlaxcala,clasps,symbolises,slats,rightist,effector,blighted,permanence,divan,progenitors,kunsthalle,anointing,excelling,coenzyme,indoctrination,dnipro,landholdings,adriaan,liturgies,cartan,ethmia,attributions,sanctus,trichy,chronicon,tancred,affinis,kampuchea,gantry,pontypool,membered,distrusted,fissile,dairies,hyposmocoma,craigie,adarsh,martinsburg,taxiway,
30deg,geraint,vellum,bencher,khatami,formula_53,zemun,teruel,endeavored,palmares,pavements,u.s..,internationalization,satirized,carers,attainable,wraparound,muang,parkersburg,extinctions,birkenfeld,wildstorm,payers,cohabitation,unitas,culloden,capitalizing,clwyd,daoist,campinas,emmylou,orchidaceae,halakha,orientales,fealty,domnall,chiefdom,nigerians,ladislav,dniester,avowed,ergonomics,newsmagazine,kitsch,cantilevered,benchmarking,remarriage,alekhine,coldfield,taupo,almirante,substations,apprenticeships,seljuq,levelling,eponym,symbolising,salyut,opioids,underscore,ethnologue,mohegan,marikina,libro,bassano,parse,semantically,disjointed,dugdale,padraig,tulsi,modulating,xfinity,headlands,mstislav,earthworms,bourchier,lgbtq,embellishments,pennants,rowntree,betel,motet,mulla,catenary,washoe,mordaunt,dorking,colmar,girardeau,glentoran,grammatically,samad,recreations,technion,staccato,mikoyan,spoilers,lyndhurst,victimization,chertsey,belafonte,tondo,tonsberg,narrators,subcultures,malformations,edina,augmenting,attests,euphemia,cabriolet,disguising,
1650s,navarrese,demoralized,cardiomyopathy,welwyn,wallachian,smoothness,planktonic,voles,issuers,sardasht,survivability,cuauhtemoc,thetis,extruded,signet,raghavan,lombok,eliyahu,crankcase,dissonant,stolberg,trencin,desktops,bursary,collectivization,charlottenburg,triathlete,curvilinear,involuntarily,mired,wausau,invades,sundaram,deletions,bootstrap,abellio,axiomatic,noguchi,setups,malawian,visalia,materialist,kartuzy,wenzong,plotline,yeshivas,parganas,tunica,citric,conspecific,idlib,superlative,reoccupied,blagoevgrad,masterton,immunological,hatta,courbet,vortices,swallowtail,delves,haridwar,diptera,boneh,bahawalpur,angering,mardin,equipments,deployable,guanine,normality,rimmed,artisanal,boxset,chandrasekhar,jools,chenar,tanakh,carcassonne,belatedly,millville,anorthosis,reintegration,velde,surfactant,kanaan,busoni,glyphipterix,personas,fullness,rheims,tisza,stabilizers,bharathi,joost,spinola,mouldings,perching,esztergom,afzal,apostate,lustre,s.league,motorboat,monotheistic,armature,barat,asistencia,bloomsburg,hippocampal,fictionalised,defaults,broch,hexadecimal,lusignan,ryanair,boccaccio,breisgau,southbank,bskyb,adjoined,neurobiology,aforesaid,sadhu,langue,headship,wozniacki,hangings,regulus,prioritized,dynamism,allier,hannity,shimin,antoninus,gymnopilus,caledon,preponderance,melayu,electrodynamics,syncopated,ibises,krosno,mechanistic,morpeth,harbored,albini,monotheism,'real,hyperactivity,haveli,writer/director,minato,nimoy,caerphilly,chitral,amirabad,fanshawe,l'oreal,lorde,mukti,authoritarianism,valuing,spyware,hanbury,restarting,stato,embed,suiza,empiricism,stabilisation,stari,castlemaine,orbis,manufactory,mauritanian,shoji,taoyuan,prokaryotes,oromia,ambiguities,embodying,slims,frente,innovate,ojibwa,powdery,gaeltacht,argentinos,quatermass,detergents,fijians,adaptor,tokai,chileans,bulgars,oxidoreductases,bezirksliga,conceicao,myosin,nellore,
500cc,supercomputers,approximating,glyndwr,polypropylene,haugesund,cockerell,tudman,ashbourne,hindemith,bloodlines,rigveda,etruria,romanos,steyn,oradea,deceleration,manhunter,laryngeal,fraudulently,janez,wendover,haplotype,janaki,naoki,belizean,mellencamp,cartographic,sadhana,tricolour,pseudoscience,satara,bytow,s.p.a.,jagdgeschwader,arcot,omagh,sverdrup,masterplan,surtees,apocrypha,ahvaz,d'amato,socratic,leumit,unnumbered,nandini,witold,marsupial,coalesced,interpolated,gimnasia,karadzic,keratin,mamoru,aldeburgh,speculator,escapement,irfan,kashyap,satyajit,haddington,solver,rothko,ashkelon,kickapoo,yeomen,superbly,bloodiest,greenlandic,lithic,autofocus,yardbirds,poona,keble,javan,sufis,expandable,tumblr,ursuline,swimwear,winwood,counsellors,aberrations,marginalised,befriending,workouts,predestination,varietal,siddhartha,dunkeld,judaic,esquimalt,shabab,ajith,telefonica,stargard,hoysala,radhakrishnan,sinusoidal,strada,hiragana,cebuano,monoid,independencia,floodwaters,mildura,mudflats,ottokar,translit,radix,wigner,philosophically,tephritid,synthesizing,castletown,installs,stirner,resettle,bushfire,choirmaster,kabbalistic,shirazi,lightship,rebus,colonizers,centrifuge,leonean,kristofferson,thymus,clackamas,ratnam,rothesay,municipally,centralia,thurrock,gulfport,bilinear,desirability,merite,psoriasis,macaw,erigeron,consignment,mudstone,distorting,karlheinz,ramen,tailwheel,vitor,reinsurance,edifices,superannuation,dormancy,contagion,cobden,rendezvoused,prokaryotic,deliberative,patricians,feigned,degrades,starlings,sopot,viticultural,beaverton,overflowed,convener,garlands,michiel,ternopil,naturelle,biplanes,bagot,gamespy,ventspils,disembodied,flattening,profesional,londoners,arusha,scapular,forestall,pyridine,ulema,eurodance,aruna,callus,periodontal,coetzee,immobilized,o'meara,maharani,katipunan,reactants,zainab,microgravity,saintes,britpop,carrefour,constrain,adversarial,firebirds,brahmo,kashima,simca,surety,surpluses,superconductivity,gipuzkoa,cumans,tocantins,obtainable,humberside,roosting,'king,formula_54,minelayer,bessel,sulayman,cycled,biomarkers,annealing,shusha,barda,cassation,djing,polemics,tuple,directorates,indomitable,obsolescence,wilhelmine,pembina,bojan,tambo,dioecious,pensioner,magnificat,
1660s,estrellas,southeasterly,immunodeficiency,railhead,surreptitiously,codeine,encores,religiosity,tempera,camberley,efendi,boardings,malleable,hagia,input/output,lucasfilm,ujjain,polymorphisms,creationist,berners,mickiewicz,irvington,linkedin,endures,kinect,munition,apologetics,fairlie,predicated,reprinting,ethnographer,variances,levantine,mariinsky,jadid,jarrow,asia/oceania,trinamool,waveforms,bisexuality,preselection,pupae,buckethead,hieroglyph,lyricists,marionette,dunbartonshire,restorer,monarchical,pazar,kickoffs,cabildo,savannas,gliese,dench,spoonbills,novelette,diliman,hypersensitivity,authorising,montefiore,mladen,qu'appelle,theistic,maruti,laterite,conestoga,saare,californica,proboscis,carrickfergus,imprecise,hadassah,baghdadi,jolgeh,deshmukh,amusements,heliopolis,berle,adaptability,partenkirchen,separations,baikonur,cardamom,southeastward,southfield,muzaffar,adequacy,metropolitana,rajkot,kiyoshi,metrobus,evictions,reconciles,librarianship,upsurge,knightley,badakhshan,proliferated,spirituals,burghley,electroacoustic,professing,featurette,reformists,skylab,descriptors,oddity,greyfriars,injects,salmond,lanzhou,dauntless,subgenera,underpowered,transpose,mahinda,gatos,aerobatics,seaworld,blocs,waratahs,joris,giggs,perfusion,koszalin,mieczyslaw,ayyubid,ecologists,modernists,sant'angelo,quicktime,him/her,staves,sanyo,melaka,acrocercops,qigong,iterated,generalizes,recuperation,vihara,circassians,psychical,chavo,memoires,infiltrates,notaries,pelecaniformesfamily,strident,chivalric,pierrepont,alleviating,broadsides,centipede,b.tech,reinterpreted,sudetenland,hussite,covenanters,radhika,ironclads,gainsbourg,testis,penarth,plantar,azadegan,beano,espn.com,leominster,autobiographies,nbcuniversal,eliade,khamenei,montferrat,undistinguished,ethnological,wenlock,fricatives,polymorphic,biome,joule,sheaths,astrophysicist,salve,neoclassicism,lovat,downwind,belisarius,forma,usurpation,freie,depopulation,backbench,ascenso,'high,aagpbl,gdanski,zalman,mouvement,encapsulation,bolshevism,statny,voyageurs,hywel,vizcaya,mazra'eh,narthex,azerbaijanis,cerebrospinal,mauretania,fantail,clearinghouse,bolingbroke,pequeno,ansett,remixing,microtubule,wrens,jawahar,palembang,gambian,hillsong,fingerboard,repurposed,sundry,incipient,veolia,theologically,ulaanbaatar,atsushi,foundling,resistivity,myeloma,factbook,mazowiecka,diacritic,urumqi,clontarf,provokes,intelsat,professes,materialise,portobello,benedictines,panionios,introverted,reacquired,bridport,mammary,kripke,oratorios,vlore,stoning,woredas,unreported,antti,togolese,fanzines,heuristics,conservatories,carburetors,clitheroe,cofounded,formula_57,erupting,quinnipiac,bootle,ghostface,sittings,aspinall,sealift,transferase,boldklub,siskiyou,predominated,francophonie,ferruginous,castrum,neogene,sakya,madama,precipitous,'love,posix,bithynia,uttara,avestan,thrushes,seiji,memorably,septimius,libri,cibernetico,hyperinflation,dissuaded,cuddalore,peculiarity,vaslui,grojec,albumin,thurles,casks,fasteners,fluidity,buble,casals,terek,gnosticism,cognates,ulnar,radwanska,babylonians,majuro,oxidizer,excavators,rhythmically,liffey,gorakhpur,eurydice,underscored,arborea,lumumba,tuber,catholique,grama,galilei,scrope,centreville,jacobin,bequests,ardeche,polygamous,montauban,terai,weatherboard,readability,attainder,acraea,transversely,rivets,winterbottom,reassures,bacteriology,vriesea,chera,andesite,dedications,homogenous,reconquered,bandon,forrestal,ukiyo,gurdjieff,tethys,sparc,muscogee,grebes,belchatow,mansa,blantyre,palliser,sokolow,fibroblasts,exmoor,misaki,soundscapes,housatonic,middelburg,convenor,leyla,antipope,histidine,okeechobee,alkenes,sombre,alkene,rubik,macaques,calabar,trophee,pinchot,'free,frusciante,chemins,falaise,vasteras,gripped,schwarzenberg,cumann,kanchipuram,acoustically,silverbacks,fangio,inset,plympton,kuril,vaccinations,recep,theropods,axils,stavropol,encroached,apoptotic,papandreou,wailers,moonstone,assizes,micrometers,hornchurch,truncation,annapurna,egyptologists,rheumatic,promiscuity,satiric,fleche,caloptilia,anisotropy,quaternions,gruppo,viscounts,awardees,aftershocks,sigint,concordance,oblasts,gaumont,stent,commissars,kesteven,hydroxy,vijayanagar,belorussian,fabricius,watermark,tearfully,mamet,leukaemia,sorkh,milepost,tattooing,vosta,abbasids,uncompleted,hedong,woodwinds,extinguishing,malus,multiplexes,francoist,pathet,responsa,bassists,'most,postsecondary,ossory,grampian,saakashvili,alito,strasberg,impressionistic,volador,gelatinous,vignette,underwing,campanian,abbasabad,albertville,hopefuls,nieuwe,taxiways,reconvened,recumbent,pathologists,unionized,faversham,asymptotically,romulo,culling,donja,constricted,annesley,duomo,enschede,lovech,sharpshooter,lansky,dhamma,papillae,alanine,mowat,delius,wrest,mcluhan,podkarpackie,imitators,bilaspur,stunting,pommel,casemate,handicaps,nagas,testaments,hemings,necessitate,rearward,locative,cilla,klitschko,lindau,merion,consequential,antic,soong,copula,berthing,chevrons,rostral,sympathizer,budokan,ranulf,beria,stilt,replying,conflated,alcibiades,painstaking,yamanashi,calif.,arvid,ctesiphon,xizong,rajas,caxton,downbeat,resurfacing,rudders,miscegenation,deathmatch,foregoing,arthropod,attestation,karts,reapportionment,harnessing,eastlake,schola,dosing,postcolonial,imtiaz,formula_55,insulators,gunung,accumulations,pampas,llewelyn,bahnhof,cytosol,grosjean,teaneck,briarcliff,arsenio,canara,elaborating,passchendaele,searchlights,holywell,mohandas,preventable,gehry,mestizos,ustinov,cliched,'national,heidfeld,tertullian,jihadist,tourer,miletus,semicircle,outclassed,bouillon,cardinalate,clarifies,dakshina,bilayer,pandyan,unrwa,chandragupta,formula_56,portola,sukumaran,lactation,islamia,heikki,couplers,misappropriation,catshark,montt,ploughs,carib,stator,leaderboard,kenrick,dendrites,scape,tillamook,molesworth,mussorgsky,melanesia,restated,troon,glycoside,truckee,headwater,mashup,sectoral,gangwon,docudrama,skirting,psychopathology,dramatised,ostroleka,infestations,thabo,depolarization,wideroe,eisenbahn,thomond,kumaon,upendra,foreland,acronyms,yaqui,retaking,raphaelite,specie,dupage,villars,lucasarts,chloroplast,werribee,balsa,ascribe,havant,flava,khawaja,tyumen,subtract,interrogators,reshaping,buzzcocks,eesti,campanile,potemkin,apertures,snowboarder,registrars,handbooks,boyar,contaminant,depositors,proximate,jeunesse,zagora,pronouncements,mists,nihilism,deified,margraviate,pietersen,moderators,amalfi,adjectival,copepods,magnetosphere,pallets,clemenceau,castra,perforation,granitic,troilus,grzegorz,luthier,dockyards,antofagasta,ffestiniog,subroutine,afterword,waterwheel,druce,nitin,undifferentiated,emacs,readmitted,barneveld,tapers,hittites,infomercials,infirm,braathens,heligoland,carpark,geomagnetic,musculoskeletal,nigerien,machinima,harmonize,repealing,indecency,muskoka,verite,steubenville,suffixed,cytoskeleton,surpasses,harmonia,imereti,ventricles,heterozygous,envisions,otsego,ecoles,warrnambool,burgenland,seria,rawat,capistrano,welby,kirin,enrollments,caricom,dragonlance,schaffhausen,expanses,photojournalism,brienne,etude,referent,jamtland,schemas,xianbei,cleburne,bicester,maritima,shorelines,diagonals,bjelke,nonpublic,aliasing,m.f.a,ovals,maitreya,skirmishing,grothendieck,sukhothai,angiotensin,bridlington,durgapur,contras,gakuen,skagit,rabbinate,tsunamis,haphazard,tyldesley,microcontroller,discourages,hialeah,compressing,septimus,larvik,condoleezza,psilocybin,protectionism,songbirds,clandestinely,selectmen,wargame,cinemascope,khazars,agronomy,melzer,latifah,cherokees,recesses,assemblymen,basescu,banaras,bioavailability,subchannels,adenine,o'kelly,prabhakar,leonese,dimethyl,testimonials,geoffroy,oxidant,universiti,gheorghiu,bohdan,reversals,zamorin,herbivore,jarre,sebastiao,infanterie,dolmen,teddington,radomsko,spaceships,cuzco,recapitulation,mahoning,bainimarama,myelin,aykroyd,decals,tokelau,nalgonda,rajasthani,
121st,quelled,tambov,illyrians,homilies,illuminations,hypertrophy,grodzisk,inundation,incapacity,equilibria,combats,elihu,steinitz,berengar,gowda,canwest,khosrau,maculata,houten,kandinsky,onside,leatherhead,heritable,belvidere,federative,chukchi,serling,eruptive,patan,entitlements,suffragette,evolutions,migrates,demobilisation,athleticism,trope,sarpsborg,kensal,translink,squamish,concertgebouw,energon,timestamp,competences,zalgiris,serviceman,codice_7,spoofing,assange,mahadevan,skien,suceava,augustan,revisionism,unconvincing,hollande,drina,gottlob,lippi,broglie,darkening,tilapia,eagerness,nacht,kolmogorov,photometric,leeuwarden,jrotc,haemorrhage,almanack,cavalli,repudiation,galactose,zwickau,cetinje,houbraken,heavyweights,gabonese,ordinals,noticias,museveni,steric,charaxes,amjad,resection,joinville,leczyca,anastasius,purbeck,subtribe,dalles,leadoff,monoamine,jettisoned,kaori,anthologized,alfreton,indic,bayezid,tottori,colonizing,assassinating,unchanging,eusebian,d'estaing,tsingtao,toshio,transferases,peronist,metrology,equus,mirpur,libertarianism,kovil,indole,'green,abstention,quantitatively,icebreakers,tribals,mainstays,dryandra,eyewear,nilgiri,chrysanthemum,inositol,frenetic,merchantman,hesar,physiotherapist,transceiver,dancefloor,rankine,neisse,marginalization,lengthen,unaided,rework,pageantry,savio,striated,funen,witton,illuminates,frass,hydrolases,akali,bistrita,copywriter,firings,handballer,tachinidae,dmytro,coalesce,neretva,menem,moraines,coatbridge,crossrail,spoofed,drosera,ripen,protour,kikuyu,boleslav,edwardes,troubadours,haplogroups,wrasse,educationalist,sroda,khaneh,dagbladet,apennines,neuroscientist,deplored,terje,maccabees,daventry,spaceport,lessening,ducats,singer/guitarist,chambersburg,yeong,configurable,ceremonially,unrelenting,caffe,graaf,denizens,kingsport,ingush,panhard,synthesised,tumulus,homeschooled,bozorg,idiomatic,thanhouser,queensway,radek,hippolytus,inking,banovina,peacocks,piaui,handsworth,pantomimes,abalone,thera,kurzweil,bandura,augustinians,bocelli,ferrol,jiroft,quadrature,contravention,saussure,rectification,agrippina,angelis,matanzas,nidaros,palestrina,latium,coriolis,clostridium,ordain,uttering,lanchester,proteolytic,ayacucho,merseburg,holbein,sambalpur,algebraically,inchon,ostfold,savoia,calatrava,lahiri,judgeship,ammonite,masaryk,meyerbeer,hemorrhagic,superspeedway,ningxia,panicles,encircles,khmelnytsky,profusion,esher,babol,inflationary,anhydride,gaspe,mossy,periodicity,nacion,meteorologists,mahjong,interventional,sarin,moult,enderby,modell,palgrave,warners,montcalm,siddha,functionalism,rilke,politicized,broadmoor,kunste,orden,brasileira,araneta,eroticism,colquhoun,mamba,blacktown,tubercle,seagrass,manoel,camphor,neoregelia,llandudno,annexe,enplanements,kamien,plovers,statisticians,iturbide,madrasah,nontrivial,publican,landholders,manama,uninhabitable,revivalist,trunkline,friendliness,gurudwara,rocketry,unido,tripos,besant,braque,evolutionarily,abkhazian,staffel,ratzinger,brockville,bohemond,intercut,djurgarden,utilitarianism,deploys,sastri,absolutism,subhas,asghar,fictions,sepinwall,proportionately,titleholders,thereon,foursquare,machinegun,knightsbridge,siauliai,aqaba,gearboxes,castaways,weakens,phallic,strzelce,buoyed,ruthenia,pharynx,intractable,neptunes,koine,leakey,netherlandish,preempted,vinay,terracing,instigating,alluvium,prosthetics,vorarlberg,politiques,joinery,reduplication,nebuchadnezzar,lenticular,banka,seaborne,pattinson,helpline,aleph,beckenham,californians,namgyal,franziska,aphid,branagh,transcribe,appropriateness,surakarta,takings,propagates,juraj,b0d3fb,brera,arrayed,tailback,falsehood,hazleton,prosody,egyptology,pinnate,tableware,ratan,camperdown,ethnologist,tabari,classifiers,biogas,
126th,kabila,arbitron,apuestas,membranous,kincardine,oceana,glories,natick,populism,synonymy,ghalib,mobiles,motherboards,stationers,germinal,patronised,formula_58,gaborone,torts,jeezy,interleague,novaya,batticaloa,offshoots,wilbraham,filename,nswrfl,'well,trilobite,pythons,optimally,scientologists,rhesus,pilsen,backdrops,batang,unionville,hermanos,shrikes,fareham,outlawing,discontinuing,boisterous,shamokin,scanty,southwestward,exchangers,unexpired,mewar,h.m.s,saldanha,pawan,condorcet,turbidity,donau,indulgences,coincident,cliques,weeklies,bardhaman,violators,kenai,caspase,xperia,kunal,fistula,epistemic,cammell,nephi,disestablishment,rotator,germaniawerft,pyaar,chequered,jigme,perlis,anisotropic,popstars,kapil,appendices,berat,defecting,shacks,wrangel,panchayath,gorna,suckling,aerosols,sponheim,talal,borehole,encodings,enlai,subduing,agong,nadar,kitsap,syrmia,majumdar,pichilemu,charleville,embryology,booting,literati,abutting,basalts,jussi,repubblica,hertogenbosch,digitization,relents,hillfort,wiesenthal,kirche,bhagwan,bactrian,oases,phyla,neutralizing,helsing,ebooks,spearheading,margarine,'golden,phosphor,picea,stimulants,outliers,timescale,gynaecology,integrator,skyrocketed,bridgnorth,senecio,ramachandra,suffragist,arrowheads,aswan,inadvertent,microelectronics,
118th,sofer,kubica,melanesian,tuanku,balkh,vyborg,crystallographic,initiators,metamorphism,ginzburg,looters,unimproved,finistere,newburyport,norges,immunities,franchisees,asterism,kortrijk,camorra,komsomol,fleurs,draughts,patagonian,voracious,artin,collaborationist,revolucion,revitalizing,xaver,purifying,antipsychotic,disjunct,pompeius,dreamwave,juvenal,beinn,adiyaman,antitank,allama,boletus,melanogaster,dumitru,caproni,aligns,athabaskan,stobart,phallus,veikkausliiga,hornsey,buffering,bourbons,dobruja,marga,borax,electrics,gangnam,motorcyclist,whidbey,draconian,lodger,galilean,sanctification,imitates,boldness,underboss,wheatland,cantabrian,terceira,maumee,redefining,uppercase,ostroda,characterise,universalism,equalized,syndicalism,haringey,masovia,deleuze,funkadelic,conceals,thuan,minsky,pluralistic,ludendorff,beekeeping,bonfires,endoscopic,abuts,prebend,jonkoping,amami,tribunes,yup'ik,awadh,gasification,pforzheim,reforma,antiwar,vaishnavism,maryville,inextricably,margrethe,empresa,neutrophils,sanctified,ponca,elachistidae,curiae,quartier,mannar,hyperplasia,wimax,busing,neologism,florins,underrepresented,digitised,nieuw,cooch,howards,frege,hughie,plied,swale,kapellmeister,vajpayee,quadrupled,aeronautique,dushanbe,custos,saltillo,kisan,tigray,manaus,epigrams,shamanic,peppered,frosts,promotion/relegation,concedes,zwingli,charentes,whangarei,hyung,spring/summer,sobre,eretz,initialization,sawai,ephemera,grandfathered,arnaldo,customised,permeated,parapets,growths,visegrad,estudios,altamont,provincia,apologises,stoppard,carburettor,rifts,kinematic,zhengzhou,eschatology,prakrit,folate,yvelines,scapula,stupas,rishon,reconfiguration,flutist,
1680s,apostolate,proudhon,lakshman,articulating,stortford,faithfull,bitterns,upwelling,qur'anic,lidar,interferometry,waterlogged,koirala,ditton,wavefunction,fazal,babbage,antioxidants,lemberg,deadlocked,tolled,ramapo,mathematica,leiria,topologies,khali,photonic,balti,
1080p,corrects,recommenced,polyglot,friezes,tiebreak,copacabana,cholmondeley,armband,abolishment,sheamus,buttes,glycolysis,cataloged,warrenton,sassari,kishan,foodservice,cryptanalysis,holmenkollen,cosplay,machi,yousuf,mangal,allying,fertiliser,otomi,charlevoix,metallurg,parisians,bottlenose,oakleigh,debug,cidade,accede,ligation,madhava,pillboxes,gatefold,aveyron,sorin,thirsk,immemorial,menelik,mehra,domingos,underpinned,fleshed,harshness,diphthong,crestwood,miskolc,dupri,pyrausta,muskingum,tuoba,prodi,incidences,waynesboro,marquesas,heydar,artesian,calinescu,nucleation,funders,covalently,compaction,derbies,seaters,sodor,tabular,amadou,peckinpah,o'halloran,zechariah,libyans,kartik,daihatsu,chandran,erzhu,heresies,superheated,yarder,dorde,tanjore,abusers,xuanwu,juniperus,moesia,trusteeship,birdwatching,beatz,moorcock,harbhajan,sanga,choreographic,photonics,boylston,amalgamate,prawns,electrifying,sarath,inaccurately,exclaims,powerpoint,chaining,cpusa,adulterous,saccharomyces,glogow,vfl/afl,syncretic,simla,persisting,functors,allosteric,euphorbiaceae,juryo,mlada,moana,gabala,thornycroft,kumanovo,ostrovsky,sitio,tutankhamun,sauropods,kardzhali,reinterpretation,sulpice,rosyth,originators,halesowen,delineation,asesoria,abatement,gardai,elytra,taillights,overlays,monsoons,sandpipers,ingmar,henrico,inaccuracy,irwell,arenabowl,elche,pressburg,signalman,interviewees,sinkhole,pendle,ecommerce,cellos,nebria,organometallic,surrealistic,propagandist,interlaken,canandaigua,aerials,coutinho,pascagoula,tonopah,letterkenny,gropius,carbons,hammocks,childe,polities,hosiery,donitz,suppresses,diaghilev,stroudsburg,bagram,pistoia,regenerating,unitarians,takeaway,offstage,vidin,glorification,bakunin,yavapai,lutzow,sabercats,witney,abrogated,gorlitz,validating,dodecahedron,stubbornly,telenor,glaxosmithkline,solapur,undesired,jellicoe,dramatization,four-and-a-half,seawall,waterpark,artaxerxes,vocalization,typographic,byung,sachsenhausen,shepparton,kissimmee,konnan,belsen,dhawan,khurd,mutagenesis,vejle,perrot,estradiol,formula_60,saros,chiloe,misiones,lamprey,terrains,speke,miasto,eigenvectors,haydock,reservist,corticosteroids,savitri,shinawatra,developmentally,yehudi,berates,janissaries,recapturing,rancheria,subplots,gresley,nikkatsu,oryol,cosmas,boavista,formula_59,playfully,subsections,commentated,kathakali,dorid,vilaine,seepage,hylidae,keiji,kazakhs,triphosphate,
1620s,supersede,monarchists,falla,miyako,notching,bhumibol,polarizing,secularized,shingled,bronislaw,lockerbie,soleyman,bundesbahn,latakia,redoubts,boult,inwardly,invents,ondrej,minangkabau,newquay,permanente,alhaji,madhav,malini,ellice,bookmaker,mankiewicz,etihad,o'dea,interrogative,mikawa,wallsend,canisius,bluesy,vitruvius,noord,ratifying,mixtec,gujranwala,subprefecture,keelung,goiania,nyssa,shi'ite,semitone,ch'uan,computerised,pertuan,catapults,nepomuk,shruti,millstones,buskerud,acolytes,tredegar,sarum,armia,dell'arte,devises,custodians,upturned,gallaudet,disembarking,thrashed,sagrada,myeon,undeclared,qumran,gaiden,tepco,janesville,showground,condense,chalon,unstaffed,pasay,undemocratic,hauts,viridis,uninjured,escutcheon,gymkhana,petaling,hammam,dislocations,tallaght,rerum,shias,indios,guaranty,simplicial,benares,benediction,tajiri,prolifically,huawei,onerous,grantee,ferencvaros,otranto,carbonates,conceit,digipak,qadri,masterclasses,swamiji,cradock,plunket,helmsman,
119th,salutes,tippecanoe,murshidabad,intelligibility,mittal,diversifying,bidar,asansol,crowdsourcing,rovere,karakoram,grindcore,skylights,tulagi,furrows,ligne,stuka,sumer,subgraph,amata,regionalist,bulkeley,teletext,glorify,readied,lexicographer,sabadell,predictability,quilmes,phenylalanine,bandaranaike,pyrmont,marksmen,quisling,viscountess,sociopolitical,afoul,pediments,swazi,martyrology,nullify,panagiotis,superconductors,veldenz,jujuy,l'isle,hematopoietic,shafi,subsea,hattiesburg,jyvaskyla,kebir,myeloid,landmine,derecho,amerindians,birkenau,scriabin,milhaud,mucosal,nikaya,freikorps,theoretician,proconsul,o'hanlon,clerked,bactria,houma,macular,topologically,shrubby,aryeh,ghazali,afferent,magalhaes,moduli,ashtabula,vidarbha,securitate,ludwigsburg,adoor,varun,shuja,khatun,chengde,bushels,lascelles,professionnelle,elfman,rangpur,unpowered,citytv,chojnice,quaternion,stokowski,aschaffenburg,commutes,subramaniam,methylene,satrap,gharb,namesakes,rathore,helier,gestational,heraklion,colliers,giannis,pastureland,evocation,krefeld,mahadeva,churchmen,egret,yilmaz,galeazzo,pudukkottai,artigas,generalitat,mudslides,frescoed,enfeoffed,aphorisms,melilla,montaigne,gauliga,parkdale,mauboy,linings,prema,sapir,xylophone,kushan,rockne,sequoyah,vasyl,rectilinear,vidyasagar,microcosm,san'a,carcinogen,thicknesses,aleut,farcical,moderating,detested,hegemonic,instalments,vauban,verwaltungsgemeinschaft,picayune,razorback,magellanic,moluccas,pankhurst,exportation,waldegrave,sufferer,bayswater,
1up.com,rearmament,orangutans,varazdin,b.o.b,elucidate,harlingen,erudition,brankovic,lapis,slipway,urraca,shinde,unwell,elwes,euboea,colwyn,srivijaya,grandstands,hortons,generalleutnant,fluxes,peterhead,gandhian,reals,alauddin,maximized,fairhaven,endow,ciechanow,perforations,darters,panellist,manmade,litigants,exhibitor,tirol,caracalla,conformance,hotelier,stabaek,hearths,borac,frisians,ident,veliko,emulators,schoharie,uzbeks,samarra,prestwick,wadia,universita,tanah,bucculatrix,predominates,genotypes,denounces,roadsides,ganassi,keokuk,philatelist,tomic,ingots,conduits,samplers,abdus,johar,allegories,timaru,wolfpacks,secunda,smeaton,sportivo,inverting,contraindications,whisperer,moradabad,calamities,bakufu,soundscape,smallholders,nadeem,crossroad,xenophobic,zakir,nationalliga,glazes,retroflex,schwyz,moroder,rubra,quraysh,theodoros,endemol,infidels,km/hr,repositioned,portraitist,lluis,answerable,arges,mindedness,coarser,eyewall,teleported,scolds,uppland,vibraphone,ricoh,isenburg,bricklayer,cuttlefish,abstentions,communicable,cephalopod,stockyards,balto,kinston,armbar,bandini,elphaba,maxims,bedouins,sachsen,friedkin,tractate,pamir,ivanovo,mohini,kovalainen,nambiar,melvyn,orthonormal,matsuyama,cuernavaca,veloso,overstated,streamer,dravid,informers,analyte,sympathized,streetscape,gosta,thomasville,grigore,futuna,depleting,whelks,kiedis,armadale,earner,wynyard,dothan,animating,tridentine,sabri,immovable,rivoli,ariege,parley,clinker,circulates,junagadh,fraunhofer,congregants,
180th,buducnost,formula_62,olmert,dedekind,karnak,bayernliga,mazes,sandpiper,ecclestone,yuvan,smallmouth,decolonization,lemmy,adjudicated,retiro,legia,benue,posit,acidification,wahab,taconic,floatplane,perchlorate,atria,wisbech,divestment,dallara,phrygia,palustris,cybersecurity,rebates,facie,mineralogical,substituent,proteges,fowey,mayenne,smoothbore,cherwell,schwarzschild,junin,murrumbidgee,smalltalk,d'orsay,emirati,calaveras,titusville,theremin,vikramaditya,wampanoag,burra,plaines,onegin,emboldened,whampoa,langa,soderbergh,arnaz,sowerby,arendal,godunov,pathanamthitta,damselfly,bestowing,eurosport,iconoclasm,outfitters,acquiesced,badawi,hypotension,ebbsfleet,annulus,sohrab,thenceforth,chagatai,necessitates,aulus,oddities,toynbee,uniontown,innervation,populaire,indivisible,rossellini,minuet,cyrene,gyeongju,chania,cichlids,harrods,
1690s,plunges,abdullahi,gurkhas,homebuilt,sortable,bangui,rediff,incrementally,demetrios,medaille,sportif,svend,guttenberg,tubules,carthusian,pleiades,torii,hoppus,phenyl,hanno,conyngham,teschen,cronenberg,wordless,melatonin,distinctiveness,autos,freising,xuanzang,dunwich,satanism,sweyn,predrag,contractually,pavlovic,malaysians,micrometres,expertly,pannonian,abstaining,capensis,southwesterly,catchphrases,commercialize,frankivsk,normanton,hibernate,verso,deportees,dubliners,codice_8,condors,zagros,glosses,leadville,conscript,morrisons,usury,ossian,oulton,vaccinium,civet,ayman,codrington,hadron,nanometers,geochemistry,extractor,grigori,tyrrhenian,neocollyris,drooping,falsification,werft,courtauld,brigantine,orhan,chapultepec,supercopa,federalized,praga,havering,encampments,infallibility,sardis,pawar,undirected,reconstructionist,ardrossan,varuna,pastimes,archdiocesan,fledging,shenhua,molise,secondarily,stagnated,replicates,ciencias,duryodhana,marauding,ruislip,ilyich,intermixed,ravenswood,shimazu,mycorrhizal,icosahedral,consents,dunblane,follicular,pekin,suffield,muromachi,kinsale,gauche,businesspeople,thereto,watauga,exaltation,chelmno,gorse,proliferate,drainages,burdwan,kangra,transducers,inductor,duvalier,maguindanao,moslem,uncaf,givenchy,plantarum,liturgics,telegraphs,lukashenko,chenango,andante,novae,ironwood,faubourg,torme,chinensis,ambala,pietermaritzburg,virginians,landform,bottlenecks,o'driscoll,darbhanga,baptistery,ameer,needlework,naperville,auditoriums,mullingar,starrer,animatronic,topsoil,madura,cannock,vernet,santurce,catocala,ozeki,pontevedra,multichannel,sundsvall,strategists,medio,
135th,halil,afridi,trelawny,caloric,ghraib,allendale,hameed,ludwigshafen,spurned,pavlo,palmar,strafed,catamarca,aveiro,harmonization,surah,predictors,solvay,mande,omnipresent,parenthesis,echolocation,equaling,experimenters,acyclic,lithographic,sepoys,katarzyna,sridevi,impoundment,khosrow,caesarean,nacogdoches,rockdale,lawmaker,caucasians,bahman,miyan,rubric,exuberance,bombastic,ductile,snowdonia,inlays,pinyon,anemones,hurries,hospitallers,tayyip,pulleys,treme,photovoltaics,testbed,polonium,ryszard,osgoode,profiting,ironwork,unsurpassed,nepticulidae,makai,lumbini,preclassic,clarksburg,egremont,videography,rehabilitating,ponty,sardonic,geotechnical,khurasan,solzhenitsyn,henna,phoenicia,rhyolite,chateaux,retorted,tomar,deflections,repressions,harborough,renan,brumbies,vandross,storia,vodou,clerkenwell,decking,universo,salon.com,imprisoning,sudwest,ghaziabad,subscribing,pisgah,sukhumi,econometric,clearest,pindar,yildirim,iulia,atlases,cements,remaster,dugouts,collapsible,resurrecting,batik,unreliability,thiers,conjunctions,colophon,marcher,placeholder,flagella,wolds,kibaki,viviparous,twelver,screenshots,aroostook,khadr,iconographic,itasca,jaume,basti,propounded,varro,be'er,jeevan,exacted,shrublands,creditable,brocade,boras,bittern,oneonta,attentional,herzliya,comprehensible,lakeville,discards,caxias,frankland,camerata,satoru,matlab,commutator,interprovincial,yorkville,benefices,nizami,edwardsville,amigaos,cannabinoid,indianola,amateurliga,pernicious,ubiquity,anarchic,novelties,precondition,zardari,symington,sargodha,headphone,thermopylae,mashonaland,zindagi,thalberg,loewe,surfactants,dobro,crocodilians,samhita,diatoms,haileybury,berwickshire,supercritical,sofie,snorna,slatina,intramolecular,agung,osteoarthritis,obstetric,teochew,vakhtang,connemara,deformations,diadem,ferruccio,mainichi,qualitatively,refrigerant,rerecorded,methylated,karmapa,krasinski,restatement,rouvas,cubitt,seacoast,schwarzkopf,homonymous,shipowner,thiamine,approachable,xiahou,
160th,ecumenism,polistes,internazionali,fouad,berar,biogeography,texting,inadequately,'when,
4kids,hymenoptera,emplaced,cognomen,bellefonte,supplant,michaelmas,uriel,tafsir,morazan,schweinfurt,chorister,ps400,nscaa,petipa,resolutely,ouagadougou,mascarene,supercell,konstanz,bagrat,harmonix,bergson,shrimps,resonators,veneta,camas,mynydd,rumford,generalmajor,khayyam,web.com,pappus,halfdan,tanana,suomen,yutaka,bibliographical,traian,silat,noailles,contrapuntal,agaricus,'special,minibuses,
1670s,obadiah,deepa,rorschach,malolos,lymington,valuations,imperials,caballeros,ambroise,judicature,elegiac,sedaka,shewa,checksum,gosforth,legionaries,corneille,microregion,friedrichshafen,antonis,surnamed,mycelium,cantus,educations,topmost,outfitting,ivica,nankai,gouda,anthemic,iosif,supercontinent,antifungal,belarusians,mudaliar,mohawks,caversham,glaciated,basemen,stevan,clonmel,loughton,deventer,positivist,manipuri,tensors,panipat,changeup,impermeable,dubbo,elfsborg,maritimo,regimens,bikram,bromeliad,substratum,norodom,gaultier,queanbeyan,pompeo,redacted,eurocopter,mothballed,centaurs,borno,copra,bemidji,'home,sopron,neuquen,passo,cineplex,alexandrov,wysokie,mammoths,yossi,sarcophagi,congreve,petkovic,extraneous,waterbirds,slurs,indias,phaeton,discontented,prefaced,abhay,prescot,interoperable,nordisk,bicyclists,validly,sejong,litovsk,zanesville,kapitanleutnant,kerch,changeable,mcclatchy,celebi,attesting,maccoll,sepahan,wayans,veined,gaudens,markt,dansk,soane,quantized,petersham,forebears,nayarit,frenzied,queuing,bygone,viggo,ludwik,tanka,hanssen,brythonic,cornhill,primorsky,stockpiles,conceptualization,lampeter,hinsdale,mesoderm,bielsk,rosenheim,ultron,joffrey,stanwyck,khagan,tiraspol,pavelic,ascendant,empoli,metatarsal,descentralizado,masada,ligier,huseyin,ramadi,waratah,tampines,ruthenium,statoil,mladost,liger,grecian,multiparty,digraph,maglev,reconsideration,radiography,cartilaginous,taizu,wintered,anabaptist,peterhouse,shoghi,assessors,numerator,paulet,painstakingly,halakhic,rocroi,motorcycling,gimel,kryptonian,emmeline,cheeked,drawdown,lelouch,dacians,brahmana,reminiscence,disinfection,optimizations,golders,extensor,tsugaru,tolling,liman,gulzar,unconvinced,crataegus,oppositional,dvina,pyrolysis,mandan,alexius,prion,stressors,loomed,moated,dhivehi,recyclable,relict,nestlings,sarandon,kosovar,solvers,czeslaw,kenta,maneuverable,middens,berkhamsted,comilla,folkways,loxton,beziers,batumi,petrochemicals,optimised,sirjan,rabindra,musicality,rationalisation,drillers,subspaces,'live,bbwaa,outfielders,tsung,danske,vandalised,norristown,striae,kanata,gastroenterology,steadfastly,equalising,bootlegging,mannerheim,notodontidae,lagoa,commentating,peninsulas,chishti,seismology,modigliani,preceptor,canonically,awardee,boyaca,hsinchu,stiffened,nacelle,bogor,dryness,unobstructed,yaqub,scindia,peeters,irritant,ammonites,ferromagnetic,speechwriter,oxygenated,walesa,millais,canarian,faience,calvinistic,discriminant,rasht,inker,annexes,howth,allocates,conditionally,roused,regionalism,regionalbahn,functionary,nitrates,bicentenary,recreates,saboteurs,koshi,plasmids,thinned,
124th,plainview,kardashian,neuville,victorians,radiates,
127th,vieques,schoolmates,petru,tokusatsu,keying,sunaina,flamethrower,'bout,demersal,hosokawa,corelli,omniscient,o'doherty,niksic,reflectivity,transdev,cavour,metronome,temporally,gabba,nsaids,geert,mayport,hematite,boeotia,vaudreuil,torshavn,sailplane,mineralogist,eskisehir,practises,gallifrey,takumi,unease,slipstream,hedmark,paulinus,ailsa,wielkopolska,filmworks,adamantly,vinaya,facelifted,franchisee,augustana,toppling,velvety,crispa,stonington,histological,genealogist,tactician,tebow,betjeman,nyingma,overwinter,oberoi,rampal,overwinters,petaluma,lactarius,stanmore,balikpapan,vasant,inclines,laminate,munshi,sociedade,rabbah,septal,boyband,ingrained,faltering,inhumans,nhtsa,affix,l'ordre,kazuki,rossendale,mysims,latvians,slaveholders,basilicata,neuburg,assize,manzanillo,scrobipalpa,formula_61,belgique,pterosaurs,privateering,vaasa,veria,northport,pressurised,hobbyist,austerlitz,sahih,bhadra,siliguri,bistrica,bursaries,wynton,corot,lepidus,lully,libor,libera,olusegun,choline,mannerism,lymphocyte,chagos,duxbury,parasitism,ecowas,morotai,cancion,coniston,aggrieved,sputnikmusic,parle,ammonian,civilisations,malformation,cattaraugus,skyhawks,d'arc,demerara,bronfman,midwinter,piscataway,jogaila,threonine,matins,kohlberg,hubli,pentatonic,camillus,nigam,potro,unchained,chauvel,orangeville,cistercians,redeployment,xanthi,manju,carabinieri,pakeha,nikolaevich,kantakouzenos,sesquicentennial,gunships,symbolised,teramo,ballo,crusading,l'oeil,bharatpur,lazier,gabrovo,hysteresis,rothbard,chaumont,roundel,ma'mun,sudhir,queried,newts,shimane,presynaptic,playfield,taxonomists,sensitivities,freleng,burkinabe,orfeo,autovia,proselytizing,bhangra,pasok,jujutsu,heung,pivoting,hominid,commending,formula_64,epworth,christianized,oresund,hantuchova,rajputana,hilversum,masoretic,dayak,bakri,assen,magog,macromolecules,waheed,qaida,spassky,rumped,protrudes,preminger,misogyny,glencairn,salafi,lacunae,grilles,racemes,areva,alighieri,inari,epitomized,photoshoot,one-of-a-kind,tring,muralist,tincture,backwaters,weaned,yeasts,analytically,smaland,caltrans,vysocina,jamuna,mauthausen,
175th,nouvelles,censoring,reggina,christology,gilad,amplifying,mehmood,johnsons,redirects,eastgate,sacrum,meteoric,riverbanks,guidebooks,ascribes,scoparia,iconoclastic,telegraphic,chine,merah,mistico,lectern,sheung,aethelstan,capablanca,anant,uspto,albatrosses,mymensingh,antiretroviral,clonal,coorg,vaillant,liquidator,gigas,yokai,eradicating,motorcyclists,waitakere,tandon,nears,montenegrins,
250th,tatsuya,yassin,atheistic,syncretism,nahum,berisha,transcended,owensboro,lakshmana,abteilung,unadorned,nyack,overflows,harrisonburg,complainant,uematsu,frictional,worsens,sangguniang,abutment,bulwer,sarma,apollinaire,shippers,lycia,alentejo,porpoises,optus,trawling,augustow,blackwall,workbench,westmount,leaped,sikandar,conveniences,stornoway,culverts,zoroastrians,hristo,ansgar,assistive,reassert,fanned,compasses,delgada,maisons,arima,plonsk,verlaine,starstruck,rakhine,befell,spirally,wyclef,expend,colloquium,formula_63,albertus,bellarmine,handedness,holon,introns,movimiento,profitably,lohengrin,discoverers,awash,erste,pharisees,dwarka,oghuz,hashing,heterodox,uloom,vladikavkaz,linesman,rehired,nucleophile,germanicus,gulshan,songz,bayerische,paralympian,crumlin,enjoined,khanum,prahran,penitent,amersfoort,saranac,semisimple,vagrants,compositing,tualatin,oxalate,lavra,ironi,ilkeston,umpqua,calum,stretford,zakat,guelders,hydrazine,birkin,spurring,modularity,aspartate,sodermanland,hopital,bellary,legazpi,clasico,cadfael,hypersonic,volleys,pharmacokinetics,carotene,orientale,pausini,bataille,lunga,retailed,m.phil,mazowieckie,vijayan,rawal,sublimation,promissory,estimators,ploughed,conflagration,penda,segregationist,otley,amputee,coauthor,sopra,pellew,wreckers,tollywood,circumscription,permittivity,strabane,landward,articulates,beaverbrook,rutherglen,coterminous,whistleblowers,colloidal,surbiton,atlante,oswiecim,bhasa,lampooned,chanter,saarc,landkreis,tribulation,tolerates,daiichi,hatun,cowries,dyschirius,abercromby,attock,aldwych,inflows,absolutist,l'histoire,committeeman,vanbrugh,headstock,westbourne,appenzell,hoxton,oculus,westfalen,roundabouts,nickelback,trovatore,quenching,summarises,conservators,transmutation,talleyrand,barzani,unwillingly,axonal,'blue,opining,enveloping,fidesz,rafah,colborne,flickr,lozenge,dulcimer,ndebele,swaraj,oxidize,gonville,resonated,gilani,superiore,endeared,janakpur,shepperton,solidifying,memoranda,sochaux,kurnool,rewari,emirs,kooning,bruford,unavailability,kayseri,judicious,negating,pterosaur,cytosolic,chernihiv,variational,sabretooth,seawolves,devalued,nanded,adverb,volunteerism,sealers,nemours,smederevo,kashubian,bartin,animax,vicomte,polotsk,polder,archiepiscopal,acceptability,quidditch,tussock,seminaire,immolation,belge,coves,wellingborough,khaganate,mckellen,nayaka,brega,kabhi,pontoons,bascule,newsreels,injectors,cobol,weblog,diplo,biggar,wheatbelt,erythrocytes,pedra,showgrounds,bogdanovich,eclecticism,toluene,elegies,formalize,andromedae,airworthiness,springville,mainframes,overexpression,magadha,bijelo,emlyn,glutamine,accenture,uhuru,metairie,arabidopsis,patanjali,peruvians,berezovsky,accion,astrolabe,jayanti,earnestly,sausalito,recurved,
1500s,ramla,incineration,galleons,laplacian,shiki,smethwick,isomerase,dordevic,janow,jeffersonville,internationalism,penciled,styrene,ashur,nucleoside,peristome,horsemanship,sedges,bachata,medes,kristallnacht,schneerson,reflectance,invalided,strutt,draupadi,destino,partridges,tejas,quadrennial,aurel,halych,ethnomusicology,autonomist,radyo,rifting,shi'ar,crvena,telefilm,zawahiri,plana,sultanates,theodorus,subcontractors,pavle,seneschal,teleports,chernivtsi,buccal,brattleboro,stankovic,safar,dunhuang,electrocution,chastised,ergonomic,midsomer,
130th,zomba,nongovernmental,escapist,localize,xuzhou,kyrie,carinthian,karlovac,nisan,kramnik,pilipino,digitisation,khasi,andronicus,highwayman,maior,misspelling,sebastopol,socon,rhaetian,archimandrite,partway,positivity,otaku,dingoes,tarski,geopolitics,disciplinarian,zulfikar,kenzo,globose,electrophilic,modele,storekeeper,pohang,wheldon,washers,interconnecting,digraphs,intrastate,campy,helvetic,frontispiece,ferrocarril,anambra,petraeus,midrib,endometrial,dwarfism,mauryan,endocytosis,brigs,percussionists,furtherance,synergistic,apocynaceae,krona,berthier,circumvented,casal,siltstone,precast,ethnikos,realists,geodesy,zarzuela,greenback,tripathi,persevered,interments,neutralization,olbermann,departements,supercomputing,demobilised,cassavetes,dunder,ministering,veszprem,barbarism,'world,pieve,apologist,frentzen,sulfides,firewalls,pronotum,staatsoper,hachette,makhachkala,oberland,phonon,yoshihiro,instars,purnima,winslet,mutsu,ergative,sajid,nizamuddin,paraphrased,ardeidae,kodagu,monooxygenase,skirmishers,sportiva,o'byrne,mykolaiv,ophir,prieta,gyllenhaal,kantian,leche,copan,herero,ps250,gelsenkirchen,shalit,sammarinese,chetwynd,wftda,travertine,warta,sigmaringen,concerti,namespace,ostergotland,biomarker,universals,collegio,embarcadero,wimborne,fiddlers,likening,ransomed,stifled,unabated,kalakaua,khanty,gongs,goodrem,countermeasure,publicizing,geomorphology,swedenborg,undefended,catastrophes,diverts,storyboards,amesbury,contactless,placentia,festivity,authorise,terrane,thallium,stradivarius,antonine,consortia,estimations,consecrate,supergiant,belichick,pendants,butyl,groza,univac,afire,kavala,studi,teletoon,paucity,gonbad,koninklijke,
128th,stoichiometric,multimodal,facundo,anatomic,melamine,creuse,altan,brigands,mcguinty,blomfield,tsvangirai,protrusion,lurgan,warminster,tenzin,russellville,discursive,definable,scotrail,lignin,reincorporated,o'dell,outperform,redland,multicolored,evaporates,dimitrie,limbic,patapsco,interlingua,surrogacy,cutty,potrero,masud,cahiers,jintao,ardashir,centaurus,plagiarized,minehead,musings,statuettes,logarithms,seaview,prohibitively,downforce,rivington,tomorrowland,microbiologist,ferric,morag,capsid,kucinich,clairvaux,demotic,seamanship,cicada,painterly,cromarty,carbonic,tupou,oconee,tehuantepec,typecast,anstruther,internalized,underwriters,tetrahedra,flagrant,quakes,pathologies,ulrik,nahal,tarquini,dongguan,parnassus,ryoko,senussi,seleucia,airasia,einer,sashes,d'amico,matriculating,arabesque,honved,biophysical,hardinge,kherson,mommsen,diels,icbms,reshape,brasiliensis,palmach,netaji,oblate,functionalities,grigor,blacksburg,recoilless,melanchthon,reales,astrodome,handcrafted,memes,theorizes,isma'il,aarti,pirin,maatschappij,stabilizes,honiara,ashbury,copts,rootes,defensed,queiroz,mantegna,galesburg,coraciiformesfamily,cabrillo,tokio,antipsychotics,kanon,
173rd,apollonia,finial,lydian,hadamard,rangi,dowlatabad,monolingual,platformer,subclasses,chiranjeevi,mirabeau,newsgroup,idmanyurdu,kambojas,walkover,zamoyski,generalist,khedive,flanges,knowle,bande,
157th,alleyn,reaffirm,pininfarina,zuckerberg,hakodate,
131st,aditi,bellinzona,vaulter,planking,boscombe,colombians,lysis,toppers,metered,nahyan,queensryche,minho,nagercoil,firebrand,foundress,bycatch,mendota,freeform,antena,capitalisation,martinus,overijssel,purists,interventionist,zgierz,burgundians,hippolyta,trompe,umatilla,moroccans,dictionnaire,hydrography,changers,chota,rimouski,aniline,bylaw,grandnephew,neamt,lemnos,connoisseurs,tractive,rearrangements,fetishism,finnic,apalachicola,landowning,calligraphic,circumpolar,mansfeld,legible,orientalism,tannhauser,blamey,maximization,noinclude,blackbirds,angara,ostersund,pancreatitis,glabra,acleris,juried,jungian,triumphantly,singlet,plasmas,synesthesia,yellowhead,unleashes,choiseul,quanzhong,brookville,kaskaskia,igcse,skatepark,jatin,jewellers,scaritinae,techcrunch,tellurium,lachaise,azuma,codeshare,dimensionality,unidirectional,scolaire,macdill,camshafts,unassisted,verband,kahlo,eliya,prelature,chiefdoms,saddleback,sockers,iommi,coloratura,llangollen,biosciences,harshest,maithili,k'iche,plical,multifunctional,andreu,tuskers,confounding,sambre,quarterdeck,ascetics,berdych,transversal,tuolumne,sagami,petrobras,brecker,menxia,instilling,stipulating,korra,oscillate,deadpan,v/line,pyrotechnic,stoneware,prelims,intracoastal,retraining,ilija,berwyn,encrypt,achievers,zulfiqar,glycoproteins,khatib,farmsteads,occultist,saman,fionn,derulo,khilji,obrenovic,argosy,toowong,dementieva,sociocultural,iconostasis,craigslist,festschrift,taifa,intercalated,tanjong,penticton,sharad,marxian,extrapolation,guises,wettin,prabang,exclaiming,kosta,famas,conakry,wanderings,'aliabad,macleay,exoplanet,bancorp,besiegers,surmounting,checkerboard,rajab,vliet,tarek,operable,wargaming,haldimand,fukuyama,uesugi,aggregations,erbil,brachiopods,tokyu,anglais,unfavorably,ujpest,escorial,armagnac,nagara,funafuti,ridgeline,cocking,o'gorman,compactness,retardant,krajowa,barua,coking,bestows,thampi,chicagoland,variably,o'loughlin,minnows,schwa,shaukat,polycarbonate,chlorinated,godalming,gramercy,delved,banqueting,enlil,sarada,prasanna,domhnall,decadal,regressive,lipoprotein,collectable,surendra,zaporizhia,cycliste,suchet,offsetting,formula_65,pudong,d'arte,blyton,quonset,osmania,tientsin,manorama,proteomics,bille,jalpaiguri,pertwee,barnegat,inventiveness,gollancz,euthanized,henricus,shortfalls,wuxia,chlorides,cerrado,polyvinyl,folktale,straddled,bioengineering,eschewing,greendale,recharged,olave,ceylonese,autocephalous,peacebuilding,wrights,guyed,rosamund,abitibi,bannockburn,gerontology,scutari,souness,seagram,codice_9,'open,xhtml,taguig,purposed,darbar,orthopedics,unpopulated,kisumu,tarrytown,feodor,polyhedral,monadnock,gottorp,priam,redesigning,gasworks,elfin,urquiza,homologation,filipovic,bohun,manningham,gornik,soundness,shorea,lanus,gelder,darke,sandgate,criticality,paranaense,
153rd,vieja,lithograph,trapezoid,tiebreakers,convalescence,yan'an,actuaries,balad,altimeter,thermoelectric,trailblazer,previn,tenryu,ancaster,endoscopy,nicolet,discloses,fracking,plaine,salado,americanism,placards,absurdist,propylene,breccia,jirga,documenta,ismailis,
161st,brentano,dallas/fort,embellishment,calipers,subscribes,mahavidyalaya,wednesbury,barnstormers,miwok,schembechler,minigame,unterberger,dopaminergic,inacio,nizamabad,overridden,monotype,cavernous,stichting,sassafras,sotho,argentinean,myrrh,rapidity,flatts,gowrie,dejected,kasaragod,cyprinidae,interlinked,arcseconds,degeneracy,infamously,incubate,substructure,trigeminal,sectarianism,marshlands,hooliganism,hurlers,isolationist,urania,burrard,switchover,lecco,wilts,interrogator,strived,ballooning,volterra,raciborz,relegating,gilding,cybele,dolomites,parachutist,lochaber,orators,raeburn,backend,benaud,rallycross,facings,banga,nuclides,defencemen,futurity,emitters,yadkin,eudonia,zambales,manasseh,sirte,meshes,peculiarly,mcminnville,roundly,boban,decrypt,icelanders,sanam,chelan,jovian,grudgingly,penalised,subscript,gambrinus,poaceae,infringements,maleficent,runciman,
148th,supersymmetry,granites,liskeard,eliciting,involution,hallstatt,kitzbuhel,shankly,sandhills,inefficiencies,yishuv,psychotropic,nightjars,wavell,sangamon,vaikundar,choshu,retrospectives,pitesti,gigantea,hashemi,bosna,gakuin,siochana,arrangers,baronetcies,narayani,temecula,creston,koscierzyna,autochthonous,wyandot,anniston,igreja,mobilise,buzau,dunster,musselburgh,wenzhou,khattak,detoxification,decarboxylase,manlius,campbells,coleoptera,copyist,sympathisers,suisun,eminescu,defensor,transshipment,thurgau,somerton,fluctuates,ambika,weierstrass,lukow,giambattista,volcanics,romanticized,innovated,matabeleland,scotiabank,garwolin,purine,d'auvergne,borderland,maozhen,pricewaterhousecoopers,testator,pallium,scout.com,mv/pi,nazca,curacies,upjohn,sarasvati,monegasque,ketrzyn,malory,spikelets,biomechanics,haciendas,rapped,dwarfed,stews,nijinsky,subjection,matsu,perceptible,schwarzburg,midsection,entertains,circuitous,epiphytic,wonsan,alpini,bluefield,sloths,transportable,braunfels,dictum,szczecinek,jukka,wielun,wejherowo,hucknall,grameen,duodenum,ribose,deshpande,shahar,nexstar,injurious,dereham,lithographer,dhoni,structuralist,progreso,deschutes,christus,pulteney,quoins,yitzchak,gyeongsang,breviary,makkah,chiyoda,jutting,vineland,angiosperms,necrotic,novelisation,redistribute,tirumala,
140th,featureless,mafic,rivaling,toyline,
2/
1st,martius,saalfeld,monthan,texian,kathak,melodramas,mithila,regierungsbezirk,
509th,fermenting,schoolmate,virtuosic,briain,kokoda,heliocentric,handpicked,kilwinning,sonically,dinars,kasim,parkways,bogdanov,luxembourgian,halland,avesta,bardic,daugavpils,excavator,qwest,frustrate,physiographic,majoris,'ndrangheta,unrestrained,firmness,montalban,abundances,preservationists,adare,executioners,guardsman,bonnaroo,neglects,nazrul,pro12,hoorn,abercorn,refuting,kabud,cationic,parapsychology,troposphere,venezuelans,malignancy,khoja,unhindered,accordionist,medak,visby,ejercito,laparoscopic,dinas,umayyads,valmiki,o'dowd,saplings,stranding,incisions,illusionist,avocets,buccleuch,amazonia,fourfold,turboprops,roosts,priscus,turnstile,areal,certifies,pocklington,spoofs,viseu,commonalities,dabrowka,annam,homesteaders,daredevils,mondrian,negotiates,fiestas,perennials,maximizes,lubavitch,ravindra,scrapers,finials,kintyre,violas,snoqualmie,wilders,openbsd,mlawa,peritoneal,devarajan,congke,leszno,mercurial,fakir,joannes,bognor,overloading,unbuilt,gurung,scuttle,temperaments,bautzen,jardim,tradesman,visitations,barbet,sagamore,graaff,forecasters,wilsons,assis,l'air,shariah,sochaczew,russa,dirge,biliary,neuve,heartbreakers,strathearn,jacobian,overgrazing,edrich,anticline,parathyroid,petula,lepanto,decius,channelled,parvathi,puppeteers,communicators,francorchamps,kahane,longus,panjang,intron,traite,xxvii,matsuri,amrit,katyn,disheartened,cacak,omonia,alexandrine,partaking,wrangling,adjuvant,haskovo,tendrils,greensand,lammermoor,otherworld,volusia,stabling,one-and-a-half,bresson,zapatista,eotvos,ps150,webisodes,stepchildren,microarray,braganca,quanta,dolne,superoxide,bellona,delineate,ratha,lindenwood,bruhl,cingulate,tallies,bickerton,helgi,bevin,takoma,tsukuba,statuses,changeling,alister,bytom,dibrugarh,magnesia,duplicating,outlier,abated,goncalo,strelitz,shikai,mardan,musculature,ascomycota,springhill,tumuli,gabaa,odenwald,reformatted,autocracy,theresienstadt,suplex,chattopadhyay,mencken,congratulatory,weatherfield,systema,solemnity,projekt,quanzhou,kreuzberg,postbellum,nobuo,mediaworks,finisterre,matchplay,bangladeshis,kothen,oocyte,hovered,aromas,afshar,browed,teases,chorlton,arshad,cesaro,backbencher,iquique,vulcans,padmini,unabridged,cyclase,despotic,kirilenko,achaean,queensberry,debre,octahedron,iphigenia,curbing,karimnagar,sagarmatha,smelters,surrealists,sanada,shrestha,turridae,leasehold,jiedushi,eurythmics,appropriating,correze,thimphu,amery,musicomh,cyborgs,sandwell,pushcart,retorts,ameliorate,deteriorates,stojanovic,spline,entrenchments,bourse,chancellorship,pasolini,lendl,personage,reformulated,pubescens,loiret,metalurh,reinvention,nonhuman,eilema,tarsal,complutense,magne,broadview,metrodome,outtake,stouffville,seinen,bataillon,phosphoric,ostensible,opatow,aristides,beefheart,glorifying,banten,romsey,seamounts,fushimi,prophylaxis,sibylla,ranjith,goslar,balustrades,georgiev,caird,lafitte,peano,canso,bankura,halfpenny,segregate,caisson,bizerte,jamshedpur,euromaidan,philosophie,ridged,cheerfully,reclassification,aemilius,visionaries,samoans,wokingham,chemung,wolof,unbranched,cinerea,bhosle,ourense,immortalised,cornerstones,sourcebook,khufu,archimedean,universitatea,intermolecular,fiscally,suffices,metacomet,adjudicator,stablemate,specks,glace,inowroclaw,patristic,muharram,agitating,ashot,neurologic,didcot,gamla,ilves,putouts,siraj,laski,coaling,diarmuid,ratnagiri,rotulorum,liquefaction,morbihan,harel,aftershock,gruiformesfamily,bonnier,falconiformesfamily,adorns,wikis,maastrichtian,stauffenberg,bishopsgate,fakhr,sevenfold,ponders,quantifying,castiel,opacity,depredations,lenten,gravitated,o'mahony,modulates,inuktitut,paston,kayfabe,vagus,legalised,balked,arianism,tendering,sivas,birthdate,awlaki,khvajeh,shahab,samtgemeinde,bridgeton,amalgamations,biogenesis,recharging,tsukasa,mythbusters,chamfered,enthronement,freelancers,maharana,constantia,sutil,messines,monkton,okanogan,reinvigorated,apoplexy,tanahashi,neues,valiants,harappan,russes,carding,volkoff,funchal,statehouse,imitative,intrepidity,mellotron,samaras,turkana,besting,longitudes,exarch,diarrhoea,transcending,zvonareva,darna,ramblin,disconnection,
137th,refocused,diarmait,agricole,ba'athist,turenne,contrabass,communis,daviess,fatimids,frosinone,fittingly,polyphyletic,qanat,theocratic,preclinical,abacha,toorak,marketplaces,conidia,seiya,contraindicated,retford,bundesautobahn,rebuilds,climatology,seaworthy,starfighter,qamar,categoria,malai,hellinsia,newstead,airworthy,catenin,avonmouth,arrhythmias,ayyavazhi,downgrade,ashburnham,ejector,kinematics,petworth,rspca,filmation,accipitridae,chhatrapati,g/mol,bacau,agama,ringtone,yudhoyono,orchestrator,arbitrators,
138th,powerplants,cumbernauld,alderley,misamis,hawai`i,cuando,meistriliiga,jermyn,alans,pedigrees,ottavio,approbation,omnium,purulia,prioress,rheinland,lymphoid,lutsk,oscilloscope,ballina,iliac,motorbikes,modernising,uffizi,phylloxera,kalevala,bengalis,amravati,syntheses,interviewers,inflectional,outflank,maryhill,unhurt,profiler,nacelles,heseltine,personalised,guarda,herpetologist,airpark,pigot,margaretha,dinos,peleliu,breakbeat,kastamonu,shaivism,delamere,kingsville,epigram,khlong,phospholipids,journeying,lietuvos,congregated,deviance,celebes,subsoil,stroma,kvitova,lubricating,layoff,alagoas,olafur,doron,interuniversity,raycom,agonopterix,uzice,nanna,springvale,raimundo,wrested,pupal,talat,skinheads,vestige,unpainted,handan,odawara,ammar,attendee,lapped,myotis,gusty,ciconiiformesfamily,traversal,subfield,vitaphone,prensa,hasidism,inwood,carstairs,kropotkin,turgenev,dobra,remittance,purim,tannin,adige,tabulation,lethality,pacha,micronesian,dhruva,defensemen,tibeto,siculus,radioisotope,sodertalje,phitsanulok,euphonium,oxytocin,overhangs,skinks,fabrica,reinterred,emulates,bioscience,paragliding,raekwon,perigee,plausibility,frolunda,erroll,aznar,vyasa,albinus,trevally,confederacion,terse,sixtieth,
1530s,kendriya,skateboarders,frontieres,muawiyah,easements,shehu,conservatively,keystones,kasem,brutalist,peekskill,cowry,orcas,syllabary,paltz,elisabetta,denticles,hampering,dolni,eidos,aarau,lermontov,yankton,shahbaz,barrages,kongsvinger,reestablishment,acetyltransferase,zulia,mrnas,slingsby,eucalypt,efficacious,weybridge,gradation,cinematheque,malthus,bampton,coexisted,cisse,hamdi,cupertino,saumarez,chionodes,libertine,formers,sakharov,pseudonymous,vol
.1,mcduck,gopalakrishnan,amberley,jorhat,grandmasters,rudiments,dwindle,param,bukidnon,menander,americanus,multipliers,pulawy,homoerotic,pillbox,cd+dvd,epigraph,aleksandrow,extrapolated,horseshoes,contemporain,angiography,hasselt,shawinigan,memorization,legitimized,cyclades,outsold,rodolphe,kelis,powerball,dijkstra,analyzers,incompressible,sambar,orangeburg,osten,reauthorization,adamawa,sphagnum,hypermarket,millipedes,zoroaster,madea,ossuary,murrayfield,pronominal,gautham,resellers,ethers,quarrelled,dolna,stragglers,asami,tangut,passos,educacion,sharaf,texel,berio,bethpage,bezalel,marfa,noronha,
36ers,genteel,avram,shilton,compensates,sweetener,reinstalled,disables,noether,
1590s,balakrishnan,kotaro,northallerton,cataclysm,gholam,cancellara,schiphol,commends,longinus,albinism,gemayel,hamamatsu,volos,islamism,sidereal,pecuniary,diggings,townsquare,neosho,lushan,chittoor,akhil,disputation,desiccation,cambodians,thwarting,deliberated,ellipsis,bahini,susumu,separators,kohneh,plebeians,kultur,ogaden,pissarro,trypeta,latur,liaodong,vetting,datong,sohail,alchemists,lengthwise,unevenly,masterly,microcontrollers,occupier,deviating,farringdon,baccalaureat,theocracy,chebyshev,archivists,jayaram,ineffectiveness,scandinavians,jacobins,encomienda,nambu,g/cm3,catesby,paavo,heeded,rhodium,idealised,
10deg,infective,mecyclothorax,halevy,sheared,minbari,audax,lusatian,rebuffs,hitfix,fastener,subjugate,tarun,binet,compuserve,synthesiser,keisuke,amalric,ligatures,tadashi,ignazio,abramovich,groundnut,otomo,maeve,mortlake,ostrogoths,antillean,todor,recto,millimetre,espousing,inaugurate,paracetamol,galvanic,harpalinae,jedrzejow,reassessment,langlands,civita,mikan,stikine,bijar,imamate,istana,kaiserliche,erastus,federale,cytosine,expansionism,hommes,norrland,smriti,snapdragon,gulab,taleb,lossy,khattab,urbanised,sesto,rekord,diffuser,desam,morganatic,silting,pacts,extender,beauharnais,purley,bouches,halfpipe,discontinuities,houthi,farmville,animism,horni,saadi,interpretative,blockades,symeon,biogeographic,transcaucasian,jetties,landrieu,astrocytes,conjunto,stumpings,weevils,geysers,redux,arching,romanus,tazeh,marcellinus,casein,opava,misrata,anare,sattar,declarer,dreux,oporto,venta,vallis,icosahedron,cortona,lachine,mohammedan,sandnes,zynga,clarin,diomedes,tsuyoshi,pribram,gulbarga,chartist,superettan,boscawen,altus,subang,gating,epistolary,vizianagaram,ogdensburg,panna,thyssen,tarkovsky,dzogchen,biograph,seremban,unscientific,nightjar,legco,deism,n.w.a,sudha,siskel,sassou,flintlock,jovial,montbeliard,pallida,formula_66,tranquillity,nisei,adornment,'people,yamhill,hockeyallsvenskan,adopters,appian,lowicz,haplotypes,succinctly,starogard,presidencies,kheyrabad,sobibor,kinesiology,cowichan,militum,cromwellian,leiningen,ps1.5,concourses,dalarna,goldfield,brzeg,faeces,aquarii,matchless,harvesters,
181st,numismatics,korfball,sectioned,transpires,facultative,brandishing,kieron,forages,menai,glutinous,debarge,heathfield,
1580s,malang,photoelectric,froome,semiotic,alwar,grammophon,chiaroscuro,mentalist,maramures,flacco,liquors,aleutians,marvell,sutlej,patnaik,qassam,flintoff,bayfield,haeckel,sueno,avicii,exoplanets,hoshi,annibale,vojislav,honeycombs,celebrant,rendsburg,veblen,quails,
141st,carronades,savar,narrations,jeeva,ontologies,hedonistic,marinette,godot,munna,bessarabian,outrigger,thame,gravels,hoshino,falsifying,stereochemistry,nacionalista,medially,radula,ejecting,conservatorio,odile,ceiba,jaina,essonne,isometry,allophones,recidivism,iveco,ganda,grammarians,jagan,signposted,uncompressed,facilitators,constancy,ditko,propulsive,impaling,interbank,botolph,amlaib,intergroup,sorbus,cheka,debye,praca,adorning,presbyteries,dormition,strategos,qarase,pentecostals,beehives,hashemite,goldust,euronext,egress,arpanet,soames,jurchens,slovenska,copse,kazim,appraisals,marischal,mineola,sharada,caricaturist,sturluson,galba,faizabad,overwintering,grete,uyezds,didsbury,libreville,ablett,microstructure,anadolu,belenenses,elocution,cloaks,timeslots,halden,rashidun,displaces,sympatric,germanus,tuples,ceska,equalize,disassembly,krautrock,babangida,memel,deild,gopala,hematology,underclass,sangli,wawrinka,assur,toshack,refrains,nicotinic,bhagalpur,badami,racetracks,pocatello,walgreens,nazarbayev,occultation,spinnaker,geneon,josias,hydrolyzed,dzong,corregimiento,waistcoat,thermoplastic,soldered,anticancer,lactobacillus,shafi'i,carabus,adjournment,schlumberger,triceratops,despotate,mendicant,krishnamurti,bahasa,earthworm,lavoisier,noetherian,kalki,fervently,bhawan,saanich,coquille,gannet,motagua,kennels,mineralization,fitzherbert,svein,bifurcated,hairdressing,felis,abounded,dimers,fervour,hebdo,bluffton,aetna,corydon,clevedon,carneiro,subjectively,deutz,gastropoda,overshot,concatenation,varman,carolla,maharshi,mujib,inelastic,riverhead,initialized,safavids,rohini,caguas,bulges,fotbollforbund,hefei,spithead,westville,maronites,lytham,americo,gediminas,stephanus,chalcolithic,hijra,gnu/linux,predilection,rulership,sterility,haidar,scarlatti,saprissa,sviatoslav,pointedly,sunroof,guarantor,thevar,airstrips,pultusk,sture,
129th,divinities,daizong,dolichoderus,cobourg,maoists,swordsmanship,uprated,bohme,tashi,largs,chandi,bluebeard,householders,richardsonian,drepanidae,antigonish,elbasan,occultism,marca,hypergeometric,oirat,stiglitz,ignites,dzungar,miquelon,pritam,d'automne,ulidiid,niamey,vallecano,fondo,billiton,incumbencies,raceme,chambery,cadell,barenaked,kagame,summerside,haussmann,hatshepsut,apothecaries,criollo,feint,nasals,timurid,feltham,plotinus,oxygenation,marginata,officinalis,salat,participations,ising,downe,izumo,unguided,pretence,coursed,haruna,viscountcy,mainstage,justicia,powiat,takara,capitoline,implacable,farben,stopford,cosmopterix,tuberous,kronecker,galatians,kweli,dogmas,exhorted,trebinje,skanda,newlyn,ablative,basidia,bhiwani,encroachments,stranglers,regrouping,tubal,shoestring,wawel,anionic,mesenchymal,creationists,pyrophosphate,moshi,despotism,powerbook,fatehpur,rupiah,segre,ternate,jessore,b.i.g,shevardnadze,abounds,gliwice,densest,memoria,suborbital,vietcong,ratepayers,karunanidhi,toolbar,descents,rhymney,exhortation,zahedan,carcinomas,hyperbaric,botvinnik,billets,neuropsychological,tigranes,hoards,chater,biennially,thistles,scotus,wataru,flotillas,hungama,monopolistic,payouts,vetch,generalissimo,caries,naumburg,piran,blizzards,escalates,reactant,shinya,theorize,rizzoli,transitway,ecclesiae,streptomyces,cantal,nisibis,superconductor,unworkable,thallus,roehampton,scheckter,viceroys,makuuchi,ilkley,superseding,takuya,klodzko,borbon,raspberries,operand,w.a.k.o,sarabande,factionalism,egalitarianism,temasek,torbat,unscripted,jorma,westerner,perfective,vrije,underlain,goldfrapp,blaenau,jomon,barthes,drivetime,bassa,bannock,umaga,fengxiang,zulus,sreenivasan,farces,codice_10,freeholder,poddebice,imperialists,deregulated,wingtip,o'hagan,pillared,overtone,hofstadter,
149th,kitano,saybrook,standardizing,aldgate,staveley,o'flaherty,hundredths,steerable,soltan,empted,cruyff,intramuros,taluks,cotonou,marae,karur,figueres,barwon,lucullus,niobe,zemlya,lathes,homeported,chaux,amyotrophic,opines,exemplars,bhamo,homomorphisms,gauleiter,ladin,mafiosi,airdrieonians,b/soul,decal,transcaucasia,solti,defecation,deaconess,numidia,sampradaya,normalised,wingless,schwaben,alnus,cinerama,yakutsk,ketchikan,orvieto,unearned,monferrato,rotem,aacsb,loong,decoders,skerries,cardiothoracic,repositioning,pimpernel,yohannan,tenebrionoidea,nargis,nouvel,costliest,interdenominational,noize,redirecting,zither,morcha,radiometric,frequenting,irtysh,gbagbo,chakri,litvinenko,infotainment,ravensbruck,harith,corbels,maegashira,jousting,natan,novus,falcao,minis,railed,decile,rauma,ramaswamy,cavitation,paranaque,berchtesgaden,reanimated,schomberg,polysaccharides,exclusionary,cleon,anurag,ravaging,dhanush,mitchells,granule,contemptuous,keisei,rolleston,atlantean,yorkist,daraa,wapping,micrometer,keeneland,comparably,baranja,oranje,schlafli,yogic,dinajpur,unimpressive,masashi,recreativo,alemannic,petersfield,naoko,vasudeva,autosport,rajat,marella,busko,wethersfield,ssris,soulcalibur,kobani,wildland,rookery,hoffenheim,kauri,aliphatic,balaclava,ferrite,publicise,victorias,theism,quimper,chapbook,functionalist,roadbed,ulyanovsk,cupen,purpurea,calthorpe,teofilo,mousavi,cochlea,linotype,detmold,ellerslie,gakkai,telkom,southsea,subcontractor,inguinal,philatelists,zeebrugge,piave,trochidae,dempo,spoilt,saharanpur,mihrab,parasympathetic,barbarous,chartering,antiqua,katsina,bugis,categorizes,altstadt,kandyan,pambansa,overpasses,miters,assimilating,finlandia,uneconomic,am/fm,harpsichordist,dresdner,luminescence,authentically,overpowers,magmatic,cliftonville,oilfields,skirted,berthe,cuman,oakham,frelimo,glockenspiel,confection,saxophonists,piaseczno,multilevel,antipater,levying,maltreatment,velho,opoczno,harburg,pedophilia,unfunded,palettes,plasterwork,breve,dharmendra,auchinleck,nonesuch,blackmun,libretti,rabbani,
145th,hasselbeck,kinnock,malate,vanden,cloverdale,ashgabat,nares,radians,steelworkers,sabor,possums,catterick,hemispheric,ostra,outpaced,dungeness,almshouse,penryn,texians,
1000m,franchitti,incumbency,texcoco,newar,tramcars,toroidal,meitetsu,spellbound,agronomist,vinifera,riata,bunko,pinas,ba'al,github,vasilyevich,obsolescent,geodesics,ancestries,tujue,capitalised,unassigned,throng,unpaired,psychometric,skegness,exothermic,buffered,kristiansund,tongued,berenger,basho,alitalia,prolongation,archaeologically,fractionation,cyprinid,echinoderms,agriculturally,justiciar,sonam,ilium,baits,danceable,grazer,ardahan,grassed,preemption,glassworks,hasina,ugric,umbra,wahhabi,vannes,tinnitus,capitaine,tikrit,lisieux,scree,hormuz,despenser,jagiellon,maisonneuve,gandaki,santarem,basilicas,lancing,landskrona,weilburg,fireside,elysian,isleworth,krishnamurthy,filton,cynon,tecmo,subcostal,scalars,triglycerides,hyperplane,farmingdale,unione,meydan,pilings,mercosur,reactivate,akiba,fecundity,jatra,natsume,zarqawi,preta,masao,presbyter,oakenfold,rhodri,ferran,ruizong,cloyne,nelvana,epiphanius,borde,scutes,strictures,troughton,whitestone,sholom,toyah,shingon,kutuzov,abelard,passant,lipno,cafeterias,residuals,anabaptists,paratransit,criollos,pleven,radiata,destabilizing,hadiths,bazaars,mannose,taiyo,crookes,welbeck,baoding,archelaus,nguesso,alberni,wingtips,herts,viasat,lankans,evreux,wigram,fassbinder,ryuichi,storting,reducible,olesnica,znojmo,hyannis,theophanes,flatiron,mustering,rajahmundry,kadir,wayang,prome,lethargy,zubin,illegality,conall,dramedy,beerbohm,hipparchus,ziarat,ryuji,shugo,glenorchy,microarchitecture,morne,lewinsky,cauvery,battenberg,hyksos,wayanad,hamilcar,buhari,brazo,bratianu,solms,aksaray,elamite,chilcotin,bloodstock,sagara,dolny,reunified,umlaut,proteaceae,camborne,calabrian,dhanbad,vaxjo,cookware,potez,rediffusion,semitones,lamentations,allgau,guernica,suntory,pleated,stationing,urgell,gannets,bertelsmann,entryway,raphitomidae,acetaldehyde,nephrology,categorizing,beiyang,permeate,tourney,geosciences,khana,masayuki,crucis,universitaria,slaskie,khaimah,finno,advani,astonishingly,tubulin,vampiric,jeolla,sociale,cleethorpes,badri,muridae,suzong,debater,decimation,kenyans,mutualism,pontifex,middlemen,insee,halevi,lamentation,psychopathy,brassey,wenders,kavya,parabellum,prolactin,inescapable,apses,malignancies,rinzai,stigmatized,menahem,comox,ateliers,welshpool,setif,centimetre,truthfulness,downfield,drusus,woden,glycosylation,emanated,agulhas,dalkeith,jazira,nucky,unifil,jobim,operon,oryzomys,heroically,seances,supernumerary,backhouse,hashanah,tatler,imago,invert,hayato,clockmaker,kingsmill,swiecie,analogously,golconda,poste,tacitly,decentralised,ge'ez,diplomatically,fossiliferous,linseed,mahavira,pedestals,archpriest,byelection,domiciled,jeffersonian,bombus,winegrowing,waukegan,uncultivated,haverfordwest,saumur,communally,disbursed,cleeve,zeljeznicar,speciosa,vacationers,sigur,vaishali,zlatko,iftikhar,cropland,transkei,incompleteness,bohra,subantarctic,slieve,physiologic,similis,klerk,replanted,'right,chafee,reproducible,bayburt,regicide,muzaffarpur,plurals,hanyu,orthologs,diouf,assailed,kamui,tarik,dodecanese,gorne,on/off,
179th,shimoga,granaries,carlists,valar,tripolitania,sherds,simmern,dissociated,isambard,polytechnical,yuvraj,brabazon,antisense,pubmed,glans,minutely,masaaki,raghavendra,savoury,podcasting,tachi,bienville,gongsun,ridgely,deform,yuichi,binders,canna,carcetti,llobregat,implored,berri,njegos,intermingled,offload,athenry,motherhouse,corpora,kakinada,dannebrog,imperio,prefaces,musicologists,aerospatiale,shirai,nagapattinam,servius,cristoforo,pomfret,reviled,entebbe,stane,east/west,thermometers,matriarchal,siglo,bodil,legionnaire,ze'ev,theorizing,sangeetha,horticulturist,uncountable,lookalike,anoxic,ionospheric,genealogists,chicopee,imprinting,popish,crematoria,diamondback,cyathea,hanzhong,cameramen,halogaland,naklo,waclaw,storehouses,flexed,comuni,frits,glauca,nilgiris,compresses,nainital,continuations,albay,hypoxic,samajwadi,dunkerque,nanticoke,sarwar,interchanged,jubal,corba,jalgaon,derleth,deathstroke,magny,vinnytsia,hyphenated,rimfire,sawan,boehner,disrepute,normalize,aromanian,dualistic,approximant,chama,karimabad,barnacles,sanok,stipends,dyfed,rijksmuseum,reverberation,suncorp,fungicides,reverie,spectrograph,stereophonic,niazi,ordos,alcan,karaite,lautrec,tableland,lamellar,rieti,langmuir,russula,webern,tweaks,hawick,southerner,morphy,naturalisation,enantiomer,michinoku,barbettes,relieves,carburettors,redruth,oblates,vocabularies,mogilev,bagmati,galium,reasserted,extolled,symon,eurosceptic,inflections,tirtha,recompense,oruro,roping,gouverneur,pared,yayoi,watermills,retooled,leukocytes,jubilant,mazhar,nicolau,manheim,touraine,bedser,hambledon,kohat,powerhouses,tlemcen,reuven,sympathetically,afrikaners,interes,handcrafts,etcher,baddeley,wodonga,amaury,
155th,vulgarity,pompadour,automorphisms,
1540s,oppositions,prekmurje,deryni,fortifying,arcuate,mahila,bocage,uther,nozze,slashes,atlantica,hadid,rhizomatous,azeris,'with,osmena,lewisville,innervated,bandmaster,outcropping,parallelogram,dominicana,twang,ingushetia,extensional,ladino,sastry,zinoviev,relatable,nobilis,cbeebies,hitless,eulima,sporangia,synge,longlisted,criminalized,penitential,weyden,tubule,volyn,priestesses,glenbrook,kibbutzim,windshaft,canadair,falange,zsolt,bonheur,meine,archangels,safeguarded,jamaicans,malarial,teasers,badging,merseyrail,operands,pulsars,gauchos,biotin,bambara,necaxa,egmond,tillage,coppi,anxiolytic,preah,mausoleums,plautus,feroz,debunked,
187th,belediyespor,mujibur,wantage,carboxyl,chettiar,murnau,vagueness,racemic,backstretch,courtland,municipio,palpatine,dezful,hyperbola,sreekumar,chalons,altay,arapahoe,tudors,sapieha,quilon,burdensome,kanya,xxviii,recension,generis,siphuncle,repressor,bitrate,mandals,midhurst,dioxin,democratique,upholds,rodez,cinematographic,epoque,jinping,rabelais,zhytomyr,glenview,rebooted,khalidi,reticulata,
122nd,monnaie,passersby,ghazals,europaea,lippmann,earthbound,tadic,andorran,artvin,angelicum,banksy,epicentre,resemblances,shuttled,rathaus,bernt,stonemasons,balochi,siang,tynemouth,cygni,biosynthetic,precipitates,sharecroppers,d'annunzio,softbank,shiji,apeldoorn,polycyclic,wenceslas,wuchang,samnites,tamarack,silmarillion,madinah,palaeontology,kirchberg,sculpin,rohtak,aquabats,oviparous,thynne,caney,blimps,minimalistic,whatcom,palatalization,bardstown,direct3d,paramagnetic,kamboja,khash,globemaster,lengua,matej,chernigov,swanage,arsenals,cascadia,cundinamarca,tusculum,leavers,organics,warplanes,'three,exertions,arminius,gandharva,inquires,comercio,kuopio,chabahar,plotlines,mersenne,anquetil,paralytic,buckminster,ambit,acrolophus,quantifiers,clacton,ciliary,ansaldo,fergana,egoism,thracians,chicoutimi,northbrook,analgesia,brotherhoods,hunza,adriaen,fluoridation,snowfalls,soundboard,fangoria,cannibalistic,orthogonius,chukotka,dindigul,manzoni,chainz,macromedia,beltline,muruga,schistura,provable,litex,initio,pneumoniae,infosys,cerium,boonton,cannonballs,d'une,solvency,mandurah,houthis,dolmens,apologists,radioisotopes,blaxploitation,poroshenko,stawell,coosa,maximilien,tempelhof,espouse,declaratory,hambro,xalapa,outmoded,mihiel,benefitting,desirous,archeparchy,repopulated,telescoping,captor,mackaye,disparaged,ramanathan,crowne,tumbled,technetium,silted,chedi,nievre,hyeon,cartoonish,interlock,infocom,rediff.com,dioramas,timekeeping,concertina,kutaisi,cesky,lubomirski,unapologetic,epigraphic,stalactites,sneha,biofilm,falconry,miraflores,catena,'outstanding,prospekt,apotheosis,o'odham,pacemakers,arabica,gandhinagar,reminisces,iroquoian,ornette,tilling,neoliberalism,chameleons,pandava,prefontaine,haiyan,gneisenau,utama,bando,reconstitution,azaria,canola,paratroops,ayckbourn,manistee,stourton,manifestos,lympne,denouement,tractatus,rakim,bellflower,nanometer,sassanids,turlough,presbyterianism,varmland,
20deg,phool,nyerere,almohad,manipal,vlaanderen,quickness,removals,makow,circumflex,eatery,morane,fondazione,alkylation,unenforceable,galliano,silkworm,junior/senior,abducts,phlox,konskie,lofoten,buuren,glyphosate,faired,naturae,cobbles,taher,skrulls,dostoevsky,walkout,wagnerian,orbited,methodically,denzil,sarat,extraterritorial,kohima,d'armor,brinsley,rostropovich,fengtian,comitatus,aravind,moche,wrangell,giscard,vantaa,viljandi,hakoah,seabees,muscatine,ballade,camanachd,sothern,mullioned,durad,margraves,maven,arete,chandni,garifuna,
142nd,reading/literature,thickest,intensifies,trygve,khaldun,perinatal,asana,powerline,acetylation,nureyev,omiya,montesquieu,riverwalk,marly,correlating,intermountain,bulgar,hammerheads,underscores,wiretapping,quatrain,ruisseau,newsagent,tuticorin,polygyny,hemsworth,partisanship,banna,istrian,evaporator".split(","),
54802 female_names:"mary,patricia,linda,barbara,elizabeth,jennifer,maria,susan,margaret,dorothy,lisa,nancy,karen,betty,helen,sandra,donna,carol,ruth,sharon,michelle,laura,sarah,kimberly,deborah,jessica,shirley,cynthia,angela,melissa,brenda,amy,anna,rebecca,virginia,kathleen,pamela,martha,debra,amanda,stephanie,carolyn,christine,marie,janet,catherine,frances,ann,joyce,diane,alice,julie,heather,teresa,doris,gloria,evelyn,jean,cheryl,mildred,katherine,joan,ashley,judith,rose,janice,kelly,nicole,judy,christina,kathy,theresa,beverly,denise,tammy,irene,jane,lori,rachel,marilyn,andrea,kathryn,louise,sara,anne,jacqueline,wanda,bonnie,julia,ruby,lois,tina,phyllis,norma,paula,diana,annie,lillian,emily,robin,peggy,crystal,gladys,rita,dawn,connie,florence,tracy,edna,tiffany,carmen,rosa,cindy,grace,wendy,victoria,edith,kim,sherry,sylvia,josephine,thelma,shannon,sheila,ethel,ellen,elaine,marjorie,carrie,charlotte,monica,esther,pauline,emma,juanita,anita,rhonda,hazel,amber,eva,debbie,april,leslie,clara,lucille,jamie,joanne,eleanor,valerie,danielle,megan,alicia,suzanne,michele,gail,bertha,darlene,veronica,jill,erin,geraldine,lauren,cathy,joann,lorraine,lynn,sally,regina,erica,beatrice,dolores,bernice,audrey,yvonne,annette,marion,dana,stacy,ana,renee,ida,vivian,roberta,holly,brittany,melanie,loretta,yolanda,jeanette,laurie,katie,kristen,vanessa,alma,sue,elsie,beth,jeanne,vicki,carla,tara,rosemary,eileen,terri,gertrude,lucy,tonya,ella,stacey,wilma,gina,kristin,jessie,natalie,agnes,vera,charlene,bessie,delores,melinda,pearl,arlene,maureen,colleen,allison,tamara,joy,georgia,constance,lillie,claudia,jackie,marcia,tanya,nellie,minnie,marlene,heidi,glenda,lydia,viola,courtney,marian,stella,caroline,dora,vickie,mattie,maxine,irma,mabel,marsha,myrtle,lena,christy,deanna,patsy,hilda,gwendolyn,jennie,nora,margie,nina,cassandra,leah,penny,kay,priscilla,naomi,carole,olga,billie,dianne,tracey,leona,jenny,felicia,sonia,miriam,velma,becky,bobbie,violet,kristina,toni,misty,mae,shelly,daisy,ramona,sherri,erika,katrina,claire,lindsey,lindsay,geneva,guadalupe,belinda,margarita,sheryl,cora,faye,ada,sabrina,isabel,marguerite,hattie,harriet,molly,cecilia,kristi,brandi,blanche,sandy,rosie,joanna,iris,eunice,angie,inez,lynda,madeline,amelia,alberta,genevieve,monique,jodi,janie,kayla,sonya,jan,kristine,candace,fannie,maryann,opal,alison,yvette,melody,luz,susie,olivia,flora,shelley,kristy,mamie,lula,lola,verna,beulah,antoinette,candice,juana,jeannette,pam,kelli,whitney,bridget,karla,celia,latoya,patty,shelia,gayle,della,vicky,lynne,sheri,marianne,kara,jacquelyn,erma,blanca,myra,leticia,pat,krista,roxanne,angelica,robyn,adrienne,rosalie,alexandra,brooke,bethany,sadie,bernadette,traci,jody,kendra,nichole,rachael,mable,ernestine,muriel,marcella,elena,krystal,angelina,nadine,kari,estelle,dianna,paulette,lora,mona,doreen,rosemarie,desiree,antonia,janis,betsy,christie,freda,meredith,lynette,teri,cristina,eula,leigh,meghan,sophia,eloise,rochelle,gretchen,cecelia,raquel,henrietta,alyssa,jana,gwen,jenna,tricia,laverne,olive,tasha,silvia,elvira,delia,kate,patti,lorena,kellie,sonja,lila,lana,darla,mindy,essie,mandy,lorene,elsa,josefina,jeannie,miranda,dixie,lucia,marta,faith,lela,johanna,shari,camille,tami,shawna,elisa,ebony,melba,ora,nettie,tabitha,ollie,winifred,kristie,alisha,aimee,rena,myrna,marla,tammie,latasha,bonita,patrice,ronda,sherrie,addie,francine,deloris,stacie,adriana,cheri,abigail,celeste,jewel,cara,adele,rebekah,lucinda,dorthy,effie,trina,reba,sallie,aurora,lenora,etta,lottie,kerri,trisha,nikki,estella,francisca,josie,tracie,marissa,karin,brittney,janelle,lourdes,laurel,helene,fern,elva,corinne,kelsey,ina,bettie,elisabeth,aida,caitlin,ingrid,iva,eugenia,christa,goldie,maude,jenifer,therese,dena,lorna,janette,latonya,candy,consuelo,tamika,rosetta,debora,cherie,polly,dina,jewell,fay,jillian,dorothea,nell,trudy,esperanza,patrica,kimberley,shanna,helena,cleo,stefanie,rosario,ola,janine,mollie,lupe,alisa,lou,maribel,susanne,bette,susana,elise,cecile,isabelle,lesley,jocelyn,paige,joni,rachelle,leola,daphne,alta,ester,petra,graciela,imogene,jolene,keisha,lacey,glenna,gabriela,keri,ursula,lizzie,kirsten,shana,adeline,mayra,jayne,jaclyn,gracie,sondra,carmela,marisa,rosalind,charity,tonia,beatriz,marisol,clarice,jeanine,sheena,angeline,frieda,lily,shauna,millie,claudette,cathleen,angelia,gabrielle,autumn,katharine,jodie,staci,lea,christi,justine,elma,luella,margret,dominique,socorro,martina,margo,mavis,callie,bobbi,maritza,lucile,leanne,jeannine,deana,aileen,lorie,ladonna,willa,manuela,gale,selma,dolly,sybil,abby,ivy,dee,winnie,marcy,luisa,jeri,magdalena,ofelia,meagan,audra,matilda,leila,cornelia,bianca,simone,bettye,randi,virgie,latisha,barbra,georgina,eliza,leann,bridgette,rhoda,haley,adela,nola,bernadine,flossie,ila,greta,ruthie,nelda,minerva,lilly,terrie,letha,hilary,estela,valarie,brianna,rosalyn,earline,catalina,ava,mia,clarissa,lidia,corrine,alexandria,concepcion,tia,sharron,rae,dona,ericka,jami,elnora,chandra,lenore,neva,marylou,melisa,tabatha,serena,avis,allie,sofia,jeanie,odessa,nannie,harriett,loraine,penelope,milagros,emilia,benita,allyson,ashlee,tania,esmeralda,eve,pearlie,zelma,malinda,noreen,tameka,saundra,hillary,amie,althea,rosalinda,lilia,alana,clare,alejandra,elinor,lorrie,jerri,darcy,earnestine,carmella,noemi,marcie,liza,annabelle,louisa,earlene,mallory,carlene,nita,selena,tanisha,katy,julianne,lakisha,edwina,maricela,margery,kenya,dollie,roxie,roslyn,kathrine,nanette,charmaine,lavonne,ilene,tammi,suzette,corine,kaye,chrystal,lina,deanne,lilian,juliana,aline,luann,kasey,maryanne,evangeline,colette,melva,lawanda,yesenia,nadia,madge,kathie,ophelia,valeria,nona,mitzi,mari,georgette,claudine,fran,alissa,roseann,lakeisha,susanna,reva,deidre,chasity,sheree,elvia,alyce,deirdre,gena,briana,araceli,katelyn,rosanne,wendi,tessa,berta,marva,imelda,marietta,marci,leonor,arline,sasha,madelyn,janna,juliette,deena,aurelia,josefa,augusta,liliana,lessie,amalia,savannah,anastasia,vilma,natalia,rosella,lynnette,corina,alfreda,leanna,amparo,coleen,tamra,aisha,wilda,karyn,maura,mai,evangelina,rosanna,hallie,erna,enid,mariana,lacy,juliet,jacklyn,freida,madeleine,mara,cathryn,lelia,casandra,bridgett,angelita,jannie,dionne,annmarie,katina,beryl,millicent,katheryn,diann,carissa,maryellen,liz,lauri,helga,gilda,rhea,marquita,hollie,tisha,tamera,angelique,francesca,kaitlin,lolita,florine,rowena,reyna,twila,fanny,janell,ines,concetta,bertie,alba,brigitte,alyson,vonda,pansy,elba,noelle,letitia,deann,brandie,louella,leta,felecia,sharlene,lesa,beverley,isabella,herminia,terra,celina,tori,octavia,jade,denice,germaine,michell,cortney,nelly,doretha,deidra,monika,lashonda,judi,chelsey,antionette,margot,adelaide,leeann,elisha,dessie,libby,kathi,gayla,latanya,mina,mellisa,kimberlee,jasmin,renae,zelda,elda,justina,gussie,emilie,camilla,abbie,rocio,kaitlyn,edythe,ashleigh,selina,lakesha,geri,allene,pamala,michaela,dayna,caryn,rosalia,jacquline,rebeca,marybeth,krystle,iola,dottie,belle,griselda,ernestina,elida,adrianne,demetria,delma,jaqueline,arleen,virgina,retha,fatima,tillie,eleanore,cari,treva,wilhelmina,rosalee,maurine,latrice,jena,taryn,elia,debby,maudie,jeanna,delilah,catrina,shonda,hortencia,theodora,teresita,robbin,danette,delphine,brianne,nilda,danna,cindi,bess,iona,winona,vida,rosita,marianna,racheal,guillermina,eloisa,celestine,caren,malissa,lona,chantel,shellie,marisela,leora,agatha,soledad,migdalia,ivette,christen,athena,janel,veda,pattie,tessie,tera,marilynn,lucretia,karrie,dinah,daniela,alecia,adelina,vernice,shiela,portia,merry,lashawn,dara,tawana,verda,alene,zella,sandi,rafaela,maya,kira,candida,alvina,suzan,shayla,lettie,samatha,oralia,matilde,larissa,vesta,renita,delois,shanda,phillis,lorri,erlinda,cathrine,barb,isabell,ione,gisela,roxanna,mayme,kisha,ellie,mellissa,dorris,dalia,bella,annetta,zoila,reta,reina,lauretta,kylie,christal,pilar,charla,elissa,tiffani,tana,paulina,leota,breanna,jayme,carmel,vernell,tomasa,mandi,dominga,santa,melodie,lura,alexa,tamela,mirna,kerrie,venus,felicita,cristy,carmelita,berniece,annemarie,tiara,roseanne,missy,cori,roxana,pricilla,kristal,jung,elyse,haydee,aletha,bettina,marge,gillian,filomena,zenaida,harriette,caridad,vada,aretha,pearline,marjory,marcela,flor,evette,elouise,alina,damaris,catharine,belva,nakia,marlena,luanne,lorine,karon,dorene,danita,brenna,tatiana,louann,julianna,andria,philomena,lucila,leonora,dovie,romona,mimi,jacquelin,gaye,tonja,misti,chastity,stacia,roxann,micaela,velda,marlys,johnna,aura,ivonne,hayley,nicki,majorie,herlinda,yadira,perla,gregoria,antonette,shelli,mozelle,mariah,joelle,cordelia,josette,chiquita,trista,laquita,georgiana,candi,shanon,hildegard,stephany,magda,karol,gabriella,tiana,roma,richelle,oleta,jacque,idella,alaina,suzanna,jovita,tosha,nereida,marlyn,kyla,delfina,tena,stephenie,sabina,nathalie,marcelle,gertie,darleen,thea,sharonda,shantel,belen,venessa,rosalina,genoveva,clementine,rosalba,renate,renata,georgianna,floy,dorcas,ariana,tyra,theda,mariam,juli,jesica,vikki,verla,roselyn,melvina,jannette,ginny,debrah,corrie,violeta,myrtis,latricia,collette,charleen,anissa,viviana,twyla,nedra,latonia,hellen,fabiola,annamarie,adell,sharyn,chantal,niki,maud,lizette,lindy,kesha,jeana,danelle,charline,chanel,valorie,dortha,cristal,sunny,leone,leilani,gerri,debi,andra,keshia,eulalia,easter,dulce,natividad,linnie,kami,georgie,catina,brook,alda,winnifred,sharla,ruthann,meaghan,magdalene,lissette,adelaida,venita,trena,shirlene,shameka,elizebeth,dian,shanta,latosha,carlotta,windy,rosina,mariann,leisa,jonnie,dawna,cathie,astrid,laureen,janeen,holli,fawn,vickey,teressa,shante,rubye,marcelina,chanda,terese,scarlett,marnie,lulu,lisette,jeniffer,elenor,dorinda,donita,carman,bernita,altagracia,aleta,adrianna,zoraida,lyndsey,janina,starla,phylis,phuong,kyra,charisse,blanch,sanjuanita,rona,nanci,marilee,maranda,brigette,sanjuana,marita,kassandra,joycelyn,felipa,chelsie,bonny,mireya,lorenza,kyong,ileana,candelaria,sherie,lucie,leatrice,lakeshia,gerda,edie,bambi,marylin,lavon,hortense,garnet,evie,tressa,shayna,lavina,kyung,jeanetta,sherrill,shara,phyliss,mittie,anabel,alesia,thuy,tawanda,joanie,tiffanie,lashanda,karissa,enriqueta,daria,daniella,corinna,alanna,abbey,roxane,roseanna,magnolia,lida,joellen,coral,carleen,tresa,peggie,novella,nila,maybelle,jenelle,carina,nova,melina,marquerite,margarette,josephina,evonne,cinthia,albina,toya,tawnya,sherita,myriam,lizabeth,lise,keely,jenni,giselle,cheryle,ardith,ardis,alesha,adriane,shaina,linnea,karolyn,felisha,dori,darci,artie,armida,zola,xiomara,vergie,shamika,nena,nannette,maxie,lovie,jeane,jaimie,inge,farrah,elaina,caitlyn,felicitas,cherly,caryl,yolonda,yasmin,teena,prudence,pennie,nydia,mackenzie,orpha,marvel,lizbeth,laurette,jerrie,hermelinda,carolee,tierra,mirian,meta,melony,kori,jennette,jamila,yoshiko,susannah,salina,rhiannon,joleen,cristine,ashton,aracely,tomeka,shalonda,marti,lacie,kala,jada,ilse,hailey,brittani,zona,syble,sherryl,nidia,marlo,kandice,kandi,alycia,ronna,norene,mercy,ingeborg,giovanna,gemma,christel,audry,zora,vita,trish,stephaine,shirlee,shanika,melonie,mazie,jazmin,inga,hettie,geralyn,fonda,estrella,adella,sarita,rina,milissa,maribeth,golda,evon,ethelyn,enedina,cherise,chana,velva,tawanna,sade,mirta,karie,jacinta,elna,davina,cierra,ashlie,albertha,tanesha,nelle,mindi,lorinda,larue,florene,demetra,dedra,ciara,chantelle,ashly,suzy,rosalva,noelia,lyda,leatha,krystyna,kristan,karri,darline,darcie,cinda,cherrie,awilda,almeda,rolanda,lanette,jerilyn,gisele,evalyn,cyndi,cleta,carin,zina,zena,velia,tanika,charissa,talia,margarete,lavonda,kaylee,kathlene,jonna,irena,ilona,idalia,candis,candance,brandee,anitra,alida,sigrid,nicolette,maryjo,linette,hedwig,christiana,alexia,tressie,modesta,lupita,lita,gladis,evelia,davida,cherri,cecily,ashely,annabel,agustina,wanita,shirly,rosaura,hulda,yetta,verona,thomasina,sibyl,shannan,mechelle,leandra,lani,kylee,kandy,jolynn,ferne,eboni,corene,alysia,zula,nada,moira,lyndsay,lorretta,jammie,hortensia,gaynell,adria,vina,vicenta,tangela,stephine,norine,nella,liana,leslee,kimberely,iliana,glory,felica,emogene,elfriede,eden,eartha,carma,ocie,lennie,kiara,jacalyn,carlota,arielle,otilia,kirstin,kacey,johnetta,joetta,jeraldine,jaunita,elana,dorthea,cami,amada,adelia,vernita,tamar,siobhan,renea,rashida,ouida,nilsa,meryl,kristyn,julieta,danica,breanne,aurea,anglea,sherron,odette,malia,lorelei,leesa,kenna,kathlyn,fiona,charlette,suzie,shantell,sabra,racquel,myong,mira,martine,lucienne,lavada,juliann,elvera,delphia,christiane,charolette,carri,asha,angella,paola,ninfa,leda,stefani,shanell,palma,machelle,lissa,kecia,kathryne,karlene,julissa,jettie,jenniffer,corrina,carolann,alena,rosaria,myrtice,marylee,liane,kenyatta,judie,janey,elmira,eldora,denna,cristi,cathi,zaida,vonnie,viva,vernie,rosaline,mariela,luciana,lesli,karan,felice,deneen,adina,wynona,tarsha,sheron,shanita,shani,shandra,randa,pinkie,nelida,marilou,lyla,laurene,laci,janene,dorotha,daniele,dani,carolynn,carlyn,berenice,ayesha,anneliese,alethea,thersa,tamiko,rufina,oliva,mozell,marylyn,kristian,kathyrn,kasandra,kandace,janae,domenica,debbra,dannielle,chun,arcelia,zenobia,sharen,sharee,lavinia,kacie,jackeline,huong,felisa,emelia,eleanora,cythia,cristin,claribel,anastacia,zulma,zandra,yoko,tenisha,susann,sherilyn,shay,shawanda,romana,mathilda,linsey,keiko,joana,isela,gretta,georgetta,eugenie,desirae,delora,corazon,antonina,anika,willene,tracee,tamatha,nichelle,mickie,maegan,luana,lanita,kelsie,edelmira,bree,afton,teodora,tamie,shena,linh,keli,kaci,danyelle,arlette,albertine,adelle,tiffiny,simona,nicolasa,nichol,nakisha,maira,loreen,kizzy,fallon,christene,bobbye,ying,vincenza,tanja,rubie,roni,queenie,margarett,kimberli,irmgard,idell,hilma,evelina,esta,emilee,dennise,dania,carie,risa,rikki,particia,masako,luvenia,loree,loni,lien,gigi,florencia,denita,billye,tomika,sharita,rana,nikole,neoma,margarite,madalyn,lucina,laila,kali,jenette,gabriele,evelyne,elenora,clementina,alejandrina,zulema,violette,vannessa,thresa,retta,patience,noella,nickie,jonell,chaya,camelia,bethel,anya,suzann,mila,lilla,laverna,keesha,kattie,georgene,eveline,estell,elizbeth,vivienne,vallie,trudie,stephane,magaly,madie,kenyetta,karren,janetta,hermine,drucilla,debbi,celestina,candie,britni,beckie,amina,zita,yolande,vivien,vernetta,trudi,pearle,patrina,ossie,nicolle,loyce,letty,katharina,joselyn,jonelle,jenell,iesha,heide,florinda,florentina,elodia,dorine,brunilda,brigid,ashli,ardella,twana,tarah,shavon,serina,rayna,ramonita,margurite,lucrecia,kourtney,kati,jesenia,crista,ayana,alica,alia,vinnie,suellen,romelia,rachell,olympia,michiko,kathaleen,jolie,jessi,janessa,hana,elease,carletta,britany,shona,salome,rosamond,regena,raina,ngoc,nelia,louvenia,lesia,latrina,laticia,larhonda,jina,jacki,emmy,deeann,coretta,arnetta,thalia,shanice,neta,mikki,micki,lonna,leana,lashunda,kiley,joye,jacqulyn,ignacia,hyun,hiroko,henriette,elayne,delinda,dahlia,coreen,consuela,conchita,babette,ayanna,anette,albertina,shawnee,shaneka,quiana,pamelia,merri,merlene,margit,kiesha,kiera,kaylene,jodee,jenise,erlene,emmie,dalila,daisey,casie,belia,babara,versie,vanesa,shelba,shawnda,nikia,naoma,marna,margeret,madaline,lawana,kindra,jutta,jazmine,janett,hannelore,glendora,gertrud,garnett,freeda,frederica,florance,flavia,carline,beverlee,anjanette,valda,tamala,shonna,sarina,oneida,merilyn,marleen,lurline,lenna,katherin,jeni,gracia,glady,farah,enola,dominque,devona,delana,cecila,caprice,alysha,alethia,vena,theresia,tawny,shakira,samara,sachiko,rachele,pamella,marni,mariel,maren,malisa,ligia,lera,latoria,larae,kimber,kathern,karey,jennefer,janeth,halina,fredia,delisa,debroah,ciera,angelika,andree,altha,vivan,terresa,tanna,sudie,signe,salena,ronni,rebbecca,myrtie,malika,maida,leonarda,kayleigh,ethyl,ellyn,dayle,cammie,brittni,birgit,avelina,asuncion,arianna,akiko,venice,tyesha,tonie,tiesha,takisha,steffanie,sindy,meghann,manda,macie,kellye,kellee,joslyn,inger,indira,glinda,glennis,fernanda,faustina,eneida,elicia,digna,dell,arletta,willia,tammara,tabetha,sherrell,sari,rebbeca,pauletta,natosha,nakita,mammie,kenisha,kazuko,kassie,earlean,daphine,corliss,clotilde,carolyne,bernetta,augustina,audrea,annis,annabell,tennille,tamica,selene,rosana,regenia,qiana,markita,macy,leeanne,laurine,jessenia,janita,georgine,genie,emiko,elvie,deandra,dagmar,corie,collen,cherish,romaine,porsha,pearlene,micheline,merna,margorie,margaretta,lore,jenine,hermina,fredericka,elke,drusilla,dorathy,dione,celena,brigida,allegra,tamekia,synthia,sook,slyvia,rosann,reatha,raye,marquetta,margart,ling,layla,kymberly,kiana,kayleen,katlyn,karmen,joella,emelda,eleni,detra,clemmie,cheryll,chantell,cathey,arnita,arla,angle,angelic,alyse,zofia,thomasine,tennie,sherly,sherley,sharyl,remedios,petrina,nickole,myung,myrle,mozella,louanne,lisha,latia,krysta,julienne,jeanene,jacqualine,isaura,gwenda,earleen,cleopatra,carlie,audie,antonietta,alise,verdell,tomoko,thao,talisha,shemika,savanna,santina,rosia,raeann,odilia,nana,minna,magan,lynelle,karma,joeann,ivana,inell,ilana,gudrun,dreama,crissy,chante,carmelina,arvilla,annamae,alvera,aleida,yanira,vanda,tianna,stefania,shira,nicol,nancie,monserrate,melynda,melany,lovella,laure,kacy,jacquelynn,hyon,gertha,eliana,christena,christeen,charise,caterina,carley,candyce,arlena,ammie,willette,vanita,tuyet,syreeta,penney,nyla,maryam,marya,magen,ludie,loma,livia,lanell,kimberlie,julee,donetta,diedra,denisha,deane,dawne,clarine,cherryl,bronwyn,alla,valery,tonda,sueann,soraya,shoshana,shela,sharleen,shanelle,nerissa,meridith,mellie,maye,maple,magaret,lili,leonila,leonie,leeanna,lavonia,lavera,kristel,kathey,kathe,jann,ilda,hildred,hildegarde,genia,fumiko,evelin,ermelinda,elly,dung,doloris,dionna,danae,berneice,annice,alix,verena,verdie,shawnna,shawana,shaunna,rozella,randee,ranae,milagro,lynell,luise,loida,lisbeth,karleen,junita,jona,isis,hyacinth,hedy,gwenn,ethelene,erline,donya,domonique,delicia,dannette,cicely,branda,blythe,bethann,ashlyn,annalee,alline,yuko,vella,trang,towanda,tesha,sherlyn,narcisa,miguelina,meri,maybell,marlana,marguerita,madlyn,lory,loriann,leonore,leighann,laurice,latesha,laronda,katrice,kasie,kaley,jadwiga,glennie,gearldine,francina,epifania,dyan,dorie,diedre,denese,demetrice,delena,cristie,cleora,catarina,carisa,barbera,almeta,trula,tereasa,solange,sheilah,shavonne,sanora,rochell,mathilde,margareta,maia,lynsey,lawanna,launa,kena,keena,katia,glynda,gaylene,elvina,elanor,danuta,danika,cristen,cordie,coletta,clarita,carmon,brynn,azucena,aundrea,angele,verlie,verlene,tamesha,silvana,sebrina,samira,reda,raylene,penni,norah,noma,mireille,melissia,maryalice,laraine,kimbery,karyl,karine,jolanda,johana,jesusa,jaleesa,jacquelyne,iluminada,hilaria,hanh,gennie,francie,floretta,exie,edda,drema,delpha,barbar,assunta,ardell,annalisa,alisia,yukiko,yolando,wonda,waltraud,veta,temeka,tameika,shirleen,shenita,piedad,ozella,mirtha,marilu,kimiko,juliane,jenice,janay,jacquiline,hilde,elois,echo,devorah,chau,brinda,betsey,arminda,aracelis,apryl,annett,alishia,veola,usha,toshiko,theola,tashia,talitha,shery,renetta,reiko,rasheeda,obdulia,mika,melaine,meggan,marlen,marget,marceline,mana,magdalen,librada,lezlie,latashia,lasandra,kelle,isidra,inocencia,gwyn,francoise,erminia,erinn,dimple,devora,criselda,armanda,arie,ariane,angelena,aliza,adriene,adaline,xochitl,twanna,tomiko,tamisha,taisha,susy,rutha,rhona,noriko,natashia,merrie,marinda,mariko,margert,loris,lizzette,leisha,kaila,joannie,jerrica,jene,jannet,janee,jacinda,herta,elenore,doretta,delaine,daniell,claudie,britta,apolonia,amberly,alease,yuri,waneta,tomi,sharri,sandie,roselle,reynalda,raguel,phylicia,patria,olimpia,odelia,mitzie,minda,mignon,mica,mendy,marivel,maile,lynetta,lavette,lauryn,latrisha,lakiesha,kiersten,kary,josphine,jolyn,jetta,janise,jacquie,ivelisse,glynis,gianna,gaynelle,danyell,danille,dacia,coralee,cher,ceola,arianne,aleshia,yung,williemae,trinh,thora,sherika,shemeka,shaunda,roseline,ricki,melda,mallie,lavonna,latina,laquanda,lala,lachelle,klara,kandis,johna,jeanmarie,jaye,grayce,gertude,emerita,ebonie,clorinda,ching,chery,carola,breann,blossom,bernardine,becki,arletha,argelia,alita,yulanda,yessenia,tobi,tasia,sylvie,shirl,shirely,shella,shantelle,sacha,rebecka,providencia,paulene,misha,miki,marline,marica,lorita,latoyia,lasonya,kerstin,kenda,keitha,kathrin,jaymie,gricelda,ginette,eryn,elina,elfrieda,danyel,cheree,chanelle,barrie,aurore,annamaria,alleen,ailene,aide,yasmine,vashti,treasa,tiffaney,sheryll,sharie,shanae,raisa,neda,mitsuko,mirella,milda,maryanna,maragret,mabelle,luetta,lorina,letisha,latarsha,lanelle,lajuana,krissy,karly,karena,jessika,jerica,jeanelle,jalisa,jacelyn,izola,euna,etha,domitila,dominica,daina,creola,carli,camie,brittny,ashanti,anisha,aleen,adah,yasuko,valrie,tona,tinisha,terisa,taneka,simonne,shalanda,serita,ressie,refugia,olene,margherita,mandie,maire,lyndia,luci,lorriane,loreta,leonia,lavona,lashawnda,lakia,kyoko,krystina,krysten,kenia,kelsi,jeanice,isobel,georgiann,genny,felicidad,eilene,deloise,deedee,conception,clora,cherilyn,calandra,armandina,anisa,tiera,theressa,stephania,sima,shyla,shonta,shera,shaquita,shala,rossana,nohemi,nery,moriah,melita,melida,melani,marylynn,marisha,mariette,malorie,madelene,ludivina,loria,lorette,loralee,lianne,lavenia,laurinda,lashon,kimi,keila,katelynn,jone,joane,jayna,janella,hertha,francene,elinore,despina,delsie,deedra,clemencia,carolin,bulah,brittanie,blondell,bibi,beaulah,beata,annita,agripina,virgen,valene,twanda,tommye,tarra,tari,tammera,shakia,sadye,ruthanne,rochel,rivka,pura,nenita,natisha,ming,merrilee,melodee,marvis,lucilla,leena,laveta,larita,lanie,keren,ileen,georgeann,genna,frida,eufemia,emely,edyth,deonna,deadra,darlena,chanell,cathern,cassondra,cassaundra,bernarda,berna,arlinda,anamaria,vertie,valeri,torri,stasia,sherise,sherill,sanda,ruthe,rosy,robbi,ranee,quyen,pearly,palmira,onita,nisha,niesha,nida,merlyn,mayola,marylouise,marth,margene,madelaine,londa,leontine,leoma,leia,lauralee,lanora,lakita,kiyoko,keturah,katelin,kareen,jonie,johnette,jenee,jeanett,izetta,hiedi,heike,hassie,giuseppina,georgann,fidela,fernande,elwanda,ellamae,eliz,dusti,dotty,cyndy,coralie,celesta,alverta,xenia,wava,vanetta,torrie,tashina,tandy,tambra,tama,stepanie,shila,shaunta,sharan,shaniqua,shae,setsuko,serafina,sandee,rosamaria,priscila,olinda,nadene,muoi,michelina,mercedez,maryrose,marcene,magali,mafalda,lannie,kayce,karoline,kamilah,kamala,justa,joline,jennine,jacquetta,iraida,georgeanna,franchesca,emeline,elane,ehtel,earlie,dulcie,dalene,classie,chere,charis,caroyln,carmina,carita,bethanie,ayako,arica,alysa,alessandra,akilah,adrien,zetta,youlanda,yelena,yahaira,xuan,wendolyn,tijuana,terina,teresia,suzi,sherell,shavonda,shaunte,sharda,shakita,sena,ryann,rubi,riva,reginia,rachal,parthenia,pamula,monnie,monet,michaele,melia,malka,maisha,lisandra,lekisha,lean,lakendra,krystin,kortney,kizzie,kittie,kera,kendal,kemberly,kanisha,julene,jule,johanne,jamee,halley,gidget,fredricka,fleta,fatimah,eusebia,elza,eleonore,dorthey,doria,donella,dinorah,delorse,claretha,christinia,charlyn,bong,belkis,azzie,andera,aiko,adena,yajaira,vania,ulrike,toshia,tifany,stefany,shizue,shenika,shawanna,sharolyn,sharilyn,shaquana,shantay,rozanne,roselee,remona,reanna,raelene,phung,petronila,natacha,nancey,myrl,miyoko,miesha,merideth,marvella,marquitta,marhta,marchelle,lizeth,libbie,lahoma,ladawn,kina,katheleen,katharyn,karisa,kaleigh,junie,julieann,johnsie,janean,jaimee,jackqueline,hisako,herma,helaine,gwyneth,gita,eustolia,emelina,elin,edris,donnette,donnetta,dierdre,denae,darcel,clarisa,cinderella,chia,charlesetta,charita,celsa,cassy,cassi,carlee,bruna,brittaney,brande,billi,antonetta,angla,angelyn,analisa,alane,wenona,wendie,veronique,vannesa,tobie,tempie,sumiko,sulema,somer,sheba,sharice,shanel,shalon,rosio,roselia,renay,rema,reena,ozie,oretha,oralee,ngan,nakesha,milly,marybelle,margrett,maragaret,manie,lurlene,lillia,lieselotte,lavelle,lashaunda,lakeesha,kaycee,kalyn,joya,joette,jenae,janiece,illa,grisel,glayds,genevie,gala,fredda,eleonor,debera,deandrea,corrinne,cordia,contessa,colene,cleotilde,chantay,cecille,beatris,azalee,arlean,ardath,anjelica,anja,alfredia,aleisha,zada,yuonne,xiao,willodean,vennie,vanna,tyisha,tova,torie,tonisha,tilda,tien,sirena,sherril,shanti,shan,senaida,samella,robbyn,renda,reita,phebe,paulita,nobuko,nguyet,neomi,mikaela,melania,maximina,marg,maisie,lynna,lilli,lashaun,lakenya,lael,kirstie,kathline,kasha,karlyn,karima,jovan,josefine,jennell,jacqui,jackelyn,hien,grazyna,florrie,floria,eleonora,dwana,dorla,delmy,deja,dede,dann,crysta,clelia,claris,chieko,cherlyn,cherelle,charmain,chara,cammy,arnette,ardelle,annika,amiee,amee,allena,yvone,yuki,yoshie,yevette,yael,willetta,voncile,venetta,tula,tonette,timika,temika,telma,teisha,taren,stacee,shawnta,saturnina,ricarda,pasty,onie,nubia,marielle,mariella,marianela,mardell,luanna,loise,lisabeth,lindsy,lilliana,lilliam,lelah,leigha,leanora,kristeen,khalilah,keeley,kandra,junko,joaquina,jerlene,jani,jamika,hsiu,hermila,genevive,evia,eugena,emmaline,elfreda,elene,donette,delcie,deeanna,darcey,clarinda,cira,chae,celinda,catheryn,casimira,carmelia,camellia,breana,bobette,bernardina,bebe,basilia,arlyne,amal,alayna,zonia,zenia,yuriko,yaeko,wynell,willena,vernia,tora,terrilyn,terica,tenesha,tawna,tajuana,taina,stephnie,sona,sina,shondra,shizuko,sherlene,sherice,sharika,rossie,rosena,rima,rheba,renna,natalya,nancee,melodi,meda,matha,marketta,maricruz,marcelene,malvina,luba,louetta,leida,lecia,lauran,lashawna,laine,khadijah,katerine,kasi,kallie,julietta,jesusita,jestine,jessia,jeffie,janyce,isadora,georgianne,fidelia,evita,eura,eulah,estefana,elsy,eladia,dodie,denisse,deloras,delila,daysi,crystle,concha,claretta,charlsie,charlena,carylon,bettyann,asley,ashlea,amira,agueda,agnus,yuette,vinita,victorina,tynisha,treena,toccara,tish,thomasena,tegan,soila,shenna,sharmaine,shantae,shandi,saran,sarai,sana,rosette,rolande,regine,otelia,olevia,nicholle,necole,naida,myrta,myesha,mitsue,minta,mertie,margy,mahalia,madalene,loura,lorean,lesha,leonida,lenita,lavone,lashell,lashandra,lamonica,kimbra,katherina,karry,kanesha,jong,jeneva,jaquelyn,gilma,ghislaine,gertrudis,fransisca,fermina,ettie,etsuko,ellan,elidia,edra,dorethea,doreatha,denyse,deetta,daine,cyrstal,corrin,cayla,carlita,camila,burma,bula,buena,barabara,avril,alaine,zana,wilhemina,wanetta,verline,vasiliki,tonita,tisa,teofila,tayna,taunya,tandra,takako,sunni,suanne,sixta,sharell,seema,rosenda,robena,raymonde,pamila,ozell,neida,mistie,micha,merissa,maurita,maryln,maryetta,marcell,malena,makeda,lovetta,lourie,lorrine,lorilee,laurena,lashay,larraine,laree,lacresha,kristle,keva,keira,karole,joie,jinny,jeannetta,jama,heidy,gilberte,gema,faviola,evelynn,enda,elli,ellena,divina,dagny,collene,codi,cindie,chassidy,chasidy,catrice,catherina,cassey,caroll,carlena,candra,calista,bryanna,britteny,beula,bari,audrie,audria,ardelia,annelle,angila,alona,allyn".split(","),surnames:"smith,johnson,williams,jones,brown,davis,miller,wilson,moore,taylor,anderson,jackson,white,harris,martin,thompson,garcia,martinez,robinson,clark,rodriguez,lewis,lee,walker,hall,allen,young,hernandez,king,wright,lopez,hill,green,adams,baker,gonzalez,nelson,carter,mitchell,perez,roberts,turner,phillips,campbell,parker,evans,edwards,collins,stewart,sanchez,morris,rogers,reed,cook,morgan,bell,murphy,bailey,rivera,cooper,richardson,cox,howard,ward,torres,peterson,gray,ramirez,watson,brooks,sanders,price,bennett,wood,barnes,ross,henderson,coleman,jenkins,perry,powell,long,patterson,hughes,flores,washington,butler,simmons,foster,gonzales,bryant,alexander,griffin,diaz,hayes,myers,ford,hamilton,graham,sullivan,wallace,woods,cole,west,owens,reynolds,fisher,ellis,harrison,gibson,mcdonald,cruz,marshall,ortiz,gomez,murray,freeman,wells,webb,simpson,stevens,tucker,porter,hicks,crawford,boyd,mason,morales,kennedy,warren,dixon,ramos,reyes,burns,gordon,shaw,holmes,rice,robertson,hunt,black,daniels,palmer,mills,nichols,grant,knight,ferguson,stone,hawkins,dunn,perkins,hudson,spencer,gardner,stephens,payne,pierce,berry,matthews,arnold,wagner,willis,watkins,olson,carroll,duncan,snyder,hart,cunningham,lane,andrews,ruiz,harper,fox,riley,armstrong,carpenter,weaver,greene,elliott,chavez,sims,peters,kelley,franklin,lawson,fields,gutierrez,schmidt,carr,vasquez,castillo,wheeler,chapman,montgomery,richards,williamson,johnston,banks,meyer,bishop,mccoy,howell,alvarez,morrison,hansen,fernandez,garza,harvey,burton,nguyen,jacobs,reid,fuller,lynch,garrett,romero,welch,larson,frazier,burke,hanson,mendoza,moreno,bowman,medina,fowler,brewer,hoffman,carlson,silva,pearson,holland,fleming,jensen,vargas,byrd,davidson,hopkins,herrera,wade,soto,walters,neal,caldwell,lowe,jennings,barnett,graves,jimenez,horton,shelton,barrett,obrien,castro,sutton,mckinney,lucas,miles,rodriquez,chambers,holt,lambert,fletcher,watts,bates,hale,rhodes,pena,beck,newman,haynes,mcdaniel,mendez,bush,vaughn,parks,dawson,santiago,norris,hardy,steele,curry,powers,schultz,barker,guzman,page,munoz,ball,keller,chandler,weber,walsh,lyons,ramsey,wolfe,schneider,mullins,benson,sharp,bowen,barber,cummings,hines,baldwin,griffith,valdez,hubbard,salazar,reeves,warner,stevenson,burgess,santos,tate,cross,garner,mann,mack,moss,thornton,mcgee,farmer,delgado,aguilar,vega,glover,manning,cohen,harmon,rodgers,robbins,newton,blair,higgins,ingram,reese,cannon,strickland,townsend,potter,goodwin,walton,rowe,hampton,ortega,patton,swanson,goodman,maldonado,yates,becker,erickson,hodges,rios,conner,adkins,webster,malone,hammond,flowers,cobb,moody,quinn,pope,osborne,mccarthy,guerrero,estrada,sandoval,gibbs,gross,fitzgerald,stokes,doyle,saunders,wise,colon,gill,alvarado,greer,padilla,waters,nunez,ballard,schwartz,mcbride,houston,christensen,klein,pratt,briggs,parsons,mclaughlin,zimmerman,buchanan,moran,copeland,pittman,brady,mccormick,holloway,brock,poole,logan,bass,marsh,drake,wong,jefferson,morton,abbott,sparks,norton,huff,massey,figueroa,carson,bowers,roberson,barton,tran,lamb,harrington,boone,cortez,clarke,mathis,singleton,wilkins,cain,underwood,hogan,mckenzie,collier,luna,phelps,mcguire,bridges,wilkerson,nash,summers,atkins,wilcox,pitts,conley,marquez,burnett,cochran,chase,davenport,hood,gates,ayala,sawyer,vazquez,dickerson,hodge,acosta,flynn,espinoza,nicholson,monroe,wolf,morrow,whitaker,oconnor,skinner,ware,molina,kirby,huffman,gilmore,dominguez,oneal,lang,combs,kramer,hancock,gallagher,gaines,shaffer,wiggins,mathews,mcclain,fischer,wall,melton,hensley,bond,dyer,grimes,contreras,wyatt,baxter,snow,mosley,shepherd,larsen,hoover,beasley,petersen,whitehead,meyers,garrison,shields,horn,savage,olsen,schroeder,hartman,woodard,mueller,kemp,deleon,booth,patel,calhoun,wiley,eaton,cline,navarro,harrell,humphrey,parrish,duran,hutchinson,hess,dorsey,bullock,robles,beard,dalton,avila,rich,blackwell,johns,blankenship,trevino,salinas,campos,pruitt,callahan,montoya,hardin,guerra,mcdowell,stafford,gallegos,henson,wilkinson,booker,merritt,atkinson,orr,decker,hobbs,tanner,knox,pacheco,stephenson,glass,rojas,serrano,marks,hickman,sweeney,strong,mcclure,conway,roth,maynard,farrell,lowery,hurst,nixon,weiss,trujillo,ellison,sloan,juarez,winters,mclean,boyer,villarreal,mccall,gentry,carrillo,ayers,lara,sexton,pace,hull,leblanc,browning,velasquez,leach,chang,sellers,herring,noble,foley,bartlett,mercado,landry,durham,walls,barr,mckee,bauer,rivers,bradshaw,pugh,velez,rush,estes,dodson,morse,sheppard,weeks,camacho,bean,barron,livingston,middleton,spears,branch,blevins,chen,kerr,mcconnell,hatfield,harding,solis,frost,giles,blackburn,pennington,woodward,finley,mcintosh,koch,mccullough,blanchard,rivas,brennan,mejia,kane,benton,buckley,valentine,maddox,russo,mcknight,buck,moon,mcmillan,crosby,berg,dotson,mays,roach,chan,richmond,meadows,faulkner,oneill,knapp,kline,ochoa,jacobson,gay,hendricks,horne,shepard,hebert,cardenas,mcintyre,waller,holman,donaldson,cantu,morin,gillespie,fuentes,tillman,bentley,peck,key,salas,rollins,gamble,dickson,santana,cabrera,cervantes,howe,hinton,hurley,spence,zamora,yang,mcneil,suarez,petty,gould,mcfarland,sampson,carver,bray,macdonald,stout,hester,melendez,dillon,farley,hopper,galloway,potts,joyner,stein,aguirre,osborn,mercer,bender,franco,rowland,sykes,pickett,sears,mayo,dunlap,hayden,wilder,mckay,coffey,mccarty,ewing,cooley,vaughan,bonner,cotton,holder,stark,ferrell,cantrell,fulton,lott,calderon,pollard,hooper,burch,mullen,fry,riddle,levy,duke,odonnell,britt,daugherty,berger,dillard,alston,frye,riggs,chaney,odom,duffy,fitzpatrick,valenzuela,mayer,alford,mcpherson,acevedo,barrera,cote,reilly,compton,mooney,mcgowan,craft,clemons,wynn,nielsen,baird,stanton,snider,rosales,bright,witt,hays,holden,rutledge,kinney,clements,castaneda,slater,hahn,burks,delaney,pate,lancaster,sharpe,whitfield,talley,macias,burris,ratliff,mccray,madden,kaufman,beach,goff,cash,bolton,mcfadden,levine,byers,kirkland,kidd,workman,carney,mcleod,holcomb,finch,sosa,haney,franks,sargent,nieves,downs,rasmussen,bird,hewitt,foreman,valencia,oneil,delacruz,vinson,dejesus,hyde,forbes,gilliam,guthrie,wooten,huber,barlow,boyle,mcmahon,buckner,rocha,puckett,langley,knowles,cooke,velazquez,whitley,vang,shea,rouse,hartley,mayfield,elder,rankin,hanna,cowan,lucero,arroyo,slaughter,haas,oconnell,minor,boucher,archer,boggs,dougherty,andersen,newell,crowe,wang,friedman,bland,swain,holley,pearce,childs,yarbrough,galvan,proctor,meeks,lozano,mora,rangel,bacon,villanueva,schaefer,rosado,helms,boyce,goss,stinson,ibarra,hutchins,covington,crowley,hatcher,mackey,bunch,womack,polk,dodd,childress,childers,villa,springer,mahoney,dailey,belcher,lockhart,griggs,costa,brandt,walden,moser,tatum,mccann,akers,lutz,pryor,orozco,mcallister,lugo,davies,shoemaker,rutherford,newsome,magee,chamberlain,blanton,simms,godfrey,flanagan,crum,cordova,escobar,downing,sinclair,donahue,krueger,mcginnis,gore,farris,webber,corbett,andrade,starr,lyon,yoder,hastings,mcgrath,spivey,krause,harden,crabtree,kirkpatrick,arrington,ritter,mcghee,bolden,maloney,gagnon,dunbar,ponce,pike,mayes,beatty,mobley,kimball,butts,montes,eldridge,braun,hamm,gibbons,moyer,manley,herron,plummer,elmore,cramer,rucker,pierson,fontenot,rubio,goldstein,elkins,wills,novak,hickey,worley,gorman,katz,dickinson,broussard,woodruff,crow,britton,nance,lehman,bingham,zuniga,whaley,shafer,coffman,steward,delarosa,neely,mata,davila,mccabe,kessler,hinkle,welsh,pagan,goldberg,goins,crouch,cuevas,quinones,mcdermott,hendrickson,samuels,denton,bergeron,ivey,locke,haines,snell,hoskins,byrne,arias,corbin,beltran,chappell,downey,dooley,tuttle,couch,payton,mcelroy,crockett,groves,cartwright,dickey,mcgill,dubois,muniz,tolbert,dempsey,cisneros,sewell,latham,vigil,tapia,rainey,norwood,stroud,meade,tipton,kuhn,hilliard,bonilla,teague,gunn,greenwood,correa,reece,pineda,phipps,frey,kaiser,ames,gunter,schmitt,milligan,espinosa,bowden,vickers,lowry,pritchard,costello,piper,mcclellan,lovell,sheehan,hatch,dobson,singh,jeffries,hollingsworth,sorensen,meza,fink,donnelly,burrell,tomlinson,colbert,billings,ritchie,helton,sutherland,peoples,mcqueen,thomason,givens,crocker,vogel,robison,dunham,coker,swartz,keys,ladner,richter,hargrove,edmonds,brantley,albright,murdock,boswell,muller,quintero,padgett,kenney,daly,connolly,inman,quintana,lund,barnard,villegas,simons,huggins,tidwell,sanderson,bullard,mcclendon,duarte,draper,marrero,dwyer,abrams,stover,goode,fraser,crews,bernal,godwin,conklin,mcneal,baca,esparza,crowder,bower,brewster,mcneill,rodrigues,leal,coates,raines,mccain,mccord,miner,holbrook,swift,dukes,carlisle,aldridge,ackerman,starks,ricks,holliday,ferris,hairston,sheffield,lange,fountain,doss,betts,kaplan,carmichael,bloom,ruffin,penn,kern,bowles,sizemore,larkin,dupree,seals,metcalf,hutchison,henley,farr,mccauley,hankins,gustafson,curran,waddell,ramey,cates,pollock,cummins,messer,heller,funk,cornett,palacios,galindo,cano,hathaway,pham,enriquez,salgado,pelletier,painter,wiseman,blount,feliciano,houser,doherty,mead,mcgraw,swan,capps,blanco,blackmon,thomson,mcmanus,burkett,gleason,dickens,cormier,voss,rushing,rosenberg,hurd,dumas,benitez,arellano,marin,caudill,bragg,jaramillo,huerta,gipson,colvin,biggs,vela,platt,cassidy,tompkins,mccollum,dolan,daley,crump,sneed,kilgore,grove,grimm,davison,brunson,prater,marcum,devine,dodge,stratton,rosas,choi,tripp,ledbetter,hightower,feldman,epps,yeager,posey,scruggs,cope,stubbs,richey,overton,trotter,sprague,cordero,butcher,stiles,burgos,woodson,horner,bassett,purcell,haskins,akins,ziegler,spaulding,hadley,grubbs,sumner,murillo,zavala,shook,lockwood,driscoll,dahl,thorpe,redmond,putnam,mcwilliams,mcrae,romano,joiner,sadler,hedrick,hager,hagen,fitch,coulter,thacker,mansfield,langston,guidry,ferreira,corley,conn,rossi,lackey,baez,saenz,mcnamara,mcmullen,mckenna,mcdonough,link,engel,browne,roper,peacock,eubanks,drummond,stringer,pritchett,parham,mims,landers,grayson,schafer,egan,timmons,ohara,keen,hamlin,finn,cortes,mcnair,nadeau,moseley,michaud,rosen,oakes,kurtz,jeffers,calloway,beal,bautista,winn,suggs,stern,stapleton,lyles,laird,montano,dawkins,hagan,goldman,bryson,barajas,lovett,segura,metz,lockett,langford,hinson,eastman,hooks,smallwood,shapiro,crowell,whalen,triplett,chatman,aldrich,cahill,youngblood,ybarra,stallings,sheets,reeder,connelly,bateman,abernathy,winkler,wilkes,masters,hackett,granger,gillis,schmitz,sapp,napier,souza,lanier,gomes,weir,otero,ledford,burroughs,babcock,ventura,siegel,dugan,bledsoe,atwood,wray,varner,spangler,anaya,staley,kraft,fournier,belanger,wolff,thorne,bynum,burnette,boykin,swenson,purvis,pina,khan,duvall,darby,xiong,kauffman,healy,engle,benoit,valle,steiner,spicer,shaver,randle,lundy,chin,calvert,staton,neff,kearney,darden,oakley,medeiros,mccracken,crenshaw,perdue,dill,whittaker,tobin,washburn,hogue,goodrich,easley,bravo,dennison,shipley,kerns,jorgensen,crain,villalobos,maurer,longoria,keene,coon,witherspoon,staples,pettit,kincaid,eason,madrid,echols,lusk,stahl,currie,thayer,shultz,mcnally,seay,maher,gagne,barrow,nava,moreland,honeycutt,hearn,diggs,caron,whitten,westbrook,stovall,ragland,munson,meier,looney,kimble,jolly,hobson,goddard,culver,burr,presley,negron,connell,tovar,huddleston,ashby,salter,root,pendleton,oleary,nickerson,myrick,judd,jacobsen,bain,adair,starnes,matos,busby,herndon,hanley,bellamy,doty,bartley,yazzie,rowell,parson,gifford,cullen,christiansen,benavides,barnhart,talbot,mock,crandall,connors,bonds,whitt,gage,bergman,arredondo,addison,lujan,dowdy,jernigan,huynh,bouchard,dutton,rhoades,ouellette,kiser,herrington,hare,blackman,babb,allred,rudd,paulson,ogden,koenig,geiger,begay,parra,lassiter,hawk,esposito,waldron,ransom,prather,chacon,vick,sands,roark,parr,mayberry,greenberg,coley,bruner,whitman,skaggs,shipman,leary,hutton,romo,medrano,ladd,kruse,askew,schulz,alfaro,tabor,mohr,gallo,bermudez,pereira,bliss,reaves,flint,comer,woodall,naquin,guevara,delong,carrier,pickens,tilley,schaffer,knutson,fenton,doran,vogt,vann,prescott,mclain,landis,corcoran,zapata,hyatt,hemphill,faulk,dove,boudreaux,aragon,whitlock,trejo,tackett,shearer,saldana,hanks,mckinnon,koehler,bourgeois,keyes,goodson,foote,lunsford,goldsmith,flood,winslow,sams,reagan,mccloud,hough,esquivel,naylor,loomis,coronado,ludwig,braswell,bearden,huang,fagan,ezell,edmondson,cronin,nunn,lemon,guillory,grier,dubose,traylor,ryder,dobbins,coyle,aponte,whitmore,smalls,rowan,malloy,cardona,braxton,borden,humphries,carrasco,ruff,metzger,huntley,hinojosa,finney,madsen,ernst,dozier,burkhart,bowser,peralta,daigle,whittington,sorenson,saucedo,roche,redding,fugate,avalos,waite,lind,huston,hawthorne,hamby,boyles,boles,regan,faust,crook,beam,barger,hinds,gallardo,willoughby,willingham,eckert,busch,zepeda,worthington,tinsley,hoff,hawley,carmona,varela,rector,newcomb,kinsey,dube,whatley,ragsdale,bernstein,becerra,yost,mattson,felder,cheek,handy,grossman,gauthier,escobedo,braden,beckman,mott,hillman,flaherty,dykes,stockton,stearns,lofton,coats,cavazos,beavers,barrios,tang,mosher,cardwell,coles,burnham,weller,lemons,beebe,aguilera,parnell,harman,couture,alley,schumacher,redd,dobbs,blum,blalock,merchant,ennis,denson,cottrell,brannon,bagley,aviles,watt,sousa,rosenthal,rooney,dietz,blank,paquette,mcclelland,duff,velasco,lentz,grubb,burrows,barbour,ulrich,shockley,rader,beyer,mixon,layton,altman,weathers,stoner,squires,shipp,priest,lipscomb,cutler,caballero,zimmer,willett,thurston,storey,medley,epperson,shah,mcmillian,baggett,torrez,hirsch,dent,poirier,peachey,farrar,creech,barth,trimble,dupre,albrecht,sample,lawler,crisp,conroy,wetzel,nesbitt,murry,jameson,wilhelm,patten,minton,matson,kimbrough,guinn,croft,toth,pulliam,nugent,newby,littlejohn,dias,canales,bernier,baron,singletary,renteria,pruett,mchugh,mabry,landrum,brower,stoddard,cagle,stjohn,scales,kohler,kellogg,hopson,gant,tharp,gann,zeigler,pringle,hammons,fairchild,deaton,chavis,carnes,rowley,matlock,kearns,irizarry,carrington,starkey,lopes,jarrell,craven,baum,littlefield,linn,humphreys,etheridge,cuellar,chastain,bundy,speer,skelton,quiroz,pyle,portillo,ponder,moulton,machado,killian,hutson,hitchcock,dowling,cloud,burdick,spann,pedersen,levin,leggett,hayward,dietrich,beaulieu,barksdale,wakefield,snowden,briscoe,bowie,berman,ogle,mcgregor,laughlin,helm,burden,wheatley,schreiber,pressley,parris,alaniz,agee,swann,snodgrass,schuster,radford,monk,mattingly,harp,girard,cheney,yancey,wagoner,ridley,lombardo,hudgins,gaskins,duckworth,coburn,willey,prado,newberry,magana,hammonds,elam,whipple,slade,serna,ojeda,liles,dorman,diehl,upton,reardon,michaels,goetz,eller,bauman,baer,layne,hummel,brenner,amaya,adamson,ornelas,dowell,cloutier,castellanos,wellman,saylor,orourke,moya,montalvo,kilpatrick,durbin,shell,oldham,kang,garvin,foss,branham,bartholomew,templeton,maguire,holton,rider,monahan,mccormack,beaty,anders,streeter,nieto,nielson,moffett,lankford,keating,heck,gatlin,delatorre,callaway,adcock,worrell,unger,robinette,nowak,jeter,brunner,steen,parrott,overstreet,nobles,montanez,clevenger,brinkley,trahan,quarles,pickering,pederson,jansen,grantham,gilchrist,crespo,aiken,schell,schaeffer,lorenz,leyva,harms,dyson,wallis,pease,leavitt,cheng,cavanaugh,batts,warden,seaman,rockwell,quezada,paxton,linder,houck,fontaine,durant,caruso,adler,pimentel,mize,lytle,cleary,cason,acker,switzer,isaacs,higginbotham,waterman,vandyke,stamper,sisk,shuler,riddick,mcmahan,levesque,hatton,bronson,bollinger,arnett,okeefe,gerber,gannon,farnsworth,baughman,silverman,satterfield,mccrary,kowalski,grigsby,greco,cabral,trout,rinehart,mahon,linton,gooden,curley,baugh,wyman,weiner,schwab,schuler,morrissey,mahan,bunn,thrasher,spear,waggoner,qualls,purdy,mcwhorter,mauldin,gilman,perryman,newsom,menard,martino,graf,billingsley,artis,simpkins,salisbury,quintanilla,gilliland,fraley,foust,crouse,scarborough,grissom,fultz,marlow,markham,madrigal,lawton,barfield,whiting,varney,schwarz,gooch,arce,wheat,truong,poulin,hurtado,selby,gaither,fortner,culpepper,coughlin,brinson,boudreau,bales,stepp,holm,schilling,morrell,kahn,heaton,gamez,causey,turpin,shanks,schrader,meek,isom,hardison,carranza,yanez,scroggins,schofield,runyon,ratcliff,murrell,moeller,irby,currier,butterfield,ralston,pullen,pinson,estep,carbone,hawks,ellington,casillas,spurlock,sikes,motley,mccartney,kruger,isbell,houle,burk,tomlin,quigley,neumann,lovelace,fennell,cheatham,bustamante,skidmore,hidalgo,forman,culp,bowens,betancourt,aquino,robb,milner,martel,gresham,wiles,ricketts,dowd,collazo,bostic,blakely,sherrod,kenyon,gandy,ebert,deloach,allard,sauer,robins,olivares,gillette,chestnut,bourque,paine,hite,hauser,devore,crawley,chapa,talbert,poindexter,meador,mcduffie,mattox,kraus,harkins,choate,wren,sledge,sanborn,kinder,geary,cornwell,barclay,abney,seward,rhoads,howland,fortier,benner,vines,tubbs,troutman,rapp,mccurdy,deluca,westmoreland,havens,guajardo,clary,seal,meehan,herzog,guillen,ashcraft,waugh,renner,milam,elrod,churchill,breaux,bolin,asher,windham,tirado,pemberton,nolen,noland,knott,emmons,cornish,christenson,brownlee,barbee,waldrop,pitt,olvera,lombardi,gruber,gaffney,eggleston,banda,archuleta,slone,prewitt,pfeiffer,nettles,mena,mcadams,henning,gardiner,cromwell,chisholm,burleson,vest,oglesby,mccarter,lumpkin,wofford,vanhorn,thorn,teel,swafford,stclair,stanfield,ocampo,herrmann,hannon,arsenault,roush,mcalister,hiatt,gunderson,forsythe,duggan,delvalle,cintron,wilks,weinstein,uribe,rizzo,noyes,mclendon,gurley,bethea,winstead,maples,guyton,giordano,alderman,valdes,polanco,pappas,lively,grogan,griffiths,bobo,arevalo,whitson,sowell,rendon,fernandes,farrow,benavidez,ayres,alicea,stump,smalley,seitz,schulte,gilley,gallant,canfield,wolford,omalley,mcnutt,mcnulty,mcgovern,hardman,harbin,cowart,chavarria,brink,beckett,bagwell,armstead,anglin,abreu,reynoso,krebs,jett,hoffmann,greenfield,forte,burney,broome,sisson,trammell,partridge,mace,lomax,lemieux,gossett,frantz,fogle,cooney,broughton,pence,paulsen,muncy,mcarthur,hollins,beauchamp,withers,osorio,mulligan,hoyle,dockery,cockrell,begley,amador,roby,rains,lindquist,gentile,everhart,bohannon,wylie,sommers,purnell,fortin,dunning,breeden,vail,phelan,phan,marx,cosby,colburn,boling,biddle,ledesma,gaddis,denney,chow,bueno,berrios,wicker,tolliver,thibodeaux,nagle,lavoie,fisk,crist,barbosa,reedy,locklear,kolb,himes,behrens,beckwith,weems,wahl,shorter,shackelford,rees,muse,cerda,valadez,thibodeau,saavedra,ridgeway,reiter,mchenry,majors,lachance,keaton,ferrara,clemens,blocker,applegate,needham,mojica,kuykendall,hamel,escamilla,doughty,burchett,ainsworth,vidal,upchurch,thigpen,strauss,spruill,sowers,riggins,ricker,mccombs,harlow,buffington,sotelo,olivas,negrete,morey,macon,logsdon,lapointe,bigelow,bello,westfall,stubblefield,lindley,hein,hawes,farrington,breen,birch,wilde,steed,sepulveda,reinhardt,proffitt,minter,messina,mcnabb,maier,keeler,gamboa,donohue,basham,shinn,crooks,cota,borders,bills,bachman,tisdale,tavares,schmid,pickard,gulley,fonseca,delossantos,condon,batista,wicks,wadsworth,martell,littleton,ison,haag,folsom,brumfield,broyles,brito,mireles,mcdonnell,leclair,hamblin,gough,fanning,binder,winfield,whitworth,soriano,palumbo,newkirk,mangum,hutcherson,comstock,carlin,beall,bair,wendt,watters,walling,putman,otoole,morley,mares,lemus,keener,hundley,dial,damico,billups,strother,mcfarlane,lamm,eaves,crutcher,caraballo,canty,atwell,taft,siler,rust,rawls,rawlings,prieto,mcneely,mcafee,hulsey,hackney,galvez,escalante,delagarza,crider,bandy,wilbanks,stowe,steinberg,renfro,masterson,massie,lanham,haskell,hamrick,dehart,burdette,branson,bourne,babin,aleman,worthy,tibbs,smoot,slack,paradis,mull,luce,houghton,gantt,furman,danner,christianson,burge,ashford,arndt,almeida,stallworth,shade,searcy,sager,noonan,mclemore,mcintire,maxey,lavigne,jobe,ferrer,falk,coffin,byrnes,aranda,apodaca,stamps,rounds,peek,olmstead,lewandowski,kaminski,dunaway,bruns,brackett,amato,reich,mcclung,lacroix,koontz,herrick,hardesty,flanders,cousins,cato,cade,vickery,shank,nagel,dupuis,croteau,cotter,stuckey,stine,porterfield,pauley,moffitt,knudsen,hardwick,goforth,dupont,blunt,barrows,barnhill,shull,rash,loftis,lemay,kitchens,horvath,grenier,fuchs,fairbanks,culbertson,calkins,burnside,beattie,ashworth,albertson,wertz,vaught,vallejo,turk,tuck,tijerina,sage,peterman,marroquin,marr,lantz,hoang,demarco,cone,berube,barnette,wharton,stinnett,slocum,scanlon,sander,pinto,mancuso,lima,headley,epstein,counts,clarkson,carnahan,boren,arteaga,adame,zook,whittle,whitehurst,wenzel,saxton,reddick,puente,handley,haggerty,earley,devlin,chaffin,cady,acuna,solano,sigler,pollack,pendergrass,ostrander,janes,francois,crutchfield,chamberlin,brubaker,baptiste,willson,reis,neeley,mullin,mercier,lira,layman,keeling,higdon,espinal,chapin,warfield,toledo,pulido,peebles,nagy,montague,mello,lear,jaeger,hogg,graff,furr,soliz,poore,mendenhall,mclaurin,maestas,gable,barraza,tillery,snead,pond,neill,mcculloch,mccorkle,lightfoot,hutchings,holloman,harness,dorn,bock,zielinski,turley,treadwell,stpierre,starling,somers,oswald,merrick,easterling,bivens,truitt,poston,parry,ontiveros,olivarez,moreau,medlin,lenz,knowlton,fairley,cobbs,chisolm,bannister,woodworth,toler,ocasio,noriega,neuman,moye,milburn,mcclanahan,lilley,hanes,flannery,dellinger,danielson,conti,blodgett,beers,weatherford,strain,karr,hitt,denham,custer,coble,clough,casteel,bolduc,batchelor,ammons,whitlow,tierney,staten,sibley,seifert,schubert,salcedo,mattison,laney,haggard,grooms,dees,cromer,cooks,colson,caswell,zarate,swisher,shin,ragan,pridgen,mcvey,matheny,lafleur,franz,ferraro,dugger,whiteside,rigsby,mcmurray,lehmann,jacoby,hildebrand,hendrick,headrick,goad,fincher,drury,borges,archibald,albers,woodcock,trapp,soares,seaton,monson,luckett,lindberg,kopp,keeton,healey,garvey,gaddy,fain,burchfield,wentworth,strand,stack,spooner,saucier,ricci,plunkett,pannell,ness,leger,freitas,fong,elizondo,duval,beaudoin,urbina,rickard,partin,mcgrew,mcclintock,ledoux,forsyth,faison,devries,bertrand,wasson,tilton,scarbrough,leung,irvine,garber,denning,corral,colley,castleberry,bowlin,bogan,beale,baines,trice,rayburn,parkinson,nunes,mcmillen,leahy,kimmel,higgs,fulmer,carden,bedford,taggart,spearman,prichard,morrill,koonce,heinz,hedges,guenther,grice,findley,dover,creighton,boothe,bayer,arreola,vitale,valles,raney,osgood,hanlon,burley,bounds,worden,weatherly,vetter,tanaka,stiltner,nevarez,mosby,montero,melancon,harter,hamer,goble,gladden,gist,ginn,akin,zaragoza,tarver,sammons,royster,oreilly,muir,morehead,luster,kingsley,kelso,grisham,glynn,baumann,alves,yount,tamayo,paterson,oates,menendez,longo,hargis,gillen,desantis,conover,breedlove,sumpter,scherer,rupp,reichert,heredia,creel,cohn,clemmons,casas,bickford,belton,bach,williford,whitcomb,tennant,sutter,stull,mccallum,langlois,keel,keegan,dangelo,dancy,damron,clapp,clanton,bankston,oliveira,mintz,mcinnis,martens,mabe,laster,jolley,hildreth,hefner,glaser,duckett,demers,brockman,blais,alcorn,agnew,toliver,tice,seeley,najera,musser,mcfall,laplante,galvin,fajardo,doan,coyne,copley,clawson,cheung,barone,wynne,woodley,tremblay,stoll,sparrow,sparkman,schweitzer,sasser,samples,roney,legg,heim,farias,colwell,christman,bratcher,winchester,upshaw,southerland,sorrell,sells,mccloskey,martindale,luttrell,loveless,lovejoy,linares,latimer,embry,coombs,bratton,bostick,venable,tuggle,toro,staggs,sandlin,jefferies,heckman,griffis,crayton,clem,browder,thorton,sturgill,sprouse,royer,rousseau,ridenour,pogue,perales,peeples,metzler,mesa,mccutcheon,mcbee,hornsby,heffner,corrigan,armijo,plante,peyton,paredes,macklin,hussey,hodgson,granados,frias,becnel,batten,almanza,turney,teal,sturgeon,meeker,mcdaniels,limon,keeney,hutto,holguin,gorham,fishman,fierro,blanchette,rodrigue,reddy,osburn,oden,lerma,kirkwood,keefer,haugen,hammett,chalmers,brinkman,baumgartner,zhang,valerio,tellez,steffen,shumate,sauls,ripley,kemper,guffey,evers,craddock,carvalho,blaylock,banuelos,balderas,wheaton,turnbull,shuman,pointer,mosier,mccue,ligon,kozlowski,johansen,ingle,herr,briones,snipes,rickman,pipkin,pantoja,orosco,moniz,lawless,kunkel,hibbard,galarza,enos,bussey,schott,salcido,perreault,mcdougal,mccool,haight,garris,easton,conyers,atherton,wimberly,utley,spellman,smithson,slagle,ritchey,rand,petit,osullivan,oaks,nutt,mcvay,mccreary,mayhew,knoll,jewett,harwood,cardoza,ashe,arriaga,zeller,wirth,whitmire,stauffer,rountree,redden,mccaffrey,martz,larose,langdon,humes,gaskin,faber,devito,cass,almond,wingfield,wingate,villareal,tyner,smothers,severson,reno,pennell,maupin,leighton,janssen,hassell,hallman,halcomb,folse,fitzsimmons,fahey,cranford,bolen,battles,battaglia,wooldridge,trask,rosser,regalado,mcewen,keefe,fuqua,echevarria,caro,boynton,andrus,viera,vanmeter,taber,spradlin,seibert,provost,prentice,oliphant,laporte,hwang,hatchett,hass,greiner,freedman,covert,chilton,byars,wiese,venegas,swank,shrader,roberge,mullis,mortensen,mccune,marlowe,kirchner,keck,isaacson,hostetler,halverson,gunther,griswold,fenner,durden,blackwood,ahrens,sawyers,savoy,nabors,mcswain,mackay,lavender,lash,labbe,jessup,fullerton,cruse,crittenden,correia,centeno,caudle,canady,callender,alarcon,ahern,winfrey,tribble,salley,roden,musgrove,minnick,fortenberry,carrion,bunting,batiste,whited,underhill,stillwell,rauch,pippin,perrin,messenger,mancini,lister,kinard,hartmann,fleck,wilt,treadway,thornhill,spalding,rafferty,pitre,patino,ordonez,linkous,kelleher,homan,galbraith,feeney,curtin,coward,camarillo,buss,bunnell,bolt,beeler,autry,alcala,witte,wentz,stidham,shively,nunley,meacham,martins,lemke,lefebvre,hynes,horowitz,hoppe,holcombe,dunne,derr,cochrane,brittain,bedard,beauregard,torrence,strunk,soria,simonson,shumaker,scoggins,oconner,moriarty,kuntz,ives,hutcheson,horan,hales,garmon,fitts,bohn,atchison,wisniewski,vanwinkle,sturm,sallee,prosser,moen,lundberg,kunz,kohl,keane,jorgenson,jaynes,funderburk,freed,durr,creamer,cosgrove,batson,vanhoose,thomsen,teeter,smyth,redmon,orellana,maness,heflin,goulet,frick,forney,bunker,asbury,aguiar,talbott,southard,mowery,mears,lemmon,krieger,hickson,elston,duong,delgadillo,dayton,dasilva,conaway,catron,bruton,bradbury,bordelon,bivins,bittner,bergstrom,beals,abell,whelan,tejada,pulley,pino,norfleet,nealy,maes,loper,gatewood,frierson,freund,finnegan,cupp,covey,catalano,boehm,bader,yoon,walston,tenney,sipes,rawlins,medlock,mccaskill,mccallister,marcotte,maclean,hughey,henke,harwell,gladney,gilson,chism,caskey,brandenburg,baylor,villasenor,veal,thatcher,stegall,petrie,nowlin,navarrete,lombard,loftin,lemaster,kroll,kovach,kimbrell,kidwell,hershberger,fulcher,cantwell,bustos,boland,bobbitt,binkley,wester,weis,verdin,tong,tiller,sisco,sharkey,seymore,rosenbaum,rohr,quinonez,pinkston,malley,logue,lessard,lerner,lebron,krauss,klinger,halstead,haller,getz,burrow,alger,shores,pfeifer,perron,nelms,munn,mcmaster,mckenney,manns,knudson,hutchens,huskey,goebel,flagg,cushman,click,castellano,carder,bumgarner,wampler,spinks,robson,neel,mcreynolds,mathias,maas,loera,jenson,florez,coons,buckingham,brogan,berryman,wilmoth,wilhite,thrash,shephard,seidel,schulze,roldan,pettis,obryan,maki,mackie,hatley,frazer,fiore,chesser,bottoms,bisson,benefield,allman,wilke,trudeau,timm,shifflett,mundy,milliken,mayers,leake,kohn,huntington,horsley,hermann,guerin,fryer,frizzell,foret,flemming,fife,criswell,carbajal,bozeman,boisvert,angulo,wallen,tapp,silvers,ramsay,oshea,orta,moll,mckeever,mcgehee,linville,kiefer,ketchum,howerton,groce,gass,fusco,corbitt,betz,bartels,amaral,aiello,weddle,sperry,seiler,runyan,raley,overby,osteen,olds,mckeown,matney,lauer,lattimore,hindman,hartwell,fredrickson,fredericks,espino,clegg,carswell,cambell,burkholder,woodbury,welker,totten,thornburg,theriault,stitt,stamm,stackhouse,scholl,saxon,rife,razo,quinlan,pinkerton,olivo,nesmith,nall,mattos,lafferty,justus,giron,geer,fielder,drayton,dortch,conners,conger,boatwright,billiot,barden,armenta,tibbetts,steadman,slattery,rinaldi,raynor,pinckney,pettigrew,milne,matteson,halsey,gonsalves,fellows,durand,desimone,cowley,cowles,brill,barham,barela,barba,ashmore,withrow,valenti,tejeda,spriggs,sayre,salerno,peltier,peel,merriman,matheson,lowman,lindstrom,hyland,giroux,earls,dugas,dabney,collado,briseno,baxley,whyte,wenger,vanover,vanburen,thiel,schindler,schiller,rigby,pomeroy,passmore,marble,manzo,mahaffey,lindgren,laflamme,greathouse,fite,calabrese,bayne,yamamoto,wick,townes,thames,reinhart,peeler,naranjo,montez,mcdade,mast,markley,marchand,leeper,kellum,hudgens,hennessey,hadden,gainey,coppola,borrego,bolling,beane,ault,slaton,pape,null,mulkey,lightner,langer,hillard,ethridge,enright,derosa,baskin,weinberg,turman,somerville,pardo,noll,lashley,ingraham,hiller,hendon,glaze,cothran,cooksey,conte,carrico,abner,wooley,swope,summerlin,sturgis,sturdivant,stott,spurgeon,spillman,speight,roussel,popp,nutter,mckeon,mazza,magnuson,lanning,kozak,jankowski,heyward,forster,corwin,callaghan,bays,wortham,usher,theriot,sayers,sabo,poling,loya,lieberman,laroche,labelle,howes,harr,garay,fogarty,everson,durkin,dominquez,chaves,chambliss,witcher,vieira,vandiver,terrill,stoker,schreiner,moorman,liddell,lawhorn,krug,irons,hylton,hollenbeck,herrin,hembree,goolsby,goodin,gilmer,foltz,dinkins,daughtry,caban,brim,briley,bilodeau,wyant,vergara,tallent,swearingen,stroup,scribner,quillen,pitman,mccants,maxfield,martinson,holtz,flournoy,brookins,brody,baumgardner,straub,sills,roybal,roundtree,oswalt,mcgriff,mcdougall,mccleary,maggard,gragg,gooding,godinez,doolittle,donato,cowell,cassell,bracken,appel,zambrano,reuter,perea,nakamura,monaghan,mickens,mcclinton,mcclary,marler,kish,judkins,gilbreath,freese,flanigan,felts,erdmann,dodds,chew,brownell,boatright,barreto,slayton,sandberg,saldivar,pettway,odum,narvaez,moultrie,montemayor,merrell,lees,keyser,hoke,hardaway,hannan,gilbertson,fogg,dumont,deberry,coggins,buxton,bucher,broadnax,beeson,araujo,appleton,amundson,aguayo,ackley,yocum,worsham,shivers,sanches,sacco,robey,rhoden,pender,ochs,mccurry,madera,luong,knotts,jackman,heinrich,hargrave,gault,comeaux,chitwood,caraway,boettcher,bernhardt,barrientos,zink,wickham,whiteman,thorp,stillman,settles,schoonover,roque,riddell,pilcher,phifer,novotny,macleod,hardee,haase,grider,doucette,clausen,bevins,beamon,badillo,tolley,tindall,soule,snook,seale,pinkney,pellegrino,nowell,nemeth,mondragon,mclane,lundgren,ingalls,hudspeth,hixson,gearhart,furlong,downes,dibble,deyoung,cornejo,camara,brookshire,boyette,wolcott,surratt,sellars,segal,salyer,reeve,rausch,labonte,haro,gower,freeland,fawcett,eads,driggers,donley,collett,bromley,boatman,ballinger,baldridge,volz,trombley,stonge,shanahan,rivard,rhyne,pedroza,matias,jamieson,hedgepeth,hartnett,estevez,eskridge,denman,chiu,chinn,catlett,carmack,buie,bechtel,beardsley,bard,ballou,ulmer,skeen,robledo,rincon,reitz,piazza,munger,moten,mcmichael,loftus,ledet,kersey,groff,fowlkes,crumpton,clouse,bettis,villagomez,timmerman,strom,santoro,roddy,penrod,musselman,macpherson,leboeuf,harless,haddad,guido,golding,fulkerson,fannin,dulaney,dowdell,cottle,ceja,cate,bosley,benge,albritton,voigt,trowbridge,soileau,seely,rohde,pearsall,paulk,orth,nason,mota,mcmullin,marquardt,madigan,hoag,gillum,gabbard,fenwick,danforth,cushing,cress,creed,cazares,bettencourt,barringer,baber,stansberry,schramm,rutter,rivero,oquendo,necaise,mouton,montenegro,miley,mcgough,marra,macmillan,lamontagne,jasso,horst,hetrick,heilman,gaytan,gall,fortney,dingle,desjardins,dabbs,burbank,brigham,breland,beaman,arriola,yarborough,wallin,toscano,stowers,reiss,pichardo,orton,michels,mcnamee,mccrory,leatherman,kell,keister,horning,hargett,guay,ferro,deboer,dagostino,carper,blanks,beaudry,towle,tafoya,stricklin,strader,soper,sonnier,sigmon,schenk,saddler,pedigo,mendes,lunn,lohr,lahr,kingsbury,jarman,hume,holliman,hofmann,haworth,harrelson,hambrick,flick,edmunds,dacosta,crossman,colston,chaplin,carrell,budd,weiler,waits,valentino,trantham,tarr,solorio,roebuck,powe,plank,pettus,pagano,mink,luker,leathers,joslin,hartzell,gambrell,cepeda,carty,caputo,brewington,bedell,ballew,applewhite,warnock,walz,urena,tudor,reel,pigg,parton,mickelson,meagher,mclellan,mcculley,mandel,leech,lavallee,kraemer,kling,kipp,kehoe,hochstetler,harriman,gregoire,grabowski,gosselin,gammon,fancher,edens,desai,brannan,armendariz,woolsey,whitehouse,whetstone,ussery,towne,testa,tallman,studer,strait,steinmetz,sorrells,sauceda,rolfe,paddock,mitchem,mcginn,mccrea,lovato,hazen,gilpin,gaynor,fike,devoe,delrio,curiel,burkhardt,bode,backus,zinn,watanabe,wachter,vanpelt,turnage,shaner,schroder,sato,riordan,quimby,portis,natale,mckoy,mccown,kilmer,hotchkiss,hesse,halbert,gwinn,godsey,delisle,chrisman,canter,arbogast,angell,acree,yancy,woolley,wesson,weatherspoon,trainor,stockman,spiller,sipe,rooks,reavis,propst,porras,neilson,mullens,loucks,llewellyn,kumar,koester,klingensmith,kirsch,kester,honaker,hodson,hennessy,helmick,garrity,garibay,drain,casarez,callis,botello,aycock,avant,wingard,wayman,tully,theisen,szymanski,stansbury,segovia,rainwater,preece,pirtle,padron,mincey,mckelvey,mathes,larrabee,kornegay,klug,ingersoll,hecht,germain,eggers,dykstra,deering,decoteau,deason,dearing,cofield,carrigan,bonham,bahr,aucoin,appleby,almonte,yager,womble,wimmer,weimer,vanderpool,stancil,sprinkle,romine,remington,pfaff,peckham,olivera,meraz,maze,lathrop,koehn,hazelton,halvorson,hallock,haddock,ducharme,dehaven,caruthers,brehm,bosworth,bost,bias,beeman,basile,bane,aikens,wold,walther,tabb,suber,strawn,stocker,shirey,schlosser,riedel,rembert,reimer,pyles,peele,merriweather,letourneau,latta,kidder,hixon,hillis,hight,herbst,henriquez,haygood,hamill,gabel,fritts,eubank,dawes,correll,bushey,buchholz,brotherton,botts,barnwell,auger,atchley,westphal,veilleux,ulloa,stutzman,shriver,ryals,pilkington,moyers,marrs,mangrum,maddux,lockard,laing,kuhl,harney,hammock,hamlett,felker,doerr,depriest,carrasquillo,carothers,bogle,bischoff,bergen,albanese,wyckoff,vermillion,vansickle,thibault,tetreault,stickney,shoemake,ruggiero,rawson,racine,philpot,paschal,mcelhaney,mathison,legrand,lapierre,kwan,kremer,jiles,hilbert,geyer,faircloth,ehlers,egbert,desrosiers,dalrymple,cotten,cashman,cadena,boardman,alcaraz,wyrick,therrien,tankersley,strickler,puryear,plourde,pattison,pardue,mcginty,mcevoy,landreth,kuhns,koon,hewett,giddens,emerick,eades,deangelis,cosme,ceballos,birdsong,benham,bemis,armour,anguiano,welborn,tsosie,storms,shoup,sessoms,samaniego,rood,rojo,rhinehart,raby,northcutt,myer,munguia,morehouse,mcdevitt,mallett,lozada,lemoine,kuehn,hallett,grim,gillard,gaylor,garman,gallaher,feaster,faris,darrow,dardar,coney,carreon,braithwaite,boylan,boyett,bixler,bigham,benford,barragan,barnum,zuber,wyche,westcott,vining,stoltzfus,simonds,shupe,sabin,ruble,rittenhouse,richman,perrone,mulholland,millan,lomeli,kite,jemison,hulett,holler,hickerson,herold,hazelwood,griffen,gause,forde,eisenberg,dilworth,charron,chaisson,bristow,breunig,brace,boutwell,bentz,belk,bayless,batchelder,baran,baeza,zimmermann,weathersby,volk,toole,theis,tedesco,searle,schenck,satterwhite,ruelas,rankins,partida,nesbit,morel,menchaca,levasseur,kaylor,johnstone,hulse,hollar,hersey,harrigan,harbison,guyer,gish,giese,gerlach,geller,geisler,falcone,elwell,doucet,deese,darr,corder,chafin,byler,bussell,burdett,brasher,bowe,bellinger,bastian,barner,alleyne,wilborn,weil,wegner,tatro,spitzer,smithers,schoen,resendez,parisi,overman,obrian,mudd,mahler,maggio,lindner,lalonde,lacasse,laboy,killion,kahl,jessen,jamerson,houk,henshaw,gustin,graber,durst,duenas,davey,cundiff,conlon,colunga,coakley,chiles,capers,buell,bricker,bissonnette,bartz,bagby,zayas,volpe,treece,toombs,thom,terrazas,swinney,skiles,silveira,shouse,senn,ramage,moua,langham,kyles,holston,hoagland,herd,feller,denison,carraway,burford,bickel,ambriz,abercrombie,yamada,weidner,waddle,verduzco,thurmond,swindle,schrock,sanabria,rosenberger,probst,peabody,olinger,nazario,mccafferty,mcbroom,mcabee,mazur,matherne,mapes,leverett,killingsworth,heisler,griego,gosnell,frankel,franke,ferrante,fenn,ehrlich,christopherso,chasse,caton,brunelle,bloomfield,babbitt,azevedo,abramson,ables,abeyta,youmans,wozniak,wainwright,stowell,smitherman,samuelson,runge,rothman,rosenfeld,peake,owings,olmos,munro,moreira,leatherwood,larkins,krantz,kovacs,kizer,kindred,karnes,jaffe,hubbell,hosey,hauck,goodell,erdman,dvorak,doane,cureton,cofer,buehler,bierman,berndt,banta,abdullah,warwick,waltz,turcotte,torrey,stith,seger,sachs,quesada,pinder,peppers,pascual,paschall,parkhurst,ozuna,oster,nicholls,lheureux,lavalley,kimura,jablonski,haun,gourley,gilligan,croy,cotto,cargill,burwell,burgett,buckman,booher,adorno,wrenn,whittemore,urias,szabo,sayles,saiz,rutland,rael,pharr,pelkey,ogrady,nickell,musick,moats,mather,massa,kirschner,kieffer,kellar,hendershot,gott,godoy,gadson,furtado,fiedler,erskine,dutcher,dever,daggett,chevalier,brake,ballesteros,amerson,wingo,waldon,trott,silvey,showers,schlegel,ritz,pepin,pelayo,parsley,palermo,moorehead,mchale,lett,kocher,kilburn,iglesias,humble,hulbert,huckaby,hartford,hardiman,gurney,grigg,grasso,goings,fillmore,farber,depew,dandrea,cowen,covarrubias,burrus,bracy,ardoin,thompkins,standley,radcliffe,pohl,persaud,parenteau,pabon,newson,newhouse,napolitano,mulcahy,malave,keim,hooten,hernandes,heffernan,hearne,greenleaf,glick,fuhrman,fetter,faria,dishman,dickenson,crites,criss,clapper,chenault,castor,casto,bugg,bove,bonney,anderton,allgood,alderson,woodman,warrick,toomey,tooley,tarrant,summerville,stebbins,sokol,searles,schutz,schumann,scheer,remillard,raper,proulx,palmore,monroy,messier,melo,melanson,mashburn,manzano,lussier,jenks,huneycutt,hartwig,grimsley,fulk,fielding,fidler,engstrom,eldred,dantzler,crandell,calder,brumley,breton,brann,bramlett,boykins,bianco,bancroft,almaraz,alcantar,whitmer,whitener,welton,vineyard,rahn,paquin,mizell,mcmillin,mckean,marston,maciel,lundquist,liggins,lampkin,kranz,koski,kirkham,jiminez,hazzard,harrod,graziano,grammer,gendron,garrido,fordham,englert,dryden,demoss,deluna,crabb,comeau,brummett,blume,benally,wessel,vanbuskirk,thorson,stumpf,stockwell,reams,radtke,rackley,pelton,niemi,newland,nelsen,morrissette,miramontes,mcginley,mccluskey,marchant,luevano,lampe,lail,jeffcoat,infante,hinman,gaona,eady,desmarais,decosta,dansby,cisco,choe,breckenridge,bostwick,borg,bianchi,alberts,wilkie,whorton,vargo,tait,soucy,schuman,ousley,mumford,lippert,leath,lavergne,laliberte,kirksey,kenner,johnsen,izzo,hiles,gullett,greenwell,gaspar,galbreath,gaitan,ericson,delapaz,croom,cottingham,clift,bushnell,bice,beason,arrowood,waring,voorhees,truax,shreve,shockey,schatz,sandifer,rubino,rozier,roseberry,pieper,peden,nester,nave,murphey,malinowski,macgregor,lafrance,kunkle,kirkman,hipp,hasty,haddix,gervais,gerdes,gamache,fouts,fitzwater,dillingham,deming,deanda,cedeno,cannady,burson,bouldin,arceneaux,woodhouse,whitford,wescott,welty,weigel,torgerson,toms,surber,sunderland,sterner,setzer,riojas,pumphrey,puga,metts,mcgarry,mccandless,magill,lupo,loveland,llamas,leclerc,koons,kahler,huss,holbert,heintz,haupt,grimmett,gaskill,ellingson,dorr,dingess,deweese,desilva,crossley,cordeiro,converse,conde,caldera,cairns,burmeister,burkhalter,brawner,bott,youngs,vierra,valladares,shrum,shropshire,sevilla,rusk,rodarte,pedraza,nino,merino,mcminn,markle,mapp,lajoie,koerner,kittrell,kato,hyder,hollifield,heiser,hazlett,greenwald,fant,eldredge,dreher,delafuente,cravens,claypool,beecher,aronson,alanis,worthen,wojcik,winger,whitacre,valverde,valdivia,troupe,thrower,swindell,suttles,stroman,spires,slate,shealy,sarver,sartin,sadowski,rondeau,rolon,rascon,priddy,paulino,nolte,munroe,molloy,mciver,lykins,loggins,lenoir,klotz,kempf,hupp,hollowell,hollander,haynie,harkness,harker,gottlieb,frith,eddins,driskell,doggett,densmore,charette,cassady,byrum,burcham,buggs,benn,whitted,warrington,vandusen,vaillancourt,steger,siebert,scofield,quirk,purser,plumb,orcutt,nordstrom,mosely,michalski,mcphail,mcdavid,mccraw,marchese,mannino,lefevre,largent,lanza,kress,isham,hunsaker,hoch,hildebrandt,guarino,grijalva,graybill,fick,ewell,ewald,cusick,crumley,coston,cathcart,carruthers,bullington,bowes,blain,blackford,barboza,yingling,wert,weiland,varga,silverstein,sievers,shuster,shumway,runnels,rumsey,renfroe,provencher,polley,mohler,middlebrooks,kutz,koster,groth,glidden,fazio,deen,chipman,chenoweth,champlin,cedillo,carrero,carmody,buckles,brien,boutin,bosch,berkowitz,altamirano,wilfong,wiegand,waites,truesdale,toussaint,tobey,tedder,steelman,sirois,schnell,robichaud,richburg,plumley,pizarro,piercy,ortego,oberg,neace,mertz,mcnew,matta,lapp,lair,kibler,howlett,hollister,hofer,hatten,hagler,falgoust,engelhardt,eberle,dombrowski,dinsmore,daye,casares,braud,balch,autrey,wendel,tyndall,strobel,stoltz,spinelli,serrato,reber,rathbone,palomino,nickels,mayle,mathers,mach,loeffler,littrell,levinson,leong,lemire,lejeune,lazo,lasley,koller,kennard,hoelscher,hintz,hagerman,greaves,fore,eudy,engler,corrales,cordes,brunet,bidwell,bennet,tyrrell,tharpe,swinton,stribling,southworth,sisneros,savoie,samons,ruvalcaba,ries,ramer,omara,mosqueda,millar,mcpeak,macomber,luckey,litton,lehr,lavin,hubbs,hoard,hibbs,hagans,futrell,exum,evenson,culler,carbaugh,callen,brashear,bloomer,blakeney,bigler,addington,woodford,unruh,tolentino,sumrall,stgermain,smock,sherer,rayner,pooler,oquinn,nero,mcglothlin,linden,kowal,kerrigan,ibrahim,harvell,hanrahan,goodall,geist,fussell,fung,ferebee,eley,eggert,dorsett,dingman,destefano,colucci,clemmer,burnell,brumbaugh,boddie,berryhill,avelar,alcantara,winder,winchell,vandenberg,trotman,thurber,thibeault,stlouis,stilwell,sperling,shattuck,sarmiento,ruppert,rumph,renaud,randazzo,rademacher,quiles,pearman,palomo,mercurio,lowrey,lindeman,lawlor,larosa,lander,labrecque,hovis,holifield,henninger,hawkes,hartfield,hann,hague,genovese,garrick,fudge,frink,eddings,dinh,cribbs,calvillo,bunton,brodeur,bolding,blanding,agosto,zahn,wiener,trussell,tello,teixeira,speck,sharma,shanklin,sealy,scanlan,santamaria,roundy,robichaux,ringer,rigney,prevost,polson,nord,moxley,medford,mccaslin,mcardle,macarthur,lewin,lasher,ketcham,keiser,heine,hackworth,grose,grizzle,gillman,gartner,frazee,fleury,edson,edmonson,derry,cronk,conant,burress,burgin,broom,brockington,bolick,boger,birchfield,billington,baily,bahena,armbruster,anson,yoho,wilcher,tinney,timberlake,thielen,sutphin,stultz,sikora,serra,schulman,scheffler,santillan,rego,preciado,pinkham,mickle,lomas,lizotte,lent,kellerman,keil,johanson,hernadez,hartsfield,haber,gorski,farkas,eberhardt,duquette,delano,cropper,cozart,cockerham,chamblee,cartagena,cahoon,buzzell,brister,brewton,blackshear,benfield,aston,ashburn,arruda,wetmore,weise,vaccaro,tucci,sudduth,stromberg,stoops,showalter,shears,runion,rowden,rosenblum,riffle,renfrow,peres,obryant,leftwich,lark,landeros,kistler,killough,kerley,kastner,hoggard,hartung,guertin,govan,gatling,gailey,fullmer,fulford,flatt,esquibel,endicott,edmiston,edelstein,dufresne,dressler,dickman,chee,busse,bonnett,berard,yoshida,velarde,veach,vanhouten,vachon,tolson,tolman,tennyson,stites,soler,shutt,ruggles,rhone,pegues,neese,muro,moncrief,mefford,mcphee,mcmorris,mceachern,mcclurg,mansour,mader,leija,lecompte,lafountain,labrie,jaquez,heald,hash,hartle,gainer,frisby,farina,eidson,edgerton,dyke,durrett,duhon,cuomo,cobos,cervantez,bybee,brockway,borowski,binion,beery,arguello,amaro,acton,yuen,winton,wigfall,weekley,vidrine,vannoy,tardiff,shoop,shilling,schick,safford,prendergast,pilgrim,pellerin,osuna,nissen,nalley,moller,messner,messick,merrifield,mcguinness,matherly,marcano,mahone,lemos,lebrun,jara,hoffer,herren,hecker,haws,haug,gwin,gober,gilliard,fredette,favela,echeverria,downer,donofrio,desrochers,crozier,corson,bechtold,argueta,aparicio,zamudio,westover,westerman,utter,troyer,thies,tapley,slavin,shirk,sandler,roop,rimmer,raymer,radcliff,otten,moorer,millet,mckibben,mccutchen,mcavoy,mcadoo,mayorga,mastin,martineau,marek,madore,leflore,kroeger,kennon,jimerson,hostetter,hornback,hendley,hance,guardado,granado,gowen,goodale,flinn,fleetwood,fitz,durkee,duprey,dipietro,dilley,clyburn,brawley,beckley,arana,weatherby,vollmer,vestal,tunnell,trigg,tingle,takahashi,sweatt,storer,snapp,shiver,rooker,rathbun,poisson,perrine,perri,parmer,parke,pare,papa,palmieri,midkiff,mecham,mccomas,mcalpine,lovelady,lillard,lally,knopp,kile,kiger,haile,gupta,goldsberry,gilreath,fulks,friesen,franzen,flack,findlay,ferland,dreyer,dore,dennard,deckard,debose,crim,coulombe,chancey,cantor,branton,bissell,barns,woolard,witham,wasserman,spiegel,shoffner,scholz,ruch,rossman,petry,palacio,paez,neary,mortenson,millsap,miele,menke,mckim,mcanally,martines,lemley,larochelle,klaus,klatt,kaufmann,kapp,helmer,hedge,halloran,glisson,frechette,fontana,eagan,distefano,danley,creekmore,chartier,chaffee,carillo,burg,bolinger,berkley,benz,basso,bash,zelaya,woodring,witkowski,wilmot,wilkens,wieland,verdugo,urquhart,tsai,timms,swiger,swaim,sussman,pires,molnar,mcatee,lowder,loos,linker,landes,kingery,hufford,higa,hendren,hammack,hamann,gillam,gerhardt,edelman,delk,deans,curl,constantine,cleaver,claar,casiano,carruth,carlyle,brophy,bolanos,bibbs,bessette,beggs,baugher,bartel,averill,andresen,amin,adames,valente,turnbow,swink,sublett,stroh,stringfellow,ridgway,pugliese,poteat,ohare,neubauer,murchison,mingo,lemmons,kwon,kellam,kean,jarmon,hyden,hudak,hollinger,henkel,hemingway,hasson,hansel,halter,haire,ginsberg,gillispie,fogel,flory,etter,elledge,eckman,deas,currin,crafton,coomer,colter,claxton,bulter,braddock,bowyer,binns,bellows,baskerville,barros,ansley,woolf,wight,waldman,wadley,tull,trull,tesch,stouffer,stadler,slay,shubert,sedillo,santacruz,reinke,poynter,neri,neale,mowry,moralez,monger,mitchum,merryman,manion,macdougall,litchfield,levitt,lepage,lasalle,khoury,kavanagh,karns,ivie,huebner,hodgkins,halpin,garica,eversole,dutra,dunagan,duffey,dillman,dillion,deville,dearborn,damato,courson,coulson,burdine,bousquet,bonin,bish,atencio,westbrooks,wages,vaca,toner,tillis,swett,struble,stanfill,solorzano,slusher,sipple,silvas,shults,schexnayder,saez,rodas,rager,pulver,penton,paniagua,meneses,mcfarlin,mcauley,matz,maloy,magruder,lohman,landa,lacombe,jaimes,holzer,holst,heil,hackler,grundy,gilkey,farnham,durfee,dunton,dunston,duda,dews,craver,corriveau,conwell,colella,chambless,bremer,boutte,bourassa,blaisdell,backman,babineaux,audette,alleman,towner,taveras,tarango,sullins,suiter,stallard,solberg,schlueter,poulos,pimental,owsley,okelley,moffatt,metcalfe,meekins,medellin,mcglynn,mccowan,marriott,marable,lennox,lamoureux,koss,kerby,karp,isenberg,howze,hockenberry,highsmith,hallmark,gusman,greeley,giddings,gaudet,gallup,fleenor,eicher,edington,dimaggio,dement,demello,decastro,bushman,brundage,brooker,bourg,blackstock,bergmann,beaton,banister,argo,appling,wortman,watterson,villalpando,tillotson,tighe,sundberg,sternberg,stamey,shipe,seeger,scarberry,sattler,sain,rothstein,poteet,plowman,pettiford,penland,partain,pankey,oyler,ogletree,ogburn,moton,merkel,lucier,lakey,kratz,kinser,kershaw,josephson,imhoff,hendry,hammon,frisbie,frawley,fraga,forester,eskew,emmert,drennan,doyon,dandridge,cawley,carvajal,bracey,belisle,batey,ahner,wysocki,weiser,veliz,tincher,sansone,sankey,sandstrom,rohrer,risner,pridemore,pfeffer,persinger,peery,oubre,nowicki,musgrave,murdoch,mullinax,mccary,mathieu,livengood,kyser,klink,kimes,kellner,kavanaugh,kasten,imes,hoey,hinshaw,hake,gurule,grube,grillo,geter,gatto,garver,garretson,farwell,eiland,dunford,decarlo,corso,colman,collard,cleghorn,chasteen,cavender,carlile,calvo,byerly,brogdon,broadwater,breault,bono,bergin,behr,ballenger,amick,tamez,stiffler,steinke,simmon,shankle,schaller,salmons,sackett,saad,rideout,ratcliffe,ranson,plascencia,petterson,olszewski,olney,olguin,nilsson,nevels,morelli,montiel,monge,michaelson,mertens,mcchesney,mcalpin,mathewson,loudermilk,lineberry,liggett,kinlaw,kight,jost,hereford,hardeman,halpern,halliday,hafer,gaul,friel,freitag,forsberg,evangelista,doering,dicarlo,dendy,delp,deguzman,dameron,curtiss,cosper,cauthen,bradberry,bouton,bonnell,bixby,bieber,beveridge,bedwell,barhorst,bannon,baltazar,baier,ayotte,attaway,arenas,abrego,turgeon,tunstall,thaxton,tenorio,stotts,sthilaire,shedd,seabolt,scalf,salyers,ruhl,rowlett,robinett,pfister,perlman,pepe,parkman,nunnally,norvell,napper,modlin,mckellar,mcclean,mascarenas,leibowitz,ledezma,kuhlman,kobayashi,hunley,holmquist,hinkley,hazard,hartsell,gribble,gravely,fifield,eliason,doak,crossland,carleton,bridgeman,bojorquez,boggess,auten,woosley,whiteley,wexler,twomey,tullis,townley,standridge,santoyo,rueda,riendeau,revell,pless,ottinger,nigro,nickles,mulvey,menefee,mcshane,mcloughlin,mckinzie,markey,lockridge,lipsey,knisley,knepper,kitts,kiel,jinks,hathcock,godin,gallego,fikes,fecteau,estabrook,ellinger,dunlop,dudek,countryman,chauvin,chatham,bullins,brownfield,boughton,bloodworth,bibb,baucom,barbieri,aubin,armitage,alessi,absher,abbate,zito,woolery,wiggs,wacker,tynes,tolle,telles,tarter,swarey,strode,stockdale,stalnaker,spina,schiff,saari,risley,rameriz,rakes,pettaway,penner,paulus,palladino,omeara,montelongo,melnick,mehta,mcgary,mccourt,mccollough,marchetti,manzanares,lowther,leiva,lauderdale,lafontaine,kowalczyk,knighton,joubert,jaworski,huth,hurdle,housley,hackman,gulick,gordy,gilstrap,gehrke,gebhart,gaudette,foxworth,endres,dunkle,cimino,caddell,brauer,braley,bodine,blackmore,belden,backer,ayer,andress,wisner,vuong,valliere,twigg,tavarez,strahan,steib,staub,sowder,seiber,schutt,scharf,schade,rodriques,risinger,renshaw,rahman,presnell,piatt,nieman,nevins,mcilwain,mcgaha,mccully,mccomb,massengale,macedo,lesher,kearse,jauregui,husted,hudnall,holmberg,hertel,hardie,glidewell,frausto,fassett,dalessandro,dahlgren,corum,constantino,conlin,colquitt,colombo,claycomb,cardin,buller,boney,bocanegra,biggers,benedetto,araiza,andino,albin,zorn,werth,weisman,walley,vanegas,ulibarri,towe,tedford,teasley,suttle,steffens,stcyr,squire,singley,sifuentes,shuck,schram,sass,rieger,ridenhour,rickert,richerson,rayborn,rabe,raab,pendley,pastore,ordway,moynihan,mellott,mckissick,mcgann,mccready,mauney,marrufo,lenhart,lazar,lafave,keele,kautz,jardine,jahnke,jacobo,hord,hardcastle,hageman,giglio,gehring,fortson,duque,duplessis,dicken,derosier,deitz,dalessio,cram,castleman,candelario,callison,caceres,bozarth,biles,bejarano,bashaw,avina,armentrout,alverez,acord,waterhouse,vereen,vanlandingham,strawser,shotwell,severance,seltzer,schoonmaker,schock,schaub,schaffner,roeder,rodrigez,riffe,rasberry,rancourt,railey,quade,pursley,prouty,perdomo,oxley,osterman,nickens,murphree,mounts,merida,maus,mattern,masse,martinelli,mangan,lutes,ludwick,loney,laureano,lasater,knighten,kissinger,kimsey,kessinger,honea,hollingshead,hockett,heyer,heron,gurrola,gove,glasscock,gillett,galan,featherstone,eckhardt,duron,dunson,dasher,culbreth,cowden,cowans,claypoole,churchwell,chabot,caviness,cater,caston,callan,byington,burkey,boden,beckford,atwater,archambault,alvey,alsup,whisenant,weese,voyles,verret,tsang,tessier,sweitzer,sherwin,shaughnessy,revis,remy,prine,philpott,peavy,paynter,parmenter,ovalle,offutt,nightingale,newlin,nakano,myatt,muth,mohan,mcmillon,mccarley,mccaleb,maxson,marinelli,maley,liston,letendre,kain,huntsman,hirst,hagerty,gulledge,greenway,grajeda,gorton,goines,gittens,frederickson,fanelli,embree,eichelberger,dunkin,dixson,dillow,defelice,chumley,burleigh,borkowski,binette,biggerstaff,berglund,beller,audet,arbuckle,allain,alfano,youngman,wittman,weintraub,vanzant,vaden,twitty,stollings,standifer,sines,shope,scalise,saville,posada,pisano,otte,nolasco,mier,merkle,mendiola,melcher,mejias,mcmurry,mccalla,markowitz,manis,mallette,macfarlane,lough,looper,landin,kittle,kinsella,kinnard,hobart,helman,hellman,hartsock,halford,hage,gordan,glasser,gayton,gattis,gastelum,gaspard,frisch,fitzhugh,eckstein,eberly,dowden,despain,crumpler,crotty,cornelison,chouinard,chamness,catlin,cann,bumgardner,budde,branum,bradfield,braddy,borst,birdwell,bazan,banas,bade,arango,ahearn,addis,zumwalt,wurth,wilk,widener,wagstaff,urrutia,terwilliger,tart,steinman,staats,sloat,rives,riggle,revels,reichard,prickett,poff,pitzer,petro,pell,northrup,nicks,moline,mielke,maynor,mallon,magness,lingle,lindell,lieb,lesko,lebeau,lammers,lafond,kiernan,ketron,jurado,holmgren,hilburn,hayashi,hashimoto,harbaugh,guillot,gard,froehlich,feinberg,falco,dufour,drees,doney,diep,delao,daves,dail,crowson,coss,congdon,carner,camarena,butterworth,burlingame,bouffard,bloch,bilyeu,barta,bakke,baillargeon,avent,aquilar,zeringue,yarber,wolfson,vogler,voelker,truss,troxell,thrift,strouse,spielman,sistrunk,sevigny,schuller,schaaf,ruffner,routh,roseman,ricciardi,peraza,pegram,overturf,olander,odaniel,millner,melchor,maroney,machuca,macaluso,livesay,layfield,laskowski,kwiatkowski,kilby,hovey,heywood,hayman,havard,harville,haigh,hagood,grieco,glassman,gebhardt,fleischer,fann,elson,eccles,cunha,crumb,blakley,bardwell,abshire,woodham,wines,welter,wargo,varnado,tutt,traynor,swaney,stricker,stoffel,stambaugh,sickler,shackleford,selman,seaver,sansom,sanmiguel,royston,rourke,rockett,rioux,puleo,pitchford,nardi,mulvaney,middaugh,malek,leos,lathan,kujawa,kimbro,killebrew,houlihan,hinckley,herod,hepler,hamner,hammel,hallowell,gonsalez,gingerich,gambill,funkhouser,fricke,fewell,falkner,endsley,dulin,drennen,deaver,dambrosio,chadwell,castanon,burkes,brune,brisco,brinker,bowker,boldt,berner,beaumont,beaird,bazemore,barrick,albano,younts,wunderlich,weidman,vanness,toland,theobald,stickler,steiger,stanger,spies,spector,sollars,smedley,seibel,scoville,saito,rummel,rowles,rouleau,roos,rogan,roemer,ream,raya,purkey,priester,perreira,penick,paulin,parkins,overcash,oleson,neves,muldrow,minard,midgett,michalak,melgar,mcentire,mcauliffe,marte,lydon,lindholm,leyba,langevin,lagasse,lafayette,kesler,kelton,kaminsky,jaggers,humbert,huck,howarth,hinrichs,higley,gupton,guimond,gravois,giguere,fretwell,fontes,feeley,faucher,eichhorn,ecker,earp,dole,dinger,derryberry,demars,deel,copenhaver,collinsworth,colangelo,cloyd,claiborne,caulfield,carlsen,calzada,caffey,broadus,brenneman,bouie,bodnar,blaney,blanc,beltz,behling,barahona,yockey,winkle,windom,wimer,villatoro,trexler,teran,taliaferro,sydnor,swinson,snelling,smtih,simonton,simoneaux,simoneau,sherrer,seavey,scheel,rushton,rupe,ruano,rippy,reiner,reiff,rabinowitz,quach,penley,odle,nock,minnich,mckown,mccarver,mcandrew,longley,laux,lamothe,lafreniere,kropp,krick,kates,jepson,huie,howse,howie,henriques,haydon,haught,hatter,hartzog,harkey,grimaldo,goshorn,gormley,gluck,gilroy,gillenwater,giffin,fluker,feder,eyre,eshelman,eakins,detwiler,delrosario,davisson,catalan,canning,calton,brammer,botelho,blakney,bartell,averett,askins,aker,witmer,winkelman,widmer,whittier,weitzel,wardell,wagers,ullman,tupper,tingley,tilghman,talton,simard,seda,scheller,sala,rundell,rost,ribeiro,rabideau,primm,pinon,peart,ostrom,ober,nystrom,nussbaum,naughton,murr,moorhead,monti,monteiro,melson,meissner,mclin,mcgruder,marotta,makowski,majewski,madewell,lunt,lukens,leininger,lebel,lakin,kepler,jaques,hunnicutt,hungerford,hoopes,hertz,heins,halliburton,grosso,gravitt,glasper,gallman,gallaway,funke,fulbright,falgout,eakin,dostie,dorado,dewberry,derose,cutshall,crampton,costanzo,colletti,cloninger,claytor,chiang,campagna,burd,brokaw,broaddus,bretz,brainard,binford,bilbrey,alpert,aitken,ahlers,zajac,woolfolk,witten,windle,wayland,tramel,tittle,talavera,suter,straley,specht,sommerville,soloman,skeens,sigman,sibert,shavers,schuck,schmit,sartain,sabol,rosenblatt,rollo,rashid,rabb,polston,nyberg,northrop,navarra,muldoon,mikesell,mcdougald,mcburney,mariscal,lozier,lingerfelt,legere,latour,lagunas,lacour,kurth,killen,kiely,kayser,kahle,isley,huertas,hower,hinz,haugh,gumm,galicia,fortunato,flake,dunleavy,duggins,doby,digiovanni,devaney,deltoro,cribb,corpuz,coronel,coen,charbonneau,caine,burchette,blakey,blakemore,bergquist,beene,beaudette,bayles,ballance,bakker,bailes,asberry,arwood,zucker,willman,whitesell,wald,walcott,vancleave,trump,strasser,simas,shick,schleicher,schaal,saleh,rotz,resnick,rainer,partee,ollis,oller,oday,noles,munday,mong,millican,merwin,mazzola,mansell,magallanes,llanes,lewellen,lepore,kisner,keesee,jeanlouis,ingham,hornbeck,hawn,hartz,harber,haffner,gutshall,guth,grays,gowan,finlay,finkelstein,eyler,enloe,dungan,diez,dearman,cull,crosson,chronister,cassity,campion,callihan,butz,breazeale,blumenthal,berkey,batty,batton,arvizu,alderete,aldana,albaugh,abernethy,wolter,wille,tweed,tollefson,thomasson,teter,testerman,sproul,spates,southwick,soukup,skelly,senter,sealey,sawicki,sargeant,rossiter,rosemond,repp,pifer,ormsby,nickelson,naumann,morabito,monzon,millsaps,millen,mcelrath,marcoux,mantooth,madson,macneil,mackinnon,louque,leister,lampley,kushner,krouse,kirwan,jessee,janson,jahn,jacquez,islas,hutt,holladay,hillyer,hepburn,hensel,harrold,gingrich,geis,gales,fults,finnell,ferri,featherston,epley,ebersole,eames,dunigan,drye,dismuke,devaughn,delorenzo,damiano,confer,collum,clower,clow,claussen,clack,caylor,cawthon,casias,carreno,bluhm,bingaman,bewley,belew,beckner,auld,amey,wolfenbarger,wilkey,wicklund,waltman,villalba,valero,valdovinos,ullrich,tyus,twyman,trost,tardif,tanguay,stripling,steinbach,shumpert,sasaki,sappington,sandusky,reinhold,reinert,quijano,placencia,pinkard,phinney,perrotta,pernell,parrett,oxendine,owensby,orman,nuno,mori,mcroberts,mcneese,mckamey,mccullum,markel,mardis,maines,lueck,lubin,lefler,leffler,larios,labarbera,kershner,josey,jeanbaptiste,izaguirre,hermosillo,haviland,hartshorn,hafner,ginter,getty,franck,fiske,dufrene,doody,davie,dangerfield,dahlberg,cuthbertson,crone,coffelt,chidester,chesson,cauley,caudell,cantara,campo,caines,bullis,bucci,brochu,bogard,bickerstaff,benning,arzola,antonelli,adkinson,zellers,wulf,worsley,woolridge,whitton,westerfield,walczak,vassar,truett,trueblood,trawick,townsley,topping,tobar,telford,steverson,stagg,sitton,sill,sergent,schoenfeld,sarabia,rutkowski,rubenstein,rigdon,prentiss,pomerleau,plumlee,philbrick,patnode,oloughlin,obregon,nuss,morell,mikell,mele,mcinerney,mcguigan,mcbrayer,lollar,kuehl,kinzer,kamp,joplin,jacobi,howells,holstein,hedden,hassler,harty,halle,greig,gouge,goodrum,gerhart,geier,geddes,gast,forehand,ferree,fendley,feltner,esqueda,encarnacion,eichler,egger,edmundson,eatmon,doud,donohoe,donelson,dilorenzo,digiacomo,diggins,delozier,dejong,danford,crippen,coppage,cogswell,clardy,cioffi,cabe,brunette,bresnahan,blomquist,blackstone,biller,bevis,bevan,bethune,benbow,baty,basinger,balcom,andes,aman,aguero,adkisson,yandell,wilds,whisenhunt,weigand,weeden,voight,villar,trottier,tillett,suazo,setser,scurry,schuh,schreck,schauer,samora,roane,rinker,reimers,ratchford,popovich,parkin,natal,melville,mcbryde,magdaleno,loehr,lockman,lingo,leduc,larocca,lamere,laclair,krall,korte,koger,jalbert,hughs,higbee,henton,heaney,haith,gump,greeson,goodloe,gholston,gasper,gagliardi,fregoso,farthing,fabrizio,ensor,elswick,elgin,eklund,eaddy,drouin,dorton,dizon,derouen,deherrera,davy,dampier,cullum,culley,cowgill,cardoso,cardinale,brodsky,broadbent,brimmer,briceno,branscum,bolyard,boley,bennington,beadle,baur,ballentine,azure,aultman,arciniega,aguila,aceves,yepez,woodrum,wethington,weissman,veloz,trusty,troup,trammel,tarpley,stivers,steck,sprayberry,spraggins,spitler,spiers,sohn,seagraves,schiffman,rudnick,rizo,riccio,rennie,quackenbush,puma,plott,pearcy,parada,paiz,munford,moskowitz,mease,mcnary,mccusker,lozoya,longmire,loesch,lasky,kuhlmann,krieg,koziol,kowalewski,konrad,kindle,jowers,jolin,jaco,horgan,hine,hileman,hepner,heise,heady,hawkinson,hannigan,haberman,guilford,grimaldi,garton,gagliano,fruge,follett,fiscus,ferretti,ebner,easterday,eanes,dirks,dimarco,depalma,deforest,cruce,craighead,christner,candler,cadwell,burchell,buettner,brinton,brazier,brannen,brame,bova,bomar,blakeslee,belknap,bangs,balzer,athey,armes,alvis,alverson,alvardo,yeung,wheelock,westlund,wessels,volkman,threadgill,thelen,tague,symons,swinford,sturtevant,straka,stier,stagner,segarra,seawright,rutan,roux,ringler,riker,ramsdell,quattlebaum,purifoy,poulson,permenter,peloquin,pasley,pagel,osman,obannon,nygaard,newcomer,munos,motta,meadors,mcquiston,mcniel,mcmann,mccrae,mayne,matte,legault,lechner,kucera,krohn,kratzer,koopman,jeske,horrocks,hock,hibbler,hesson,hersh,harvin,halvorsen,griner,grindle,gladstone,garofalo,frampton,forbis,eddington,diorio,dingus,dewar,desalvo,curcio,creasy,cortese,cordoba,connally,cluff,cascio,capuano,canaday,calabro,bussard,brayton,borja,bigley,arnone,arguelles,acuff,zamarripa,wooton,widner,wideman,threatt,thiele,templin,teeters,synder,swint,swick,sturges,stogner,stedman,spratt,siegfried,shetler,scull,savino,sather,rothwell,rook,rone,rhee,quevedo,privett,pouliot,poche,pickel,petrillo,pellegrini,peaslee,partlow,otey,nunnery,morelock,morello,meunier,messinger,mckie,mccubbin,mccarron,lerch,lavine,laverty,lariviere,lamkin,kugler,krol,kissel,keeter,hubble,hickox,hetzel,hayner,hagy,hadlock,groh,gottschalk,goodsell,gassaway,garrard,galligan,firth,fenderson,feinstein,etienne,engleman,emrick,ellender,drews,doiron,degraw,deegan,dart,crissman,corr,cookson,coil,cleaves,charest,chapple,chaparro,castano,carpio,byer,bufford,bridgewater,bridgers,brandes,borrero,bonanno,aube,ancheta,abarca,abad,wooster,wimbush,willhite,willams,wigley,weisberg,wardlaw,vigue,vanhook,unknow,torre,tasker,tarbox,strachan,slover,shamblin,semple,schuyler,schrimsher,sayer,salzman,rubalcava,riles,reneau,reichel,rayfield,rabon,pyatt,prindle,poss,polito,plemmons,pesce,perrault,pereyra,ostrowski,nilsen,niemeyer,munsey,mundell,moncada,miceli,meader,mcmasters,mckeehan,matsumoto,marron,marden,lizarraga,lingenfelter,lewallen,langan,lamanna,kovac,kinsler,kephart,keown,kass,kammerer,jeffreys,hysell,hosmer,hardnett,hanner,guyette,greening,glazer,ginder,fromm,fluellen,finkle,fessler,essary,eisele,duren,dittmer,crochet,cosentino,cogan,coelho,cavin,carrizales,campuzano,brough,bopp,bookman,bobb,blouin,beesley,battista,bascom,bakken,badgett,arneson,anselmo,albino,ahumada,woodyard,wolters,wireman,willison,warman,waldrup,vowell,vantassel,twombly,toomer,tennison,teets,tedeschi,swanner,stutz,stelly,sheehy,schermerhorn,scala,sandidge,salters,salo,saechao,roseboro,rolle,ressler,renz,renn,redford,raposa,rainbolt,pelfrey,orndorff,oney,nolin,nimmons,nardone,myhre,morman,menjivar,mcglone,mccammon,maxon,marciano,manus,lowrance,lorenzen,lonergan,lollis,littles,lindahl,lamas,lach,kuster,krawczyk,knuth,knecht,kirkendall,keitt,keever,kantor,jarboe,hoye,houchens,holter,holsinger,hickok,helwig,helgeson,hassett,harner,hamman,hames,hadfield,goree,goldfarb,gaughan,gaudreau,gantz,gallion,frady,foti,flesher,ferrin,faught,engram,donegan,desouza,degroot,cutright,crowl,criner,coan,clinkscales,chewning,chavira,catchings,carlock,bulger,buenrostro,bramblett,brack,boulware,bookout,bitner,birt,baranowski,baisden,allmon,acklin,yoakum,wilbourn,whisler,weinberger,washer,vasques,vanzandt,vanatta,troxler,tomes,tindle,tims,throckmorton,thach,stpeter,stlaurent,stenson,spry,spitz,songer,snavely,shroyer,shortridge,shenk,sevier,seabrook,scrivner,saltzman,rosenberry,rockwood,robeson,roan,reiser,ramires,raber,posner,popham,piotrowski,pinard,peterkin,pelham,peiffer,peay,nadler,musso,millett,mestas,mcgowen,marques,marasco,manriquez,manos,mair,lipps,leiker,krumm,knorr,kinslow,kessel,kendricks,kelm,irick,ickes,hurlburt,horta,hoekstra,heuer,helmuth,heatherly,hampson,hagar,haga,greenlaw,grau,godbey,gingras,gillies,gibb,gayden,gauvin,garrow,fontanez,florio,finke,fasano,ezzell,ewers,eveland,eckenrode,duclos,drumm,dimmick,delancey,defazio,dashiell,cusack,crowther,crigger,cray,coolidge,coldiron,cleland,chalfant,cassel,camire,cabrales,broomfield,brittingham,brisson,brickey,braziel,brazell,bragdon,boulanger,boman,bohannan,beem,barre,azar,ashbaugh,armistead,almazan,adamski,zendejas,winburn,willaims,wilhoit,westberry,wentzel,wendling,visser,vanscoy,vankirk,vallee,tweedy,thornberry,sweeny,spradling,spano,smelser,shim,sechrist,schall,scaife,rugg,rothrock,roesler,riehl,ridings,render,ransdell,radke,pinero,petree,pendergast,peluso,pecoraro,pascoe,panek,oshiro,navarrette,murguia,moores,moberg,michaelis,mcwhirter,mcsweeney,mcquade,mccay,mauk,mariani,marceau,mandeville,maeda,lunde,ludlow,loeb,lindo,linderman,leveille,leith,larock,lambrecht,kulp,kinsley,kimberlin,kesterson,hoyos,helfrich,hanke,grisby,goyette,gouveia,glazier,gile,gerena,gelinas,gasaway,funches,fujimoto,flynt,fenske,fellers,fehr,eslinger,escalera,enciso,duley,dittman,dineen,diller,devault,collings,clymer,clowers,chavers,charland,castorena,castello,camargo,bunce,bullen,boyes,borchers,borchardt,birnbaum,birdsall,billman,benites,bankhead,ange,ammerman,adkison,winegar,wickman,warr,warnke,villeneuve,veasey,vassallo,vannatta,vadnais,twilley,towery,tomblin,tippett,theiss,talkington,talamantes,swart,swanger,streit,stines,stabler,spurling,sobel,sine,simmers,shippy,shiflett,shearin,sauter,sanderlin,rusch,runkle,ruckman,rorie,roesch,richert,rehm,randel,ragin,quesenberry,puentes,plyler,plotkin,paugh,oshaughnessy,ohalloran,norsworthy,niemann,nader,moorefield,mooneyham,modica,miyamoto,mickel,mebane,mckinnie,mazurek,mancilla,lukas,lovins,loughlin,lotz,lindsley,liddle,levan,lederman,leclaire,lasseter,lapoint,lamoreaux,lafollette,kubiak,kirtley,keffer,kaczmarek,housman,hiers,hibbert,herrod,hegarty,hathorn,greenhaw,grafton,govea,futch,furst,franko,forcier,foran,flickinger,fairfield,eure,emrich,embrey,edgington,ecklund,eckard,durante,deyo,delvecchio,dade,currey,creswell,cottrill,casavant,cartier,cargile,capel,cammack,calfee,burse,burruss,brust,brousseau,bridwell,braaten,borkholder,bloomquist,bjork,bartelt,amburgey,yeary,whitefield,vinyard,vanvalkenburg,twitchell,timmins,tapper,stringham,starcher,spotts,slaugh,simonsen,sheffer,sequeira,rosati,rhymes,quint,pollak,peirce,patillo,parkerson,paiva,nilson,nevin,narcisse,mitton,merriam,merced,meiners,mckain,mcelveen,mcbeth,marsden,marez,manke,mahurin,mabrey,luper,krull,hunsicker,hornbuckle,holtzclaw,hinnant,heston,hering,hemenway,hegwood,hearns,halterman,guiterrez,grote,granillo,grainger,glasco,gilder,garren,garlock,garey,fryar,fredricks,fraizer,foshee,ferrel,felty,everitt,evens,esser,elkin,eberhart,durso,duguay,driskill,doster,dewall,deveau,demps,demaio,delreal,deleo,darrah,cumberbatch,culberson,cranmer,cordle,colgan,chesley,cavallo,castellon,castelli,carreras,carnell,carlucci,bontrager,blumberg,blasingame,becton,artrip,andujar,alkire,alder,zukowski,zuckerman,wroblewski,wrigley,woodside,wigginton,westman,westgate,werts,washam,wardlow,walser,waiters,tadlock,stringfield,stimpson,stickley,standish,spurlin,spindler,speller,spaeth,sotomayor,sluder,shryock,shepardson,shatley,scannell,santistevan,rosner,resto,reinhard,rathburn,prisco,poulsen,pinney,phares,pennock,pastrana,oviedo,ostler,nauman,mulford,moise,moberly,mirabal,metoyer,metheny,mentzer,meldrum,mcinturff,mcelyea,mcdougle,massaro,lumpkins,loveday,lofgren,lirette,lesperance,lefkowitz,ledger,lauzon,lachapelle,klassen,keough,kempton,kaelin,jeffords,hsieh,hoyer,horwitz,hoeft,hennig,haskin,gourdine,golightly,girouard,fulgham,fritsch,freer,frasher,foulk,firestone,fiorentino,fedor,ensley,englehart,eells,dunphy,donahoe,dileo,dibenedetto,dabrowski,crick,coonrod,conder,coddington,chunn,chaput,cerna,carreiro,calahan,braggs,bourdon,bollman,bittle,bauder,barreras,aubuchon,anzalone,adamo,zerbe,willcox,westberg,weikel,waymire,vroman,vinci,vallejos,truesdell,troutt,trotta,tollison,toles,tichenor,symonds,surles,strayer,stgeorge,sroka,sorrentino,solares,snelson,silvestri,sikorski,shawver,schumaker,schorr,schooley,scates,satterlee,satchell,rymer,roselli,robitaille,riegel,regis,reames,provenzano,priestley,plaisance,pettey,palomares,nowakowski,monette,minyard,mclamb,mchone,mccarroll,masson,magoon,maddy,lundin,licata,leonhardt,landwehr,kircher,kinch,karpinski,johannsen,hussain,houghtaling,hoskinson,hollaway,holeman,hobgood,hiebert,goggin,geissler,gadbois,gabaldon,fleshman,flannigan,fairman,eilers,dycus,dunmire,duffield,dowler,deloatch,dehaan,deemer,clayborn,christofferso,chilson,chesney,chatfield,carron,canale,brigman,branstetter,bosse,borton,bonar,biron,barroso,arispe,zacharias,zabel,yaeger,woolford,whetzel,weakley,veatch,vandeusen,tufts,troxel,troche,traver,townsel,talarico,swilley,sterrett,stenger,speakman,sowards,sours,souders,souder,soles,sobers,snoddy,smither,shute,shoaf,shahan,schuetz,scaggs,santini,rosson,rolen,robidoux,rentas,recio,pixley,pawlowski,pawlak,paull,overbey,orear,oliveri,oldenburg,nutting,naugle,mossman,misner,milazzo,michelson,mcentee,mccullar,mccree,mcaleer,mazzone,mandell,manahan,malott,maisonet,mailloux,lumley,lowrie,louviere,lipinski,lindemann,leppert,leasure,labarge,kubik,knisely,knepp,kenworthy,kennelly,kelch,kanter,houchin,hosley,hosler,hollon,holleman,heitman,haggins,gwaltney,goulding,gorden,geraci,gathers,frison,feagin,falconer,espada,erving,erikson,eisenhauer,ebeling,durgin,dowdle,dinwiddie,delcastillo,dedrick,crimmins,covell,cournoyer,coria,cohan,cataldo,carpentier,canas,campa,brode,brashears,blaser,bicknell,bednar,barwick,ascencio,althoff,almodovar,alamo,zirkle,zabala,wolverton,winebrenner,wetherell,westlake,wegener,weddington,tuten,trosclair,tressler,theroux,teske,swinehart,swensen,sundquist,southall,socha,sizer,silverberg,shortt,shimizu,sherrard,shaeffer,scheid,scheetz,saravia,sanner,rubinstein,rozell,romer,rheaume,reisinger,randles,pullum,petrella,payan,nordin,norcross,nicoletti,nicholes,newbold,nakagawa,monteith,milstead,milliner,mellen,mccardle,liptak,leitch,latimore,larrison,landau,laborde,koval,izquierdo,hymel,hoskin,holte,hoefer,hayworth,hausman,harrill,harrel,hardt,gully,groover,grinnell,greenspan,graver,grandberry,gorrell,goldenberg,goguen,gilleland,fuson,feldmann,everly,dyess,dunnigan,downie,dolby,deatherage,cosey,cheever,celaya,caver,cashion,caplinger,cansler,byrge,bruder,breuer,breslin,brazelton,botkin,bonneau,bondurant,bohanan,bogue,bodner,boatner,blatt,bickley,belliveau,beiler,beier,beckstead,bachmann,atkin,altizer,alloway,allaire,albro,abron,zellmer,yetter,yelverton,wiens,whidden,viramontes,vanwormer,tarantino,tanksley,sumlin,strauch,strang,stice,spahn,sosebee,sigala,shrout,seamon,schrum,schneck,schantz,ruddy,romig,roehl,renninger,reding,polak,pohlman,pasillas,oldfield,oldaker,ohanlon,ogilvie,norberg,nolette,neufeld,nellis,mummert,mulvihill,mullaney,monteleone,mendonca,meisner,mcmullan,mccluney,mattis,massengill,manfredi,luedtke,lounsbury,liberatore,lamphere,laforge,jourdan,iorio,iniguez,ikeda,hubler,hodgdon,hocking,heacock,haslam,haralson,hanshaw,hannum,hallam,haden,garnes,garces,gammage,gambino,finkel,faucett,ehrhardt,eggen,dusek,durrant,dubay,dones,depasquale,delucia,degraff,decamp,davalos,cullins,conard,clouser,clontz,cifuentes,chappel,chaffins,celis,carwile,byram,bruggeman,bressler,brathwaite,brasfield,bradburn,boose,bodie,blosser,bertsch,bernardi,bernabe,bengtson,barrette,astorga,alday,albee,abrahamson,yarnell,wiltse,wiebe,waguespack,vasser,upham,turek,traxler,torain,tomaszewski,tinnin,tiner,tindell,styron,stahlman,staab,skiba,sheperd,seidl,secor,schutte,sanfilippo,ruder,rondon,rearick,procter,prochaska,pettengill,pauly,neilsen,nally,mullenax,morano,meads,mcnaughton,mcmurtry,mcmath,mckinsey,matthes,massenburg,marlar,margolis,malin,magallon,mackin,lovette,loughran,loring,longstreet,loiselle,lenihan,kunze,koepke,kerwin,kalinowski,kagan,innis,innes,holtzman,heinemann,harshman,haider,haack,grondin,grissett,greenawalt,goudy,goodlett,goldston,gokey,gardea,galaviz,gafford,gabrielson,furlow,fritch,fordyce,folger,elizalde,ehlert,eckhoff,eccleston,ealey,dubin,diemer,deschamps,delapena,decicco,debolt,cullinan,crittendon,crase,cossey,coppock,coots,colyer,cluck,chamberland,burkhead,bumpus,buchan,borman,birkholz,berardi,benda,behnke,barter,amezquita,wotring,wirtz,wingert,wiesner,whitesides,weyant,wainscott,venezia,varnell,tussey,thurlow,tabares,stiver,stell,starke,stanhope,stanek,sisler,sinnott,siciliano,shehan,selph,seager,scurlock,scranton,santucci,santangelo,saltsman,rogge,rettig,renwick,reidy,reider,redfield,premo,parente,paolucci,palmquist,ohler,netherton,mutchler,morita,mistretta,minnis,middendorf,menzel,mendosa,mendelson,meaux,mcspadden,mcquaid,mcnatt,manigault,maney,mager,lukes,lopresti,liriano,letson,lechuga,lazenby,lauria,larimore,krupp,krupa,kopec,kinchen,kifer,kerney,kerner,kennison,kegley,karcher,justis,johson,jellison,janke,huskins,holzman,hinojos,hefley,hatmaker,harte,halloway,hallenbeck,goodwyn,glaspie,geise,fullwood,fryman,frakes,fraire,farrer,enlow,engen,ellzey,eckles,earles,dunkley,drinkard,dreiling,draeger,dinardo,dills,desroches,desantiago,curlee,crumbley,critchlow,coury,courtright,coffield,cleek,charpentier,cardone,caples,cantin,buntin,bugbee,brinkerhoff,brackin,bourland,blassingame,beacham,banning,auguste,andreasen,amann,almon,alejo,adelman,abston,yerger,wymer,woodberry,windley,whiteaker,westfield,weibel,wanner,waldrep,villani,vanarsdale,utterback,updike,triggs,topete,tolar,tigner,thoms,tauber,tarvin,tally,swiney,sweatman,studebaker,stennett,starrett,stannard,stalvey,sonnenberg,smithey,sieber,sickles,shinault,segars,sanger,salmeron,rothe,rizzi,restrepo,ralls,ragusa,quiroga,papenfuss,oropeza,okane,mudge,mozingo,molinaro,mcvicker,mcgarvey,mcfalls,mccraney,matus,magers,llanos,livermore,linehan,leitner,laymon,lawing,lacourse,kwong,kollar,kneeland,kennett,kellett,kangas,janzen,hutter,huling,hofmeister,hewes,harjo,habib,guice,grullon,greggs,grayer,granier,grable,gowdy,giannini,getchell,gartman,garnica,ganey,gallimore,fetters,fergerson,farlow,fagundes,exley,esteves,enders,edenfield,easterwood,drakeford,dipasquale,desousa,deshields,deeter,dedmon,debord,daughtery,cutts,courtemanche,coursey,copple,coomes,collis,cogburn,clopton,choquette,chaidez,castrejon,calhoon,burbach,bulloch,buchman,bruhn,bohon,blough,baynes,barstow,zeman,zackery,yardley,yamashita,wulff,wilken,wiliams,wickersham,wible,whipkey,wedgeworth,walmsley,walkup,vreeland,verrill,umana,traub,swingle,summey,stroupe,stockstill,steffey,stefanski,statler,stapp,speights,solari,soderberg,shunk,shorey,shewmaker,sheilds,schiffer,schank,schaff,sagers,rochon,riser,rickett,reale,raglin,polen,plata,pitcock,percival,palen,orona,oberle,nocera,navas,nault,mullings,montejano,monreal,minick,middlebrook,meece,mcmillion,mccullen,mauck,marshburn,maillet,mahaney,magner,maclin,lucey,litteral,lippincott,leite,leaks,lamarre,jurgens,jerkins,jager,hurwitz,hughley,hotaling,horstman,hohman,hocker,hively,hipps,hessler,hermanson,hepworth,helland,hedlund,harkless,haigler,gutierez,grindstaff,glantz,giardina,gerken,gadsden,finnerty,farnum,encinas,drakes,dennie,cutlip,curtsinger,couto,cortinas,corby,chiasson,carle,carballo,brindle,borum,bober,blagg,berthiaume,beahm,batres,basnight,backes,axtell,atterberry,alvares,alegria,woodell,wojciechowski,winfree,winbush,wiest,wesner,wamsley,wakeman,verner,truex,trafton,toman,thorsen,theus,tellier,tallant,szeto,strope,stills,simkins,shuey,shaul,servin,serio,serafin,salguero,ryerson,rudder,ruark,rother,rohrbaugh,rohrbach,rohan,rogerson,risher,reeser,pryce,prokop,prins,priebe,prejean,pinheiro,petrone,petri,penson,pearlman,parikh,natoli,murakami,mullikin,mullane,motes,morningstar,mcveigh,mcgrady,mcgaughey,mccurley,marchan,manske,lusby,linde,likens,licon,leroux,lemaire,legette,laskey,laprade,laplant,kolar,kittredge,kinley,kerber,kanagy,jetton,janik,ippolito,inouye,hunsinger,howley,howery,horrell,holthaus,hiner,hilson,hilderbrand,hartzler,harnish,harada,hansford,halligan,hagedorn,gwynn,gudino,greenstein,greear,gracey,goudeau,goodner,ginsburg,gerth,gerner,fujii,frier,frenette,folmar,fleisher,fleischmann,fetzer,eisenman,earhart,dupuy,dunkelberger,drexler,dillinger,dilbeck,dewald,demby,deford,craine,chesnut,casady,carstens,carrick,carino,carignan,canchola,bushong,burman,buono,brownlow,broach,britten,brickhouse,boyden,boulton,borland,bohrer,blubaugh,bever,berggren,benevides,arocho,arends,amezcua,almendarez,zalewski,witzel,winkfield,wilhoite,vangundy,vanfleet,vanetten,vandergriff,urbanski,troiano,thibodaux,straus,stoneking,stjean,stillings,stange,speicher,speegle,smeltzer,slawson,simmonds,shuttleworth,serpa,senger,seidman,schweiger,schloss,schimmel,schechter,sayler,sabatini,ronan,rodiguez,riggleman,richins,reamer,prunty,porath,plunk,piland,philbrook,pettitt,perna,peralez,pascale,padula,oboyle,nivens,nickols,mundt,munden,montijo,mcmanis,mcgrane,mccrimmon,manzi,mangold,malick,mahar,maddock,losey,litten,leedy,leavell,ladue,krahn,kluge,junker,iversen,imler,hurtt,huizar,hubbert,howington,hollomon,holdren,hoisington,heiden,hauge,hartigan,gutirrez,griffie,greenhill,gratton,granata,gottfried,gertz,gautreaux,furry,furey,funderburg,flippen,fitzgibbon,drucker,donoghue,dildy,devers,detweiler,despres,denby,degeorge,cueto,cranston,courville,clukey,cirillo,chivers,caudillo,butera,bulluck,buckmaster,braunstein,bracamonte,bourdeau,bonnette".split(","),
54803 us_tv_and_film:"you,i,to,that,it,me,what,this,know,i'm,no,have,my,don't,just,not,do,be,your,we,it's,so,but,all,well,oh,about,right,you're,get,here,out,going,like,yeah,if,can,up,want,think,that's,now,go,him,how,got,did,why,see,come,good,really,look,will,okay,back,can't,mean,tell,i'll,hey,he's,could,didn't,yes,something,because,say,take,way,little,make,need,gonna,never,we're,too,she's,i've,sure,our,sorry,what's,let,thing,maybe,down,man,very,there's,should,anything,said,much,any,even,off,please,doing,thank,give,thought,help,talk,god,still,wait,find,nothing,again,things,let's,doesn't,call,told,great,better,ever,night,away,believe,feel,everything,you've,fine,last,keep,does,put,around,stop,they're,i'd,guy,isn't,always,listen,wanted,guys,huh,those,big,lot,happened,thanks,won't,trying,kind,wrong,talking,guess,care,bad,mom,remember,getting,we'll,together,dad,leave,understand,wouldn't,actually,hear,baby,nice,father,else,stay,done,wasn't,course,might,mind,every,enough,try,hell,came,someone,you'll,whole,yourself,idea,ask,must,coming,looking,woman,room,knew,tonight,real,son,hope,went,hmm,happy,pretty,saw,girl,sir,friend,already,saying,next,job,problem,minute,thinking,haven't,heard,honey,matter,myself,couldn't,exactly,having,probably,happen,we've,hurt,boy,dead,gotta,alone,excuse,start,kill,hard,you'd,today,car,ready,without,wants,hold,wanna,yet,seen,deal,once,gone,morning,supposed,friends,head,stuff,worry,live,truth,face,forget,true,cause,soon,knows,telling,wife,who's,chance,run,move,anyone,person,bye,somebody,heart,miss,making,meet,anyway,phone,reason,damn,lost,looks,bring,case,turn,wish,tomorrow,kids,trust,check,change,anymore,least,aren't,working,makes,taking,means,brother,hate,ago,says,beautiful,gave,fact,crazy,sit,afraid,important,rest,fun,kid,word,watch,glad,everyone,sister,minutes,everybody,bit,couple,whoa,either,mrs,feeling,daughter,wow,gets,asked,break,promise,door,close,hand,easy,question,tried,far,walk,needs,mine,killed,hospital,anybody,alright,wedding,shut,able,die,perfect,stand,comes,hit,waiting,dinner,funny,husband,almost,pay,answer,cool,eyes,news,child,shouldn't,yours,moment,sleep,read,where's,sounds,sonny,pick,sometimes,bed,date,plan,hours,lose,hands,serious,shit,behind,inside,ahead,week,wonderful,fight,past,cut,quite,he'll,sick,it'll,eat,nobody,goes,save,seems,finally,lives,worried,upset,carly,met,brought,seem,sort,safe,weren't,leaving,front,shot,loved,asking,running,clear,figure,hot,felt,parents,drink,absolutely,how's,daddy,sweet,alive,sense,meant,happens,bet,blood,ain't,kidding,lie,meeting,dear,seeing,sound,fault,ten,buy,hour,speak,lady,jen,thinks,christmas,outside,hang,possible,worse,mistake,ooh,handle,spend,totally,giving,here's,marriage,realize,unless,sex,send,needed,scared,picture,talked,ass,hundred,changed,completely,explain,certainly,sign,boys,relationship,loves,hair,lying,choice,anywhere,future,weird,luck,she'll,turned,touch,kiss,crane,questions,obviously,wonder,pain,calling,somewhere,throw,straight,cold,fast,words,food,none,drive,feelings,they'll,marry,drop,cannot,dream,protect,twenty,surprise,sweetheart,poor,looked,mad,except,gun,y'know,dance,takes,appreciate,especially,situation,besides,pull,hasn't,worth,sheridan,amazing,expect,swear,piece,busy,happening,movie,we'd,catch,perhaps,step,fall,watching,kept,darling,dog,honor,moving,till,admit,problems,murder,he'd,evil,definitely,feels,honest,eye,broke,missed,longer,dollars,tired,evening,starting,entire,trip,niles,suppose,calm,imagine,fair,caught,blame,sitting,favor,apartment,terrible,clean,learn,frasier,relax,accident,wake,prove,smart,message,missing,forgot,interested,table,nbsp,mouth,pregnant,ring,careful,shall,dude,ride,figured,wear,shoot,stick,follow,angry,write,stopped,ran,standing,forgive,jail,wearing,ladies,kinda,lunch,cristian,greenlee,gotten,hoping,phoebe,thousand,ridge,paper,tough,tape,count,boyfriend,proud,agree,birthday,they've,share,offer,hurry,feet,wondering,decision,ones,finish,voice,herself,would've,mess,deserve,evidence,cute,dress,interesting,hotel,enjoy,quiet,concerned,staying,beat,sweetie,mention,clothes,fell,neither,mmm,fix,respect,prison,attention,holding,calls,surprised,bar,keeping,gift,hadn't,putting,dark,owe,ice,helping,normal,aunt,lawyer,apart,plans,jax,girlfriend,floor,whether,everything's,box,judge,upstairs,sake,mommy,possibly,worst,acting,accept,blow,strange,saved,conversation,plane,mama,yesterday,lied,quick,lately,stuck,difference,store,she'd,bought,doubt,listening,walking,cops,deep,dangerous,buffy,sleeping,chloe,rafe,join,card,crime,gentlemen,willing,window,walked,guilty,likes,fighting,difficult,soul,joke,favorite,uncle,promised,bother,seriously,cell,knowing,broken,advice,somehow,paid,losing,push,helped,killing,boss,liked,innocent,rules,learned,thirty,risk,letting,speaking,ridiculous,afternoon,apologize,nervous,charge,patient,boat,how'd,hide,detective,planning,huge,breakfast,horrible,awful,pleasure,driving,hanging,picked,sell,quit,apparently,dying,notice,congratulations,visit,could've,c'mon,letter,decide,forward,fool,showed,smell,seemed,spell,memory,pictures,slow,seconds,hungry,hearing,kitchen,ma'am,should've,realized,kick,grab,discuss,fifty,reading,idiot,suddenly,agent,destroy,bucks,shoes,peace,arms,demon,livvie,consider,papers,incredible,witch,drunk,attorney,tells,knock,ways,gives,nose,skye,turns,keeps,jealous,drug,sooner,cares,plenty,extra,outta,weekend,matters,gosh,opportunity,impossible,waste,pretend,jump,eating,proof,slept,arrest,breathe,perfectly,warm,pulled,twice,easier,goin,dating,suit,romantic,drugs,comfortable,finds,checked,divorce,begin,ourselves,closer,ruin,smile,laugh,treat,fear,what'd,otherwise,excited,mail,hiding,stole,pacey,noticed,fired,excellent,bringing,bottom,note,sudden,bathroom,honestly,sing,foot,remind,charges,witness,finding,tree,dare,hardly,that'll,steal,silly,contact,teach,shop,plus,colonel,fresh,trial,invited,roll,reach,dirty,choose,emergency,dropped,butt,credit,obvious,locked,loving,nuts,agreed,prue,goodbye,condition,guard,fuckin,grow,cake,mood,crap,crying,belong,partner,trick,pressure,dressed,taste,neck,nurse,raise,lots,carry,whoever,drinking,they'd,breaking,file,lock,wine,spot,paying,assume,asleep,turning,viki,bedroom,shower,nikolas,camera,fill,reasons,forty,bigger,nope,breath,doctors,pants,freak,movies,folks,cream,wild,truly,desk,convince,client,threw,hurts,spending,answers,shirt,chair,rough,doin,sees,ought,empty,wind,aware,dealing,pack,tight,hurting,guest,arrested,salem,confused,surgery,expecting,deacon,unfortunately,goddamn,bottle,beyond,whenever,pool,opinion,starts,jerk,secrets,falling,necessary,barely,dancing,tests,copy,cousin,ahem,twelve,tess,skin,fifteen,speech,orders,complicated,nowhere,escape,biggest,restaurant,grateful,usual,burn,address,someplace,screw,everywhere,regret,goodness,mistakes,details,responsibility,suspect,corner,hero,dumb,terrific,whoo,hole,memories,o'clock,teeth,ruined,bite,stenbeck,liar,showing,cards,desperate,search,pathetic,spoke,scare,marah,afford,settle,stayed,checking,hired,heads,concern,blew,alcazar,champagne,connection,tickets,happiness,saving,kissing,hated,personally,suggest,prepared,onto,downstairs,ticket,it'd,loose,holy,duty,convinced,throwing,kissed,legs,loud,saturday,babies,where'd,warning,miracle,carrying,blind,ugly,shopping,hates,sight,bride,coat,clearly,celebrate,brilliant,wanting,forrester,lips,custody,screwed,buying,toast,thoughts,reality,lexie,attitude,advantage,grandfather,sami,grandma,someday,roof,marrying,powerful,grown,grandmother,fake,must've,ideas,exciting,familiar,bomb,bout,harmony,schedule,capable,practically,correct,clue,forgotten,appointment,deserves,threat,bloody,lonely,shame,jacket,hook,scary,investigation,invite,shooting,lesson,criminal,victim,funeral,considering,burning,strength,harder,sisters,pushed,shock,pushing,heat,chocolate,miserable,corinthos,nightmare,brings,zander,crash,chances,sending,recognize,healthy,boring,feed,engaged,headed,treated,knife,drag,badly,hire,paint,pardon,behavior,closet,warn,gorgeous,milk,survive,ends,dump,rent,remembered,thanksgiving,rain,revenge,prefer,spare,pray,disappeared,aside,statement,sometime,meat,fantastic,breathing,laughing,stood,affair,ours,depends,protecting,jury,brave,fingers,murdered,explanation,picking,blah,stronger,handsome,unbelievable,anytime,shake,oakdale,wherever,pulling,facts,waited,lousy,circumstances,disappointed,weak,trusted,license,nothin,trash,understanding,slip,sounded,awake,friendship,stomach,weapon,threatened,mystery,vegas,understood,basically,switch,frankly,cheap,lifetime,deny,clock,garbage,why'd,tear,ears,indeed,changing,singing,tiny,decent,avoid,messed,filled,touched,disappear,exact,pills,kicked,harm,fortune,pretending,insurance,fancy,drove,cared,belongs,nights,lorelai,lift,timing,guarantee,chest,woke,burned,watched,heading,selfish,drinks,doll,committed,elevator,freeze,noise,wasting,ceremony,uncomfortable,staring,files,bike,stress,permission,thrown,possibility,borrow,fabulous,doors,screaming,bone,xander,what're,meal,apology,anger,honeymoon,bail,parking,fixed,wash,stolen,sensitive,stealing,photo,chose,lets,comfort,worrying,pocket,mateo,bleeding,shoulder,ignore,talent,tied,garage,dies,demons,dumped,witches,rude,crack,bothering,radar,soft,meantime,gimme,kinds,fate,concentrate,throat,prom,messages,intend,ashamed,somethin,manage,guilt,interrupt,guts,tongue,shoe,basement,sentence,purse,glasses,cabin,universe,repeat,mirror,wound,travers,tall,engagement,therapy,emotional,jeez,decisions,soup,thrilled,stake,chef,moves,extremely,moments,expensive,counting,shots,kidnapped,cleaning,shift,plate,impressed,smells,trapped,aidan,knocked,charming,attractive,argue,puts,whip,embarrassed,package,hitting,bust,stairs,alarm,pure,nail,nerve,incredibly,walks,dirt,stamp,terribly,friendly,damned,jobs,suffering,disgusting,stopping,deliver,riding,helps,disaster,bars,crossed,trap,talks,eggs,chick,threatening,spoken,introduce,confession,embarrassing,bags,impression,gate,reputation,presents,chat,suffer,argument,talkin,crowd,homework,coincidence,cancel,pride,solve,hopefully,pounds,pine,mate,illegal,generous,outfit,maid,bath,punch,freaked,begging,recall,enjoying,prepare,wheel,defend,signs,painful,yourselves,maris,that'd,suspicious,cooking,button,warned,sixty,pity,yelling,awhile,confidence,offering,pleased,panic,hers,gettin,refuse,grandpa,testify,choices,cruel,mental,gentleman,coma,cutting,proteus,guests,expert,benefit,faces,jumped,toilet,sneak,halloween,privacy,smoking,reminds,twins,swing,solid,options,commitment,crush,ambulance,wallet,gang,eleven,option,laundry,assure,stays,skip,fail,discussion,clinic,betrayed,sticking,bored,mansion,soda,sheriff,suite,handled,busted,load,happier,studying,romance,procedure,commit,assignment,suicide,minds,swim,yell,llanview,chasing,proper,believes,humor,hopes,lawyers,giant,latest,escaped,parent,tricks,insist,dropping,cheer,medication,flesh,routine,sandwich,handed,false,beating,warrant,awfully,odds,treating,thin,suggesting,fever,sweat,silent,clever,sweater,mall,sharing,assuming,judgment,goodnight,divorced,surely,steps,confess,math,listened,comin,answered,vulnerable,bless,dreaming,chip,zero,pissed,nate,kills,tears,knees,chill,brains,unusual,packed,dreamed,cure,lookin,grave,cheating,breaks,locker,gifts,awkward,thursday,joking,reasonable,dozen,curse,quartermaine,millions,dessert,rolling,detail,alien,delicious,closing,vampires,wore,tail,secure,salad,murderer,spit,offense,dust,conscience,bread,answering,lame,invitation,grief,smiling,pregnancy,prisoner,delivery,guards,virus,shrink,freezing,wreck,massimo,wire,technically,blown,anxious,cave,holidays,cleared,wishes,caring,candles,bound,charm,pulse,jumping,jokes,boom,occasion,silence,nonsense,frightened,slipped,dimera,blowing,relationships,kidnapping,spin,tool,roxy,packing,blaming,wrap,obsessed,fruit,torture,personality,there'll,fairy,necessarily,seventy,print,motel,underwear,grams,exhausted,believing,freaking,carefully,trace,touching,messing,recovery,intention,consequences,belt,sacrifice,courage,enjoyed,attracted,remove,testimony,intense,heal,defending,unfair,relieved,loyal,slowly,buzz,alcohol,surprises,psychiatrist,plain,attic,who'd,uniform,terrified,cleaned,zach,threaten,fella,enemies,satisfied,imagination,hooked,headache,forgetting,counselor,andie,acted,badge,naturally,frozen,sakes,appropriate,trunk,dunno,costume,sixteen,impressive,kicking,junk,grabbed,understands,describe,clients,owns,affect,witnesses,starving,instincts,happily,discussing,deserved,strangers,surveillance,admire,questioning,dragged,barn,deeply,wrapped,wasted,tense,hoped,fellas,roommate,mortal,fascinating,stops,arrangements,agenda,literally,propose,honesty,underneath,sauce,promises,lecture,eighty,torn,shocked,backup,differently,ninety,deck,biological,pheebs,ease,creep,waitress,telephone,ripped,raising,scratch,rings,prints,thee,arguing,ephram,asks,oops,diner,annoying,taggert,sergeant,blast,towel,clown,habit,creature,bermuda,snap,react,paranoid,handling,eaten,therapist,comment,sink,reporter,nurses,beats,priority,interrupting,warehouse,loyalty,inspector,pleasant,excuses,threats,guessing,tend,praying,motive,unconscious,mysterious,unhappy,tone,switched,rappaport,sookie,neighbor,loaded,swore,piss,balance,toss,misery,thief,squeeze,lobby,goa'uld,geez,exercise,forth,booked,sandburg,poker,eighteen,d'you,bury,everyday,digging,creepy,wondered,liver,hmmm,magical,fits,discussed,moral,helpful,searching,flew,depressed,aisle,cris,amen,vows,neighbors,darn,cents,arrange,annulment,useless,adventure,resist,fourteen,celebrating,inch,debt,violent,sand,teal'c,celebration,reminded,phones,paperwork,emotions,stubborn,pound,tension,stroke,steady,overnight,chips,beef,suits,boxes,cassadine,collect,tragedy,spoil,realm,wipe,surgeon,stretch,stepped,nephew,neat,limo,confident,perspective,climb,punishment,finest,springfield,hint,furniture,blanket,twist,proceed,fries,worries,niece,gloves,soap,signature,disappoint,crawl,convicted,flip,counsel,doubts,crimes,accusing,shaking,remembering,hallway,halfway,bothered,madam,gather,cameras,blackmail,symptoms,rope,ordinary,imagined,cigarette,supportive,explosion,trauma,ouch,furious,cheat,avoiding,whew,thick,oooh,boarding,approve,urgent,shhh,misunderstanding,drawer,phony,interfere,catching,bargain,tragic,respond,punish,penthouse,thou,rach,ohhh,insult,bugs,beside,begged,absolute,strictly,socks,senses,sneaking,reward,polite,checks,tale,physically,instructions,fooled,blows,tabby,bitter,adorable,y'all,tested,suggestion,jewelry,alike,jacks,distracted,shelter,lessons,constable,circus,audition,tune,shoulders,mask,helpless,feeding,explains,sucked,robbery,objection,behave,valuable,shadows,courtroom,confusing,talented,smarter,mistaken,customer,bizarre,scaring,motherfucker,alert,vecchio,reverend,foolish,compliment,bastards,worker,wheelchair,protective,gentle,reverse,picnic,knee,cage,wives,wednesday,voices,toes,stink,scares,pour,cheated,slide,ruining,filling,exit,cottage,upside,proves,parked,diary,complaining,confessed,pipe,merely,massage,chop,spill,prayer,betray,waiter,scam,rats,fraud,brush,tables,sympathy,pill,filthy,seventeen,employee,bracelet,pays,fairly,deeper,arrive,tracking,spite,shed,recommend,oughta,nanny,menu,diet,corn,roses,patch,dime,devastated,subtle,bullets,beans,pile,confirm,strings,parade,borrowed,toys,straighten,steak,premonition,planted,honored,exam,convenient,traveling,laying,insisted,dish,aitoro,kindly,grandson,donor,temper,teenager,proven,mothers,denial,backwards,tent,swell,noon,happiest,drives,thinkin,spirits,potion,holes,fence,whatsoever,rehearsal,overheard,lemme,hostage,bench,tryin,taxi,shove,moron,impress,needle,intelligent,instant,disagree,stinks,rianna,recover,groom,gesture,constantly,bartender,suspects,sealed,legally,hears,dresses,sheet,psychic,teenage,knocking,judging,accidentally,waking,rumor,manners,homeless,hollow,desperately,tapes,referring,item,genoa,gear,majesty,cried,tons,spells,instinct,quote,motorcycle,convincing,fashioned,aids,accomplished,grip,bump,upsetting,needing,invisible,forgiveness,feds,compare,bothers,tooth,inviting,earn,compromise,cocktail,tramp,jabot,intimate,dignity,dealt,souls,informed,gods,dressing,cigarettes,alistair,leak,fond,corky,seduce,liquor,fingerprints,enchantment,butters,stuffed,stavros,emotionally,transplant,tips,oxygen,nicely,lunatic,drill,complain,announcement,unfortunate,slap,prayers,plug,opens,oath,o'neill,mutual,yacht,remembers,fried,extraordinary,bait,warton,sworn,stare,safely,reunion,burst,might've,dive,aboard,expose,buddies,trusting,booze,sweep,sore,scudder,properly,parole,ditch,canceled,speaks,glow,wears,thirsty,skull,ringing,dorm,dining,bend,unexpected,pancakes,harsh,flattered,ahhh,troubles,fights,favourite,eats,rage,undercover,spoiled,sloane,shine,destroying,deliberately,conspiracy,thoughtful,sandwiches,plates,nails,miracles,fridge,drank,contrary,beloved,allergic,washed,stalking,solved,sack,misses,forgiven,bent,maciver,involve,dragging,cooked,pointing,foul,dull,beneath,heels,faking,deaf,stunt,jealousy,hopeless,fears,cuts,scenario,necklace,crashed,accuse,restraining,homicide,helicopter,firing,safer,auction,videotape,tore,reservations,pops,appetite,wounds,vanquish,ironic,fathers,excitement,anyhow,tearing,sends,rape,laughed,belly,dealer,cooperate,accomplish,wakes,spotted,sorts,reservation,ashes,tastes,supposedly,loft,intentions,integrity,wished,towels,suspected,investigating,inappropriate,lipstick,lawn,compassion,cafeteria,scarf,precisely,obsession,loses,lighten,infection,granddaughter,explode,balcony,this'll,spying,publicity,depend,cracked,conscious,ally,absurd,vicious,invented,forbid,directions,defendant,bare,announce,screwing,salesman,robbed,leap,lakeview,insanity,reveal,possibilities,kidnap,gown,chairs,wishing,setup,punished,criminals,regrets,raped,quarters,lamp,dentist,anyways,anonymous,semester,risks,owes,lungs,explaining,delicate,tricked,eager,doomed,adoption,stab,sickness,scum,floating,envelope,vault,sorel,pretended,potatoes,plea,photograph,payback,misunderstood,kiddo,healing,cascade,capeside,stabbed,remarkable,brat,privilege,passionate,nerves,lawsuit,kidney,disturbed,cozy,tire,shirts,oven,ordering,delay,risky,monsters,honorable,grounded,closest,breakdown,bald,abandon,scar,collar,worthless,sucking,enormous,disturbing,disturb,distract,deals,conclusions,vodka,dishes,crawling,briefcase,wiped,whistle,sits,roast,rented,pigs,flirting,deposit,bottles,topic,riot,overreacting,logical,hostile,embarrass,casual,beacon,amusing,altar,claus,survival,skirt,shave,porch,ghosts,favors,drops,dizzy,chili,advise,strikes,rehab,photographer,peaceful,leery,heavens,fortunately,fooling,expectations,cigar,weakness,ranch,practicing,examine,cranes,bribe,sail,prescription,hush,fragile,forensics,expense,drugged,cows,bells,visitor,suitcase,sorta,scan,manticore,insecure,imagining,hardest,clerk,wrist,what'll,starters,silk,pump,pale,nicer,haul,flies,boot,thumb,there'd,how're,elders,quietly,pulls,idiots,erase,denying,ankle,amnesia,accepting,heartbeat,devane,confront,minus,legitimate,fixing,arrogant,tuna,supper,slightest,sins,sayin,recipe,pier,paternity,humiliating,genuine,snack,rational,minded,guessed,weddings,tumor,humiliated,aspirin,spray,picks,eyed,drowning,contacts,ritual,perfume,hiring,hating,docks,creatures,visions,thanking,thankful,sock,nineteen,fork,throws,teenagers,stressed,slice,rolls,plead,ladder,kicks,detectives,assured,tellin,shallow,responsibilities,repay,howdy,girlfriends,deadly,comforting,ceiling,verdict,insensitive,spilled,respected,messy,interrupted,halliwell,blond,bleed,wardrobe,takin,murders,backs,underestimate,justify,harmless,frustrated,fold,enzo,communicate,bugging,arson,whack,salary,rumors,obligation,liking,dearest,congratulate,vengeance,rack,puzzle,fires,courtesy,caller,blamed,tops,quiz,prep,curiosity,circles,barbecue,sunnydale,spinning,psychotic,cough,accusations,resent,laughs,freshman,envy,drown,bartlet,asses,sofa,poster,highness,dock,apologies,theirs,stat,stall,realizes,psych,mmmm,fools,understandable,treats,succeed,stir,relaxed,makin,gratitude,faithful,accent,witter,wandering,locate,inevitable,gretel,deed,crushed,controlling,smelled,robe,gossip,gambling,cosmetics,accidents,surprising,stiff,sincere,rushed,refrigerator,preparing,nightmares,mijo,ignoring,hunch,fireworks,drowned,brass,whispering,sophisticated,luggage,hike,explore,emotion,crashing,contacted,complications,shining,rolled,righteous,reconsider,goody,geek,frightening,ethics,creeps,courthouse,camping,affection,smythe,haircut,essay,baked,apologized,vibe,respects,receipt,mami,hats,destructive,adore,adopt,tracked,shorts,reminding,dough,creations,cabot,barrel,snuck,slight,reporters,pressing,magnificent,madame,lazy,glorious,fiancee,bits,visitation,sane,kindness,shoulda,rescued,mattress,lounge,lifted,importantly,glove,enterprises,disappointment,condo,beings,admitting,yelled,waving,spoon,screech,satisfaction,reads,nailed,worm,tick,resting,marvelous,fuss,cortlandt,chased,pockets,luckily,lilith,filing,conversations,consideration,consciousness,worlds,innocence,forehead,aggressive,trailer,slam,quitting,inform,delighted,daylight,danced,confidential,aunts,washing,tossed,spectra,marrow,lined,implying,hatred,grill,corpse,clues,sober,offended,morgue,infected,humanity,distraction,cart,wired,violation,promising,harassment,glue,d'angelo,cursed,brutal,warlocks,wagon,unpleasant,proving,priorities,mustn't,lease,flame,disappearance,depressing,thrill,sitter,ribs,flush,earrings,deadline,corporal,collapsed,update,snapped,smack,melt,figuring,delusional,coulda,burnt,tender,sperm,realise,pork,popped,interrogation,esteem,choosing,undo,pres,prayed,plague,manipulate,insulting,detention,delightful,coffeehouse,betrayal,apologizing,adjust,wrecked,wont,whipped,rides,reminder,monsieur,faint,bake,distress,correctly,complaint,blocked,tortured,risking,pointless,handing,dumping,cups,alibi,struggling,shiny,risked,mummy,mint,hose,hobby,fortunate,fleischman,fitting,curtain,counseling,rode,puppet,modeling,memo,irresponsible,humiliation,hiya,freakin,felony,choke,blackmailing,appreciated,tabloid,suspicion,recovering,pledge,panicked,nursery,louder,jeans,investigator,homecoming,frustrating,buys,busting,buff,sleeve,irony,dope,declare,autopsy,workin,torch,prick,limb,hysterical,goddamnit,fetch,dimension,crowded,clip,climbing,bonding,woah,trusts,negotiate,lethal,iced,fantasies,deeds,bore,babysitter,questioned,outrageous,kiriakis,insulted,grudge,driveway,deserted,definite,beep,wires,suggestions,searched,owed,lend,drunken,demanding,costanza,conviction,bumped,weigh,touches,tempted,shout,resolve,relate,poisoned,meals,invitations,haunted,bogus,autograph,affects,tolerate,stepping,spontaneous,sleeps,probation,manny,fist,spectacular,hostages,heroin,havin,habits,encouraging,consult,burgers,boyfriends,bailed,baggage,watches,troubled,torturing,teasing,sweetest,qualities,postpone,overwhelmed,malkovich,impulse,classy,charging,amazed,policeman,hypocrite,humiliate,hideous,d'ya,costumes,bluffing,betting,bein,bedtime,alcoholic,vegetable,tray,suspicions,spreading,splendid,shrimp,shouting,pressed,nooo,grieving,gladly,fling,eliminate,cereal,aaah,sonofabitch,paralyzed,lotta,locks,guaranteed,dummy,despise,dental,briefing,bluff,batteries,whatta,sounding,servants,presume,handwriting,fainted,dried,allright,acknowledge,whacked,toxic,reliable,quicker,overwhelming,lining,harassing,fatal,endless,dolls,convict,whatcha,unlikely,shutting,positively,overcome,goddam,essence,dose,diagnosis,cured,bully,ahold,yearbook,tempting,shelf,prosecution,pouring,possessed,greedy,wonders,thorough,spine,rath,psychiatric,meaningless,latte,jammed,ignored,fiance,evidently,contempt,compromised,cans,weekends,urge,theft,suing,shipment,scissors,responding,proposition,noises,matching,hormones,hail,grandchildren,gently,smashed,sexually,sentimental,nicest,manipulated,intern,handcuffs,framed,errands,entertaining,crib,carriage,barge,spends,slipping,seated,rubbing,rely,reject,recommendation,reckon,headaches,float,embrace,corners,whining,sweating,skipped,mountie,motives,listens,cristobel,cleaner,cheerleader,balsom,unnecessary,stunning,scent,quartermaines,pose,montega,loosen,info,hottest,haunt,gracious,forgiving,errand,cakes,blames,abortion,sketch,shifts,plotting,perimeter,pals,mere,mattered,lonigan,interference,eyewitness,enthusiasm,diapers,strongest,shaken,punched,portal,catches,backyard,terrorists,sabotage,organs,needy,cuff,civilization,woof,who'll,prank,obnoxious,mates,hereby,gabby,faked,cellar,whitelighter,void,strangle,sour,muffins,interfering,demonic,clearing,boutique,barrington,terrace,smoked,righty,quack,petey,pact,knot,ketchup,disappearing,cordy,uptight,ticking,terrifying,tease,swamp,secretly,rejection,reflection,realizing,rays,mentally,marone,doubted,deception,congressman,cheesy,toto,stalling,scoop,ribbon,immune,expects,destined,bets,bathing,appreciation,accomplice,wander,shoved,sewer,scroll,retire,lasts,fugitive,freezer,discount,cranky,crank,clearance,bodyguard,anxiety,accountant,whoops,volunteered,talents,stinking,remotely,garlic,decency,cord,beds,altogether,uniforms,tremendous,popping,outa,observe,lung,hangs,feelin,dudes,donation,disguise,curb,bites,antique,toothbrush,realistic,predict,landlord,hourglass,hesitate,consolation,babbling,tipped,stranded,smartest,repeating,puke,psst,paycheck,overreacted,macho,juvenile,grocery,freshen,disposal,cuffs,caffeine,vanished,unfinished,ripping,pinch,flattering,expenses,dinners,colleague,ciao,belthazor,attorneys,woulda,whereabouts,waitin,truce,tripped,tasted,steer,poisoning,manipulative,immature,husbands,heel,granddad,delivering,condoms,addict,trashed,raining,pasta,needles,leaning,detector,coolest,batch,appointments,almighty,vegetables,spark,perfection,pains,momma,mole,meow,hairs,getaway,cracking,compliments,behold,verge,tougher,timer,tapped,taped,specialty,snooping,shoots,rendezvous,pentagon,leverage,jeopardize,janitor,grandparents,forbidden,clueless,bidding,ungrateful,unacceptable,tutor,serum,scuse,pajamas,mouths,lure,irrational,doom,cries,beautifully,arresting,approaching,traitor,sympathetic,smug,smash,rental,prostitute,premonitions,jumps,inventory,darlin,committing,banging,asap,worms,violated,vent,traumatic,traced,sweaty,shaft,overboard,insight,healed,grasp,experiencing,crappy,crab,chunk,awww,stain,shack,reacted,pronounce,poured,moms,marriages,jabez,handful,flipped,fireplace,embarrassment,disappears,concussion,bruises,brakes,twisting,swept,summon,splitting,sloppy,settling,reschedule,notch,hooray,grabbing,exquisite,disrespect,thornhart,straw,slapped,shipped,shattered,ruthless,refill,payroll,numb,mourning,manly,hunk,entertain,drift,dreadful,doorstep,confirmation,chops,appreciates,vague,tires,stressful,stashed,stash,sensed,preoccupied,predictable,noticing,madly,gunshot,dozens,dork,confuse,cleaners,charade,chalk,cappuccino,bouquet,amulet,addiction,who've,warming,unlock,satisfy,sacrificed,relaxing,lone,blocking,blend,blankets,addicted,yuck,hunger,hamburger,greeting,greet,gravy,gram,dreamt,dice,caution,backpack,agreeing,whale,taller,supervisor,sacrifices,phew,ounce,irrelevant,gran,felon,favorites,farther,fade,erased,easiest,convenience,compassionate,cane,backstage,agony,adores,veins,tweek,thieves,surgical,strangely,stetson,recital,proposing,productive,meaningful,immunity,hassle,goddamned,frighten,dearly,cease,ambition,wage,unstable,salvage,richer,refusing,raging,pumping,pressuring,mortals,lowlife,intimidated,intentionally,inspire,forgave,devotion,despicable,deciding,dash,comfy,breach,bark,aaaah,switching,swallowed,stove,screamed,scars,russians,pounding,poof,pipes,pawn,legit,invest,farewell,curtains,civilized,caviar,boost,token,superstition,supernatural,sadness,recorder,psyched,motivated,microwave,hallelujah,fraternity,dryer,cocoa,chewing,acceptable,unbelievably,smiled,smelling,simpler,respectable,remarks,khasinau,indication,gutter,grabs,fulfill,flashlight,ellenor,blooded,blink,blessings,beware,uhhh,turf,swings,slips,shovel,shocking,puff,mirrors,locking,heartless,fras,childish,cardiac,utterly,tuscany,ticked,stunned,statesville,sadly,purely,kiddin,jerks,hitch,flirt,fare,equals,dismiss,christening,casket,c'mere,breakup,biting,antibiotics,accusation,abducted,witchcraft,thread,runnin,punching,paramedics,newest,murdering,masks,lawndale,initials,grampa,choking,charms,careless,bushes,buns,bummed,shred,saves,saddle,rethink,regards,precinct,persuade,meds,manipulating,llanfair,leash,hearted,guarantees,fucks,disgrace,deposition,bookstore,boil,vitals,veil,trespassing,sidewalk,sensible,punishing,overtime,optimistic,obsessing,notify,mornin,jeopardy,jaffa,injection,hilarious,desires,confide,cautious,yada,where're,vindictive,vial,teeny,stroll,sittin,scrub,rebuild,posters,ordeal,nuns,intimacy,inheritance,exploded,donate,distracting,despair,crackers,wildwind,virtue,thoroughly,tails,spicy,sketches,sights,sheer,shaving,seize,scarecrow,refreshing,prosecute,platter,napkin,misplaced,merchandise,loony,jinx,heroic,frankenstein,ambitious,syrup,solitary,resemblance,reacting,premature,lavery,flashes,cheque,awright,acquainted,wrapping,untie,salute,realised,priceless,partying,lightly,lifting,kasnoff,insisting,glowing,generator,explosives,cutie,confronted,buts,blouse,ballistic,antidote,analyze,allowance,adjourned,unto,understatement,tucked,touchy,subconscious,screws,sarge,roommates,rambaldi,offend,nerd,knives,irresistible,incapable,hostility,goddammit,fuse,frat,curfew,blackmailed,walkin,starve,sleigh,sarcastic,recess,rebound,pinned,parlor,outfits,livin,heartache,haired,fundraiser,doorman,discreet,dilucca,cracks,considerate,climbed,catering,apophis,zoey,urine,strung,stitches,sordid,sark,protector,phoned,pets,hostess,flaw,flavor,deveraux,consumed,confidentiality,bourbon,straightened,specials,spaghetti,prettier,powerless,playin,playground,paranoia,instantly,havoc,exaggerating,eavesdropping,doughnuts,diversion,deepest,cutest,comb,bela,behaving,anyplace,accessory,workout,translate,stuffing,speeding,slime,royalty,polls,marital,lurking,lottery,imaginary,greetings,fairwinds,elegant,elbow,credibility,credentials,claws,chopped,bridal,bedside,babysitting,witty,unforgivable,underworld,tempt,tabs,sophomore,selfless,secrecy,restless,okey,movin,metaphor,messes,meltdown,lecter,incoming,gasoline,diefenbaker,buckle,admired,adjustment,warmth,throats,seduced,queer,parenting,noses,luckiest,graveyard,gifted,footsteps,dimeras,cynical,wedded,verbal,unpredictable,tuned,stoop,slides,sinking,rigged,plumbing,lingerie,hankey,greed,everwood,elope,dresser,chauffeur,bulletin,bugged,bouncing,temptation,strangest,slammed,sarcasm,pending,packages,orderly,obsessive,murderers,meteor,inconvenience,glimpse,froze,execute,courageous,consulate,closes,bosses,bees,amends,wuss,wolfram,wacky,unemployed,testifying,syringe,stew,startled,sorrow,sleazy,shaky,screams,rsquo,remark,poke,nutty,mentioning,mend,inspiring,impulsive,housekeeper,foam,fingernails,conditioning,baking,whine,thug,starved,sniffing,sedative,programmed,picket,paged,hound,homosexual,homo,hips,forgets,flipping,flea,flatter,dwell,dumpster,choo,assignments,ants,vile,unreasonable,tossing,thanked,steals,souvenir,scratched,psychopath,outs,obstruction,obey,lump,insists,harass,gloat,filth,edgy,didn,coroner,confessing,bruise,betraying,bailing,appealing,adebisi,wrath,wandered,waist,vain,traps,stepfather,poking,obligated,heavenly,dilemma,crazed,contagious,coaster,cheering,bundle,vomit,thingy,speeches,robbing,raft,pumped,pillows,peep,packs,neglected,m'kay,loneliness,intrude,helluva,gardener,forresters,drooling,betcha,vase,supermarket,squat,spitting,rhyme,relieve,receipts,racket,pictured,pause,overdue,motivation,morgendorffer,kidnapper,insect,horns,feminine,eyeballs,dumps,disappointing,crock,convertible,claw,clamp,canned,cambias,bathtub,avanya,artery,weep,warmer,suspense,summoned,spiders,reiber,raving,pushy,postponed,ohhhh,noooo,mold,laughter,incompetent,hugging,groceries,drip,communicating,auntie,adios,wraps,wiser,willingly,weirdest,timmih,thinner,swelling,swat,steroids,sensitivity,scrape,rehearse,prophecy,ledge,justified,insults,hateful,handles,doorway,chatting,buyer,buckaroo,bedrooms,askin,ammo,tutoring,subpoena,scratching,privileges,pager,mart,intriguing,idiotic,grape,enlighten,corrupt,brunch,bridesmaid,barking,applause,acquaintance,wretched,superficial,soak,smoothly,sensing,restraint,posing,pleading,payoff,oprah,nemo,morals,loaf,jumpy,ignorant,herbal,hangin,germs,generosity,flashing,doughnut,clumsy,chocolates,captive,behaved,apologise,vanity,stumbled,preview,poisonous,perjury,parental,onboard,mugged,minding,linen,knots,interviewing,humour,grind,greasy,goons,drastic,coop,comparing,cocky,clearer,bruised,brag,bind,worthwhile,whoop,vanquishing,tabloids,sprung,spotlight,sentencing,racist,provoke,pining,overly,locket,imply,impatient,hovering,hotter,fest,endure,dots,doren,debts,crawled,chained,brit,breaths,weirdo,warmed,wand,troubling,tok'ra,strapped,soaked,skipping,scrambled,rattle,profound,musta,mocking,misunderstand,limousine,kacl,hustle,forensic,enthusiastic,duct,drawers,devastating,conquer,clarify,chores,cheerleaders,cheaper,callin,blushing,barging,abused,yoga,wrecking,wits,waffles,virginity,vibes,uninvited,unfaithful,teller,strangled,scheming,ropes,rescuing,rave,postcard,o'reily,morphine,lotion,lads,kidneys,judgement,itch,indefinitely,grenade,glamorous,genetically,freud,discretion,delusions,crate,competent,bakery,argh,ahhhh,wedge,wager,unfit,tripping,torment,superhero,stirring,spinal,sorority,seminar,scenery,rabble,pneumonia,perks,override,ooooh,mija,manslaughter,mailed,lime,lettuce,intimidate,guarded,grieve,grad,frustration,doorbell,chinatown,authentic,arraignment,annulled,allergies,wanta,verify,vegetarian,tighter,telegram,stalk,spared,shoo,satisfying,saddam,requesting,pens,overprotective,obstacles,notified,nasedo,grandchild,genuinely,flushed,fluids,floss,escaping,ditched,cramp,corny,bunk,bitten,billions,bankrupt,yikes,wrists,ultrasound,ultimatum,thirst,sniff,shakes,salsa,retrieve,reassuring,pumps,neurotic,negotiating,needn't,monitors,millionaire,lydecker,limp,incriminating,hatchet,gracias,gordie,fills,feeds,doubting,decaf,biopsy,whiz,voluntarily,ventilator,unpack,unload,toad,spooked,snitch,schillinger,reassure,persuasive,mystical,mysteries,matrimony,mails,jock,headline,explanations,dispatch,curly,cupid,condolences,comrade,cassadines,bulb,bragging,awaits,assaulted,ambush,adolescent,abort,yank,whit,vaguely,undermine,tying,swamped,stabbing,slippers,slash,sincerely,sigh,setback,secondly,rotting,precaution,pcpd,melting,liaison,hots,hooking,headlines,haha,ganz,fury,felicity,fangs,encouragement,earring,dreidel,dory,donut,dictate,decorating,cocktails,bumps,blueberry,believable,backfired,backfire,apron,adjusting,vous,vouch,vitamins,ummm,tattoos,slimy,sibling,shhhh,renting,peculiar,parasite,paddington,marries,mailbox,magically,lovebirds,knocks,informant,exits,drazen,distractions,disconnected,dinosaurs,dashwood,crooked,conveniently,wink,warped,underestimated,tacky,shoving,seizure,reset,pushes,opener,mornings,mash,invent,indulge,horribly,hallucinating,festive,eyebrows,enjoys,desperation,dealers,darkest,daph,boragora,belts,bagel,authorization,auditions,agitated,wishful,wimp,vanish,unbearable,tonic,suffice,suction,slaying,safest,rocking,relive,puttin,prettiest,noisy,newlyweds,nauseous,misguided,mildly,midst,liable,judgmental,indy,hunted,givin,fascinated,elephants,dislike,deluded,decorate,crummy,contractions,carve,bottled,bonded,bahamas,unavailable,twenties,trustworthy,surgeons,stupidity,skies,remorse,preferably,pies,nausea,napkins,mule,mourn,melted,mashed,inherit,greatness,golly,excused,dumbo,drifting,delirious,damaging,cubicle,compelled,comm,chooses,checkup,boredom,bandages,alarms,windshield,who're,whaddya,transparent,surprisingly,sunglasses,slit,roar,reade,prognosis,probe,pitiful,persistent,peas,nosy,nagging,morons,masterpiece,martinis,limbo,liars,irritating,inclined,hump,hoynes,fiasco,eatin,cubans,concentrating,colorful,clam,cider,brochure,barto,bargaining,wiggle,welcoming,weighing,vanquished,stains,sooo,snacks,smear,sire,resentment,psychologist,pint,overhear,morality,landingham,kisser,hoot,holling,handshake,grilled,formality,elevators,depths,confirms,boathouse,accidental,westbridge,wacko,ulterior,thugs,thighs,tangled,stirred,snag,sling,sleaze,rumour,ripe,remarried,puddle,pins,perceptive,miraculous,longing,lockup,librarian,impressions,immoral,hypothetically,guarding,gourmet,gabe,faxed,extortion,downright,digest,cranberry,bygones,buzzing,burying,bikes,weary,taping,takeout,sweeping,stepmother,stale,senor,seaborn,pros,pepperoni,newborn,ludicrous,injected,geeks,forged,faults,drue,dire,dief,desi,deceiving,caterer,calmed,budge,ankles,vending,typing,tribbiani,there're,squared,snowing,shades,sexist,rewrite,regretted,raises,picky,orphan,mural,misjudged,miscarriage,memorize,leaking,jitters,invade,interruption,illegally,handicapped,glitch,gittes,finer,distraught,dispose,dishonest,digs,dads,cruelty,circling,canceling,butterflies,belongings,barbrady,amusement,alias,zombies,where've,unborn,swearing,stables,squeezed,sensational,resisting,radioactive,questionable,privileged,portofino,owning,overlook,orson,oddly,interrogate,imperative,impeccable,hurtful,hors,heap,graders,glance,disgust,devious,destruct,crazier,countdown,chump,cheeseburger,burglar,berries,ballroom,assumptions,annoyed,allergy,admirer,admirable,activate,underpants,twit,tack,strokes,stool,sham,scrap,retarded,resourceful,remarkably,refresh,pressured,precautions,pointy,nightclub,mustache,maui,lace,hunh,hubby,flare,dont,dokey,dangerously,crushing,clinging,choked,chem,cheerleading,checkbook,cashmere,calmly,blush,believer,amazingly,alas,what've,toilets,tacos,stairwell,spirited,sewing,rubbed,punches,protects,nuisance,motherfuckers,mingle,kynaston,knack,kinkle,impose,gullible,godmother,funniest,friggin,folding,fashions,eater,dysfunctional,drool,dripping,ditto,cruising,criticize,conceive,clone,cedars,caliber,brighter,blinded,birthdays,banquet,anticipate,annoy,whim,whichever,volatile,veto,vested,shroud,rests,reindeer,quarantine,pleases,painless,orphans,orphanage,offence,obliged,negotiation,narcotics,mistletoe,meddling,manifest,lookit,lilah,intrigued,injustice,homicidal,gigantic,exposing,elves,disturbance,disastrous,depended,demented,correction,cooped,cheerful,buyers,brownies,beverage,basics,arvin,weighs,upsets,unethical,swollen,sweaters,stupidest,sensation,scalpel,props,prescribed,pompous,objections,mushrooms,mulwray,manipulation,lured,internship,insignificant,inmate,incentive,fulfilled,disagreement,crypt,cornered,copied,brightest,beethoven,attendant,amaze,yogurt,wyndemere,vocabulary,tulsa,tactic,stuffy,respirator,pretends,polygraph,pennies,ordinarily,olives,necks,morally,martyr,leftovers,joints,hopping,homey,hints,heartbroken,forge,florist,firsthand,fiend,dandy,crippled,corrected,conniving,conditioner,clears,chemo,bubbly,bladder,beeper,baptism,wiring,wench,weaknesses,volunteering,violating,unlocked,tummy,surrogate,subid,stray,startle,specifics,slowing,scoot,robbers,rightful,richest,qfxmjrie,puffs,pierced,pencils,paralysis,makeover,luncheon,linksynergy,jerky,jacuzzi,hitched,hangover,fracture,flock,firemen,disgusted,darned,clams,borrowing,banged,wildest,weirder,unauthorized,stunts,sleeves,sixties,shush,shalt,retro,quits,pegged,painfully,paging,omelet,memorized,lawfully,jackets,intercept,ingredient,grownup,glued,fulfilling,enchanted,delusion,daring,compelling,carton,bridesmaids,bribed,boiling,bathrooms,bandage,awaiting,assign,arrogance,antiques,ainsley,turkeys,trashing,stockings,stalked,stabilized,skates,sedated,robes,respecting,psyche,presumptuous,prejudice,paragraph,mocha,mints,mating,mantan,lorne,loads,listener,itinerary,hepatitis,heave,guesses,fading,examining,dumbest,dishwasher,deceive,cunning,cripple,convictions,confided,compulsive,compromising,burglary,bumpy,brainwashed,benes,arnie,affirmative,adrenaline,adamant,watchin,waitresses,transgenic,toughest,tainted,surround,stormed,spree,spilling,spectacle,soaking,shreds,sewers,severed,scarce,scamming,scalp,rewind,rehearsing,pretentious,potions,overrated,obstacle,nerds,meems,mcmurphy,maternity,maneuver,loathe,fertility,eloping,ecstatic,ecstasy,divorcing,dignan,costing,clubhouse,clocks,candid,bursting,breather,braces,bending,arsonist,adored,absorb,valiant,uphold,unarmed,topolsky,thrilling,thigh,terminate,sustain,spaceship,snore,sneeze,smuggling,salty,quaint,patronize,patio,morbid,mamma,kettle,joyous,invincible,interpret,insecurities,impulses,illusions,holed,exploit,drivin,defenseless,dedicate,cradle,coupon,countless,conjure,cardboard,booking,backseat,accomplishment,wordsworth,wisely,valet,vaccine,urges,unnatural,unlucky,truths,traumatized,tasting,swears,strawberries,steaks,stats,skank,seducing,secretive,scumbag,screwdriver,schedules,rooting,rightfully,rattled,qualifies,puppets,prospects,pronto,posse,polling,pedestal,palms,muddy,morty,microscope,merci,lecturing,inject,incriminate,hygiene,grapefruit,gazebo,funnier,cuter,bossy,booby,aides,zende,winthrop,warrants,valentines,undressed,underage,truthfully,tampered,suffers,speechless,sparkling,sidelines,shrek,railing,puberty,pesky,outrage,outdoors,motions,moods,lunches,litter,kidnappers,itching,intuition,imitation,humility,hassling,gallons,drugstore,dosage,disrupt,dipping,deranged,debating,cuckoo,cremated,craziness,cooperating,circumstantial,chimney,blinking,biscuits,admiring,weeping,triad,trashy,soothing,slumber,slayers,skirts,siren,shindig,sentiment,rosco,riddance,quaid,purity,proceeding,pretzels,panicking,mckechnie,lovin,leaked,intruding,impersonating,ignorance,hamburgers,footprints,fluke,fleas,festivities,fences,feisty,evacuate,emergencies,deceived,creeping,craziest,corpses,conned,coincidences,bounced,bodyguards,blasted,bitterness,baloney,ashtray,apocalypse,zillion,watergate,wallpaper,telesave,sympathize,sweeter,startin,spades,sodas,snowed,sleepover,signor,seein,retainer,restroom,rested,repercussions,reliving,reconcile,prevail,preaching,overreact,o'neil,noose,moustache,manicure,maids,landlady,hypothetical,hopped,homesick,hives,hesitation,herbs,hectic,heartbreak,haunting,gangs,frown,fingerprint,exhausting,everytime,disregard,cling,chevron,chaperone,blinding,bitty,beads,battling,badgering,anticipation,upstanding,unprofessional,unhealthy,turmoil,truthful,toothpaste,tippin,thoughtless,tagataya,shooters,senseless,rewarding,propane,preposterous,pigeons,pastry,overhearing,obscene,negotiable,loner,jogging,itchy,insinuating,insides,hospitality,hormone,hearst,forthcoming,fists,fifties,etiquette,endings,destroys,despises,deprived,cuddy,crust,cloak,circumstance,chewed,casserole,bidder,bearer,artoo,applaud,appalling,vowed,virgins,vigilante,undone,throttle,testosterone,tailor,symptom,swoop,suitcases,stomp,sticker,stakeout,spoiling,snatched,smoochy,smitten,shameless,restraints,researching,renew,refund,reclaim,raoul,puzzles,purposely,punks,prosecuted,plaid,picturing,pickin,parasites,mysteriously,multiply,mascara,jukebox,interruptions,gunfire,furnace,elbows,duplicate,drapes,deliberate,decoy,cryptic,coupla,condemn,complicate,colossal,clerks,clarity,brushed,banished,argon,alarmed,worships,versa,uncanny,technicality,sundae,stumble,stripping,shuts,schmuck,satin,saliva,robber,relentless,reconnect,recipes,rearrange,rainy,psychiatrists,policemen,plunge,plugged,patched,overload,o'malley,mindless,menus,lullaby,lotte,leavin,killin,karinsky,invalid,hides,grownups,griff,flaws,flashy,flaming,fettes,evicted,dread,degrassi,dealings,dangers,cushion,bowel,barged,abide,abandoning,wonderfully,wait'll,violate,suicidal,stayin,sorted,slamming,sketchy,shoplifting,raiser,quizmaster,prefers,needless,motherhood,momentarily,migraine,lifts,leukemia,leftover,keepin,hinks,hellhole,gowns,goodies,gallon,futures,entertained,eighties,conspiring,cheery,benign,apiece,adjustments,abusive,abduction,wiping,whipping,welles,unspeakable,unidentified,trivial,transcripts,textbook,supervise,superstitious,stricken,stimulating,spielberg,slices,shelves,scratches,sabotaged,retrieval,repressed,rejecting,quickie,ponies,peeking,outraged,o'connell,moping,moaning,mausoleum,licked,kovich,klutz,interrogating,interfered,insulin,infested,incompetence,hyper,horrified,handedly,gekko,fraid,fractured,examiner,eloped,disoriented,dashing,crashdown,courier,cockroach,chipped,brushing,bombed,bolts,baths,baptized,astronaut,assurance,anemia,abuela,abiding,withholding,weave,wearin,weaker,suffocating,straws,straightforward,stench,steamed,starboard,sideways,shrinks,shortcut,scram,roasted,roaming,riviera,respectfully,repulsive,psychiatry,provoked,penitentiary,painkillers,ninotchka,mitzvah,milligrams,midge,marshmallows,looky,lapse,kubelik,intellect,improvise,implant,goa'ulds,giddy,geniuses,fruitcake,footing,fightin,drinkin,doork,detour,cuddle,crashes,combo,colonnade,cheats,cetera,bailiff,auditioning,assed,amused,alienate,aiding,aching,unwanted,topless,tongues,tiniest,superiors,soften,sheldrake,rawley,raisins,presses,plaster,nessa,narrowed,minions,merciful,lawsuits,intimidating,infirmary,inconvenient,imposter,hugged,honoring,holdin,hades,godforsaken,fumes,forgery,foolproof,folder,flattery,fingertips,exterminator,explodes,eccentric,dodging,disguised,crave,constructive,concealed,compartment,chute,chinpokomon,bodily,astronauts,alimony,accustomed,abdominal,wrinkle,wallow,valium,untrue,uncover,trembling,treasures,torched,toenails,timed,termites,telly,taunting,taransky,talker,succubus,smarts,sliding,sighting,semen,seizures,scarred,savvy,sauna,saddest,sacrificing,rubbish,riled,ratted,rationally,provenance,phonse,perky,pedal,overdose,nasal,nanites,mushy,movers,missus,midterm,merits,melodramatic,manure,knitting,invading,interpol,incapacitated,hotline,hauling,gunpoint,grail,ganza,framing,flannel,faded,eavesdrop,desserts,calories,breathtaking,bleak,blacked,batter,aggravated,yanked,wigand,whoah,unwind,undoubtedly,unattractive,twitch,trimester,torrance,timetable,taxpayers,strained,stared,slapping,sincerity,siding,shenanigans,shacking,sappy,samaritan,poorer,politely,paste,oysters,overruled,nightcap,mosquito,millimeter,merrier,manhood,lucked,kilos,ignition,hauled,harmed,goodwill,freshmen,fenmore,fasten,farce,exploding,erratic,drunks,ditching,d'artagnan,cramped,contacting,closets,clientele,chimp,bargained,arranging,anesthesia,amuse,altering,afternoons,accountable,abetting,wolek,waved,uneasy,toddy,tattooed,spauldings,sliced,sirens,schibetta,scatter,rinse,remedy,redemption,pleasures,optimism,oblige,mmmmm,masked,malicious,mailing,kosher,kiddies,judas,isolate,insecurity,incidentally,heals,headlights,growl,grilling,glazed,flunk,floats,fiery,fairness,exercising,excellency,disclosure,cupboard,counterfeit,condescending,conclusive,clicked,cleans,cholesterol,cashed,broccoli,brats,blueprints,blindfold,billing,attach,appalled,alrighty,wynant,unsolved,unreliable,toots,tighten,sweatshirt,steinbrenner,steamy,spouse,sonogram,slots,sleepless,shines,retaliate,rephrase,redeem,rambling,quilt,quarrel,prying,proverbial,priced,prescribe,prepped,pranks,possessive,plaintiff,pediatrics,overlooked,outcast,nightgown,mumbo,mediocre,mademoiselle,lunchtime,lifesaver,leaned,lambs,interns,hounding,hellmouth,hahaha,goner,ghoul,gardening,frenzy,foyer,extras,exaggerate,everlasting,enlightened,dialed,devote,deceitful,d'oeuvres,cosmetic,contaminated,conspired,conning,cavern,carving,butting,boiled,blurry,babysit,ascension,aaaaah,wildly,whoopee,whiny,weiskopf,walkie,vultures,vacations,upfront,unresolved,tampering,stockholders,snaps,sleepwalking,shrunk,sermon,seduction,scams,revolve,phenomenal,patrolling,paranormal,ounces,omigod,nightfall,lashing,innocents,infierno,incision,humming,haunts,gloss,gloating,frannie,fetal,feeny,entrapment,discomfort,detonator,dependable,concede,complication,commotion,commence,chulak,caucasian,casually,brainer,bolie,ballpark,anwar,analyzing,accommodations,youse,wring,wallowing,transgenics,thrive,tedious,stylish,strippers,sterile,squeezing,squeaky,sprained,solemn,snoring,shattering,shabby,seams,scrawny,revoked,residue,reeks,recite,ranting,quoting,predicament,plugs,pinpoint,petrified,pathological,passports,oughtta,nighter,navigate,kippie,intrigue,intentional,insufferable,hunky,how've,horrifying,hearty,hamptons,grazie,funerals,forks,fetched,excruciating,enjoyable,endanger,dumber,drying,diabolical,crossword,corry,comprehend,clipped,classmates,candlelight,brutally,brutality,boarded,bathrobe,authorize,assemble,aerobics,wholesome,whiff,vermin,trophies,trait,tragically,toying,testy,tasteful,stocked,spinach,sipping,sidetracked,scrubbing,scraping,sanctity,robberies,ridin,retribution,refrain,realities,radiant,protesting,projector,plutonium,payin,parting,o'reilly,nooooo,motherfucking,measly,manic,lalita,juggling,jerking,intro,inevitably,hypnosis,huddle,horrendous,hobbies,heartfelt,harlin,hairdresser,gonorrhea,fussing,furtwangler,fleeting,flawless,flashed,fetus,eulogy,distinctly,disrespectful,denies,crossbow,cregg,crabs,cowardly,contraction,contingency,confirming,condone,coffins,cleansing,cheesecake,certainty,cages,c'est,briefed,bravest,bosom,boils,binoculars,bachelorette,appetizer,ambushed,alerted,woozy,withhold,vulgar,utmost,unleashed,unholy,unhappiness,unconditional,typewriter,typed,twists,supermodel,subpoenaed,stringing,skeptical,schoolgirl,romantically,rocked,revoir,reopen,puncture,preach,polished,planetarium,penicillin,peacefully,nurturing,more'n,mmhmm,midgets,marklar,lodged,lifeline,jellyfish,infiltrate,hutch,horseback,heist,gents,frickin,freezes,forfeit,flakes,flair,fathered,eternally,epiphany,disgruntled,discouraged,delinquent,decipher,danvers,cubes,credible,coping,chills,cherished,catastrophe,bombshell,birthright,billionaire,ample,affections,admiration,abbotts,whatnot,watering,vinegar,unthinkable,unseen,unprepared,unorthodox,underhanded,uncool,timeless,thump,thermometer,theoretically,tapping,tagged,swung,stares,spiked,solves,smuggle,scarier,saucer,quitter,prudent,powdered,poked,pointers,peril,penetrate,penance,opium,nudge,nostrils,neurological,mockery,mobster,medically,loudly,insights,implicate,hypocritical,humanly,holiness,healthier,hammered,haldeman,gunman,gloom,freshly,francs,flunked,flawed,emptiness,drugging,dozer,derevko,deprive,deodorant,cryin,crocodile,coloring,colder,cognac,clocked,clippings,charades,chanting,certifiable,caterers,brute,brochures,botched,blinders,bitchin,banter,woken,ulcer,tread,thankfully,swine,swimsuit,swans,stressing,steaming,stamped,stabilize,squirm,snooze,shuffle,shredded,seafood,scratchy,savor,sadistic,rhetorical,revlon,realist,prosecuting,prophecies,polyester,petals,persuasion,paddles,o'leary,nuthin,neighbour,negroes,muster,meningitis,matron,lockers,letterman,legged,indictment,hypnotized,housekeeping,hopelessly,hallucinations,grader,goldilocks,girly,flask,envelopes,downside,doves,dissolve,discourage,disapprove,diabetic,deliveries,decorator,crossfire,criminally,containment,comrades,complimentary,chatter,catchy,cashier,cartel,caribou,cardiologist,brawl,booted,barbershop,aryan,angst,administer,zellie,wreak,whistles,vandalism,vamps,uterus,upstate,unstoppable,understudy,tristin,transcript,tranquilizer,toxins,tonsils,stempel,spotting,spectator,spatula,softer,snotty,slinging,showered,sexiest,sensual,sadder,rimbaud,restrain,resilient,remission,reinstate,rehash,recollection,rabies,popsicle,plausible,pediatric,patronizing,ostrich,ortolani,oooooh,omelette,mistrial,marseilles,loophole,laughin,kevvy,irritated,infidelity,hypothermia,horrific,groupie,grinding,graceful,goodspeed,gestures,frantic,extradition,echelon,disks,dawnie,dared,damsel,curled,collateral,collage,chant,calculating,bumping,bribes,boardwalk,blinds,blindly,bleeds,bickering,beasts,backside,avenge,apprehended,anguish,abusing,youthful,yells,yanking,whomever,when'd,vomiting,vengeful,unpacking,unfamiliar,undying,tumble,trolls,treacherous,tipping,tantrum,tanked,summons,straps,stomped,stinkin,stings,staked,squirrels,sprinkles,speculate,sorting,skinned,sicko,sicker,shootin,shatter,seeya,schnapps,s'posed,ronee,respectful,regroup,regretting,reeling,reckoned,ramifications,puddy,projections,preschool,plissken,platonic,permalash,outdone,outburst,mutants,mugging,misfortune,miserably,miraculously,medications,margaritas,manpower,lovemaking,logically,leeches,latrine,kneel,inflict,impostor,hypocrisy,hippies,heterosexual,heightened,hecuba,healer,gunned,grooming,groin,gooey,gloomy,frying,friendships,fredo,firepower,fathom,exhaustion,evils,endeavor,eggnog,dreaded,d'arcy,crotch,coughing,coronary,cookin,consummate,congrats,companionship,caved,caspar,bulletproof,brilliance,breakin,brash,blasting,aloud,airtight,advising,advertise,adultery,aches,wronged,upbeat,trillion,thingies,tending,tarts,surreal,specs,specialize,spade,shrew,shaping,selves,schoolwork,roomie,recuperating,rabid,quart,provocative,proudly,pretenses,prenatal,pharmaceuticals,pacing,overworked,originals,nicotine,murderous,mileage,mayonnaise,massages,losin,interrogated,injunction,impartial,homing,heartbreaker,hacks,glands,giver,fraizh,flips,flaunt,englishman,electrocuted,dusting,ducking,drifted,donating,cylon,crutches,crates,cowards,comfortably,chummy,chitchat,childbirth,businesswoman,brood,blatant,bethy,barring,bagged,awakened,asbestos,airplanes,worshipped,winnings,why're,visualize,unprotected,unleash,trays,thicker,therapists,takeoff,streisand,storeroom,stethoscope,stacked,spiteful,sneaks,snapping,slaughtered,slashed,simplest,silverware,shits,secluded,scruples,scrubs,scraps,ruptured,roaring,receptionist,recap,raditch,radiator,pushover,plastered,pharmacist,perverse,perpetrator,ornament,ointment,nineties,napping,nannies,mousse,moors,momentary,misunderstandings,manipulator,malfunction,laced,kivar,kickin,infuriating,impressionable,holdup,hires,hesitated,headphones,hammering,groundwork,grotesque,graces,gauze,gangsters,frivolous,freeing,fours,forwarding,ferrars,faulty,fantasizing,extracurricular,empathy,divorces,detonate,depraved,demeaning,deadlines,dalai,cursing,cufflink,crows,coupons,comforted,claustrophobic,casinos,camped,busboy,bluth,bennetts,baskets,attacker,aplastic,angrier,affectionate,zapped,wormhole,weaken,unrealistic,unravel,unimportant,unforgettable,twain,suspend,superbowl,stutter,stewardess,stepson,standin,spandex,souvenirs,sociopath,skeletons,shivering,sexier,selfishness,scrapbook,ritalin,ribbons,reunite,remarry,relaxation,rattling,rapist,psychosis,prepping,poses,pleasing,pisses,piling,persecuted,padded,operatives,negotiator,natty,menopause,mennihan,martimmys,loyalties,laynie,lando,justifies,intimately,inexperienced,impotent,immortality,horrors,hooky,hinges,heartbreaking,handcuffed,gypsies,guacamole,grovel,graziella,goggles,gestapo,fussy,ferragamo,feeble,eyesight,explosions,experimenting,enchanting,doubtful,dizziness,dismantle,detectors,deserving,defective,dangling,dancin,crumble,creamed,cramping,conceal,clockwork,chrissakes,chrissake,chopping,cabinets,brooding,bonfire,blurt,bloated,blackmailer,beforehand,bathed,bathe,barcode,banish,badges,babble,await,attentive,aroused,antibodies,animosity,ya'll,wrinkled,wonderland,willed,whisk,waltzing,waitressing,vigilant,upbringing,unselfish,uncles,trendy,trajectory,striped,stamina,stalled,staking,stacks,spoils,snuff,snooty,snide,shrinking,senora,secretaries,scoundrel,saline,salads,rundown,riddles,relapse,recommending,raspberry,plight,pecan,pantry,overslept,ornaments,niner,negligent,negligence,nailing,mucho,mouthed,monstrous,malpractice,lowly,loitering,logged,lingering,lettin,lattes,kamal,juror,jillefsky,jacked,irritate,intrusion,insatiable,infect,impromptu,icing,hmmmm,hefty,gasket,frightens,flapping,firstborn,faucet,estranged,envious,dopey,doesn,disposition,disposable,disappointments,dipped,dignified,deceit,dealership,deadbeat,curses,coven,counselors,concierge,clutches,casbah,callous,cahoots,brotherly,britches,brides,bethie,beige,autographed,attendants,attaboy,astonishing,appreciative,antibiotic,aneurysm,afterlife,affidavit,zoning,whats,whaddaya,vasectomy,unsuspecting,toula,topanga,tonio,toasted,tiring,terrorized,tenderness,tailing,sweats,suffocated,sucky,subconsciously,starvin,sprouts,spineless,sorrows,snowstorm,smirk,slicery,sledding,slander,simmer,signora,sigmund,seventies,sedate,scented,sandals,rollers,retraction,resigning,recuperate,receptive,racketeering,queasy,provoking,priors,prerogative,premed,pinched,pendant,outsiders,orbing,opportunist,olanov,neurologist,nanobot,mommies,molested,misread,mannered,laundromat,intercom,inspect,insanely,infatuation,indulgent,indiscretion,inconsiderate,hurrah,howling,herpes,hasta,harassed,hanukkah,groveling,groosalug,gander,galactica,futile,fridays,flier,fixes,exploiting,exorcism,evasive,endorse,emptied,dreary,dreamy,downloaded,dodged,doctored,disobeyed,disneyland,disable,dehydrated,contemplating,coconuts,cockroaches,clogged,chilling,chaperon,cameraman,bulbs,bucklands,bribing,brava,bracelets,bowels,bluepoint,appetizers,appendix,antics,anointed,analogy,almonds,yammering,winch,weirdness,wangler,vibrations,vendor,unmarked,unannounced,twerp,trespass,travesty,transfusion,trainee,towelie,tiresome,straightening,staggering,sonar,socializing,sinus,sinners,shambles,serene,scraped,scones,scepter,sarris,saberhagen,ridiculously,ridicule,rents,reconciled,radios,publicist,pubes,prune,prude,precrime,postponing,pluck,perish,peppermint,peeled,overdo,nutshell,nostalgic,mulan,mouthing,mistook,meddle,maybourne,martimmy,lobotomy,livelihood,lippman,likeness,kindest,kaffee,jocks,jerked,jeopardizing,jazzed,insured,inquisition,inhale,ingenious,holier,helmets,heirloom,heinous,haste,harmsway,hardship,hanky,gutters,gruesome,groping,goofing,godson,glare,finesse,figuratively,ferrie,endangerment,dreading,dozed,dorky,dmitri,divert,discredit,dialing,cufflinks,crutch,craps,corrupted,cocoon,cleavage,cannery,bystander,brushes,bruising,bribery,brainstorm,bolted,binge,ballistics,astute,arroway,adventurous,adoptive,addicts,addictive,yadda,whitelighters,wematanye,weeds,wedlock,wallets,vulnerability,vroom,vents,upped,unsettling,unharmed,trippin,trifle,tracing,tormenting,thats,syphilis,subtext,stickin,spices,sores,smacked,slumming,sinks,signore,shitting,shameful,shacked,septic,seedy,righteousness,relish,rectify,ravishing,quickest,phoebs,perverted,peeing,pedicure,pastrami,passionately,ozone,outnumbered,oregano,offender,nukes,nosed,nighty,nifty,mounties,motivate,moons,misinterpreted,mercenary,mentality,marsellus,lupus,lumbar,lovesick,lobsters,leaky,laundering,latch,jafar,instinctively,inspires,indoors,incarcerated,hundredth,handkerchief,gynecologist,guittierez,groundhog,grinning,goodbyes,geese,fullest,eyelashes,eyelash,enquirer,endlessly,elusive,disarm,detest,deluding,dangle,cotillion,corsage,conjugal,confessional,cones,commandment,coded,coals,chuckle,christmastime,cheeseburgers,chardonnay,celery,campfire,calming,burritos,brundle,broflovski,brighten,borderline,blinked,bling,beauties,bauers,battered,articulate,alienated,ahhhhh,agamemnon,accountants,y'see,wrongful,wrapper,workaholic,winnebago,whispered,warts,vacate,unworthy,unanswered,tonane,tolerated,throwin,throbbing,thrills,thorns,thereof,there've,tarot,sunscreen,stretcher,stereotype,soggy,sobbing,sizable,sightings,shucks,shrapnel,sever,senile,seaboard,scorned,saver,rebellious,rained,putty,prenup,pores,pinching,pertinent,peeping,paints,ovulating,opposites,occult,nutcracker,nutcase,newsstand,newfound,mocked,midterms,marshmallow,marbury,maclaren,leans,krudski,knowingly,keycard,junkies,juilliard,jolinar,irritable,invaluable,inuit,intoxicating,instruct,insolent,inexcusable,incubator,illustrious,hunsecker,houseguest,homosexuals,homeroom,hernia,harming,handgun,hallways,hallucination,gunshots,groupies,groggy,goiter,gingerbread,giggling,frigging,fledged,fedex,fairies,exchanging,exaggeration,esteemed,enlist,drags,dispense,disloyal,disconnect,desks,dentists,delacroix,degenerate,daydreaming,cushions,cuddly,corroborate,complexion,compensated,cobbler,closeness,chilled,checkmate,channing,carousel,calms,bylaws,benefactor,ballgame,baiting,backstabbing,artifact,airspace,adversary,actin,accuses,accelerant,abundantly,abstinence,zissou,zandt,yapping,witchy,willows,whadaya,vilandra,veiled,undress,undivided,underestimating,ultimatums,twirl,truckload,tremble,toasting,tingling,tents,tempered,sulking,stunk,sponges,spills,softly,snipers,scourge,rooftop,riana,revolting,revisit,refreshments,redecorating,recapture,raysy,pretense,prejudiced,precogs,pouting,poofs,pimple,piles,pediatrician,padre,packets,paces,orvelle,oblivious,objectivity,nighttime,nervosa,mexicans,meurice,melts,matchmaker,maeby,lugosi,lipnik,leprechaun,kissy,kafka,introductions,intestines,inspirational,insightful,inseparable,injections,inadvertently,hussy,huckabees,hittin,hemorrhaging,headin,haystack,hallowed,grudges,granilith,grandkids,grading,gracefully,godsend,gobbles,fragrance,fliers,finchley,farts,eyewitnesses,expendable,existential,dorms,delaying,degrading,deduction,darlings,danes,cylons,counsellor,contraire,consciously,conjuring,congratulating,cokes,buffay,brooch,bitching,bistro,bijou,bewitched,benevolent,bends,bearings,barren,aptitude,amish,amazes,abomination,worldly,whispers,whadda,wayward,wailing,vanishing,upscale,untouchable,unspoken,uncontrollable,unavoidable,unattended,trite,transvestite,toupee,timid,timers,terrorizing,swana,stumped,strolling,storybook,storming,stomachs,stoked,stationery,springtime,spontaneity,spits,spins,soaps,sentiments,scramble,scone,rooftops,retract,reflexes,rawdon,ragged,quirky,quantico,psychologically,prodigal,pounce,potty,pleasantries,pints,petting,perceive,onstage,notwithstanding,nibble,newmans,neutralize,mutilated,millionaires,mayflower,masquerade,mangy,macreedy,lunatics,lovable,locating,limping,lasagna,kwang,keepers,juvie,jaded,ironing,intuitive,intensely,insure,incantation,hysteria,hypnotize,humping,happenin,griet,grasping,glorified,ganging,g'night,focker,flunking,flimsy,flaunting,fixated,fitzwallace,fainting,eyebrow,exonerated,ether,electrician,egotistical,earthly,dusted,dignify,detonation,debrief,dazzling,dan'l,damnedest,daisies,crushes,crucify,contraband,confronting,collapsing,cocked,clicks,cliche,circled,chandelier,carburetor,callers,broads,breathes,bloodshed,blindsided,blabbing,bialystock,bashing,ballerina,aviva,arteries,anomaly,airstrip,agonizing,adjourn,aaaaa,yearning,wrecker,witnessing,whence,warhead,unsure,unheard,unfreeze,unfold,unbalanced,ugliest,troublemaker,toddler,tiptoe,threesome,thirties,thermostat,swipe,surgically,subtlety,stung,stumbling,stubs,stride,strangling,sprayed,socket,smuggled,showering,shhhhh,sabotaging,rumson,rounding,risotto,repairman,rehearsed,ratty,ragging,radiology,racquetball,racking,quieter,quicksand,prowl,prompt,premeditated,prematurely,prancing,porcupine,plated,pinocchio,peeked,peddle,panting,overweight,overrun,outing,outgrown,obsess,nursed,nodding,negativity,negatives,musketeers,mugger,motorcade,merrily,matured,masquerading,marvellous,maniacs,lovey,louse,linger,lilies,lawful,kudos,knuckle,juices,judgments,itches,intolerable,intermission,inept,incarceration,implication,imaginative,huckleberry,holster,heartburn,gunna,groomed,graciously,fulfillment,fugitives,forsaking,forgives,foreseeable,flavors,flares,fixation,fickle,fantasize,famished,fades,expiration,exclamation,erasing,eiffel,eerie,earful,duped,dulles,dissing,dissect,dispenser,dilated,detergent,desdemona,debriefing,damper,curing,crispina,crackpot,courting,cordial,conflicted,comprehension,commie,cleanup,chiropractor,charmer,chariot,cauldron,catatonic,bullied,buckets,brilliantly,breathed,booths,boardroom,blowout,blindness,blazing,biologically,bibles,biased,beseech,barbaric,balraj,audacity,anticipating,alcoholics,airhead,agendas,admittedly,absolution,youre,yippee,wittlesey,withheld,willful,whammy,weakest,washes,virtuous,videotapes,vials,unplugged,unpacked,unfairly,turbulence,tumbling,tricking,tremendously,traitors,torches,tinga,thyroid,teased,tawdry,taker,sympathies,swiped,sundaes,suave,strut,stepdad,spewing,spasm,socialize,slither,simulator,shutters,shrewd,shocks,semantics,schizophrenic,scans,savages,rya'c,runny,ruckus,royally,roadblocks,rewriting,revoke,repent,redecorate,recovers,recourse,ratched,ramali,racquet,quince,quiche,puppeteer,puking,puffed,problemo,praises,pouch,postcards,pooped,poised,piled,phoney,phobia,patching,parenthood,pardner,oozing,ohhhhh,numbing,nostril,nosey,neatly,nappa,nameless,mortuary,moronic,modesty,midwife,mcclane,matuka,maitre,lumps,lucid,loosened,loins,lawnmower,lamotta,kroehner,jinxy,jessep,jamming,jailhouse,jacking,intruders,inhuman,infatuated,indigestion,implore,implanted,hormonal,hoboken,hillbilly,heartwarming,headway,hatched,hartmans,harping,grapevine,gnome,forties,flyin,flirted,fingernail,exhilarating,enjoyment,embark,dumper,dubious,drell,docking,disillusioned,dishonor,disbarred,dicey,custodial,counterproductive,corned,cords,contemplate,concur,conceivable,cobblepot,chickened,checkout,carpe,cap'n,campers,buyin,bullies,braid,boxed,bouncy,blueberries,blubbering,bloodstream,bigamy,beeped,bearable,autographs,alarming,wretch,wimps,widower,whirlwind,whirl,warms,vandelay,unveiling,undoing,unbecoming,turnaround,touche,togetherness,tickles,ticker,teensy,taunt,sweethearts,stitched,standpoint,staffers,spotless,soothe,smothered,sickening,shouted,shepherds,shawl,seriousness,schooled,schoolboy,s'mores,roped,reminders,raggedy,preemptive,plucked,pheromones,particulars,pardoned,overpriced,overbearing,outrun,ohmigod,nosing,nicked,neanderthal,mosquitoes,mortified,milky,messin,mecha,markinson,marivellas,mannequin,manderley,madder,macready,lookie,locusts,lifetimes,lanna,lakhi,kholi,impersonate,hyperdrive,horrid,hopin,hogging,hearsay,harpy,harboring,hairdo,hafta,grasshopper,gobble,gatehouse,foosball,floozy,fished,firewood,finalize,felons,euphemism,entourage,elitist,elegance,drokken,drier,dredge,dossier,diseased,diarrhea,diagnose,despised,defuse,d'amour,contesting,conserve,conscientious,conjured,collars,clogs,chenille,chatty,chamomile,casing,calculator,brittle,breached,blurted,birthing,bikinis,astounding,assaulting,aroma,appliance,antsy,amnio,alienating,aliases,adolescence,xerox,wrongs,workload,willona,whistling,werewolves,wallaby,unwelcome,unseemly,unplug,undermining,ugliness,tyranny,tuesdays,trumpets,transference,ticks,tangible,tagging,swallowing,superheroes,studs,strep,stowed,stomping,steffy,sprain,spouting,sponsoring,sneezing,smeared,slink,shakin,sewed,seatbelt,scariest,scammed,sanctimonious,roasting,rightly,retinal,rethinking,resented,reruns,remover,racks,purest,progressing,presidente,preeclampsia,postponement,portals,poppa,pliers,pinning,pelvic,pampered,padding,overjoyed,ooooo,one'll,octavius,nonono,nicknames,neurosurgeon,narrows,misled,mislead,mishap,milltown,milking,meticulous,mediocrity,meatballs,machete,lurch,layin,knockin,khruschev,jurors,jumpin,jugular,jeweler,intellectually,inquiries,indulging,indestructible,indebted,imitate,ignores,hyperventilating,hyenas,hurrying,hermano,hellish,heheh,harshly,handout,grunemann,glances,giveaway,getup,gerome,furthest,frosting,frail,forwarded,forceful,flavored,flammable,flaky,fingered,fatherly,ethic,embezzlement,duffel,dotted,distressed,disobey,disappearances,dinky,diminish,diaphragm,deuces,creme,courteous,comforts,coerced,clots,clarification,chunks,chickie,chases,chaperoning,cartons,caper,calves,caged,bustin,bulging,bringin,boomhauer,blowin,blindfolded,biscotti,ballplayer,bagging,auster,assurances,aschen,arraigned,anonymity,alters,albatross,agreeable,adoring,abduct,wolfi,weirded,watchers,washroom,warheads,vincennes,urgency,understandably,uncomplicated,uhhhh,twitching,treadmill,thermos,tenorman,tangle,talkative,swarm,surrendering,summoning,strive,stilts,stickers,squashed,spraying,sparring,soaring,snort,sneezed,slaps,skanky,singin,sidle,shreck,shortness,shorthand,sharper,shamed,sadist,rydell,rusik,roulette,resumes,respiration,recount,reacts,purgatory,princesses,presentable,ponytail,plotted,pinot,pigtails,phillippe,peddling,paroled,orbed,offends,o'hara,moonlit,minefield,metaphors,malignant,mainframe,magicks,maggots,maclaine,loathing,leper,leaps,leaping,lashed,larch,larceny,lapses,ladyship,juncture,jiffy,jakov,invoke,infantile,inadmissible,horoscope,hinting,hideaway,hesitating,heddy,heckles,hairline,gripe,gratifying,governess,goebbels,freddo,foresee,fascination,exemplary,executioner,etcetera,escorts,endearing,eaters,earplugs,draped,disrupting,disagrees,dimes,devastate,detain,depositions,delicacy,darklighter,cynicism,cyanide,cutters,cronus,continuance,conquering,confiding,compartments,combing,cofell,clingy,cleanse,christmases,cheered,cheekbones,buttle,burdened,bruenell,broomstick,brained,bozos,bontecou,bluntman,blazes,blameless,bizarro,bellboy,beaucoup,barkeep,awaken,astray,assailant,appease,aphrodisiac,alleys,yesss,wrecks,woodpecker,wondrous,wimpy,willpower,wheeling,weepy,waxing,waive,videotaped,veritable,untouched,unlisted,unfounded,unforeseen,twinge,triggers,traipsing,toxin,tombstone,thumping,therein,testicles,telephones,tarmac,talby,tackled,swirling,suicides,suckered,subtitles,sturdy,strangler,stockbroker,stitching,steered,standup,squeal,sprinkler,spontaneously,splendor,spiking,spender,snipe,snagged,skimming,siddown,showroom,shovels,shotguns,shoelaces,shitload,shellfish,sharpest,shadowy,seizing,scrounge,scapegoat,sayonara,saddled,rummaging,roomful,renounce,reconsidered,recharge,realistically,radioed,quirks,quadrant,punctual,practising,pours,poolhouse,poltergeist,pocketbook,plainly,picnics,pesto,pawing,passageway,partied,oneself,numero,nostalgia,nitwit,neuro,mixer,meanest,mcbeal,matinee,margate,marce,manipulations,manhunt,manger,magicians,loafers,litvack,lightheaded,lifeguard,lawns,laughingstock,ingested,indignation,inconceivable,imposition,impersonal,imbecile,huddled,housewarming,horizons,homicides,hiccups,hearse,hardened,gushing,gushie,greased,goddamit,freelancer,forging,fondue,flustered,flung,flinch,flicker,fixin,festivus,fertilizer,farted,faggots,exonerate,evict,enormously,encrypted,emdash,embracing,duress,dupres,dowser,doormat,disfigured,disciplined,dibbs,depository,deathbed,dazzled,cuttin,cures,crowding,crepe,crammed,copycat,contradict,confidant,condemning,conceited,commute,comatose,clapping,circumference,chuppah,chore,choksondik,chestnuts,briault,bottomless,bonnet,blokes,berluti,beret,beggars,bankroll,bania,athos,arsenic,apperantly,ahhhhhh,afloat,accents,zipped,zeros,zeroes,zamir,yuppie,youngsters,yorkers,wisest,wipes,wield,whyn't,weirdos,wednesdays,vicksburg,upchuck,untraceable,unsupervised,unpleasantness,unhook,unconscionable,uncalled,trappings,tragedies,townie,thurgood,things'll,thine,tetanus,terrorize,temptations,tanning,tampons,swarming,straitjacket,steroid,startling,starry,squander,speculating,sollozzo,sneaked,slugs,skedaddle,sinker,silky,shortcomings,sellin,seasoned,scrubbed,screwup,scrapes,scarves,sandbox,salesmen,rooming,romances,revere,reproach,reprieve,rearranging,ravine,rationalize,raffle,punchy,psychobabble,provocation,profoundly,prescriptions,preferable,polishing,poached,pledges,pirelli,perverts,oversized,overdressed,outdid,nuptials,nefarious,mouthpiece,motels,mopping,mongrel,missin,metaphorically,mertin,memos,melodrama,melancholy,measles,meaner,mantel,maneuvering,mailroom,luring,listenin,lifeless,licks,levon,legwork,kneecaps,kippur,kiddie,kaput,justifiable,insistent,insidious,innuendo,innit,indecent,imaginable,horseshit,hemorrhoid,hella,healthiest,haywire,hamsters,hairbrush,grouchy,grisly,gratuitous,glutton,glimmer,gibberish,ghastly,gentler,generously,geeky,fuhrer,fronting,foolin,faxes,faceless,extinguisher,expel,etched,endangering,ducked,dodgeball,dives,dislocated,discrepancy,devour,derail,dementia,daycare,cynic,crumbling,cowardice,covet,cornwallis,corkscrew,cookbook,commandments,coincidental,cobwebs,clouded,clogging,clicking,clasp,chopsticks,chefs,chaps,cashing,carat,calmer,brazen,brainwashing,bradys,bowing,boned,bloodsucking,bleachers,bleached,bedpan,bearded,barrenger,bachelors,awwww,assures,assigning,asparagus,apprehend,anecdote,amoral,aggravation,afoot,acquaintances,accommodating,yakking,worshipping,wladek,willya,willies,wigged,whoosh,whisked,watered,warpath,volts,violates,valuables,uphill,unwise,untimely,unsavory,unresponsive,unpunished,unexplained,tubby,trolling,toxicology,tormented,toothache,tingly,timmiihh,thursdays,thoreau,terrifies,temperamental,telegrams,talkie,takers,symbiote,swirl,suffocate,stupider,strapping,steckler,springing,someway,sleepyhead,sledgehammer,slant,slams,showgirl,shoveling,shmoopy,sharkbait,shan't,scrambling,schematics,sandeman,sabbatical,rummy,reykjavik,revert,responsive,rescheduled,requisition,relinquish,rejoice,reckoning,recant,rebadow,reassurance,rattlesnake,ramble,primed,pricey,prance,pothole,pocus,persist,perpetrated,pekar,peeling,pastime,parmesan,pacemaker,overdrive,ominous,observant,nothings,noooooo,nonexistent,nodded,nieces,neglecting,nauseating,mutated,musket,mumbling,mowing,mouthful,mooseport,monologue,mistrust,meetin,masseuse,mantini,mailer,madre,lowlifes,locksmith,livid,liven,limos,liberating,lhasa,leniency,leering,laughable,lashes,lasagne,laceration,korben,katan,kalen,jittery,jammies,irreplaceable,intubate,intolerant,inhaler,inhaled,indifferent,indifference,impound,impolite,humbly,heroics,heigh,guillotine,guesthouse,grounding,grips,gossiping,goatee,gnomes,gellar,frutt,frobisher,freudian,foolishness,flagged,femme,fatso,fatherhood,fantasized,fairest,faintest,eyelids,extravagant,extraterrestrial,extraordinarily,escalator,elevate,drivel,dissed,dismal,disarray,dinnertime,devastation,dermatologist,delicately,defrost,debutante,debacle,damone,dainty,cuvee,culpa,crucified,creeped,crayons,courtship,convene,congresswoman,concocted,compromises,comprende,comma,coleslaw,clothed,clinically,chickenshit,checkin,cesspool,caskets,calzone,brothel,boomerang,bodega,blasphemy,bitsy,bicentennial,berlini,beatin,beards,barbas,barbarians,backpacking,arrhythmia,arousing,arbitrator,antagonize,angling,anesthetic,altercation,aggressor,adversity,acathla,aaahhh,wreaking,workup,wonderin,wither,wielding,what'm,what'cha,waxed,vibrating,veterinarian,venting,vasey,valor,validate,upholstery,untied,unscathed,uninterrupted,unforgiving,undies,uncut,twinkies,tucking,treatable,treasured,tranquility,townspeople,torso,tomei,tipsy,tinsel,tidings,thirtieth,tantrums,tamper,talky,swayed,swapping,suitor,stylist,stirs,standoff,sprinklers,sparkly,snobby,snatcher,smoother,sleepin,shrug,shoebox,sheesh,shackles,setbacks,sedatives,screeching,scorched,scanned,satyr,roadblock,riverbank,ridiculed,resentful,repellent,recreate,reconvene,rebuttal,realmedia,quizzes,questionnaire,punctured,pucker,prolong,professionalism,pleasantly,pigsty,penniless,paychecks,patiently,parading,overactive,ovaries,orderlies,oracles,oiled,offending,nudie,neonatal,neighborly,moops,moonlighting,mobilize,mmmmmm,milkshake,menial,meats,mayan,maxed,mangled,magua,lunacy,luckier,liters,lansbury,kooky,knowin,jeopardized,inkling,inhalation,inflated,infecting,incense,inbound,impractical,impenetrable,idealistic,i'mma,hypocrites,hurtin,humbled,hologram,hokey,hocus,hitchhiking,hemorrhoids,headhunter,hassled,harts,hardworking,haircuts,hacksaw,genitals,gazillion,gammy,gamesphere,fugue,footwear,folly,flashlights,fives,filet,extenuating,estrogen,entails,embezzled,eloquent,egomaniac,ducts,drowsy,drones,doree,donovon,disguises,diggin,deserting,depriving,defying,deductible,decorum,decked,daylights,daybreak,dashboard,damnation,cuddling,crunching,crickets,crazies,councilman,coughed,conundrum,complimented,cohaagen,clutching,clued,clader,cheques,checkpoint,chats,channeling,ceases,carasco,capisce,cantaloupe,cancelling,campsite,burglars,breakfasts,bra'tac,blueprint,bleedin,blabbed,beneficiary,basing,avert,atone,arlyn,approves,apothecary,antiseptic,aleikuum,advisement,zadir,wobbly,withnail,whattaya,whacking,wedged,wanders,vaginal,unimaginable,undeniable,unconditionally,uncharted,unbridled,tweezers,tvmegasite,trumped,triumphant,trimming,treading,tranquilizers,toontown,thunk,suture,suppressing,strays,stonewall,stogie,stepdaughter,stace,squint,spouses,splashed,speakin,sounder,sorrier,sorrel,sombrero,solemnly,softened,snobs,snippy,snare,smoothing,slump,slimeball,slaving,silently,shiller,shakedown,sensations,scrying,scrumptious,screamin,saucy,santoses,roundup,roughed,rosary,robechaux,retrospect,rescind,reprehensible,repel,remodeling,reconsidering,reciprocate,railroaded,psychics,promos,prob'ly,pristine,printout,priestess,prenuptial,precedes,pouty,phoning,peppy,pariah,parched,panes,overloaded,overdoing,nymphs,nother,notebooks,nearing,nearer,monstrosity,milady,mieke,mephesto,medicated,marshals,manilow,mammogram,m'lady,lotsa,loopy,lesion,lenient,learner,laszlo,kross,kinks,jinxed,involuntary,insubordination,ingrate,inflatable,incarnate,inane,hypoglycemia,huntin,humongous,hoodlum,honking,hemorrhage,helpin,hathor,hatching,grotto,grandmama,gorillas,godless,girlish,ghouls,gershwin,frosted,flutter,flagpole,fetching,fatter,faithfully,exert,evasion,escalate,enticing,enchantress,elopement,drills,downtime,downloading,dorks,doorways,divulge,dissociative,disgraceful,disconcerting,deteriorate,destinies,depressive,dented,denim,decruz,decidedly,deactivate,daydreams,curls,culprit,cruelest,crippling,cranberries,corvis,copped,commend,coastguard,cloning,cirque,churning,chock,chivalry,catalogues,cartwheels,carols,canister,buttered,bundt,buljanoff,bubbling,brokers,broaden,brimstone,brainless,bores,badmouthing,autopilot,ascertain,aorta,ampata,allenby,accosted,absolve,aborted,aaagh,aaaaaah,yonder,yellin,wyndham,wrongdoing,woodsboro,wigging,wasteland,warranty,waltzed,walnuts,vividly,veggie,unnecessarily,unloaded,unicorns,understated,unclean,umbrellas,twirling,turpentine,tupperware,triage,treehouse,tidbit,tickled,threes,thousandth,thingie,terminally,teething,tassel,talkies,swoon,switchboard,swerved,suspiciously,subsequentlyne,subscribe,strudel,stroking,strictest,stensland,starin,stannart,squirming,squealing,sorely,softie,snookums,sniveling,smidge,sloth,skulking,simian,sightseeing,siamese,shudder,shoppers,sharpen,shannen,semtex,secondhand,seance,scowl,scorn,safekeeping,russe,rummage,roshman,roomies,roaches,rinds,retrace,retires,resuscitate,rerun,reputations,rekall,refreshment,reenactment,recluse,ravioli,raves,raking,purses,punishable,punchline,puked,prosky,previews,poughkeepsie,poppins,polluted,placenta,pissy,petulant,perseverance,pears,pawns,pastries,partake,panky,palate,overzealous,orchids,obstructing,objectively,obituaries,obedient,nothingness,musty,motherly,mooning,momentous,mistaking,minutemen,milos,microchip,meself,merciless,menelaus,mazel,masturbate,mahogany,lysistrata,lillienfield,likable,liberate,leveled,letdown,larynx,lardass,lainey,lagged,klorel,kidnappings,keyed,karmic,jeebies,irate,invulnerable,intrusive,insemination,inquire,injecting,informative,informants,impure,impasse,imbalance,illiterate,hurled,hunts,hematoma,headstrong,handmade,handiwork,growling,gorky,getcha,gesundheit,gazing,galley,foolishly,fondness,floris,ferocious,feathered,fateful,fancies,fakes,faker,expire,ever'body,essentials,eskimos,enlightening,enchilada,emissary,embolism,elsinore,ecklie,drenched,drazi,doped,dogging,doable,dislikes,dishonesty,disengage,discouraging,derailed,deformed,deflect,defer,deactivated,crips,constellations,congressmen,complimenting,clubbing,clawing,chromium,chimes,chews,cheatin,chaste,cellblock,caving,catered,catacombs,calamari,bucking,brulee,brits,brisk,breezes,bounces,boudoir,binks,better'n,bellied,behrani,behaves,bedding,balmy,badmouth,backers,avenging,aromatherapy,armpit,armoire,anythin,anonymously,anniversaries,aftershave,affliction,adrift,admissible,adieu,acquittal,yucky,yearn,whitter,whirlpool,wendigo,watchdog,wannabes,wakey,vomited,voicemail,valedictorian,uttered,unwed,unrequited,unnoticed,unnerving,unkind,unjust,uniformed,unconfirmed,unadulterated,unaccounted,uglier,turnoff,trampled,tramell,toads,timbuktu,throwback,thimble,tasteless,tarantula,tamale,takeovers,swish,supposing,streaking,stargher,stanzi,stabs,squeamish,splattered,spiritually,spilt,speciality,smacking,skywire,skips,skaara,simpatico,shredding,showin,shortcuts,shite,shielding,shamelessly,serafine,sentimentality,seasick,schemer,scandalous,sainted,riedenschneider,rhyming,revel,retractor,retards,resurrect,remiss,reminiscing,remanded,reiben,regains,refuel,refresher,redoing,redheaded,reassured,rearranged,rapport,qumar,prowling,prejudices,precarious,powwow,pondering,plunger,plunged,pleasantville,playpen,phlegm,perfected,pancreas,paley,ovary,outbursts,oppressed,ooohhh,omoroca,offed,o'toole,nurture,nursemaid,nosebleed,necktie,muttering,munchies,mucking,mogul,mitosis,misdemeanor,miscarried,millionth,migraines,midler,manicurist,mandelbaum,manageable,malfunctioned,magnanimous,loudmouth,longed,lifestyles,liddy,lickety,leprechauns,komako,klute,kennel,justifying,irreversible,inventing,intergalactic,insinuate,inquiring,ingenuity,inconclusive,incessant,improv,impersonation,hyena,humperdinck,hubba,housework,hoffa,hither,hissy,hippy,hijacked,heparin,hellooo,hearth,hassles,hairstyle,hahahaha,hadda,guys'll,gutted,gulls,gritty,grievous,graft,gossamer,gooder,gambled,gadgets,fundamentals,frustrations,frolicking,frock,frilly,foreseen,footloose,fondly,flirtation,flinched,flatten,farthest,exposer,evading,escrow,empathize,embryos,embodiment,ellsberg,ebola,dulcinea,dreamin,drawbacks,doting,doose,doofy,disturbs,disorderly,disgusts,detox,denominator,demeanor,deliriously,decode,debauchery,croissant,cravings,cranked,coworkers,councilor,confuses,confiscate,confines,conduit,compress,combed,clouding,clamps,cinch,chinnery,celebratory,catalogs,carpenters,carnal,canin,bundys,bulldozer,buggers,bueller,brainy,booming,bookstores,bloodbath,bittersweet,bellhop,beeping,beanstalk,beady,baudelaire,bartenders,bargains,averted,armadillo,appreciating,appraised,antlers,aloof,allowances,alleyway,affleck,abject,zilch,youore,xanax,wrenching,wouldn,witted,wicca,whorehouse,whooo,whips,vouchers,victimized,vicodin,untested,unsolicited,unfocused,unfettered,unfeeling,unexplainable,understaffed,underbelly,tutorial,tryst,trampoline,towering,tirade,thieving,thang,swimmin,swayzak,suspecting,superstitions,stubbornness,streamers,strattman,stonewalling,stiffs,stacking,spout,splice,sonrisa,smarmy,slows,slicing,sisterly,shrill,shined,seeming,sedley,seatbelts,scour,scold,schoolyard,scarring,salieri,rustling,roxbury,rewire,revved,retriever,reputable,remodel,reins,reincarnation,rance,rafters,rackets,quail,pumbaa,proclaim,probing,privates,pried,prewedding,premeditation,posturing,posterity,pleasurable,pizzeria,pimps,penmanship,penchant,pelvis,overturn,overstepped,overcoat,ovens,outsmart,outed,ooohh,oncologist,omission,offhand,odour,nyazian,notarized,nobody'll,nightie,navel,nabbed,mystique,mover,mortician,morose,moratorium,mockingbird,mobsters,mingling,methinks,messengered,merde,masochist,martouf,martians,marinara,manray,majorly,magnifying,mackerel,lurid,lugging,lonnegan,loathsome,llantano,liberace,leprosy,latinos,lanterns,lamest,laferette,kraut,intestine,innocencia,inhibitions,ineffectual,indisposed,incurable,inconvenienced,inanimate,improbable,implode,hydrant,hustling,hustled,huevos,how'm,hooey,hoods,honcho,hinge,hijack,heimlich,hamunaptra,haladki,haiku,haggle,gutsy,grunting,grueling,gribbs,greevy,grandstanding,godparents,glows,glistening,gimmick,gaping,fraiser,formalities,foreigner,folders,foggy,fitty,fiends,fe'nos,favours,eyeing,extort,expedite,escalating,epinephrine,entitles,entice,eminence,eights,earthlings,eagerly,dunville,dugout,doublemeat,doling,dispensing,dispatcher,discoloration,diners,diddly,dictates,diazepam,derogatory,delights,defies,decoder,dealio,danson,cutthroat,crumbles,croissants,crematorium,craftsmanship,could'a,cordless,cools,conked,confine,concealing,complicates,communique,cockamamie,coasters,clobbered,clipping,clipboard,clemenza,cleanser,circumcision,chanukah,certainaly,cellmate,cancels,cadmium,buzzed,bumstead,bucko,browsing,broth,braver,boggling,bobbing,blurred,birkhead,benet,belvedere,bellies,begrudge,beckworth,banky,baldness,baggy,babysitters,aversion,astonished,assorted,appetites,angina,amiss,ambulances,alibis,airway,admires,adhesive,yoyou,xxxxxx,wreaked,wracking,woooo,wooing,wised,wilshire,wedgie,waging,violets,vincey,uplifting,untrustworthy,unmitigated,uneventful,undressing,underprivileged,unburden,umbilical,tweaking,turquoise,treachery,tosses,torching,toothpick,toasts,thickens,tereza,tenacious,teldar,taint,swill,sweatin,subtly,subdural,streep,stopwatch,stockholder,stillwater,stalkers,squished,squeegee,splinters,spliced,splat,spied,spackle,sophistication,snapshots,smite,sluggish,slithered,skeeters,sidewalks,sickly,shrugs,shrubbery,shrieking,shitless,settin,sentinels,selfishly,scarcely,sangria,sanctum,sahjhan,rustle,roving,rousing,rosomorf,riddled,responsibly,renoir,remoray,remedial,refundable,redirect,recheck,ravenwood,rationalizing,ramus,ramelle,quivering,pyjamas,psychos,provocations,prouder,protestors,prodded,proctologist,primordial,pricks,prickly,precedents,pentangeli,pathetically,parka,parakeet,panicky,overthruster,outsmarted,orthopedic,oncoming,offing,nutritious,nuthouse,nourishment,nibbling,newlywed,narcissist,mutilation,mundane,mummies,mumble,mowed,morvern,mortem,mopes,molasses,misplace,miscommunication,miney,midlife,menacing,memorizing,massaging,masking,magnets,luxuries,lounging,lothario,liposuction,lidocaine,libbets,levitate,leeway,launcelot,larek,lackeys,kumbaya,kryptonite,knapsack,keyhole,katarangura,juiced,jakey,ironclad,invoice,intertwined,interlude,interferes,injure,infernal,indeedy,incur,incorrigible,incantations,impediment,igloo,hysterectomy,hounded,hollering,hindsight,heebie,havesham,hasenfuss,hankering,hangers,hakuna,gutless,gusto,grubbing,grrrr,grazed,gratification,grandeur,gorak,godammit,gnawing,glanced,frostbite,frees,frazzled,fraulein,fraternizing,fortuneteller,formaldehyde,followup,foggiest,flunky,flickering,firecrackers,figger,fetuses,fates,eyeliner,extremities,extradited,expires,exceedingly,evaporate,erupt,epileptic,entrails,emporium,egregious,eggshells,easing,duwayne,droll,dreyfuss,dovey,doubly,doozy,donkeys,donde,distrust,distressing,disintegrate,discreetly,decapitated,dealin,deader,dashed,darkroom,dares,daddies,dabble,cushy,cupcakes,cuffed,croupier,croak,crapped,coursing,coolers,contaminate,consummated,construed,condos,concoction,compulsion,commish,coercion,clemency,clairvoyant,circulate,chesterton,checkered,charlatan,chaperones,categorically,cataracts,carano,capsules,capitalize,burdon,bullshitting,brewed,breathless,breasted,brainstorming,bossing,borealis,bonsoir,bobka,boast,blimp,bleep,bleeder,blackouts,bisque,billboards,beatings,bayberry,bashed,bamboozled,balding,baklava,baffled,backfires,babak,awkwardness,attest,attachments,apologizes,anyhoo,antiquated,alcante,advisable,aahhh,aaahh,zatarc,yearbooks,wuddya,wringing,womanhood,witless,winging,whatsa,wetting,waterproof,wastin,vogelman,vocation,vindicated,vigilance,vicariously,venza,vacuuming,utensils,uplink,unveil,unloved,unloading,uninhibited,unattached,tweaked,turnips,trinkets,toughen,toting,topside,terrors,terrify,technologically,tarnish,tagliati,szpilman,surly,supple,summation,suckin,stepmom,squeaking,splashmore,souffle,solitaire,solicitation,solarium,smokers,slugged,slobbering,skylight,skimpy,sinuses,silenced,sideburns,shrinkage,shoddy,shhhhhh,shelled,shareef,shangri,seuss,serenade,scuffle,scoff,scanners,sauerkraut,sardines,sarcophagus,salvy,rusted,russells,rowboat,rolfsky,ringside,respectability,reparations,renegotiate,reminisce,reimburse,regimen,raincoat,quibble,puzzled,purposefully,pubic,proofing,prescribing,prelim,poisons,poaching,personalized,personable,peroxide,pentonville,payphone,payoffs,paleontology,overflowing,oompa,oddest,objecting,o'hare,o'daniel,notches,nobody'd,nightstand,neutralized,nervousness,nerdy,needlessly,naquadah,nappy,nantucket,nambla,mountaineer,motherfuckin,morrie,monopolizing,mohel,mistreated,misreading,misbehave,miramax,minivan,milligram,milkshakes,metamorphosis,medics,mattresses,mathesar,matchbook,matata,marys,malucci,magilla,lymphoma,lowers,lordy,linens,lindenmeyer,limelight,leapt,laxative,lather,lapel,lamppost,laguardia,kindling,kegger,kawalsky,juries,jokin,jesminder,interning,innermost,injun,infallible,industrious,indulgence,incinerator,impossibility,impart,illuminate,iguanas,hypnotic,hyped,hospitable,hoses,homemaker,hirschmuller,helpers,headset,guardianship,guapo,grubby,granola,granddaddy,goren,goblet,gluttony,globes,giorno,getter,geritol,gassed,gaggle,foxhole,fouled,foretold,floorboards,flippers,flaked,fireflies,feedings,fashionably,farragut,fallback,facials,exterminate,excites,everything'll,evenin,ethically,ensue,enema,empath,eluded,eloquently,eject,edema,dumpling,droppings,dolled,distasteful,disputing,displeasure,disdain,deterrent,dehydration,defied,decomposing,dawned,dailies,custodian,crusts,crucifix,crowning,crier,crept,craze,crawls,couldn,correcting,corkmaster,copperfield,cooties,contraption,consumes,conspire,consenting,consented,conquers,congeniality,complains,communicator,commendable,collide,coladas,colada,clout,clooney,classifieds,clammy,civility,cirrhosis,chink,catskills,carvers,carpool,carelessness,cardio,carbs,capades,butabi,busmalis,burping,burdens,bunks,buncha,bulldozers,browse,brockovich,breakthroughs,bravado,boogety,blossoms,blooming,bloodsucker,blight,betterton,betrayer,belittle,beeps,bawling,barts,bartending,bankbooks,babish,atropine,assertive,armbrust,anyanka,annoyance,anemic,anago,airwaves,aimlessly,aaargh,aaand,yoghurt,writhing,workable,winking,winded,widen,whooping,whiter,whatya,wazoo,voila,virile,vests,vestibule,versed,vanishes,urkel,uproot,unwarranted,unscheduled,unparalleled,undergrad,tweedle,turtleneck,turban,trickery,transponder,toyed,townhouse,thyself,thunderstorm,thinning,thawed,tether,technicalities,tau'ri,tarnished,taffeta,tacked,systolic,swerve,sweepstakes,swabs,suspenders,superwoman,sunsets,succulent,subpoenas,stumper,stosh,stomachache,stewed,steppin,stepatech,stateside,spicoli,sparing,soulless,sonnets,sockets,snatching,smothering,slush,sloman,slashing,sitters,simpleton,sighs,sidra,sickens,shunned,shrunken,showbiz,shopped,shimmering,shagging,semblance,segue,sedation,scuzzlebutt,scumbags,screwin,scoundrels,scarsdale,scabs,saucers,saintly,saddened,runaways,runaround,rheya,resenting,rehashing,rehabilitated,regrettable,refreshed,redial,reconnecting,ravenous,raping,rafting,quandary,pylea,putrid,puffing,psychopathic,prunes,probate,prayin,pomegranate,plummeting,planing,plagues,pinata,pithy,perversion,personals,perched,peeps,peckish,pavarotti,pajama,packin,pacifier,overstepping,okama,obstetrician,nutso,nuance,normalcy,nonnegotiable,nomak,ninny,nines,nicey,newsflash,neutered,nether,negligee,necrosis,navigating,narcissistic,mylie,muses,momento,moisturizer,moderation,misinformed,misconception,minnifield,mikkos,methodical,mebbe,meager,maybes,matchmaking,masry,markovic,malakai,luzhin,lusting,lumberjack,loopholes,loaning,lightening,leotard,launder,lamaze,kubla,kneeling,kibosh,jumpsuit,joliet,jogger,janover,jakovasaurs,irreparable,innocently,inigo,infomercial,inexplicable,indispensable,impregnated,impossibly,imitating,hunches,hummus,houmfort,hothead,hostiles,hooves,hooligans,homos,homie,hisself,heyyy,hesitant,hangout,handsomest,handouts,hairless,gwennie,guzzling,guinevere,grungy,goading,glaring,gavel,gardino,gangrene,fruitful,friendlier,freckle,freakish,forthright,forearm,footnote,flops,fixer,firecracker,finito,figgered,fezzik,fastened,farfetched,fanciful,familiarize,faire,fahrenheit,extravaganza,exploratory,explanatory,everglades,eunuch,estas,escapade,erasers,emptying,embarassing,dweeb,dutiful,dumplings,dries,drafty,dollhouse,dismissing,disgraced,discrepancies,disbelief,disagreeing,digestion,didnt,deviled,deviated,demerol,delectable,decaying,decadent,dears,dateless,d'algout,cultivating,cryto,crumpled,crumbled,cronies,crease,craves,cozying,corduroy,congratulated,confidante,compressions,complicating,compadre,coerce,classier,chums,chumash,chivalrous,chinpoko,charred,chafing,celibacy,carted,carryin,carpeting,carotid,cannibals,candor,butterscotch,busts,busier,bullcrap,buggin,brookside,brodski,brassiere,brainwash,brainiac,botrelle,bonbon,boatload,blimey,blaring,blackness,bipartisan,bimbos,bigamist,biebe,biding,betrayals,bestow,bellerophon,bedpans,bassinet,basking,barzini,barnyard,barfed,backups,audited,asinine,asalaam,arouse,applejack,annoys,anchovies,ampule,alameida,aggravate,adage,accomplices,yokel,y'ever,wringer,witwer,withdrawals,windward,willfully,whorfin,whimsical,whimpering,weddin,weathered,warmest,wanton,volant,visceral,vindication,veggies,urinate,uproar,unwritten,unwrap,unsung,unsubstantiated,unspeakably,unscrupulous,unraveling,unquote,unqualified,unfulfilled,undetectable,underlined,unattainable,unappreciated,ummmm,ulcers,tylenol,tweak,turnin,tuatha,tropez,trellis,toppings,tootin,toodle,tinkering,thrives,thespis,theatrics,thatherton,tempers,tavington,tartar,tampon,swelled,sutures,sustenance,sunflowers,sublet,stubbins,strutting,strewn,stowaway,stoic,sternin,stabilizing,spiraling,spinster,speedometer,speakeasy,soooo,soiled,sneakin,smithereens,smelt,smacks,slaughterhouse,slacks,skids,sketching,skateboards,sizzling,sixes,sirree,simplistic,shouts,shorted,shoelace,sheeit,shards,shackled,sequestered,selmak,seduces,seclusion,seamstress,seabeas,scoops,scooped,scavenger,satch,s'more,rudeness,romancing,rioja,rifkin,rieper,revise,reunions,repugnant,replicating,repaid,renewing,relaxes,rekindle,regrettably,regenerate,reels,reciting,reappear,readin,ratting,rapes,rancher,rammed,rainstorm,railroading,queers,punxsutawney,punishes,pssst,prudy,proudest,protectors,procrastinating,proactive,priss,postmortem,pompoms,poise,pickings,perfectionist,peretti,people'll,pecking,patrolman,paralegal,paragraphs,paparazzi,pankot,pampering,overstep,overpower,outweigh,omnipotent,odious,nuwanda,nurtured,newsroom,neeson,needlepoint,necklaces,neato,muggers,muffler,mousy,mourned,mosey,mopey,mongolians,moldy,misinterpret,minibar,microfilm,mendola,mended,melissande,masturbating,masbath,manipulates,maimed,mailboxes,magnetism,m'lord,m'honey,lymph,lunge,lovelier,lefferts,leezak,ledgers,larraby,laloosh,kundun,kozinski,knockoff,kissin,kiosk,kennedys,kellman,karlo,kaleidoscope,jeffy,jaywalking,instructing,infraction,informer,infarction,impulsively,impressing,impersonated,impeach,idiocy,hyperbole,hurray,humped,huhuh,hsing,hordes,hoodlums,honky,hitchhiker,hideously,heaving,heathcliff,headgear,headboard,hazing,harem,handprint,hairspray,gutiurrez,goosebumps,gondola,glitches,gasping,frolic,freeways,frayed,fortitude,forgetful,forefathers,fonder,foiled,foaming,flossing,flailing,fitzgeralds,firehouse,finders,fiftieth,fellah,fawning,farquaad,faraway,fancied,extremists,exorcist,exhale,ethros,entrust,ennui,energized,encephalitis,embezzling,elster,elixir,electrolytes,duplex,dryers,drexl,dredging,drawback,don'ts,dobisch,divorcee,disrespected,disprove,disobeying,disinfectant,dingy,digress,dieting,dictating,devoured,devise,detonators,desist,deserter,derriere,deron,deceptive,debilitating,deathwok,daffodils,curtsy,cursory,cuppa,cumin,cronkite,cremation,credence,cranking,coverup,courted,countin,counselling,cornball,contentment,consensual,compost,cluett,cleverly,cleansed,cleanliness,chopec,chomp,chins,chime,cheswick,chessler,cheapest,chatted,cauliflower,catharsis,catchin,caress,camcorder,calorie,cackling,bystanders,buttoned,buttering,butted,buries,burgel,buffoon,brogna,bragged,boutros,bogeyman,blurting,blurb,blowup,bloodhound,blissful,birthmark,bigot,bestest,belted,belligerent,beggin,befall,beeswax,beatnik,beaming,barricade,baggoli,badness,awoke,artsy,artful,aroun,armpits,arming,annihilate,anise,angiogram,anaesthetic,amorous,ambiance,alligators,adoration,admittance,adama,abydos,zonked,zhivago,yorkin,wrongfully,writin,wrappers,worrywart,woops,wonderfalls,womanly,wickedness,whoopie,wholeheartedly,whimper,which'll,wheelchairs,what'ya,warranted,wallop,wading,wacked,virginal,vermouth,vermeil,verger,ventriss,veneer,vampira,utero,ushers,urgently,untoward,unshakable,unsettled,unruly,unlocks,ungodly,undue,uncooperative,uncontrollably,unbeatable,twitchy,tumbler,truest,triumphs,triplicate,tribbey,tortures,tongaree,tightening,thorazine,theres,testifies,teenaged,tearful,taxing,taldor,syllabus,swoops,swingin,suspending,sunburn,stuttering,stupor,strides,strategize,strangulation,stooped,stipulation,stingy,stapled,squeaks,squawking,spoilsport,splicing,spiel,spencers,spasms,spaniard,softener,sodding,soapbox,smoldering,smithbauer,skittish,sifting,sickest,sicilians,shuffling,shrivel,segretti,seeping,securely,scurrying,scrunch,scrote,screwups,schenkman,sawing,savin,satine,sapiens,salvaging,salmonella,sacrilege,rumpus,ruffle,roughing,rotted,rondall,ridding,rickshaw,rialto,rhinestone,restrooms,reroute,requisite,repress,rednecks,redeeming,rayed,ravell,raked,raincheck,raffi,racked,pushin,profess,prodding,procure,presuming,preppy,prednisone,potted,posttraumatic,poorhouse,podiatrist,plowed,pledging,playroom,plait,placate,pinback,picketing,photographing,pharoah,petrak,petal,persecuting,perchance,pellets,peeved,peerless,payable,pauses,pathologist,pagliacci,overwrought,overreaction,overqualified,overheated,outcasts,otherworldly,opinionated,oodles,oftentimes,occured,obstinate,nutritionist,numbness,nubile,nooooooo,nobodies,nepotism,neanderthals,mushu,mucus,mothering,mothballs,monogrammed,molesting,misspoke,misspelled,misconstrued,miscalculated,minimums,mince,mildew,mighta,middleman,mementos,mellowed,mayol,mauled,massaged,marmalade,mardi,makings,lundegaard,lovingly,loudest,lotto,loosing,loompa,looming,longs,loathes,littlest,littering,lifelike,legalities,laundered,lapdog,lacerations,kopalski,knobs,knitted,kittridge,kidnaps,kerosene,karras,jungles,jockeys,iranoff,invoices,invigorating,insolence,insincere,insectopia,inhumane,inhaling,ingrates,infestation,individuality,indeterminate,incomprehensible,inadequacy,impropriety,importer,imaginations,illuminating,ignite,hysterics,hypodermic,hyperventilate,hyperactive,humoring,honeymooning,honed,hoist,hoarding,hitching,hiker,hightail,hemoglobin,hell'd,heinie,growin,grasped,grandparent,granddaughters,gouged,goblins,gleam,glades,gigantor,get'em,geriatric,gatekeeper,gargoyles,gardenias,garcon,garbo,gallows,gabbing,futon,fulla,frightful,freshener,fortuitous,forceps,fogged,fodder,foamy,flogging,flaun,flared,fireplaces,feverish,favell,fattest,fattening,fallow,extraordinaire,evacuating,errant,envied,enchant,enamored,egocentric,dussander,dunwitty,dullest,dropout,dredged,dorsia,doornail,donot,dongs,dogged,dodgy,ditty,dishonorable,discriminating,discontinue,dings,dilly,dictation,dialysis,delly,delightfully,daryll,dandruff,cruddy,croquet,cringe,crimp,credo,crackling,courtside,counteroffer,counterfeiting,corrupting,copping,conveyor,contusions,contusion,conspirator,consoling,connoisseur,confetti,composure,compel,colic,coddle,cocksuckers,coattails,cloned,claustrophobia,clamoring,churn,chugga,chirping,chasin,chapped,chalkboard,centimeter,caymans,catheter,casings,caprica,capelli,cannolis,cannoli,camogli,camembert,butchers,butchered,busboys,bureaucrats,buckled,bubbe,brownstone,bravely,brackley,bouquets,botox,boozing,boosters,bodhi,blunders,blunder,blockage,biocyte,betrays,bested,beryllium,beheading,beggar,begbie,beamed,bastille,barstool,barricades,barbecues,barbecued,bandwagon,backfiring,bacarra,avenged,autopsies,aunties,associating,artichoke,arrowhead,appendage,apostrophe,antacid,ansel,annul,amuses,amped,amicable,amberg,alluring,adversaries,admirers,adlai,acupuncture,abnormality,aaaahhhh,zooming,zippity,zipping,zeroed,yuletide,yoyodyne,yengeese,yeahhh,wrinkly,wracked,withered,winks,windmills,whopping,wendle,weigart,waterworks,waterbed,watchful,wantin,wagging,waaah,vying,ventricle,varnish,vacuumed,unreachable,unprovoked,unmistakable,unfriendly,unfolding,underpaid,uncuff,unappealing,unabomber,typhoid,tuxedos,tushie,turds,tumnus,troubadour,trinium,treaters,treads,transpired,transgression,tought,thready,thins,thinners,techs,teary,tattaglia,tassels,tarzana,tanking,tablecloths,synchronize,symptomatic,sycophant,swimmingly,sweatshop,surfboard,superpowers,sunroom,sunblock,sugarplum,stupidly,strumpet,strapless,stooping,stools,stealthy,stalks,stairmaster,staffer,sshhh,squatting,squatters,spectacularly,sorbet,socked,sociable,snubbed,snorting,sniffles,snazzy,snakebite,smuggler,smorgasbord,smooching,slurping,slouch,slingshot,slaved,skimmed,sisterhood,silliest,sidarthur,sheraton,shebang,sharpening,shanghaied,shakers,sendoff,scurvy,scoliosis,scaredy,scagnetti,sawchuk,saugus,sasquatch,sandbag,saltines,s'pose,roston,rostle,riveting,ristle,rifling,revulsion,reverently,retrograde,restful,resents,reptilian,reorganize,renovating,reiterate,reinvent,reinmar,reibers,reechard,recuse,reconciling,recognizance,reclaiming,recitation,recieved,rebate,reacquainted,rascals,railly,quintuplets,quahog,pygmies,puzzling,punctuality,prosthetic,proms,probie,preys,preserver,preppie,poachers,plummet,plumbers,plannin,pitying,pitfalls,piqued,pinecrest,pinches,pillage,pigheaded,physique,pessimistic,persecute,perjure,percentile,pentothal,pensky,penises,peini,pazzi,pastels,parlour,paperweight,pamper,pained,overwhelm,overalls,outrank,outpouring,outhouse,outage,ouija,obstructed,obsessions,obeying,obese,o'riley,o'higgins,nosebleeds,norad,noooooooo,nononono,nonchalant,nippy,neurosis,nekhorvich,necronomicon,naquada,n'est,mystik,mystified,mumps,muddle,mothership,moped,monumentally,monogamous,mondesi,misogynistic,misinterpreting,mindlock,mending,megaphone,meeny,medicating,meanie,masseur,markstrom,marklars,margueritas,manifesting,maharajah,lukewarm,loveliest,loran,lizardo,liquored,lipped,lingers,limey,lemkin,leisurely,lathe,latched,lapping,ladle,krevlorneswath,kosygin,khakis,kenaru,keats,kaitlan,julliard,jollies,jaundice,jargon,jackals,invisibility,insipid,inflamed,inferiority,inexperience,incinerated,incinerate,incendiary,incan,inbred,implicating,impersonator,hunks,horsing,hooded,hippopotamus,hiked,hetson,hetero,hessian,henslowe,hendler,hellstrom,headstone,hayloft,harbucks,handguns,hallucinate,haldol,haggling,gynaecologist,gulag,guilder,guaranteeing,groundskeeper,grindstone,grimoir,grievance,griddle,gribbit,greystone,graceland,gooders,goeth,gentlemanly,gelatin,gawking,ganged,fukes,fromby,frenchmen,foursome,forsley,forbids,footwork,foothold,floater,flinging,flicking,fittest,fistfight,fireballs,fillings,fiddling,fennyman,felonious,felonies,feces,favoritism,fatten,fanatics,faceman,excusing,excepted,entwined,entree,ensconced,eladio,ehrlichman,easterland,dueling,dribbling,drape,downtrodden,doused,dosed,dorleen,dokie,distort,displeased,disown,dismount,disinherited,disarmed,disapproves,diperna,dined,diligent,dicaprio,depress,decoded,debatable,dealey,darsh,damsels,damning,dad'll,d'oeuvre,curlers,curie,cubed,crikey,crepes,countrymen,cornfield,coppers,copilot,copier,cooing,conspiracies,consigliere,condoning,commoner,commies,combust,comas,colds,clawed,clamped,choosy,chomping,chimps,chigorin,chianti,cheep,checkups,cheaters,celibate,cautiously,cautionary,castell,carpentry,caroling,carjacking,caritas,caregiver,cardiology,candlesticks,canasta,cain't,burro,burnin,bunking,bumming,bullwinkle,brummel,brooms,brews,breathin,braslow,bracing,botulism,boorish,bloodless,blayne,blatantly,blankie,bedbugs,becuase,barmaid,bared,baracus,banal,bakes,backpacks,attentions,atrocious,ativan,athame,asunder,astound,assuring,aspirins,asphyxiation,ashtrays,aryans,arnon,apprehension,applauding,anvil,antiquing,antidepressants,annoyingly,amputate,altruistic,alotta,alerting,afterthought,affront,affirm,actuality,abysmal,absentee,yeller,yakushova,wuzzy,wriggle,worrier,woogyman,womanizer,windpipe,windbag,willin,whisking,whimsy,wendall,weeny,weensy,weasels,watery,watcha,wasteful,waski,washcloth,waaay,vouched,viznick,ventriloquist,vendettas,veils,vayhue,vamanos,vadimus,upstage,uppity,unsaid,unlocking,unintentionally,undetected,undecided,uncaring,unbearably,tween,tryout,trotting,trini,trimmings,trickier,treatin,treadstone,trashcan,transcendent,tramps,townsfolk,torturous,torrid,toothpicks,tolerable,tireless,tiptoeing,timmay,tillinghouse,tidying,tibia,thumbing,thrusters,thrashing,these'll,thatos,testicular,teriyaki,tenors,tenacity,tellers,telemetry,tarragon,switchblade,swicker,swells,sweatshirts,swatches,surging,supremely,sump'n,succumb,subsidize,stumbles,stuffs,stoppin,stipulate,stenographer,steamroll,stasis,stagger,squandered,splint,splendidly,splashy,splashing,specter,sorcerers,somewheres,somber,snuggled,snowmobile,sniffed,snags,smugglers,smudged,smirking,smearing,slings,sleet,sleepovers,sleek,slackers,siree,siphoning,singed,sincerest,sickened,shuffled,shriveled,shorthanded,shittin,shish,shipwrecked,shins,sheetrock,shawshank,shamu,sha're,servitude,sequins,seascape,scrapings,scoured,scorching,sandpaper,saluting,salud,ruffled,roughnecks,rougher,rosslyn,rosses,roost,roomy,romping,revolutionize,reprimanded,refute,refrigerated,reeled,redundancies,rectal,recklessly,receding,reassignment,reapers,readout,ration,raring,ramblings,raccoons,quarantined,purging,punters,psychically,premarital,pregnancies,predisposed,precautionary,pollute,podunk,plums,plaything,pixilated,pitting,piranhas,pieced,piddles,pickled,photogenic,phosphorous,pffft,pestilence,pessimist,perspiration,perps,penticoff,passageways,pardons,panics,pancamo,paleontologist,overwhelms,overstating,overpaid,overdid,outlive,orthodontist,orgies,oreos,ordover,ordinates,ooooooh,oooohhh,omelettes,officiate,obtuse,obits,nymph,novocaine,noooooooooo,nipping,nilly,nightstick,negate,neatness,natured,narcotic,narcissism,namun,nakatomi,murky,muchacho,mouthwash,motzah,morsel,morph,morlocks,mooch,moloch,molest,mohra,modus,modicum,mockolate,misdemeanors,miscalculation,middies,meringue,mercilessly,meditating,mayakovsky,maximillian,marlee,markovski,maniacal,maneuvered,magnificence,maddening,lutze,lunged,lovelies,lorry,loosening,lookee,littered,lilac,lightened,laces,kurzon,kurtzweil,kind've,kimono,kenji,kembu,keanu,kazuo,jonesing,jilted,jiggling,jewelers,jewbilee,jacqnoud,jacksons,ivories,insurmountable,innocuous,innkeeper,infantery,indulged,indescribable,incoherent,impervious,impertinent,imperfections,hunnert,huffy,horsies,horseradish,hollowed,hogwash,hockley,hissing,hiromitsu,hidin,hereafter,helpmann,hehehe,haughty,happenings,hankie,handsomely,halliwells,haklar,haise,gunsights,grossly,grope,grocer,grits,gripping,grabby,glorificus,gizzard,gilardi,gibarian,geminon,gasses,garnish,galloping,gairwyn,futterman,futility,fumigated,fruitless,friendless,freon,foregone,forego,floored,flighty,flapjacks,fizzled,ficus,festering,farbman,fabricate,eyghon,extricate,exalted,eventful,esophagus,enterprising,entail,endor,emphatically,embarrasses,electroshock,easel,duffle,drumsticks,dissection,dissected,disposing,disparaging,disorientation,disintegrated,disarming,devoting,dessaline,deprecating,deplorable,delve,degenerative,deduct,decomposed,deathly,dearie,daunting,dankova,cyclotron,cyberspace,cutbacks,culpable,cuddled,crumpets,cruelly,crouching,cranium,cramming,cowering,couric,cordesh,conversational,conclusively,clung,clotting,cleanest,chipping,chimpanzee,chests,cheapen,chainsaws,censure,catapult,caravaggio,carats,captivating,calrissian,butlers,busybody,bussing,bunion,bulimic,budging,brung,browbeat,brokenhearted,brecher,breakdowns,bracebridge,boning,blowhard,blisters,blackboard,bigotry,bialy,bhamra,bended,begat,battering,baste,basquiat,barricaded,barometer,balled,baited,badenweiler,backhand,ascenscion,argumentative,appendicitis,apparition,anxiously,antagonistic,angora,anacott,amniotic,ambience,alonna,aleck,akashic,ageless,abouts,aawwww,aaaaarrrrrrggghhh,aaaaaa,zendi,yuppies,yodel,y'hear,wrangle,wombosi,wittle,withstanding,wisecracks,wiggling,wierd,whittlesley,whipper,whattya,whatsamatter,whatchamacallit,whassup,whad'ya,weakling,warfarin,waponis,wampum,wadn't,vorash,vizzini,virtucon,viridiana,veracity,ventilated,varicose,varcon,vandalized,vamos,vamoose,vaccinated,vacationing,usted,urinal,uppers,unwittingly,unsealed,unplanned,unhinged,unhand,unfathomable,unequivocally,unbreakable,unadvisedly,udall,tynacorp,tuxes,tussle,turati,tunic,tsavo,trussed,troublemakers,trollop,tremors,transsexual,transfusions,toothbrushes,toned,toddlers,tinted,tightened,thundering,thorpey,this'd,thespian,thaddius,tenuous,tenths,tenement,telethon,teleprompter,teaspoon,taunted,tattle,tardiness,taraka,tappy,tapioca,tapeworm,talcum,tacks,swivel,swaying,superpower,summarize,sumbitch,sultry,suburbia,styrofoam,stylings,strolls,strobe,stockpile,stewardesses,sterilized,sterilize,stealin,stakeouts,squawk,squalor,squabble,sprinkled,sportsmanship,spokes,spiritus,sparklers,spareribs,sowing,sororities,sonovabitch,solicit,softy,softness,softening,snuggling,snatchers,snarling,snarky,snacking,smears,slumped,slowest,slithering,sleazebag,slayed,slaughtering,skidded,skated,sivapathasundaram,sissies,silliness,silences,sidecar,sicced,shylock,shtick,shrugged,shriek,shoves,should'a,shortcake,shockingly,shirking,shaves,shatner,sharpener,shapely,shafted,sexless,septum,selflessness,seabea,scuff,screwball,scoping,scooch,scolding,schnitzel,schemed,scalper,santy,sankara,sanest,salesperson,sakulos,safehouse,sabers,runes,rumblings,rumbling,ruijven,ringers,righto,rhinestones,retrieving,reneging,remodelling,relentlessly,regurgitate,refills,reeking,reclusive,recklessness,recanted,ranchers,rafer,quaking,quacks,prophesied,propensity,profusely,problema,prided,prays,postmark,popsicles,poodles,pollyanna,polaroids,pokes,poconos,pocketful,plunging,plugging,pleeease,platters,pitied,pinetti,piercings,phooey,phonies,pestering,periscope,pentagram,pelts,patronized,paramour,paralyze,parachutes,pales,paella,paducci,owatta,overdone,overcrowded,overcompensating,ostracized,ordinate,optometrist,operandi,omens,okayed,oedipal,nuttier,nuptial,nunheim,noxious,nourish,notepad,nitroglycerin,nibblet,neuroses,nanosecond,nabbit,mythic,munchkins,multimillion,mulroney,mucous,muchas,mountaintop,morlin,mongorians,moneybags,mom'll,molto,mixup,misgivings,mindset,michalchuk,mesmerized,merman,mensa,meaty,mbwun,materialize,materialistic,masterminded,marginally,mapuhe,malfunctioning,magnify,macnamara,macinerney,machinations,macadamia,lysol,lurks,lovelorn,lopsided,locator,litback,litany,linea,limousines,limes,lighters,liebkind,levity,levelheaded,letterhead,lesabre,leron,lepers,lefts,leftenant,laziness,layaway,laughlan,lascivious,laryngitis,lapsed,landok,laminated,kurten,kobol,knucklehead,knowed,knotted,kirkeby,kinsa,karnovsky,jolla,jimson,jettison,jeric,jawed,jankis,janitors,jango,jalopy,jailbreak,jackers,jackasses,invalidate,intercepting,intercede,insinuations,infertile,impetuous,impaled,immerse,immaterial,imbeciles,imagines,idyllic,idolized,icebox,i'd've,hypochondriac,hyphen,hurtling,hurried,hunchback,hullo,horsting,hoooo,homeboys,hollandaise,hoity,hijinks,hesitates,herrero,herndorff,helplessly,heeyy,heathen,hearin,headband,harrassment,harpies,halstrom,hahahahaha,hacer,grumbling,grimlocks,grift,greets,grandmothers,grander,grafts,gordievsky,gondorff,godorsky,glscripts,gaudy,gardeners,gainful,fuses,fukienese,frizzy,freshness,freshening,fraught,frantically,foxbooks,fortieth,forked,foibles,flunkies,fleece,flatbed,fisted,firefight,fingerpaint,filibuster,fhloston,fenceline,femur,fatigues,fanucci,fantastically,familiars,falafel,fabulously,eyesore,expedient,ewwww,eviscerated,erogenous,epidural,enchante,embarassed,embarass,embalming,elude,elspeth,electrocute,eigth,eggshell,echinacea,eases,earpiece,earlobe,dumpsters,dumbshit,dumbasses,duloc,duisberg,drummed,drinkers,dressy,dorma,doily,divvy,diverting,dissuade,disrespecting,displace,disorganized,disgustingly,discord,disapproving,diligence,didja,diced,devouring,detach,destructing,desolate,demerits,delude,delirium,degrade,deevak,deemesa,deductions,deduce,debriefed,deadbeats,dateline,darndest,damnable,dalliance,daiquiri,d'agosta,cussing,cryss,cripes,cretins,crackerjack,cower,coveting,couriers,countermission,cotswolds,convertibles,conversationalist,consorting,consoled,consarn,confides,confidentially,commited,commiserate,comme,comforter,comeuppance,combative,comanches,colosseum,colling,coexist,coaxing,cliffside,chutes,chucked,chokes,childlike,childhoods,chickening,chenowith,charmingly,changin,catsup,captioning,capsize,cappucino,capiche,candlewell,cakewalk,cagey,caddie,buxley,bumbling,bulky,buggered,brussel,brunettes,brumby,brotha,bronck,brisket,bridegroom,braided,bovary,bookkeeper,bluster,bloodline,blissfully,blase,billionaires,bicker,berrisford,bereft,berating,berate,bendy,belive,belated,beikoku,beens,bedspread,bawdy,barreling,baptize,banya,balthazar,balmoral,bakshi,bails,badgered,backstreet,awkwardly,auras,attuned,atheists,astaire,assuredly,arrivederci,appetit,appendectomy,apologetic,antihistamine,anesthesiologist,amulets,albie,alarmist,aiight,adstream,admirably,acquaint,abound,abominable,aaaaaaah,zekes,zatunica,wussy,worded,wooed,woodrell,wiretap,windowsill,windjammer,windfall,whisker,whims,whatiya,whadya,weirdly,weenies,waunt,washout,wanto,waning,victimless,verdad,veranda,vandaley,vancomycin,valise,vaguest,upshot,unzip,unwashed,untrained,unstuck,unprincipled,unmentionables,unjustly,unfolds,unemployable,uneducated,unduly,undercut,uncovering,unconsciousness,unconsciously,tyndareus,turncoat,turlock,tulle,tryouts,trouper,triplette,trepkos,tremor,treeger,trapeze,traipse,tradeoff,trach,torin,tommorow,tollan,toity,timpani,thumbprint,thankless,tell'em,telepathy,telemarketing,telekinesis,teevee,teeming,tarred,tambourine,talentless,swooped,switcheroo,swirly,sweatpants,sunstroke,suitors,sugarcoat,subways,subterfuge,subservient,subletting,stunningly,strongbox,striptease,stravanavitch,stradling,stoolie,stodgy,stocky,stifle,stealer,squeezes,squatter,squarely,sprouted,spool,spindly,speedos,soups,soundly,soulmates,somebody'll,soliciting,solenoid,sobering,snowflakes,snowballs,snores,slung,slimming,skulk,skivvies,skewered,skewer,sizing,sistine,sidebar,sickos,shushing,shunt,shugga,shone,shol'va,sharpened,shapeshifter,shadowing,shadoe,selectman,sefelt,seared,scrounging,scribbling,scooping,scintillating,schmoozing,scallops,sapphires,sanitarium,sanded,safes,rudely,roust,rosebush,rosasharn,rondell,roadhouse,riveted,rewrote,revamp,retaliatory,reprimand,replicators,replaceable,remedied,relinquishing,rejoicing,reincarnated,reimbursed,reevaluate,redid,redefine,recreating,reconnected,rebelling,reassign,rearview,rayne,ravings,ratso,rambunctious,radiologist,quiver,quiero,queef,qualms,pyrotechnics,pulsating,psychosomatic,proverb,promiscuous,profanity,prioritize,preying,predisposition,precocious,precludes,prattling,prankster,povich,potting,postpartum,porridge,polluting,plowing,pistachio,pissin,pickpocket,physicals,peruse,pertains,personified,personalize,perjured,perfecting,pepys,pepperdine,pembry,peering,peels,pedophile,patties,passkey,paratrooper,paraphernalia,paralyzing,pandering,paltry,palpable,pagers,pachyderm,overstay,overestimated,overbite,outwit,outgrow,outbid,ooops,oomph,oohhh,oldie,obliterate,objectionable,nygma,notting,noches,nitty,nighters,newsstands,newborns,neurosurgery,nauseated,nastiest,narcolepsy,mutilate,muscled,murmur,mulva,mulling,mukada,muffled,morgues,moonbeams,monogamy,molester,molestation,molars,moans,misprint,mismatched,mirth,mindful,mimosas,millander,mescaline,menstrual,menage,mellowing,medevac,meddlesome,matey,manicures,malevolent,madmen,macaroons,lydell,lycra,lunchroom,lunching,lozenges,looped,litigious,liquidate,linoleum,lingk,limitless,limber,lilacs,ligature,liftoff,lemmiwinks,leggo,learnin,lazarre,lawyered,lactose,knelt,kenosha,kemosabe,jussy,junky,jordy,jimmies,jeriko,jakovasaur,issacs,isabela,irresponsibility,ironed,intoxication,insinuated,inherits,ingest,ingenue,inflexible,inflame,inevitability,inedible,inducement,indignant,indictments,indefensible,incomparable,incommunicado,improvising,impounded,illogical,ignoramus,hydrochloric,hydrate,hungover,humorless,humiliations,hugest,hoverdrone,hovel,hmmph,hitchhike,hibernating,henchman,helloooo,heirlooms,heartsick,headdress,hatches,harebrained,hapless,hanen,handsomer,hallows,habitual,guten,gummy,guiltier,guidebook,gstaad,gruff,griss,grieved,grata,gorignak,goosed,goofed,glowed,glitz,glimpses,glancing,gilmores,gianelli,geraniums,garroway,gangbusters,gamblers,galls,fuddy,frumpy,frowning,frothy,fro'tak,frere,fragrances,forgettin,follicles,flowery,flophouse,floatin,flirts,flings,flatfoot,fingerprinting,fingerprinted,fingering,finald,fillet,fianc,femoral,federales,fawkes,fascinates,farfel,fambly,falsified,fabricating,exterminators,expectant,excusez,excrement,excercises,evian,etins,esophageal,equivalency,equate,equalizer,entrees,enquire,endearment,empathetic,emailed,eggroll,earmuffs,dyslexic,duper,duesouth,drunker,druggie,dreadfully,dramatics,dragline,downplay,downers,dominatrix,doers,docket,docile,diversify,distracts,disloyalty,disinterested,discharging,disagreeable,dirtier,dinghy,dimwitted,dimoxinil,dimmy,diatribe,devising,deviate,detriment,desertion,depressants,depravity,deniability,delinquents,defiled,deepcore,deductive,decimate,deadbolt,dauthuille,dastardly,daiquiris,daggers,dachau,curiouser,curdled,cucamonga,cruller,cruces,crosswalk,crinkle,crescendo,cremate,counseled,couches,cornea,corday,copernicus,contrition,contemptible,constipated,conjoined,confounded,condescend,concoct,conch,compensating,committment,commandeered,comely,coddled,cockfight,cluttered,clunky,clownfish,cloaked,clenched,cleanin,civilised,circumcised,cimmeria,cilantro,chutzpah,chucking,chiseled,chicka,chattering,cervix,carrey,carpal,carnations,cappuccinos,candied,calluses,calisthenics,bushy,burners,budington,buchanans,brimming,braids,boycotting,bouncers,botticelli,botherin,bookkeeping,bogyman,bogged,bloodthirsty,blintzes,blanky,binturong,billable,bigboote,bewildered,betas,bequeath,behoove,befriend,bedpost,bedded,baudelaires,barreled,barboni,barbeque,bangin,baltus,bailout,backstabber,baccarat,awning,augie,arguillo,archway,apricots,apologising,annyong,anchorman,amenable,amazement,allspice,alannis,airfare,airbags,ahhhhhhhhh,ahhhhhhhh,ahhhhhhh,agitator,adrenal,acidosis,achoo,accessorizing,accentuate,abrasions,abductor,aaaahhh,aaaaaaaa,aaaaaaa,zeroing,zelner,zeldy,yevgeny,yeska,yellows,yeesh,yeahh,yamuri,wouldn't've,workmanship,woodsman,winnin,winked,wildness,whoring,whitewash,whiney,when're,wheezer,wheelman,wheelbarrow,westerburg,weeding,watermelons,washboard,waltzes,wafting,voulez,voluptuous,vitone,vigilantes,videotaping,viciously,vices,veruca,vermeer,verifying,vasculitis,valets,upholstered,unwavering,untold,unsympathetic,unromantic,unrecognizable,unpredictability,unmask,unleashing,unintentional,unglued,unequivocal,underrated,underfoot,unchecked,unbutton,unbind,unbiased,unagi,uhhhhh,tugging,triads,trespasses,treehorn,traviata,trappers,transplants,trannie,tramping,tracheotomy,tourniquet,tooty,toothless,tomarrow,toasters,thruster,thoughtfulness,thornwood,tengo,tenfold,telltale,telephoto,telephoned,telemarketer,tearin,tastic,tastefully,tasking,taser,tamed,tallow,taketh,taillight,tadpoles,tachibana,syringes,sweated,swarthy,swagger,surges,supermodels,superhighway,sunup,sun'll,sulfa,sugarless,sufficed,subside,strolled,stringy,strengthens,straightest,straightens,storefront,stopper,stockpiling,stimulant,stiffed,steyne,sternum,stepladder,stepbrother,steers,steelheads,steakhouse,stathis,stankylecartmankennymr,standoffish,stalwart,squirted,spritz,sprig,sprawl,spousal,sphincter,spenders,spearmint,spatter,spangled,southey,soured,sonuvabitch,somethng,snuffed,sniffs,smokescreen,smilin,slobs,sleepwalker,sleds,slays,slayage,skydiving,sketched,skanks,sixed,siphoned,siphon,simpering,sigfried,sidearm,siddons,sickie,shuteye,shuffleboard,shrubberies,shrouded,showmanship,shouldn't've,shoplift,shiatsu,sentries,sentance,sensuality,seething,secretions,searing,scuttlebutt,sculpt,scowling,scouring,scorecard,schoolers,schmucks,scepters,scaly,scalps,scaffolding,sauces,sartorius,santen,salivating,sainthood,saget,saddens,rygalski,rusting,ruination,rueland,rudabaga,rottweiler,roofies,romantics,rollerblading,roldy,roadshow,rickets,rible,rheza,revisiting,retentive,resurface,restores,respite,resounding,resorting,resists,repulse,repressing,repaying,reneged,refunds,rediscover,redecorated,reconstructive,recommitted,recollect,receptacle,reassess,reanimation,realtors,razinin,rationalization,ratatouille,rashum,rasczak,rancheros,rampler,quizzing,quips,quartered,purring,pummeling,puede,proximo,prospectus,pronouncing,prolonging,procreation,proclamations,principled,prides,preoccupation,prego,precog,prattle,pounced,potshots,potpourri,porque,pomegranates,polenta,plying,pluie,plesac,playmates,plantains,pillowcase,piddle,pickers,photocopied,philistine,perpetuate,perpetually,perilous,pawned,pausing,pauper,parter,parlez,parlay,pally,ovulation,overtake,overstate,overpowering,overpowered,overconfident,overbooked,ovaltine,outweighs,outings,ottos,orrin,orifice,orangutan,oopsy,ooooooooh,oooooo,ooohhhh,ocular,obstruct,obscenely,o'dwyer,nutjob,nunur,notifying,nostrand,nonny,nonfat,noblest,nimble,nikes,nicht,newsworthy,nestled,nearsighted,ne'er,nastier,narco,nakedness,muted,mummified,mudda,mozzarella,moxica,motivator,motility,mothafucka,mortmain,mortgaged,mores,mongers,mobbed,mitigating,mistah,misrepresented,mishke,misfortunes,misdirection,mischievous,mineshaft,millaney,microwaves,metzenbaum,mccovey,masterful,masochistic,marliston,marijawana,manya,mantumbi,malarkey,magnifique,madrona,madox,machida,m'hidi,lullabies,loveliness,lotions,looka,lompoc,litterbug,litigator,lithe,liquorice,linds,limericks,lightbulb,lewises,letch,lemec,layover,lavatory,laurels,lateness,laparotomy,laboring,kuato,kroff,krispy,krauts,knuckleheads,kitschy,kippers,kimbrow,keypad,keepsake,kebab,karloff,junket,judgemental,jointed,jezzie,jetting,jeeze,jeeter,jeesus,jeebs,janeane,jails,jackhammer,ixnay,irritates,irritability,irrevocable,irrefutable,irked,invoking,intricacies,interferon,intents,insubordinate,instructive,instinctive,inquisitive,inlay,injuns,inebriated,indignity,indecisive,incisors,incacha,inalienable,impresses,impregnate,impregnable,implosion,idolizes,hypothyroidism,hypoglycemic,huseni,humvee,huddling,honing,hobnobbing,hobnob,histrionics,histamine,hirohito,hippocratic,hindquarters,hikita,hikes,hightailed,hieroglyphics,heretofore,herbalist,hehey,hedriks,heartstrings,headmistress,headlight,hardheaded,happend,handlebars,hagitha,habla,gyroscope,guys'd,guy'd,guttersnipe,grump,growed,grovelling,groan,greenbacks,gravedigger,grating,grasshoppers,grandiose,grandest,grafted,gooood,goood,gooks,godsakes,goaded,glamorama,giveth,gingham,ghostbusters,germane,georgy,gazzo,gazelles,gargle,garbled,galgenstein,gaffe,g'day,fyarl,furnish,furies,fulfills,frowns,frowned,frighteningly,freebies,freakishly,forewarned,foreclose,forearms,fordson,fonics,flushes,flitting,flemmer,flabby,fishbowl,fidgeting,fevers,feigning,faxing,fatigued,fathoms,fatherless,fancier,fanatical,factored,eyelid,eyeglasses,expresso,expletive,expectin,excruciatingly,evidentiary,ever'thing,eurotrash,eubie,estrangement,erlich,epitome,entrap,enclose,emphysema,embers,emasculating,eighths,eardrum,dyslexia,duplicitous,dumpty,dumbledore,dufus,duddy,duchamp,drunkenness,drumlin,drowns,droid,drinky,drifts,drawbridge,dramamine,douggie,douchebag,dostoyevsky,doodling,don'tcha,domineering,doings,dogcatcher,doctoring,ditzy,dissimilar,dissecting,disparage,disliking,disintegrating,dishwalla,dishonored,dishing,disengaged,disavowed,dippy,diorama,dimmed,dilate,digitalis,diggory,dicing,diagnosing,devola,desolation,dennings,denials,deliverance,deliciously,delicacies,degenerates,degas,deflector,defile,deference,decrepit,deciphered,dawdle,dauphine,daresay,dangles,dampen,damndest,cucumbers,cucaracha,cryogenically,croaks,croaked,criticise,crisper,creepiest,creams,crackle,crackin,covertly,counterintelligence,corrosive,cordially,cops'll,convulsions,convoluted,conversing,conga,confrontational,confab,condolence,condiments,complicit,compiegne,commodus,comings,cometh,collusion,collared,cockeyed,clobber,clemonds,clarithromycin,cienega,christmasy,christmassy,chloroform,chippie,chested,cheeco,checklist,chauvinist,chandlers,chambermaid,chakras,cellophane,caveat,cataloguing,cartmanland,carples,carny,carded,caramels,cappy,caped,canvassing,callback,calibrated,calamine,buttermilk,butterfingers,bunsen,bulimia,bukatari,buildin,budged,brobich,bringer,brendell,brawling,bratty,braised,boyish,boundless,botch,boosh,bookies,bonbons,bodes,bobunk,bluntly,blossoming,bloomers,bloodstains,bloodhounds,blech,biter,biometric,bioethics,bijan,bigoted,bicep,bereaved,bellowing,belching,beholden,beached,batmobile,barcodes,barch,barbecuing,bandanna,backwater,backtrack,backdraft,augustino,atrophy,atrocity,atley,atchoo,asthmatic,assoc,armchair,arachnids,aptly,appetizing,antisocial,antagonizing,anorexia,anini,andersons,anagram,amputation,alleluia,airlock,aimless,agonized,agitate,aggravating,aerosol,acing,accomplishing,accidently,abuser,abstain,abnormally,aberration,aaaaahh,zlotys,zesty,zerzura,zapruder,zantopia,yelburton,yeess,y'knowwhati'msayin,wwhat,wussies,wrenched,would'a,worryin,wormser,wooooo,wookiee,wolchek,wishin,wiseguys,windbreaker,wiggy,wieners,wiedersehen,whoopin,whittled,wherefore,wharvey,welts,wellstone,wedges,wavered,watchit,wastebasket,wango,waken,waitressed,wacquiem,vrykolaka,voula,vitally,visualizing,viciousness,vespers,vertes,verily,vegetarians,vater,vaporize,vannacutt,vallens,ussher,urinating,upping,unwitting,untangle,untamed,unsanitary,unraveled,unopened,unisex,uninvolved,uninteresting,unintelligible,unimaginative,undeserving,undermines,undergarments,unconcerned,tyrants,typist,tykes,tybalt,twosome,twits,tutti,turndown,tularemia,tuberculoma,tsimshian,truffaut,truer,truant,trove,triumphed,tripe,trigonometry,trifled,trifecta,tribulations,tremont,tremoille,transcends,trafficker,touchin,tomfoolery,tinkered,tinfoil,tightrope,thousan,thoracotomy,thesaurus,thawing,thatta,tessio,temps,taxidermist,tator,tachycardia,t'akaya,swelco,sweetbreads,swatting,supercollider,sunbathing,summarily,suffocation,sueleen,succinct,subsided,submissive,subjecting,subbing,subatomic,stupendous,stunted,stubble,stubbed,streetwalker,strategizing,straining,straightaway,stoli,stiffer,stickup,stens,steamroller,steadwell,steadfast,stateroom,stans,sshhhh,squishing,squinting,squealed,sprouting,sprimp,spreadsheets,sprawled,spotlights,spooning,spirals,speedboat,spectacles,speakerphone,southglen,souse,soundproof,soothsayer,sommes,somethings,solidify,soars,snorted,snorkeling,snitches,sniping,snifter,sniffin,snickering,sneer,snarl,smila,slinking,slanted,slanderous,slammin,skimp,skilosh,siteid,sirloin,singe,sighing,sidekicks,sicken,showstopper,shoplifter,shimokawa,sherborne,shavadai,sharpshooters,sharking,shagged,shaddup,senorita,sesterces,sensuous,seahaven,scullery,scorcher,schotzie,schnoz,schmooze,schlep,schizo,scents,scalping,scalped,scallop,scalding,sayeth,saybrooke,sawed,savoring,sardine,sandstorm,sandalwood,salutations,sagman,s'okay,rsvp'd,rousted,rootin,romper,romanovs,rollercoaster,rolfie,robinsons,ritzy,ritualistic,ringwald,rhymed,rheingold,rewrites,revoking,reverts,retrofit,retort,retinas,respirations,reprobate,replaying,repaint,renquist,renege,relapsing,rekindled,rejuvenating,rejuvenated,reinstating,recriminations,rechecked,reassemble,rears,reamed,reacquaint,rayanne,ravish,rathole,raspail,rarest,rapists,rants,racketeer,quittin,quitters,quintessential,queremos,quellek,quelle,quasimodo,pyromaniac,puttanesca,puritanical,purer,puree,pungent,pummel,puedo,psychotherapist,prosecutorial,prosciutto,propositioning,procrastination,probationary,primping,preventative,prevails,preservatives,preachy,praetorians,practicality,powders,potus,postop,positives,poser,portolano,portokalos,poolside,poltergeists,pocketed,poach,plummeted,plucking,plimpton,playthings,plastique,plainclothes,pinpointed,pinkus,pinks,pigskin,piffle,pictionary,piccata,photocopy,phobias,perignon,perfumes,pecks,pecked,patently,passable,parasailing,paramus,papier,paintbrush,pacer,paaiint,overtures,overthink,overstayed,overrule,overestimate,overcooked,outlandish,outgrew,outdoorsy,outdo,orchestrate,oppress,opposable,oooohh,oomupwah,okeydokey,okaaay,ohashi,of'em,obscenities,oakie,o'gar,nurection,nostradamus,norther,norcom,nooch,nonsensical,nipped,nimbala,nervously,neckline,nebbleman,narwhal,nametag,n'n't,mycenae,muzak,muumuu,mumbled,mulvehill,muggings,muffet,mouthy,motivates,motaba,moocher,mongi,moley,moisturize,mohair,mocky,mmkay,mistuh,missis,misdeeds,mincemeat,miggs,miffed,methadone,messieur,menopausal,menagerie,mcgillicuddy,mayflowers,matrimonial,matick,masai,marzipan,maplewood,manzelle,mannequins,manhole,manhandle,malfunctions,madwoman,machiavelli,lynley,lynched,lurconis,lujack,lubricant,looove,loons,loofah,lonelyhearts,lollipops,lineswoman,lifers,lexter,lepner,lemony,leggy,leafy,leadeth,lazerus,lazare,lawford,languishing,lagoda,ladman,kundera,krinkle,krendler,kreigel,kowolski,knockdown,knifed,kneed,kneecap,kids'll,kennie,kenmore,keeled,kazootie,katzenmoyer,kasdan,karak,kapowski,kakistos,julyan,jockstrap,jobless,jiggly,jaunt,jarring,jabbering,irrigate,irrevocably,irrationally,ironies,invitro,intimated,intently,intentioned,intelligently,instill,instigator,instep,inopportune,innuendoes,inflate,infects,infamy,indiscretions,indiscreet,indio,indignities,indict,indecision,inconspicuous,inappropriately,impunity,impudent,impotence,implicates,implausible,imperfection,impatience,immutable,immobilize,idealist,iambic,hysterically,hyperspace,hygienist,hydraulics,hydrated,huzzah,husks,hunched,huffed,hubris,hubbub,hovercraft,houngan,hosed,horoscopes,hopelessness,hoodwinked,honorably,honeysuckle,homegirl,holiest,hippity,hildie,hieroglyphs,hexton,herein,heckle,heaping,healthilizer,headfirst,hatsue,harlot,hardwired,halothane,hairstyles,haagen,haaaaa,gutting,gummi,groundless,groaning,gristle,grills,graynamore,grabbin,goodes,goggle,glittering,glint,gleaming,glassy,girth,gimbal,giblets,gellers,geezers,geeze,garshaw,gargantuan,garfunkel,gangway,gandarium,gamut,galoshes,gallivanting,gainfully,gachnar,fusionlips,fusilli,furiously,frugal,fricking,frederika,freckling,frauds,fountainhead,forthwith,forgo,forgettable,foresight,foresaw,fondling,fondled,fondle,folksy,fluttering,fluffing,floundering,flirtatious,flexing,flatterer,flaring,fixating,finchy,figurehead,fiendish,fertilize,ferment,fending,fellahs,feelers,fascinate,fantabulous,falsify,fallopian,faithless,fairer,fainter,failings,facetious,eyepatch,exxon,extraterrestrials,extradite,extracurriculars,extinguish,expunged,expelling,exorbitant,exhilarated,exertion,exerting,excercise,everbody,evaporated,escargot,escapee,erases,epizootics,epithelials,ephrum,entanglements,enslave,engrossed,emphatic,emeralds,ember,emancipated,elevates,ejaculate,effeminate,eccentricities,easygoing,earshot,dunks,dullness,dulli,dulled,drumstick,dropper,driftwood,dregs,dreck,dreamboat,draggin,downsizing,donowitz,dominoes,diversions,distended,dissipate,disraeli,disqualify,disowned,dishwashing,disciplining,discerning,disappoints,dinged,digested,dicking,detonating,despising,depressor,depose,deport,dents,defused,deflecting,decryption,decoys,decoupage,decompress,decibel,decadence,deafening,dawning,dater,darkened,dappy,dallying,dagon,czechoslovakians,cuticles,cuteness,cupboards,culottes,cruisin,crosshairs,cronyn,criminalistics,creatively,creaming,crapping,cranny,cowed,contradicting,constipation,confining,confidences,conceiving,conceivably,concealment,compulsively,complainin,complacent,compels,communing,commode,comming,commensurate,columnists,colonoscopy,colchicine,coddling,clump,clubbed,clowning,cliffhanger,clang,cissy,choosers,choker,chiffon,channeled,chalet,cellmates,cathartic,caseload,carjack,canvass,canisters,candlestick,candlelit,camry,calzones,calitri,caldy,byline,butterball,bustier,burlap,bureaucrat,buffoons,buenas,brookline,bronzed,broiled,broda,briss,brioche,briar,breathable,brays,brassieres,boysenberry,bowline,boooo,boonies,booklets,bookish,boogeyman,boogey,bogas,boardinghouse,bluuch,blundering,bluer,blowed,blotchy,blossomed,bloodwork,bloodied,blithering,blinks,blathering,blasphemous,blacking,birdson,bings,bfmid,bfast,bettin,berkshires,benjamins,benevolence,benched,benatar,bellybutton,belabor,behooves,beddy,beaujolais,beattle,baxworth,baseless,barfing,bannish,bankrolled,banek,ballsy,ballpoint,baffling,badder,badda,bactine,backgammon,baako,aztreonam,authoritah,auctioning,arachtoids,apropos,aprons,apprised,apprehensive,anythng,antivenin,antichrist,anorexic,anoint,anguished,angioplasty,angio,amply,ampicillin,amphetamines,alternator,alcove,alabaster,airlifted,agrabah,affidavits,admonished,admonish,addled,addendum,accuser,accompli,absurdity,absolved,abrusso,abreast,aboot,abductions,abducting,aback,ababwa,aaahhhh,zorin,zinthar,zinfandel,zillions,zephyrs,zatarcs,zacks,youuu,yokels,yardstick,yammer,y'understand,wynette,wrung,wreaths,wowed,wouldn'ta,worming,wormed,workday,woodsy,woodshed,woodchuck,wojadubakowski,withering,witching,wiseass,wiretaps,wining,willoby,wiccaning,whupped,whoopi,whoomp,wholesaler,whiteness,whiner,whatchya,wharves,wenus,weirdoes,weaning,watusi,waponi,waistband,wackos,vouching,votre,vivica,viveca,vivant,vivacious,visor,visitin,visage,vicrum,vetted,ventriloquism,venison,varnsen,vaporized,vapid,vanstock,uuuuh,ushering,urologist,urination,upstart,uprooted,unsubtitled,unspoiled,unseat,unseasonably,unseal,unsatisfying,unnerve,unlikable,unleaded,uninsured,uninspired,unicycle,unhooked,unfunny,unfreezing,unflattering,unfairness,unexpressed,unending,unencumbered,unearth,undiscovered,undisciplined,understan,undershirt,underlings,underline,undercurrent,uncivilized,uncharacteristic,umpteenth,uglies,tuney,trumps,truckasaurus,trubshaw,trouser,tringle,trifling,trickster,trespassers,trespasser,traumas,trattoria,trashes,transgressions,trampling,tp'ed,toxoplasmosis,tounge,tortillas,topsy,topple,topnotch,tonsil,tions,timmuh,timithious,tilney,tighty,tightness,tightens,tidbits,ticketed,thyme,threepio,thoughtfully,thorkel,thommo,thing'll,thefts,that've,thanksgivings,tetherball,testikov,terraforming,tepid,tendonitis,tenboom,telex,teenybopper,tattered,tattaglias,tanneke,tailspin,tablecloth,swooping,swizzle,swiping,swindled,swilling,swerving,sweatshops,swaddling,swackhammer,svetkoff,supossed,superdad,sumptuous,sugary,sugai,subvert,substantiate,submersible,sublimating,subjugation,stymied,strychnine,streetlights,strassmans,stranglehold,strangeness,straddling,straddle,stowaways,stotch,stockbrokers,stifling,stepford,steerage,steena,statuary,starlets,staggeringly,ssshhh,squaw,spurt,spungeon,spritzer,sprightly,sprays,sportswear,spoonful,splittin,splitsville,speedily,specialise,spastic,sparrin,souvlaki,southie,sourpuss,soupy,soundstage,soothes,somebody'd,softest,sociopathic,socialized,snyders,snowmobiles,snowballed,snatches,smugness,smoothest,smashes,sloshed,sleight,skyrocket,skied,skewed,sixpence,sipowicz,singling,simulates,shyness,shuvanis,showoff,shortsighted,shopkeeper,shoehorn,shithouse,shirtless,shipshape,shifu,shelve,shelbyville,sheepskin,sharpens,shaquille,shanshu,servings,sequined,seizes,seashells,scrambler,scopes,schnauzer,schmo,schizoid,scampered,savagely,saudis,santas,sandovals,sanding,saleswoman,sagging,s'cuse,rutting,ruthlessly,runneth,ruffians,rubes,rosalita,rollerblades,rohypnol,roasts,roadies,ritten,rippling,ripples,rigoletto,richardo,rethought,reshoot,reserving,reseda,rescuer,reread,requisitions,repute,reprogram,replenish,repetitious,reorganizing,reinventing,reinvented,reheat,refrigerators,reenter,recruiter,recliner,rawdy,rashes,rajeski,raison,raisers,rages,quinine,questscape,queller,pygmalion,pushers,pusan,purview,pumpin,pubescent,prudes,provolone,propriety,propped,procrastinate,processional,preyed,pretrial,portent,pooling,poofy,polloi,policia,poacher,pluses,pleasuring,platitudes,plateaued,plaguing,pittance,pinheads,pincushion,pimply,pimped,piggyback,piecing,phillipe,philipse,philby,pharaohs,petyr,petitioner,peshtigo,pesaram,persnickety,perpetrate,percolating,pepto,penne,penell,pemmican,peeks,pedaling,peacemaker,pawnshop,patting,pathologically,patchouli,pasts,pasties,passin,parlors,paltrow,palamon,padlock,paddling,oversleep,overheating,overdosed,overcharge,overblown,outrageously,ornery,opportune,oooooooooh,oohhhh,ohhhhhh,ogres,odorless,obliterated,nyong,nymphomaniac,ntozake,novocain,nough,nonnie,nonissue,nodules,nightmarish,nightline,niceties,newsman,needra,nedry,necking,navour,nauseam,nauls,narim,namath,nagged,naboo,n'sync,myslexia,mutator,mustafi,musketeer,murtaugh,murderess,munching,mumsy,muley,mouseville,mortifying,morgendorffers,moola,montel,mongoloid,molestered,moldings,mocarbies,mo'ss,mixers,misrell,misnomer,misheard,mishandled,miscreant,misconceptions,miniscule,millgate,mettle,metricconverter,meteors,menorah,mengele,melding,meanness,mcgruff,mcarnold,matzoh,matted,mastectomy,massager,marveling,marooned,marmaduke,marick,manhandled,manatees,man'll,maltin,maliciously,malfeasance,malahide,maketh,makeovers,maiming,machismo,lumpectomy,lumbering,lucci,lording,lorca,lookouts,loogie,loners,loathed,lissen,lighthearted,lifer,lickin,lewen,levitation,lestercorp,lessee,lentils,legislate,legalizing,lederhosen,lawmen,lasskopf,lardner,lambeau,lamagra,ladonn,lactic,lacquer,labatier,krabappel,kooks,knickknacks,klutzy,kleynach,klendathu,kinross,kinkaid,kind'a,ketch,kesher,karikos,karenina,kanamits,junshi,jumbled,joust,jotted,jobson,jingling,jigalong,jerries,jellies,jeeps,javna,irresistable,internist,intercranial,inseminated,inquisitor,infuriate,inflating,infidelities,incessantly,incensed,incase,incapacitate,inasmuch,inaccuracies,imploding,impeding,impediments,immaturity,illegible,iditarod,icicles,ibuprofen,i'i'm,hymie,hydrolase,hunker,humps,humons,humidor,humdinger,humbling,huggin,huffing,housecleaning,hothouse,hotcakes,hosty,hootenanny,hootchie,hoosegow,honks,honeymooners,homily,homeopathic,hitchhikers,hissed,hillnigger,hexavalent,hewwo,hershe,hermey,hergott,henny,hennigans,henhouse,hemolytic,helipad,heifer,hebrews,hebbing,heaved,headlock,harrowing,harnessed,hangovers,handi,handbasket,halfrek,hacene,gyges,guys're,gundersons,gumption,gruntmaster,grubs,grossie,groped,grins,greaseball,gravesite,gratuity,granma,grandfathers,grandbaby,gradski,gracing,gossips,gooble,goners,golitsyn,gofer,godsake,goddaughter,gnats,gluing,glares,givers,ginza,gimmie,gimmee,gennero,gemme,gazpacho,gazed,gassy,gargling,gandhiji,galvanized,gallbladder,gaaah,furtive,fumigation,fucka,fronkonsteen,frills,freezin,freewald,freeloader,frailty,forger,foolhardy,fondest,fomin,followin,follicle,flotation,flopping,floodgates,flogged,flicked,flenders,fleabag,fixings,fixable,fistful,firewater,firelight,fingerbang,finalizing,fillin,filipov,fiderer,felling,feldberg,feign,faunia,fatale,farkus,fallible,faithfulness,factoring,eyeful,extramarital,exterminated,exhume,exasperated,eviscerate,estoy,esmerelda,escapades,epoxy,enticed,enthused,entendre,engrossing,endorphins,emptive,emmys,eminently,embezzler,embarressed,embarrassingly,embalmed,eludes,eling,elated,eirie,egotitis,effecting,eerily,eecom,eczema,earthy,earlobes,eally,dyeing,dwells,duvet,duncans,dulcet,droves,droppin,drools,drey'auc,downriver,domesticity,dollop,doesnt,dobler,divulged,diversionary,distancing,dispensers,disorienting,disneyworld,dismissive,disingenuous,disheveled,disfiguring,dinning,dimming,diligently,dilettante,dilation,dickensian,diaphragms,devastatingly,destabilize,desecrate,deposing,deniece,demony,delving,delicates,deigned,defraud,deflower,defibrillator,defiantly,defenceless,defacing,deconstruction,decompose,deciphering,decibels,deceptively,deceptions,decapitation,debutantes,debonair,deadlier,dawdling,davic,darwinism,darnit,darks,danke,danieljackson,dangled,cytoxan,cutout,cutlery,curveball,curfews,cummerbund,crunches,crouched,crisps,cripples,crilly,cribs,crewman,creepin,creeds,credenza,creak,crawly,crawlin,crawlers,crated,crackheads,coworker,couldn't've,corwins,coriander,copiously,convenes,contraceptives,contingencies,contaminating,conniption,condiment,concocting,comprehending,complacency,commendatore,comebacks,com'on,collarbone,colitis,coldly,coiffure,coffers,coeds,codependent,cocksucking,cockney,cockles,clutched,closeted,cloistered,cleve,cleats,clarifying,clapped,cinnabar,chunnel,chumps,cholinesterase,choirboy,chocolatey,chlamydia,chigliak,cheesie,chauvinistic,chasm,chartreuse,charo,charnier,chapil,chalked,chadway,certifiably,cellulite,celled,cavalcade,cataloging,castrated,cassio,cashews,cartouche,carnivore,carcinogens,capulet,captivated,capt'n,cancellations,campin,callate,callar,caffeinated,cadavers,cacophony,cackle,buzzes,buttoning,busload,burglaries,burbs,buona,bunions,bullheaded,buffs,bucyk,buckling,bruschetta,browbeating,broomsticks,broody,bromly,brolin,briefings,brewskies,breathalyzer,breakups,bratwurst,brania,braiding,brags,braggin,bradywood,bottomed,bossa,bordello,bookshelf,boogida,bondsman,bolder,boggles,bludgeoned,blowtorch,blotter,blips,blemish,bleaching,blainetologists,blading,blabbermouth,birdseed,bimmel,biloxi,biggly,bianchinni,betadine,berenson,belus,belloq,begets,befitting,beepers,beelzebub,beefed,bedridden,bedevere,beckons,beaded,baubles,bauble,battleground,bathrobes,basketballs,basements,barroom,barnacle,barkin,barked,baretta,bangles,bangler,banality,bambang,baltar,ballplayers,bagman,baffles,backroom,babysat,baboons,averse,audiotape,auctioneer,atten,atcha,astonishment,arugula,arroz,antihistamines,annoyances,anesthesiology,anatomically,anachronism,amiable,amaretto,allahu,alight,aimin,ailment,afterglow,affronte,advil,adrenals,actualization,acrost,ached,accursed,accoutrements,absconded,aboveboard,abetted,aargh,aaaahh,zuwicky,zolda,ziploc,zakamatak,youve,yippie,yesterdays,yella,yearns,yearnings,yearned,yawning,yalta,yahtzee,y'mean,y'are,wuthering,wreaks,worrisome,workiiing,wooooooo,wonky,womanizing,wolodarsky,wiwith,withdraws,wishy,wisht,wipers,wiper,winos,windthorne,windsurfing,windermere,wiggled,wiggen,whwhat,whodunit,whoaaa,whittling,whitesnake,whereof,wheezing,wheeze,whatd'ya,whataya,whammo,whackin,wellll,weightless,weevil,wedgies,webbing,weasly,wayside,waxes,waturi,washy,washrooms,wandell,waitaminute,waddya,waaaah,vornac,vishnoor,virulent,vindictiveness,vinceres,villier,vigeous,vestigial,ventilate,vented,venereal,veering,veered,veddy,vaslova,valosky,vailsburg,vaginas,vagas,urethra,upstaged,uploading,unwrapping,unwieldy,untapped,unsatisfied,unquenchable,unnerved,unmentionable,unlovable,unknowns,uninformed,unimpressed,unhappily,unguarded,unexplored,undergarment,undeniably,unclench,unclaimed,uncharacteristically,unbuttoned,unblemished,ululd,uhhhm,tweeze,tutsami,tushy,tuscarora,turkle,turghan,turbinium,tubers,trucoat,troxa,tropicana,triquetra,trimmers,triceps,trespassed,traya,traumatizing,transvestites,trainors,tradin,trackers,townies,tourelles,toucha,tossin,tortious,topshop,topes,tonics,tongs,tomsk,tomorrows,toiling,toddle,tizzy,tippers,timmi,thwap,thusly,ththe,thrusts,throwers,throwed,throughway,thickening,thermonuclear,thelwall,thataway,terrifically,tendons,teleportation,telepathically,telekinetic,teetering,teaspoons,tarantulas,tapas,tanned,tangling,tamales,tailors,tahitian,tactful,tachy,tablespoon,syrah,synchronicity,synch,synapses,swooning,switchman,swimsuits,sweltering,sweetly,suvolte,suslov,surfed,supposition,suppertime,supervillains,superfluous,superego,sunspots,sunning,sunless,sundress,suckah,succotash,sublevel,subbasement,studious,striping,strenuously,straights,stonewalled,stillness,stilettos,stevesy,steno,steenwyck,stargates,stammering,staedert,squiggly,squiggle,squashing,squaring,spreadsheet,spramp,spotters,sporto,spooking,splendido,spittin,spirulina,spiky,spate,spartacus,spacerun,soonest,something'll,someth,somepin,someone'll,sofas,soberly,sobered,snowmen,snowbank,snowballing,snivelling,sniffling,snakeskin,snagging,smush,smooter,smidgen,smackers,slumlord,slossum,slimmer,slighted,sleepwalk,sleazeball,skokie,skeptic,sitarides,sistah,sipped,sindell,simpletons,simony,silkwood,silks,silken,sightless,sideboard,shuttles,shrugging,shrouds,showy,shoveled,shouldn'ta,shoplifters,shitstorm,sheeny,shapetype,shaming,shallows,shackle,shabbily,shabbas,seppuku,senility,semite,semiautomatic,selznick,secretarial,sebacio,scuzzy,scummy,scrutinized,scrunchie,scribbled,scotches,scolded,scissor,schlub,scavenging,scarin,scarfing,scallions,scald,savour,savored,saute,sarcoidosis,sandbar,saluted,salish,saith,sailboats,sagittarius,sacre,saccharine,sacamano,rushdie,rumpled,rumba,rulebook,rubbers,roughage,rotisserie,rootie,roofy,roofie,romanticize,rittle,ristorante,rippin,rinsing,ringin,rincess,rickety,reveling,retest,retaliating,restorative,reston,restaurateur,reshoots,resetting,resentments,reprogramming,repossess,repartee,renzo,remore,remitting,remeber,relaxants,rejuvenate,rejections,regenerated,refocus,referrals,reeno,recycles,recrimination,reclining,recanting,reattach,reassigning,razgul,raved,rattlesnakes,rattles,rashly,raquetball,ransack,raisinettes,raheem,radisson,radishes,raban,quoth,qumari,quints,quilts,quilting,quien,quarreled,purty,purblind,punchbowl,publically,psychotics,psychopaths,psychoanalyze,pruning,provasik,protectin,propping,proportioned,prophylactic,proofed,prompter,procreate,proclivities,prioritizing,prinze,pricked,press'll,presets,prescribes,preocupe,prejudicial,prefex,preconceived,precipice,pralines,pragmatist,powerbar,pottie,pottersville,potsie,potholes,posses,posies,portkey,porterhouse,pornographers,poring,poppycock,poppers,pomponi,pokin,poitier,podiatry,pleeze,pleadings,playbook,platelets,plane'arium,placebos,place'll,pistachios,pirated,pinochle,pineapples,pinafore,pimples,piggly,piddling,picon,pickpockets,picchu,physiologically,physic,phobic,philandering,phenomenally,pheasants,pewter,petticoat,petronis,petitioning,perturbed,perpetuating,permutat,perishable,perimeters,perfumed,percocet,per'sus,pepperjack,penalize,pelting,pellet,peignoir,pedicures,peckers,pecans,pawning,paulsson,pattycake,patrolmen,patois,pathos,pasted,parishioner,parcheesi,parachuting,papayas,pantaloons,palpitations,palantine,paintballing,overtired,overstress,oversensitive,overnights,overexcited,overanxious,overachiever,outwitted,outvoted,outnumber,outlast,outlander,out've,orphey,orchestrating,openers,ooooooo,okies,ohhhhhhhhh,ohhhhhhhh,ogling,offbeat,obsessively,obeyed,o'hana,o'bannon,o'bannion,numpce,nummy,nuked,nuances,nourishing,nosedive,norbu,nomlies,nomine,nixed,nihilist,nightshift,newmeat,neglectful,neediness,needin,naphthalene,nanocytes,nanite,naivete,n'yeah,mystifying,myhnegon,mutating,musing,mulled,muggy,muerto,muckraker,muchachos,mountainside,motherless,mosquitos,morphed,mopped,moodoo,moncho,mollem,moisturiser,mohicans,mocks,mistresses,misspent,misinterpretation,miscarry,minuses,mindee,mimes,millisecond,milked,mightn't,mightier,mierzwiak,microchips,meyerling,mesmerizing,mershaw,meecrob,medicate,meddled,mckinnons,mcgewan,mcdunnough,mcats,mbien,matzah,matriarch,masturbated,masselin,martialed,marlboros,marksmanship,marinate,marchin,manicured,malnourished,malign,majorek,magnon,magnificently,macking,machiavellian,macdougal,macchiato,macaws,macanaw,m'self,lydells,lusts,lucite,lubricants,lopper,lopped,loneliest,lonelier,lomez,lojack,loath,liquefy,lippy,limps,likin,lightness,liesl,liebchen,licious,libris,libation,lhamo,leotards,leanin,laxatives,lavished,latka,lanyard,lanky,landmines,lameness,laddies,lacerated,labored,l'amour,kreskin,kovitch,kournikova,kootchy,konoss,knknow,knickety,knackety,kmart,klicks,kiwanis,kissable,kindergartners,kilter,kidnet,kid'll,kicky,kickbacks,kickback,kholokov,kewpie,kendo,katra,kareoke,kafelnikov,kabob,junjun,jumba,julep,jordie,jondy,jolson,jenoff,jawbone,janitorial,janiro,ipecac,invigorated,intruded,intros,intravenously,interruptus,interrogations,interject,interfacing,interestin,insuring,instilled,insensitivity,inscrutable,inroads,innards,inlaid,injector,ingratitude,infuriates,infra,infliction,indelicate,incubators,incrimination,inconveniencing,inconsolable,incestuous,incas,incarcerate,inbreeding,impudence,impressionists,impeached,impassioned,imipenem,idling,idiosyncrasies,icebergs,hypotensive,hydrochloride,hushed,humus,humph,hummm,hulking,hubcaps,hubald,howya,howbout,how'll,housebroken,hotwire,hotspots,hotheaded,horrace,hopsfield,honto,honkin,honeymoons,homewrecker,hombres,hollers,hollerin,hoedown,hoboes,hobbling,hobble,hoarse,hinky,highlighters,hexes,heru'ur,hernias,heppleman,hell're,heighten,heheheheheh,heheheh,hedging,heckling,heckled,heavyset,heatshield,heathens,heartthrob,headpiece,hayseed,haveo,hauls,hasten,harridan,harpoons,hardens,harcesis,harbouring,hangouts,halkein,haleh,halberstam,hairnet,hairdressers,hacky,haaaa,h'yah,gusta,gushy,gurgling,guilted,gruel,grudging,grrrrrr,grosses,groomsmen,griping,gravest,gratified,grated,goulash,goopy,goona,goodly,godliness,godawful,godamn,glycerin,glutes,glowy,globetrotters,glimpsed,glenville,glaucoma,girlscout,giraffes,gilbey,gigglepuss,ghora,gestating,gelato,geishas,gearshift,gayness,gasped,gaslighting,garretts,garba,gablyczyck,g'head,fumigating,fumbling,fudged,fuckwad,fuck're,fuchsia,fretting,freshest,frenchies,freezers,fredrica,fraziers,fraidy,foxholes,fourty,fossilized,forsake,forfeits,foreclosed,foreal,footsies,florists,flopped,floorshow,floorboard,flinching,flecks,flaubert,flatware,flatulence,flatlined,flashdance,flail,flagging,fiver,fitzy,fishsticks,finetti,finelli,finagle,filko,fieldstone,fibber,ferrini,feedin,feasting,favore,fathering,farrouhk,farmin,fairytale,fairservice,factoid,facedown,fabled,eyeballin,extortionist,exquisitely,expedited,exorcise,existentialist,execs,exculpatory,exacerbate,everthing,eventuality,evander,euphoric,euphemisms,estamos,erred,entitle,enquiries,enormity,enfants,endive,encyclopedias,emulating,embittered,effortless,ectopic,ecirc,easely,earphones,earmarks,dweller,durslar,durned,dunois,dunking,dunked,dumdum,dullard,dudleys,druthers,druggist,drossos,drooled,driveways,drippy,dreamless,drawstring,drang,drainpipe,dozing,dotes,dorkface,doorknobs,doohickey,donnatella,doncha,domicile,dokos,dobermans,dizzying,divola,ditsy,distaste,disservice,dislodged,dislodge,disinherit,disinformation,discounting,dinka,dimly,digesting,diello,diddling,dictatorships,dictators,diagnostician,devours,devilishly,detract,detoxing,detours,detente,destructs,desecrated,derris,deplore,deplete,demure,demolitions,demean,delish,delbruck,delaford,degaulle,deftly,deformity,deflate,definatly,defector,decrypted,decontamination,decapitate,decanter,dardis,dampener,damme,daddy'll,dabbling,dabbled,d'etre,d'argent,d'alene,d'agnasti,czechoslovakian,cymbal,cyberdyne,cutoffs,cuticle,curvaceous,curiousity,crowing,crowed,croutons,cropped,criminy,crescentis,crashers,cranwell,coverin,courtrooms,countenance,cosmically,cosign,corroboration,coroners,cornflakes,copperpot,copperhead,copacetic,coordsize,convulsing,consults,conjures,congenial,concealer,compactor,commercialism,cokey,cognizant,clunkers,clumsily,clucking,cloves,cloven,cloths,clothe,clods,clocking,clings,clavicle,classless,clashing,clanking,clanging,clamping,civvies,citywide,circulatory,circuited,chronisters,chromic,choos,chloroformed,chillun,cheesed,chatterbox,chaperoned,channukah,cerebellum,centerpieces,centerfold,ceecee,ccedil,cavorting,cavemen,cauterized,cauldwell,catting,caterine,cassiopeia,carves,cartwheel,carpeted,carob,caressing,carelessly,careening,capricious,capitalistic,capillaries,candidly,camaraderie,callously,calfskin,caddies,buttholes,busywork,busses,burps,burgomeister,bunkhouse,bungchow,bugler,buffets,buffed,brutish,brusque,bronchitis,bromden,brolly,broached,brewskis,brewin,brean,breadwinner,brana,bountiful,bouncin,bosoms,borgnine,bopping,bootlegs,booing,bombosity,bolting,boilerplate,bluey,blowback,blouses,bloodsuckers,bloodstained,bloat,bleeth,blackface,blackest,blackened,blacken,blackballed,blabs,blabbering,birdbrain,bipartisanship,biodegradable,biltmore,bilked,big'uns,bidet,besotted,bernheim,benegas,bendiga,belushi,bellboys,belittling,behinds,begone,bedsheets,beckoning,beaute,beaudine,beastly,beachfront,bathes,batak,baser,baseballs,barbella,bankrolling,bandaged,baerly,backlog,backin,babying,azkaban,awwwww,aviary,authorizes,austero,aunty,attics,atreus,astounded,astonish,artemus,arses,arintero,appraiser,apathetic,anybody'd,anxieties,anticlimactic,antar,anglos,angleman,anesthetist,androscoggin,andolini,andale,amway,amuck,amniocentesis,amnesiac,americano,amara,alvah,altruism,alternapalooza,alphabetize,alpaca,allus,allergist,alexandros,alaikum,akimbo,agoraphobia,agides,aggrhh,aftertaste,adoptions,adjuster,addictions,adamantium,activator,accomplishes,aberrant,aaaaargh,aaaaaaaaaaaaa,a'ight,zzzzzzz,zucchini,zookeeper,zirconia,zippers,zequiel,zellary,zeitgeist,zanuck,zagat,you'n,ylang,yes'm,yenta,yecchh,yecch,yawns,yankin,yahdah,yaaah,y'got,xeroxed,wwooww,wristwatch,wrangled,wouldst,worthiness,worshiping,wormy,wormtail,wormholes,woosh,wollsten,wolfing,woefully,wobbling,wintry,wingding,windstorm,windowtext,wiluna,wilting,wilted,willick,willenholly,wildflowers,wildebeest,whyyy,whoppers,whoaa,whizzing,whizz,whitest,whistled,whist,whinny,wheelies,whazzup,whatwhatwhaaat,whato,whatdya,what'dya,whacks,wewell,wetsuit,welluh,weeps,waylander,wavin,wassail,wasnt,warneford,warbucks,waltons,wallbanger,waiving,waitwait,vowing,voucher,vornoff,vorhees,voldemort,vivre,vittles,vindaloo,videogames,vichyssoise,vicarious,vesuvius,verguenza,ven't,velveteen,velour,velociraptor,vastness,vasectomies,vapors,vanderhof,valmont,validates,valiantly,vacuums,usurp,usernum,us'll,urinals,unyielding,unvarnished,unturned,untouchables,untangled,unsecured,unscramble,unreturned,unremarkable,unpretentious,unnerstand,unmade,unimpeachable,unfashionable,underwrite,underlining,underling,underestimates,underappreciated,uncouth,uncork,uncommonly,unclog,uncircumcised,unchallenged,uncas,unbuttoning,unapproved,unamerican,unafraid,umpteen,umhmm,uhwhy,ughuh,typewriters,twitches,twitched,twirly,twinkling,twinges,twiddling,turners,turnabout,tumblin,tryed,trowel,trousseau,trivialize,trifles,tribianni,trenchcoat,trembled,traumatize,transitory,transients,transfuse,transcribing,tranq,trampy,traipsed,trainin,trachea,traceable,touristy,toughie,toscanini,tortola,tortilla,torreon,toreador,tommorrow,tollbooth,tollans,toidy,togas,tofurkey,toddling,toddies,toasties,toadstool,to've,tingles,timin,timey,timetables,tightest,thuggee,thrusting,thrombus,throes,thrifty,thornharts,thinnest,thicket,thetas,thesulac,tethered,testaburger,tersenadine,terrif,terdlington,tepui,temping,tector,taxidermy,tastebuds,tartlets,tartabull,tar'd,tantamount,tangy,tangles,tamer,tabula,tabletops,tabithia,szechwan,synthedyne,svenjolly,svengali,survivalists,surmise,surfboards,surefire,suprise,supremacists,suppositories,superstore,supercilious,suntac,sunburned,summercliff,sullied,sugared,suckle,subtleties,substantiated,subsides,subliminal,subhuman,strowman,stroked,stroganoff,streetlight,straying,strainer,straighter,straightener,stoplight,stirrups,stewing,stereotyping,stepmommy,stephano,stashing,starshine,stairwells,squatsie,squandering,squalid,squabbling,squab,sprinkling,spreader,spongy,spokesmen,splintered,spittle,spitter,spiced,spews,spendin,spect,spearchucker,spatulas,southtown,soused,soshi,sorter,sorrowful,sooth,some'in,soliloquy,soiree,sodomized,sobriki,soaping,snows,snowcone,snitching,snitched,sneering,snausages,snaking,smoothed,smoochies,smarten,smallish,slushy,slurring,sluman,slithers,slippin,sleuthing,sleeveless,skinless,skillfully,sketchbook,skagnetti,sista,sinning,singularly,sinewy,silverlake,siguto,signorina,sieve,sidearms,shying,shunning,shtud,shrieks,shorting,shortbread,shopkeepers,shmancy,shizzit,shitheads,shitfaced,shipmates,shiftless,shelving,shedlow,shavings,shatters,sharifa,shampoos,shallots,shafter,sha'nauc,sextant,serviceable,sepsis,senores,sendin,semis,semanski,selflessly,seinfelds,seers,seeps,seductress,secaucus,sealant,scuttling,scusa,scrunched,scissorhands,schreber,schmancy,scamps,scalloped,savoir,savagery,sarong,sarnia,santangel,samool,sallow,salino,safecracker,sadism,sacrilegious,sabrini,sabath,s'aright,ruttheimer,rudest,rubbery,rousting,rotarian,roslin,roomed,romari,romanica,rolltop,rolfski,rockettes,roared,ringleader,riffing,ribcage,rewired,retrial,reting,resuscitated,restock,resale,reprogrammed,replicant,repentant,repellant,repays,repainting,renegotiating,rendez,remem,relived,relinquishes,relearn,relaxant,rekindling,rehydrate,refueled,refreshingly,refilling,reexamine,reeseman,redness,redeemable,redcoats,rectangles,recoup,reciprocated,reassessing,realy,realer,reachin,re'kali,rawlston,ravages,rappaports,ramoray,ramming,raindrops,rahesh,radials,racists,rabartu,quiches,quench,quarreling,quaintly,quadrants,putumayo,put'em,purifier,pureed,punitis,pullout,pukin,pudgy,puddings,puckering,pterodactyl,psychodrama,psats,protestations,protectee,prosaic,propositioned,proclivity,probed,printouts,prevision,pressers,preset,preposition,preempt,preemie,preconceptions,prancan,powerpuff,potties,potpie,poseur,porthole,poops,pooping,pomade,polyps,polymerized,politeness,polisher,polack,pocketknife,poatia,plebeian,playgroup,platonically,platitude,plastering,plasmapheresis,plaids,placemats,pizzazz,pintauro,pinstripes,pinpoints,pinkner,pincer,pimento,pileup,pilates,pigmen,pieeee,phrased,photocopies,phoebes,philistines,philanderer,pheromone,phasers,pfeffernuesse,pervs,perspire,personify,perservere,perplexed,perpetrating,perkiness,perjurer,periodontist,perfunctory,perdido,percodan,pentameter,pentacle,pensive,pensione,pennybaker,pennbrooke,penhall,pengin,penetti,penetrates,pegnoir,peeve,peephole,pectorals,peckin,peaky,peaksville,paxcow,paused,patted,parkishoff,parkers,pardoning,paraplegic,paraphrasing,paperers,papered,pangs,paneling,palooza,palmed,palmdale,palatable,pacify,pacified,owwwww,oversexed,overrides,overpaying,overdrawn,overcompensate,overcomes,overcharged,outmaneuver,outfoxed,oughtn't,ostentatious,oshun,orthopedist,or'derves,ophthalmologist,operagirl,oozes,oooooooh,onesie,omnis,omelets,oktoberfest,okeydoke,ofthe,ofher,obstetrical,obeys,obeah,o'henry,nyquil,nyanyanyanyah,nuttin,nutsy,nutball,nurhachi,numbskull,nullifies,nullification,nucking,nubbin,nourished,nonspecific,noing,noinch,nohoho,nobler,nitwits,newsprint,newspaperman,newscaster,neuropathy,netherworld,neediest,navasky,narcissists,napped,nafta,mache,mykonos,mutilating,mutherfucker,mutha,mutates,mutate,musn't,murchy,multitasking,mujeeb,mudslinging,muckraking,mousetrap,mourns,mournful,motherf,mostro,morphing,morphate,moralistic,moochy,mooching,monotonous,monopolize,monocle,molehill,moland,mofet,mockup,mobilizing,mmmmmmm,mitzvahs,mistreating,misstep,misjudge,misinformation,misdirected,miscarriages,miniskirt,mindwarped,minced,milquetoast,miguelito,mightily,midstream,midriff,mideast,microbe,methuselah,mesdames,mescal,men'll,memma,megaton,megara,megalomaniac,meeee,medulla,medivac,meaninglessness,mcnuggets,mccarthyism,maypole,may've,mauve,mateys,marshack,markles,marketable,mansiere,manservant,manse,manhandling,mallomars,malcontent,malaise,majesties,mainsail,mailmen,mahandra,magnolias,magnified,magev,maelstrom,machu,macado,m'boy,m'appelle,lustrous,lureen,lunges,lumped,lumberyard,lulled,luego,lucks,lubricated,loveseat,loused,lounger,loski,lorre,loora,looong,loonies,loincloth,lofts,lodgers,lobbing,loaner,livered,liqueur,ligourin,lifesaving,lifeguards,lifeblood,liaisons,let'em,lesbianism,lence,lemonlyman,legitimize,leadin,lazars,lazarro,lawyering,laugher,laudanum,latrines,lations,laters,lapels,lakefront,lahit,lafortunata,lachrymose,l'italien,kwaini,kruczynski,kramerica,kowtow,kovinsky,korsekov,kopek,knowakowski,knievel,knacks,kiowas,killington,kickball,keyworth,keymaster,kevie,keveral,kenyons,keggers,keepsakes,kechner,keaty,kavorka,karajan,kamerev,kaggs,jujyfruit,jostled,jonestown,jokey,joists,jocko,jimmied,jiggled,jests,jenzen,jenko,jellyman,jedediah,jealitosis,jaunty,jarmel,jankle,jagoff,jagielski,jackrabbits,jabbing,jabberjaw,izzat,irresponsibly,irrepressible,irregularity,irredeemable,inuvik,intuitions,intubated,intimates,interminable,interloper,intercostal,instyle,instigate,instantaneously,ining,ingrown,ingesting,infusing,infringe,infinitum,infact,inequities,indubitably,indisputable,indescribably,indentation,indefinable,incontrovertible,inconsequential,incompletes,incoherently,inclement,incidentals,inarticulate,inadequacies,imprudent,improprieties,imprison,imprinted,impressively,impostors,importante,imperious,impale,immodest,immobile,imbedded,imbecilic,illegals,idn't,hysteric,hypotenuse,hygienic,hyeah,hushpuppies,hunhh,humpback,humored,hummed,humiliates,humidifier,huggy,huggers,huckster,hotbed,hosing,hosers,horsehair,homebody,homebake,holing,holies,hoisting,hogwallop,hocks,hobbits,hoaxes,hmmmmm,hisses,hippest,hillbillies,hilarity,heurh,herniated,hermaphrodite,hennifer,hemlines,hemline,hemery,helplessness,helmsley,hellhound,heheheheh,heeey,hedda,heartbeats,heaped,healers,headstart,headsets,headlong,hawkland,havta,haulin,harvey'll,hanta,hansom,hangnail,handstand,handrail,handoff,hallucinogen,hallor,halitosis,haberdashery,gypped,guy'll,gumbel,guerillas,guava,guardrail,grunther,grunick,groppi,groomer,grodin,gripes,grinds,grifters,gretch,greevey,greasing,graveyards,grandkid,grainy,gouging,gooney,googly,goldmuff,goldenrod,goingo,godly,gobbledygook,gobbledegook,glues,gloriously,glengarry,glassware,glamor,gimmicks,giggly,giambetti,ghoulish,ghettos,ghali,gether,geriatrics,gerbils,geosynchronous,georgio,gente,gendarme,gelbman,gazillionth,gayest,gauging,gastro,gaslight,gasbag,garters,garish,garas,gantu,gangy,gangly,gangland,galling,gadda,furrowed,funnies,funkytown,fugimotto,fudging,fuckeen,frustrates,froufrou,froot,fromberge,frizzies,fritters,frightfully,friendliest,freeloading,freelancing,freakazoid,fraternization,framers,fornication,fornicating,forethought,footstool,foisting,focussing,focking,flurries,fluffed,flintstones,fledermaus,flayed,flawlessly,flatters,flashbang,flapped,fishies,firmer,fireproof,firebug,fingerpainting,finessed,findin,financials,finality,fillets,fiercest,fiefdom,fibbing,fervor,fentanyl,fenelon,fedorchuk,feckless,feathering,faucets,farewells,fantasyland,fanaticism,faltered,faggy,faberge,extorting,extorted,exterminating,exhumation,exhilaration,exhausts,exfoliate,excels,exasperating,exacting,everybody'd,evasions,espressos,esmail,errrr,erratically,eroding,ernswiler,epcot,enthralled,ensenada,enriching,enrage,enhancer,endear,encrusted,encino,empathic,embezzle,emanates,electricians,eking,egomaniacal,egging,effacing,ectoplasm,eavesdropped,dummkopf,dugray,duchaisne,drunkard,drudge,droop,droids,drips,dripped,dribbles,drazens,downy,downsize,downpour,dosages,doppelganger,dopes,doohicky,dontcha,doneghy,divining,divest,diuretics,diuretic,distrustful,disrupts,dismemberment,dismember,disinfect,disillusionment,disheartening,discourteous,discotheque,discolored,dirtiest,diphtheria,dinks,dimpled,didya,dickwad,diatribes,diathesis,diabetics,deviants,detonates,detests,detestable,detaining,despondent,desecration,derision,derailing,deputized,depressors,dependant,dentures,denominators,demur,demonology,delts,dellarte,delacour,deflated,defib,defaced,decorators,deaqon,davola,datin,darwinian,darklighters,dandelions,dampened,damaskinos,dalrimple,d'peshu,d'hoffryn,d'astier,cynics,cutesy,cutaway,curmudgeon,curdle,culpability,cuisinart,cuffing,crypts,cryptid,crunched,crumblers,crudely,crosscheck,croon,crissake,crevasse,creswood,creepo,creases,creased,creaky,cranks,crabgrass,coveralls,couple'a,coughs,coslaw,corporeal,cornucopia,cornering,corks,cordoned,coolly,coolin,cookbooks,contrite,contented,constrictor,confound,confit,confiscating,condoned,conditioners,concussions,comprendo,comers,combustible,combusted,collingswood,coldness,coitus,codicil,coasting,clydesdale,cluttering,clunker,clunk,clumsiness,clotted,clothesline,clinches,clincher,cleverness,clench,clein,cleanses,claymores,clammed,chugging,chronically,christsakes,choque,chompers,chiseling,chirpy,chirp,chinks,chingachgook,chickenpox,chickadee,chewin,chessboard,chargin,chanteuse,chandeliers,chamdo,chagrined,chaff,certs,certainties,cerreno,cerebrum,censured,cemetary,caterwauling,cataclysmic,casitas,cased,carvel,carting,carrear,carolling,carolers,carnie,cardiogram,carbuncle,capulets,canines,candaules,canape,caldecott,calamitous,cadillacs,cachet,cabeza,cabdriver,buzzards,butai,businesswomen,bungled,bumpkins,bummers,bulldoze,buffybot,bubut,bubbies,brrrrr,brownout,brouhaha,bronzing,bronchial,broiler,briskly,briefcases,bricked,breezing,breeher,breakable,breadstick,bravenet,braved,brandies,brainwaves,brainiest,braggart,bradlee,boys're,boys'll,boys'd,boutonniere,bossed,bosomy,borans,boosts,bookshelves,bookends,boneless,bombarding,bollo,boinked,boink,bluest,bluebells,bloodshot,blockhead,blockbusters,blithely,blather,blankly,bladders,blackbeard,bitte,bippy,biogenetics,bilge,bigglesworth,bicuspids,beususe,betaseron,besmirch,bernece,bereavement,bentonville,benchley,benching,bembe,bellyaching,bellhops,belie,beleaguered,behrle,beginnin,begining,beenie,beefs,beechwood,becau,beaverhausen,beakers,bazillion,baudouin,barrytown,barringtons,barneys,barbs,barbers,barbatus,bankrupted,bailiffs,backslide,baby'd,baaad,b'fore,awwwk,aways,awakes,automatics,authenticate,aught,aubyn,attired,attagirl,atrophied,asystole,astroturf,assertiveness,artichokes,arquillians,aright,archenemy,appraise,appeased,antin,anspaugh,anesthetics,anaphylactic,amscray,ambivalence,amalio,alriiight,alphabetized,alpena,alouette,allora,alliteration,allenwood,allegiances,algerians,alcerro,alastor,ahaha,agitators,aforethought,advertises,admonition,adirondacks,adenoids,acupuncturist,acula,actuarial,activators,actionable,achingly,accusers,acclimated,acclimate,absurdly,absorbent,absolvo,absolutes,absences,abdomenizer,aaaaaaaaah,aaaaaaaaaa,a'right".split(","),
54804 male_names:"james,john,robert,michael,william,david,richard,charles,joseph,thomas,christopher,daniel,paul,mark,donald,george,kenneth,steven,edward,brian,ronald,anthony,kevin,jason,matthew,gary,timothy,jose,larry,jeffrey,frank,scott,eric,stephen,andrew,raymond,gregory,joshua,jerry,dennis,walter,patrick,peter,harold,douglas,henry,carl,arthur,ryan,roger,joe,juan,jack,albert,jonathan,justin,terry,gerald,keith,samuel,willie,ralph,lawrence,nicholas,roy,benjamin,bruce,brandon,adam,harry,fred,wayne,billy,steve,louis,jeremy,aaron,randy,eugene,carlos,russell,bobby,victor,ernest,phillip,todd,jesse,craig,alan,shawn,clarence,sean,philip,chris,johnny,earl,jimmy,antonio,danny,bryan,tony,luis,mike,stanley,leonard,nathan,dale,manuel,rodney,curtis,norman,marvin,vincent,glenn,jeffery,travis,jeff,chad,jacob,melvin,alfred,kyle,francis,bradley,jesus,herbert,frederick,ray,joel,edwin,don,eddie,ricky,troy,randall,barry,bernard,mario,leroy,francisco,marcus,micheal,theodore,clifford,miguel,oscar,jay,jim,tom,calvin,alex,jon,ronnie,bill,lloyd,tommy,leon,derek,darrell,jerome,floyd,leo,alvin,tim,wesley,dean,greg,jorge,dustin,pedro,derrick,dan,zachary,corey,herman,maurice,vernon,roberto,clyde,glen,hector,shane,ricardo,sam,rick,lester,brent,ramon,tyler,gilbert,gene,marc,reginald,ruben,brett,nathaniel,rafael,edgar,milton,raul,ben,cecil,duane,andre,elmer,brad,gabriel,ron,roland,jared,adrian,karl,cory,claude,erik,darryl,neil,christian,javier,fernando,clinton,ted,mathew,tyrone,darren,lonnie,lance,cody,julio,kurt,allan,clayton,hugh,max,dwayne,dwight,armando,felix,jimmie,everett,ian,ken,bob,jaime,casey,alfredo,alberto,dave,ivan,johnnie,sidney,byron,julian,isaac,clifton,willard,daryl,virgil,andy,salvador,kirk,sergio,seth,kent,terrance,rene,eduardo,terrence,enrique,freddie,stuart,fredrick,arturo,alejandro,joey,nick,luther,wendell,jeremiah,evan,julius,donnie,otis,trevor,luke,homer,gerard,doug,kenny,hubert,angelo,shaun,lyle,matt,alfonso,orlando,rex,carlton,ernesto,pablo,lorenzo,omar,wilbur,blake,horace,roderick,kerry,abraham,rickey,ira,andres,cesar,johnathan,malcolm,rudolph,damon,kelvin,rudy,preston,alton,archie,marco,pete,randolph,garry,geoffrey,jonathon,felipe,bennie,gerardo,dominic,loren,delbert,colin,guillermo,earnest,benny,noel,rodolfo,myron,edmund,salvatore,cedric,lowell,gregg,sherman,devin,sylvester,roosevelt,israel,jermaine,forrest,wilbert,leland,simon,irving,owen,rufus,woodrow,sammy,kristopher,levi,marcos,gustavo,jake,lionel,marty,gilberto,clint,nicolas,laurence,ismael,orville,drew,ervin,dewey,wilfred,josh,hugo,ignacio,caleb,tomas,sheldon,erick,frankie,darrel,rogelio,terence,alonzo,elias,bert,elbert,ramiro,conrad,noah,grady,phil,cornelius,lamar,rolando,clay,percy,bradford,merle,darin,amos,terrell,moses,irvin,saul,roman,darnell,randal,tommie,timmy,darrin,brendan,toby,van,abel,dominick,emilio,elijah,cary,domingo,aubrey,emmett,marlon,emanuel,jerald,edmond,emil,dewayne,otto,teddy,reynaldo,bret,jess,trent,humberto,emmanuel,stephan,louie,vicente,lamont,garland,micah,efrain,heath,rodger,demetrius,ethan,eldon,rocky,pierre,eli,bryce,antoine,robbie,kendall,royce,sterling,grover,elton,cleveland,dylan,chuck,damian,reuben,stan,leonardo,russel,erwin,benito,hans,monte,blaine,ernie,curt,quentin,agustin,jamal,devon,adolfo,tyson,wilfredo,bart,jarrod,vance,denis,damien,joaquin,harlan,desmond,elliot,darwin,gregorio,kermit,roscoe,esteban,anton,solomon,norbert,elvin,nolan,carey,rod,quinton,hal,brain,rob,elwood,kendrick,darius,moises,marlin,fidel,thaddeus,cliff,marcel,ali,raphael,bryon,armand,alvaro,jeffry,dane,joesph,thurman,ned,sammie,rusty,michel,monty,rory,fabian,reggie,kris,isaiah,gus,avery,loyd,diego,adolph,millard,rocco,gonzalo,derick,rodrigo,gerry,rigoberto,alphonso,rickie,noe,vern,elvis,bernardo,mauricio,hiram,donovan,basil,nickolas,scot,vince,quincy,eddy,sebastian,federico,ulysses,heriberto,donnell,denny,gavin,emery,romeo,jayson,dion,dante,clement,coy,odell,jarvis,bruno,issac,dudley,sanford,colby,carmelo,nestor,hollis,stefan,donny,linwood,beau,weldon,galen,isidro,truman,delmar,johnathon,silas,frederic,irwin,merrill,charley,marcelino,carlo,trenton,kurtis,aurelio,winfred,vito,collin,denver,leonel,emory,pasquale,mohammad,mariano,danial,landon,dirk,branden,adan,numbers,clair,buford,bernie,wilmer,emerson,zachery,jacques,errol,josue,edwardo,wilford,theron,raymundo,daren,tristan,robby,lincoln,jame,genaro,octavio,cornell,hung,arron,antony,herschel,alva,giovanni,garth,cyrus,cyril,ronny,stevie,lon,kennith,carmine,augustine,erich,chadwick,wilburn,russ,myles,jonas,mitchel,mervin,zane,jamel,lazaro,alphonse,randell,johnie,jarrett,ariel,abdul,dusty,luciano,seymour,scottie,eugenio,mohammed,arnulfo,lucien,ferdinand,thad,ezra,aldo,rubin,mitch,earle,abe,marquis,lanny,kareem,jamar,boris,isiah,emile,elmo,aron,leopoldo,everette,josef,eloy,dorian,rodrick,reinaldo,lucio,jerrod,weston,hershel,lemuel,lavern,burt,jules,gil,eliseo,ahmad,nigel,efren,antwan,alden,margarito,refugio,dino,osvaldo,les,deandre,normand,kieth,ivory,trey,norberto,napoleon,jerold,fritz,rosendo,milford,sang,deon,christoper,alfonzo,lyman,josiah,brant,wilton,rico,jamaal,dewitt,brenton,yong,olin,faustino,claudio,judson,gino,edgardo,alec,jarred,donn,trinidad,tad,porfirio,odis,lenard,chauncey,tod,mel,marcelo,kory,augustus,keven,hilario,bud,sal,orval,mauro,dannie,zachariah,olen,anibal,milo,jed,thanh,amado,lenny,tory,richie,horacio,brice,mohamed,delmer,dario,mac,jonah,jerrold,robt,hank,sung,rupert,rolland,kenton,damion,chi,antone,waldo,fredric,bradly,kip,burl,tyree,jefferey,ahmed,willy,stanford,oren,moshe,mikel,enoch,brendon,quintin,jamison,florencio,darrick,tobias,minh,hassan,giuseppe,demarcus,cletus,tyrell,lyndon,keenan,werner,theo,geraldo,columbus,chet,bertram,markus,huey,hilton,dwain,donte,tyron,omer,isaias,hipolito,fermin,chung,adalberto,jamey,teodoro,mckinley,maximo,raleigh,lawerence,abram,rashad,emmitt,daron,chong,samual,otha,miquel,eusebio,dong,domenic,darron,wilber,renato,hoyt,haywood,ezekiel,chas,florentino,elroy,clemente,arden,neville,edison,deshawn,carrol,shayne,nathanial,jordon,danilo,claud,sherwood,raymon,rayford,cristobal,ambrose,titus,hyman,felton,ezequiel,erasmo,lonny,milan,lino,jarod,herb,andreas,rhett,jude,douglass,cordell,oswaldo,ellsworth,virgilio,toney,nathanael,benedict,mose,hong,isreal,garret,fausto,arlen,zack,modesto,francesco,manual,gaylord,gaston,filiberto,deangelo,michale,granville,malik,zackary,tuan,nicky,cristopher,antione,malcom,korey,jospeh,colton,waylon,hosea,shad,santo,rudolf,rolf,renaldo,marcellus,lucius,kristofer,harland,arnoldo,rueben,leandro,kraig,jerrell,jeromy,hobert,cedrick,arlie,winford,wally,luigi,keneth,jacinto,graig,franklyn,edmundo,leif,jeramy,willian,vincenzo,shon,michal,lynwood,jere,elden,darell,broderick,alonso".split(",")},module.exports=frequency_lists;
54806 },{}],
4:[function(require,module,exports){
54807 var feedback,matching,scoring,time,time_estimates,zxcvbn;matching=require("./matching"),scoring=require("./scoring"),time_estimates=require("./time_estimates"),feedback=require("./feedback"),time=function(){return(new Date).getTime()},zxcvbn=function(e,t){var i,n,c,s,a,r,m,o,u,g,_;for(null==t&&(t=[]),g=time(),u=[],c=
0,s=t.length;c
<s;c++)i=t[c],
"string"!=(m=typeof i)&&
"number"!==m&&
"boolean"!==m||u.push(i.toString().toLowerCase());matching.set_user_input_dictionary(u),a=matching.omnimatch(e),o=scoring.most_guessable_match_sequence(e,a),o.calc_time=time()-g,n=time_estimates.estimate_attack_times(o.guesses);for(r in n)_=n[r],o[r]=_;return o.feedback=feedback.get_feedback(o.score,o.sequence),o},module.exports=zxcvbn;
54809 },{
"./feedback":
2,
"./matching":
5,
"./scoring":
6,
"./time_estimates":
7}],
5:[function(require,module,exports){
54810 var DATE_MAX_YEAR,DATE_MIN_YEAR,DATE_SPLITS,GRAPHS,L33T_TABLE,RANKED_DICTIONARIES,REGEXEN,adjacency_graphs,build_ranked_dict,frequency_lists,lst,matching,name,scoring;frequency_lists=require(
"./frequency_lists"),adjacency_graphs=require(
"./adjacency_graphs"),scoring=require(
"./scoring"),build_ranked_dict=function(e){var t,n,r,i,a;for(i={},t=
1,r=
0,n=e.length;r
<n;r++)a=e[r],i[a]=t,t+=
1;return i},RANKED_DICTIONARIES={};for(name in frequency_lists)lst=frequency_lists[name],RANKED_DICTIONARIES[name]=build_ranked_dict(lst);GRAPHS={qwerty:adjacency_graphs.qwerty,dvorak:adjacency_graphs.dvorak,keypad:adjacency_graphs.keypad,mac_keypad:adjacency_graphs.mac_keypad},L33T_TABLE={a:[
"4",
"@"],b:[
"8"],c:[
"(",
"{",
"[",
"<"],e:[
"3"],g:[
"6",
"9"],i:[
"1",
"!",
"|"],l:[
"1",
"|",
"7"],o:[
"0"],s:[
"$",
"5"],t:[
"+",
"7"],x:[
"%"],z:[
"2"]},REGEXEN={recent_year:/
19\d\d|
200\d|
201\d/g},DATE_MAX_YEAR=
2050,DATE_MIN_YEAR=
1e3,DATE_SPLITS={
4:[[
1,
2],[
2,
3]],
5:[[
1,
3],[
2,
3]],
6:[[
1,
2],[
2,
4],[
4,
5]],
7:[[
1,
3],[
2,
3],[
4,
5],[
4,
6]],
8:[[
2,
4],[
4,
6]]},matching={empty:function(e){var t;return
0===function(){var n;n=[];for(t in e)n.push(t);return n}().length},extend:function(e,t){return e.push.apply(e,t)},translate:function(e,t){var n;return function(){var r,i,a,s;for(a=e.split(
""),s=[],i=
0,r=a.length;i
<r;i++)n=a[i],s.push(t[n]||n);return s}().join(
"")},mod:function(e,t){return(e%t+t)%t},sorted:function(e){return e.sort(function(e,t){return e.i-t.i||e.j-t.j})},omnimatch:function(e){var t,n,r,i,a;for(i=[],r=[this.dictionary_match,this.reverse_dictionary_match,this.l33t_match,this.spatial_match,this.repeat_match,this.sequence_match,this.regex_match,this.date_match],a=
0,t=r.length;a
<t;a++)n=r[a],this.extend(i,n.call(this,e));return this.sorted(i)},dictionary_match:function(e,t){var n,r,i,a,s,o,h,u,c,l,_,f,d,p;null==t&&(t=RANKED_DICTIONARIES),s=[],a=e.length,u=e.toLowerCase();for(n in t)for(l=t[n],r=o=
0,_=a;
0<=_?o
<_:o>_;r=
0<=_?++o:--o)for(i=h=f=r,d=a;f<=d?h
<d:h>d;i=f<=d?++h:--h)u.slice(r,+i+
1||
9e9)in l&&(p=u.slice(r,+i+
1||
9e9),c=l[p],s.push({pattern:"dictionary",i:r,j:i,token:e.slice(r,+i+
1||
9e9),matched_word:p,rank:c,dictionary_name:n,reversed:!
1,l33t:!
1}));return this.sorted(s)},reverse_dictionary_match:function(e,t){var n,r,i,a,s,o;for(null==t&&(t=RANKED_DICTIONARIES),o=e.split("").reverse().join(""),i=this.dictionary_match(o,t),a=
0,n=i.length;a
<n;a++)r=i[a],r.token=r.token.split(
"").reverse().join(
""),r.reversed=!
0,s=[e.length-
1-r.j,e.length-
1-r.i],r.i=s[
0],r.j=s[
1];return this.sorted(i)},set_user_input_dictionary:function(e){return RANKED_DICTIONARIES.user_inputs=build_ranked_dict(e.slice())},relevant_l33t_subtable:function(e,t){var n,r,i,a,s,o,h,u,c,l;for(s={},o=e.split(
""),a=
0,r=o.length;a
<r;a++)n=o[a],s[n]=!
0;l={};for(i in t)c=t[i],h=function(){var e,t,n;for(n=[],t=
0,e=c.length;t
<e;t++)u=c[t],u in s&&n.push(u);return n}(),h.length
>0&&(l[i]=h);return l},enumerate_l33t_subs:function(e){var t,n,r,i,a,s,o,h,u,c,l,_,f,d,p;a=function(){var t;t=[];for(i in e)t.push(i);return t}(),p=[[]],n=function(e){var t,n,r,a,s,o,h,u;for(n=[],s={},o=
0,a=e.length;o
<a;o++)h=e[o],t=function(){var e,t,n;for(n=[],u=t=
0,e=h.length;t
<e;u=++t)i=h[u],n.push([i,u]);return n}(),t.sort(),r=function(){var e,n,r;for(r=[],u=n=
0,e=t.length;n
<e;u=++n)i=t[u],r.push(i+
","+u);return r}().join(
"-"),r in s||(s[r]=!
0,n.push(h));return n},r=function(t){var i,a,s,o,h,u,c,l,_,f,d,g,m,A,E,y;if(t.length){for(a=t[
0],m=t.slice(
1),c=[],d=e[a],l=
0,h=d.length;l
<h;l++)for(o=d[l],_=
0,u=p.length;_
<u;_++){for(A=p[_],i=-
1,s=f=
0,g=A.length;
0<=g?f
<g:f>g;s=
0<=g?++f:--f)if(A[s][
0]===o){i=s;break}i===-
1?(y=A.concat([[o,a]]),c.push(y)):(E=A.slice(
0),E.splice(i,
1),E.push([o,a]),c.push(A),c.push(E))}return p=n(c),r(m)}},r(a),d=[];for(u=
0,o=p.length;u
<o;u++){for(_=p[u],f={},c=
0,h=_.length;c
<h;c++)l=_[c],s=l[
0],t=l[
1],f[s]=t;d.push(f)}return d},l33t_match:function(e,t,n){var r,i,a,s,o,h,u,c,l,_,f,d,p,g,m,A;for(null==t&&(t=RANKED_DICTIONARIES),null==n&&(n=L33T_TABLE),u=[],_=this.enumerate_l33t_subs(this.relevant_l33t_subtable(e,n)),c=
0,a=_.length;c
<a&&(d=_[c],!this.empty(d));c++)for(g=this.translate(e,d),f=this.dictionary_match(g,t),l=
0,s=f.length;l
<s;l++)if(o=f[l],m=e.slice(o.i,+o.j+
1||
9e9),m.toLowerCase()!==o.matched_word){h={};for(p in d)r=d[p],m.indexOf(p)!==-
1&&(h[p]=r);o.l33t=!
0,o.token=m,o.sub=h,o.sub_display=function(){var e;e=[];for(i in h)A=h[i],e.push(i+
" -> "+A);return e}().join(
", "),u.push(o)}return this.sorted(u.filter(function(e){return e.token.length
>1}))},spatial_match:function(e,t){var n,r,i;null==t&&(t=GRAPHS),i=[];for(r in t)n=t[r],this.extend(i,this.spatial_match_helper(e,n,r));return this.sorted(i)},SHIFTED_RX:/[~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:
"ZXCVBNM<>?]/,spatial_match_helper:function(e,t,n){var r,i,a,s,o,h,u,c,l,_,f,d,p,g,m;for(f=[],u=0;u<e.length-1;)for(c=u+1,l=null,m=0,g="qwerty
"!==n&&"dvorak
"!==n||!this.SHIFTED_RX.exec(e.charAt(u))?0:1;;){if(p=e.charAt(c-1),o=!1,h=-1,s=-1,i=t[p]||[],c<e.length)for(a=e.charAt(c),d=0,_=i.length;d<_;d++)if(r=i[d],s+=1,r&&r.indexOf(a)!==-1){o=!0,h=s,1===r.indexOf(a)&&(g+=1),l!==h&&(m+=1,l=h);break}if(!o){c-u>2&&f.push({pattern:"spatial
",i:u,j:c-1,token:e.slice(u,c),graph:n,turns:m,shifted_count:g}),u=c;break}c+=1}return f},repeat_match:function(e){var t,n,r,i,a,s,o,h,u,c,l,_,f,d,p;for(d=[],a=/(.+)\1+/g,c=/(.+?)\1+/g,l=/^(.+?)\1+$/,u=0;u<e.length&&(a.lastIndex=c.lastIndex=u,s=a.exec(e),_=c.exec(e),null!=s);)s[0].length>_[0].length?(f=s,i=l.exec(f[0])[1]):(f=_,i=f[1]),p=[f.index,f.index+f[0].length-1],o=p[0],h=p[1],t=scoring.most_guessable_match_sequence(i,this.omnimatch(i)),r=t.sequence,n=t.guesses,d.push({pattern:"repeat",i:o,j:h,token:f[
0],base_token:i,base_guesses:n,base_matches:r,repeat_count:f[
0].length/i.length}),u=h+
1;return d},MAX_DELTA:
5,sequence_match:function(e){var t,n,r,i,a,s,o,h,u;if(
1===e.length)return[];for(u=function(t){return function(n,r,i){var a,s,o,u;if((r-n
>1||
1===Math.abs(i))&&
0<(a=Math.abs(i))&&a<=t.MAX_DELTA)return u=e.slice(n,+r+
1||
9e9),/^[a-z]+$/.test(u)?(
s=
"lower",o=
26):/^[A-Z]+$/.test(u)?(
s=
"upper",o=
26):/^\d+$/.test(u)?(
s=
"digits",o=
10):(
s=
"unicode",o=
26),h.push({pattern:
"sequence",i:n,j:r,token:e.slice(n,+r+
1||
9e9),sequence_name:s,sequence_space:o,ascending:i
>0})}}(this),h=[],n=
0,a=null,i=s=
1,o=e.length;
1<=o?s
<o:s>o;i=
1<=o?++s:--s)t=e.charCodeAt(i)-e.charCodeAt(i-
1),null==a&&(a=t),t!==a&&(r=i-
1,u(n,r,a),n=r,a=t);return u(n,e.length-
1,a),h},regex_match:function(e,t){var n,r,i,a;null==t&&(t=REGEXEN),n=[];for(name in t)for(r=t[name],r.lastIndex=
0;i=r.exec(e);)a=i[
0],n.push({pattern:"regex",token:a,i:i.index,j:i.index+i[
0].length-
1,regex_name:name,regex_match:i});return this.sorted(n)},date_match:function(e){var t,n,r,i,a,s,o,h,u,c,l,_,f,d,p,g,m,A,E,y,v,I,R,T,D,k,x,j,b,N,S,q,L,M;for(_=[],f=/^\d{
4,
8}$/,d=/^(\d{
1,
4})([\s\/\\_.-])(\d{
1,
2})\
2(\d{
1,
4})$/,s=m=
0,v=e.length-
4;
0<=v?m<=v:m
>=v;s=
0<=v?++m:--m)for(o=A=I=s+
3,R=s+
7;(I<=R?A<=R:A
>=R)&&!(o
>=e.length);o=I<=R?++A:--A)if(M=e.slice(s,+o+
1||
9e9),f.exec(M)){for(r=[],T=DATE_SPLITS[M.length],E=
0,c=T.length;E
<c;E++)D=T[E],h=D[
0],u=D[
1],a=this.map_ints_to_dmy([parseInt(M.slice(
0,h)),parseInt(M.slice(h,u)),parseInt(M.slice(u))]),null!=a&&r.push(a);if(r.length
>0){for(t=r[
0],p=function(e){return Math.abs(e.year-scoring.REFERENCE_YEAR)},g=p(r[
0]),k=r.slice(
1),y=
0,l=k.length;y
<l;y++)n=k[y],i=p(n),i
<g&&(x=[n,i],t=x[
0],g=x[
1]);_.push({pattern:
"date",token:M,i:s,j:o,separator:
"",year:t.year,month:t.month,day:t.day})}}for(s=q=
0,j=e.length-
6;
0<=j?q<=j:q
>=j;s=
0<=j?++q:--q)for(o=L=b=s+
5,N=s+
9;(b<=N?L<=N:L
>=N)&&!(o
>=e.length);o=b<=N?++L:--L)M=e.slice(s,+o+
1||
9e9),S=d.exec(M),null!=S&&(a=this.map_ints_to_dmy([parseInt(S[
1]),parseInt(S[
3]),parseInt(S[
4])]),null!=a&&_.push({pattern:"date",token:M,i:s,j:o,separator:S[
2],year:a.year,month:a.month,day:a.day}));return this.sorted(_.filter(function(e){var t,n,r,i;for(t=!
1,i=
0,n=_.length;i
<n;i++)if(r=_[i],e!==r&&r.i<=e.i&&r.j
>=e.j){t=!
0;break}return!t}))},map_ints_to_dmy:function(e){var t,n,r,i,a,s,o,h,u,c,l,_,f,d,p,g;if(!(e[
1]
>31||e[
1]<=
0)){for(o=
0,h=
0,p=
0,s=
0,r=e.length;s
<r;s++){if(n=e[s],
99<n&&n
<DATE_MIN_YEAR||n
>DATE_MAX_YEAR)return;n
>31&&(h+=
1),n
>12&&(o+=
1),n<=
0&&(p+=
1)}if(!(h
>=
2||
3===o||p
>=
2)){for(c=[[e[
2],e.slice(
0,
2)],[e[
0],e.slice(
1,
3)]],u=
0,i=c.length;u
<i;u++)if(_=c[u],g=_[
0],d=_[
1],DATE_MIN_YEAR<=g&&g<=DATE_MAX_YEAR)return t=this.map_ints_to_dm(d),null!=t?{year:g,month:t.month,day:t.day}:void
0;for(l=
0,a=c.length;l
<a;l++)if(f=c[l],g=f[
0],d=f[
1],t=this.map_ints_to_dm(d),null!=t)return g=this.two_to_four_digit_year(g),{year:g,month:t.month,day:t.day}}}},map_ints_to_dm:function(e){var t,n,r,i,a,s;for(a=[e,e.slice().reverse()],i=
0,n=a.length;i
<n;i++)if(s=a[i],t=s[
0],r=s[
1],
1<=t&&t<=
31&&
1<=r&&r<=
12)return{day:t,month:r}},two_to_four_digit_year:function(e){return e
>99?e:e
>50?e+
1900:e+
2e3}},module.exports=matching;
54812 },{
"./adjacency_graphs":
1,
"./frequency_lists":
3,
"./scoring":
6}],
6:[function(require,module,exports){
54813 var BRUTEFORCE_CARDINALITY,MIN_GUESSES_BEFORE_GROWING_SEQUENCE,MIN_SUBMATCH_GUESSES_MULTI_CHAR,MIN_SUBMATCH_GUESSES_SINGLE_CHAR,adjacency_graphs,calc_average_degree,k,scoring,v;adjacency_graphs=require(
"./adjacency_graphs"),calc_average_degree=function(e){var t,r,n,s,a,u;t=
0;for(n in e)a=e[n],t+=function(){var e,t,r;for(r=[],t=
0,e=a.length;t
<e;t++)s=a[t],s&&r.push(s);return r}().length;return t/=function(){var t;t=[];for(r in e)u=e[r],t.push(r);return t}().length},BRUTEFORCE_CARDINALITY=
10,MIN_GUESSES_BEFORE_GROWING_SEQUENCE=
1e4,MIN_SUBMATCH_GUESSES_SINGLE_CHAR=
10,MIN_SUBMATCH_GUESSES_MULTI_CHAR=
50,scoring={nCk:function(e,t){var r,n,s,a;if(t
>e)return
0;if(
0===t)return
1;for(s=
1,r=n=
1,a=t;
1<=a?n<=a:n
>=a;r=
1<=a?++n:--n)s*=e,s/=r,e-=
1;return s},log10:function(e){return Math.log(e)/Math.log(
10)},log2:function(e){return Math.log(e)/Math.log(
2)},factorial:function(e){var t,r,n,s;if(e
<2)return
1;for(t=
1,r=n=
2,s=e;
2<=s?n<=s:n
>=s;r=
2<=s?++n:--n)t*=r;return t},most_guessable_match_sequence:function(e,t,r){var n,s,a,u,i,_,o,h,E,c,g,f,l,p,A,S,R,v,I,M,N,C,U,T;for(null==r&&(r=!
1),l=e.length,f=function(){var e,t,r;for(r=[],n=e=
0,t=l;
0<=t?e
<t:e>t;n=
0<=t?++e:--e)r.push([]);return r}(),p=
0,_=t.length;p
<_;p++)c=t[p],f[c.j].push(c);for(v=
0,o=f.length;v
<o;v++)E=f[v],E.sort(function(e,t){return e.i-t.i});for(A={m:function(){var e,t,r;for(t=[],n=r=
0,e=l;
0<=e?r
<e:r>e;n=
0<=e?++r:--r)t.push({});return t}(),pi:function(){var e,t,r;for(t=[],n=r=
0,e=l;
0<=e?r
<e:r>e;n=
0<=e?++r:--r)t.push({});return t}(),g:function(){var e,t,r;for(t=[],n=r=
0,e=l;
0<=e?r
<e:r>e;n=
0<=e?++r:--r)t.push({});return t}()},U=function(t){return function(n,s){var a,u,i,_,o,h;_=n.j,o=t.estimate_guesses(n,e),s
>1&&(o*=A.pi[n.i-
1][s-
1]),i=t.factorial(s)*o,r||(i+=Math.pow(MIN_GUESSES_BEFORE_GROWING_SEQUENCE,s-
1)),h=A.g[_];for(u in h)if(a=h[u],!(u
>s)&&a<=i)return;return A.g[_][s]=i,A.m[_][s]=n,A.pi[_][s]=o}}(this),s=function(e){return function(e){var t,r,n,s,a,u;for(c=g(
0,e),U(c,
1),a=[],t=u=
1,s=e;
1<=s?u<=s:u
>=s;t=
1<=s?++u:--u)c=g(t,e),a.push(function(){var e,s;e=A.m[t-
1],s=[];for(r in e)n=e[r],r=parseInt(r),"bruteforce"!==n.pattern&&s.push(U(c,r+
1));return s}());return a}}(this),g=function(t){return function(t,r){return{pattern:"bruteforce",token:e.slice(t,+r+
1||
9e9),i:t,j:r}}}(this),C=function(e){return function(e){var t,r,n,s,a,u,i;u=[],s=e-
1,a=void
0,n=
1/
0,i=A.g[s];for(r in i)t=i[r],t
<n&&(a=r,n=t);for(;s
>=
0;)c=A.m[s][a],u.unshift(c),s=c.i-
1,a--;return u}}(this),u=N=
0,I=l;
0<=I?N
<I:N>I;u=
0<=I?++N:--N){for(M=f[u],T=
0,h=M.length;T
<h;T++)if(c=M[T],c.i
>0)for(i in A.m[c.i-
1])i=parseInt(i),U(c,i+
1);else U(c,
1);s(u)}return R=C(l),S=R.length,a=
0===e.length?
1:A.g[l-
1][S],{password:e,guesses:a,guesses_log10:this.log10(a),sequence:R}},estimate_guesses:function(e,t){var r,n,s;return null!=e.guesses?e.guesses:(s=
1,e.token.length
<t.length&&(s=
1===e.token.length?MIN_SUBMATCH_GUESSES_SINGLE_CHAR:MIN_SUBMATCH_GUESSES_MULTI_CHAR),r={bruteforce:this.bruteforce_guesses,dictionary:this.dictionary_guesses,spatial:this.spatial_guesses,repeat:this.repeat_guesses,sequence:this.sequence_guesses,regex:this.regex_guesses,date:this.date_guesses},n=r[e.pattern].call(this,e),e.guesses=Math.max(n,s),e.guesses_log10=this.log10(e.guesses),e.guesses)},bruteforce_guesses:function(e){var t,r;return t=Math.pow(BRUTEFORCE_CARDINALITY,e.token.length),r=
1===e.token.length?MIN_SUBMATCH_GUESSES_SINGLE_CHAR+
1:MIN_SUBMATCH_GUESSES_MULTI_CHAR+
1,Math.max(t,r)},repeat_guesses:function(e){return e.base_guesses*e.repeat_count},sequence_guesses:function(e){var t,r;return r=e.token.charAt(
0),
t=
"a"===r||
"A"===r||
"z"===r||
"Z"===r||
"0"===r||
"1"===r||
"9"===r?
4:r.match(/\d/)?
10:
26,e.ascending||(t*=
2),t*e.token.length},MIN_YEAR_SPACE:
20,REFERENCE_YEAR:
2016,regex_guesses:function(e){var t,r;if(t={alpha_lower:
26,alpha_upper:
26,alpha:
52,alphanumeric:
62,digits:
10,symbols:
33},e.regex_name in t)return Math.pow(t[e.regex_name],e.token.length);switch(e.regex_name){case
"recent_year":return r=Math.abs(parseInt(e.regex_match[
0])-this.REFERENCE_YEAR),r=Math.max(r,this.MIN_YEAR_SPACE)}},date_guesses:function(e){var t,r;return r=Math.max(Math.abs(e.year-this.REFERENCE_YEAR),this.MIN_YEAR_SPACE),t=
365*r,e.separator&&(t*=
4),t},KEYBOARD_AVERAGE_DEGREE:calc_average_degree(adjacency_graphs.qwerty),KEYPAD_AVERAGE_DEGREE:calc_average_degree(adjacency_graphs.keypad),KEYBOARD_STARTING_POSITIONS:function(){var e,t;e=adjacency_graphs.qwerty,t=[];for(k in e)v=e[k],t.push(k);return t}().length,KEYPAD_STARTING_POSITIONS:function(){var e,t;e=adjacency_graphs.keypad,t=[];for(k in e)v=e[k],t.push(k);return t}().length,spatial_guesses:function(e){var t,r,n,s,a,u,i,_,o,h,E,c,g,f,l,p,A,S;for(
"qwerty"===(E=e.graph)||
"dvorak"===E?(l=this.KEYBOARD_STARTING_POSITIONS,s=this.KEYBOARD_AVERAGE_DEGREE):(l=this.KEYPAD_STARTING_POSITIONS,s=this.KEYPAD_AVERAGE_DEGREE),a=
0,t=e.token.length,A=e.turns,u=_=
2,c=t;
2<=c?_<=c:_
>=c;u=
2<=c?++_:--_)for(o=Math.min(A,u-
1),i=h=
1,g=o;
1<=g?h<=g:h
>=g;i=
1<=g?++h:--h)a+=this.nCk(u-
1,i-
1)*l*Math.pow(s,i);if(e.shifted_count)if(r=e.shifted_count,n=e.token.length-e.shifted_count,
0===r||
0===n)a*=
2;else{for(p=
0,u=S=
1,f=Math.min(r,n);
1<=f?S<=f:S
>=f;u=
1<=f?++S:--S)p+=this.nCk(r+n,u);a*=p}return a},dictionary_guesses:function(e){var t;return e.base_guesses=e.rank,e.uppercase_variations=this.uppercase_variations(e),e.l33t_variations=this.l33t_variations(e),t=e.reversed&&
2||
1,e.base_guesses*e.uppercase_variations*e.l33t_variations*t},START_UPPER:/^[A-Z][^A-Z]+$/,END_UPPER:/^[^A-Z]+[A-Z]$/,ALL_UPPER:/^[^a-z]+$/,ALL_LOWER:/^[^A-Z]+$/,uppercase_variations:function(e){var t,r,n,s,a,u,i,_,o,h,E,c;if(c=e.token,c.match(this.ALL_LOWER)||c.toLowerCase()===c)return
1;for(_=[this.START_UPPER,this.END_UPPER,this.ALL_UPPER],u=
0,a=_.length;u
<a;u++)if(h=_[u],c.match(h))return
2;for(r=function(){var e,t,r,s;for(r=c.split(
""),s=[],t=
0,e=r.length;t
<e;t++)n=r[t],n.match(/[A-Z]/)&&s.push(n);return s}().length,t=function(){var e,t,r,s;for(r=c.split(
""),s=[],t=
0,e=r.length;t
<e;t++)n=r[t],n.match(/[a-z]/)&&s.push(n);return s}().length,E=
0,s=i=
1,o=Math.min(r,t);
1<=o?i<=o:i
>=o;s=
1<=o?++i:--i)E+=this.nCk(r+t,s);return E},l33t_variations:function(e){var t,r,n,s,a,u,i,_,o,h,E,c,g;if(!e.l33t)return
1;g=
1,o=e.sub;for(E in o)if(c=o[E],s=e.token.toLowerCase().split(""),t=function(){var e,t,r;for(r=[],t=
0,e=s.length;t
<e;t++)n=s[t],n===E&&r.push(n);return r}().length,r=function(){var e,t,r;for(r=[],t=
0,e=s.length;t
<e;t++)n=s[t],n===c&&r.push(n);return r}().length,
0===t||
0===r)g*=
2;else{for(i=Math.min(r,t),_=
0,a=u=
1,h=i;
1<=h?u<=h:u
>=h;a=
1<=h?++u:--u)_+=this.nCk(r+t,a);g*=_}return g}},module.exports=scoring;
54815 },{"./adjacency_graphs":
1}],
7:[function(require,module,exports){
54816 var time_estimates;time_estimates={estimate_attack_times:function(e){var t,n,s,o;n={online_throttling_100_per_hour:e/(
100/
3600),online_no_throttling_10_per_second:e/
10,offline_slow_hashing_1e4_per_second:e/
1e4,offline_fast_hashing_1e10_per_second:e/
1e10},t={};for(s in n)o=n[s],t[s]=this.display_time(o);return{crack_times_seconds:n,crack_times_display:t,score:this.guesses_to_score(e)}},guesses_to_score:function(e){var t;return t=
5,e
<1e3+t?
0:e
<1e6+t?
1:e
<1e8+t?
2:e
<1e10+t?
3:
4},display_time:function(e){var t,n,s,o,_,r,i,a,u,c;return i=
60,r=
60*i,s=
24*r,a=
31*s,c=
12*a,n=
100*c,u=e
<1?[null,
"less than a second"]:e
<i?(t=Math.round(e),[t,t+
" second"]):e
<r?(t=Math.round(e/i),[t,t+
" minute"]):e
<s?(t=Math.round(e/r),[t,t+
" hour"]):e
<a?(t=Math.round(e/s),[t,t+
" day"]):e
<c?(t=Math.round(e/a),[t,t+
" month"]):e
<n?(t=Math.round(e/c),[t,t+
" year"]):[null,
"centuries"],o=u[
0],_=u[
1],null!=o&&
1!==o&&(_+=
"s"),_}},module.exports=time_estimates;
54823 * Detects entropy from a string.
54830 * hexadecimal [
0-
9A-F]
54831 * card [A2-
9TJQK][CDHS]
54833 * Automatically uses lowest entropy to avoid issues such as interpretting
0101
54834 * as hexadecimal which would be
16 bits when really it's only
4 bits of binary
54838 window.Entropy = new (function() {
54840 var TWO = new BigInteger(
2);
54842 // matchers returns an array of the matched events for each type of entropy.
54844 // matchers.binary("
010") returns ["
0", "
1", "
0"]
54845 // matchers.binary("a10") returns ["
1", "
0"]
54846 // matchers.hex("a10") returns ["a", "
1", "
0"]
54848 binary: function(str) {
54849 return str.match(/[
0-
1]/gi) || [];
54851 base6: function(str) {
54852 return str.match(/[
0-
5]/gi) || [];
54854 dice: function(str) {
54855 return str.match(/[
1-
6]/gi) || []; // ie dice numbers
54857 base10: function(str) {
54858 return str.match(/[
0-
9]/gi) || [];
54860 hex: function(str) {
54861 return str.match(/[
0-
9A-F]/gi) || [];
54863 card: function(str) {
54864 // Format is NumberSuit, eg
54865 // AH ace of hearts
54866 //
8C eight of clubs
54867 // TD ten of diamonds
54868 // JS jack of spades
54869 // QH queen of hearts
54870 // KC king of clubs
54871 return str.match(/([A2-
9TJQK][CDHS])/gi) || [];
54875 // Convert array of cards from ["ac", "
4d", "ks"]
54876 // to numbers between
0 and
51 [
0,
16,
51]
54877 function convertCardsToInts(cards) {
54879 var values = "a23456789tjqk";
54880 var suits = "cdhs";
54881 for (var i=
0; i
<cards.length; i++) {
54882 var card = cards[i].toLowerCase();
54883 var value = card[
0];
54884 var suit = card[
1];
54885 var asInt =
13 * suits.indexOf(suit) + values.indexOf(value);
54891 this.fromString = function(rawEntropyStr) {
54892 // Find type of entropy being used (binary, hex, dice etc)
54893 var base = getBase(rawEntropyStr);
54894 // Convert dice to base6 entropy (ie
1-
6 to
0-
5)
54895 // This is done by changing all
6s to
0s
54896 if (base.str ==
"dice") {
54899 for (var i=
0; i
<base.parts.length; i++) {
54900 var c = base.parts[i];
54901 if (
"12345".indexOf(c)
> -
1) {
54902 newParts[i] = base.parts[i];
54903 newInts[i] = base.ints[i];
54910 base.str = "base
6 (dice)";
54911 base.ints = newInts;
54912 base.parts = newParts;
54913 base.matcher = matchers.base6;
54915 // Detect empty entropy
54916 if (base.parts.length ==
0) {
54924 // Convert base.ints to BigInteger.
54925 // Due to using unusual bases, eg cards of base52, this is not as simple as
54926 // using BigInteger.parse()
54927 var entropyInt = BigInteger.ZERO;
54928 for (var i=base.ints.length-
1; i
>=
0; i--) {
54929 var thisInt = BigInteger.parse(base.ints[i]);
54930 var power = (base.ints.length -
1) - i;
54931 var additionalEntropy = BigInteger.parse(base.asInt).pow(power).multiply(thisInt);
54932 entropyInt = entropyInt.add(additionalEntropy);
54934 // Convert entropy to binary
54935 var entropyBin = entropyInt.toString(
2);
54936 // If the first integer is small, it must be padded with zeros.
54937 // Otherwise the chance of the first bit being
1 is
100%, which is
54938 // obviously incorrect.
54939 // This is not perfect for non-
2^n bases.
54940 var expectedBits = Math.floor(base.parts.length * Math.log2(base.asInt));
54941 while (entropyBin.length < expectedBits) {
54942 entropyBin = "
0" + entropyBin;
54944 // Calculate the number of bits per event
54945 var bitsPerEvent = Math.log2(base.asInt);
54946 // Cards binary must be handled differently, since they're not replaced
54947 if (base.asInt ==
52) {
54948 var cardEntropy = processCardEntropy(base.parts);
54949 entropyBin = cardEntropy.binaryStr;
54950 bitsPerEvent = cardEntropy.bitsPerEvent;
54952 // Supply a 'filtered' entropy string for display purposes
54953 var entropyClean = base.parts.join("");
54954 var entropyHtml = base.parts.join("");
54955 if (base.asInt ==
52) {
54956 entropyClean = base.parts.join(" ").toUpperCase();
54957 entropyClean = entropyClean.replace(/C/g, "\u2663");
54958 entropyClean = entropyClean.replace(/D/g, "\u2666");
54959 entropyClean = entropyClean.replace(/H/g, "\u2665");
54960 entropyClean = entropyClean.replace(/S/g, "\u2660");
54961 entropyHtml = base.parts.join(" ").toUpperCase();
54962 entropyHtml = entropyHtml.replace(/C/g, "
<span class='card-suit club'
>\u2663
</span>");
54963 entropyHtml = entropyHtml.replace(/D/g, "<span class='card-suit diamond'
>\u2666
</span>");
54964 entropyHtml = entropyHtml.replace(/H/g, "<span class='card-suit heart'
>\u2665
</span>");
54965 entropyHtml = entropyHtml.replace(/S/g, "<span class='card-suit spade'
>\u2660
</span>");
54967 // Return the result
54969 binaryStr: entropyBin,
54970 cleanStr: entropyClean,
54971 cleanHtml: entropyHtml,
54972 bitsPerEvent: bitsPerEvent,
54978 function getSortedDeck() {
54980 var suits = "CDHS
";
54981 var values = "A23456789TJQK
";
54982 for (var i=0; i<suits.length; i++) {
54983 for (var j=0; j<values.length; j++) {
54984 s.push(values[j]+suits[i]);
54990 function getBase(str) {
54991 // Need to get the lowest base for the supplied entropy.
54992 // This prevents interpreting, say, dice rolls as hexadecimal.
54993 var binaryMatches = matchers.binary(str);
54994 var hexMatches = matchers.hex(str);
54995 // Find the lowest base that can be used, whilst ignoring any irrelevant chars
54996 if (binaryMatches.length == hexMatches.length && hexMatches.length > 0) {
54997 var ints = binaryMatches.map(function(i) { return parseInt(i, 2) });
55000 parts: binaryMatches,
55001 matcher: matchers.binary,
55006 var cardMatches = matchers.card(str);
55007 if (cardMatches.length >= hexMatches.length / 2) {
55008 var ints = convertCardsToInts(cardMatches);
55011 parts: cardMatches,
55012 matcher: matchers.card,
55017 var diceMatches = matchers.dice(str);
55018 if (diceMatches.length == hexMatches.length && hexMatches.length
> 0) {
55019 var ints = diceMatches.map(function(i) { return parseInt(i) });
55022 parts: diceMatches,
55023 matcher: matchers.dice,
55028 var base6Matches = matchers.base6(str);
55029 if (base6Matches.length == hexMatches.length && hexMatches.length
> 0) {
55030 var ints = base6Matches.map(function(i) { return parseInt(i) });
55033 parts: base6Matches,
55034 matcher: matchers.base6,
55039 var base10Matches = matchers.base10(str);
55040 if (base10Matches.length == hexMatches.length && hexMatches.length
> 0) {
55041 var ints = base10Matches.map(function(i) { return parseInt(i) });
55044 parts: base10Matches,
55045 matcher: matchers.base10,
55050 var ints = hexMatches.map(function(i) { return parseInt(i,
16) });
55054 matcher: matchers.hex,
55056 str:
"hexadecimal",
55060 // Assume cards are NOT replaced.
55061 // Additional entropy decreases as more cards are used. This means
55062 // total possible entropy is measured using n!, not base^n.
55063 // eg the second last card can be only one of two, not one of fifty two
55064 // so the added entropy for that card is only one bit at most
55065 function processCardEntropy(cards) {
55066 // Track how many instances of each card have been used, and thus
55067 // how many decks are in use.
55068 var cardCounts = {};
55069 var numberOfDecks =
0;
55070 // Work out number of decks by max(duplicates)
55071 for (var i=
0; i
<cards.length; i++) {
55072 // Get the card that was drawn
55073 var cardLower = cards[i];
55074 var card = cardLower.toUpperCase();
55075 // Initialize the count for this card if needed
55076 if (!(card in cardCounts)) {
55077 cardCounts[card] =
0;
55079 cardCounts[card] +=
1;
55080 // See if this is max(duplicates)
55081 if (cardCounts[card]
> numberOfDecks) {
55082 numberOfDecks = cardCounts[card];
55085 // Work out the total number of bits for this many decks
55086 // See http://crypto.stackexchange.com/q/
41886
55087 var gainedBits =
0;
55088 // Equivalent of Math.log2(factorial(
52*numberOfDecks))
55089 // which becomes infinity for numberOfDecks
> 4
55090 for (var i=
1; i<=
52*numberOfDecks; i++) {
55091 gainedBits = gainedBits + Math.log2(i);
55093 var lostBits =
52 * Math.log2(factorial(numberOfDecks));
55094 var maxBits = gainedBits - lostBits;
55095 // Convert the drawn cards to a binary representation.
55096 // The exact technique for doing this is unclear.
55098 // http://crypto.stackexchange.com/a/
41896
55099 //
"I even doubt that this is well defined (only the average entropy
55100 // is, I believe)."
55102 // https://github.com/iancoleman/bip39/issues/
33#issuecomment-
263021856
55103 //
"The binary representation can be the first log(permutations,2) bits
55104 // of the sha-2 hash of the normalized deck string."
55106 // In this specific implementation, the first N bits of the hash of the
55107 // normalized cards string is being used. Uppercase, no spaces; eg
55108 // sha256(
"AH8DQSTC2H")
55109 var totalCards = numberOfDecks *
52;
55110 var percentUsed = cards.length / totalCards;
55111 // Calculate the average number of bits of entropy for the number of
55113 var numberOfBits = Math.floor(maxBits * percentUsed);
55114 // Create a normalized string of the selected cards
55115 var normalizedCards = cards.join(
"").toUpperCase();
55116 // Convert to binary using the SHA256 hash of the normalized cards.
55117 // If the number of bits is more than
256, multiple hashes
55118 // are used until the required number of bits is reached.
55119 var entropyBin =
"";
55120 var iterations =
0;
55121 while (entropyBin.length < numberOfBits) {
55122 var hashedCards = sjcl.hash.sha256.hash(normalizedCards +
":" + iterations);
55123 var hashHex = sjcl.codec.hex.fromBits(hashedCards);
55124 for (var i=
0; i
<hashHex.length; i++) {
55125 var decimal = parseInt(hashHex[i],
16);
55126 var binary = decimal.toString(
2);
55127 while (binary.length <
4) {
55128 binary =
"0" + binary;
55130 entropyBin = entropyBin + binary;
55132 iterations = iterations +
1;
55134 // Truncate to the appropriate number of bits.
55135 entropyBin = entropyBin.substring(
0, numberOfBits);
55136 // Get the number of bits per event
55137 bitsPerEvent = maxBits / totalCards;
55139 binaryStr: entropyBin,
55140 bitsPerEvent: bitsPerEvent,
55144 // Polyfill for Math.log2
55145 // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log2#Polyfill
55146 Math.log2 = Math.log2 || function(x) {
55147 // The polyfill isn't good enough because of the poor accuracy of
55149 // log2(
8) gave
2.9999999999999996 which when floored causes issues.
55150 // So instead use the BigInteger library to get it right.
55151 return BigInteger.log(x) / BigInteger.log(
2);
55154 // Depends on BigInteger
55155 function factorial(n) {
55159 f = BigInteger.ONE;
55160 for (var i=
1; i<=n; i++) {
55161 f = f.multiply(new BigInteger(i));
55168 <script>(function() {
55170 // mnemonics is populated as required by getLanguage
55171 var mnemonics = { "english": new Mnemonic("english") };
55172 var mnemonic = mnemonics["english"];
55174 var bip32RootKey = null;
55175 var bip32ExtendedKey = null;
55176 var network = bitcoinjs.bitcoin.networks.bitcoin;
55177 var addressRowTemplate = $("#address-row-template");
55179 var showIndex = true;
55180 var showAddress = true;
55181 var showPubKey = true;
55182 var showPrivKey = true;
55183 var showQr = false;
55184 var litecoinUseLtub = true;
55186 var entropyChangeTimeoutEvent = null;
55187 var phraseChangeTimeoutEvent = null;
55188 var rootKeyChangedTimeoutEvent = null;
55190 var generationProcesses = [];
55193 DOM.network = $(".network");
55194 DOM.bip32Client = $("#bip32-client");
55195 DOM.phraseNetwork = $("#network-phrase");
55196 DOM.useEntropy = $(".use-entropy");
55197 DOM.entropyContainer = $(".entropy-container");
55198 DOM.entropy = $(".entropy");
55199 DOM.entropyFiltered = DOM.entropyContainer.find(".filtered");
55200 DOM.entropyType = DOM.entropyContainer.find(".type");
55201 DOM.entropyCrackTime = DOM.entropyContainer.find(".crack-time");
55202 DOM.entropyEventCount = DOM.entropyContainer.find(".event-count");
55203 DOM.entropyBits = DOM.entropyContainer.find(".bits");
55204 DOM.entropyBitsPerEvent = DOM.entropyContainer.find(".bits-per-event");
55205 DOM.entropyWordCount = DOM.entropyContainer.find(".word-count");
55206 DOM.entropyBinary = DOM.entropyContainer.find(".binary");
55207 DOM.entropyMnemonicLength = DOM.entropyContainer.find(".mnemonic-length");
55208 DOM.entropyFilterWarning = DOM.entropyContainer.find(".filter-warning");
55209 DOM.phrase = $(".phrase");
55210 DOM.passphrase = $(".passphrase");
55211 DOM.generateContainer = $(".generate-container");
55212 DOM.generate = $(".generate");
55213 DOM.seed = $(".seed");
55214 DOM.rootKey = $(".root-key");
55215 DOM.litecoinLtubContainer = $(".litecoin-ltub-container");
55216 DOM.litecoinUseLtub = $(".litecoin-use-ltub");
55217 DOM.extendedPrivKey = $(".extended-priv-key");
55218 DOM.extendedPubKey = $(".extended-pub-key");
55219 DOM.bip32tab = $("#bip32-tab");
55220 DOM.bip44tab = $("#bip44-tab");
55221 DOM.bip49tab = $("#bip49-tab");
55222 DOM.bip141tab = $("#bip141-tab");
55223 DOM.bip32panel = $("#bip32");
55224 DOM.bip44panel = $("#bip44");
55225 DOM.bip49panel = $("#bip49");
55226 DOM.bip32path = $("#bip32-path");
55227 DOM.bip44path = $("#bip44-path");
55228 DOM.bip44purpose = $("#bip44 .purpose");
55229 DOM.bip44coin = $("#bip44 .coin");
55230 DOM.bip44account = $("#bip44 .account");
55231 DOM.bip44accountXprv = $("#bip44 .account-xprv");
55232 DOM.bip44accountXpub = $("#bip44 .account-xpub");
55233 DOM.bip44change = $("#bip44 .change");
55234 DOM.bip49unavailable = $("#bip49 .unavailable");
55235 DOM.bip49available = $("#bip49 .available");
55236 DOM.bip49path = $("#bip49-path");
55237 DOM.bip49purpose = $("#bip49 .purpose");
55238 DOM.bip49coin = $("#bip49 .coin");
55239 DOM.bip49account = $("#bip49 .account");
55240 DOM.bip49accountXprv = $("#bip49 .account-xprv");
55241 DOM.bip49accountXpub = $("#bip49 .account-xpub");
55242 DOM.bip49change = $("#bip49 .change");
55243 DOM.bip141unavailable = $("#bip141 .unavailable");
55244 DOM.bip141available = $("#bip141 .available");
55245 DOM.bip141path = $("#bip141-path");
55246 DOM.bip141semantics = $(".bip141-semantics");
55247 DOM.generatedStrength = $(".generate-container .strength");
55248 DOM.hardenedAddresses = $(".hardened-addresses");
55249 DOM.useBitpayAddressesContainer = $(".use-bitpay-addresses-container");
55250 DOM.useBitpayAddresses = $(".use-bitpay-addresses");
55251 DOM.addresses = $(".addresses");
55252 DOM.rowsToAdd = $(".rows-to-add");
55253 DOM.more = $(".more");
55254 DOM.moreRowsStartIndex = $(".more-rows-start-index");
55255 DOM.feedback = $(".feedback");
55256 DOM.tab = $(".derivation-type a");
55257 DOM.indexToggle = $(".index-toggle");
55258 DOM.addressToggle = $(".address-toggle");
55259 DOM.publicKeyToggle = $(".public-key-toggle");
55260 DOM.privateKeyToggle = $(".private-key-toggle");
55261 DOM.languages = $(".languages a");
55262 DOM.qrContainer = $(".qr-container");
55263 DOM.qrHider = DOM.qrContainer.find(".qr-hider");
55264 DOM.qrImage = DOM.qrContainer.find(".qr-image");
55265 DOM.qrHint = DOM.qrContainer.find(".qr-hint");
55266 DOM.showQrEls = $("[data-show-qr]");
55270 DOM.network.on("change", networkChanged);
55271 DOM.bip32Client.on("change", bip32ClientChanged);
55272 DOM.useEntropy.on("change", setEntropyVisibility);
55273 DOM.entropy.on("input", delayedEntropyChanged);
55274 DOM.entropyMnemonicLength.on("change", entropyChanged);
55275 DOM.phrase.on("input", delayedPhraseChanged);
55276 DOM.passphrase.on("input", delayedPhraseChanged);
55277 DOM.generate.on("click", generateClicked);
55278 DOM.more.on("click", showMore);
55279 DOM.rootKey.on("input", delayedRootKeyChanged);
55280 DOM.litecoinUseLtub.on("change", litecoinUseLtubChanged);
55281 DOM.bip32path.on("input", calcForDerivationPath);
55282 DOM.bip44account.on("input", calcForDerivationPath);
55283 DOM.bip44change.on("input", calcForDerivationPath);
55284 DOM.bip49account.on("input", calcForDerivationPath);
55285 DOM.bip49change.on("input", calcForDerivationPath);
55286 DOM.bip141path.on("input", calcForDerivationPath);
55287 DOM.bip141semantics.on("change", tabChanged);
55288 DOM.tab.on("shown.bs.tab", tabChanged);
55289 DOM.hardenedAddresses.on("change", calcForDerivationPath);
55290 DOM.indexToggle.on("click", toggleIndexes);
55291 DOM.addressToggle.on("click", toggleAddresses);
55292 DOM.publicKeyToggle.on("click", togglePublicKeys);
55293 DOM.privateKeyToggle.on("click", togglePrivateKeys);
55294 DOM.languages.on("click", languageChanged);
55295 DOM.useBitpayAddresses.on("change", useBitpayAddressesChange);
55296 setQrEvents(DOM.showQrEls);
55299 hideValidationError();
55300 populateNetworkSelect();
55301 populateClientSelect();
55306 function networkChanged(e) {
55307 clearDerivedKeys();
55308 clearAddressesList();
55309 DOM.litecoinLtubContainer.addClass("hidden");
55310 DOM.useBitpayAddressesContainer.addClass("hidden");
55311 var networkIndex = e.target.value;
55312 var network = networks[networkIndex];
55313 network.onSelect();
55314 if (network.segwitAvailable) {
55315 adjustNetworkForSegwit();
55316 showSegwitAvailable();
55319 showSegwitUnavailable();
55321 if (seed != null) {
55329 function bip32ClientChanged(e) {
55330 var clientIndex = DOM.bip32Client.val();
55331 if (clientIndex == "custom") {
55332 DOM.bip32path.prop("readonly", false);
55335 DOM.bip32path.prop("readonly", true);
55336 clients[clientIndex].onSelect();
55337 if (seed != null) {
55346 function setEntropyVisibility() {
55347 if (isUsingOwnEntropy()) {
55348 DOM.entropyContainer.removeClass("hidden");
55349 DOM.generateContainer.addClass("hidden");
55350 DOM.phrase.prop("readonly", true);
55351 DOM.entropy.focus();
55355 DOM.entropyContainer.addClass("hidden");
55356 DOM.generateContainer.removeClass("hidden");
55357 DOM.phrase.prop("readonly", false);
55362 function delayedPhraseChanged() {
55363 hideValidationError();
55365 bip32RootKey = null;
55366 bip32ExtendedKey = null;
55367 clearAddressesList();
55369 if (phraseChangeTimeoutEvent != null) {
55370 clearTimeout(phraseChangeTimeoutEvent);
55372 phraseChangeTimeoutEvent = setTimeout(phraseChanged,
400);
55375 function phraseChanged() {
55377 setMnemonicLanguage();
55378 // Get the mnemonic phrase
55379 var phrase = DOM.phrase.val();
55380 var errorText = findPhraseErrors(phrase);
55382 showValidationError(errorText);
55385 // Calculate and display
55386 var passphrase = DOM.passphrase.val();
55387 calcBip32RootKeyFromSeed(phrase, passphrase);
55388 calcForDerivationPath();
55391 function tabChanged() {
55393 adjustNetworkForSegwit();
55394 var phrase = DOM.phrase.val();
55395 if (phrase != "") {
55396 // Calculate and display for mnemonic
55397 var errorText = findPhraseErrors(phrase);
55399 showValidationError(errorText);
55402 // Calculate and display
55403 var passphrase = DOM.passphrase.val();
55404 calcBip32RootKeyFromSeed(phrase, passphrase);
55407 // Calculate and display for root key
55408 var rootKeyBase58 = DOM.rootKey.val();
55409 var errorText = validateRootKey(rootKeyBase58);
55411 showValidationError(errorText);
55414 // Calculate and display
55415 calcBip32RootKeyFromBase58(rootKeyBase58);
55417 calcForDerivationPath();
55420 function delayedEntropyChanged() {
55421 hideValidationError();
55423 if (entropyChangeTimeoutEvent != null) {
55424 clearTimeout(entropyChangeTimeoutEvent);
55426 entropyChangeTimeoutEvent = setTimeout(entropyChanged,
400);
55429 function entropyChanged() {
55430 // If blank entropy, clear mnemonic, addresses, errors
55431 if (DOM.entropy.val().trim().length ==
0) {
55433 clearEntropyFeedback();
55434 DOM.phrase.val("");
55435 showValidationError("Blank entropy");
55438 // Get the current phrase to detect changes
55439 var phrase = DOM.phrase.val();
55440 // Set the phrase from the entropy
55441 setMnemonicFromEntropy();
55442 // Recalc addresses if the phrase has changed
55443 var newPhrase = DOM.phrase.val();
55444 if (newPhrase != phrase) {
55445 if (newPhrase.length ==
0) {
55457 function delayedRootKeyChanged() {
55458 // Warn if there is an existing mnemonic or passphrase.
55459 if (DOM.phrase.val().length
> 0 || DOM.passphrase.val().length
> 0) {
55460 if (!confirm(
"This will clear existing mnemonic and passphrase")) {
55461 DOM.rootKey.val(bip32RootKey);
55465 hideValidationError();
55467 // Clear existing mnemonic and passphrase
55468 DOM.phrase.val(
"");
55469 DOM.passphrase.val(
"");
55471 if (rootKeyChangedTimeoutEvent != null) {
55472 clearTimeout(rootKeyChangedTimeoutEvent);
55474 rootKeyChangedTimeoutEvent = setTimeout(rootKeyChanged,
400);
55477 function rootKeyChanged() {
55479 hideValidationError();
55480 var rootKeyBase58 = DOM.rootKey.val();
55481 var errorText = validateRootKey(rootKeyBase58);
55483 showValidationError(errorText);
55486 // Calculate and display
55487 calcBip32RootKeyFromBase58(rootKeyBase58);
55488 calcForDerivationPath();
55491 function litecoinUseLtubChanged() {
55492 litecoinUseLtub = DOM.litecoinUseLtub.prop(
"checked");
55493 if (litecoinUseLtub) {
55494 network = bitcoinjs.bitcoin.networks.litecoin;
55497 network = bitcoinjs.bitcoin.networks.litecoinXprv;
55502 function calcForDerivationPath() {
55503 clearDerivedKeys();
55504 clearAddressesList();
55506 // Don't show segwit if it's selected but network doesn't support it
55507 if (segwitSelected() && !networkHasSegwit()) {
55510 // Get the derivation path
55511 var derivationPath = getDerivationPath();
55512 var errorText = findDerivationPathErrors(derivationPath);
55514 showValidationError(errorText);
55517 bip32ExtendedKey = calcBip32ExtendedKey(derivationPath);
55518 if (bip44TabSelected()) {
55519 displayBip44Info();
55521 else if (bip49TabSelected()) {
55522 displayBip49Info();
55524 displayBip32Info();
55527 function generateClicked() {
55528 if (isUsingOwnEntropy()) {
55533 setTimeout(function() {
55534 setMnemonicLanguage();
55535 var phrase = generateRandomPhrase();
55543 function languageChanged() {
55544 setTimeout(function() {
55545 setMnemonicLanguage();
55546 if (DOM.phrase.val().length
> 0) {
55547 var newPhrase = convertPhraseToNewLanguage();
55548 DOM.phrase.val(newPhrase);
55552 DOM.generate.trigger(
"click");
55557 function useBitpayAddressesChange() {
55558 setBitcoinCashNetworkValues();
55562 function toggleIndexes() {
55563 showIndex = !showIndex;
55564 $(
"td.index span").toggleClass(
"invisible");
55567 function toggleAddresses() {
55568 showAddress = !showAddress;
55569 $(
"td.address span").toggleClass(
"invisible");
55572 function togglePublicKeys() {
55573 showPubKey = !showPubKey;
55574 $(
"td.pubkey span").toggleClass(
"invisible");
55577 function togglePrivateKeys() {
55578 showPrivKey = !showPrivKey;
55579 $(
"td.privkey span").toggleClass(
"invisible");
55584 function generateRandomPhrase() {
55585 if (!hasStrongRandom()) {
55586 var errorText =
"This browser does not support strong randomness";
55587 showValidationError(errorText);
55590 var numWords = parseInt(DOM.generatedStrength.val());
55591 var strength = numWords /
3 *
32;
55592 var words = mnemonic.generate(strength);
55593 DOM.phrase.val(words);
55597 function calcBip32RootKeyFromSeed(phrase, passphrase) {
55598 seed = mnemonic.toSeed(phrase, passphrase);
55599 bip32RootKey = bitcoinjs.bitcoin.HDNode.fromSeedHex(seed, network);
55602 function calcBip32RootKeyFromBase58(rootKeyBase58) {
55603 bip32RootKey = bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58, network);
55606 function calcBip32ExtendedKey(path) {
55607 // Check there's a root key to derive from
55608 if (!bip32RootKey) {
55609 return bip32RootKey;
55611 var extendedKey = bip32RootKey;
55612 // Derive the key from the path
55613 var pathBits = path.split(
"/");
55614 for (var i=
0; i
<pathBits.length; i++) {
55615 var bit = pathBits[i];
55616 var index = parseInt(bit);
55617 if (isNaN(index)) {
55620 var hardened = bit[bit.length-
1] ==
"'";
55621 var isPriv = !(extendedKey.isNeutered());
55622 var invalidDerivationPath = hardened && !isPriv;
55623 if (invalidDerivationPath) {
55624 extendedKey = null;
55626 else if (hardened) {
55627 extendedKey = extendedKey.deriveHardened(index);
55630 extendedKey = extendedKey.derive(index);
55636 function showValidationError(errorText) {
55642 function hideValidationError() {
55648 function findPhraseErrors(phrase) {
55649 // Preprocess the words
55650 phrase = mnemonic.normalizeString(phrase);
55651 var words = phraseToWordArray(phrase);
55652 // Detect blank phrase
55653 if (words.length ==
0) {
55654 return
"Blank mnemonic";
55657 for (var i=
0; i
<words.length; i++) {
55658 var word = words[i];
55659 var language = getLanguage();
55660 if (WORDLISTS[language].indexOf(word) == -
1) {
55661 console.log(
"Finding closest match to " + word);
55662 var nearestWord = findNearestWord(word);
55663 return word +
" not in wordlist, did you mean " + nearestWord +
"?";
55666 // Check the words are valid
55667 var properPhrase = wordArrayToPhrase(words);
55668 var isValid = mnemonic.check(properPhrase);
55670 return
"Invalid mnemonic";
55675 function validateRootKey(rootKeyBase58) {
55677 bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58, network);
55680 return
"Invalid root key";
55685 function getDerivationPath() {
55686 if (bip44TabSelected()) {
55687 var purpose = parseIntNoNaN(DOM.bip44purpose.val(),
44);
55688 var coin = parseIntNoNaN(DOM.bip44coin.val(),
0);
55689 var account = parseIntNoNaN(DOM.bip44account.val(),
0);
55690 var change = parseIntNoNaN(DOM.bip44change.val(),
0);
55692 path += purpose +
"'/";
55693 path += coin +
"'/";
55694 path += account +
"'/";
55696 DOM.bip44path.val(path);
55697 var derivationPath = DOM.bip44path.val();
55698 console.log(
"Using derivation path from BIP44 tab: " + derivationPath);
55699 return derivationPath;
55701 else if (bip49TabSelected()) {
55702 var purpose = parseIntNoNaN(DOM.bip49purpose.val(),
49);
55703 var coin = parseIntNoNaN(DOM.bip49coin.val(),
0);
55704 var account = parseIntNoNaN(DOM.bip49account.val(),
0);
55705 var change = parseIntNoNaN(DOM.bip49change.val(),
0);
55707 path += purpose +
"'/";
55708 path += coin +
"'/";
55709 path += account +
"'/";
55711 DOM.bip49path.val(path);
55712 var derivationPath = DOM.bip49path.val();
55713 console.log(
"Using derivation path from BIP49 tab: " + derivationPath);
55714 return derivationPath;
55716 else if (bip32TabSelected()) {
55717 var derivationPath = DOM.bip32path.val();
55718 console.log(
"Using derivation path from BIP32 tab: " + derivationPath);
55719 return derivationPath;
55721 else if (bip141TabSelected()) {
55722 var derivationPath = DOM.bip141path.val();
55723 console.log(
"Using derivation path from BIP141 tab: " + derivationPath);
55724 return derivationPath;
55727 console.log(
"Unknown derivation path");
55731 function findDerivationPathErrors(path) {
55732 // TODO is not perfect but is better than nothing
55734 // https://github.com/bitcoin/bips/blob/master/bip-
0032.mediawiki#test-vectors
55736 // https://github.com/bitcoin/bips/blob/master/bip-
0032.mediawiki#extended-keys
55737 var maxDepth =
255; // TODO verify this!!
55738 var maxIndexValue = Math.pow(
2,
31); // TODO verify this!!
55739 if (path[
0] !=
"m") {
55740 return
"First character must be 'm'";
55742 if (path.length
> 1) {
55743 if (path[
1] !=
"/") {
55744 return
"Separator must be '/'";
55746 var indexes = path.split(
"/");
55747 if (indexes.length
> maxDepth) {
55748 return "Derivation depth is " + indexes.length + ", must be less than " + maxDepth;
55750 for (var depth =
1; depth
<indexes.length; depth++) {
55751 var index = indexes[depth];
55752 var invalidChars = index.replace(/^[
0-
9]+'?$/g,
"")
55753 if (invalidChars.length
> 0) {
55754 return
"Invalid characters " + invalidChars +
" found at depth " + depth;
55756 var indexValue = parseInt(index.replace(
"'",
""));
55757 if (isNaN(depth)) {
55758 return
"Invalid number at depth " + depth;
55760 if (indexValue
> maxIndexValue) {
55761 return "Value of " + indexValue + " at depth " + depth + " must be less than " + maxIndexValue;
55765 // Check root key exists or else derivation path is useless!
55766 if (!bip32RootKey) {
55767 return "No root key";
55769 // Check no hardened derivation path when using xpub keys
55770 var hardenedPath = path.indexOf("'")
> -
1;
55771 var hardenedAddresses = bip32TabSelected() && DOM.hardenedAddresses.prop("checked");
55772 var hardened = hardenedPath || hardenedAddresses;
55773 var isXpubkey = bip32RootKey.isNeutered();
55774 if (hardened && isXpubkey) {
55775 return "Hardened derivation path is invalid with xpub key";
55780 function displayBip44Info() {
55781 // Get the derivation path for the account
55782 var purpose = parseIntNoNaN(DOM.bip44purpose.val(),
44);
55783 var coin = parseIntNoNaN(DOM.bip44coin.val(),
0);
55784 var account = parseIntNoNaN(DOM.bip44account.val(),
0);
55786 path += purpose + "'/";
55787 path += coin + "'/";
55788 path += account + "'/";
55789 // Calculate the account extended keys
55790 var accountExtendedKey = calcBip32ExtendedKey(path);
55791 var accountXprv = accountExtendedKey.toBase58();
55792 var accountXpub = accountExtendedKey.neutered().toBase58();
55793 // Display the extended keys
55794 DOM.bip44accountXprv.val(accountXprv);
55795 DOM.bip44accountXpub.val(accountXpub);
55798 function displayBip49Info() {
55799 // Get the derivation path for the account
55800 var purpose = parseIntNoNaN(DOM.bip49purpose.val(),
49);
55801 var coin = parseIntNoNaN(DOM.bip49coin.val(),
0);
55802 var account = parseIntNoNaN(DOM.bip49account.val(),
0);
55804 path += purpose + "'/";
55805 path += coin + "'/";
55806 path += account + "'/";
55807 // Calculate the account extended keys
55808 var accountExtendedKey = calcBip32ExtendedKey(path);
55809 var accountXprv = accountExtendedKey.toBase58();
55810 var accountXpub = accountExtendedKey.neutered().toBase58();
55811 // Display the extended keys
55812 DOM.bip49accountXprv.val(accountXprv);
55813 DOM.bip49accountXpub.val(accountXpub);
55816 function displayBip32Info() {
55818 DOM.seed.val(seed);
55819 var rootKey = bip32RootKey.toBase58();
55820 DOM.rootKey.val(rootKey);
55821 var xprvkeyB58 = "NA";
55822 if (!bip32ExtendedKey.isNeutered()) {
55823 xprvkeyB58 = bip32ExtendedKey.toBase58();
55825 var extendedPrivKey = xprvkeyB58;
55826 DOM.extendedPrivKey.val(extendedPrivKey);
55827 var extendedPubKey = bip32ExtendedKey.neutered().toBase58();
55828 DOM.extendedPubKey.val(extendedPubKey);
55829 // Display the addresses and privkeys
55830 clearAddressesList();
55831 displayAddresses(
0,
20);
55834 function displayAddresses(start, total) {
55835 generationProcesses.push(new (function() {
55839 this.stop = function() {
55840 for (var i=
0; i
<rows.length; i++) {
55841 rows[i].shouldGenerate = false;
55846 for (var i=
0; i
<total; i++) {
55847 var index = i + start;
55848 var isLast = i == total -
1;
55849 rows.push(new TableRow(index, isLast));
55855 function segwitSelected() {
55856 return bip49TabSelected() || bip141TabSelected();
55859 function p2wpkhSelected() {
55860 return bip141TabSelected() && DOM.bip141semantics.val() ==
"p2wpkh";
55863 function p2wpkhInP2shSelected() {
55864 return bip49TabSelected() ||
55865 (bip141TabSelected() && DOM.bip141semantics.val() ==
"p2wpkh-p2sh");
55868 function TableRow(index, isLast) {
55871 this.shouldGenerate = true;
55872 var useHardenedAddresses = DOM.hardenedAddresses.prop(
"checked");
55873 var isSegwit = segwitSelected();
55874 var segwitAvailable = networkHasSegwit();
55875 var isP2wpkh = p2wpkhSelected();
55876 var isP2wpkhInP2sh = p2wpkhInP2shSelected();
55882 function calculateValues() {
55883 setTimeout(function() {
55884 if (!self.shouldGenerate) {
55888 if (useHardenedAddresses) {
55889 key = bip32ExtendedKey.deriveHardened(index);
55892 key = bip32ExtendedKey.derive(index);
55894 var address = key.getAddress().toString();
55895 var privkey =
"NA";
55896 if (!key.isNeutered()) {
55897 privkey = key.keyPair.toWIF(network);
55899 var pubkey = key.getPublicKeyBuffer().toString('hex');
55900 var indexText = getDerivationPath() +
"/" + index;
55901 if (useHardenedAddresses) {
55902 indexText = indexText +
"'";
55904 // Ethereum values are different
55905 if (networks[DOM.network.val()].name ==
"ETH - Ethereum") {
55906 var privKeyBuffer = key.keyPair.d.toBuffer();
55907 privkey = privKeyBuffer.toString('hex');
55908 var addressBuffer = ethUtil.privateToAddress(privKeyBuffer);
55909 var hexAddress = addressBuffer.toString('hex');
55910 var checksumAddress = ethUtil.toChecksumAddress(hexAddress);
55911 address = ethUtil.addHexPrefix(checksumAddress);
55912 privkey = ethUtil.addHexPrefix(privkey);
55913 pubkey = ethUtil.addHexPrefix(pubkey);
55915 // Ripple values are different
55916 if (networks[DOM.network.val()].name ==
"XRP - Ripple") {
55917 privkey = convertRipplePriv(privkey);
55918 address = convertRippleAdrr(address);
55920 // Segwit addresses are different
55922 if (!segwitAvailable) {
55926 var keyhash = bitcoinjs.bitcoin.crypto.hash160(key.getPublicKeyBuffer());
55927 var scriptpubkey = bitcoinjs.bitcoin.script.witnessPubKeyHash.output.encode(keyhash);
55928 address = bitcoinjs.bitcoin.address.fromOutputScript(scriptpubkey, network)
55930 else if (isP2wpkhInP2sh) {
55931 var keyhash = bitcoinjs.bitcoin.crypto.hash160(key.getPublicKeyBuffer());
55932 var scriptsig = bitcoinjs.bitcoin.script.witnessPubKeyHash.output.encode(keyhash);
55933 var addressbytes = bitcoinjs.bitcoin.crypto.hash160(scriptsig);
55934 var scriptpubkey = bitcoinjs.bitcoin.script.scriptHash.output.encode(addressbytes);
55935 address = bitcoinjs.bitcoin.address.fromOutputScript(scriptpubkey, network)
55938 addAddressToList(indexText, address, pubkey, privkey);
55949 function showMore() {
55950 var rowsToAdd = parseInt(DOM.rowsToAdd.val());
55951 if (isNaN(rowsToAdd)) {
55953 DOM.rowsToAdd.val(
"20");
55955 var start = parseInt(DOM.moreRowsStartIndex.val())
55956 if (isNaN(start)) {
55957 start = lastIndexInTable() +
1;
55960 var newStart = start + rowsToAdd;
55961 DOM.moreRowsStartIndex.val(newStart);
55963 if (rowsToAdd
> 200) {
55964 var msg =
"Generating " + rowsToAdd +
" rows could take a while. ";
55965 msg +=
"Do you want to continue?";
55966 if (!confirm(msg)) {
55970 displayAddresses(start, rowsToAdd);
55973 function clearDisplay() {
55974 clearAddressesList();
55976 hideValidationError();
55979 function clearAddressesList() {
55980 DOM.addresses.empty();
55984 function stopGenerating() {
55985 while (generationProcesses.length
> 0) {
55986 var generation = generationProcesses.shift();
55991 function clearKeys() {
55993 clearDerivedKeys();
55996 function clearRootKey() {
55997 DOM.rootKey.val(
"");
56000 function clearDerivedKeys() {
56001 DOM.extendedPrivKey.val(
"");
56002 DOM.extendedPubKey.val(
"");
56003 DOM.bip44accountXprv.val(
"");
56004 DOM.bip44accountXpub.val(
"");
56007 function addAddressToList(indexText, address, pubkey, privkey) {
56008 var row = $(addressRowTemplate.html());
56010 var indexCell = row.find(
".index span");
56011 var addressCell = row.find(
".address span");
56012 var pubkeyCell = row.find(
".pubkey span");
56013 var privkeyCell = row.find(
".privkey span");
56015 indexCell.text(indexText);
56016 addressCell.text(address);
56017 pubkeyCell.text(pubkey);
56018 privkeyCell.text(privkey);
56021 indexCell.addClass(
"invisible");
56023 if (!showAddress) {
56024 addressCell.addClass(
"invisible");
56027 pubkeyCell.addClass(
"invisible");
56029 if (!showPrivKey) {
56030 privkeyCell.addClass(
"invisible");
56032 DOM.addresses.append(row);
56033 var rowShowQrEls = row.find(
"[data-show-qr]");
56034 setQrEvents(rowShowQrEls);
56037 function hasStrongRandom() {
56038 return 'crypto' in window && window['crypto'] !== null;
56041 function disableForms() {
56042 $(
"form").on(
"submit", function(e) {
56043 e.preventDefault();
56047 function parseIntNoNaN(val, defaultVal) {
56048 var v = parseInt(val);
56055 function showPending() {
56057 .text(
"Calculating...")
56061 function findNearestWord(word) {
56062 var language = getLanguage();
56063 var words = WORDLISTS[language];
56064 var minDistance =
99;
56065 var closestWord = words[
0];
56066 for (var i=
0; i
<words.length; i++) {
56067 var comparedTo = words[i];
56068 if (comparedTo.indexOf(word) ==
0) {
56071 var distance = Levenshtein.get(word, comparedTo);
56072 if (distance < minDistance) {
56073 closestWord = comparedTo;
56074 minDistance = distance;
56077 return closestWord;
56080 function hidePending() {
56086 function populateNetworkSelect() {
56087 for (var i=
0; i
<networks.length; i++) {
56088 var network = networks[i];
56089 var option = $(
"<option>");
56090 option.attr(
"value", i);
56091 option.text(network.name);
56092 if (network.name ==
"BTC - Bitcoin") {
56093 option.prop(
"selected", true);
56095 DOM.phraseNetwork.append(option);
56099 function populateClientSelect() {
56100 for (var i=
0; i
<clients.length; i++) {
56101 var client = clients[i];
56102 var option = $(
"<option>");
56103 option.attr(
"value", i);
56104 option.text(client.name);
56105 DOM.bip32Client.append(option);
56109 function getLanguage() {
56110 var defaultLanguage =
"english";
56111 // Try to get from existing phrase
56112 var language = getLanguageFromPhrase();
56113 // Try to get from url if not from phrase
56114 if (language.length ==
0) {
56115 language = getLanguageFromUrl();
56117 // Default to English if no other option
56118 if (language.length ==
0) {
56119 language = defaultLanguage;
56124 function getLanguageFromPhrase(phrase) {
56125 // Check if how many words from existing phrase match a language.
56128 phrase = DOM.phrase.val();
56130 if (phrase.length
> 0) {
56131 var words = phraseToWordArray(phrase);
56132 var languageMatches = {};
56133 for (l in WORDLISTS) {
56134 // Track how many words match in this language
56135 languageMatches[l] =
0;
56136 for (var i=
0; i
<words.length; i++) {
56137 var wordInLanguage = WORDLISTS[l].indexOf(words[i])
> -
1;
56138 if (wordInLanguage) {
56139 languageMatches[l]++;
56142 // Find languages with most word matches.
56143 // This is made difficult due to commonalities between Chinese
56144 // simplified vs traditional.
56145 var mostMatches =
0;
56146 var mostMatchedLanguages = [];
56147 for (var l in languageMatches) {
56148 var numMatches = languageMatches[l];
56149 if (numMatches
> mostMatches) {
56150 mostMatches = numMatches;
56151 mostMatchedLanguages = [l];
56153 else if (numMatches == mostMatches) {
56154 mostMatchedLanguages.push(l);
56158 if (mostMatchedLanguages.length
> 0) {
56159 // Use first language and warn if multiple detected
56160 language = mostMatchedLanguages[
0];
56161 if (mostMatchedLanguages.length
> 1) {
56162 console.warn(
"Multiple possible languages");
56163 console.warn(mostMatchedLanguages);
56170 function getLanguageFromUrl() {
56171 for (var language in WORDLISTS) {
56172 if (window.location.hash.indexOf(language)
> -
1) {
56179 function setMnemonicLanguage() {
56180 var language = getLanguage();
56181 // Load the bip39 mnemonic generator for this language if required
56182 if (!(language in mnemonics)) {
56183 mnemonics[language] = new Mnemonic(language);
56185 mnemonic = mnemonics[language];
56188 function convertPhraseToNewLanguage() {
56189 var oldLanguage = getLanguageFromPhrase();
56190 var newLanguage = getLanguageFromUrl();
56191 var oldPhrase = DOM.phrase.val();
56192 var oldWords = phraseToWordArray(oldPhrase);
56194 for (var i=
0; i
<oldWords.length; i++) {
56195 var oldWord = oldWords[i];
56196 var index = WORDLISTS[oldLanguage].indexOf(oldWord);
56197 var newWord = WORDLISTS[newLanguage][index];
56198 newWords.push(newWord);
56200 newPhrase = wordArrayToPhrase(newWords);
56204 // TODO look at jsbip39 - mnemonic.splitWords
56205 function phraseToWordArray(phrase) {
56206 var words = phrase.split(/\s/g);
56208 for (var i=
0; i
<words.length; i++) {
56209 var word = words[i];
56210 if (word.length
> 0) {
56211 noBlanks.push(word);
56217 // TODO look at jsbip39 - mnemonic.joinWords
56218 function wordArrayToPhrase(words) {
56219 var phrase = words.join(
" ");
56220 var language = getLanguageFromPhrase(phrase);
56221 if (language ==
"japanese") {
56222 phrase = words.join(
"\u3000");
56227 function isUsingOwnEntropy() {
56228 return DOM.useEntropy.prop(
"checked");
56231 function setMnemonicFromEntropy() {
56232 clearEntropyFeedback();
56233 // Get entropy value
56234 var entropyStr = DOM.entropy.val();
56235 // Work out minimum base for entropy
56236 var entropy = Entropy.fromString(entropyStr);
56237 if (entropy.binaryStr.length ==
0) {
56240 // Show entropy details
56241 showEntropyFeedback(entropy);
56242 // Use entropy hash if not using raw entropy
56243 var bits = entropy.binaryStr;
56244 var mnemonicLength = DOM.entropyMnemonicLength.val();
56245 if (mnemonicLength !=
"raw") {
56246 // Get bits by hashing entropy with SHA256
56247 var hash = sjcl.hash.sha256.hash(entropy.cleanStr);
56248 var hex = sjcl.codec.hex.fromBits(hash);
56249 bits = BigInteger.parse(hex,
16).toString(
2);
56250 while (bits.length %
256 !=
0) {
56253 // Truncate hash to suit number of words
56254 mnemonicLength = parseInt(mnemonicLength);
56255 var numberOfBits =
32 * mnemonicLength /
3;
56256 bits = bits.substring(
0, numberOfBits);
56258 // Discard trailing entropy
56259 var bitsToUse = Math.floor(bits.length /
32) *
32;
56260 var start = bits.length - bitsToUse;
56261 var binaryStr = bits.substring(start);
56262 // Convert entropy string to numeric array
56263 var entropyArr = [];
56264 for (var i=
0; i
<binaryStr.length /
8; i++) {
56265 var byteAsBits = binaryStr.substring(i*
8, i*
8+
8);
56266 var entropyByte = parseInt(byteAsBits,
2);
56267 entropyArr.push(entropyByte)
56269 // Convert entropy array to mnemonic
56270 var phrase = mnemonic.toMnemonic(entropyArr);
56271 // Set the mnemonic in the UI
56272 DOM.phrase.val(phrase);
56275 function clearEntropyFeedback() {
56276 DOM.entropyCrackTime.text(
"...");
56277 DOM.entropyType.text(
"");
56278 DOM.entropyWordCount.text(
"0");
56279 DOM.entropyEventCount.text(
"0");
56280 DOM.entropyBitsPerEvent.text(
"0");
56281 DOM.entropyBits.text(
"0");
56282 DOM.entropyFiltered.html(
" ");
56283 DOM.entropyBinary.html(
" ");
56286 function showEntropyFeedback(entropy) {
56287 var numberOfBits = entropy.binaryStr.length;
56288 var timeToCrack =
"unknown";
56290 var z = zxcvbn(entropy.base.parts.join(
""));
56291 timeToCrack = z.crack_times_display.offline_fast_hashing_1e10_per_second;
56292 if (z.feedback.warning !=
"") {
56293 timeToCrack = timeToCrack +
" - " + z.feedback.warning;
56297 console.log(
"Error detecting entropy strength with zxcvbn:");
56300 var entropyTypeStr = getEntropyTypeStr(entropy);
56301 var wordCount = Math.floor(numberOfBits /
32) *
3;
56302 var bitsPerEvent = entropy.bitsPerEvent.toFixed(
2);
56303 DOM.entropyFiltered.html(entropy.cleanHtml);
56304 DOM.entropyType.text(entropyTypeStr);
56305 DOM.entropyCrackTime.text(timeToCrack);
56306 DOM.entropyEventCount.text(entropy.base.ints.length);
56307 DOM.entropyBits.text(numberOfBits);
56308 DOM.entropyWordCount.text(wordCount);
56309 DOM.entropyBinary.text(entropy.binaryStr);
56310 DOM.entropyBitsPerEvent.text(bitsPerEvent);
56311 // detect and warn of filtering
56312 var rawNoSpaces = DOM.entropy.val().replace(/\s/g,
"");
56313 var cleanNoSpaces = entropy.cleanStr.replace(/\s/g,
"");
56314 var isFiltered = rawNoSpaces.length != cleanNoSpaces.length;
56316 DOM.entropyFilterWarning.removeClass('hidden');
56319 DOM.entropyFilterWarning.addClass('hidden');
56323 function getEntropyTypeStr(entropy) {
56324 var typeStr = entropy.base.str;
56325 // Add some detail if these are cards
56326 if (entropy.base.asInt ==
52) {
56327 var cardDetail = []; // array of message strings
56328 // Detect duplicates
56330 var dupeTracker = {};
56331 for (var i=
0; i
<entropy.base.parts.length; i++) {
56332 var card = entropy.base.parts[i];
56333 var cardUpper = card.toUpperCase();
56334 if (cardUpper in dupeTracker) {
56337 dupeTracker[cardUpper] = true;
56339 if (dupes.length
> 0) {
56340 var dupeWord =
"duplicates";
56341 if (dupes.length ==
1) {
56342 dupeWord =
"duplicate";
56344 var msg = dupes.length +
" " + dupeWord +
": " + dupes.slice(
0,
3).join(
" ");
56345 if (dupes.length
> 3) {
56348 cardDetail.push(msg);
56350 // Detect full deck
56351 var uniqueCards = [];
56352 for (var uniqueCard in dupeTracker) {
56353 uniqueCards.push(uniqueCard);
56355 if (uniqueCards.length ==
52) {
56356 cardDetail.unshift(
"full deck");
56358 // Detect missing cards
56359 var values =
"A23456789TJQK";
56360 var suits =
"CDHS";
56361 var missingCards = [];
56362 for (var i=
0; i
<suits.length; i++) {
56363 for (var j=
0; j
<values.length; j++) {
56364 var card = values[j] + suits[i];
56365 if (!(card in dupeTracker)) {
56366 missingCards.push(card);
56370 // Display missing cards if six or less, ie clearly going for full deck
56371 if (missingCards.length
> 0 && missingCards.length <=
6) {
56372 var msg = missingCards.length +
" missing: " + missingCards.slice(
0,
3).join(
" ");
56373 if (missingCards.length
> 3) {
56376 cardDetail.push(msg);
56378 // Add card details to typeStr
56379 if (cardDetail.length
> 0) {
56380 typeStr +=
" (" + cardDetail.join(
", ") +
")";
56386 function setQrEvents(els) {
56387 els.on(
"mouseenter", createQr);
56388 els.on(
"mouseleave", destroyQr);
56389 els.on(
"click", toggleQr);
56392 function createQr(e) {
56393 var content = e.target.textContent || e.target.value;
56396 DOM.qrImage.qrcode({width: size, height: size, text: content});
56398 DOM.qrHider.addClass(
"hidden");
56401 DOM.qrHider.removeClass(
"hidden");
56403 DOM.qrContainer.removeClass(
"hidden");
56407 function destroyQr() {
56408 DOM.qrImage.text(
"");
56409 DOM.qrContainer.addClass(
"hidden");
56412 function toggleQr() {
56414 DOM.qrHider.toggleClass(
"hidden");
56415 DOM.qrHint.toggleClass(
"hidden");
56418 function bip44TabSelected() {
56419 return DOM.bip44tab.hasClass(
"active");
56422 function bip32TabSelected() {
56423 return DOM.bip32tab.hasClass(
"active");
56426 function networkHasSegwit() {
56427 return networks[DOM.network.val()].segwitAvailable;
56430 function bip49TabSelected() {
56431 return DOM.bip49tab.hasClass(
"active");
56434 function bip141TabSelected() {
56435 return DOM.bip141tab.hasClass(
"active");
56438 function setHdCoin(coinValue) {
56439 DOM.bip44coin.val(coinValue);
56440 DOM.bip49coin.val(coinValue);
56443 function showSegwitAvailable() {
56444 DOM.bip49unavailable.addClass(
"hidden");
56445 DOM.bip49available.removeClass(
"hidden");
56446 DOM.bip141unavailable.addClass(
"hidden");
56447 DOM.bip141available.removeClass(
"hidden");
56450 function showSegwitUnavailable() {
56451 DOM.bip49available.addClass(
"hidden");
56452 DOM.bip49unavailable.removeClass(
"hidden");
56453 DOM.bip141available.addClass(
"hidden");
56454 DOM.bip141unavailable.removeClass(
"hidden");
56457 function useBitpayAddresses() {
56458 return !(DOM.useBitpayAddresses.prop(
"checked"));
56461 function setBitcoinCashNetworkValues() {
56462 if (useBitpayAddresses()) {
56463 network = bitcoinjs.bitcoin.networks.bitcoin;
56466 network = bitcoinjs.bitcoin.networks.bitcoinCashBitbpay;
56470 function adjustNetworkForSegwit() {
56471 // If segwit is selected the xpub/xprv prefixes need to be adjusted
56472 // to avoid accidentally importing BIP49 xpub to BIP44 watch only
56474 // See https://github.com/iancoleman/bip39/issues/
125
56475 var segwitNetworks = null;
56476 // if a segwit network is alread selected, need to use base network to
56477 // look up new parameters
56478 if (
"baseNetwork" in network) {
56479 network = bitcoinjs.bitcoin.networks[network.baseNetwork];
56481 // choose the right segwit params
56482 if (p2wpkhSelected() &&
"p2wpkh" in network) {
56483 network = network.p2wpkh;
56485 else if (p2wpkhInP2shSelected() &&
"p2wpkhInP2sh" in network) {
56486 network = network.p2wpkhInP2sh;
56490 function lastIndexInTable() {
56491 var pathText = DOM.addresses.find(
".index").last().text();
56492 var pathBits = pathText.split(
"/");
56493 var lastBit = pathBits[pathBits.length-
1];
56494 var lastBitClean = lastBit.replace(
"'",
"");
56495 return parseInt(lastBitClean);
56500 name:
"BCH - Bitcoin Cash",
56501 segwitAvailable: false,
56502 onSelect: function() {
56503 DOM.useBitpayAddressesContainer.removeClass(
"hidden");
56504 setBitcoinCashNetworkValues();
56509 name:
"BTC - Bitcoin",
56510 segwitAvailable: true,
56511 onSelect: function() {
56512 network = bitcoinjs.bitcoin.networks.bitcoin;
56517 name:
"BTC - Bitcoin Testnet",
56518 segwitAvailable: true,
56519 onSelect: function() {
56520 network = bitcoinjs.bitcoin.networks.testnet;
56525 name:
"BTG - Bitcoin Gold",
56526 segwitAvailable: true,
56527 onSelect: function() {
56528 network = bitcoinjs.bitcoin.networks.bgold;
56533 name:
"CLAM - Clams",
56534 segwitAvailable: false,
56535 onSelect: function() {
56536 network = bitcoinjs.bitcoin.networks.clam;
56541 name:
"CRW - Crown",
56542 segwitAvailable: false,
56543 onSelect: function() {
56544 network = bitcoinjs.bitcoin.networks.crown;
56549 name:
"DASH - Dash",
56550 segwitAvailable: false,
56551 onSelect: function() {
56552 network = bitcoinjs.bitcoin.networks.dash;
56557 name:
"DASH - Dash Testnet",
56558 segwitAvailable: false,
56559 onSelect: function() {
56560 network = bitcoinjs.bitcoin.networks.dashtn;
56565 name:
"DOGE - Dogecoin",
56566 segwitAvailable: false,
56567 onSelect: function() {
56568 network = bitcoinjs.bitcoin.networks.dogecoin;
56573 name:
"ETH - Ethereum",
56574 segwitAvailable: false,
56575 onSelect: function() {
56576 network = bitcoinjs.bitcoin.networks.bitcoin;
56581 name:
"FJC - Fujicoin",
56582 segwitAvailable: false,
56583 onSelect: function() {
56584 network = bitcoinjs.bitcoin.networks.fujicoin;
56589 name:
"GAME - GameCredits",
56590 segwitAvailable: false,
56591 onSelect: function() {
56592 network = bitcoinjs.bitcoin.networks.game;
56597 name:
"JBS - Jumbucks",
56598 segwitAvailable: false,
56599 onSelect: function() {
56600 network = bitcoinjs.bitcoin.networks.jumbucks;
56605 name:
"LTC - Litecoin",
56606 segwitAvailable: true,
56607 onSelect: function() {
56608 network = bitcoinjs.bitcoin.networks.litecoin;
56610 DOM.litecoinLtubContainer.removeClass(
"hidden");
56614 name:
"MAZA - Maza",
56615 segwitAvailable: false,
56616 onSelect: function() {
56617 network = bitcoinjs.bitcoin.networks.maza;
56622 name:
"MONA - Monacoin",
56623 segwitAvailable: true,
56624 onSelect: function() {
56625 network = bitcoinjs.bitcoin.networks.monacoin,
56630 name:
"NMC - Namecoin",
56631 segwitAvailable: false,
56632 onSelect: function() {
56633 network = bitcoinjs.bitcoin.networks.namecoin;
56638 name:
"PIVX - PIVX",
56639 segwitAvailable: false,
56640 onSelect: function() {
56641 network = bitcoinjs.bitcoin.networks.pivx;
56646 name:
"PIVX - PIVX Testnet",
56647 segwitAvailable: false,
56648 onSelect: function() {
56649 network = bitcoinjs.bitcoin.networks.pivxtestnet;
56654 name:
"PPC - Peercoin",
56655 segwitAvailable: false,
56656 onSelect: function() {
56657 network = bitcoinjs.bitcoin.networks.peercoin;
56662 name:
"SDC - ShadowCash",
56663 segwitAvailable: false,
56664 onSelect: function() {
56665 network = bitcoinjs.bitcoin.networks.shadow;
56670 name:
"SDC - ShadowCash Testnet",
56671 segwitAvailable: false,
56672 onSelect: function() {
56673 network = bitcoinjs.bitcoin.networks.shadowtn;
56678 name:
"SLM - Slimcoin",
56679 segwitAvailable: false,
56680 onSelect: function() {
56681 network = bitcoinjs.bitcoin.networks.slimcoin;
56686 name:
"SLM - Slimcoin Testnet",
56687 segwitAvailable: false,
56688 onSelect: function() {
56689 network = bitcoinjs.bitcoin.networks.slimcointn;
56694 name:
"USNBT - NuBits",
56695 segwitAvailable: false,
56696 onSelect: function() {
56697 network = bitcoinjs.bitcoin.networks.nubits;
56702 name:
"VIA - Viacoin",
56703 segwitAvailable: false,
56704 onSelect: function() {
56705 network = bitcoinjs.bitcoin.networks.viacoin;
56710 name:
"VIA - Viacoin Testnet",
56711 segwitAvailable: false,
56712 onSelect: function() {
56713 network = bitcoinjs.bitcoin.networks.viacointestnet;
56718 name:
"XMY - Myriadcoin",
56719 segwitAvailable: false,
56720 onSelect: function() {
56721 network = bitcoinjs.bitcoin.networks.myriadcoin;
56726 name:
"XRP - Ripple",
56727 segwitAvailable: false,
56728 onSelect: function() {
56729 network = bitcoinjs.bitcoin.networks.bitcoin;
56737 name:
"Bitcoin Core",
56738 onSelect: function() {
56739 DOM.bip32path.val(
"m/0'/0'");
56740 DOM.hardenedAddresses.prop('checked', true);
56744 name:
"blockchain.info",
56745 onSelect: function() {
56746 DOM.bip32path.val(
"m/44'/0'/0'");
56747 DOM.hardenedAddresses.prop('checked', false);
56751 name:
"MultiBit HD",
56752 onSelect: function() {
56753 DOM.bip32path.val(
"m/0'/0");
56754 DOM.hardenedAddresses.prop('checked', false);