]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/BIP39.git/blob - bip39-standalone.html
Release v0.2.4
[perso/Immae/Projets/Cryptomonnaies/BIP39.git] / bip39-standalone.html
1 <!DOCTYPE html>
2 <html>
3 <head lang="en">
4 <meta charset="utf-8" />
5 <title>BIP39 - Mnemonic Code</title>
6 <style>/*!
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=" />
16
17 <style>
18 body {
19 padding-bottom: 32px;
20 }
21 .form-control[readonly] {
22 cursor: text;
23 }
24 .feedback-container {
25 position: fixed;
26 top: 0;
27 width: 100%;
28 text-align: center;
29 z-index: 4;
30 }
31 .feedback {
32 display: table;
33 padding: 0.5em 1em;
34 background-color: orange;
35 margin: 0 auto;
36 font-size: 2em;
37 color: #444;
38 border: 2px solid #555;
39 border-top: 0;
40 border-bottom-left-radius: 20px 20px;
41 border-bottom-right-radius: 20px 20px;
42 }
43 .no-border {
44 border: 0;
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);
47 }
48 .phrase {
49 word-break: keep-all;
50 }
51 .generate-container .strength {
52 /* override mobile width from bootstrap */
53 width: auto!important;
54 display: inline-block;
55 }
56 .languages a {
57 padding-left: 10px;
58 }
59 .languages a:nth-of-type(1) {
60 margin-left: -12px;
61 padding-left: 0;
62 }
63 .monospace {
64 font-family: monospace;
65 }
66 .entropy-container .filtered,
67 .entropy-container .binary {
68 word-wrap: break-word;
69 }
70 .entropy-container li {
71 padding-bottom: 5px;
72 }
73 .card-suit {
74 font-size: 19px;
75 line-height: 0;
76 }
77 .card-suit.club {
78 color: #009F00;
79 }
80 .card-suit.diamond {
81 color: #3D5DC4;
82 }
83 .card-suit.heart {
84 color: #F00;
85 }
86 .card-suit.spade {
87 color: #000;
88 }
89 .qr-container {
90 position: fixed;
91 top: 0;
92 right: 0;
93 text-align: center;
94 background-color: #FFF;
95 border: 1px solid #CCC;
96 }
97 .qr-image {
98 margin: 5px;
99 }
100 .qr-hint,
101 .qr-warning {
102 padding: 2px;
103 max-width: 150px;
104 }
105 .more-info {
106 cursor: help;
107 border-bottom: 1px dashed #000;
108 text-decoration: none;
109 }
110 .version {
111 position: absolute;
112 top: 5px;
113 right: 5px;
114 }
115 </style>
116 </head>
117 <body>
118 <div class="container">
119
120 <h1 class="text-center">Mnemonic Code Converter</h1>
121 <p class="version">v0.2.4</p>
122 <hr>
123 <div class="row">
124 <div class="col-md-12">
125 <h2>Mnemonic</h2>
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 data-translate>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>
131 <p data-translate-html>
132 For more info see the
133 <a href="https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki" target="_blank">BIP39 spec</a>.
134 </p>
135 </div>
136 </div>
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 data-translate>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>
153 </select>
154 <span data-translate>words</span>
155 </div>
156 </div>
157 </div>
158 </div>
159 <div class="entropy-container hidden">
160 <div class="form-group text-danger">
161 <label class="col-sm-2 control-label" data-translate>Warning</label>
162 <div class="col-sm-10 form-control-static">
163 <span data-translate>Entropy is an advanced feature. Your mnemonic may be insecure if this feature is used incorrectly.</span>
164 <a href="#entropy-notes" data-translate>Read more</a>
165 </div>
166 </div>
167 <div class="form-group">
168 <label for="entropy" class="col-sm-2 control-label" data-translate>Entropy</label>
169 <div class="col-sm-7">
170 <textarea id="entropy" rows="2" class="entropy form-control" placeholder="Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards" data-translate-placeholder></textarea>
171 <div class="row">
172 <label class="col-sm-3 control-label" data-translate><span class="more-info" data-translate-title title="Based on estimates from zxcvbn using Filtered Entropy">Time To Crack</span></label>
173 <div class="crack-time col-sm-3 form-control-static"></div>
174 <label class="col-sm-3 control-label" data-translate>Event Count</label>
175 <div class="event-count col-sm-3 form-control-static"></div>
176 </div>
177 <div class="row">
178 <label class="col-sm-3 control-label" data-translate>Entropy Type</label>
179 <div class="type col-sm-3 form-control-static"></div>
180 <label class="col-sm-3 control-label" data-translate>Bits Per Event</label>
181 <div class="bits-per-event col-sm-3 form-control-static"></div>
182 </div>
183 <div class="row">
184 <label class="col-sm-3 control-label" data-translate>Raw Entropy Words</label>
185 <div class="word-count col-sm-3 form-control-static"></div>
186 <label class="col-sm-3 control-label" data-translate><span class="more-info" data-translate-title title="Total bits of entropy may be less than indicated if any entropy event uses a weak source.">Total Bits</span></label>
187 <div class="bits col-sm-3 form-control-static"></div>
188 </div>
189 <label class="col-sm-3 control-label" data-translate>Filtered Entropy</label>
190 <div class="filtered col-sm-9 form-control-static"></div>
191 <label class="col-sm-3 control-label" data-translate>Raw Binary</label>
192 <div class="binary col-sm-9 form-control-static"></div>
193 <label class="col-sm-3 control-label" data-translate>Mnemonic Length</label>
194 <div class="col-sm-9">
195 <select class="mnemonic-length form-control">
196 <option value="raw" selected data-translate>Use Raw Entropy (3 words per 32 bits)</option>
197 <option value="12">12 <span data-translate>Words</span></option>
198 <option value="15">15 <span data-translate>Words</option>
199 <option value="18">18 <span data-translate>Words</span></option>
200 <option value="21">21 <span data-translate>Words</span></option>
201 <option value="24">24 <span data-translate>Words</span></option>
202 </select>
203 </div>
204 </div>
205 <div class="col-sm-3">
206 <p data-translate>Valid entropy values include:</p>
207 <ul>
208 <li><strong data-translate>Binary</strong> [0-1]<br>101010011</li>
209 <li><strong data-translate>Base 6</strong> [0-5]<br>123434014</li>
210 <li><strong data-translate>Dice</strong> [1-6]<br>62535634</li>
211 <li><strong data-translate>Base 10</strong> [0-9]<br>90834528</li>
212 <li><strong data-translate>Hex</strong> [0-9A-F]<br>4187a8bfd9</li>
213 <li><strong data-translate>Card</strong> [A2-9TJQK][CDHS]<br>ahqs9dtc</li>
214 </ul>
215 </div>
216 </div>
217 </div>
218 <div class="form-group">
219 <div class="col-sm-2"></div>
220 <div class="col-sm-10 checkbox">
221 <label>
222 <input type="checkbox" class="use-entropy">
223 <span data-translate>Supply my own source of entropy</span>
224 </label>
225 </div>
226 </div>
227 <div class="form-group">
228 <label class="col-sm-2 control-label" data-translate>Mnemonic Language</label>
229 <div class="col-sm-10 languages">
230 <div class="form-control no-border">
231 <a href="#english">English</a>
232 <a href="#japanese" title="Japanese">日本語</a>
233 <a href="#spanish" title="Spanish">Español</a>
234 <a href="#chinese_simplified" title="Chinese (Simplified)">中文(简体)</a>
235 <a href="#chinese_traditional" title="Chinese (Traditional)">中文(繁體)</a>
236 <a href="#french" title="French">Français</a>
237 <a href="#italian" title="Italian">Italiano</a>
238 </div>
239 </div>
240 </div>
241 <div class="form-group">
242 <label for="phrase" class="col-sm-2 control-label" data-translate>BIP39 Mnemonic</label>
243 <div class="col-sm-10">
244 <textarea id="phrase" class="phrase form-control" data-show-qr></textarea>
245 </div>
246 </div>
247 <div class="form-group">
248 <label for="passphrase" class="col-sm-2 control-label" data-translate>BIP39 Passphrase (optional)</label>
249 <div class="col-sm-10">
250 <textarea id="passphrase" class="passphrase form-control"></textarea>
251 </div>
252 </div>
253 <div class="form-group">
254 <label for="seed" class="col-sm-2 control-label" data-translate>BIP39 Seed</label>
255 <div class="col-sm-10">
256 <textarea id="seed" class="seed form-control" readonly="readonly" data-show-qr></textarea>
257 </div>
258 </div>
259 <div class="form-group">
260 <label for="network-phrase" class="col-sm-2 control-label" data-translate>Coin</label>
261 <div class="col-sm-10">
262 <select id="network-phrase" class="network form-control">
263 <!-- populated by javascript -->
264 </select>
265 </div>
266 </div>
267 <div class="form-group">
268 <label for="root-key" class="col-sm-2 control-label" data-translate>BIP32 Root Key</label>
269 <div class="col-sm-10">
270 <textarea id="root-key" class="root-key form-control" data-show-qr></textarea>
271 </div>
272 </div>
273 <div class="form-group litecoin-ltub-container hidden">
274 <label for="litecoin-use-ltub" class="col-sm-2 control-label" data-translate>Prefixes</label>
275 <div class="col-sm-10 checkbox">
276 <label>
277 <input type="checkbox" id="litecoin-use-ltub" class="litecoin-use-ltub">
278 Use <code>Ltpv / Ltub</code> instead of <code>xprv / xpub</code>
279 </label>
280 </div>
281 </div>
282 </form>
283 </div>
284 </div>
285
286 <hr>
287
288 <div class="row">
289 <div class="col-md-12">
290 <h2>Derivation Path</h2>
291 <ul class="derivation-type nav nav-tabs" role="tablist">
292 <li id="bip32-tab">
293 <a href="#bip32" role="tab" data-toggle="tab">BIP32</a>
294 </li>
295 <li id="bip44-tab" class="active">
296 <a href="#bip44" role="tab" data-toggle="tab">BIP44</a>
297 </li>
298 <li id="bip49-tab">
299 <a href="#bip49" role="tab" data-toggle="tab">BIP49</a>
300 </li>
301 </ul>
302 <div class="derivation-type tab-content">
303 <div id="bip44" class="tab-pane active">
304 <form class="form-horizontal" role="form">
305 <br>
306 <div class="col-sm-2"></div>
307 <div class="col-sm-10">
308 <p data-translate-html>
309 For more info see the
310 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target="_blank">BIP44 spec</a>.
311 </p>
312 </div>
313 <div class="form-group">
314 <label for="purpose" class="col-sm-2 control-label">
315 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#purpose" target="_blank" data-translate>Purpose</a>
316 </label>
317 <div class="col-sm-10">
318 <input id="purpose" type="text" class="purpose form-control" value="44" readonly>
319 </div>
320 </div>
321 <div class="form-group">
322 <label for="coin" class="col-sm-2 control-label">
323 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#registered-coin-types" target="_blank" data-translate>Coin</a>
324 </label>
325 <div class="col-sm-10">
326 <input id="coin" type="text" class="coin form-control" value="0" readonly>
327 </div>
328 </div>
329 <div class="form-group">
330 <label for="account" class="col-sm-2 control-label">
331 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account" target="_blank" data-translate>Account</a>
332 </label>
333 <div class="col-sm-10">
334 <input id="account" type="text" class="account form-control" value="0">
335 </div>
336 </div>
337 <div class="form-group">
338 <label for="change" class="col-sm-2 control-label">
339 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#change" target="_blank" data-translate>External / Internal</a>
340 </label>
341 <div class="col-sm-10">
342 <input id="change" type="text" class="change form-control" value="0">
343 </div>
344 </div>
345 <div class="form-group">
346 <label class="col-sm-2 control-label">
347 </label>
348 <div class="col-sm-10">
349 <p data-translate>The account extended keys can be used for importing to most BIP44 compatible wallets, such as mycelium or electrum.</p>
350 </div>
351 </div>
352 <div class="form-group">
353 <label for="account-xprv" class="col-sm-2 control-label">
354 <span data-translate>Account Extended Private Key</span>
355 </label>
356 <div class="col-sm-10">
357 <textarea id="account-xprv" type="text" class="account-xprv form-control" readonly data-show-qr></textarea>
358 </div>
359 </div>
360 <div class="form-group">
361 <label for="account-xpub" class="col-sm-2 control-label">
362 <span data-translate>Account Extended Public Key</span>
363 </label>
364 <div class="col-sm-10">
365 <textarea id="account-xpub" type="text" class="account-xpub form-control" readonly data-show-qr></textarea>
366 </div>
367 </div>
368 <div class="form-group">
369 <label class="col-sm-2 control-label">
370 </label>
371 <div class="col-sm-10">
372 <p data-translate>The BIP32 derivation path and extended keys are the basis for the derived addresses.</p>
373 </div>
374 </div>
375 <div class="form-group">
376 <label for="bip44-path" class="col-sm-2 control-label" data-translate>BIP32 Derivation Path</label>
377 <div class="col-sm-10">
378 <input id="bip44-path" type="text" class="path form-control" value="m/44'/0'/0'/0" readonly="readonly">
379 </div>
380 </div>
381 </form>
382 </div>
383 <div id="bip32" class="tab-pane">
384 <form class="form-horizontal" role="form">
385 <br>
386 <div class="col-sm-2"></div>
387 <div class="col-sm-10">
388 <p data-translate>
389 For more info see the
390 <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target="_blank">BIP32 spec</a>
391 </p>
392 </div>
393 <div class="form-group">
394 <label for="bip32-client" class="col-sm-2 control-label" data-translate>Client</label>
395 <div class="col-sm-10">
396 <select id="bip32-client" class="client form-control">
397 <option value="custom">Custom derivation path</option>
398 <!-- populated by javascript -->
399 </select>
400 </div>
401 </div>
402 <div class="form-group">
403 <label for="bip32-path" class="col-sm-2 control-label" data-translate>BIP32 Derivation Path</label>
404 <div class="col-sm-10">
405 <input id="bip32-path" type="text" class="path form-control" value="m/0">
406 </div>
407 </div>
408 <div class="form-group">
409 <div class="col-sm-2"></div>
410 <label class="col-sm-10">
411 <input class="hardened-addresses" type="checkbox">
412 <span data-translate>Use hardened addresses</span>
413 </label>
414 </div>
415 <div class="form-group">
416 <label for="core-path" class="col-sm-2 control-label" data-translate>Bitcoin Core</label>
417 <div class="col-sm-10">
418 <p class="form-control no-border" data-translate-html>
419 Use path <code>m/0'/0'</code> with hardened addresses.
420 </p>
421 <p class="form-control no-border" data-translate-html>
422 For more info see the
423 <a href="https://github.com/bitcoin/bitcoin/pull/8035" target="_blank">Bitcoin Core BIP32 implementation</a>
424 </p>
425 </div>
426 </div>
427 <div class="form-group">
428 <label for="core-path" class="col-sm-2 control-label" data-translate>Multibit</label>
429 <div class="col-sm-10">
430 <p class="form-control no-border">
431 <span data-translate-html>Use path <code>m/0'/0</code>.</span>
432 </p>
433 <p class="form-control no-border">
434 <span data-translate>For more info see</span>
435 <a href="https://multibit.org/" target="_blank">MultiBit HD</a>
436 </p>
437 </div>
438 </div>
439 <div class="form-group">
440 <label class="col-sm-2 control-label" data-translate>Block Explorers</label>
441 <div class="col-sm-10">
442 <p class="form-control no-border">
443 <span data-translate-html>Use path <code>m/44'/0'/0'</code>.</span>
444 <span data-translate-html>Only enter the <code>xpub</code> extended key into block explorer search fields, never the <code>xprv</code> key.</span>
445 </p>
446 <p class="form-control no-border">
447 <span data-translate>Can be used with</span>:
448 <a href="https://blockchain.info/" target="_blank">blockchain.info</a>
449 </p>
450 </div>
451 </div>
452 </form>
453 </div>
454 <div id="bip49" class="tab-pane">
455 <form class="form-horizontal" role="form">
456 <br>
457 <div class="unavailable hidden">
458 <div class="form-group">
459 <div class="col-sm-2"></div>
460 <div class="col-sm-10">
461 <p data-translate>BIP49 is unavailable for this coin.</p>
462 </div>
463 </div>
464 </div>
465 <div class="available">
466 <div class="col-sm-2"></div>
467 <div class="col-sm-10">
468 <p data-translate-html>
469 For more info see the
470 <a href="https://github.com/bitcoin/bips/blob/master/bip-0049.mediawiki" target="_blank">BIP49 spec</a>.
471 </p>
472 </div>
473 <div class="form-group">
474 <label for="purpose" class="col-sm-2 control-label">
475 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#purpose" target="_blank" data-translate>Purpose</a>
476 </label>
477 <div class="col-sm-10">
478 <input id="purpose" type="text" class="purpose form-control" value="49" readonly>
479 </div>
480 </div>
481 <div class="form-group">
482 <label for="coin" class="col-sm-2 control-label">
483 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#registered-coin-types" target="_blank" data-translate>Coin</a>
484 </label>
485 <div class="col-sm-10">
486 <input id="coin" type="text" class="coin form-control" value="0" readonly>
487 </div>
488 </div>
489 <div class="form-group">
490 <label for="account" class="col-sm-2 control-label">
491 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account" target="_blank" data-translate>Account</a>
492 </label>
493 <div class="col-sm-10">
494 <input id="account" type="text" class="account form-control" value="0">
495 </div>
496 </div>
497 <div class="form-group">
498 <label for="change" class="col-sm-2 control-label">
499 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#change" target="_blank" data-translate>External / Internal</a>
500 </label>
501 <div class="col-sm-10">
502 <input id="change" type="text" class="change form-control" value="0">
503 </div>
504 </div>
505 <div class="form-group">
506 <label class="col-sm-2 control-label">
507 </label>
508 <div class="col-sm-10">
509 <p data-translate>The account extended keys can be used for importing to most BIP49 compatible wallets.</p>
510 </div>
511 </div>
512 <div class="form-group">
513 <label for="account-xprv" class="col-sm-2 control-label">
514 <span data-translate>Account Extended Private Key</span>
515 </label>
516 <div class="col-sm-10">
517 <textarea id="account-xprv" type="text" class="account-xprv form-control" readonly data-show-qr></textarea>
518 </div>
519 </div>
520 <div class="form-group">
521 <label for="account-xpub" class="col-sm-2 control-label">
522 <span data-translate>Account Extended Public Key</span>
523 </label>
524 <div class="col-sm-10">
525 <textarea id="account-xpub" type="text" class="account-xpub form-control" readonly data-show-qr></textarea>
526 </div>
527 </div>
528 <div class="form-group">
529 <label class="col-sm-2 control-label">
530 </label>
531 <div class="col-sm-10">
532 <p data-translate>The BIP32 derivation path and extended keys are the basis for the derived addresses.</p>
533 </div>
534 </div>
535 <div class="form-group">
536 <label for="bip49-path" class="col-sm-2 control-label" data-translate>BIP32 Derivation Path</label>
537 <div class="col-sm-10">
538 <input id="bip49-path" type="text" class="path form-control" value="m/49'/0'/0'/0" readonly="readonly">
539 </div>
540 </div>
541 </div>
542 </form>
543 </div>
544 </div>
545 <form class="form-horizontal" role="form">
546 <div class="form-group">
547 <label for="extended-priv-key" class="col-sm-2 control-label" data-translate>BIP32 Extended Private Key</label>
548 <div class="col-sm-10">
549 <textarea id="extended-priv-key" class="extended-priv-key form-control" readonly="readonly" data-show-qr></textarea>
550 </div>
551 </div>
552 <div class="form-group">
553 <label for="extended-pub-key" class="col-sm-2 control-label" data-translate>BIP32 Extended Public Key</label>
554 <div class="col-sm-10">
555 <textarea id="extended-pub-key" class="extended-pub-key form-control" readonly="readonly" data-show-qr></textarea>
556 </div>
557 </div>
558 </form>
559 </div>
560 </div>
561
562 <hr>
563
564 <div class="row">
565 <div class="col-md-12">
566 <h2>Derived Addresses</h2>
567 <p data-translate>Note these addreses are derived from the BIP32 Extended Key</p>
568 <table class="table table-striped">
569 <thead>
570 <th>
571 <div class="input-group">
572 <span data-translate>Path</span>&nbsp;&nbsp;
573 <button class="index-toggle" data-translate>Toggle</button>
574 </div>
575 </th>
576 <th>
577 <div class="input-group">
578 <span data-translate>Address</span>&nbsp;&nbsp;
579 <button class="address-toggle" data-translate>Toggle</button>
580 </div>
581 </th>
582 <th>
583 <div class="input-group">
584 <span data-translate>Public Key</span>&nbsp;&nbsp;
585 <button class="public-key-toggle" data-translate>Toggle</button>
586 </div>
587 </th>
588 <th>
589 <div class="input-group">
590 <span data-translate>Private Key</span>&nbsp;&nbsp;
591 <button class="private-key-toggle" data-translate>Toggle</button>
592 </div>
593 </th>
594 </thead>
595 <tbody class="addresses monospace">
596 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
597 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
598 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
599 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
600 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
601 </tbody>
602 </table>
603 </div>
604 </div>
605 <span data-translate>Show more rows</span>:
606 <input type="number" class="rows-to-add" value="20">
607 <button class="more" data-translate>Show</button>
608
609 <hr>
610
611 <div class="row">
612 <div class="col-md-12">
613 <h2 data-translate>More info</h2>
614 <h3>BIP39 <span class="small" data-translate>Mnemonic code for generating deterministic keys</span></h3>
615 <p data-translate-html>
616 Read more at the
617 <a href="https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki">official BIP39 spec</a>
618 </p>
619 <h3>BIP32 <span class="small" data-translate>Hierarchical Deterministic Wallets</span></h3>
620 <p data-translate-html>
621 Read more at the
622 <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target="_blank">official BIP32 spec</a>
623 </p>
624 <p data-translate-html>
625 See the demo at
626 <a href="http://bip32.org/" target="_blank">bip32.org</a>
627 </p>
628 <h3>BIP44 <span class="small" data-translate>Multi-Account Hierarchy for Deterministic Wallets</span></h3>
629 <p data-translate-html>
630 Read more at the
631 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target="_blank">official BIP44 spec</a>
632 </p>
633 <h3 data-translate>Private Keys</h3>
634 <p>
635 <span data-translate-html>
636 Use private keys at
637 <a href="https://web.archive.org/web/20150707020924/https://brainwallet.org/" target="_blank">brainwallet.org</a>.
638 </span>
639 <span data-translate>Be careful - it can be easy to make mistakes if you don't know what you're doing.</span>
640 </p>
641 <h3 id="entropy-notes" data-translate>Entropy</h3>
642 <p>
643 <span data-translate-html>
644 Entropy values must be sourced from a
645 <a href="https://en.wikipedia.org/wiki/Random_number_generation" target="_blank">strong source of randomness</a>.
646 </span>
647 <span data-translate>This means flipping a fair coin, rolling a fair dice, noise measurements etc.</span>
648 <span data-translate-html>
649 Do <strong>NOT</strong> use phrases from books, lyrics from songs, your birthday or steet address,
650 keyboard mashing, or anything you <i>think</i> is random, because chances are overwhelming it isn't
651 random enough for the needs of this tool.
652 </span>
653 </p>
654 <p>
655 <strong><span data-translate>Do not store entropy.</span></strong>
656 </p>
657 <p>
658 <span data-translate>Storing entropy (such as keeping a deck of cards in a specific shuffled order) is unreliable compared to storing a mnemonic.</span>
659 <span data-translate>Instead of storing entropy, store the mnemonic generated from the entropy.</span>
660 <span data-translate-html><a href="https://en.wikipedia.org/wiki/Steganography#Physical" target="_blank">Steganography</a> may be beneficial when storing the mnemonic.</span>
661 </p>
662 <p>
663 <span data-translate-html>
664 The random mnemonic generator on this page uses a
665 <a href="https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues" target="_blank">cryptographically secure random number generator</a>.
666 </span>
667 <span data-translate>The built in random generator can generally be trusted more than your own intuition about randomness.</span>
668 <span data-translate>If cryptographic randomness isn't available in your browser, this page will show a warning and the generate button will not work.</span>
669 <span data-translate>In that case you might choose to use your own source of entropy.</span>
670 </p>
671 <p>
672 <a href="https://bitcointalk.org/index.php?topic=311000.msg3345309#msg3345309" target="_blank" data-translate>You are not a good source of entropy.</a>
673 </p>
674 <h3 data-translate>License</h3>
675 <p>
676 <span data-translate-html>Please refer to <a href="https://github.com/iancoleman/bip39/blob/master/LICENSE" target="_blank">the software license</a> for more detail.
677 </span>
678 </p>
679 <p data-translate>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>
680 </div>
681 </div>
682
683 <hr>
684
685 <div class="row">
686 <div class="col-md-12">
687
688 <h2 data-translate>Offline Usage</h2>
689
690 <p data-translate>
691 You can use this tool without having to be online.
692 </p>
693 <p data-translate>
694 In your browser, select file save-as, and save this page
695 as a file.
696 </p>
697 <p data-translate>
698 Double-click that file to open it in a browser
699 on any offline computer.
700 </p>
701 <p>
702 <span data-translate>Alternatively, download the file from the repository</span>
703 -
704 <a href="https://github.com/iancoleman/bip39">https://github.com/iancoleman/bip39</a>
705 </p>
706
707 </div>
708 </div>
709
710 <hr>
711
712 <div class="row">
713 <div class="col-md-12">
714
715 <h2 data-translate>This project is 100% open-source code</h2>
716
717 <p>
718 <span data-translate>Get the source code from the repository</span>
719 -
720 <a href="https://github.com/iancoleman/bip39" target="_blank">
721 https://github.com/iancoleman/bip39
722 </a>
723 </p>
724
725 <h3 data-translate>Libraries</h3>
726
727 <p>
728 <span>BitcoinJS - </span>
729 <a href="https://github.com/bitcoinjs/bitcoinjs-lib" target="_blank">
730 https://github.com/bitcoinjs/bitcoinjs-lib
731 </a>
732 </p>
733
734 <p>
735 <span>jsBIP39 - </span>
736 <a href="https://github.com/iancoleman/jsbip39" target="_blank">
737 https://github.com/iancoleman/jsbip39
738 </a>
739 </p>
740
741 <p>
742 <span>sjcl - </span>
743 <a href="https://github.com/bitwiseshiftleft/sjcl" target="_blank">
744 https://github.com/bitwiseshiftleft/sjcl
745 </a>
746 </p>
747
748 <p>
749 <span>jQuery - </span>
750 <a href="https://jquery.com/" target="_blank">
751 https://jquery.com/
752 </a>
753 </p>
754
755 <p>
756 <span>Twitter Bootstrap - </span>
757 <a href="http://getbootstrap.com/" target="_blank">
758 http://getbootstrap.com/
759 </a>
760 </p>
761
762 </div>
763 </div>
764
765 </div>
766
767 <div class="qr-container hidden">
768 <div class="qr-hint bg-primary hidden" data-translate>Click field to hide QR</div>
769 <div class="qr-hint bg-primary" data-translate>Click field to show QR</div>
770 <div class="qr-hider hidden">
771 <div class="qr-image"></div>
772 <div class="qr-warning bg-primary" data-translate>Caution: Scanner may keep history</div>
773 </div>
774 </div>
775
776 <div class="feedback-container">
777 <div class="feedback">Loading...</div>
778 </div>
779
780 <script type="text/template" id="address-row-template">
781 <tr>
782 <td class="index"><span></span></td>
783 <td class="address"><span data-show-qr></span></td>
784 <td class="pubkey"><span data-show-qr></span></td>
785 <td class="privkey"><span data-show-qr></span></td>
786 </tr>
787 </script>
788 <script>// From
789 // https://raw.githubusercontent.com/inexorabletash/polyfill/a6bc6ced78160c994f76a909b6ff6bbbab3d43de/es6.js
790 // Required for ethereumjs-utils.js when run in phantomjs-2.1.1
791 // but is not required in any modern browsers.
792 // For more information, see
793 // https://www.bountysource.com/issues/38485709-error-rendering-plot-with-phantomjs
794
795 //----------------------------------------------------------------------
796 //
797 // ECMAScript 2015 Polyfills
798 //
799 //----------------------------------------------------------------------
800
801 (function (global) {
802 "use strict";
803
804 // Set this to always override native implementations, for testing
805 // the polyfill in browsers with partial/full ES2015 support.
806 var OVERRIDE_NATIVE_FOR_TESTING = false;
807
808 var undefined = (void 0); // Paranoia
809
810 // Helpers
811
812 function strict(o) {
813 return o === global ? undefined : o;
814 }
815
816 function hook(o, p, f) {
817 var op = o[p];
818 console.assert(typeof op === 'function', 'Hooking a non-function');
819 o[p] = function() {
820 var o = strict(this);
821 var r = f.apply(o, arguments);
822 return r !== undefined ? r : op.apply(o, arguments);
823 };
824 }
825
826 function isSymbol(s) {
827 return (typeof s === 'symbol') || ('Symbol' in global && s instanceof global.Symbol);
828 }
829
830 function getPropertyDescriptor(target, name) {
831 var desc = Object.getOwnPropertyDescriptor(target, name);
832 var proto = Object.getPrototypeOf(target);
833 while (!desc && proto) {
834 desc = Object.getOwnPropertyDescriptor(proto, name);
835 proto = Object.getPrototypeOf(proto);
836 }
837 return desc;
838 }
839
840 var enqueue = (function(nativePromise, nativeSetImmediate) {
841 if (nativePromise)
842 return function(job) { nativePromise.resolve().then(function() { job(); }); };
843 if (nativeSetImmediate)
844 return function(job) { nativeSetImmediate(job); };
845 return function(job) { setTimeout(job, 0); };
846 }(global['Promise'], global['setImmediate']));
847
848 function define(o, p, v, override) {
849 if (p in o && !override && !OVERRIDE_NATIVE_FOR_TESTING)
850 return;
851
852 if (typeof v === 'function') {
853 // Sanity check that functions are appropriately named (where possible)
854 console.assert(isSymbol(p) || !('name' in v) || v.name === p || v.name === p + '_', 'Expected function name "' + p.toString() + '", was "' + v.name + '"');
855 Object.defineProperty(o, p, {
856 value: v,
857 configurable: true,
858 enumerable: false,
859 writable: true
860 });
861 } else {
862 Object.defineProperty(o, p, {
863 value: v,
864 configurable: false,
865 enumerable: false,
866 writable: false
867 });
868 }
869 }
870
871 function set_internal(o, p, v) {
872 Object.defineProperty(o, p, {
873 value: v,
874 configurable: false,
875 enumerable: false,
876 writable: true
877 });
878 }
879
880 // Snapshot intrinsic functions
881 var $isNaN = global.isNaN,
882 $parseInt = global.parseInt,
883 $parseFloat = global.parseFloat;
884
885 var E = Math.E,
886 LOG10E = Math.LOG10E,
887 LOG2E = Math.LOG2E,
888 abs = Math.abs,
889 ceil = Math.ceil,
890 exp = Math.exp,
891 floor = Math.floor,
892 log = Math.log,
893 max = Math.max,
894 min = Math.min,
895 pow = Math.pow,
896 random = Math.random,
897 sqrt = Math.sqrt;
898
899 var orig_match = String.prototype.match,
900 orig_replace = String.prototype.replace,
901 orig_search = String.prototype.search,
902 orig_split = String.prototype.split;
903
904 // These are used for implementing the polyfills, but not exported.
905
906 // Inspired by https://gist.github.com/1638059
907 /** @constructor */
908 function EphemeronTable() {
909 var secretKey = ObjectCreate(null);
910
911 function conceal(o) {
912 var oValueOf = o.valueOf, secrets = ObjectCreate(null);
913 Object.defineProperty(o, 'valueOf', {
914 value: (function(secretKey) {
915 return function (k) {
916 return (k === secretKey) ? secrets : oValueOf.apply(o, arguments);
917 };
918 }(secretKey)),
919 configurable: true,
920 writeable: true,
921 enumerable: false
922 });
923 return secrets;
924 }
925
926 function reveal(o) {
927 var v = typeof o.valueOf === 'function' && o.valueOf(secretKey);
928 return v === o ? null : v;
929 }
930
931 return {
932 clear: function() {
933 secretKey = ObjectCreate(null);
934 },
935 remove: function(key) {
936 var secrets = reveal(key);
937 if (secrets && HasOwnProperty(secrets, 'value')) {
938 delete secrets.value;
939 return true;
940 }
941 return false;
942 },
943 get: function(key, defaultValue) {
944 var secrets = reveal(key);
945 return (secrets && HasOwnProperty(secrets, 'value')) ? secrets.value : defaultValue;
946 },
947 has: function(key) {
948 var secrets = reveal(key);
949 return Boolean(secrets && HasOwnProperty(secrets, 'value'));
950 },
951 set: function(key, value) {
952 var secrets = reveal(key) || conceal(key);
953 secrets.value = value;
954 }
955 };
956 }
957
958 var empty = Object.create(null);
959
960 //----------------------------------------------------------------------
961 //
962 // ECMAScript 2015
963 // http://www.ecma-international.org/ecma-262/6.0/
964 //
965 //----------------------------------------------------------------------
966
967 // ---------------------------------------
968 // 19.4 Symbol Objects
969 // ---------------------------------------
970
971 // NOTE: Symbols are defined here - out of spec order - since we need the
972 // properties and prototype to be populated for other polyfills.
973
974 // NOTE: Not secure, nor is obj[$$symbol] hidden from Object.keys()
975
976 var symbolForKey;
977 (function() {
978 var secret = Object.create(null);
979 var symbolMap = {};
980 symbolForKey = function(k) {
981 return symbolMap[k];
982 };
983
984 var GlobalSymbolRegistry = [];
985
986 function unique(bits) {
987 return Array(bits + 1).join('x').replace(/x/g, function() {
988 return random() < 0.5 ? '\u200C' : '\u200D'; // JWNJ / ZWJ
989 });
990 }
991
992 // 19.4.1 The Symbol Constructor
993 // 19.4.1.1 Symbol ( description=undefined )
994 function Symbol(description) {
995 if (!(this instanceof Symbol)) return new Symbol(description, secret);
996 if (this instanceof Symbol && arguments[1] !== secret) throw TypeError();
997
998 var descString = description === undefined ? undefined : String(description);
999
1000 set_internal(this, '[[SymbolData]]', unique(128));
1001 set_internal(this, '[[Description]]', descString);
1002
1003 symbolMap[this] = this;
1004 return this;
1005 }
1006
1007 if (!('Symbol' in global) || OVERRIDE_NATIVE_FOR_TESTING)
1008 global.Symbol = Symbol;
1009
1010 // 19.4.2 Properties of the Symbol Constructor
1011
1012 // 19.4.2.1 Symbol.for (key)
1013 define(Symbol, 'for', function for_(key) {
1014 var stringKey = String(key);
1015 for (var i = 0; i < GlobalSymbolRegistry.length; ++i) {
1016 var e = GlobalSymbolRegistry[i];
1017 if (SameValue(e['[[key]]'], stringKey)) return e['[[symbol]]'];
1018 }
1019 var newSymbol = Symbol(key);
1020 GlobalSymbolRegistry.push({'[[key]]': stringKey, '[[symbol]]': newSymbol});
1021 return newSymbol;
1022 });
1023
1024 // 19.4.2.2 Symbol.hasInstance
1025 // 19.4.2.3 Symbol.isConcatSpreadable
1026
1027 // 19.4.2.4 Symbol.iterator
1028 define(global.Symbol, 'iterator', global.Symbol('Symbol.iterator'));
1029
1030 // 19.4.2.5 Symbol.keyFor (sym)
1031 define(Symbol, 'keyFor', function keyFor(sym) {
1032 if (!(sym instanceof Symbol)) throw TypeError();
1033 for (var i = 0; i < GlobalSymbolRegistry.length; ++i) {
1034 var e = GlobalSymbolRegistry[i];
1035 if (SameValue(e['[[symbol]]'], sym)) return e['[[key]]'];
1036 }
1037 return undefined;
1038 });
1039
1040 // 19.4.2.6 Symbol.match
1041 define(global.Symbol, 'match', global.Symbol('Symbol.match'));
1042
1043 // 19.4.2.7 Symbol.prototype
1044
1045 // 19.4.2.8 Symbol.replace
1046 define(global.Symbol, 'replace', global.Symbol('Symbol.replace'));
1047
1048 // 19.4.2.9 Symbol.search
1049 define(global.Symbol, 'search', global.Symbol('Symbol.search'));
1050
1051 // 19.4.2.10 Symbol.species
1052
1053 // 19.4.2.11 Symbol.search
1054 define(global.Symbol, 'split', global.Symbol('Symbol.split'));
1055
1056 // 19.4.2.12 Symbol.toPrimitive
1057
1058 // 19.4.2.13 Symbol.toStringTag
1059 define(global.Symbol, 'toStringTag', global.Symbol('Symbol.toStringTag'));
1060
1061 // 19.4.2.14 Symbol.unscopables
1062
1063 // 19.4.3 Properties of the Symbol Prototype Object
1064 // 19.4.3.1 Symbol.prototype.constructor
1065
1066 // 19.4.3.2 Symbol.prototype.toString ( )
1067 Object.defineProperty(Symbol.prototype, 'toString', {
1068 value: function toString() {
1069 var s = strict(this);
1070 var desc = s['[[Description]]'];
1071 return 'Symbol(' + (desc === undefined ? '' : desc) + s['[[SymbolData]]'] + ')';
1072 },
1073 configurable: true, writeable: true, enumerable: false });
1074
1075 // 19.4.3.3 Symbol.prototype.valueOf ( )
1076 Object.defineProperty(Symbol.prototype, 'valueOf', {
1077 value: function valueOf() {
1078 // To prevent automatic string conversion:
1079 throw TypeError();
1080
1081 // Spec has approximately the following:
1082 //var s = strict(this);
1083 //if (Type(s) === 'symbol') return s;
1084 //if (Type(s) !== 'object') throw TypeError();
1085 //if (!('[[SymbolData]]' in s)) throw TypeError();
1086 //return s['[[SymbolData]]'];
1087 },
1088 configurable: true, writeable: true, enumerable: false });
1089
1090 // 19.4.3.4 Symbol.prototype [ @@toStringTag ]
1091 // (Done later to polyfill partial implementations)
1092
1093 // 19.4.4 Properties of Symbol Instances
1094 }());
1095
1096 console.assert(typeof global.Symbol() === 'symbol' || symbolForKey(String(global.Symbol('x'))));
1097
1098 // Defined here so that other prototypes can reference it
1099 // 25.1.2 The %IteratorPrototype% Object
1100 var $IteratorPrototype$ = {};
1101
1102 //----------------------------------------
1103 // 6 ECMAScript Data Types and Values
1104 //----------------------------------------
1105
1106 // 6.1 ECMAScript Language Types
1107
1108 // "Type(x)" is used as shorthand for "the type of x"...
1109 function Type(v) {
1110 switch (typeof v) {
1111 case 'undefined': return 'undefined';
1112 case 'boolean': return 'boolean';
1113 case 'number': return 'number';
1114 case 'string': return 'string';
1115 case 'symbol': return 'symbol';
1116 default:
1117 if (v === null) return 'null';
1118 if (v instanceof global.Symbol) return 'symbol';
1119 return 'object';
1120 }
1121 }
1122
1123 // 6.1.5.1 Well-Known Symbols
1124 var $$iterator = global.Symbol.iterator,
1125 $$match = global.Symbol.match,
1126 $$replace = global.Symbol.replace,
1127 $$search = global.Symbol.search,
1128 $$split = global.Symbol.split,
1129 $$toStringTag = global.Symbol.toStringTag;
1130
1131 //----------------------------------------
1132 // 7 Abstract Operations
1133 //----------------------------------------
1134
1135 //----------------------------------------
1136 // 7.1 Type Conversion
1137 //----------------------------------------
1138
1139 // 7.1.1 ToPrimitive ( input [, PreferredType] )
1140 // just use valueOf()
1141
1142 // 7.1.2 ToBoolean ( argument )
1143 // just use Boolean()
1144
1145 // 7.1.3 ToNumber ( argument )
1146 // just use Number()
1147
1148 // 7.1.4 ToInteger ( argument )
1149 function ToInteger(n) {
1150 n = Number(n);
1151 if ($isNaN(n)) return 0;
1152 if (n === 0 || n === Infinity || n === -Infinity) return n;
1153 return ((n < 0) ? -1 : 1) * floor(abs(n));
1154 }
1155
1156 // 7.1.5 ToInt32 ( argument )
1157 function ToInt32(v) { return v >> 0; }
1158
1159 // 7.1.6 ToUint32 ( argument )
1160 function ToUint32(v) { return v >>> 0; }
1161
1162 // 7.1.7 ToInt16 ( argument )
1163 function ToInt16(v) { return (v << 16) >> 16; }
1164
1165 // 7.1.8 ToUint16 ( argument )
1166 function ToUint16(v) { return v & 0xFFFF; }
1167
1168 // 7.1.9 ToInt8 ( argument )
1169 function ToInt8(v) { return (v << 24) >> 24; }
1170
1171 // 7.1.10 ToUint8 ( argument )
1172 function ToUint8(v) { return v & 0xFF; }
1173
1174 // 7.1.11 ToUint8Clamp ( argument )
1175 function ToUint8Clamp(argument) {
1176 var number = Number(argument);
1177 if ($isNaN(number)) return 0;
1178 if (number <= 0) return 0;
1179 if (number >= 255) return 255;
1180 var f = floor(number);
1181 if ((f + 0.5) < number) return f + 1;
1182 if (number < (f + 0.5)) return f;
1183 if (f % 2) return f + 1;
1184 return f;
1185 }
1186
1187 // 7.1.12 ToString ( argument )
1188 // just use String()
1189
1190 // 7.1.13 ToObject ( argument )
1191 function ToObject(v) {
1192 if (v === null || v === undefined) throw TypeError();
1193 return Object(v);
1194 }
1195
1196 // 7.1.14 ToPropertyKey ( argument )
1197 function ToPropertyKey(v) {
1198 return String(v);
1199 }
1200
1201 // 7.1.15 ToLength ( argument )
1202 function ToLength(v) {
1203 var len = ToInteger(v);
1204 if (len <= 0) return 0;
1205 if (len === Infinity) return 0x20000000000000 - 1; // 2^53-1
1206 return min(len, 0x20000000000000 - 1); // 2^53-1
1207 }
1208
1209 // 7.1.16 CanonicalNumericIndexString ( argument )
1210
1211 //----------------------------------------
1212 // 7.2 Testing and Comparison Operations
1213 //----------------------------------------
1214
1215 // 7.2.1 RequireObjectCoercible ( argument )
1216 // 7.2.2 IsArray ( argument )
1217
1218 // 7.2.3 IsCallable ( argument )
1219 function IsCallable(o) { return typeof o === 'function'; }
1220
1221 // 7.2.4 IsConstructor ( argument )
1222 function IsConstructor(o) {
1223 // Hacks for Safari 7 TypedArray XXXConstructor objects
1224 if (/Constructor/.test(Object.prototype.toString.call(o))) return true;
1225 if (/Function/.test(Object.prototype.toString.call(o))) return true;
1226 // TODO: Can this be improved on?
1227 return typeof o === 'function';
1228 }
1229
1230 // 7.2.5 IsExtensible (O)
1231 // 7.2.6 IsInteger ( argument )
1232
1233 // 7.2.7 IsPropertyKey ( argument )
1234 function IsPropertyKey(argument) {
1235 if (Type(argument) === 'string') return true;
1236 if (Type(argument) === 'symbol') return true;
1237 return false;
1238 }
1239
1240 // 7.2.8 IsRegExp ( argument )
1241 // 7.2.5 IsConstructor ( argument )
1242
1243 // 7.2.9 SameValue(x, y)
1244 function SameValue(x, y) {
1245 if (typeof x !== typeof y) return false;
1246 switch (typeof x) {
1247 case 'undefined':
1248 return true;
1249 case 'number':
1250 if (x !== x && y !== y) return true;
1251 if (x === 0 && y === 0) return 1/x === 1/y;
1252 return x === y;
1253 case 'boolean':
1254 case 'string':
1255 case 'object':
1256 default:
1257 return x === y;
1258 }
1259 }
1260
1261 // 7.2.10 SameValueZero(x, y)
1262 function SameValueZero(x, y) {
1263 if (typeof x !== typeof y) return false;
1264 switch (typeof x) {
1265 case 'undefined':
1266 return true;
1267 case 'number':
1268 if (x !== x && y !== y) return true;
1269 return x === y;
1270 case 'boolean':
1271 case 'string':
1272 case 'object':
1273 default:
1274 return x === y;
1275 }
1276 }
1277
1278 //----------------------------------------
1279 // 7.3 Operations on Objects
1280 //----------------------------------------
1281
1282 // 7.3.1 Get (O, P)
1283 // - just use o.p or o[p]
1284
1285 // 7.3.2 GetV (V, P)
1286 function GetV(v, p) {
1287 var o = ToObject(v);
1288 return o[p];
1289 }
1290
1291 // 7.3.3 Set (O, P, V, Throw)
1292 // - just use o.p = v or o[p] = v
1293
1294
1295
1296
1297 // 7.3.9 GetMethod (O, P)
1298 function GetMethod(o, p) {
1299 var func = GetV(o, p);
1300 if (func === undefined || func === null) return undefined;
1301 if (!IsCallable(func)) throw TypeError();
1302 return func;
1303 }
1304
1305 // 7.3.10 HasProperty (O, P)
1306 function HasProperty(o, p) {
1307 while (o) {
1308 if (Object.prototype.hasOwnProperty.call(o, p)) return true;
1309 if (Type(o) !== 'object') return false;
1310 o = Object.getPrototypeOf(o);
1311 }
1312 return false;
1313 }
1314
1315 // 7.3.11 HasOwnProperty (O, P)
1316 function HasOwnProperty(o, p) {
1317 return Object.prototype.hasOwnProperty.call(o, p);
1318 }
1319
1320 //----------------------------------------
1321 // 7.4 Operations on Iterator Objects
1322 //----------------------------------------
1323
1324 // 7.4.1 GetIterator ( obj, method )
1325 function GetIterator(obj, method) {
1326 if (arguments.length < 2)
1327 method = GetMethod(obj, $$iterator);
1328 var iterator = method.call(obj);
1329 if (Type(iterator) !== 'object') throw TypeError();
1330 return iterator;
1331 }
1332
1333 // 7.4.2 IteratorNext ( iterator, value )
1334 function IteratorNext(iterator, value) {
1335 if (arguments.length < 2)
1336 var result = iterator.next();
1337 else
1338 result = iterator.next(value);
1339 if (Type(result) !== 'object') throw TypeError();
1340 return result;
1341 }
1342
1343 // 7.4.3 IteratorComplete ( iterResult )
1344 function IteratorComplete(iterResult) {
1345 console.assert(Type(iterResult) === 'object');
1346 return Boolean(iterResult.done);
1347 }
1348
1349 // 7.4.4 IteratorValue ( iterResult )
1350 function IteratorValue(iterResult) {
1351 console.assert(Type(iterResult) === 'object');
1352 return iterResult.value;
1353 }
1354
1355 // 7.4.5 IteratorStep ( iterator )
1356 function IteratorStep( iterator, value ) {
1357 var result = IteratorNext(iterator, value);
1358 var done = result['done'];
1359 if (Boolean(done) === true) return false;
1360 return result;
1361 }
1362
1363 // 7.4.6 IteratorClose( iterator, completion )
1364 function IteratorClose( iterator, completion ) {
1365 console.assert(Type(iterator) === 'object');
1366 var _return = GetMethod(iterator, 'return');
1367 if (_return === undefined) return completion;
1368 try {
1369 var innerResult = _return[iterator]();
1370 } catch (result) {
1371 // TODO: If completion.[[type]] is throw, return completion
1372 return result;
1373 }
1374 if (Type(innerResult) !== 'object') throw TypeError();
1375 return completion;
1376 }
1377
1378 // 7.4.7 CreateIterResultObject (value, done)
1379 function CreateIterResultObject(value, done) {
1380 console.assert(Type(done) === 'boolean');
1381 var obj = {};
1382 obj["value"] = value;
1383 obj["done"] = done;
1384 return obj;
1385 }
1386
1387 // 7.4.8 CreateListIterator (list)
1388 // 7.4.8.1 ListIterator next( )
1389 // 7.4.9 CreateCompoundIterator ( iterator1, iterator2 )
1390 // 7.4.9.1 CompoundIterator next( )
1391
1392 //----------------------------------------
1393 // 8 Executable Code and Execution Contexts
1394 //----------------------------------------
1395
1396 //----------------------------------------
1397 // 8.4 Jobs and Job Queues
1398 //----------------------------------------
1399
1400 // 8.4.1 EnqueueJob ( queueName, job, arguments)
1401 function EnqueueJob(queueName, job, args) {
1402 var fn = function() { job.apply(undefined, args); };
1403 enqueue(fn);
1404 }
1405
1406 // 8.4.2 NextJob result
1407 function NextJob(result) {
1408 // no-op
1409 }
1410
1411 //----------------------------------------
1412 // 9 Ordinary and Exotic Objects Behaviors
1413 //----------------------------------------
1414
1415 // 9.1.11 [[Enumerate]] ()
1416 function Enumerate(obj) {
1417 var e = [];
1418 if (Object(obj) !== obj) return e;
1419 var visited = new Set;
1420 while (obj !== null) {
1421 Object.getOwnPropertyNames(obj).forEach(function(name) {
1422 if (!visited.has(name)) {
1423 var desc = Object.getOwnPropertyDescriptor(obj, name);
1424 if (desc) {
1425 visited.add(name);
1426 if (desc.enumerable) e.push(name);
1427 }
1428 }
1429 });
1430 obj = Object.getPrototypeOf(obj);
1431 }
1432 return e[$$iterator]();
1433 }
1434
1435 // 9.1.12 [[OwnPropertyKeys]] ( )
1436 function OwnPropertyKeys(o) {
1437 return Object.getOwnPropertyNames(o);
1438 }
1439
1440 // 9.1.13 ObjectCreate(proto, internalSlotsList)
1441 function ObjectCreate(proto, internalSlotsList) {
1442 return Object.create(proto, internalSlotsList);
1443 }
1444
1445 // ---------------------------------------
1446 // 19 Fundamental Objects
1447 // ---------------------------------------
1448
1449 // ---------------------------------------
1450 // 19.1 Object Objects
1451 // ---------------------------------------
1452
1453 // 19.1.1 The Object Constructor
1454 // 19.1.1.1 Object ( [ value ] )
1455 // 19.1.2 Properties of the Object Constructor
1456 // 19.1.2.1 Object.assign ( target, ...sources )
1457 define(
1458 Object, 'assign',
1459 function assign(target, /*...*/sources) {
1460 var to = ToObject(target);
1461 if (arguments.length < 2) return to;
1462
1463 var sourcesIndex = 1;
1464 while (sourcesIndex < arguments.length) {
1465 var nextSource = arguments[sourcesIndex++];
1466 if (nextSource === undefined || nextSource === null) {
1467 var keys = [];
1468 } else {
1469 var from = ToObject(nextSource);
1470 keys = OwnPropertyKeys(from);
1471 }
1472 for (var keysIndex = 0; keysIndex < keys.length; ++keysIndex) {
1473 var nextKey = keys[keysIndex];
1474 var desc = Object.getOwnPropertyDescriptor(from, nextKey);
1475 if (desc !== undefined && desc.enumerable) {
1476 var propValue = from[nextKey];
1477 to[nextKey] = propValue;
1478 }
1479 }
1480 }
1481 return to;
1482 });
1483
1484 // 19.1.2.2 Object.create ( O [ , Properties ] )
1485 // 19.1.2.3 Object.defineProperties ( O, Properties )
1486 // 19.1.2.4 Object.defineProperty ( O, P, Attributes )
1487 // 19.1.2.5 Object.freeze ( O )
1488 // 19.1.2.6 Object.getOwnPropertyDescriptor ( O, P )
1489
1490 (function() {
1491 var nativeSymbols = (typeof global.Symbol() === 'symbol'),
1492 $getOwnPropertyNames = Object.getOwnPropertyNames,
1493 $keys = Object.keys,
1494 $window_names = (typeof window === 'object' ? $getOwnPropertyNames(window) : []);
1495
1496 function isStringKey(k) { return !symbolForKey(k); }
1497
1498 // 19.1.2.7 Object.getOwnPropertyNames ( O )
1499 define(
1500 Object, 'getOwnPropertyNames',
1501 function getOwnPropertyNames(o) {
1502 if (Object.prototype.toString.call(o) === '[object Window]') {
1503 // Workaround for cross-realm calling by IE itself.
1504 // https://github.com/inexorabletash/polyfill/issues/96
1505 try {
1506 return $getOwnPropertyNames(o).filter(isStringKey);
1507 } catch (_) {
1508 return $window_names.slice();
1509 }
1510 }
1511 return $getOwnPropertyNames(o).filter(isStringKey);
1512 }, !nativeSymbols);
1513
1514 // 19.1.2.8 Object.getOwnPropertySymbols ( O )
1515 define(
1516 Object, 'getOwnPropertySymbols',
1517 function getOwnPropertySymbols(o) {
1518 return $getOwnPropertyNames(o).filter(symbolForKey).map(symbolForKey);
1519 }, !nativeSymbols);
1520
1521 // 19.1.2.14 Object.keys ( O )
1522 define(
1523 Object, 'keys',
1524 function keys(o) {
1525 return $keys(o).filter(isStringKey);
1526 }, !nativeSymbols);
1527 }());
1528
1529 // 19.1.2.9 Object.getPrototypeOf ( O )
1530 // 19.1.2.10 Object.is ( value1, value2 )
1531 define(
1532 Object, 'is',
1533 function is(value1, value2) {
1534 return SameValue(value1, value2);
1535 });
1536
1537 // 19.1.2.11 Object.isExtensible ( O )
1538 // 19.1.2.12 Object.isFrozen ( O )
1539 // 19.1.2.13 Object.isSealed ( O )
1540
1541 // 19.1.2.14 Object.keys ( O )
1542 // see above
1543
1544 // 19.1.2.15 Object.preventExtensions ( O )
1545 // 19.1.2.16 Object.prototype
1546 // 19.1.2.17 Object.seal ( O )
1547
1548 // 19.1.2.18 Object.setPrototypeOf ( O, proto )
1549 define(
1550 Object, 'setPrototypeOf',
1551 function setPrototypeOf(o, proto) {
1552 if (Type(o) !== 'object') throw TypeError();
1553 if (Type(proto) !== 'object' && Type(proto) !== 'null') throw TypeError();
1554 o.__proto__ = proto;
1555 return o;
1556 }
1557 );
1558
1559 // 19.1.3 Properties of the Object Prototype Object
1560 // 19.1.3.1 Object.prototype.constructor
1561 // 19.1.3.2 Object.prototype.hasOwnProperty ( V )
1562 // 19.1.3.3 Object.prototype.isPrototypeOf ( V )
1563 // 19.1.3.4 Object.prototype.propertyIsEnumerable ( V )
1564 // 19.1.3.5 Object.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
1565 // 19.1.3.6 Object.prototype.toString ( )
1566 hook(Object.prototype, 'toString',
1567 function() {
1568 var o = strict(this);
1569 if (o === Object(o) && $$toStringTag in o) {
1570 return '[object ' + o[$$toStringTag] + ']';
1571 }
1572 return undefined;
1573 });
1574
1575 // 19.1.3.7 Object.prototype.valueOf ( )
1576 // 19.1.4 Properties of Object Instances
1577
1578 // ---------------------------------------
1579 // 19.2 Function Objects
1580 // ---------------------------------------
1581
1582 // 19.2.1 The Function Constructor
1583 // 19.2.1.1 Function ( p1, p2, … , pn, body )
1584 // 19.2.2 Properties of the Function Constructor
1585 // 19.2.2.1 Function.length
1586 // 19.2.2.2 Function.prototype
1587 // 19.2.3 Properties of the Function Prototype Object
1588 // 19.2.3.1 Function.prototype.apply ( thisArg, argArray )
1589 // 19.2.3.2 Function.prototype.bind ( thisArg , ...args)
1590 // 19.2.3.3 Function.prototype.call (thisArg , ...args)
1591 // 19.2.3.4 Function.prototype.constructor
1592 // 19.2.3.5 Function.prototype.toString ( )
1593 // 19.2.3.6 Function.prototype[@@hasInstance] ( V )
1594 // 19.2.4 Function Instances
1595 // 19.2.4.1 length
1596 // 19.2.4.2 name
1597 // 19.2.4.3 prototype
1598
1599 // (No polyfillable changes from ES5)
1600
1601 // ---------------------------------------
1602 // 19.3 Boolean Objects
1603 // ---------------------------------------
1604
1605 // 19.3.1 The Boolean Constructor
1606 // 19.3.1.1 Boolean ( value )
1607 // 19.3.2 Properties of the Boolean Constructor
1608 // 19.3.2.1 Boolean.prototype
1609 // 19.3.3 Properties of the Boolean Prototype Object
1610 // 19.3.3.1 Boolean.prototype.constructor
1611 // 19.3.3.2 Boolean.prototype.toString ( )
1612 // 19.3.3.3 Boolean.prototype.valueOf ( )
1613 // 19.3.4 Properties of Boolean Instances
1614
1615 // (No polyfillable changes from ES5)
1616
1617 // ---------------------------------------
1618 // 19.4 Symbol Objects
1619 // ---------------------------------------
1620
1621 // Moved earlier in this script, so that other polyfills can depend on them.
1622
1623 // 19.4.3.4 Symbol.prototype [ @@toStringTag ]
1624 define(global.Symbol.prototype, global.Symbol.toStringTag, 'Symbol');
1625
1626 // ---------------------------------------
1627 // 19.5 Error Objects
1628 // ---------------------------------------
1629
1630 // 19.5.1 The Error Constructor
1631 // 19.5.1.1 Error ( message )
1632 // 19.5.1.2 new Error( ...argumentsList )
1633 // 19.5.2 Properties of the Error Constructor
1634 // 19.5.2.1 Error.prototype
1635 // 19.5.3 Properties of the Error Prototype Object
1636 // 19.5.3.1 Error.prototype.constructor
1637 // 19.5.3.2 Error.prototype.message
1638 // 19.5.3.3 Error.prototype.name
1639 // 19.5.3.4 Error.prototype.toString ( )
1640 // 19.5.4 Properties of Error Instances
1641 // 19.5.5 Native Error Types Used in This Standard
1642 // 19.5.5.1 EvalError
1643 // 19.5.5.2 RangeError
1644 // 19.5.5.3 ReferenceError
1645 // 19.5.5.4 SyntaxError
1646 // 19.5.5.5 TypeError
1647 // 19.5.5.6 URIError
1648 // 19.5.6 NativeError Object Structure
1649 // 19.5.6.1 NativeError Constructors
1650 // 19.5.6.1.1 NativeError ( message )
1651 // 19.5.6.1.2 new NativeError ( ...argumentsList )
1652 // 19.5.6.2 Properties of the NativeError Constructors
1653 // 19.5.6.2.1 NativeError.prototype
1654 // 19.5.6.3 Properties of the NativeError Prototype Objects
1655 // 19.5.6.4 Properties of NativeError Instances
1656
1657 // (No polyfillable changes from ES5)
1658
1659 // ---------------------------------------
1660 // 20 Numbers and Dates
1661 // ---------------------------------------
1662
1663 // ---------------------------------------
1664 // 20.1 Number Objects
1665 // ---------------------------------------
1666
1667 // 20.1.1 The Number Constructor
1668 // 20.1.1.1 Number ( [ value ] )
1669 // 20.1.1.2 new Number ( ...argumentsList )
1670 // 20.1.2 Properties of the Number Constructor
1671
1672 // 20.1.2.1 Number.EPSILON
1673 define(
1674 Number, 'EPSILON',
1675 (function () {
1676 var next, result;
1677 for (next = 1; 1 + next !== 1; next = next / 2)
1678 result = next;
1679 return result;
1680 }()));
1681
1682 // 20.1.2.2 Number.isFinite ( number )
1683 define(
1684 Number, 'isFinite',
1685 function isFinite(number) {
1686 if (Type(number) !== 'number') return false;
1687 if (number !== number || number === +Infinity || number === -Infinity) return false;
1688 return true;
1689 });
1690
1691 // 20.1.2.3 Number.isInteger ( number )
1692 define(
1693 Number, 'isInteger',
1694 function isInteger(number) {
1695 if (Type(number) !== 'number') return false;
1696 if (number !== number || number === +Infinity || number === -Infinity) return false;
1697 var integer = ToInteger(number);
1698 if (integer !== number) return false;
1699 return true;
1700 });
1701
1702 // 20.1.2.4 Number.isNaN ( number )
1703 define(
1704 Number, 'isNaN',
1705 function isNaN(number) {
1706 if (Type(number) !== 'number') return false;
1707 if (number !== number) return true;
1708 return false;
1709 });
1710
1711 // 20.1.2.5 Number.isSafeInteger ( number )
1712 define(
1713 Number, 'isSafeInteger',
1714 function isSafeInteger(number) {
1715 if (Type(number) !== 'number') return false;
1716 if (number !== number || number === +Infinity || number === -Infinity) return false;
1717 var integer = ToInteger(number);
1718 if (integer !== number) return false;
1719 if (abs(integer) <= (0x20000000000000 - 1)) // 2^53-1
1720 return true;
1721 return false;
1722 });
1723
1724 // 20.1.2.6 Number.MAX_SAFE_INTEGER
1725 define(
1726 Number, 'MAX_SAFE_INTEGER',
1727 9007199254740991); // 2^53-1
1728
1729 // 20.1.2.7 Number.MAX_VALUE
1730
1731 // 20.1.2.8 Number.MIN_SAFE_INTEGER
1732 define(
1733 Number, 'MIN_SAFE_INTEGER',
1734 -9007199254740991); // -2^53+1
1735
1736 // 20.1.2.9 Number.MIN_VALUE
1737 // 20.1.2.10 Number.NaN
1738 // 20.1.2.11 Number.NEGATIVE_INFINITY
1739
1740 // 20.1.2.12 Number.parseFloat ( string )
1741 define(Number, 'parseFloat', $parseFloat);
1742
1743 // 20.1.2.13 Number.parseInt ( string, radix )
1744 define(Number, 'parseInt', $parseInt);
1745
1746 // 20.1.2.14 Number.POSITIVE_INFINITY
1747 // 20.1.2.15 Number.prototype
1748
1749 // 20.1.3 Properties of the Number Prototype Object
1750 // 20.1.3.1 Number.prototype.constructor
1751 // 20.1.3.2 Number.prototype.toExponential ( fractionDigits )
1752 // 20.1.3.3 Number.prototype.toFixed ( fractionDigits )
1753 // 20.1.3.4 Number.prototype.toLocaleString( [ reserved1 [ , reserved2 ] ])
1754 // 20.1.3.5 Number.prototype.toPrecision ( precision )
1755 // 20.1.3.6 Number.prototype.toString ( [ radix ] )
1756 // 20.1.3.7 Number.prototype.valueOf ( )
1757 // 20.1.4 Properties of Number Instances
1758
1759 // ---------------------------------------
1760 // 20.2 The Math Object
1761 // ---------------------------------------
1762
1763 // 20.2.1 Value Properties of the Math Object
1764 // 20.2.1.1 Math.E
1765 // 20.2.1.2 Math.LN10
1766 // 20.2.1.3 Math.LN2
1767 // 20.2.1.4 Math.LOG10E
1768 // 20.2.1.5 Math.LOG2E
1769 // 20.2.1.6 Math.PI
1770 // 20.2.1.7 Math.SQRT1_2
1771 // 20.2.1.8 Math.SQRT2
1772
1773 // 20.2.1.9 Math [ @@toStringTag ]
1774 define(Math, $$toStringTag, 'Math');
1775
1776 // 20.2.2 Function Properties of the Math Object
1777 // 20.2.2.1 Math.abs ( x )
1778 // 20.2.2.2 Math.acos ( x )
1779
1780 // 20.2.2.3 Math.acosh(x)
1781 define(
1782 Math, 'acosh',
1783 function acosh(x) {
1784 x = Number(x);
1785 return log(x + sqrt(x * x - 1));
1786 });
1787
1788 // 20.2.2.4 Math.asin ( x )
1789
1790 // 20.2.2.5 Math.asinh( x )
1791 define(
1792 Math, 'asinh',
1793 function asinh(x) {
1794 x = Number(x);
1795 if (SameValue(x, -0)) {
1796 return x;
1797 }
1798 var s = sqrt(x * x + 1);
1799 return (s === -x) ? log(0) : log(x + s);
1800 });
1801
1802 // 20.2.2.6 Math.atan ( x )
1803
1804 // 20.2.2.7 Math.atanh( x )
1805 define(
1806 Math, 'atanh',
1807 function atanh(x) {
1808 x = Number(x);
1809 return (x === 0) ? x : log((1 + x) / (1 - x)) / 2;
1810 });
1811
1812 // 20.2.2.8 Math.atan2 ( y, x )
1813
1814 // 20.2.2.9 Math.cbrt ( x )
1815 define(
1816 Math, 'cbrt',
1817 function cbrt(x) {
1818 x = Number(x);
1819 if ($isNaN(x/x)) {
1820 return x;
1821 }
1822 var r = pow(abs(x), 1/3);
1823 var t = x/r/r;
1824 return r + (r * (t-r) / (2*r + t));
1825 });
1826
1827 // 20.2.2.10 Math.ceil ( x )
1828
1829 // 20.2.2.11 Math.clz32 ( x )
1830 define(
1831 Math, 'clz32',
1832 function clz32(x) {
1833 function clz8(x) {
1834 return (x & 0xf0) ? (x & 0x80 ? 0 : x & 0x40 ? 1 : x & 0x20 ? 2 : 3) :
1835 (x & 0x08 ? 4 : x & 0x04 ? 5 : x & 0x02 ? 6 : x & 0x01 ? 7 : 8);
1836 }
1837 x = ToUint32(x);
1838 return x & 0xff000000 ? clz8(x >> 24) :
1839 x & 0xff0000 ? clz8(x >> 16) + 8 :
1840 x & 0xff00 ? clz8(x >> 8) + 16 : clz8(x) + 24;
1841 });
1842
1843
1844
1845 // 20.2.2.12 Math.cos ( x )
1846
1847 // 20.2.2.13 Math.cosh ( x )
1848 define(
1849 Math, 'cosh',
1850 function cosh(x) {
1851 x = Number(x);
1852 return (pow(E, x) + pow(E, -x)) / 2;
1853 });
1854
1855 // 20.2.2.14 Math.exp ( x )
1856
1857 // 20.2.2.15 Math.expm1 ( x )
1858 define(
1859 Math, 'expm1',
1860 function expm1(x) {
1861 x = Number(x);
1862 // from: http://www.johndcook.com/cpp_log1p.html
1863 if (SameValue(x, -0)) {
1864 return -0;
1865 } else if (abs(x) < 1e-5) {
1866 return x + 0.5 * x * x; // two terms of Taylor expansion
1867 } else {
1868 return exp(x) - 1;
1869 }
1870 });
1871
1872 // 20.2.2.16 Math.floor ( x )
1873
1874 // 20.2.2.17 Math.fround ( x )
1875 define(
1876 Math, 'fround',
1877 function fround(x) {
1878 if ($isNaN(x)) {
1879 return NaN;
1880 }
1881 if (1/x === +Infinity || 1/x === -Infinity || x === +Infinity || x === -Infinity) {
1882 return x;
1883 }
1884 return (new Float32Array([x]))[0];
1885 });
1886
1887 // 20.2.2.18 Math.hypot ( value1 [, value2 [ ... ] ] )
1888 define(
1889 Math, 'hypot',
1890 function hypot() {
1891 var values = [];
1892 var m = 0, sawNaN = false;
1893 for (var i = 0; i < arguments.length; ++i) {
1894 var n = abs(Number(arguments[i]));
1895 if (n === Infinity) return n;
1896 if (n !== n) sawNaN = true;
1897 if (n > m) m = n;
1898 values[i] = n;
1899 }
1900 if (sawNaN) return NaN;
1901 if (m === 0) return +0;
1902 var sum = +0;
1903 for (i = 0; i < values.length; ++i) {
1904 var r = values[i] / m;
1905 sum = sum + r * r;
1906 }
1907 return m * sqrt(sum);
1908 });
1909
1910 // 20.2.2.19 Math.imul ( x, y )
1911 define(
1912 Math, 'imul',
1913 function imul(x, y) {
1914 var a = ToUint32(x);
1915 var b = ToUint32(y);
1916 // (slow but accurate)
1917 var ah = (a >>> 16) & 0xffff;
1918 var al = a & 0xffff;
1919 var bh = (b >>> 16) & 0xffff;
1920 var bl = b & 0xffff;
1921 return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0);
1922 }, ('imul' in Math && Math.imul(1, 0x80000000) === 0) // Safari 7 bug
1923 );
1924
1925 // 20.2.2.20 Math.log ( x )
1926
1927 // 20.2.2.21 Math.log1p ( x )
1928 define(
1929 Math, 'log1p',
1930 function log1p(x) {
1931 x = Number(x);
1932 // from: http://www.johndcook.com/cpp_expm1.html
1933 if (x < -1) {
1934 return NaN;
1935 } else if (SameValue(x, -0)) {
1936 return -0;
1937 } else if (abs(x) > 1e-4) {
1938 return log(1 + x);
1939 } else {
1940 return (-0.5 * x + 1) * x;
1941 }
1942 });
1943
1944 // 20.2.2.22 Math.log10 ( x )
1945 define(
1946 Math, 'log10',
1947 function log10(x) {
1948 x = Number(x);
1949 return log(x) * LOG10E;
1950 });
1951
1952 // 20.2.2.23 Math.log2 ( x )
1953 define(
1954 Math, 'log2',
1955 function log2(x) {
1956 x = Number(x);
1957 return log(x) * LOG2E;
1958 });
1959
1960 // 20.2.2.24 Math.max ( value1, value2 , ...values )
1961 // 20.2.2.25 Math.min ( value1, value2 , ...values )
1962 // 20.2.2.26 Math.pow ( x, y )
1963 // 20.2.2.27 Math.random ( )
1964 // 20.2.2.28 Math.round ( x )
1965
1966 // 20.2.2.29 Math.sign(x)
1967 define(
1968 Math, 'sign',
1969 function sign(x) {
1970 x = Number(x);
1971 return x < 0 ? -1 : x > 0 ? 1 : x;
1972 });
1973
1974 // 20.2.2.30 Math.sin ( x )
1975
1976 // 20.2.2.31 Math.sinh( x )
1977 define(
1978 Math, 'sinh',
1979 function sinh(x) {
1980 x = Number(x);
1981 return SameValue(x, -0) ? x : (pow(E, x) - pow(E, -x)) / 2;
1982 });
1983
1984 // 20.2.2.32 Math.sqrt ( x )
1985 // 20.2.2.33 Math.tan ( x )
1986
1987 // 20.2.2.34 Math.tanh ( x )
1988 define(
1989 Math, 'tanh',
1990 function tanh(x) {
1991 x = Number(x);
1992 var n = pow(E, 2 * x) - 1,
1993 d = pow(E, 2 * x) + 1;
1994 if (SameValue(x, -0))
1995 return x;
1996 return (n === d) ? 1 : n / d; // Handle Infinity/Infinity
1997 });
1998
1999 // 20.2.2.35 Math.trunc ( x )
2000 define(
2001 Math, 'trunc',
2002 function trunc(x) {
2003 x = Number(x);
2004 return $isNaN(x) ? NaN :
2005 x < 0 ? ceil(x) : floor(x);
2006 });
2007
2008 // ---------------------------------------
2009 // 20.3 Date Objects
2010 // ---------------------------------------
2011
2012 // 20.3.1 Overview of Date Objects and Definitions of Abstract Operations
2013 // 20.3.1.1 Time Values and Time Range
2014 // 20.3.1.2 Day Number and Time within Day
2015 // 20.3.1.3 Year Number
2016 // 20.3.1.4 Month Number
2017 // 20.3.1.5 Date Number
2018 // 20.3.1.6 Week Day
2019 // 20.3.1.7 Local Time Zone Adjustment
2020 // 20.3.1.8 Daylight Saving Time Adjustment
2021 // 20.3.1.9 Local Time
2022 // 20.3.1.10 Hours, Minutes, Second, and Milliseconds
2023 // 20.3.1.11 MakeTime (hour, min, sec, ms)
2024 // 20.3.1.12 MakeDay (year, month, date)
2025 // 20.3.1.13 MakeDate (day, time)
2026 // 20.3.1.14 TimeClip (time)
2027 // 20.3.1.15 Date Time String Format
2028 // 20.3.1.15.1 Extended years
2029 // 20.3.2 The Date Constructor
2030 // 20.3.2.1 Date ( year, month [, date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
2031 // 20.3.2.2 Date ( value )
2032 // 20.3.2.3 Date ( )
2033 // 20.3.3 Properties of the Date Constructor
2034 // 20.3.3.1 Date.now ( )
2035 // 20.3.3.2 Date.parse (string)
2036 // 20.3.3.3 Date.prototype
2037 // 20.3.3.4 Date.UTC ( year, month [ , date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
2038 // 20.3.4 Properties of the Date Prototype Object
2039 // 20.3.4.1 Date.prototype.constructor
2040 // 20.3.4.2 Date.prototype.getDate ( )
2041 // 20.3.4.3 Date.prototype.getDay ( )
2042 // 20.3.4.4 Date.prototype.getFullYear ( )
2043 // 20.3.4.5 Date.prototype.getHours ( )
2044 // 20.3.4.6 Date.prototype.getMilliseconds ( )
2045 // 20.3.4.7 Date.prototype.getMinutes ( )
2046 // 20.3.4.8 Date.prototype.getMonth ( )
2047 // 20.3.4.9 Date.prototype.getSeconds ( )
2048 // 20.3.4.10 Date.prototype.getTime ( )
2049 // 20.3.4.11 Date.prototype.getTimezoneOffset ( )
2050 // 20.3.4.12 Date.prototype.getUTCDate ( )
2051 // 20.3.4.13 Date.prototype.getUTCDay ( )
2052 // 20.3.4.14 Date.prototype.getUTCFullYear ( )
2053 // 20.3.4.15 Date.prototype.getUTCHours ( )
2054 // 20.3.4.16 Date.prototype.getUTCMilliseconds ( )
2055 // 20.3.4.17 Date.prototype.getUTCMinutes ( )
2056 // 20.3.4.18 Date.prototype.getUTCMonth ( )
2057 // 20.3.4.19 Date.prototype.getUTCSeconds ( )
2058 // 20.3.4.20 Date.prototype.setDate ( date )
2059 // 20.3.4.21 Date.prototype.setFullYear ( year [ , month [ , date ] ] )
2060 // 20.3.4.22 Date.prototype.setHours ( hour [ , min [ , sec [ , ms ] ] ] )
2061 // 20.3.4.23 Date.prototype.setMilliseconds ( ms )
2062 // 20.3.4.24 Date.prototype.setMinutes ( min [ , sec [ , ms ] ] )
2063 // 20.3.4.25 Date.prototype.setMonth ( month [ , date ] )
2064 // 20.3.4.26 Date.prototype.setSeconds ( sec [ , ms ] )
2065 // 20.3.4.27 Date.prototype.setTime ( time )
2066 // 20.3.4.28 Date.prototype.setUTCDate ( date )
2067 // 20.3.4.29 Date.prototype.setUTCFullYear ( year [ , month [ , date ] ] )
2068 // 20.3.4.30 Date.prototype.setUTCHours ( hour [ , min [ , sec [ , ms ] ] ] )
2069 // 20.3.4.31 Date.prototype.setUTCMilliseconds ( ms )
2070 // 20.3.4.32 Date.prototype.setUTCMinutes ( min [ , sec [, ms ] ] )
2071 // 20.3.4.33 Date.prototype.setUTCMonth ( month [ , date ] )
2072 // 20.3.4.34 Date.prototype.setUTCSeconds ( sec [ , ms ] )
2073 // 20.3.4.35 Date.prototype.toDateString ( )
2074 // 20.3.4.36 Date.prototype.toISOString ( )
2075 // 20.3.4.37 Date.prototype.toJSON ( key )
2076 // 20.3.4.38 Date.prototype.toLocaleDateString ( [ reserved1 [ , reserved2 ] ] )
2077 // 20.3.4.39 Date.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
2078 // 20.3.4.40 Date.prototype.toLocaleTimeString ( [ reserved1 [ , reserved2 ] ] )
2079 // 20.3.4.41 Date.prototype.toString ( )
2080 // 20.3.4.42 Date.prototype.toTimeString ( )
2081 // 20.3.4.43 Date.prototype.toUTCString ( )
2082 // 20.3.4.44 Date.prototype.valueOf ( )
2083 // 20.3.4.45 Date.prototype [ @@toPrimitive ] ( hint )
2084 // 20.3.5 Properties of Date Instances
2085
2086 // (No polyfillable changes from ES5)
2087
2088 // ---------------------------------------
2089 // 21 Text Processing
2090 // ---------------------------------------
2091
2092 var string_regexp_dispatch = (function() {
2093 var faux = {}, secret = Symbol();
2094 faux[Symbol.match] = function() { return secret; };
2095 return ("").match(faux) === secret;
2096 }());
2097
2098 // 21.1 String Objects
2099 // 21.1.1 The String Constructor
2100 // 21.1.1.1 String ( value )
2101 // 21.1.2 Properties of the String Constructor
2102 // 21.1.2.1 String.fromCharCode ( ...codeUnits )
2103
2104 // 21.1.2.2 String.fromCodePoint ( ...codePoints )
2105 define(
2106 String, 'fromCodePoint',
2107 function fromCodePoint(/*...codePoints*/) {
2108 var codePoints = arguments,
2109 length = codePoints.length,
2110 elements = [],
2111 nextIndex = 0;
2112 while (nextIndex < length) {
2113 var next = codePoints[nextIndex];
2114 var nextCP = Number(next);
2115 if (!SameValue(nextCP, ToInteger(nextCP)) ||
2116 nextCP < 0 || nextCP > 0x10FFFF) {
2117 throw RangeError('Invalid code point ' + nextCP);
2118 }
2119 if (nextCP < 0x10000) {
2120 elements.push(String.fromCharCode(nextCP));
2121 } else {
2122 nextCP -= 0x10000;
2123 elements.push(String.fromCharCode((nextCP >> 10) + 0xD800));
2124 elements.push(String.fromCharCode((nextCP % 0x400) + 0xDC00));
2125 }
2126 nextIndex += 1;
2127 }
2128 return elements.join('');
2129 });
2130
2131 // 21.1.2.3 String.prototype
2132
2133 // 21.1.2.4 String.raw ( template , ...substitutions )
2134 define(
2135 String, 'raw',
2136 function raw(template /*, ...substitutions*/) {
2137 var substitutions = [].slice.call(arguments, 1);
2138
2139 var cooked = Object(template);
2140 var rawValue = cooked['raw'];
2141 var raw = Object(rawValue);
2142 var len = raw['length'];
2143 var literalSegments = ToLength(len);
2144 if (literalSegments <= 0) return '';
2145 var stringElements = [];
2146 var nextIndex = 0;
2147 while (true) {
2148 var next = raw[nextIndex];
2149 var nextSeg = String(next);
2150 stringElements.push(nextSeg);
2151 if (nextIndex + 1 === literalSegments)
2152 return stringElements.join('');
2153 next = substitutions[nextIndex];
2154 var nextSub = String(next);
2155 stringElements.push(nextSub);
2156 nextIndex = nextIndex + 1;
2157 }
2158 });
2159
2160 // See https://githib.com/inexorabletash/uate for a more useful version.
2161
2162 // 21.1.3 Properties of the String Prototype Object
2163 // 21.1.3.1 String.prototype.charAt ( pos )
2164 // 21.1.3.2 String.prototype.charCodeAt ( pos )
2165
2166 // 21.1.3.3 String.prototype.codePointAt ( pos )
2167 define(
2168 String.prototype, 'codePointAt',
2169 function codePointAt(pos) {
2170 var o = strict(this);
2171 var s = String(o);
2172 var position = ToInteger(pos);
2173 var size = s.length;
2174 if (position < 0 || position >= size) return undefined;
2175 var first = s.charCodeAt(position);
2176 if (first < 0xD800 || first > 0xDBFF || position + 1 === size) return first;
2177 var second = s.charCodeAt(position + 1);
2178 if (second < 0xDC00 || second > 0xDFFF) return first;
2179 return ((first - 0xD800) * 1024) + (second - 0xDC00) + 0x10000;
2180 });
2181
2182 // 21.1.3.4 String.prototype.concat ( ...args )
2183 // 21.1.3.5 String.prototype.constructor
2184
2185 // 21.1.3.6 String.prototype.endsWith ( searchString [ , endPosition] )
2186 define(
2187 String.prototype, 'endsWith',
2188 function endsWith(searchString) {
2189 var endPosition = arguments[1];
2190
2191 var o = strict(this);
2192 var s = String(o);
2193 var searchStr = String(searchString);
2194 var len = s.length;
2195 var pos = (endPosition === undefined) ? len : ToInteger(endPosition);
2196 var end = min(max(pos, 0), len);
2197 var searchLength = searchStr.length;
2198 var start = end - searchLength;
2199 if (start < 0) return false;
2200 if (s.substring(start, start + searchLength) === searchStr) return true;
2201 return false;
2202 });
2203
2204 // 21.1.3.7 String.prototype.includes ( searchString [ , position ] )
2205 define(
2206 String.prototype, 'includes',
2207 function includes(searchString) {
2208 var position = arguments[1];
2209
2210 var o = strict(this);
2211 var s = String(o);
2212 var searchStr = String(searchString);
2213 var pos = ToInteger(position);
2214 var len = s.length;
2215 var start = min(max(pos, 0), len);
2216 return s.indexOf(searchStr, start) !== -1;
2217 });
2218
2219 // 21.1.3.8 String.prototype.indexOf ( searchString [ , position ] )
2220 // 21.1.3.9 String.prototype.lastIndexOf ( searchString [ , position ] )
2221 // 21.1.3.10 String.prototype.localeCompare ( that [, reserved1 [ , reserved2 ] ] )
2222 // 21.1.3.11 String.prototype.match ( regexp )
2223 define(
2224 String.prototype, 'match',
2225 function match(regexp) {
2226 var o = strict(this);
2227 var s = String(o);
2228 if (HasProperty(regexp, $$match)) var rx = regexp;
2229 else rx = new RegExp(regexp);
2230 return rx[$$match](s);
2231 }, !string_regexp_dispatch);
2232
2233 // 21.1.3.12 String.prototype.normalize ( [ form ] )
2234
2235 // Not practical due to table sizes; if needed, pull in:
2236 // https://github.com/walling/unorm/
2237
2238 // 21.1.3.13 String.prototype.repeat ( count )
2239 define(
2240 String.prototype, 'repeat',
2241 function repeat(count) {
2242 var o = strict(this);
2243 var s = String(o);
2244 var n = ToInteger(count);
2245 if (n < 0) throw RangeError();
2246 if (n === Infinity) throw RangeError();
2247 var t = new Array(n + 1).join(s);
2248 return t;
2249 });
2250
2251 // 21.1.3.14 String.prototype.replace (searchValue, replaceValue )
2252 define(
2253 String.prototype, 'replace',
2254 function replace(searchValue, replaceValue) {
2255 var o = strict(this);
2256 if (HasProperty(searchValue, $$replace))
2257 return searchValue[$$replace](o, replaceValue);
2258 return orig_replace.call(o, searchValue, replaceValue);
2259 }, !string_regexp_dispatch);
2260
2261 // 21.1.3.15 String.prototype.search ( regexp )
2262 define(
2263 String.prototype, 'search',
2264 function search(regexp) {
2265 var o = strict(this);
2266 var string = String(o);
2267 if (HasProperty(regexp, $$search)) var rx = regexp;
2268 else rx = new RegExp(regexp);
2269 return rx[$$search](string);
2270 }, !string_regexp_dispatch);
2271
2272 // 21.1.3.16 String.prototype.slice ( start, end )
2273 // 21.1.3.17 String.prototype.split ( separator, limit )
2274 define(
2275 String.prototype, 'split',
2276 function split(separator, limit) {
2277 var o = strict(this);
2278 if (HasProperty(separator, $$split))
2279 return separator[$$split](o, limit);
2280 return orig_split.call(o, separator, limit);
2281 }, !string_regexp_dispatch);
2282
2283 // 21.1.3.18 String.prototype.startsWith ( searchString [, position ] )
2284 define(
2285 String.prototype, 'startsWith',
2286 function startsWith(searchString) {
2287 var position = arguments[1];
2288
2289 var o = strict(this);
2290 var s = String(o);
2291 var searchStr = String(searchString);
2292 var pos = ToInteger(position);
2293 var len = s.length;
2294 var start = min(max(pos, 0), len);
2295 var searchLength = searchStr.length;
2296 if (searchLength + start > len) return false;
2297 if (s.substring(start, start + searchLength) === searchStr) return true;
2298 return false;
2299 });
2300
2301 // 21.1.3.19 String.prototype.substring ( start, end )
2302 // 21.1.3.20 String.prototype.toLocaleLowerCase ( [ reserved1 [ , reserved2 ] ] )
2303 // 21.1.3.21 String.prototype.toLocaleUpperCase ([ reserved1 [ , reserved2 ] ] )
2304 // 21.1.3.22 String.prototype.toLowerCase ( )
2305 // 21.1.3.23 String.prototype.toString ( )
2306 // 21.1.3.24 String.prototype.toUpperCase ( )
2307 // 21.1.3.25 String.prototype.trim ( )
2308 // 21.1.3.26 String.prototype.valueOf ( )
2309
2310 // 21.1.3.27 String.prototype [ @@iterator ]( )
2311 define(
2312 String.prototype, $$iterator,
2313 function entries() {
2314 return CreateStringIterator(this, 'value');
2315 });
2316
2317 // 21.1.4 Properties of String Instances
2318 // 21.1.4.1 length
2319
2320 // 21.1.5 String Iterator Objects
2321 /** @constructor */
2322 function StringIterator() {}
2323
2324 // 21.1.5.1 CreateStringIterator Abstract Operation
2325 function CreateStringIterator(string, kind) {
2326 var s = String(string);
2327 var iterator = new StringIterator;
2328 set_internal(iterator, '[[IteratedString]]', s);
2329 set_internal(iterator, '[[StringIteratorNextIndex]]', 0);
2330 set_internal(iterator, '[[StringIterationKind]]', kind);
2331 return iterator;
2332 }
2333
2334 // 21.1.5.2 The %StringIteratorPrototype% Object
2335 var $StringIteratorPrototype$ = Object.create($IteratorPrototype$);
2336 StringIterator.prototype = $StringIteratorPrototype$;
2337
2338 // 21.1.5.2.1 %StringIteratorPrototype%.next ( )
2339 define(
2340 $StringIteratorPrototype$, 'next',
2341 function next() {
2342 var o = ToObject(this);
2343 var s = String(o['[[IteratedString]]']),
2344 index = o['[[StringIteratorNextIndex]]'],
2345 len = s.length;
2346 if (index >= len) {
2347 set_internal(o, '[[StringIteratorNextIndex]]', Infinity);
2348 return CreateIterResultObject(undefined, true);
2349 }
2350 var cp = s.codePointAt(index);
2351 set_internal(o, '[[StringIteratorNextIndex]]', index + (cp > 0xFFFF ? 2 : 1));
2352 return CreateIterResultObject(String.fromCodePoint(cp), false);
2353 });
2354
2355 // 21.1.5.2.2 %StringIteratorPrototype% [ @@toStringTag ]
2356 define($StringIteratorPrototype$, $$toStringTag, 'String Iterator');
2357
2358 // 21.1.5.3 Properties of String Iterator Instances
2359
2360 // ---------------------------------------
2361 // 21.2 RegExp (Regular Expression) Objects
2362 // ---------------------------------------
2363
2364 // 21.2.1 Patterns
2365 // 21.2.2 Pattern Semantics
2366 // 21.2.2.1 Notation
2367 // 21.2.2.2 Pattern
2368 // 21.2.2.3 Disjunction
2369 // 21.2.2.4 Alternative
2370 // 21.2.2.5 Term
2371 // 21.2.2.6 Assertion
2372 // 21.2.2.7 Quantifier
2373 // 21.2.2.8 Atom
2374 // 21.2.2.9 AtomEscape
2375 // 21.2.2.10 CharacterEscape
2376 // 21.2.2.11 DecimalEscape
2377 // 21.2.2.12 CharacterClassEscape
2378 // 21.2.2.13 CharacterClass
2379 // 21.2.2.14 ClassRanges
2380 // 21.2.2.15 NonemptyClassRanges
2381 // 21.2.2.16 NonemptyClassRangesNoDash
2382 // 21.2.2.17 ClassAtom
2383 // 21.2.2.18 ClassAtomNoDash
2384 // 21.2.2.19 ClassEscape
2385 // 21.2.3 The RegExp Constructor
2386 // 21.2.3.1 RegExp ( pattern, flags )
2387 // 21.2.3.2 new RegExp( ...argumentsList )
2388 // 21.2.3.3 Abstract Operations for the RegExp Constructor
2389 // 21.2.4 Properties of the RegExp Constructor
2390 // 21.2.4.1 RegExp.prototype
2391 // 21.2.5 Properties of the RegExp Prototype Object
2392 // 21.2.5.1 RegExp.prototype.constructor
2393 // 21.2.5.2 RegExp.prototype.exec ( string )
2394
2395 // 21.2.5.3 get RegExp.prototype.flags
2396 if (!('flags' in RegExp.prototype)) {
2397 Object.defineProperty(
2398 RegExp.prototype, 'flags', {
2399 get: function() {
2400 var s = String(this);
2401 return s.substring(s.lastIndexOf('/') + 1);
2402 }
2403 });
2404 }
2405
2406 // 21.2.5.4 get RegExp.prototype.global
2407 // 21.2.5.5 get RegExp.prototype.ignoreCase
2408
2409 // 21.2.5.6 RegExp.prototype [ @@match ] ( string )
2410 define(RegExp.prototype, $$match, function(string) {
2411 var o = strict(this);
2412 return orig_match.call(string, o);
2413 });
2414
2415 // 21.2.5.7 get RegExp.prototype.multiline
2416
2417 // 21.2.5.8 RegExp.prototype [ @@replace ] ( string, replaceValue )
2418 define(RegExp.prototype, $$replace, function(string, replaceValue) {
2419 var o = strict(this);
2420 return orig_replace.call(string, o, replaceValue);
2421 });
2422
2423 // 21.2.5.9 RegExp.prototype [ @@search ] ( string )
2424 define(RegExp.prototype, $$search, function(string) {
2425 var o = strict(this);
2426 return orig_search.call(string, o);
2427 });
2428
2429 // 21.2.5.10 get RegExp.prototype.source
2430
2431 // 21.2.5.11 RegExp.prototype [ @@split ] ( string, limit )
2432 define(RegExp.prototype, $$split, function(string, limit) {
2433 var o = strict(this);
2434 return orig_split.call(string, o, limit);
2435 });
2436
2437 // 21.2.5.12 get RegExp.prototype.sticky
2438 // 21.2.5.13 RegExp.prototype.test( S )
2439 // 21.2.5.14 RegExp.prototype.toString ( )
2440 // 21.2.5.15 get RegExp.prototype.unicode
2441
2442 // 21.2.6 Properties of RegExp Instances
2443 // 21.2.6.1 lastIndex
2444
2445 // (No polyfillable changes from ES5)
2446
2447 // ---------------------------------------
2448 // 22 Indexed Collections
2449 // ---------------------------------------
2450
2451 // ---------------------------------------
2452 // 22.1 Array Objects
2453 // ---------------------------------------
2454
2455 // 22.1.1 The Array Constructor
2456 // 22.1.1.1 Array ( )
2457 // 22.1.1.2 Array (len)
2458 // 22.1.1.3 Array (...items )
2459
2460 // 22.1.2 Properties of the Array Constructor
2461
2462 // 22.1.2.1 Array.from ( items [ , mapfn [ , thisArg ] ] )
2463 define(
2464 Array, 'from',
2465 function from(items) {
2466 var mapfn = arguments[1];
2467 var thisArg = arguments[2];
2468
2469 var c = strict(this);
2470 if (mapfn === undefined) {
2471 var mapping = false;
2472 } else {
2473 if (!IsCallable(mapfn)) throw TypeError();
2474 var t = thisArg;
2475 mapping = true;
2476 }
2477 var usingIterator = GetMethod(items, $$iterator);
2478 if (usingIterator !== undefined) {
2479 if (IsConstructor(c)) {
2480 var a = new c();
2481 } else {
2482 a = new Array(0);
2483 }
2484 var iterator = GetIterator(items, usingIterator);
2485 var k = 0;
2486 while (true) {
2487 var next = IteratorStep(iterator);
2488 if (next === false) {
2489 a.length = k;
2490 return a;
2491 }
2492 var nextValue = IteratorValue(next);
2493 if (mapping)
2494 var mappedValue = mapfn.call(t, nextValue);
2495 else
2496 mappedValue = nextValue;
2497 a[k] = mappedValue;
2498 k += 1;
2499 }
2500 }
2501 var arrayLike = ToObject(items);
2502 var lenValue = arrayLike.length;
2503 var len = ToLength(lenValue);
2504 if (IsConstructor(c)) {
2505 a = new c(len);
2506 } else {
2507 a = new Array(len);
2508 }
2509 k = 0;
2510 while (k < len) {
2511 var kValue = arrayLike[k];
2512 if (mapping)
2513 mappedValue = mapfn.call(t, kValue, k);
2514 else
2515 mappedValue = kValue;
2516 a[k] = mappedValue;
2517 k += 1;
2518 }
2519 a.length = len;
2520 return a;
2521 });
2522
2523 // 22.1.2.2 Array.isArray ( arg )
2524
2525 // 22.1.2.3 Array.of ( ...items )
2526 define(
2527 Array, 'of',
2528 function of() {
2529 var items = arguments;
2530
2531 var lenValue = items.length;
2532 var len = ToUint32(lenValue);
2533 var c = strict(this), a;
2534 if (IsConstructor(c)) {
2535 a = new c(len);
2536 a = ToObject(a);
2537 } else {
2538 a = new Array(len);
2539 }
2540 var k = 0;
2541 while (k < len) {
2542 a[k] = items[k];
2543 k += 1;
2544 }
2545 a.length = len;
2546 return a;
2547 });
2548
2549 // 22.1.2.4 Array.prototype
2550 // 22.1.2.5 get Array [ @@species ]
2551 // 22.1.3 Properties of the Array Prototype Object
2552 // 22.1.3.1 Array.prototype.concat ( ...arguments )
2553 // 22.1.3.1.1 Runtime Semantics: IsConcatSpreadable ( O )
2554 // 22.1.3.2 Array.prototype.constructor
2555 // 22.1.3.3 Array.prototype.copyWithin (target, start [ , end ] )
2556 define(
2557 Array.prototype, 'copyWithin',
2558 function copyWithin(target, start/*, end*/) {
2559 var end = arguments[2];
2560
2561 var o = ToObject(this);
2562 var lenVal = o.length;
2563 var len = ToLength(lenVal);
2564 len = max(len, 0);
2565 var relativeTarget = ToInteger(target);
2566 var to;
2567 if (relativeTarget < 0)
2568 to = max(len + relativeTarget, 0);
2569 else
2570 to = min(relativeTarget, len);
2571 var relativeStart = ToInteger(start);
2572 var from;
2573 if (relativeStart < 0)
2574 from = max(len + relativeStart, 0);
2575 else
2576 from = min(relativeStart, len);
2577 var relativeEnd;
2578 if (end === undefined)
2579 relativeEnd = len;
2580 else
2581 relativeEnd = ToInteger(end);
2582 var final;
2583 if (relativeEnd < 0)
2584 final = max(len + relativeEnd, 0);
2585 else
2586 final = min(relativeEnd, len);
2587 var count = min(final - from, len - to);
2588 var direction;
2589 if (from < to && to < from + count) {
2590 direction = -1;
2591 from = from + count - 1;
2592 to = to + count - 1;
2593 } else {
2594 direction = 1;
2595 }
2596 while (count > 0) {
2597 var fromKey = String(from);
2598 var toKey = String(to);
2599 var fromPresent = HasProperty(o, fromKey);
2600 if (fromPresent) {
2601 var fromVal = o[fromKey];
2602 o[toKey] = fromVal;
2603 } else {
2604 delete o[toKey];
2605 }
2606 from = from + direction;
2607 to = to + direction;
2608 count = count - 1;
2609 }
2610 return o;
2611 });
2612
2613 // 22.1.3.4 Array.prototype.entries ( )
2614 var nativeArrayIteratorMethods =
2615 ('entries' in Array.prototype && 'next' in [].entries());
2616
2617 define(
2618 Array.prototype, 'entries',
2619 function entries() {
2620 return CreateArrayIterator(this, 'key+value');
2621 }, !nativeArrayIteratorMethods);
2622
2623 // 22.1.3.5 Array.prototype.every ( callbackfn [ , thisArg] )
2624
2625 // 22.1.3.6 Array.prototype.fill (value [ , start [ , end ] ] )
2626 define(
2627 Array.prototype, 'fill',
2628 function fill(value/*, start, end*/) {
2629 var start = arguments[1],
2630 end = arguments[2];
2631
2632 var o = ToObject(this);
2633 var lenVal = o.length;
2634 var len = ToLength(lenVal);
2635 len = max(len, 0);
2636 var relativeStart = ToInteger(start);
2637 var k;
2638 if (relativeStart < 0)
2639 k = max((len + relativeStart), 0);
2640 else
2641 k = min(relativeStart, len);
2642 var relativeEnd;
2643 if (end === undefined)
2644 relativeEnd = len;
2645 else
2646 relativeEnd = ToInteger(end);
2647 var final;
2648 if (relativeEnd < 0)
2649 final = max((len + relativeEnd), 0);
2650 else
2651 final = min(relativeEnd, len);
2652 while (k < final) {
2653 var pk = String(k);
2654 o[pk] = value;
2655 k += 1;
2656 }
2657 return o;
2658 });
2659
2660 // 22.1.3.7 Array.prototype.filter ( callbackfn [ , thisArg ] )
2661
2662 // 22.1.3.8 Array.prototype.find ( predicate [ , thisArg ] )
2663 define(
2664 Array.prototype, 'find',
2665 function find(predicate) {
2666 var o = ToObject(this);
2667 var lenValue = o.length;
2668 var len = ToInteger(lenValue);
2669 if (!IsCallable(predicate)) throw TypeError();
2670 var t = arguments.length > 1 ? arguments[1] : undefined;
2671 var k = 0;
2672 while (k < len) {
2673 var pk = String(k);
2674 var kPresent = HasProperty(o, pk);
2675 if (kPresent) {
2676 var kValue = o[pk];
2677 var testResult = predicate.call(t, kValue, k, o);
2678 if (Boolean(testResult)) {
2679 return kValue;
2680 }
2681 }
2682 ++k;
2683 }
2684 return undefined;
2685 });
2686
2687 // 22.1.3.9 Array.prototype.findIndex ( predicate [ , thisArg ] )
2688 define(
2689 Array.prototype, 'findIndex',
2690 function findIndex(predicate) {
2691 var o = ToObject(this);
2692 var lenValue = o.length;
2693 var len = ToLength(lenValue);
2694 if (!IsCallable(predicate)) throw TypeError();
2695 var t = arguments.length > 1 ? arguments[1] : undefined;
2696 var k = 0;
2697 while (k < len) {
2698 var pk = String(k);
2699 var kPresent = HasProperty(o, pk);
2700 if (kPresent) {
2701 var kValue = o[pk];
2702 var testResult = predicate.call(t, kValue, k, o);
2703 if (Boolean(testResult)) {
2704 return k;
2705 }
2706 }
2707 ++k;
2708 }
2709 return -1;
2710 });
2711
2712 // 22.1.3.10 Array.prototype.forEach ( callbackfn [ , thisArg ] )
2713 // 22.1.3.11 Array.prototype.indexOf ( searchElement [ , fromIndex ] )
2714 // 22.1.3.12 Array.prototype.join (separator)
2715
2716 // 22.1.3.13 Array.prototype.keys ( )
2717 define(
2718 Array.prototype, 'keys',
2719 function keys() {
2720 return CreateArrayIterator(this, 'key');
2721 }, !nativeArrayIteratorMethods);
2722
2723 // 22.1.3.14 Array.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
2724 // 22.1.3.15 Array.prototype.map ( callbackfn [ , thisArg ] )
2725 // 22.1.3.16 Array.prototype.pop ( )
2726 // 22.1.3.17 Array.prototype.push ( ...items )
2727 // 22.1.3.18 Array.prototype.reduce ( callbackfn [ , initialValue ] )
2728 // 22.1.3.19 Array.prototype.reduceRight ( callbackfn [ , initialValue ] )
2729 // 22.1.3.20 Array.prototype.reverse ( )
2730 // 22.1.3.21 Array.prototype.shift ( )
2731 // 22.1.3.22 Array.prototype.slice (start, end)
2732 // 22.1.3.23 Array.prototype.some ( callbackfn [ , thisArg ] )
2733 // 22.1.3.24 Array.prototype.sort (comparefn)
2734 // 22.1.3.25 Array.prototype.splice (start, deleteCount , ...items )
2735 // 22.1.3.26 Array.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
2736 // 22.1.3.27 Array.prototype.toString ( )
2737 // 22.1.3.28 Array.prototype.unshift ( ...items )
2738
2739 // 22.1.3.29 Array.prototype.values ( )
2740 define(
2741 Array.prototype, 'values',
2742 function values() {
2743 return CreateArrayIterator(this, 'value');
2744 }, !nativeArrayIteratorMethods);
2745
2746 // 22.1.3.30 Array.prototype [ @@iterator ] ( )
2747 define(
2748 Array.prototype, $$iterator,
2749 Array.prototype.values
2750 );
2751
2752 // 22.1.3.31 Array.prototype [ @@unscopables ]
2753 // 22.1.4 Properties of Array Instances
2754 // 22.1.4.1 length
2755
2756 // 22.1.5 Array Iterator Objects
2757 function ArrayIterator() {}
2758
2759 // 22.1.5.1 CreateArrayIterator Abstract Operation
2760 function CreateArrayIterator(array, kind) {
2761 var o = ToObject(array);
2762 var iterator = new ArrayIterator;
2763 set_internal(iterator, '[[IteratedObject]]', o);
2764 set_internal(iterator, '[[ArrayIteratorNextIndex]]', 0);
2765 set_internal(iterator, '[[ArrayIterationKind]]', kind);
2766 return iterator;
2767 }
2768
2769 // 22.1.5.2 The %ArrayIteratorPrototype% Object
2770 var $ArrayIteratorPrototype$ = Object.create($IteratorPrototype$);
2771 ArrayIterator.prototype = $ArrayIteratorPrototype$;
2772
2773 // 22.1.5.2.1 %ArrayIteratorPrototype%. next( )
2774 define(
2775 $ArrayIteratorPrototype$, 'next',
2776 function next() {
2777 var o = strict(this);
2778 if (Type(o) !== 'object') throw TypeError();
2779 var a = o['[[IteratedObject]]'],
2780 index = o['[[ArrayIteratorNextIndex]]'],
2781 itemKind = o['[[ArrayIterationKind]]'],
2782 lenValue = a.length,
2783 len = ToUint32(lenValue),
2784 elementKey,
2785 elementValue;
2786 if (itemKind.indexOf('sparse') !== -1) {
2787 var found = false;
2788 while (!found && index < len) {
2789 elementKey = String(index);
2790 found = HasProperty(a, elementKey);
2791 if (!found) {
2792 index += 1;
2793 }
2794 }
2795 }
2796 if (index >= len) {
2797 set_internal(o, '[[ArrayIteratorNextIndex]]', Infinity);
2798 return CreateIterResultObject(undefined, true);
2799 }
2800 elementKey = index;
2801 set_internal(o, '[[ArrayIteratorNextIndex]]', index + 1);
2802 if (itemKind.indexOf('value') !== -1)
2803 elementValue = a[elementKey];
2804 if (itemKind.indexOf('key+value') !== -1)
2805 return CreateIterResultObject([elementKey, elementValue], false);
2806 if (itemKind.indexOf('key') !== -1)
2807 return CreateIterResultObject(elementKey, false);
2808 if (itemKind === 'value')
2809 return CreateIterResultObject(elementValue, false);
2810 throw Error('Internal error');
2811 });
2812
2813 // 22.1.5.2.2 %ArrayIteratorPrototype% [ @@toStringTag ]
2814 define($ArrayIteratorPrototype$, $$toStringTag, 'Array Iterator');
2815
2816 // 22.1.5.3 Properties of Array Iterator Instances
2817
2818
2819 // ---------------------------------------
2820 // 22.2 TypedArray Objects
2821 // ---------------------------------------
2822
2823 // See typedarray.js for TypedArray polyfill
2824
2825 ['Int8Array', 'Uint8Array', 'Uint8ClampedArray',
2826 'Int16Array', 'Uint16Array',
2827 'Int32Array', 'Uint32Array',
2828 'Float32Array', 'Float64Array'].forEach(function ($TypedArrayName$) {
2829 if (!($TypedArrayName$ in global))
2830 return;
2831 var $TypedArray$ = global[$TypedArrayName$];
2832
2833 // 22.2.1 The %TypedArray% Intrinsic Object
2834 // 22.2.1.1 %TypedArray% ( length )
2835 // 22.2.1.2 %TypedArray% ( typedArray )
2836 // 22.2.1.3 %TypedArray% ( object )
2837 // 22.2.1.4 %TypedArray% ( buffer [ , byteOffset [ , length ] ] )
2838 // 22.2.1.5 %TypedArray% ( all other argument combinations )
2839 // 22.2.2 Properties of the %TypedArray% Intrinsic Object
2840
2841 // 22.2.2.1 %TypedArray%.from ( source [ , mapfn [ , thisArg ] ] )
2842 define(
2843 $TypedArray$, 'from',
2844 function from(source) {
2845 var mapfn = arguments[1];
2846 var thisArg = arguments[2];
2847
2848 var c = strict(this);
2849 if (!IsConstructor(c)) throw TypeError();
2850 if (mapfn === undefined) {
2851 var mapping = false;
2852 } else {
2853 if (IsCallable(mapfn)) throw TypeError();
2854 var t = thisArg;
2855 mapping = true;
2856 }
2857 var usingIterator = GetMethod(source, $$iterator);
2858 if (usingIterator !== undefined) {
2859 var iterator = GetIterator(source, usingIterator);
2860 var values = [];
2861 var next = true;
2862 while (next !== false) {
2863 next = IteratorStep(iterator);
2864 if (next !== false) {
2865 var nextValue = IteratorValue(next);
2866 values.push(nextValue);
2867 }
2868 }
2869 var len = values.length;
2870 var newObj = new c(len);
2871 var k = 0;
2872 while (k < len) {
2873 var kValue = values.shift();
2874 if (mapping) {
2875 var mappedValue = mapfn.call(t, kValue);
2876 } else {
2877 mappedValue = kValue;
2878 }
2879 newObj[k] = mappedValue;
2880 ++k;
2881 }
2882 console.assert(values.length === 0);
2883 return newObj;
2884 }
2885 var arrayLike = ToObject(source);
2886 var lenValue = arrayLike.length;
2887 len = ToLength(lenValue);
2888 newObj = new c(len);
2889 k = 0;
2890 while (k < len) {
2891 kValue = arrayLike[k];
2892 if (mapping) {
2893 mappedValue = mapfn.call(t, kValue, k);
2894 } else {
2895 mappedValue = kValue;
2896 }
2897 newObj[k] = mappedValue;
2898 ++k;
2899 }
2900 return newObj;
2901 });
2902
2903 // 22.2.2.2 %TypedArray%.of ( ...items )
2904 define(
2905 $TypedArray$, 'of',
2906 function of() {
2907 var items = arguments;
2908
2909 var len = items.length;
2910 var c = strict(this);
2911 var newObj = new c(len);
2912 var k = 0;
2913 while (k < len) {
2914 newObj[k] = items[k];
2915 ++k;
2916 }
2917 return newObj;
2918 });
2919
2920 // 22.2.2.3 %TypedArray%.prototype
2921 // 22.2.2.4 get %TypedArray% [ @@species ]
2922 // 22.2.3 Properties of the %TypedArrayPrototype% Object
2923 // 22.2.3.1 get %TypedArray%.prototype.buffer
2924 // 22.2.3.2 get %TypedArray%.prototype.byteLength
2925 // 22.2.3.3 get %TypedArray%.prototype.byteOffset
2926 // 22.2.3.4 %TypedArray%.prototype.constructor
2927
2928 // 22.2.3.5 %TypedArray%.prototype.copyWithin (target, start [, end ] )
2929 define($TypedArray$.prototype, 'copyWithin', Array.prototype.copyWithin);
2930
2931 // 22.2.3.6 %TypedArray%.prototype.entries ( )
2932 define($TypedArray$.prototype, 'entries', Array.prototype.entries);
2933
2934 // 22.2.3.7 %TypedArray%.prototype.every ( callbackfn [ , thisArg ] )
2935 define($TypedArray$.prototype, 'every', Array.prototype.every);
2936
2937 // 22.2.3.8 %TypedArray%.prototype.fill (value [ , start [ , end ] ] )
2938 define(
2939 $TypedArray$.prototype, 'fill',
2940 //Array.prototype.fill // Doesn't work in Safari 7
2941 function fill(value/*, start, end*/) {
2942 var start = arguments[1],
2943 end = arguments[2];
2944
2945 var o = ToObject(this);
2946 var lenVal = o.length;
2947 var len = ToLength(lenVal);
2948 len = max(len, 0);
2949 var relativeStart = ToInteger(start);
2950 var k;
2951 if (relativeStart < 0) k = max((len + relativeStart), 0);
2952 else k = min(relativeStart, len);
2953 var relativeEnd;
2954 if (end === undefined) relativeEnd = len;
2955 else relativeEnd = ToInteger(end);
2956 var final;
2957 if (relativeEnd < 0) final = max((len + relativeEnd), 0);
2958 else final = min(relativeEnd, len);
2959 while (k < final) {
2960 var pk = String(k);
2961 o[pk] = value;
2962 k += 1;
2963 }
2964 return o;
2965 });
2966
2967 // 22.2.3.9 %TypedArray%.prototype.filter ( callbackfn [ , thisArg ] )
2968 define(
2969 $TypedArray$.prototype, 'filter',
2970 function filter(callbackfn) {
2971 var thisArg = arguments[1];
2972
2973 var o = ToObject(this);
2974 var lenVal = o.length;
2975 var len = ToLength(lenVal);
2976 if (!IsCallable(callbackfn)) throw TypeError();
2977 var t = thisArg;
2978 var c = o.constructor;
2979 var kept = [];
2980 var k = 0;
2981 var captured = 0;
2982 while (k < len) {
2983 var kValue = o[k];
2984 var selected = callbackfn.call(t, kValue, k, o);
2985 if (selected) {
2986 kept.push(kValue);
2987 ++captured;
2988 }
2989 ++k;
2990 }
2991 var a = new c(captured);
2992 var n = 0;
2993 for (var i = 0; i < kept.length; ++i) {
2994 var e = kept[i];
2995 a[n] = e;
2996 ++n;
2997 }
2998 return a;
2999 });
3000
3001 // 22.2.3.10 %TypedArray%.prototype.find (predicate [ , thisArg ] )
3002 define($TypedArray$.prototype, 'find', Array.prototype.find);
3003
3004 // 22.2.3.11 %TypedArray%.prototype.findIndex ( predicate [ , thisArg ] )
3005 define($TypedArray$.prototype, 'findIndex', Array.prototype.findIndex);
3006
3007 // 22.2.3.12 %TypedArray%.prototype.forEach ( callbackfn [ , thisArg ] )
3008 define($TypedArray$.prototype, 'forEach', Array.prototype.forEach);
3009
3010 // 22.2.3.13 %TypedArray%.prototype.indexOf (searchElement [ , fromIndex ] )
3011 define($TypedArray$.prototype, 'indexOf', Array.prototype.indexOf);
3012
3013 // 22.2.3.14 %TypedArray%.prototype.join ( separator )
3014 define($TypedArray$.prototype, 'join', Array.prototype.join);
3015
3016 // 22.2.3.15 %TypedArray%.prototype.keys ( )
3017 define($TypedArray$.prototype, 'keys', Array.prototype.keys);
3018
3019 // 22.2.3.16 %TypedArray%.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
3020 define($TypedArray$.prototype, 'lastIndexOf', Array.prototype.lastIndexOf);
3021
3022 // 22.2.3.17 get %TypedArray%.prototype.length
3023
3024 // 22.2.3.18 %TypedArray%.prototype.map ( callbackfn [ , thisArg ] )
3025 define(
3026 $TypedArray$.prototype, 'map',
3027 function map(callbackfn) {
3028 var thisArg = arguments[1];
3029
3030 var o = ToObject(this);
3031 var lenValue = o.length;
3032 var len = ToLength(lenValue);
3033 if (!IsCallable(callbackfn)) throw TypeError();
3034 var t = thisArg;
3035 var a = undefined;
3036 var c = o.constructor;
3037 if (IsConstructor(c))
3038 a = new c(len);
3039 if (a === undefined)
3040 a = new Array(len);
3041 var k = 0;
3042 while (k < len) {
3043 var kPresent = HasProperty(o, k);
3044 if (kPresent) {
3045 var kValue = o[k];
3046 var mappedValue = callbackfn.call(t, kValue, k, o);
3047 a[k] = mappedValue;
3048 }
3049 ++k;
3050 }
3051 return a;
3052 });
3053
3054 // 22.2.3.19 %TypedArray%.prototype.reduce ( callbackfn [, initialValue] )
3055 define($TypedArray$.prototype, 'reduce', Array.prototype.reduce);
3056
3057 // 22.2.3.20 %TypedArray%.prototype.reduceRight ( callbackfn [, initialValue] )
3058 define($TypedArray$.prototype, 'reduceRight', Array.prototype.reduceRight);
3059
3060 // 22.2.3.21 %TypedArray%.prototype.reverse ( )
3061 define($TypedArray$.prototype, 'reverse', Array.prototype.reverse);
3062
3063 // 22.2.3.22 %TypedArray%.prototype.set ( overloaded [ , offset ])
3064 // 22.2.3.22.1 %TypedArray%.prototype.set (array [ , offset ] )
3065 // 22.2.3.22.2 %TypedArray%.prototype.set(typedArray [, offset ] )
3066
3067 // 22.2.3.23 %TypedArray%.prototype.slice ( start, end )
3068 define(
3069 $TypedArray$.prototype, 'slice',
3070 function slice(start, end) {
3071 var o = ToObject(this);
3072 var lenVal = o.length;
3073 var len = ToLength(lenVal);
3074 var relativeStart = ToInteger(start);
3075 var k = (relativeStart < 0) ? max(len + relativeStart, 0) : min(relativeStart, len);
3076 var relativeEnd = (end === undefined) ? len : ToInteger(end);
3077 var final = (relativeEnd < 0) ? max(len + relativeEnd, 0) : min(relativeEnd, len);
3078 var count = final - k;
3079 var c = o.constructor;
3080 if (IsConstructor(c)) {
3081 var a = new c(count);
3082 } else {
3083 throw TypeError();
3084 }
3085 var n = 0;
3086 while (k < final) {
3087 var kValue = o[k];
3088 a[n] = kValue;
3089 ++k;
3090 ++n;
3091 }
3092 return a;
3093 });
3094
3095 // 22.2.3.24 %TypedArray%.prototype.some ( callbackfn [ , thisArg ] )
3096 define($TypedArray$.prototype, 'some', Array.prototype.some);
3097
3098 // 22.2.3.25 %TypedArray%.prototype.sort ( comparefn )
3099 define(
3100 $TypedArray$.prototype, 'sort',
3101 function sort() {
3102 var comparefn = arguments[0];
3103
3104 function sortCompare(x, y) {
3105 console.assert(Type(x) === 'number' && Type(y) === 'number');
3106 if (x !== x && y !== y) return +0;
3107 if (x !== x) return 1;
3108 if (y !== y) return -1;
3109 if (comparefn !== undefined) {
3110 return comparefn(x, y);
3111 }
3112 if (x < y) return -1;
3113 if (x > y) return 1;
3114 return +0;
3115 }
3116 return Array.prototype.sort.call(this, sortCompare);
3117 });
3118
3119 // 22.2.3.26 %TypedArray%.prototype.subarray( [ begin [ , end ] ] )
3120 // 22.2.3.27 %TypedArray%.prototype.toLocaleString ([ reserved1 [ , reserved2 ] ])
3121 // 22.2.3.28 %TypedArray%.prototype.toString ( )
3122
3123 // 22.2.3.29 %TypedArray%.prototype.values ( )
3124 define($TypedArray$.prototype, 'values', Array.prototype.values);
3125
3126 // 22.2.3.30 %TypedArray%.prototype [ @@iterator ] ( )
3127 define(
3128 $TypedArray$.prototype, $$iterator,
3129 $TypedArray$.prototype.values
3130 );
3131
3132 // 22.2.3.31 get %TypedArray%.prototype [ @@toStringTag ]
3133 define($TypedArray$.prototype, $$toStringTag, $TypedArrayName$);
3134
3135 // 22.2.4 The TypedArray Constructors
3136 // 22.2.4.1TypedArray( ... argumentsList)
3137 // 22.2.5 Properties of the TypedArray Constructors
3138 // 22.2.5.1 TypedArray.BYTES_PER_ELEMENT
3139 // 22.2.5.2 TypedArray.prototype
3140 // 22.2.6 Properties of TypedArray Prototype Objects
3141 // 22.2.6.1 TypedArray.prototype.BYTES_PER_ELEMENT
3142 // 22.2.6.2 TypedArray.prototype.constructor
3143 // 22.2.7 Properties of TypedArray Instances
3144 });
3145
3146 // ---------------------------------------
3147 // 23 Keyed Collection
3148 // ---------------------------------------
3149
3150 // ---------------------------------------
3151 // 23.1 Map Objects
3152 // ---------------------------------------
3153
3154 (function() {
3155 // 23.1.1 The Map Constructor
3156
3157 // 23.1.1.1 Map ( [ iterable ] )
3158 /** @constructor */
3159 function Map(/*iterable*/) {
3160 var map = strict(this);
3161 var iterable = arguments[0];
3162
3163 if (Type(map) !== 'object') throw TypeError();
3164 if ('[[MapData]]' in map) throw TypeError();
3165
3166 if (iterable !== undefined) {
3167 var adder = map['set'];
3168 if (!IsCallable(adder)) throw TypeError();
3169 var iter = GetIterator(ToObject(iterable));
3170 }
3171 set_internal(map, '[[MapData]]', { keys: [], values: [] });
3172 if (iter === undefined) return map;
3173 while (true) {
3174 var next = IteratorStep(iter);
3175 if (next === false)
3176 return map;
3177 var nextItem = IteratorValue(next);
3178 if (Type(nextItem) !== 'object') throw TypeError();
3179 var k = nextItem[0];
3180 var v = nextItem[1];
3181 adder.call(map, k, v);
3182 }
3183
3184 return map;
3185 }
3186
3187 if (!('Map' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3188 (function() { try { new global.Map([]); return false; } catch (_) { return true; } }()) ||
3189 (function() { try { return !new global.Map().entries().next; } catch (_) { return true; } }()) ||
3190 (new global.Map([['a', 1]]).size !== 1))
3191 global.Map = Map;
3192
3193
3194 function MapDataIndexOf(mapData, key) {
3195 var i;
3196 if (key === key) return mapData.keys.indexOf(key);
3197 // Slow case for NaN
3198 for (i = 0; i < mapData.keys.length; i += 1)
3199 if (SameValueZero(mapData.keys[i], key)) return i;
3200 return -1;
3201 }
3202
3203 // 23.1.1.2 new Map ( ... argumentsList )
3204 // 23.1.2 Properties of the Map Constructor
3205 // 23.1.2.1 Map.prototype
3206 var $MapPrototype$ = {};
3207 Map.prototype = $MapPrototype$;
3208
3209 // 23.1.2.2 get Map [ @@species ]
3210
3211 // 23.1.3 Properties of the Map Prototype Object
3212 // 23.1.3.1 Map.prototype.clear ()
3213 define(
3214 Map.prototype, 'clear',
3215 function clear() {
3216 var m = strict(this);
3217 if (Type(m) !== 'object') throw TypeError();
3218 if (!('[[MapData]]' in m)) throw TypeError();
3219 if (m['[[MapData]]'] === undefined) throw TypeError();
3220 var entries = m['[[MapData]]'];
3221 entries.keys.length = 0;
3222 entries.values.length = 0;
3223 return undefined;
3224 });
3225
3226 // 23.1.3.2 Map.prototype.constructor
3227
3228 // 23.1.3.3 Map.prototype.delete ( key )
3229 define(
3230 Map.prototype, 'delete',
3231 function delete_(key) {
3232 var m = strict(this);
3233 if (Type(m) !== 'object') throw TypeError();
3234 if (!('[[MapData]]' in m)) throw TypeError();
3235 if (m['[[MapData]]'] === undefined) throw TypeError();
3236 var entries = m['[[MapData]]'];
3237 var i = MapDataIndexOf(entries, key);
3238 if (i < 0) return false;
3239 entries.keys[i] = empty;
3240 entries.values[i] = empty;
3241 return true;
3242 });
3243
3244 // 23.1.3.4 Map.prototype.entries ( )
3245 define(
3246 Map.prototype, 'entries',
3247 function entries() {
3248 var m = strict(this);
3249 if (Type(m) !== 'object') throw TypeError();
3250 return CreateMapIterator(m, 'key+value');
3251 });
3252
3253 // 23.1.3.5 Map.prototype.forEach ( callbackfn [ , thisArg ] )
3254 define(
3255 Map.prototype, 'forEach',
3256 function forEach(callbackfn /*, thisArg*/) {
3257 var thisArg = arguments[1];
3258
3259 var m = strict(this);
3260 if (Type(m) !== 'object') throw TypeError();
3261 if (!('[[MapData]]' in m)) throw TypeError();
3262 if (m['[[MapData]]'] === undefined) throw TypeError();
3263 var entries = m['[[MapData]]'];
3264
3265 if (!IsCallable(callbackfn)) {
3266 throw TypeError('First argument to forEach is not callable.');
3267 }
3268 for (var i = 0; i < entries.keys.length; ++i) {
3269 if (entries.keys[i] !== empty) {
3270 callbackfn.call(thisArg, entries.values[i], entries.keys[i], m);
3271 }
3272 }
3273 return undefined;
3274 });
3275
3276 // 23.1.3.6 Map.prototype.get ( key )
3277 define(
3278 Map.prototype, 'get',
3279 function get(key) {
3280 var m = strict(this);
3281 if (Type(m) !== 'object') throw TypeError();
3282 if (!('[[MapData]]' in m)) throw TypeError();
3283 if (m['[[MapData]]'] === undefined) throw TypeError();
3284 var entries = m['[[MapData]]'];
3285 var i = MapDataIndexOf(entries, key);
3286 if (i >= 0) return entries.values[i];
3287 return undefined;
3288 });
3289
3290 // 23.1.3.7 Map.prototype.has ( key )
3291 define(
3292 Map.prototype, 'has',
3293 function has(key) {
3294 var m = strict(this);
3295 if (Type(m) !== 'object') throw TypeError();
3296 if (!('[[MapData]]' in m)) throw TypeError();
3297 if (m['[[MapData]]'] === undefined) throw TypeError();
3298 var entries = m['[[MapData]]'];
3299 if (MapDataIndexOf(entries, key) >= 0) return true;
3300 return false;
3301 });
3302
3303 // 23.1.3.8 Map.prototype.keys ( )
3304 define(
3305 Map.prototype, 'keys',
3306 function keys() {
3307 var m = strict(this);
3308 if (Type(m) !== 'object') throw TypeError();
3309 return CreateMapIterator(m, 'key');
3310 });
3311
3312 // 23.1.3.9 Map.prototype.set ( key , value )
3313 define(
3314 Map.prototype, 'set',
3315 function set(key, value) {
3316 var m = strict(this);
3317 if (Type(m) !== 'object') throw TypeError();
3318 if (!('[[MapData]]' in m)) throw TypeError();
3319 if (m['[[MapData]]'] === undefined) throw TypeError();
3320 var entries = m['[[MapData]]'];
3321 var i = MapDataIndexOf(entries, key);
3322 if (i < 0) i = entries.keys.length;
3323 if (SameValue(key, -0)) key = 0;
3324 entries.keys[i] = key;
3325 entries.values[i] = value;
3326 return m;
3327 });
3328
3329 // 23.1.3.10 get Map.prototype.size
3330 Object.defineProperty(
3331 Map.prototype, 'size', {
3332 get: function() {
3333 var m = strict(this);
3334 if (Type(m) !== 'object') throw TypeError();
3335 if (!('[[MapData]]' in m)) throw TypeError();
3336 if (m['[[MapData]]'] === undefined) throw TypeError();
3337 var entries = m['[[MapData]]'];
3338 var count = 0;
3339 for (var i = 0; i < entries.keys.length; ++i) {
3340 if (entries.keys[i] !== empty)
3341 count = count + 1;
3342 }
3343 return count;
3344 }
3345 });
3346
3347 // 23.1.3.11 Map.prototype.values ( )
3348 define(
3349 Map.prototype, 'values',
3350 function values() {
3351 var m = strict(this);
3352 if (Type(m) !== 'object') throw TypeError();
3353 return CreateMapIterator(m, 'value');
3354 });
3355
3356 // 23.1.3.12 Map.prototype [ @@iterator ]( )
3357 define(
3358 Map.prototype, $$iterator,
3359 function() {
3360 var m = strict(this);
3361 if (Type(m) !== 'object') throw TypeError();
3362 return CreateMapIterator(m, 'key+value');
3363 });
3364
3365 // 23.1.3.13 Map.prototype [ @@toStringTag ]
3366 define(global.Map.prototype, $$toStringTag, 'Map');
3367
3368 // 23.1.4 Properties of Map Instances
3369 // 23.1.5 Map Iterator Objects
3370
3371 /** @constructor */
3372 function MapIterator() {}
3373
3374 // 23.1.5.1 CreateMapIterator Abstract Operation
3375 function CreateMapIterator(map, kind) {
3376 if (Type(map) !== 'object') throw TypeError();
3377 if (!('[[MapData]]' in map)) throw TypeError();
3378 if (map['[[MapData]]'] === undefined) throw TypeError();
3379 var iterator = new MapIterator;
3380 set_internal(iterator, '[[Map]]', map);
3381 set_internal(iterator, '[[MapNextIndex]]', 0);
3382 set_internal(iterator, '[[MapIterationKind]]', kind);
3383 return iterator;
3384 }
3385
3386 // 23.1.5.2 The %MapIteratorPrototype% Object
3387 var $MapIteratorPrototype$ = Object.create($IteratorPrototype$);
3388 MapIterator.prototype = $MapIteratorPrototype$;
3389
3390 // 23.1.5.2.1 %MapIteratorPrototype%.next ( )
3391 define(
3392 $MapIteratorPrototype$, 'next',
3393 function next() {
3394 var o = strict(this);
3395 if (Type(o) !== 'object') throw TypeError();
3396 var m = o['[[Map]]'],
3397 index = o['[[MapNextIndex]]'],
3398 itemKind = o['[[MapIterationKind]]'],
3399 entries = m['[[MapData]]'];
3400 while (index < entries.keys.length) {
3401 var e = {key: entries.keys[index], value: entries.values[index]};
3402 index = index += 1;
3403 set_internal(o, '[[MapNextIndex]]', index);
3404 if (e.key !== empty) {
3405 if (itemKind === 'key') {
3406 return CreateIterResultObject(e.key, false);
3407 } else if (itemKind === 'value') {
3408 return CreateIterResultObject(e.value, false);
3409 } else {
3410 return CreateIterResultObject([e.key, e.value], false);
3411 }
3412 }
3413 }
3414 return CreateIterResultObject(undefined, true);
3415 });
3416
3417 // 23.1.5.2.2 %MapIteratorPrototype% [ @@toStringTag ]
3418 define($MapIteratorPrototype$, $$toStringTag, 'Map Iterator');
3419
3420 // 23.1.5.3 Properties of Map Iterator Instances
3421 }());
3422
3423 // ---------------------------------------
3424 // 23.2 Set Objects
3425 // ---------------------------------------
3426
3427 (function() {
3428 // 23.2.1 The Set Constructor
3429 // 23.2.1.1 Set ( [ iterable ] )
3430
3431 /** @constructor */
3432 function Set(/*iterable*/) {
3433 var set = strict(this);
3434 var iterable = arguments[0];
3435
3436 if (Type(set) !== 'object') throw TypeError();
3437 if ('[[SetData]]' in set) throw TypeError();
3438
3439 if (iterable !== undefined) {
3440 var adder = set['add'];
3441 if (!IsCallable(adder)) throw TypeError();
3442 var iter = GetIterator(ToObject(iterable));
3443 }
3444 set_internal(set, '[[SetData]]', []);
3445 if (iter === undefined) return set;
3446 while (true) {
3447 var next = IteratorStep(iter);
3448 if (next === false)
3449 return set;
3450 var nextValue = IteratorValue(next);
3451 adder.call(set, nextValue);
3452 }
3453
3454 return set;
3455 }
3456
3457 if (!('Set' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3458 (function() { try { return !new global.Set().entries().next; } catch (_) { return true; } }()) ||
3459 (new global.Set([1]).size !== 1))
3460 global.Set = Set;
3461
3462 function SetDataIndexOf(setData, key) {
3463 var i;
3464 if (key === key)
3465 return setData.indexOf(key);
3466 // Slow case for NaN
3467 for (i = 0; i < setData.length; i += 1)
3468 if (SameValueZero(setData[i], key)) return i;
3469 return -1;
3470 }
3471
3472 // 23.2.1.2 new Set ( ...argumentsList )
3473 // 23.2.2 Properties of the Set Constructor
3474
3475 // 23.2.2.1 Set.prototype
3476 var $SetPrototype$ = {};
3477 Set.prototype = $SetPrototype$;
3478
3479 // 23.2.2.2 get Set [ @@species ]
3480 // 23.2.3 Properties of the Set Prototype Object
3481
3482 // 23.2.3.1 Set.prototype.add (value )
3483 define(
3484 Set.prototype, 'add',
3485 function add(value) {
3486 var s = strict(this);
3487 if (Type(s) !== 'object') throw TypeError();
3488 if (!('[[SetData]]' in s)) throw TypeError();
3489 if (s['[[SetData]]'] === undefined) throw TypeError();
3490 if (SameValue(value, -0)) value = 0;
3491 var entries = s['[[SetData]]'];
3492 var i = SetDataIndexOf(entries, value);
3493 if (i < 0) i = s['[[SetData]]'].length;
3494 s['[[SetData]]'][i] = value;
3495
3496 return s;
3497 });
3498
3499 // 23.2.3.2 Set.prototype.clear ()
3500 define(
3501 Set.prototype, 'clear',
3502 function clear() {
3503 var s = strict(this);
3504 if (Type(s) !== 'object') throw TypeError();
3505 if (!('[[SetData]]' in s)) throw TypeError();
3506 if (s['[[SetData]]'] === undefined) throw TypeError();
3507 var entries = s['[[SetData]]'];
3508 entries.length = 0;
3509 return undefined;
3510 });
3511
3512 // 23.2.3.3 Set.prototype.constructor
3513 // 23.2.3.4 Set.prototype.delete ( value )
3514 define(
3515 Set.prototype, 'delete',
3516 function delete_(value) {
3517 var s = strict(this);
3518 if (Type(s) !== 'object') throw TypeError();
3519 if (!('[[SetData]]' in s)) throw TypeError();
3520 if (s['[[SetData]]'] === undefined) throw TypeError();
3521 var entries = s['[[SetData]]'];
3522 var i = SetDataIndexOf(entries, value);
3523 if (i < 0) return false;
3524 entries[i] = empty;
3525 return true;
3526 });
3527
3528 // 23.2.3.5 Set.prototype.entries ( )
3529 define(
3530 Set.prototype, 'entries',
3531 function entries() {
3532 var s = strict(this);
3533 if (Type(s) !== 'object') throw TypeError();
3534 return CreateSetIterator(s, 'key+value');
3535 });
3536
3537 // 23.2.3.6 Set.prototype.forEach ( callbackfn [ , thisArg ] )
3538 define(
3539 Set.prototype, 'forEach',
3540 function forEach(callbackfn/*, thisArg*/) {
3541 var thisArg = arguments[1];
3542
3543 var s = strict(this);
3544 if (Type(s) !== 'object') throw TypeError();
3545 if (!('[[SetData]]' in s)) throw TypeError();
3546 if (s['[[SetData]]'] === undefined) throw TypeError();
3547 var entries = s['[[SetData]]'];
3548
3549 if (!IsCallable(callbackfn)) {
3550 throw TypeError('First argument to forEach is not callable.');
3551 }
3552 for (var i = 0; i < entries.length; ++i) {
3553 if (entries[i] !== empty) {
3554 callbackfn.call(thisArg, entries[i], entries[i], s);
3555 }
3556 }
3557 });
3558
3559 // 23.2.3.7 Set.prototype.has ( value )
3560 define(
3561 Set.prototype, 'has',
3562 function has(key) {
3563 var s = strict(this);
3564 if (Type(s) !== 'object') throw TypeError();
3565 if (!('[[SetData]]' in s)) throw TypeError();
3566 if (s['[[SetData]]'] === undefined) throw TypeError();
3567 var entries = s['[[SetData]]'];
3568 return SetDataIndexOf(entries, key) !== -1;
3569 });
3570
3571 // 23.2.3.8 Set.prototype.keys ( )
3572 // See Set.prototype.values
3573
3574 // 23.2.3.9 get Set.prototype.size
3575 Object.defineProperty(
3576 Set.prototype, 'size', {
3577 get: function() {
3578 var s = strict(this);
3579 if (Type(s) !== 'object') throw TypeError();
3580 if (!('[[SetData]]' in s)) throw TypeError();
3581 if (s['[[SetData]]'] === undefined) throw TypeError();
3582 var entries = s['[[SetData]]'];
3583 var count = 0;
3584 for (var i = 0; i < entries.length; ++i) {
3585 if (entries[i] !== empty)
3586 count = count + 1;
3587 }
3588 return count;
3589 }
3590 });
3591
3592 // 23.2.3.10 Set.prototype.values ( )
3593 define(
3594 Set.prototype, 'values',
3595 function values() {
3596 var s = strict(this);
3597 if (Type(s) !== 'object') throw TypeError();
3598 return CreateSetIterator(s, 'value');
3599 });
3600 // NOTE: function name is still 'values':
3601 Set.prototype.keys = Set.prototype.values;
3602
3603 // 23.2.3.11 Set.prototype [@@iterator ] ( )
3604 define(
3605 Set.prototype, $$iterator,
3606 function() {
3607 var s = strict(this);
3608 if (Type(s) !== 'object') throw TypeError();
3609 return CreateSetIterator(s);
3610 });
3611
3612 // 23.2.3.12 Set.prototype [ @@toStringTag ]
3613 define(global.Set.prototype, $$toStringTag, 'Set');
3614
3615 // 23.2.4 Properties of Set Instances
3616 // 23.2.5 Set Iterator Objects
3617 /** @constructor */
3618 function SetIterator() {}
3619
3620 // 23.2.5.1 CreateSetIterator Abstract Operation
3621 function CreateSetIterator(set, kind) {
3622 if (Type(set) !== 'object') throw TypeError();
3623 if (!('[[SetData]]' in set)) throw TypeError();
3624 if (set['[[SetData]]'] === undefined) throw TypeError();
3625 var iterator = new SetIterator;
3626 set_internal(iterator, '[[IteratedSet]]', set);
3627 set_internal(iterator, '[[SetNextIndex]]', 0);
3628 set_internal(iterator, '[[SetIterationKind]]', kind);
3629 return iterator;
3630 }
3631
3632 // 23.2.5.2 The %SetIteratorPrototype% Object
3633 var $SetIteratorPrototype$ = Object.create($IteratorPrototype$);
3634 SetIterator.prototype = $SetIteratorPrototype$;
3635
3636 // 23.2.5.2.1 %SetIteratorPrototype%.next( )
3637 define(
3638 $SetIteratorPrototype$, 'next',
3639 function next() {
3640 var o = strict(this);
3641 if (Type(o) !== 'object') throw TypeError();
3642 var s = o['[[IteratedSet]]'],
3643 index = o['[[SetNextIndex]]'],
3644 itemKind = o['[[SetIterationKind]]'],
3645 entries = s['[[SetData]]'];
3646 while (index < entries.length) {
3647 var e = entries[index];
3648 index = index += 1;
3649 set_internal(o, '[[SetNextIndex]]', index);
3650 if (e !== empty) {
3651 if (itemKind === 'key+value')
3652 return CreateIterResultObject([e, e], false);
3653 return CreateIterResultObject(e, false);
3654 }
3655 }
3656 return CreateIterResultObject(undefined, true);
3657 });
3658
3659 // 23.2.5.2.2 %SetIteratorPrototype% [ @@toStringTag ]
3660 define($SetIteratorPrototype$, $$toStringTag, 'Set Iterator');
3661
3662 // 23.2.5.3 Properties of Set Iterator Instances
3663
3664 }());
3665
3666 // ---------------------------------------
3667 // 23.3 WeakMap Objects
3668 // ---------------------------------------
3669
3670 (function() {
3671 // 23.3.1 The WeakMap Constructor
3672 // 23.3.1.1 WeakMap ( [ iterable ] )
3673 /** @constructor */
3674 function WeakMap(/*iterable*/) {
3675 var map = strict(this);
3676 var iterable = arguments[0];
3677
3678 if (Type(map) !== 'object') throw TypeError();
3679 if ('[[WeakMapData]]' in map) throw TypeError();
3680
3681 if (iterable !== undefined) {
3682 var adder = map['set'];
3683 if (!IsCallable(adder)) throw TypeError();
3684 var iter = GetIterator(ToObject(iterable));
3685 }
3686 set_internal(map, '[[WeakMapData]]', new EphemeronTable);
3687 if (iter === undefined) return map;
3688 while (true) {
3689 var next = IteratorStep(iter);
3690 if (next === false)
3691 return map;
3692 var nextValue = IteratorValue(next);
3693 if (Type(nextValue) !== 'object') throw TypeError();
3694 var k = nextValue[0];
3695 var v = nextValue[1];
3696 adder.call(map, k, v);
3697 }
3698
3699 return map;
3700 }
3701
3702 if (!('WeakMap' in global) || OVERRIDE_NATIVE_FOR_TESTING)
3703 global.WeakMap = WeakMap;
3704
3705 // 23.3.2 Properties of the WeakMap Constructor
3706 // 23.3.2.1 WeakMap.prototype
3707 var $WeakMapPrototype$ = {};
3708 WeakMap.prototype = $WeakMapPrototype$;
3709
3710
3711
3712 // 23.3.2.2 WeakMap[ @@create ] ( )
3713 // 23.3.3 Properties of the WeakMap Prototype Object
3714
3715 // 23.3.3.1 WeakMap.prototype.constructor
3716
3717 // 23.3.3.2 WeakMap.prototype.delete ( key )
3718 define(
3719 WeakMap.prototype, 'delete',
3720 function delete_(key) {
3721 var M = strict(this);
3722 if (Type(M) !== 'object') throw TypeError();
3723 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3724 if (Type(key) !== 'object') throw TypeError('Expected object');
3725 return M['[[WeakMapData]]'].remove(key);
3726 });
3727
3728 // 23.3.3.3 WeakMap.prototype.get ( key )
3729 define(
3730 WeakMap.prototype, 'get',
3731 function get(key, defaultValue) {
3732 var M = strict(this);
3733 if (Type(M) !== 'object') throw TypeError();
3734 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3735 if (Type(key) !== 'object') throw TypeError('Expected object');
3736 return M['[[WeakMapData]]'].get(key, defaultValue);
3737 });
3738
3739 // 23.3.3.4 WeakMap.prototype.has ( key )
3740 define(
3741 WeakMap.prototype, 'has',
3742 function has(key) {
3743 var M = strict(this);
3744 if (Type(M) !== 'object') throw TypeError();
3745 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3746 if (Type(key) !== 'object') throw TypeError('Expected object');
3747 return M['[[WeakMapData]]'].has(key);
3748 });
3749
3750 // 23.3.3.5 WeakMap.prototype.set ( key , value )
3751 define(
3752 WeakMap.prototype, 'set',
3753 function set(key, value) {
3754 var M = strict(this);
3755 if (Type(M) !== 'object') throw TypeError();
3756 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3757 if (Type(key) !== 'object') throw TypeError('Expected object');
3758 M['[[WeakMapData]]'].set(key, value);
3759 return M;
3760 });
3761
3762 // 23.3.3.6 WeakMap.prototype [ @@toStringTag ]
3763 define(global.WeakMap.prototype, $$toStringTag, 'WeakMap');
3764
3765 // 23.3.4 Properties of WeakMap Instances
3766
3767 // Polyfills for incomplete native implementations:
3768 (function() {
3769 var wm = new global.WeakMap();
3770 var orig = global.WeakMap.prototype.set;
3771 define(global.WeakMap.prototype, 'set', function set() {
3772 orig.apply(this, arguments);
3773 return this;
3774 }, wm.set({}, 0) !== wm);
3775 }());
3776 }());
3777
3778 // ---------------------------------------
3779 // 23.4 WeakSet Objects
3780 // ---------------------------------------
3781
3782 (function() {
3783 // 23.4.1 The WeakSet Constructor
3784 // 23.4.1.1 WeakSet ( [ iterable ] )
3785 /** @constructor */
3786 function WeakSet(/*iterable*/) {
3787 var set = strict(this);
3788 var iterable = arguments[0];
3789
3790 if (Type(set) !== 'object') throw TypeError();
3791 if ('[[WeakSetData]]' in set) throw TypeError();
3792
3793 if (iterable !== undefined) {
3794 var adder = set['add'];
3795 if (!IsCallable(adder)) throw TypeError();
3796 var iter = GetIterator(ToObject(iterable));
3797 }
3798 set_internal(set, '[[WeakSetData]]', new EphemeronTable);
3799 if (iter === undefined) return set;
3800 while (true) {
3801 var next = IteratorStep(iter);
3802 if (next === false)
3803 return set;
3804 var nextValue = IteratorValue(next);
3805 adder.call(set, nextValue);
3806 }
3807
3808 return set;
3809 }
3810
3811 if (!('WeakSet' in global) || OVERRIDE_NATIVE_FOR_TESTING)
3812 global.WeakSet = WeakSet;
3813
3814 // 23.4.2 Properties of the WeakSet Constructor
3815 // 23.4.2.1 WeakSet.prototype
3816 var $WeakSetPrototype$ = {};
3817 WeakSet.prototype = $WeakSetPrototype$;
3818
3819 // 23.4.3 Properties of the WeakSet Prototype Object
3820 // 23.4.3.1 WeakSet.prototype.add (value )
3821 define(
3822 WeakSet.prototype, 'add',
3823 function add(value) {
3824 var S = strict(this);
3825 if (Type(S) !== 'object') throw TypeError();
3826 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3827 if (Type(value) !== 'object') throw TypeError('Expected object');
3828 S['[[WeakSetData]]'].set(value, true);
3829 return S;
3830 });
3831
3832 // 23.4.3.2 WeakSet.prototype.constructor
3833 // 23.4.3.3 WeakSet.prototype.delete ( value )
3834 define(
3835 WeakSet.prototype, 'delete',
3836 function delete_(value) {
3837 var S = strict(this);
3838 if (Type(S) !== 'object') throw TypeError();
3839 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3840 if (Type(value) !== 'object') throw TypeError('Expected object');
3841 return S['[[WeakSetData]]'].remove(value);
3842 });
3843
3844 // 23.4.3.4 WeakSet.prototype.has ( value )
3845 define(
3846 WeakSet.prototype, 'has',
3847 function has(key) {
3848 var S = strict(this);
3849 if (Type(S) !== 'object') throw TypeError();
3850 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3851 if (Type(key) !== 'object') throw TypeError('Expected object');
3852 return S['[[WeakSetData]]'].has(key);
3853 });
3854
3855 // 23.4.3.5 WeakSet.prototype [ @@toStringTag ]
3856 define(global.WeakSet.prototype, $$toStringTag, 'WeakSet');
3857
3858 // 23.4.4 Properties of WeakSet Instances
3859
3860 // Polyfills for incomplete native implementations:
3861 (function() {
3862 var ws = new global.WeakSet();
3863 var orig = global.WeakSet.prototype.add;
3864 define(global.WeakSet.prototype, 'add', function add() {
3865 orig.apply(this, arguments);
3866 return this;
3867 }, ws.add({}) !== ws);
3868 }());
3869 }());
3870
3871 // ---------------------------------------
3872 // 24 Structured Data
3873 // ---------------------------------------
3874
3875 // ---------------------------------------
3876 // 24.1 ArrayBuffer Objects
3877 // ---------------------------------------
3878
3879 // See typedarray.js for TypedArray polyfill
3880
3881 (function() {
3882 if (!('ArrayBuffer' in global))
3883 return;
3884
3885 // 24.1.1 Abstract Operations For ArrayBuffer Objects
3886 // 24.1.1.1 AllocateArrayBuffer( constructor, byteLength )
3887 // 24.1.1.2 IsDetachedBuffer( arrayBuffer )
3888 // 24.1.1.3 DetachArrayBuffer( arrayBuffer )
3889 // 24.1.1.4 CloneArrayBuffer( srcBuffer, srcByteOffset [, cloneConstructor] )
3890 // 24.1.1.5 GetValueFromBuffer ( arrayBuffer, byteIndex, type, isLittleEndian )
3891 // 24.1.1.6 SetValueInBuffer ( arrayBuffer, byteIndex, type, value, isLittleEndian )
3892 // 24.1.2 The ArrayBuffer Constructor
3893 // 24.1.2.1 ArrayBuffer( length )
3894 // 24.1.3 Properties of the ArrayBuffer Constructor
3895
3896 // 24.1.3.1 ArrayBuffer.isView ( arg )
3897 define(
3898 ArrayBuffer, 'isView',
3899 function isView(arg) {
3900 if (Type(arg) !== 'object') return false;
3901 if ('buffer' in arg && arg.buffer instanceof ArrayBuffer) return true;
3902 return false;
3903 });
3904
3905 // 24.1.3.2 ArrayBuffer.prototype
3906 // 24.1.3.3 get ArrayBuffer [ @@species ]
3907 // 24.1.4 Properties of the ArrayBuffer Prototype Object
3908 // 24.1.4.1 get ArrayBuffer.prototype.byteLength
3909 // 24.1.4.2 ArrayBuffer.prototype.constructor
3910 // 24.1.4.3 ArrayBuffer.prototype.slice ( start , end)
3911
3912 // 24.1.4.4 ArrayBuffer.prototype [ @@toStringTag ]
3913 define(ArrayBuffer.prototype, $$toStringTag, 'ArrayBuffer');
3914
3915 // 24.1.5 Properties of the ArrayBuffer Instances
3916 }());
3917
3918 // ---------------------------------------
3919 // 24.2 DataView Objects
3920 // ---------------------------------------
3921
3922 // See typedarray.js for TypedArray polyfill
3923
3924 (function() {
3925 if (!('DataView' in global))
3926 return;
3927
3928 // 24.2.1 Abstract Operations For DataView Objects
3929 // 24.2.1.1 GetViewValue(view, requestIndex, isLittleEndian, type)
3930 // 24.2.1.2 SetViewValue(view, requestIndex, isLittleEndian, type, value)
3931 // 24.2.2 The DataView Constructor
3932 // 24.2.2.1 DataView (buffer [ , byteOffset [ , byteLength ] ] )
3933 // 24.2.3 Properties of the DataView Constructor
3934 // 24.2.3.1 DataView.prototype
3935 // 24.2.4 Properties of the DataView Prototype Object
3936 // 24.2.4.1 get DataView.prototype.buffer
3937 // 24.2.4.2 get DataView.prototype.byteLength
3938 // 24.2.4.3 get DataView.prototype.byteOffset
3939 // 24.2.4.4 DataView.prototype.constructor
3940 // 24.2.4.5 DataView.prototype.getFloat32 ( byteOffset [ , littleEndian ] )
3941 // 24.2.4.6 DataView.prototype.getFloat64 ( byteOffset [ , littleEndian ] )
3942 // 24.2.4.7 DataView.prototype.getInt8 ( byteOffset )
3943 // 24.2.4.8 DataView.prototype.getInt16 ( byteOffset [ , littleEndian ] )
3944 // 24.2.4.9 DataView.prototype.getInt32 ( byteOffset [ , littleEndian ] )
3945 // 24.2.4.10 DataView.prototype.getUint8 ( byteOffset )
3946 // 24.2.4.11 DataView.prototype.getUint16 ( byteOffset [ , littleEndian ] )
3947 // 24.2.4.12 DataView.prototype.getUint32 ( byteOffset [ , littleEndian ] )
3948 // 24.2.4.13 DataView.prototype.setFloat32 ( byteOffset, value [ , littleEndian ] )
3949 // 24.2.4.14 DataView.prototype.setFloat64 ( byteOffset, value [ , littleEndian ] )
3950 // 24.2.4.15 DataView.prototype.setInt8 ( byteOffset, value )
3951 // 24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
3952 // 24.2.4.17 DataView.prototype.setInt32 ( byteOffset, value [ , littleEndian ] )
3953 // 24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
3954 // 24.2.4.19 DataView.prototype.setUint16 ( byteOffset, value [ , littleEndian ] )
3955 // 24.2.4.20 DataView.prototype.setUint32 ( byteOffset, value [ , littleEndian ] )
3956
3957 // 24.2.4.21 DataView.prototype[ @@toStringTag ]
3958 define(DataView.prototype, $$toStringTag, 'DataView');
3959
3960 // 24.2.5 Properties of DataView Instances
3961 }());
3962
3963 // ---------------------------------------
3964 // 24.3 The JSON Object
3965 // ---------------------------------------
3966
3967 // 24.3.1 JSON.parse ( text [ , reviver ] )
3968 // 24.3.2 JSON.stringify ( value [ , replacer [ , space ] ] )
3969 // 24.3.3 JSON [ @@toStringTag ]
3970 define(JSON, $$toStringTag, 'JSON');
3971
3972 // ---------------------------------------
3973 // 25.1 Iteration
3974 // ---------------------------------------
3975
3976 // 25.1.1 Common Iteration Interfaces
3977 // 25.1.1.1 The Iterable Interface
3978 // 25.1.1.2 The Iterator Interface
3979 // 25.1.1.3 The IteratorResult Interface
3980
3981 // 25.1.2 The %IteratorPrototype% Object
3982 // Defined earlier, so other prototypes can reference it.
3983 // 25.1.2.1 %IteratorPrototype% [ @@iterator ] ( )
3984 define($IteratorPrototype$, $$iterator, function() {
3985 return this;
3986 });
3987
3988
3989 // ---------------------------------------
3990 // 25.4 Promise Objects
3991 // ---------------------------------------
3992
3993 (function() {
3994 // 25.4 Promise Objects
3995
3996 // 25.4.1 Promise Abstract Operations
3997
3998 // 25.4.1.1 PromiseCapability Records
3999 // 25.4.1.1.1 IfAbruptRejectPromise ( value, capability )
4000
4001 function IfAbruptRejectPromise(value, capability) {
4002 var rejectResult = capability['[[Reject]]'].call(undefined, value);
4003 return capability['[[Promise]]'];
4004 }
4005
4006 // 25.4.1.2 PromiseReaction Records
4007
4008 // 25.4.1.3 CreateResolvingFunctions ( promise )
4009
4010 function CreateResolvingFunctions(promise) {
4011 var alreadyResolved = {'[[value]]': false};
4012 var resolve = PromiseResolveFunction();
4013 set_internal(resolve, '[[Promise]]', promise);
4014 set_internal(resolve, '[[AlreadyResolved]]', alreadyResolved);
4015 var reject = PromiseRejectFunction();
4016 set_internal(reject, '[[Promise]]', promise);
4017 set_internal(reject, '[[AlreadyResolved]]', alreadyResolved);
4018 return { '[[Resolve]]': resolve, '[[Reject]]': reject};
4019 }
4020
4021 // 25.4.1.3.1 Promise Reject Functions
4022
4023 function PromiseRejectFunction() {
4024 var F = function(reason) {
4025 console.assert(Type(F['[[Promise]]']) === 'object');
4026 var promise = F['[[Promise]]'];
4027 var alreadyResolved = F['[[AlreadyResolved]]'];
4028 if (alreadyResolved['[[value]]']) return undefined;
4029 set_internal(alreadyResolved, '[[value]]', true);
4030 return RejectPromise(promise, reason);
4031 };
4032 return F;
4033 }
4034
4035 // 25.4.1.3.2 Promise Resolve Functions
4036
4037 function PromiseResolveFunction() {
4038 var F = function(resolution) {
4039 console.assert(Type(F['[[Promise]]']) === 'object');
4040 var promise = F['[[Promise]]'];
4041 var alreadyResolved = F['[[AlreadyResolved]]'];
4042 if (alreadyResolved['[[value]]']) return undefined;
4043 set_internal(alreadyResolved, '[[value]]', true);
4044
4045 if (SameValue(resolution, promise)) {
4046 var selfResolutionError = TypeError();
4047 return RejectPromise(promise, selfResolutionError);
4048 }
4049 if (Type(resolution) !== 'object')
4050 return FulfillPromise(promise, resolution);
4051 try {
4052 var then = resolution['then'];
4053 } catch(then) {
4054 return RejectPromise(promise, then);
4055 }
4056 if (!IsCallable(then))
4057 return FulfillPromise(promise, resolution);
4058 EnqueueJob('PromiseJobs', PromiseResolveThenableJob, [promise, resolution, then]);
4059 return undefined;
4060 };
4061 return F;
4062 }
4063
4064 // 25.4.1.4 FulfillPromise ( promise, value )
4065
4066 function FulfillPromise(promise, value) {
4067 console.assert(promise['[[PromiseState]]'] === 'pending');
4068 var reactions = promise['[[PromiseFulfillReactions]]'];
4069 set_internal(promise, '[[PromiseResult]]', value);
4070 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
4071 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
4072 set_internal(promise, '[[PromiseState]]', 'fulfilled');
4073 return TriggerPromiseReactions(reactions, value);
4074 }
4075
4076 // 25.4.1.5 NewPromiseCapability ( C )
4077
4078 function NewPromiseCapability(c) {
4079 // To keep Promise hermetic, this doesn't look much like the spec.
4080 return CreatePromiseCapabilityRecord(undefined, c);
4081 }
4082
4083 // 25.4.1.5.1 CreatePromiseCapabilityRecord ( promise, constructor )
4084
4085 function CreatePromiseCapabilityRecord(promise, constructor) {
4086 // To keep Promise hermetic, this doesn't look much like the spec.
4087 console.assert(IsConstructor(constructor));
4088 var promiseCapability = {};
4089 set_internal(promiseCapability, '[[Promise]]', promise);
4090 set_internal(promiseCapability, '[[Resolve]]', undefined);
4091 set_internal(promiseCapability, '[[Reject]]', undefined);
4092 var executor = GetCapabilitiesExecutor();
4093 set_internal(executor, '[[Capability]]', promiseCapability);
4094
4095 // NOTE: Differs from spec; object is constructed here
4096 var constructorResult = promise = new constructor(executor);
4097 set_internal(promiseCapability, '[[Promise]]', promise);
4098
4099 if (!IsCallable(promiseCapability['[[Resolve]]'])) throw TypeError();
4100 if (!IsCallable(promiseCapability['[[Reject]]'])) throw TypeError();
4101 if (Type(constructorResult) === 'object' && !SameValue(promise, constructorResult)) throw TypeError();
4102 return promiseCapability;
4103 }
4104
4105 // 25.4.1.5.2 GetCapabilitiesExecutor Functions
4106
4107 function GetCapabilitiesExecutor() {
4108 var F = function(resolve, reject) {
4109 console.assert(F['[[Capability]]']);
4110 var promiseCapability = F['[[Capability]]'];
4111 if (promiseCapability['[[Resolve]]'] !== undefined) throw TypeError();
4112 if (promiseCapability['[[Reject]]'] !== undefined) throw TypeError();
4113 set_internal(promiseCapability, '[[Resolve]]', resolve);
4114 set_internal(promiseCapability, '[[Reject]]', reject);
4115 return undefined;
4116 };
4117 return F;
4118 }
4119
4120 // 25.4.1.6 IsPromise ( x )
4121
4122 function IsPromise(x) {
4123 if (Type(x) !== 'object') return false;
4124 if (!('[[PromiseState]]' in x)) return false;
4125 if (x['[[PromiseState]]'] === undefined) return false;
4126 return true;
4127 }
4128
4129 // 25.4.1.7 RejectPromise ( promise, reason )
4130
4131 function RejectPromise(promise, reason) {
4132 console.assert(promise['[[PromiseState]]'] === 'pending');
4133 var reactions = promise['[[PromiseRejectReactions]]'];
4134 set_internal(promise, '[[PromiseResult]]', reason);
4135 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
4136 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
4137 set_internal(promise, '[[PromiseState]]', 'rejected');
4138 return TriggerPromiseReactions(reactions, reason);
4139 }
4140
4141 // 25.4.1.8 TriggerPromiseReactions ( reactions, argument )
4142
4143 function TriggerPromiseReactions(reactions, argument) {
4144 for (var i = 0, len = reactions.length; i < len; ++i)
4145 EnqueueJob('PromiseJobs', PromiseReactionJob, [reactions[i], argument]);
4146 return undefined;
4147 }
4148
4149 // 25.4.2 Promise Jobs
4150
4151 // 25.4.2.1 PromiseReactionJob ( reaction, argument )
4152
4153 function PromiseReactionJob(reaction, argument) {
4154 var promiseCapability = reaction['[[Capabilities]]'];
4155 var handler = reaction['[[Handler]]'];
4156 var handlerResult, status;
4157 try {
4158 if (handler === 'Identity') handlerResult = argument;
4159 else if (handler === 'Thrower') throw argument;
4160 else handlerResult = handler.call(undefined, argument);
4161 } catch (handlerResult) {
4162 status = promiseCapability['[[Reject]]'].call(undefined, handlerResult);
4163 NextJob(status); return;
4164 }
4165 status = promiseCapability['[[Resolve]]'].call(undefined, handlerResult);
4166 NextJob(status);
4167 }
4168
4169 // 25.4.2.2 PromiseResolveThenableJob ( promiseToResolve, thenable, then)
4170
4171 function PromiseResolveThenableJob(promiseToResolve, thenable, then) {
4172 // SPEC BUG: promise vs. promiseToResolve
4173 var resolvingFunctions = CreateResolvingFunctions(promiseToResolve);
4174 try {
4175 var thenCallResult = then.call(thenable, resolvingFunctions['[[Resolve]]'],
4176 resolvingFunctions['[[Reject]]']);
4177 } catch (thenCallResult) {
4178 var status = resolvingFunctions['[[Reject]]'].call(undefined, thenCallResult);
4179 NextJob(status); return;
4180 }
4181 NextJob(thenCallResult);
4182 }
4183
4184 // 25.4.3 The Promise Constructor
4185
4186 // 25.4.3.1 Promise ( executor )
4187
4188 function Promise(executor) {
4189 var config = { configurable: false, enumerable: false, writable: true, value: undefined };
4190 Object.defineProperty(this, '[[PromiseState]]', config);
4191 Object.defineProperty(this, '[[PromiseConstructor]]', config);
4192 Object.defineProperty(this, '[[PromiseResult]]', config);
4193 Object.defineProperty(this, '[[PromiseFulfillReactions]]', config);
4194 Object.defineProperty(this, '[[PromiseRejectReactions]]', config);
4195
4196 var promise = this;
4197 if (Type(promise) !== 'object') throw new TypeError();
4198 if (!('[[PromiseState]]' in promise)) throw TypeError();
4199 if (promise['[[PromiseState]]'] !== undefined) throw TypeError();
4200 if (!IsCallable(executor)) throw TypeError();
4201
4202 set_internal(promise, '[[PromiseConstructor]]', Promise);
4203
4204 return InitializePromise(promise, executor);
4205 }
4206
4207 // 25.4.3.1.1 InitializePromise ( promise, executor )
4208
4209 function InitializePromise(promise, executor) {
4210 console.assert('[[PromiseState]]' in promise);
4211 console.assert(IsCallable(executor));
4212 set_internal(promise, '[[PromiseState]]', 'pending');
4213 set_internal(promise, '[[PromiseFulfillReactions]]', []);
4214 set_internal(promise, '[[PromiseRejectReactions]]', []);
4215 var resolvingFunctions = CreateResolvingFunctions(promise);
4216 try {
4217 var completion = executor.call(undefined, resolvingFunctions['[[Resolve]]'],
4218 resolvingFunctions['[[Reject]]']);
4219 } catch (completion) {
4220 var status = resolvingFunctions['[[Reject]]'].call(undefined, completion);
4221 }
4222 return promise;
4223 }
4224
4225 // 25.4.4 Properties of the Promise Constructor
4226 // 25.4.4.1 Promise.all ( iterable )
4227
4228 define(Promise, 'all', function all(iterable) {
4229 var c = strict(this);
4230 var promiseCapability = NewPromiseCapability(c);
4231 try {
4232 var iterator = GetIterator(iterable);
4233 } catch (value) {
4234 promiseCapability['[[Reject]]'].call(undefined, value);
4235 return promiseCapability['[[Promise]]'];
4236 }
4237 var values = [];
4238 var remainingElementsCount = { value: 1 };
4239 var index = 0;
4240 while (true) {
4241 try {
4242 var next = IteratorStep(iterator);
4243 } catch (value) {
4244 promiseCapability['[[Reject]]'].call(undefined, value);
4245 return promiseCapability['[[Promise]]'];
4246 }
4247 if (!next) {
4248 remainingElementsCount.value -= 1;
4249 if (remainingElementsCount.value === 0) {
4250 var resolveResult = promiseCapability['[[Resolve]]'].apply(undefined, values);
4251
4252
4253 }
4254 return promiseCapability['[[Promise]]'];
4255 }
4256 try {
4257 var nextValue = IteratorValue(next);
4258 } catch (value) {
4259 promiseCapability['[[Reject]]'].call(undefined, value);
4260 return promiseCapability['[[Promise]]'];
4261 }
4262 try {
4263 var nextPromise = c.resolve(nextValue);
4264 } catch (value) {
4265 promiseCapability['[[Reject]]'].call(undefined, value);
4266 return promiseCapability['[[Promise]]'];
4267 }
4268 var resolveElement = PromiseAllResolveElementFunction();
4269 set_internal(resolveElement, '[[AlreadyCalled]]', { value: false });
4270 set_internal(resolveElement, '[[Index]]', index);
4271 set_internal(resolveElement, '[[Values]]', values);
4272 set_internal(resolveElement, '[[Capabilities]]', promiseCapability);
4273 set_internal(resolveElement, '[[RemainingElements]]', remainingElementsCount);
4274 remainingElementsCount.value += 1;
4275 try {
4276 var result = nextPromise.then(resolveElement, promiseCapability['[[Reject]]']);
4277 } catch (value) {
4278 promiseCapability['[[Reject]]'].call(undefined, value);
4279 return promiseCapability['[[Promise]]'];
4280 }
4281 index += 1;
4282 }
4283 });
4284
4285 // 25.4.4.1.1 Promise.all Resolve Element Functions
4286
4287 function PromiseAllResolveElementFunction() {
4288 var F = function(x) {
4289 var alreadyCalled = F['[[AlreadyCalled]]'];
4290 if (alreadyCalled.value) return undefined;
4291 alreadyCalled.value = true;
4292 var index = F['[[Index]]'];
4293 var values = F['[[Values]]'];
4294 var promiseCapability = F['[[Capabilities]]'];
4295 var remainingElementsCount = F['[[RemainingElements]]'];
4296 try {
4297 values[index] = x;
4298 } catch (result) {
4299 promiseCapability['[[Reject]]'].call(undefined, result);
4300 return promiseCapability['[[Promise]]'];
4301 }
4302 remainingElementsCount.value -= 1;
4303 if (remainingElementsCount.value === 0)
4304 return promiseCapability['[[Resolve]]'].call(undefined, values);
4305 return undefined;
4306 };
4307 return F;
4308 }
4309
4310 // 25.4.4.2 Promise.prototype
4311
4312 Promise.prototype = {};
4313
4314 // 25.4.4.3 Promise.race ( iterable )
4315
4316 define(Promise, 'race', function race(iterable) {
4317 var c = strict(this);
4318 var promiseCapability = NewPromiseCapability(c);
4319 try {
4320 var iterator = GetIterator(iterable);
4321 } catch (value) {
4322 promiseCapability['[[Reject]]'].call(undefined, value);
4323 return promiseCapability['[[Promise]]'];
4324 }
4325 while (true) {
4326 try {
4327 var next = IteratorStep(iterator);
4328 } catch (value) {
4329 promiseCapability['[[Reject]]'].call(undefined, value);
4330 return promiseCapability['[[Promise]]'];
4331 }
4332 if (!next) return promiseCapability['[[Promise]]'];
4333 try {
4334 var nextValue = IteratorValue(next);
4335 } catch (value) {
4336 promiseCapability['[[Reject]]'].call(undefined, value);
4337 return promiseCapability['[[Promise]]'];
4338 }
4339 try {
4340 var nextPromise = c.resolve(nextValue);
4341 } catch (value) {
4342 promiseCapability['[[Reject]]'].call(undefined, value);
4343 return promiseCapability['[[Promise]]'];
4344 }
4345 try {
4346 nextPromise.then(promiseCapability['[[Resolve]]'], promiseCapability['[[Reject]]']);
4347 } catch (value) {
4348 promiseCapability['[[Reject]]'].call(undefined, value);
4349 return promiseCapability['[[Promise]]'];
4350 }
4351 }
4352 });
4353
4354 // 25.4.4.4 Promise.reject ( r )
4355
4356 define(Promise, 'reject', function reject(r) {
4357 var c = strict(this);
4358 var promiseCapability = NewPromiseCapability(c);
4359 var rejectResult = promiseCapability['[[Reject]]'].call(undefined, r);
4360 return promiseCapability['[[Promise]]'];
4361 });
4362
4363 // 25.4.4.5 Promise.resolve ( x )
4364
4365 define(Promise, 'resolve', function resolve(x) {
4366 var c = strict(this);
4367 if (IsPromise(x)) {
4368 var constructor = x['[[PromiseConstructor]]'];
4369 if (SameValue(constructor, c)) return x;
4370 }
4371 var promiseCapability = NewPromiseCapability(c);
4372 var resolveResult = promiseCapability['[[Resolve]]'].call(undefined, x);
4373 return promiseCapability['[[Promise]]'];
4374 });
4375
4376 // 25.4.4.6 Promise [ @@create ] ( )
4377 // 25.4.4.6.1 AllocatePromise ( constructor )
4378 // 25.4.5 Properties of the Promise Prototype Object
4379 // 25.4.5.1 Promise.prototype.catch ( onRejected )
4380
4381 define(Promise.prototype, 'catch', function catch_(onRejected) {
4382 var promise = this;
4383 return promise.then(undefined, onRejected);
4384 });
4385
4386 // 25.4.5.2 Promise.prototype.constructor
4387
4388 Promise.prototype.constructor = Promise;
4389
4390 // 25.4.5.3 Promise.prototype.then ( onFulfilled , onRejected )
4391
4392 define(Promise.prototype, 'then', function then(onFulfilled, onRejected) {
4393 var promise = this;
4394 if (!IsPromise(promise)) throw TypeError();
4395 if (!IsCallable(onFulfilled)) onFulfilled = 'Identity';
4396 if (!IsCallable(onRejected)) onRejected = 'Thrower';
4397 var c = promise.constructor;
4398 var promiseCapability = NewPromiseCapability(c);
4399 var fulfillReaction = { '[[Capabilities]]': promiseCapability,
4400 '[[Handler]]': onFulfilled };
4401 var rejectReaction = { '[[Capabilities]]': promiseCapability,
4402 '[[Handler]]': onRejected };
4403 if (promise['[[PromiseState]]'] === 'pending') {
4404 promise['[[PromiseFulfillReactions]]'].push(fulfillReaction);
4405 promise['[[PromiseRejectReactions]]'].push(rejectReaction);
4406 } else if (promise['[[PromiseState]]'] === 'fulfilled') {
4407 var value = promise['[[PromiseResult]]'];
4408 EnqueueJob('PromiseJobs', PromiseReactionJob, [fulfillReaction, value]);
4409 } else if (promise['[[PromiseState]]'] === 'rejected') {
4410 var reason = promise['[[PromiseResult]]'];
4411 EnqueueJob('PromiseJobs', PromiseReactionJob, [rejectReaction, reason]);
4412 }
4413 return promiseCapability['[[Promise]]'];
4414 });
4415
4416 // 25.4.6 Properties of Promise Instances
4417
4418 if (!('Promise' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4419 global.Promise = Promise;
4420
4421 // Patch early Promise.cast vs. Promise.resolve implementations
4422 if ('cast' in global.Promise) global.Promise.resolve = global.Promise.cast;
4423 }());
4424
4425 // 25.4.5.1 Promise.prototype [ @@toStringTag ]
4426 define(Promise.prototype, $$toStringTag, 'Promise');
4427
4428 // ---------------------------------------
4429 // 26 Reflection
4430 // ---------------------------------------
4431
4432 (function() {
4433 // 26.1 The Reflect Object
4434 if (!('Reflect' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4435 global.Reflect = {};
4436
4437 // 26.1.1 Reflect.apply ( target, thisArgument, argumentsList )
4438 define(
4439 Reflect, 'apply',
4440 function apply(target, thisArgument, argumentsList) {
4441 if (!IsCallable(target)) throw TypeError();
4442 return Function.prototype.apply.call(target, thisArgument, argumentsList);
4443 });
4444
4445 // 26.1.2 Reflect.construct ( target, argumentsList [, newTarget] )
4446 define(
4447 Reflect, 'construct',
4448 function construct(target, argumentsList) {
4449 return __cons(target, argumentsList);
4450 });
4451
4452 // 26.1.3 Reflect.defineProperty ( target, propertyKey, attributes )
4453 define(
4454 Reflect, 'defineProperty',
4455 function defineProperty(target, propertyKey, attributes) {
4456 try {
4457 Object.defineProperty(target, propertyKey, attributes);
4458 return true;
4459 } catch (_) {
4460 return false;
4461 }
4462 });
4463
4464 // 26.1.4 Reflect.deleteProperty ( target, propertyKey )
4465 define(
4466 Reflect, 'deleteProperty',
4467 function deleteProperty(target,name) {
4468 try {
4469 delete target[name];
4470 return !HasOwnProperty(target, name);
4471 } catch (_) {
4472 return false;
4473 }
4474 });
4475
4476 // 26.1.5 Reflect.enumerate ( target )
4477 define(
4478 Reflect, 'enumerate',
4479 function enumerate(target) {
4480 target = ToObject(target);
4481 var iterator = Enumerate(target);
4482 return iterator;
4483 });
4484
4485 // 26.1.6 Reflect.get ( target, propertyKey [ , receiver ])
4486 define(
4487 Reflect, 'get',
4488 function get(target, name, receiver) {
4489 target = ToObject(target);
4490 name = String(name);
4491 receiver = (receiver === undefined) ? target : ToObject(receiver);
4492 var desc = getPropertyDescriptor(target, name);
4493 if (desc && 'get' in desc)
4494 return Function.prototype.call.call(desc['get'], receiver);
4495 return target[name];
4496 });
4497
4498 // 26.1.7 Reflect.getOwnPropertyDescriptor ( target, propertyKey )
4499 define(
4500 Reflect, 'getOwnPropertyDescriptor',
4501 Object.getOwnPropertyDescriptor);
4502
4503 // 26.1.8 Reflect.getPrototypeOf ( target )
4504 define(
4505 Reflect, 'getPrototypeOf',
4506 Object.getPrototypeOf);
4507
4508 // 26.1.9 Reflect.has ( target, propertyKey )
4509 define(
4510 Reflect, 'has',
4511 function has(target,name) {
4512 return String(name) in ToObject(target);
4513 });
4514
4515 // 26.1.10 Reflect.isExtensible (target)
4516 define(
4517 Reflect, 'isExtensible',
4518 Object.isExtensible);
4519
4520 // 26.1.11 Reflect.ownKeys ( target )
4521 define(
4522 Reflect, 'ownKeys',
4523 function ownKeys(target) {
4524 var obj = ToObject(target);
4525 return Object.getOwnPropertyNames(obj);
4526 });
4527
4528 // 26.1.12 Reflect.preventExtensions ( target )
4529 define(
4530 Reflect, 'preventExtensions',
4531 function preventExtensions(target) {
4532 try { Object.preventExtensions(target); return true; } catch (_) { return false; }
4533 });
4534
4535 // 26.1.13 Reflect.set ( target, propertyKey, V [ , receiver ] )
4536 define(
4537 Reflect, 'set',
4538 function set(target, name, value, receiver) {
4539 target = ToObject(target);
4540 name = String(name);
4541 receiver = (receiver === undefined) ? target : ToObject(receiver);
4542 var desc = getPropertyDescriptor(target, name);
4543 try {
4544 if (desc && 'set' in desc)
4545 Function.prototype.call.call(desc['set'], receiver, value);
4546 else
4547 target[name] = value;
4548 return true;
4549 } catch (_) {
4550 return false;
4551 }
4552 });
4553
4554 // 26.1.14 Reflect.setPrototypeOf ( target, proto )
4555 define(
4556 Reflect, 'setPrototypeOf',
4557 function setPrototypeOf(target, proto) {
4558 try {
4559 target.__proto__ = proto;
4560 return Reflect.getPrototypeOf(target) === proto;
4561 } catch(_) {
4562 return false;
4563 }
4564 });
4565
4566 }());
4567
4568 // ---------------------------------------
4569 // 26.2 Proxy Objects
4570 // ---------------------------------------
4571
4572 // Not polyfillable.
4573
4574 }(self));
4575
4576 // This helper is defined outside the main scope so that the use of
4577 // 'eval' does not taint the scope for minifiers.
4578 function __cons(t, a) {
4579 return eval('new t(' + a.map(function(_, i) { return 'a[' + i + ']'; }).join(',') + ')');
4580 }
4581 </script>
4582 <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){
4583 'use strict'
4584
4585 exports.byteLength = byteLength
4586 exports.toByteArray = toByteArray
4587 exports.fromByteArray = fromByteArray
4588
4589 var lookup = []
4590 var revLookup = []
4591 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
4592
4593 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
4594 for (var i = 0, len = code.length; i < len; ++i) {
4595 lookup[i] = code[i]
4596 revLookup[code.charCodeAt(i)] = i
4597 }
4598
4599 revLookup['-'.charCodeAt(0)] = 62
4600 revLookup['_'.charCodeAt(0)] = 63
4601
4602 function placeHoldersCount (b64) {
4603 var len = b64.length
4604 if (len % 4 > 0) {
4605 throw new Error('Invalid string. Length must be a multiple of 4')
4606 }
4607
4608 // the number of equal signs (place holders)
4609 // if there are two placeholders, than the two characters before it
4610 // represent one byte
4611 // if there is only one, then the three characters before it represent 2 bytes
4612 // this is just a cheap hack to not do indexOf twice
4613 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
4614 }
4615
4616 function byteLength (b64) {
4617 // base64 is 4/3 + up to two characters of the original data
4618 return b64.length * 3 / 4 - placeHoldersCount(b64)
4619 }
4620
4621 function toByteArray (b64) {
4622 var i, j, l, tmp, placeHolders, arr
4623 var len = b64.length
4624 placeHolders = placeHoldersCount(b64)
4625
4626 arr = new Arr(len * 3 / 4 - placeHolders)
4627
4628 // if there are placeholders, only get up to the last complete 4 chars
4629 l = placeHolders > 0 ? len - 4 : len
4630
4631 var L = 0
4632
4633 for (i = 0, j = 0; i < l; i += 4, j += 3) {
4634 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
4635 arr[L++] = (tmp >> 16) & 0xFF
4636 arr[L++] = (tmp >> 8) & 0xFF
4637 arr[L++] = tmp & 0xFF
4638 }
4639
4640 if (placeHolders === 2) {
4641 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
4642 arr[L++] = tmp & 0xFF
4643 } else if (placeHolders === 1) {
4644 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
4645 arr[L++] = (tmp >> 8) & 0xFF
4646 arr[L++] = tmp & 0xFF
4647 }
4648
4649 return arr
4650 }
4651
4652 function tripletToBase64 (num) {
4653 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
4654 }
4655
4656 function encodeChunk (uint8, start, end) {
4657 var tmp
4658 var output = []
4659 for (var i = start; i < end; i += 3) {
4660 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
4661 output.push(tripletToBase64(tmp))
4662 }
4663 return output.join('')
4664 }
4665
4666 function fromByteArray (uint8) {
4667 var tmp
4668 var len = uint8.length
4669 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
4670 var output = ''
4671 var parts = []
4672 var maxChunkLength = 16383 // must be multiple of 3
4673
4674 // go through the array every three bytes, we'll deal with trailing stuff later
4675 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
4676 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
4677 }
4678
4679 // pad the end with zeros, but make sure to not forget the extra bytes
4680 if (extraBytes === 1) {
4681 tmp = uint8[len - 1]
4682 output += lookup[tmp >> 2]
4683 output += lookup[(tmp << 4) & 0x3F]
4684 output += '=='
4685 } else if (extraBytes === 2) {
4686 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
4687 output += lookup[tmp >> 10]
4688 output += lookup[(tmp >> 4) & 0x3F]
4689 output += lookup[(tmp << 2) & 0x3F]
4690 output += '='
4691 }
4692
4693 parts.push(output)
4694
4695 return parts.join('')
4696 }
4697
4698 },{}],2:[function(require,module,exports){
4699 /*!
4700 * The buffer module from node.js, for the browser.
4701 *
4702 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
4703 * @license MIT
4704 */
4705 /* eslint-disable no-proto */
4706
4707 'use strict'
4708
4709 var base64 = require('base64-js')
4710 var ieee754 = require('ieee754')
4711
4712 exports.Buffer = Buffer
4713 exports.SlowBuffer = SlowBuffer
4714 exports.INSPECT_MAX_BYTES = 50
4715
4716 var K_MAX_LENGTH = 0x7fffffff
4717 exports.kMaxLength = K_MAX_LENGTH
4718
4719 /**
4720 * If `Buffer.TYPED_ARRAY_SUPPORT`:
4721 * === true Use Uint8Array implementation (fastest)
4722 * === false Print warning and recommend using `buffer` v4.x which has an Object
4723 * implementation (most compatible, even IE6)
4724 *
4725 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
4726 * Opera 11.6+, iOS 4.2+.
4727 *
4728 * We report that the browser does not support typed arrays if the are not subclassable
4729 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
4730 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
4731 * for __proto__ and has a buggy typed array implementation.
4732 */
4733 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
4734
4735 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
4736 typeof console.error === 'function') {
4737 console.error(
4738 'This browser lacks typed array (Uint8Array) support which is required by ' +
4739 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
4740 )
4741 }
4742
4743 function typedArraySupport () {
4744 // Can typed array instances can be augmented?
4745 try {
4746 var arr = new Uint8Array(1)
4747 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
4748 return arr.foo() === 42
4749 } catch (e) {
4750 return false
4751 }
4752 }
4753
4754 function createBuffer (length) {
4755 if (length > K_MAX_LENGTH) {
4756 throw new RangeError('Invalid typed array length')
4757 }
4758 // Return an augmented `Uint8Array` instance
4759 var buf = new Uint8Array(length)
4760 buf.__proto__ = Buffer.prototype
4761 return buf
4762 }
4763
4764 /**
4765 * The Buffer constructor returns instances of `Uint8Array` that have their
4766 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
4767 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
4768 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
4769 * returns a single octet.
4770 *
4771 * The `Uint8Array` prototype remains unmodified.
4772 */
4773
4774 function Buffer (arg, encodingOrOffset, length) {
4775 // Common case.
4776 if (typeof arg === 'number') {
4777 if (typeof encodingOrOffset === 'string') {
4778 throw new Error(
4779 'If encoding is specified then the first argument must be a string'
4780 )
4781 }
4782 return allocUnsafe(arg)
4783 }
4784 return from(arg, encodingOrOffset, length)
4785 }
4786
4787 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
4788 if (typeof Symbol !== 'undefined' && Symbol.species &&
4789 Buffer[Symbol.species] === Buffer) {
4790 Object.defineProperty(Buffer, Symbol.species, {
4791 value: null,
4792 configurable: true,
4793 enumerable: false,
4794 writable: false
4795 })
4796 }
4797
4798 Buffer.poolSize = 8192 // not used by this implementation
4799
4800 function from (value, encodingOrOffset, length) {
4801 if (typeof value === 'number') {
4802 throw new TypeError('"value" argument must not be a number')
4803 }
4804
4805 if (value instanceof ArrayBuffer) {
4806 return fromArrayBuffer(value, encodingOrOffset, length)
4807 }
4808
4809 if (typeof value === 'string') {
4810 return fromString(value, encodingOrOffset)
4811 }
4812
4813 return fromObject(value)
4814 }
4815
4816 /**
4817 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
4818 * if value is a number.
4819 * Buffer.from(str[, encoding])
4820 * Buffer.from(array)
4821 * Buffer.from(buffer)
4822 * Buffer.from(arrayBuffer[, byteOffset[, length]])
4823 **/
4824 Buffer.from = function (value, encodingOrOffset, length) {
4825 return from(value, encodingOrOffset, length)
4826 }
4827
4828 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
4829 // https://github.com/feross/buffer/pull/148
4830 Buffer.prototype.__proto__ = Uint8Array.prototype
4831 Buffer.__proto__ = Uint8Array
4832
4833 function assertSize (size) {
4834 if (typeof size !== 'number') {
4835 throw new TypeError('"size" argument must be a number')
4836 } else if (size < 0) {
4837 throw new RangeError('"size" argument must not be negative')
4838 }
4839 }
4840
4841 function alloc (size, fill, encoding) {
4842 assertSize(size)
4843 if (size <= 0) {
4844 return createBuffer(size)
4845 }
4846 if (fill !== undefined) {
4847 // Only pay attention to encoding if it's a string. This
4848 // prevents accidentally sending in a number that would
4849 // be interpretted as a start offset.
4850 return typeof encoding === 'string'
4851 ? createBuffer(size).fill(fill, encoding)
4852 : createBuffer(size).fill(fill)
4853 }
4854 return createBuffer(size)
4855 }
4856
4857 /**
4858 * Creates a new filled Buffer instance.
4859 * alloc(size[, fill[, encoding]])
4860 **/
4861 Buffer.alloc = function (size, fill, encoding) {
4862 return alloc(size, fill, encoding)
4863 }
4864
4865 function allocUnsafe (size) {
4866 assertSize(size)
4867 return createBuffer(size < 0 ? 0 : checked(size) | 0)
4868 }
4869
4870 /**
4871 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
4872 * */
4873 Buffer.allocUnsafe = function (size) {
4874 return allocUnsafe(size)
4875 }
4876 /**
4877 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
4878 */
4879 Buffer.allocUnsafeSlow = function (size) {
4880 return allocUnsafe(size)
4881 }
4882
4883 function fromString (string, encoding) {
4884 if (typeof encoding !== 'string' || encoding === '') {
4885 encoding = 'utf8'
4886 }
4887
4888 if (!Buffer.isEncoding(encoding)) {
4889 throw new TypeError('"encoding" must be a valid string encoding')
4890 }
4891
4892 var length = byteLength(string, encoding) | 0
4893 var buf = createBuffer(length)
4894
4895 var actual = buf.write(string, encoding)
4896
4897 if (actual !== length) {
4898 // Writing a hex string, for example, that contains invalid characters will
4899 // cause everything after the first invalid character to be ignored. (e.g.
4900 // 'abxxcd' will be treated as 'ab')
4901 buf = buf.slice(0, actual)
4902 }
4903
4904 return buf
4905 }
4906
4907 function fromArrayLike (array) {
4908 var length = array.length < 0 ? 0 : checked(array.length) | 0
4909 var buf = createBuffer(length)
4910 for (var i = 0; i < length; i += 1) {
4911 buf[i] = array[i] & 255
4912 }
4913 return buf
4914 }
4915
4916 function fromArrayBuffer (array, byteOffset, length) {
4917 if (byteOffset < 0 || array.byteLength < byteOffset) {
4918 throw new RangeError('\'offset\' is out of bounds')
4919 }
4920
4921 if (array.byteLength < byteOffset + (length || 0)) {
4922 throw new RangeError('\'length\' is out of bounds')
4923 }
4924
4925 var buf
4926 if (byteOffset === undefined && length === undefined) {
4927 buf = new Uint8Array(array)
4928 } else if (length === undefined) {
4929 buf = new Uint8Array(array, byteOffset)
4930 } else {
4931 buf = new Uint8Array(array, byteOffset, length)
4932 }
4933
4934 // Return an augmented `Uint8Array` instance
4935 buf.__proto__ = Buffer.prototype
4936 return buf
4937 }
4938
4939 function fromObject (obj) {
4940 if (Buffer.isBuffer(obj)) {
4941 var len = checked(obj.length) | 0
4942 var buf = createBuffer(len)
4943
4944 if (buf.length === 0) {
4945 return buf
4946 }
4947
4948 obj.copy(buf, 0, 0, len)
4949 return buf
4950 }
4951
4952 if (obj) {
4953 if (isArrayBufferView(obj) || 'length' in obj) {
4954 if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
4955 return createBuffer(0)
4956 }
4957 return fromArrayLike(obj)
4958 }
4959
4960 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
4961 return fromArrayLike(obj.data)
4962 }
4963 }
4964
4965 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
4966 }
4967
4968 function checked (length) {
4969 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
4970 // length is NaN (which is otherwise coerced to zero.)
4971 if (length >= K_MAX_LENGTH) {
4972 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
4973 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
4974 }
4975 return length | 0
4976 }
4977
4978 function SlowBuffer (length) {
4979 if (+length != length) { // eslint-disable-line eqeqeq
4980 length = 0
4981 }
4982 return Buffer.alloc(+length)
4983 }
4984
4985 Buffer.isBuffer = function isBuffer (b) {
4986 return b != null && b._isBuffer === true
4987 }
4988
4989 Buffer.compare = function compare (a, b) {
4990 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
4991 throw new TypeError('Arguments must be Buffers')
4992 }
4993
4994 if (a === b) return 0
4995
4996 var x = a.length
4997 var y = b.length
4998
4999 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
5000 if (a[i] !== b[i]) {
5001 x = a[i]
5002 y = b[i]
5003 break
5004 }
5005 }
5006
5007 if (x < y) return -1
5008 if (y < x) return 1
5009 return 0
5010 }
5011
5012 Buffer.isEncoding = function isEncoding (encoding) {
5013 switch (String(encoding).toLowerCase()) {
5014 case 'hex':
5015 case 'utf8':
5016 case 'utf-8':
5017 case 'ascii':
5018 case 'latin1':
5019 case 'binary':
5020 case 'base64':
5021 case 'ucs2':
5022 case 'ucs-2':
5023 case 'utf16le':
5024 case 'utf-16le':
5025 return true
5026 default:
5027 return false
5028 }
5029 }
5030
5031 Buffer.concat = function concat (list, length) {
5032 if (!Array.isArray(list)) {
5033 throw new TypeError('"list" argument must be an Array of Buffers')
5034 }
5035
5036 if (list.length === 0) {
5037 return Buffer.alloc(0)
5038 }
5039
5040 var i
5041 if (length === undefined) {
5042 length = 0
5043 for (i = 0; i < list.length; ++i) {
5044 length += list[i].length
5045 }
5046 }
5047
5048 var buffer = Buffer.allocUnsafe(length)
5049 var pos = 0
5050 for (i = 0; i < list.length; ++i) {
5051 var buf = list[i]
5052 if (!Buffer.isBuffer(buf)) {
5053 throw new TypeError('"list" argument must be an Array of Buffers')
5054 }
5055 buf.copy(buffer, pos)
5056 pos += buf.length
5057 }
5058 return buffer
5059 }
5060
5061 function byteLength (string, encoding) {
5062 if (Buffer.isBuffer(string)) {
5063 return string.length
5064 }
5065 if (isArrayBufferView(string) || string instanceof ArrayBuffer) {
5066 return string.byteLength
5067 }
5068 if (typeof string !== 'string') {
5069 string = '' + string
5070 }
5071
5072 var len = string.length
5073 if (len === 0) return 0
5074
5075 // Use a for loop to avoid recursion
5076 var loweredCase = false
5077 for (;;) {
5078 switch (encoding) {
5079 case 'ascii':
5080 case 'latin1':
5081 case 'binary':
5082 return len
5083 case 'utf8':
5084 case 'utf-8':
5085 case undefined:
5086 return utf8ToBytes(string).length
5087 case 'ucs2':
5088 case 'ucs-2':
5089 case 'utf16le':
5090 case 'utf-16le':
5091 return len * 2
5092 case 'hex':
5093 return len >>> 1
5094 case 'base64':
5095 return base64ToBytes(string).length
5096 default:
5097 if (loweredCase) return utf8ToBytes(string).length // assume utf8
5098 encoding = ('' + encoding).toLowerCase()
5099 loweredCase = true
5100 }
5101 }
5102 }
5103 Buffer.byteLength = byteLength
5104
5105 function slowToString (encoding, start, end) {
5106 var loweredCase = false
5107
5108 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
5109 // property of a typed array.
5110
5111 // This behaves neither like String nor Uint8Array in that we set start/end
5112 // to their upper/lower bounds if the value passed is out of range.
5113 // undefined is handled specially as per ECMA-262 6th Edition,
5114 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
5115 if (start === undefined || start < 0) {
5116 start = 0
5117 }
5118 // Return early if start > this.length. Done here to prevent potential uint32
5119 // coercion fail below.
5120 if (start > this.length) {
5121 return ''
5122 }
5123
5124 if (end === undefined || end > this.length) {
5125 end = this.length
5126 }
5127
5128 if (end <= 0) {
5129 return ''
5130 }
5131
5132 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
5133 end >>>= 0
5134 start >>>= 0
5135
5136 if (end <= start) {
5137 return ''
5138 }
5139
5140 if (!encoding) encoding = 'utf8'
5141
5142 while (true) {
5143 switch (encoding) {
5144 case 'hex':
5145 return hexSlice(this, start, end)
5146
5147 case 'utf8':
5148 case 'utf-8':
5149 return utf8Slice(this, start, end)
5150
5151 case 'ascii':
5152 return asciiSlice(this, start, end)
5153
5154 case 'latin1':
5155 case 'binary':
5156 return latin1Slice(this, start, end)
5157
5158 case 'base64':
5159 return base64Slice(this, start, end)
5160
5161 case 'ucs2':
5162 case 'ucs-2':
5163 case 'utf16le':
5164 case 'utf-16le':
5165 return utf16leSlice(this, start, end)
5166
5167 default:
5168 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
5169 encoding = (encoding + '').toLowerCase()
5170 loweredCase = true
5171 }
5172 }
5173 }
5174
5175 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
5176 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
5177 // reliably in a browserify context because there could be multiple different
5178 // copies of the 'buffer' package in use. This method works even for Buffer
5179 // instances that were created from another copy of the `buffer` package.
5180 // See: https://github.com/feross/buffer/issues/154
5181 Buffer.prototype._isBuffer = true
5182
5183 function swap (b, n, m) {
5184 var i = b[n]
5185 b[n] = b[m]
5186 b[m] = i
5187 }
5188
5189 Buffer.prototype.swap16 = function swap16 () {
5190 var len = this.length
5191 if (len % 2 !== 0) {
5192 throw new RangeError('Buffer size must be a multiple of 16-bits')
5193 }
5194 for (var i = 0; i < len; i += 2) {
5195 swap(this, i, i + 1)
5196 }
5197 return this
5198 }
5199
5200 Buffer.prototype.swap32 = function swap32 () {
5201 var len = this.length
5202 if (len % 4 !== 0) {
5203 throw new RangeError('Buffer size must be a multiple of 32-bits')
5204 }
5205 for (var i = 0; i < len; i += 4) {
5206 swap(this, i, i + 3)
5207 swap(this, i + 1, i + 2)
5208 }
5209 return this
5210 }
5211
5212 Buffer.prototype.swap64 = function swap64 () {
5213 var len = this.length
5214 if (len % 8 !== 0) {
5215 throw new RangeError('Buffer size must be a multiple of 64-bits')
5216 }
5217 for (var i = 0; i < len; i += 8) {
5218 swap(this, i, i + 7)
5219 swap(this, i + 1, i + 6)
5220 swap(this, i + 2, i + 5)
5221 swap(this, i + 3, i + 4)
5222 }
5223 return this
5224 }
5225
5226 Buffer.prototype.toString = function toString () {
5227 var length = this.length
5228 if (length === 0) return ''
5229 if (arguments.length === 0) return utf8Slice(this, 0, length)
5230 return slowToString.apply(this, arguments)
5231 }
5232
5233 Buffer.prototype.equals = function equals (b) {
5234 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
5235 if (this === b) return true
5236 return Buffer.compare(this, b) === 0
5237 }
5238
5239 Buffer.prototype.inspect = function inspect () {
5240 var str = ''
5241 var max = exports.INSPECT_MAX_BYTES
5242 if (this.length > 0) {
5243 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
5244 if (this.length > max) str += ' ... '
5245 }
5246 return '<Buffer ' + str + '>'
5247 }
5248
5249 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
5250 if (!Buffer.isBuffer(target)) {
5251 throw new TypeError('Argument must be a Buffer')
5252 }
5253
5254 if (start === undefined) {
5255 start = 0
5256 }
5257 if (end === undefined) {
5258 end = target ? target.length : 0
5259 }
5260 if (thisStart === undefined) {
5261 thisStart = 0
5262 }
5263 if (thisEnd === undefined) {
5264 thisEnd = this.length
5265 }
5266
5267 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
5268 throw new RangeError('out of range index')
5269 }
5270
5271 if (thisStart >= thisEnd && start >= end) {
5272 return 0
5273 }
5274 if (thisStart >= thisEnd) {
5275 return -1
5276 }
5277 if (start >= end) {
5278 return 1
5279 }
5280
5281 start >>>= 0
5282 end >>>= 0
5283 thisStart >>>= 0
5284 thisEnd >>>= 0
5285
5286 if (this === target) return 0
5287
5288 var x = thisEnd - thisStart
5289 var y = end - start
5290 var len = Math.min(x, y)
5291
5292 var thisCopy = this.slice(thisStart, thisEnd)
5293 var targetCopy = target.slice(start, end)
5294
5295 for (var i = 0; i < len; ++i) {
5296 if (thisCopy[i] !== targetCopy[i]) {
5297 x = thisCopy[i]
5298 y = targetCopy[i]
5299 break
5300 }
5301 }
5302
5303 if (x < y) return -1
5304 if (y < x) return 1
5305 return 0
5306 }
5307
5308 // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
5309 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
5310 //
5311 // Arguments:
5312 // - buffer - a Buffer to search
5313 // - val - a string, Buffer, or number
5314 // - byteOffset - an index into `buffer`; will be clamped to an int32
5315 // - encoding - an optional encoding, relevant is val is a string
5316 // - dir - true for indexOf, false for lastIndexOf
5317 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
5318 // Empty buffer means no match
5319 if (buffer.length === 0) return -1
5320
5321 // Normalize byteOffset
5322 if (typeof byteOffset === 'string') {
5323 encoding = byteOffset
5324 byteOffset = 0
5325 } else if (byteOffset > 0x7fffffff) {
5326 byteOffset = 0x7fffffff
5327 } else if (byteOffset < -0x80000000) {
5328 byteOffset = -0x80000000
5329 }
5330 byteOffset = +byteOffset // Coerce to Number.
5331 if (numberIsNaN(byteOffset)) {
5332 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
5333 byteOffset = dir ? 0 : (buffer.length - 1)
5334 }
5335
5336 // Normalize byteOffset: negative offsets start from the end of the buffer
5337 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
5338 if (byteOffset >= buffer.length) {
5339 if (dir) return -1
5340 else byteOffset = buffer.length - 1
5341 } else if (byteOffset < 0) {
5342 if (dir) byteOffset = 0
5343 else return -1
5344 }
5345
5346 // Normalize val
5347 if (typeof val === 'string') {
5348 val = Buffer.from(val, encoding)
5349 }
5350
5351 // Finally, search either indexOf (if dir is true) or lastIndexOf
5352 if (Buffer.isBuffer(val)) {
5353 // Special case: looking for empty string/buffer always fails
5354 if (val.length === 0) {
5355 return -1
5356 }
5357 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
5358 } else if (typeof val === 'number') {
5359 val = val & 0xFF // Search for a byte value [0-255]
5360 if (typeof Uint8Array.prototype.indexOf === 'function') {
5361 if (dir) {
5362 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
5363 } else {
5364 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
5365 }
5366 }
5367 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
5368 }
5369
5370 throw new TypeError('val must be string, number or Buffer')
5371 }
5372
5373 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
5374 var indexSize = 1
5375 var arrLength = arr.length
5376 var valLength = val.length
5377
5378 if (encoding !== undefined) {
5379 encoding = String(encoding).toLowerCase()
5380 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
5381 encoding === 'utf16le' || encoding === 'utf-16le') {
5382 if (arr.length < 2 || val.length < 2) {
5383 return -1
5384 }
5385 indexSize = 2
5386 arrLength /= 2
5387 valLength /= 2
5388 byteOffset /= 2
5389 }
5390 }
5391
5392 function read (buf, i) {
5393 if (indexSize === 1) {
5394 return buf[i]
5395 } else {
5396 return buf.readUInt16BE(i * indexSize)
5397 }
5398 }
5399
5400 var i
5401 if (dir) {
5402 var foundIndex = -1
5403 for (i = byteOffset; i < arrLength; i++) {
5404 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
5405 if (foundIndex === -1) foundIndex = i
5406 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
5407 } else {
5408 if (foundIndex !== -1) i -= i - foundIndex
5409 foundIndex = -1
5410 }
5411 }
5412 } else {
5413 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
5414 for (i = byteOffset; i >= 0; i--) {
5415 var found = true
5416 for (var j = 0; j < valLength; j++) {
5417 if (read(arr, i + j) !== read(val, j)) {
5418 found = false
5419 break
5420 }
5421 }
5422 if (found) return i
5423 }
5424 }
5425
5426 return -1
5427 }
5428
5429 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
5430 return this.indexOf(val, byteOffset, encoding) !== -1
5431 }
5432
5433 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
5434 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
5435 }
5436
5437 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
5438 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
5439 }
5440
5441 function hexWrite (buf, string, offset, length) {
5442 offset = Number(offset) || 0
5443 var remaining = buf.length - offset
5444 if (!length) {
5445 length = remaining
5446 } else {
5447 length = Number(length)
5448 if (length > remaining) {
5449 length = remaining
5450 }
5451 }
5452
5453 // must be an even number of digits
5454 var strLen = string.length
5455 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
5456
5457 if (length > strLen / 2) {
5458 length = strLen / 2
5459 }
5460 for (var i = 0; i < length; ++i) {
5461 var parsed = parseInt(string.substr(i * 2, 2), 16)
5462 if (numberIsNaN(parsed)) return i
5463 buf[offset + i] = parsed
5464 }
5465 return i
5466 }
5467
5468 function utf8Write (buf, string, offset, length) {
5469 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
5470 }
5471
5472 function asciiWrite (buf, string, offset, length) {
5473 return blitBuffer(asciiToBytes(string), buf, offset, length)
5474 }
5475
5476 function latin1Write (buf, string, offset, length) {
5477 return asciiWrite(buf, string, offset, length)
5478 }
5479
5480 function base64Write (buf, string, offset, length) {
5481 return blitBuffer(base64ToBytes(string), buf, offset, length)
5482 }
5483
5484 function ucs2Write (buf, string, offset, length) {
5485 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
5486 }
5487
5488 Buffer.prototype.write = function write (string, offset, length, encoding) {
5489 // Buffer#write(string)
5490 if (offset === undefined) {
5491 encoding = 'utf8'
5492 length = this.length
5493 offset = 0
5494 // Buffer#write(string, encoding)
5495 } else if (length === undefined && typeof offset === 'string') {
5496 encoding = offset
5497 length = this.length
5498 offset = 0
5499 // Buffer#write(string, offset[, length][, encoding])
5500 } else if (isFinite(offset)) {
5501 offset = offset >>> 0
5502 if (isFinite(length)) {
5503 length = length >>> 0
5504 if (encoding === undefined) encoding = 'utf8'
5505 } else {
5506 encoding = length
5507 length = undefined
5508 }
5509 } else {
5510 throw new Error(
5511 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
5512 )
5513 }
5514
5515 var remaining = this.length - offset
5516 if (length === undefined || length > remaining) length = remaining
5517
5518 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
5519 throw new RangeError('Attempt to write outside buffer bounds')
5520 }
5521
5522 if (!encoding) encoding = 'utf8'
5523
5524 var loweredCase = false
5525 for (;;) {
5526 switch (encoding) {
5527 case 'hex':
5528 return hexWrite(this, string, offset, length)
5529
5530 case 'utf8':
5531 case 'utf-8':
5532 return utf8Write(this, string, offset, length)
5533
5534 case 'ascii':
5535 return asciiWrite(this, string, offset, length)
5536
5537 case 'latin1':
5538 case 'binary':
5539 return latin1Write(this, string, offset, length)
5540
5541 case 'base64':
5542 // Warning: maxLength not taken into account in base64Write
5543 return base64Write(this, string, offset, length)
5544
5545 case 'ucs2':
5546 case 'ucs-2':
5547 case 'utf16le':
5548 case 'utf-16le':
5549 return ucs2Write(this, string, offset, length)
5550
5551 default:
5552 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
5553 encoding = ('' + encoding).toLowerCase()
5554 loweredCase = true
5555 }
5556 }
5557 }
5558
5559 Buffer.prototype.toJSON = function toJSON () {
5560 return {
5561 type: 'Buffer',
5562 data: Array.prototype.slice.call(this._arr || this, 0)
5563 }
5564 }
5565
5566 function base64Slice (buf, start, end) {
5567 if (start === 0 && end === buf.length) {
5568 return base64.fromByteArray(buf)
5569 } else {
5570 return base64.fromByteArray(buf.slice(start, end))
5571 }
5572 }
5573
5574 function utf8Slice (buf, start, end) {
5575 end = Math.min(buf.length, end)
5576 var res = []
5577
5578 var i = start
5579 while (i < end) {
5580 var firstByte = buf[i]
5581 var codePoint = null
5582 var bytesPerSequence = (firstByte > 0xEF) ? 4
5583 : (firstByte > 0xDF) ? 3
5584 : (firstByte > 0xBF) ? 2
5585 : 1
5586
5587 if (i + bytesPerSequence <= end) {
5588 var secondByte, thirdByte, fourthByte, tempCodePoint
5589
5590 switch (bytesPerSequence) {
5591 case 1:
5592 if (firstByte < 0x80) {
5593 codePoint = firstByte
5594 }
5595 break
5596 case 2:
5597 secondByte = buf[i + 1]
5598 if ((secondByte & 0xC0) === 0x80) {
5599 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
5600 if (tempCodePoint > 0x7F) {
5601 codePoint = tempCodePoint
5602 }
5603 }
5604 break
5605 case 3:
5606 secondByte = buf[i + 1]
5607 thirdByte = buf[i + 2]
5608 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
5609 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
5610 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
5611 codePoint = tempCodePoint
5612 }
5613 }
5614 break
5615 case 4:
5616 secondByte = buf[i + 1]
5617 thirdByte = buf[i + 2]
5618 fourthByte = buf[i + 3]
5619 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
5620 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
5621 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
5622 codePoint = tempCodePoint
5623 }
5624 }
5625 }
5626 }
5627
5628 if (codePoint === null) {
5629 // we did not generate a valid codePoint so insert a
5630 // replacement char (U+FFFD) and advance only 1 byte
5631 codePoint = 0xFFFD
5632 bytesPerSequence = 1
5633 } else if (codePoint > 0xFFFF) {
5634 // encode to utf16 (surrogate pair dance)
5635 codePoint -= 0x10000
5636 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
5637 codePoint = 0xDC00 | codePoint & 0x3FF
5638 }
5639
5640 res.push(codePoint)
5641 i += bytesPerSequence
5642 }
5643
5644 return decodeCodePointsArray(res)
5645 }
5646
5647 // Based on http://stackoverflow.com/a/22747272/680742, the browser with
5648 // the lowest limit is Chrome, with 0x10000 args.
5649 // We go 1 magnitude less, for safety
5650 var MAX_ARGUMENTS_LENGTH = 0x1000
5651
5652 function decodeCodePointsArray (codePoints) {
5653 var len = codePoints.length
5654 if (len <= MAX_ARGUMENTS_LENGTH) {
5655 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
5656 }
5657
5658 // Decode in chunks to avoid "call stack size exceeded".
5659 var res = ''
5660 var i = 0
5661 while (i < len) {
5662 res += String.fromCharCode.apply(
5663 String,
5664 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
5665 )
5666 }
5667 return res
5668 }
5669
5670 function asciiSlice (buf, start, end) {
5671 var ret = ''
5672 end = Math.min(buf.length, end)
5673
5674 for (var i = start; i < end; ++i) {
5675 ret += String.fromCharCode(buf[i] & 0x7F)
5676 }
5677 return ret
5678 }
5679
5680 function latin1Slice (buf, start, end) {
5681 var ret = ''
5682 end = Math.min(buf.length, end)
5683
5684 for (var i = start; i < end; ++i) {
5685 ret += String.fromCharCode(buf[i])
5686 }
5687 return ret
5688 }
5689
5690 function hexSlice (buf, start, end) {
5691 var len = buf.length
5692
5693 if (!start || start < 0) start = 0
5694 if (!end || end < 0 || end > len) end = len
5695
5696 var out = ''
5697 for (var i = start; i < end; ++i) {
5698 out += toHex(buf[i])
5699 }
5700 return out
5701 }
5702
5703 function utf16leSlice (buf, start, end) {
5704 var bytes = buf.slice(start, end)
5705 var res = ''
5706 for (var i = 0; i < bytes.length; i += 2) {
5707 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
5708 }
5709 return res
5710 }
5711
5712 Buffer.prototype.slice = function slice (start, end) {
5713 var len = this.length
5714 start = ~~start
5715 end = end === undefined ? len : ~~end
5716
5717 if (start < 0) {
5718 start += len
5719 if (start < 0) start = 0
5720 } else if (start > len) {
5721 start = len
5722 }
5723
5724 if (end < 0) {
5725 end += len
5726 if (end < 0) end = 0
5727 } else if (end > len) {
5728 end = len
5729 }
5730
5731 if (end < start) end = start
5732
5733 var newBuf = this.subarray(start, end)
5734 // Return an augmented `Uint8Array` instance
5735 newBuf.__proto__ = Buffer.prototype
5736 return newBuf
5737 }
5738
5739 /*
5740 * Need to make sure that buffer isn't trying to write out of bounds.
5741 */
5742 function checkOffset (offset, ext, length) {
5743 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
5744 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
5745 }
5746
5747 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
5748 offset = offset >>> 0
5749 byteLength = byteLength >>> 0
5750 if (!noAssert) checkOffset(offset, byteLength, this.length)
5751
5752 var val = this[offset]
5753 var mul = 1
5754 var i = 0
5755 while (++i < byteLength && (mul *= 0x100)) {
5756 val += this[offset + i] * mul
5757 }
5758
5759 return val
5760 }
5761
5762 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
5763 offset = offset >>> 0
5764 byteLength = byteLength >>> 0
5765 if (!noAssert) {
5766 checkOffset(offset, byteLength, this.length)
5767 }
5768
5769 var val = this[offset + --byteLength]
5770 var mul = 1
5771 while (byteLength > 0 && (mul *= 0x100)) {
5772 val += this[offset + --byteLength] * mul
5773 }
5774
5775 return val
5776 }
5777
5778 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
5779 offset = offset >>> 0
5780 if (!noAssert) checkOffset(offset, 1, this.length)
5781 return this[offset]
5782 }
5783
5784 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
5785 offset = offset >>> 0
5786 if (!noAssert) checkOffset(offset, 2, this.length)
5787 return this[offset] | (this[offset + 1] << 8)
5788 }
5789
5790 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
5791 offset = offset >>> 0
5792 if (!noAssert) checkOffset(offset, 2, this.length)
5793 return (this[offset] << 8) | this[offset + 1]
5794 }
5795
5796 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
5797 offset = offset >>> 0
5798 if (!noAssert) checkOffset(offset, 4, this.length)
5799
5800 return ((this[offset]) |
5801 (this[offset + 1] << 8) |
5802 (this[offset + 2] << 16)) +
5803 (this[offset + 3] * 0x1000000)
5804 }
5805
5806 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
5807 offset = offset >>> 0
5808 if (!noAssert) checkOffset(offset, 4, this.length)
5809
5810 return (this[offset] * 0x1000000) +
5811 ((this[offset + 1] << 16) |
5812 (this[offset + 2] << 8) |
5813 this[offset + 3])
5814 }
5815
5816 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
5817 offset = offset >>> 0
5818 byteLength = byteLength >>> 0
5819 if (!noAssert) checkOffset(offset, byteLength, this.length)
5820
5821 var val = this[offset]
5822 var mul = 1
5823 var i = 0
5824 while (++i < byteLength && (mul *= 0x100)) {
5825 val += this[offset + i] * mul
5826 }
5827 mul *= 0x80
5828
5829 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
5830
5831 return val
5832 }
5833
5834 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
5835 offset = offset >>> 0
5836 byteLength = byteLength >>> 0
5837 if (!noAssert) checkOffset(offset, byteLength, this.length)
5838
5839 var i = byteLength
5840 var mul = 1
5841 var val = this[offset + --i]
5842 while (i > 0 && (mul *= 0x100)) {
5843 val += this[offset + --i] * mul
5844 }
5845 mul *= 0x80
5846
5847 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
5848
5849 return val
5850 }
5851
5852 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
5853 offset = offset >>> 0
5854 if (!noAssert) checkOffset(offset, 1, this.length)
5855 if (!(this[offset] & 0x80)) return (this[offset])
5856 return ((0xff - this[offset] + 1) * -1)
5857 }
5858
5859 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
5860 offset = offset >>> 0
5861 if (!noAssert) checkOffset(offset, 2, this.length)
5862 var val = this[offset] | (this[offset + 1] << 8)
5863 return (val & 0x8000) ? val | 0xFFFF0000 : val
5864 }
5865
5866 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
5867 offset = offset >>> 0
5868 if (!noAssert) checkOffset(offset, 2, this.length)
5869 var val = this[offset + 1] | (this[offset] << 8)
5870 return (val & 0x8000) ? val | 0xFFFF0000 : val
5871 }
5872
5873 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
5874 offset = offset >>> 0
5875 if (!noAssert) checkOffset(offset, 4, this.length)
5876
5877 return (this[offset]) |
5878 (this[offset + 1] << 8) |
5879 (this[offset + 2] << 16) |
5880 (this[offset + 3] << 24)
5881 }
5882
5883 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
5884 offset = offset >>> 0
5885 if (!noAssert) checkOffset(offset, 4, this.length)
5886
5887 return (this[offset] << 24) |
5888 (this[offset + 1] << 16) |
5889 (this[offset + 2] << 8) |
5890 (this[offset + 3])
5891 }
5892
5893 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
5894 offset = offset >>> 0
5895 if (!noAssert) checkOffset(offset, 4, this.length)
5896 return ieee754.read(this, offset, true, 23, 4)
5897 }
5898
5899 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
5900 offset = offset >>> 0
5901 if (!noAssert) checkOffset(offset, 4, this.length)
5902 return ieee754.read(this, offset, false, 23, 4)
5903 }
5904
5905 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
5906 offset = offset >>> 0
5907 if (!noAssert) checkOffset(offset, 8, this.length)
5908 return ieee754.read(this, offset, true, 52, 8)
5909 }
5910
5911 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
5912 offset = offset >>> 0
5913 if (!noAssert) checkOffset(offset, 8, this.length)
5914 return ieee754.read(this, offset, false, 52, 8)
5915 }
5916
5917 function checkInt (buf, value, offset, ext, max, min) {
5918 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
5919 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
5920 if (offset + ext > buf.length) throw new RangeError('Index out of range')
5921 }
5922
5923 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
5924 value = +value
5925 offset = offset >>> 0
5926 byteLength = byteLength >>> 0
5927 if (!noAssert) {
5928 var maxBytes = Math.pow(2, 8 * byteLength) - 1
5929 checkInt(this, value, offset, byteLength, maxBytes, 0)
5930 }
5931
5932 var mul = 1
5933 var i = 0
5934 this[offset] = value & 0xFF
5935 while (++i < byteLength && (mul *= 0x100)) {
5936 this[offset + i] = (value / mul) & 0xFF
5937 }
5938
5939 return offset + byteLength
5940 }
5941
5942 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
5943 value = +value
5944 offset = offset >>> 0
5945 byteLength = byteLength >>> 0
5946 if (!noAssert) {
5947 var maxBytes = Math.pow(2, 8 * byteLength) - 1
5948 checkInt(this, value, offset, byteLength, maxBytes, 0)
5949 }
5950
5951 var i = byteLength - 1
5952 var mul = 1
5953 this[offset + i] = value & 0xFF
5954 while (--i >= 0 && (mul *= 0x100)) {
5955 this[offset + i] = (value / mul) & 0xFF
5956 }
5957
5958 return offset + byteLength
5959 }
5960
5961 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
5962 value = +value
5963 offset = offset >>> 0
5964 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
5965 this[offset] = (value & 0xff)
5966 return offset + 1
5967 }
5968
5969 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
5970 value = +value
5971 offset = offset >>> 0
5972 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
5973 this[offset] = (value & 0xff)
5974 this[offset + 1] = (value >>> 8)
5975 return offset + 2
5976 }
5977
5978 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
5979 value = +value
5980 offset = offset >>> 0
5981 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
5982 this[offset] = (value >>> 8)
5983 this[offset + 1] = (value & 0xff)
5984 return offset + 2
5985 }
5986
5987 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
5988 value = +value
5989 offset = offset >>> 0
5990 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
5991 this[offset + 3] = (value >>> 24)
5992 this[offset + 2] = (value >>> 16)
5993 this[offset + 1] = (value >>> 8)
5994 this[offset] = (value & 0xff)
5995 return offset + 4
5996 }
5997
5998 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
5999 value = +value
6000 offset = offset >>> 0
6001 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
6002 this[offset] = (value >>> 24)
6003 this[offset + 1] = (value >>> 16)
6004 this[offset + 2] = (value >>> 8)
6005 this[offset + 3] = (value & 0xff)
6006 return offset + 4
6007 }
6008
6009 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
6010 value = +value
6011 offset = offset >>> 0
6012 if (!noAssert) {
6013 var limit = Math.pow(2, (8 * byteLength) - 1)
6014
6015 checkInt(this, value, offset, byteLength, limit - 1, -limit)
6016 }
6017
6018 var i = 0
6019 var mul = 1
6020 var sub = 0
6021 this[offset] = value & 0xFF
6022 while (++i < byteLength && (mul *= 0x100)) {
6023 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
6024 sub = 1
6025 }
6026 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
6027 }
6028
6029 return offset + byteLength
6030 }
6031
6032 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
6033 value = +value
6034 offset = offset >>> 0
6035 if (!noAssert) {
6036 var limit = Math.pow(2, (8 * byteLength) - 1)
6037
6038 checkInt(this, value, offset, byteLength, limit - 1, -limit)
6039 }
6040
6041 var i = byteLength - 1
6042 var mul = 1
6043 var sub = 0
6044 this[offset + i] = value & 0xFF
6045 while (--i >= 0 && (mul *= 0x100)) {
6046 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
6047 sub = 1
6048 }
6049 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
6050 }
6051
6052 return offset + byteLength
6053 }
6054
6055 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
6056 value = +value
6057 offset = offset >>> 0
6058 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
6059 if (value < 0) value = 0xff + value + 1
6060 this[offset] = (value & 0xff)
6061 return offset + 1
6062 }
6063
6064 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
6065 value = +value
6066 offset = offset >>> 0
6067 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
6068 this[offset] = (value & 0xff)
6069 this[offset + 1] = (value >>> 8)
6070 return offset + 2
6071 }
6072
6073 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
6074 value = +value
6075 offset = offset >>> 0
6076 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
6077 this[offset] = (value >>> 8)
6078 this[offset + 1] = (value & 0xff)
6079 return offset + 2
6080 }
6081
6082 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
6083 value = +value
6084 offset = offset >>> 0
6085 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
6086 this[offset] = (value & 0xff)
6087 this[offset + 1] = (value >>> 8)
6088 this[offset + 2] = (value >>> 16)
6089 this[offset + 3] = (value >>> 24)
6090 return offset + 4
6091 }
6092
6093 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
6094 value = +value
6095 offset = offset >>> 0
6096 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
6097 if (value < 0) value = 0xffffffff + value + 1
6098 this[offset] = (value >>> 24)
6099 this[offset + 1] = (value >>> 16)
6100 this[offset + 2] = (value >>> 8)
6101 this[offset + 3] = (value & 0xff)
6102 return offset + 4
6103 }
6104
6105 function checkIEEE754 (buf, value, offset, ext, max, min) {
6106 if (offset + ext > buf.length) throw new RangeError('Index out of range')
6107 if (offset < 0) throw new RangeError('Index out of range')
6108 }
6109
6110 function writeFloat (buf, value, offset, littleEndian, noAssert) {
6111 value = +value
6112 offset = offset >>> 0
6113 if (!noAssert) {
6114 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
6115 }
6116 ieee754.write(buf, value, offset, littleEndian, 23, 4)
6117 return offset + 4
6118 }
6119
6120 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
6121 return writeFloat(this, value, offset, true, noAssert)
6122 }
6123
6124 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
6125 return writeFloat(this, value, offset, false, noAssert)
6126 }
6127
6128 function writeDouble (buf, value, offset, littleEndian, noAssert) {
6129 value = +value
6130 offset = offset >>> 0
6131 if (!noAssert) {
6132 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
6133 }
6134 ieee754.write(buf, value, offset, littleEndian, 52, 8)
6135 return offset + 8
6136 }
6137
6138 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
6139 return writeDouble(this, value, offset, true, noAssert)
6140 }
6141
6142 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
6143 return writeDouble(this, value, offset, false, noAssert)
6144 }
6145
6146 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
6147 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
6148 if (!start) start = 0
6149 if (!end && end !== 0) end = this.length
6150 if (targetStart >= target.length) targetStart = target.length
6151 if (!targetStart) targetStart = 0
6152 if (end > 0 && end < start) end = start
6153
6154 // Copy 0 bytes; we're done
6155 if (end === start) return 0
6156 if (target.length === 0 || this.length === 0) return 0
6157
6158 // Fatal error conditions
6159 if (targetStart < 0) {
6160 throw new RangeError('targetStart out of bounds')
6161 }
6162 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
6163 if (end < 0) throw new RangeError('sourceEnd out of bounds')
6164
6165 // Are we oob?
6166 if (end > this.length) end = this.length
6167 if (target.length - targetStart < end - start) {
6168 end = target.length - targetStart + start
6169 }
6170
6171 var len = end - start
6172 var i
6173
6174 if (this === target && start < targetStart && targetStart < end) {
6175 // descending copy from end
6176 for (i = len - 1; i >= 0; --i) {
6177 target[i + targetStart] = this[i + start]
6178 }
6179 } else if (len < 1000) {
6180 // ascending copy from start
6181 for (i = 0; i < len; ++i) {
6182 target[i + targetStart] = this[i + start]
6183 }
6184 } else {
6185 Uint8Array.prototype.set.call(
6186 target,
6187 this.subarray(start, start + len),
6188 targetStart
6189 )
6190 }
6191
6192 return len
6193 }
6194
6195 // Usage:
6196 // buffer.fill(number[, offset[, end]])
6197 // buffer.fill(buffer[, offset[, end]])
6198 // buffer.fill(string[, offset[, end]][, encoding])
6199 Buffer.prototype.fill = function fill (val, start, end, encoding) {
6200 // Handle string cases:
6201 if (typeof val === 'string') {
6202 if (typeof start === 'string') {
6203 encoding = start
6204 start = 0
6205 end = this.length
6206 } else if (typeof end === 'string') {
6207 encoding = end
6208 end = this.length
6209 }
6210 if (val.length === 1) {
6211 var code = val.charCodeAt(0)
6212 if (code < 256) {
6213 val = code
6214 }
6215 }
6216 if (encoding !== undefined && typeof encoding !== 'string') {
6217 throw new TypeError('encoding must be a string')
6218 }
6219 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
6220 throw new TypeError('Unknown encoding: ' + encoding)
6221 }
6222 } else if (typeof val === 'number') {
6223 val = val & 255
6224 }
6225
6226 // Invalid ranges are not set to a default, so can range check early.
6227 if (start < 0 || this.length < start || this.length < end) {
6228 throw new RangeError('Out of range index')
6229 }
6230
6231 if (end <= start) {
6232 return this
6233 }
6234
6235 start = start >>> 0
6236 end = end === undefined ? this.length : end >>> 0
6237
6238 if (!val) val = 0
6239
6240 var i
6241 if (typeof val === 'number') {
6242 for (i = start; i < end; ++i) {
6243 this[i] = val
6244 }
6245 } else {
6246 var bytes = Buffer.isBuffer(val)
6247 ? val
6248 : new Buffer(val, encoding)
6249 var len = bytes.length
6250 for (i = 0; i < end - start; ++i) {
6251 this[i + start] = bytes[i % len]
6252 }
6253 }
6254
6255 return this
6256 }
6257
6258 // HELPER FUNCTIONS
6259 // ================
6260
6261 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
6262
6263 function base64clean (str) {
6264 // Node strips out invalid characters like \n and \t from the string, base64-js does not
6265 str = str.trim().replace(INVALID_BASE64_RE, '')
6266 // Node converts strings with length < 2 to ''
6267 if (str.length < 2) return ''
6268 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
6269 while (str.length % 4 !== 0) {
6270 str = str + '='
6271 }
6272 return str
6273 }
6274
6275 function toHex (n) {
6276 if (n < 16) return '0' + n.toString(16)
6277 return n.toString(16)
6278 }
6279
6280 function utf8ToBytes (string, units) {
6281 units = units || Infinity
6282 var codePoint
6283 var length = string.length
6284 var leadSurrogate = null
6285 var bytes = []
6286
6287 for (var i = 0; i < length; ++i) {
6288 codePoint = string.charCodeAt(i)
6289
6290 // is surrogate component
6291 if (codePoint > 0xD7FF && codePoint < 0xE000) {
6292 // last char was a lead
6293 if (!leadSurrogate) {
6294 // no lead yet
6295 if (codePoint > 0xDBFF) {
6296 // unexpected trail
6297 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6298 continue
6299 } else if (i + 1 === length) {
6300 // unpaired lead
6301 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6302 continue
6303 }
6304
6305 // valid lead
6306 leadSurrogate = codePoint
6307
6308 continue
6309 }
6310
6311 // 2 leads in a row
6312 if (codePoint < 0xDC00) {
6313 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6314 leadSurrogate = codePoint
6315 continue
6316 }
6317
6318 // valid surrogate pair
6319 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
6320 } else if (leadSurrogate) {
6321 // valid bmp char, but last char was a lead
6322 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6323 }
6324
6325 leadSurrogate = null
6326
6327 // encode utf8
6328 if (codePoint < 0x80) {
6329 if ((units -= 1) < 0) break
6330 bytes.push(codePoint)
6331 } else if (codePoint < 0x800) {
6332 if ((units -= 2) < 0) break
6333 bytes.push(
6334 codePoint >> 0x6 | 0xC0,
6335 codePoint & 0x3F | 0x80
6336 )
6337 } else if (codePoint < 0x10000) {
6338 if ((units -= 3) < 0) break
6339 bytes.push(
6340 codePoint >> 0xC | 0xE0,
6341 codePoint >> 0x6 & 0x3F | 0x80,
6342 codePoint & 0x3F | 0x80
6343 )
6344 } else if (codePoint < 0x110000) {
6345 if ((units -= 4) < 0) break
6346 bytes.push(
6347 codePoint >> 0x12 | 0xF0,
6348 codePoint >> 0xC & 0x3F | 0x80,
6349 codePoint >> 0x6 & 0x3F | 0x80,
6350 codePoint & 0x3F | 0x80
6351 )
6352 } else {
6353 throw new Error('Invalid code point')
6354 }
6355 }
6356
6357 return bytes
6358 }
6359
6360 function asciiToBytes (str) {
6361 var byteArray = []
6362 for (var i = 0; i < str.length; ++i) {
6363 // Node's code seems to be doing this and not & 0x7F..
6364 byteArray.push(str.charCodeAt(i) & 0xFF)
6365 }
6366 return byteArray
6367 }
6368
6369 function utf16leToBytes (str, units) {
6370 var c, hi, lo
6371 var byteArray = []
6372 for (var i = 0; i < str.length; ++i) {
6373 if ((units -= 2) < 0) break
6374
6375 c = str.charCodeAt(i)
6376 hi = c >> 8
6377 lo = c % 256
6378 byteArray.push(lo)
6379 byteArray.push(hi)
6380 }
6381
6382 return byteArray
6383 }
6384
6385 function base64ToBytes (str) {
6386 return base64.toByteArray(base64clean(str))
6387 }
6388
6389 function blitBuffer (src, dst, offset, length) {
6390 for (var i = 0; i < length; ++i) {
6391 if ((i + offset >= dst.length) || (i >= src.length)) break
6392 dst[i + offset] = src[i]
6393 }
6394 return i
6395 }
6396
6397 // Node 0.10 supports `ArrayBuffer` but lacks `ArrayBuffer.isView`
6398 function isArrayBufferView (obj) {
6399 return (typeof ArrayBuffer.isView === 'function') && ArrayBuffer.isView(obj)
6400 }
6401
6402 function numberIsNaN (obj) {
6403 return obj !== obj // eslint-disable-line no-self-compare
6404 }
6405
6406 },{"base64-js":1,"ieee754":3}],3:[function(require,module,exports){
6407 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
6408 var e, m
6409 var eLen = nBytes * 8 - mLen - 1
6410 var eMax = (1 << eLen) - 1
6411 var eBias = eMax >> 1
6412 var nBits = -7
6413 var i = isLE ? (nBytes - 1) : 0
6414 var d = isLE ? -1 : 1
6415 var s = buffer[offset + i]
6416
6417 i += d
6418
6419 e = s & ((1 << (-nBits)) - 1)
6420 s >>= (-nBits)
6421 nBits += eLen
6422 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
6423
6424 m = e & ((1 << (-nBits)) - 1)
6425 e >>= (-nBits)
6426 nBits += mLen
6427 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
6428
6429 if (e === 0) {
6430 e = 1 - eBias
6431 } else if (e === eMax) {
6432 return m ? NaN : ((s ? -1 : 1) * Infinity)
6433 } else {
6434 m = m + Math.pow(2, mLen)
6435 e = e - eBias
6436 }
6437 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
6438 }
6439
6440 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
6441 var e, m, c
6442 var eLen = nBytes * 8 - mLen - 1
6443 var eMax = (1 << eLen) - 1
6444 var eBias = eMax >> 1
6445 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
6446 var i = isLE ? 0 : (nBytes - 1)
6447 var d = isLE ? 1 : -1
6448 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
6449
6450 value = Math.abs(value)
6451
6452 if (isNaN(value) || value === Infinity) {
6453 m = isNaN(value) ? 1 : 0
6454 e = eMax
6455 } else {
6456 e = Math.floor(Math.log(value) / Math.LN2)
6457 if (value * (c = Math.pow(2, -e)) < 1) {
6458 e--
6459 c *= 2
6460 }
6461 if (e + eBias >= 1) {
6462 value += rt / c
6463 } else {
6464 value += rt * Math.pow(2, 1 - eBias)
6465 }
6466 if (value * c >= 2) {
6467 e++
6468 c /= 2
6469 }
6470
6471 if (e + eBias >= eMax) {
6472 m = 0
6473 e = eMax
6474 } else if (e + eBias >= 1) {
6475 m = (value * c - 1) * Math.pow(2, mLen)
6476 e = e + eBias
6477 } else {
6478 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
6479 e = 0
6480 }
6481 }
6482
6483 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
6484
6485 e = (e << mLen) | m
6486 eLen += mLen
6487 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
6488
6489 buffer[offset + i - d] |= s * 128
6490 }
6491
6492 },{}],4:[function(require,module,exports){
6493 window.basex = require('base-x')
6494 },{"base-x":5}],5:[function(require,module,exports){
6495 // base-x encoding
6496 // Forked from https://github.com/cryptocoinjs/bs58
6497 // Originally written by Mike Hearn for BitcoinJ
6498 // Copyright (c) 2011 Google Inc
6499 // Ported to JavaScript by Stefan Thomas
6500 // Merged Buffer refactorings from base58-native by Stephen Pair
6501 // Copyright (c) 2013 BitPay Inc
6502
6503 var Buffer = require('safe-buffer').Buffer
6504
6505 module.exports = function base (ALPHABET) {
6506 var ALPHABET_MAP = {}
6507 var BASE = ALPHABET.length
6508 var LEADER = ALPHABET.charAt(0)
6509
6510 // pre-compute lookup table
6511 for (var z = 0; z < ALPHABET.length; z++) {
6512 var x = ALPHABET.charAt(z)
6513
6514 if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')
6515 ALPHABET_MAP[x] = z
6516 }
6517
6518 function encode (source) {
6519 if (source.length === 0) return ''
6520
6521 var digits = [0]
6522 for (var i = 0; i < source.length; ++i) {
6523 for (var j = 0, carry = source[i]; j < digits.length; ++j) {
6524 carry += digits[j] << 8
6525 digits[j] = carry % BASE
6526 carry = (carry / BASE) | 0
6527 }
6528
6529 while (carry > 0) {
6530 digits.push(carry % BASE)
6531 carry = (carry / BASE) | 0
6532 }
6533 }
6534
6535 var string = ''
6536
6537 // deal with leading zeros
6538 for (var k = 0; source[k] === 0 && k < source.length - 1; ++k) string += ALPHABET[0]
6539 // convert digits to a string
6540 for (var q = digits.length - 1; q >= 0; --q) string += ALPHABET[digits[q]]
6541
6542 return string
6543 }
6544
6545 function decodeUnsafe (string) {
6546 if (string.length === 0) return Buffer.allocUnsafe(0)
6547
6548 var bytes = [0]
6549 for (var i = 0; i < string.length; i++) {
6550 var value = ALPHABET_MAP[string[i]]
6551 if (value === undefined) return
6552
6553 for (var j = 0, carry = value; j < bytes.length; ++j) {
6554 carry += bytes[j] * BASE
6555 bytes[j] = carry & 0xff
6556 carry >>= 8
6557 }
6558
6559 while (carry > 0) {
6560 bytes.push(carry & 0xff)
6561 carry >>= 8
6562 }
6563 }
6564
6565 // deal with leading zeros
6566 for (var k = 0; string[k] === LEADER && k < string.length - 1; ++k) {
6567 bytes.push(0)
6568 }
6569
6570 return Buffer.from(bytes.reverse())
6571 }
6572
6573 function decode (string) {
6574 var buffer = decodeUnsafe(string)
6575 if (buffer) return buffer
6576
6577 throw new Error('Non-base' + BASE + ' character')
6578 }
6579
6580 return {
6581 encode: encode,
6582 decodeUnsafe: decodeUnsafe,
6583 decode: decode
6584 }
6585 }
6586
6587 },{"safe-buffer":6}],6:[function(require,module,exports){
6588 module.exports = require('buffer')
6589
6590 },{"buffer":2}]},{},[4])(4)
6591 });</script>
6592 <script>(function (root) {
6593 "use strict";
6594
6595 /***** unorm.js *****/
6596
6597 /*
6598 * UnicodeNormalizer 1.0.0
6599 * Copyright (c) 2008 Matsuza
6600 * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
6601 * $Date: 2008-06-05 16:44:17 +0200 (Thu, 05 Jun 2008) $
6602 * $Rev: 13309 $
6603 */
6604
6605 var DEFAULT_FEATURE = [null, 0, {}];
6606 var CACHE_THRESHOLD = 10;
6607 var SBase = 0xAC00, LBase = 0x1100, VBase = 0x1161, TBase = 0x11A7, LCount = 19, VCount = 21, TCount = 28;
6608 var NCount = VCount * TCount; // 588
6609 var SCount = LCount * NCount; // 11172
6610
6611 var UChar = function(cp, feature){
6612 this.codepoint = cp;
6613 this.feature = feature;
6614 };
6615
6616 // Strategies
6617 var cache = {};
6618 var cacheCounter = [];
6619 for (var i = 0; i <= 0xFF; ++i){
6620 cacheCounter[i] = 0;
6621 }
6622
6623 function fromCache(next, cp, needFeature){
6624 var ret = cache[cp];
6625 if(!ret){
6626 ret = next(cp, needFeature);
6627 if(!!ret.feature && ++cacheCounter[(cp >> 8) & 0xFF] > CACHE_THRESHOLD){
6628 cache[cp] = ret;
6629 }
6630 }
6631 return ret;
6632 }
6633
6634 function fromData(next, cp, needFeature){
6635 var hash = cp & 0xFF00;
6636 var dunit = UChar.udata[hash] || {};
6637 var f = dunit[cp];
6638 return f ? new UChar(cp, f) : new UChar(cp, DEFAULT_FEATURE);
6639 }
6640 function fromCpOnly(next, cp, needFeature){
6641 return !!needFeature ? next(cp, needFeature) : new UChar(cp, null);
6642 }
6643 function fromRuleBasedJamo(next, cp, needFeature){
6644 var j;
6645 if(cp < LBase || (LBase + LCount <= cp && cp < SBase) || (SBase + SCount < cp)){
6646 return next(cp, needFeature);
6647 }
6648 if(LBase <= cp && cp < LBase + LCount){
6649 var c = {};
6650 var base = (cp - LBase) * VCount;
6651 for (j = 0; j < VCount; ++j){
6652 c[VBase + j] = SBase + TCount * (j + base);
6653 }
6654 return new UChar(cp, [,,c]);
6655 }
6656
6657 var SIndex = cp - SBase;
6658 var TIndex = SIndex % TCount;
6659 var feature = [];
6660 if(TIndex !== 0){
6661 feature[0] = [SBase + SIndex - TIndex, TBase + TIndex];
6662 } else {
6663 feature[0] = [LBase + Math.floor(SIndex / NCount), VBase + Math.floor((SIndex % NCount) / TCount)];
6664 feature[2] = {};
6665 for (j = 1; j < TCount; ++j){
6666 feature[2][TBase + j] = cp + j;
6667 }
6668 }
6669 return new UChar(cp, feature);
6670 }
6671 function fromCpFilter(next, cp, needFeature){
6672 return cp < 60 || 13311 < cp && cp < 42607 ? new UChar(cp, DEFAULT_FEATURE) : next(cp, needFeature);
6673 }
6674
6675 var strategies = [fromCpFilter, fromCache, fromCpOnly, fromRuleBasedJamo, fromData];
6676
6677 UChar.fromCharCode = strategies.reduceRight(function (next, strategy) {
6678 return function (cp, needFeature) {
6679 return strategy(next, cp, needFeature);
6680 };
6681 }, null);
6682
6683 UChar.isHighSurrogate = function(cp){
6684 return cp >= 0xD800 && cp <= 0xDBFF;
6685 };
6686 UChar.isLowSurrogate = function(cp){
6687 return cp >= 0xDC00 && cp <= 0xDFFF;
6688 };
6689
6690 UChar.prototype.prepFeature = function(){
6691 if(!this.feature){
6692 this.feature = UChar.fromCharCode(this.codepoint, true).feature;
6693 }
6694 };
6695
6696 UChar.prototype.toString = function(){
6697 if(this.codepoint < 0x10000){
6698 return String.fromCharCode(this.codepoint);
6699 } else {
6700 var x = this.codepoint - 0x10000;
6701 return String.fromCharCode(Math.floor(x / 0x400) + 0xD800, x % 0x400 + 0xDC00);
6702 }
6703 };
6704
6705 UChar.prototype.getDecomp = function(){
6706 this.prepFeature();
6707 return this.feature[0] || null;
6708 };
6709
6710 UChar.prototype.isCompatibility = function(){
6711 this.prepFeature();
6712 return !!this.feature[1] && (this.feature[1] & (1 << 8));
6713 };
6714 UChar.prototype.isExclude = function(){
6715 this.prepFeature();
6716 return !!this.feature[1] && (this.feature[1] & (1 << 9));
6717 };
6718 UChar.prototype.getCanonicalClass = function(){
6719 this.prepFeature();
6720 return !!this.feature[1] ? (this.feature[1] & 0xff) : 0;
6721 };
6722 UChar.prototype.getComposite = function(following){
6723 this.prepFeature();
6724 if(!this.feature[2]){
6725 return null;
6726 }
6727 var cp = this.feature[2][following.codepoint];
6728 return cp ? UChar.fromCharCode(cp) : null;
6729 };
6730
6731 var UCharIterator = function(str){
6732 this.str = str;
6733 this.cursor = 0;
6734 };
6735 UCharIterator.prototype.next = function(){
6736 if(!!this.str && this.cursor < this.str.length){
6737 var cp = this.str.charCodeAt(this.cursor++);
6738 var d;
6739 if(UChar.isHighSurrogate(cp) && this.cursor < this.str.length && UChar.isLowSurrogate((d = this.str.charCodeAt(this.cursor)))){
6740 cp = (cp - 0xD800) * 0x400 + (d -0xDC00) + 0x10000;
6741 ++this.cursor;
6742 }
6743 return UChar.fromCharCode(cp);
6744 } else {
6745 this.str = null;
6746 return null;
6747 }
6748 };
6749
6750 var RecursDecompIterator = function(it, cano){
6751 this.it = it;
6752 this.canonical = cano;
6753 this.resBuf = [];
6754 };
6755
6756 RecursDecompIterator.prototype.next = function(){
6757 function recursiveDecomp(cano, uchar){
6758 var decomp = uchar.getDecomp();
6759 if(!!decomp && !(cano && uchar.isCompatibility())){
6760 var ret = [];
6761 for(var i = 0; i < decomp.length; ++i){
6762 var a = recursiveDecomp(cano, UChar.fromCharCode(decomp[i]));
6763 ret = ret.concat(a);
6764 }
6765 return ret;
6766 } else {
6767 return [uchar];
6768 }
6769 }
6770 if(this.resBuf.length === 0){
6771 var uchar = this.it.next();
6772 if(!uchar){
6773 return null;
6774 }
6775 this.resBuf = recursiveDecomp(this.canonical, uchar);
6776 }
6777 return this.resBuf.shift();
6778 };
6779
6780 var DecompIterator = function(it){
6781 this.it = it;
6782 this.resBuf = [];
6783 };
6784
6785 DecompIterator.prototype.next = function(){
6786 var cc;
6787 if(this.resBuf.length === 0){
6788 do{
6789 var uchar = this.it.next();
6790 if(!uchar){
6791 break;
6792 }
6793 cc = uchar.getCanonicalClass();
6794 var inspt = this.resBuf.length;
6795 if(cc !== 0){
6796 for(; inspt > 0; --inspt){
6797 var uchar2 = this.resBuf[inspt - 1];
6798 var cc2 = uchar2.getCanonicalClass();
6799 if(cc2 <= cc){
6800 break;
6801 }
6802 }
6803 }
6804 this.resBuf.splice(inspt, 0, uchar);
6805 } while(cc !== 0);
6806 }
6807 return this.resBuf.shift();
6808 };
6809
6810 var CompIterator = function(it){
6811 this.it = it;
6812 this.procBuf = [];
6813 this.resBuf = [];
6814 this.lastClass = null;
6815 };
6816
6817 CompIterator.prototype.next = function(){
6818 while(this.resBuf.length === 0){
6819 var uchar = this.it.next();
6820 if(!uchar){
6821 this.resBuf = this.procBuf;
6822 this.procBuf = [];
6823 break;
6824 }
6825 if(this.procBuf.length === 0){
6826 this.lastClass = uchar.getCanonicalClass();
6827 this.procBuf.push(uchar);
6828 } else {
6829 var starter = this.procBuf[0];
6830 var composite = starter.getComposite(uchar);
6831 var cc = uchar.getCanonicalClass();
6832 if(!!composite && (this.lastClass < cc || this.lastClass === 0)){
6833 this.procBuf[0] = composite;
6834 } else {
6835 if(cc === 0){
6836 this.resBuf = this.procBuf;
6837 this.procBuf = [];
6838 }
6839 this.lastClass = cc;
6840 this.procBuf.push(uchar);
6841 }
6842 }
6843 }
6844 return this.resBuf.shift();
6845 };
6846
6847 var createIterator = function(mode, str){
6848 switch(mode){
6849 case "NFD":
6850 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true));
6851 case "NFKD":
6852 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false));
6853 case "NFC":
6854 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true)));
6855 case "NFKC":
6856 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false)));
6857 }
6858 throw mode + " is invalid";
6859 };
6860 var normalize = function(mode, str){
6861 var it = createIterator(mode, str);
6862 var ret = "";
6863 var uchar;
6864 while(!!(uchar = it.next())){
6865 ret += uchar.toString();
6866 }
6867 return ret;
6868 };
6869
6870 /* API functions */
6871 function nfd(str){
6872 return normalize("NFD", str);
6873 }
6874
6875 function nfkd(str){
6876 return normalize("NFKD", str);
6877 }
6878
6879 function nfc(str){
6880 return normalize("NFC", str);
6881 }
6882
6883 function nfkc(str){
6884 return normalize("NFKC", str);
6885 }
6886
6887 /* Unicode data */
6888 UChar.udata={
6889 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]]},
6890 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]},
6891 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]},
6892 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]},
6893 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]]},
6894 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]},
6895 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]},
6896 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]},
6897 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]},
6898 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]},
6899 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]},
6900 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]},
6901 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]},
6902 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]]},
6903 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]},
6904 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]},
6905 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]},
6906 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]},
6907 4608:{70197:[,9],70198:[,7],70377:[,7],70378:[,9]},
6908 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]},
6909 5120:{70841:[,,{70832:70844,70842:70843,70845:70846}],70843:[[70841,70842]],70844:[[70841,70832]],70846:[[70841,70845]],70850:[,9],70851:[,7]},
6910 5376:{71096:[,,{71087:71098}],71097:[,,{71087:71099}],71098:[[71096,71087]],71099:[[71097,71087]],71103:[,9],71104:[,7]},
6911 5632:{71231:[,9],71350:[,9],71351:[,7]},
6912 5888:{5908:[,9],5940:[,9],6098:[,9],6109:[,230]},
6913 6144:{6313:[,228]},
6914 6400:{6457:[,222],6458:[,230],6459:[,220]},
6915 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]},
6916 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]},
6917 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]},
6918 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]},
6919 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]]},
6920 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}]},
6921 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]},
6922 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}]},
6923 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]]},
6924 8960:{9001:[[12296]],9002:[[12297]]},
6925 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]},
6926 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]},
6927 11264:{11388:[[106],256],11389:[[86],256],11503:[,230],11504:[,230],11505:[,230]},
6928 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]},
6929 11776:{11935:[[27597],256],12019:[[40863],256]},
6930 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]},
6931 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]},
6932 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]},
6933 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]},
6934 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]},
6935 27136:{92912:[,1],92913:[,1],92914:[,1],92915:[,1],92916:[,1]},
6936 27392:{92976:[,230],92977:[,230],92978:[,230],92979:[,230],92980:[,230],92981:[,230],92982:[,230]},
6937 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]},
6938 42752:{42864:[[42863],256],43000:[[294],256],43001:[[339],256]},
6939 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]},
6940 43264:{43307:[,220],43308:[,220],43309:[,220],43347:[,9],43443:[,7],43456:[,9]},
6941 43520:{43696:[,230],43698:[,230],43699:[,230],43700:[,220],43703:[,230],43704:[,230],43710:[,230],43711:[,230],43713:[,230],43766:[,9]},
6942 43776:{43868:[[42791],256],43869:[[43831],256],43870:[[619],256],43871:[[43858],256],44013:[,9]},
6943 48128:{113822:[,1]},
6944 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]},
6945 53760:{119362:[,230],119363:[,230],119364:[,230]},
6946 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]},
6947 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]},
6948 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]},
6949 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]},
6950 59392:{125136:[,220],125137:[,220],125138:[,220],125139:[,220],125140:[,220],125141:[,220],125142:[,220]},
6951 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]},
6952 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]},
6953 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]},
6954 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]]},
6955 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]]},
6956 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]]},
6957 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]},
6958 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]},
6959 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]},
6960 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]},
6961 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]}
6962
6963 };
6964
6965 /***** Module to export */
6966 var unorm = {
6967 nfc: nfc,
6968 nfd: nfd,
6969 nfkc: nfkc,
6970 nfkd: nfkd
6971 };
6972
6973 /*globals module:true,define:true*/
6974
6975 // CommonJS
6976 if (typeof module === "object") {
6977 module.exports = unorm;
6978
6979 // AMD
6980 } else if (typeof define === "function" && define.amd) {
6981 define("unorm", function () {
6982 return unorm;
6983 });
6984
6985 // Global
6986 } else {
6987 root.unorm = unorm;
6988 }
6989
6990 /***** Export as shim for String::normalize method *****/
6991 /*
6992 http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts#november_8_2013_draft_rev_21
6993
6994 21.1.3.12 String.prototype.normalize(form="NFC")
6995 When the normalize method is called with one argument form, the following steps are taken:
6996
6997 1. Let O be CheckObjectCoercible(this value).
6998 2. Let S be ToString(O).
6999 3. ReturnIfAbrupt(S).
7000 4. If form is not provided or undefined let form be "NFC".
7001 5. Let f be ToString(form).
7002 6. ReturnIfAbrupt(f).
7003 7. If f is not one of "NFC", "NFD", "NFKC", or "NFKD", then throw a RangeError Exception.
7004 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.
7005 9. Return ns.
7006
7007 The length property of the normalize method is 0.
7008
7009 *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.
7010 */
7011 unorm.shimApplied = false;
7012
7013 if (!String.prototype.normalize) {
7014 String.prototype.normalize = function(form) {
7015 var str = "" + this;
7016 form = form === undefined ? "NFC" : form;
7017
7018 if (form === "NFC") {
7019 return unorm.nfc(str);
7020 } else if (form === "NFD") {
7021 return unorm.nfd(str);
7022 } else if (form === "NFKC") {
7023 return unorm.nfkc(str);
7024 } else if (form === "NFKD") {
7025 return unorm.nfkd(str);
7026 } else {
7027 throw new RangeError("Invalid normalization form: " + form);
7028 }
7029 };
7030
7031 unorm.shimApplied = true;
7032 }
7033 }(this));
7034 </script>
7035 <script>/*! jQuery v2.1.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
7036 !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)
7037 },_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))
7038 },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});
7039 </script>
7040 <script>/*!
7041 * Bootstrap v3.2.0 (http://getbootstrap.com)
7042 * Copyright 2011-2014 Twitter, Inc.
7043 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
7044 */
7045 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>
7046 <script>(function() {
7047 'use strict';
7048
7049 /**
7050 * Extend an Object with another Object's properties.
7051 *
7052 * The source objects are specified as additional arguments.
7053 *
7054 * @param dst Object the object to extend.
7055 *
7056 * @return Object the final object.
7057 */
7058 var _extend = function(dst) {
7059 var sources = Array.prototype.slice.call(arguments, 1);
7060 for (var i=0; i<sources.length; ++i) {
7061 var src = sources[i];
7062 for (var p in src) {
7063 if (src.hasOwnProperty(p)) dst[p] = src[p];
7064 }
7065 }
7066 return dst;
7067 };
7068
7069
7070 /**
7071 * Defer execution of given function.
7072 * @param {Function} func
7073 */
7074 var _defer = function(func) {
7075 if (typeof setImmediate === 'function') {
7076 return setImmediate(func);
7077 } else {
7078 return setTimeout(func, 0);
7079 }
7080 };
7081
7082 /**
7083 * Based on the algorithm at http://en.wikipedia.org/wiki/Levenshtein_distance.
7084 */
7085 var Levenshtein = {
7086 /**
7087 * Calculate levenshtein distance of the two strings.
7088 *
7089 * @param str1 String the first string.
7090 * @param str2 String the second string.
7091 * @return Integer the levenshtein distance (0 and above).
7092 */
7093 get: function(str1, str2) {
7094 // base cases
7095 if (str1 === str2) return 0;
7096 if (str1.length === 0) return str2.length;
7097 if (str2.length === 0) return str1.length;
7098
7099 // two rows
7100 var prevRow = new Array(str2.length + 1),
7101 curCol, nextCol, i, j, tmp;
7102
7103 // initialise previous row
7104 for (i=0; i<prevRow.length; ++i) {
7105 prevRow[i] = i;
7106 }
7107
7108 // calculate current row distance from previous row
7109 for (i=0; i<str1.length; ++i) {
7110 nextCol = i + 1;
7111
7112 for (j=0; j<str2.length; ++j) {
7113 curCol = nextCol;
7114
7115 // substution
7116 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 );
7117 // insertion
7118 tmp = curCol + 1;
7119 if (nextCol > tmp) {
7120 nextCol = tmp;
7121 }
7122 // deletion
7123 tmp = prevRow[j + 1] + 1;
7124 if (nextCol > tmp) {
7125 nextCol = tmp;
7126 }
7127
7128 // copy current col value into previous (in preparation for next iteration)
7129 prevRow[j] = curCol;
7130 }
7131
7132 // copy last col value into previous (in preparation for next iteration)
7133 prevRow[j] = nextCol;
7134 }
7135
7136 return nextCol;
7137 },
7138
7139 /**
7140 * Asynchronously calculate levenshtein distance of the two strings.
7141 *
7142 * @param str1 String the first string.
7143 * @param str2 String the second string.
7144 * @param cb Function callback function with signature: function(Error err, int distance)
7145 * @param [options] Object additional options.
7146 * @param [options.progress] Function progress callback with signature: function(percentComplete)
7147 */
7148 getAsync: function(str1, str2, cb, options) {
7149 options = _extend({}, {
7150 progress: null
7151 }, options);
7152
7153 // base cases
7154 if (str1 === str2) return cb(null, 0);
7155 if (str1.length === 0) return cb(null, str2.length);
7156 if (str2.length === 0) return cb(null, str1.length);
7157
7158 // two rows
7159 var prevRow = new Array(str2.length + 1),
7160 curCol, nextCol,
7161 i, j, tmp,
7162 startTime, currentTime;
7163
7164 // initialise previous row
7165 for (i=0; i<prevRow.length; ++i) {
7166 prevRow[i] = i;
7167 }
7168
7169 nextCol = 1;
7170 i = 0;
7171 j = -1;
7172
7173 var __calculate = function() {
7174 // reset timer
7175 startTime = new Date().valueOf();
7176 currentTime = startTime;
7177
7178 // keep going until one second has elapsed
7179 while (currentTime - startTime < 1000) {
7180 // reached end of current row?
7181 if (str2.length <= (++j)) {
7182 // copy current into previous (in preparation for next iteration)
7183 prevRow[j] = nextCol;
7184
7185 // if already done all chars
7186 if (str1.length <= (++i)) {
7187 return cb(null, nextCol);
7188 }
7189 // else if we have more left to do
7190 else {
7191 nextCol = i + 1;
7192 j = 0;
7193 }
7194 }
7195
7196 // calculation
7197 curCol = nextCol;
7198
7199 // substution
7200 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 );
7201 // insertion
7202 tmp = curCol + 1;
7203 if (nextCol > tmp) {
7204 nextCol = tmp;
7205 }
7206 // deletion
7207 tmp = prevRow[j + 1] + 1;
7208 if (nextCol > tmp) {
7209 nextCol = tmp;
7210 }
7211
7212 // copy current into previous (in preparation for next iteration)
7213 prevRow[j] = curCol;
7214
7215 // get current time
7216 currentTime = new Date().valueOf();
7217 }
7218
7219 // send a progress update?
7220 if (null !== options.progress) {
7221 try {
7222 options.progress.call(null, (i * 100.0/ str1.length));
7223 } catch (err) {
7224 return cb('Progress callback: ' + err.toString());
7225 }
7226 }
7227
7228 // next iteration
7229 _defer(__calculate);
7230 };
7231
7232 __calculate();
7233 }
7234
7235 };
7236
7237 // amd
7238 if (typeof define !== "undefined" && define !== null && define.amd) {
7239 define(function() {
7240 return Levenshtein;
7241 });
7242 }
7243 // commonjs
7244 else if (typeof module !== "undefined" && module !== null && typeof exports !== "undefined" && module.exports === exports) {
7245 module.exports = Levenshtein;
7246 }
7247 // web worker
7248 else if (typeof self !== "undefined" && typeof self.postMessage === 'function' && typeof self.importScripts === 'function') {
7249 self.Levenshtein = Levenshtein;
7250 }
7251 // browser main thread
7252 else if (typeof window !== "undefined" && window !== null) {
7253 window.Levenshtein = Levenshtein;
7254 }
7255 }());
7256
7257 </script>
7258 <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},
7259 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;
7260 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-
7261 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]=
7262 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},
7263 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=
7264 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-
7265 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,
7266 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=
7267 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&&
7268 (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,
7269 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)-
7270 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:"+
7271 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:"+
7272 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+
7273 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),
7274 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>
7275 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],
7276 [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,
7277 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,
7278 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,
7279 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,
7280 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,
7281 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*
7282 (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,
7283 correctLevel:2,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),
7284 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",
7285 d+"px").css("background-color",a.isDark(e,i)?h.foreground:h.background).appendTo(f)}}a=c;$(a).appendTo(this)})}})($);
7286 </script>
7287 <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){
7288 (function (global){
7289 'use strict';
7290
7291 // compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js
7292 // original notice:
7293
7294 /*!
7295 * The buffer module from node.js, for the browser.
7296 *
7297 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
7298 * @license MIT
7299 */
7300 function compare(a, b) {
7301 if (a === b) {
7302 return 0;
7303 }
7304
7305 var x = a.length;
7306 var y = b.length;
7307
7308 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
7309 if (a[i] !== b[i]) {
7310 x = a[i];
7311 y = b[i];
7312 break;
7313 }
7314 }
7315
7316 if (x < y) {
7317 return -1;
7318 }
7319 if (y < x) {
7320 return 1;
7321 }
7322 return 0;
7323 }
7324 function isBuffer(b) {
7325 if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {
7326 return global.Buffer.isBuffer(b);
7327 }
7328 return !!(b != null && b._isBuffer);
7329 }
7330
7331 // based on node assert, original notice:
7332
7333 // http://wiki.commonjs.org/wiki/Unit_Testing/1.0
7334 //
7335 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
7336 //
7337 // Originally from narwhal.js (http://narwhaljs.org)
7338 // Copyright (c) 2009 Thomas Robinson <280north.com>
7339 //
7340 // Permission is hereby granted, free of charge, to any person obtaining a copy
7341 // of this software and associated documentation files (the 'Software'), to
7342 // deal in the Software without restriction, including without limitation the
7343 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7344 // sell copies of the Software, and to permit persons to whom the Software is
7345 // furnished to do so, subject to the following conditions:
7346 //
7347 // The above copyright notice and this permission notice shall be included in
7348 // all copies or substantial portions of the Software.
7349 //
7350 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
7351 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
7352 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
7353 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
7354 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
7355 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
7356
7357 var util = require('util/');
7358 var hasOwn = Object.prototype.hasOwnProperty;
7359 var pSlice = Array.prototype.slice;
7360 var functionsHaveNames = (function () {
7361 return function foo() {}.name === 'foo';
7362 }());
7363 function pToString (obj) {
7364 return Object.prototype.toString.call(obj);
7365 }
7366 function isView(arrbuf) {
7367 if (isBuffer(arrbuf)) {
7368 return false;
7369 }
7370 if (typeof global.ArrayBuffer !== 'function') {
7371 return false;
7372 }
7373 if (typeof ArrayBuffer.isView === 'function') {
7374 return ArrayBuffer.isView(arrbuf);
7375 }
7376 if (!arrbuf) {
7377 return false;
7378 }
7379 if (arrbuf instanceof DataView) {
7380 return true;
7381 }
7382 if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {
7383 return true;
7384 }
7385 return false;
7386 }
7387 // 1. The assert module provides functions that throw
7388 // AssertionError's when particular conditions are not met. The
7389 // assert module must conform to the following interface.
7390
7391 var assert = module.exports = ok;
7392
7393 // 2. The AssertionError is defined in assert.
7394 // new assert.AssertionError({ message: message,
7395 // actual: actual,
7396 // expected: expected })
7397
7398 var regex = /\s*function\s+([^\(\s]*)\s*/;
7399 // based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js
7400 function getName(func) {
7401 if (!util.isFunction(func)) {
7402 return;
7403 }
7404 if (functionsHaveNames) {
7405 return func.name;
7406 }
7407 var str = func.toString();
7408 var match = str.match(regex);
7409 return match && match[1];
7410 }
7411 assert.AssertionError = function AssertionError(options) {
7412 this.name = 'AssertionError';
7413 this.actual = options.actual;
7414 this.expected = options.expected;
7415 this.operator = options.operator;
7416 if (options.message) {
7417 this.message = options.message;
7418 this.generatedMessage = false;
7419 } else {
7420 this.message = getMessage(this);
7421 this.generatedMessage = true;
7422 }
7423 var stackStartFunction = options.stackStartFunction || fail;
7424 if (Error.captureStackTrace) {
7425 Error.captureStackTrace(this, stackStartFunction);
7426 } else {
7427 // non v8 browsers so we can have a stacktrace
7428 var err = new Error();
7429 if (err.stack) {
7430 var out = err.stack;
7431
7432 // try to strip useless frames
7433 var fn_name = getName(stackStartFunction);
7434 var idx = out.indexOf('\n' + fn_name);
7435 if (idx >= 0) {
7436 // once we have located the function frame
7437 // we need to strip out everything before it (and its line)
7438 var next_line = out.indexOf('\n', idx + 1);
7439 out = out.substring(next_line + 1);
7440 }
7441
7442 this.stack = out;
7443 }
7444 }
7445 };
7446
7447 // assert.AssertionError instanceof Error
7448 util.inherits(assert.AssertionError, Error);
7449
7450 function truncate(s, n) {
7451 if (typeof s === 'string') {
7452 return s.length < n ? s : s.slice(0, n);
7453 } else {
7454 return s;
7455 }
7456 }
7457 function inspect(something) {
7458 if (functionsHaveNames || !util.isFunction(something)) {
7459 return util.inspect(something);
7460 }
7461 var rawname = getName(something);
7462 var name = rawname ? ': ' + rawname : '';
7463 return '[Function' + name + ']';
7464 }
7465 function getMessage(self) {
7466 return truncate(inspect(self.actual), 128) + ' ' +
7467 self.operator + ' ' +
7468 truncate(inspect(self.expected), 128);
7469 }
7470
7471 // At present only the three keys mentioned above are used and
7472 // understood by the spec. Implementations or sub modules can pass
7473 // other keys to the AssertionError's constructor - they will be
7474 // ignored.
7475
7476 // 3. All of the following functions must throw an AssertionError
7477 // when a corresponding condition is not met, with a message that
7478 // may be undefined if not provided. All assertion methods provide
7479 // both the actual and expected values to the assertion error for
7480 // display purposes.
7481
7482 function fail(actual, expected, message, operator, stackStartFunction) {
7483 throw new assert.AssertionError({
7484 message: message,
7485 actual: actual,
7486 expected: expected,
7487 operator: operator,
7488 stackStartFunction: stackStartFunction
7489 });
7490 }
7491
7492 // EXTENSION! allows for well behaved errors defined elsewhere.
7493 assert.fail = fail;
7494
7495 // 4. Pure assertion tests whether a value is truthy, as determined
7496 // by !!guard.
7497 // assert.ok(guard, message_opt);
7498 // This statement is equivalent to assert.equal(true, !!guard,
7499 // message_opt);. To test strictly for the value true, use
7500 // assert.strictEqual(true, guard, message_opt);.
7501
7502 function ok(value, message) {
7503 if (!value) fail(value, true, message, '==', assert.ok);
7504 }
7505 assert.ok = ok;
7506
7507 // 5. The equality assertion tests shallow, coercive equality with
7508 // ==.
7509 // assert.equal(actual, expected, message_opt);
7510
7511 assert.equal = function equal(actual, expected, message) {
7512 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
7513 };
7514
7515 // 6. The non-equality assertion tests for whether two objects are not equal
7516 // with != assert.notEqual(actual, expected, message_opt);
7517
7518 assert.notEqual = function notEqual(actual, expected, message) {
7519 if (actual == expected) {
7520 fail(actual, expected, message, '!=', assert.notEqual);
7521 }
7522 };
7523
7524 // 7. The equivalence assertion tests a deep equality relation.
7525 // assert.deepEqual(actual, expected, message_opt);
7526
7527 assert.deepEqual = function deepEqual(actual, expected, message) {
7528 if (!_deepEqual(actual, expected, false)) {
7529 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
7530 }
7531 };
7532
7533 assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
7534 if (!_deepEqual(actual, expected, true)) {
7535 fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);
7536 }
7537 };
7538
7539 function _deepEqual(actual, expected, strict, memos) {
7540 // 7.1. All identical values are equivalent, as determined by ===.
7541 if (actual === expected) {
7542 return true;
7543 } else if (isBuffer(actual) && isBuffer(expected)) {
7544 return compare(actual, expected) === 0;
7545
7546 // 7.2. If the expected value is a Date object, the actual value is
7547 // equivalent if it is also a Date object that refers to the same time.
7548 } else if (util.isDate(actual) && util.isDate(expected)) {
7549 return actual.getTime() === expected.getTime();
7550
7551 // 7.3 If the expected value is a RegExp object, the actual value is
7552 // equivalent if it is also a RegExp object with the same source and
7553 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
7554 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
7555 return actual.source === expected.source &&
7556 actual.global === expected.global &&
7557 actual.multiline === expected.multiline &&
7558 actual.lastIndex === expected.lastIndex &&
7559 actual.ignoreCase === expected.ignoreCase;
7560
7561 // 7.4. Other pairs that do not both pass typeof value == 'object',
7562 // equivalence is determined by ==.
7563 } else if ((actual === null || typeof actual !== 'object') &&
7564 (expected === null || typeof expected !== 'object')) {
7565 return strict ? actual === expected : actual == expected;
7566
7567 // If both values are instances of typed arrays, wrap their underlying
7568 // ArrayBuffers in a Buffer each to increase performance
7569 // This optimization requires the arrays to have the same type as checked by
7570 // Object.prototype.toString (aka pToString). Never perform binary
7571 // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their
7572 // bit patterns are not identical.
7573 } else if (isView(actual) && isView(expected) &&
7574 pToString(actual) === pToString(expected) &&
7575 !(actual instanceof Float32Array ||
7576 actual instanceof Float64Array)) {
7577 return compare(new Uint8Array(actual.buffer),
7578 new Uint8Array(expected.buffer)) === 0;
7579
7580 // 7.5 For all other Object pairs, including Array objects, equivalence is
7581 // determined by having the same number of owned properties (as verified
7582 // with Object.prototype.hasOwnProperty.call), the same set of keys
7583 // (although not necessarily the same order), equivalent values for every
7584 // corresponding key, and an identical 'prototype' property. Note: this
7585 // accounts for both named and indexed properties on Arrays.
7586 } else if (isBuffer(actual) !== isBuffer(expected)) {
7587 return false;
7588 } else {
7589 memos = memos || {actual: [], expected: []};
7590
7591 var actualIndex = memos.actual.indexOf(actual);
7592 if (actualIndex !== -1) {
7593 if (actualIndex === memos.expected.indexOf(expected)) {
7594 return true;
7595 }
7596 }
7597
7598 memos.actual.push(actual);
7599 memos.expected.push(expected);
7600
7601 return objEquiv(actual, expected, strict, memos);
7602 }
7603 }
7604
7605 function isArguments(object) {
7606 return Object.prototype.toString.call(object) == '[object Arguments]';
7607 }
7608
7609 function objEquiv(a, b, strict, actualVisitedObjects) {
7610 if (a === null || a === undefined || b === null || b === undefined)
7611 return false;
7612 // if one is a primitive, the other must be same
7613 if (util.isPrimitive(a) || util.isPrimitive(b))
7614 return a === b;
7615 if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))
7616 return false;
7617 var aIsArgs = isArguments(a);
7618 var bIsArgs = isArguments(b);
7619 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
7620 return false;
7621 if (aIsArgs) {
7622 a = pSlice.call(a);
7623 b = pSlice.call(b);
7624 return _deepEqual(a, b, strict);
7625 }
7626 var ka = objectKeys(a);
7627 var kb = objectKeys(b);
7628 var key, i;
7629 // having the same number of owned properties (keys incorporates
7630 // hasOwnProperty)
7631 if (ka.length !== kb.length)
7632 return false;
7633 //the same set of keys (although not necessarily the same order),
7634 ka.sort();
7635 kb.sort();
7636 //~~~cheap key test
7637 for (i = ka.length - 1; i >= 0; i--) {
7638 if (ka[i] !== kb[i])
7639 return false;
7640 }
7641 //equivalent values for every corresponding key, and
7642 //~~~possibly expensive deep test
7643 for (i = ka.length - 1; i >= 0; i--) {
7644 key = ka[i];
7645 if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))
7646 return false;
7647 }
7648 return true;
7649 }
7650
7651 // 8. The non-equivalence assertion tests for any deep inequality.
7652 // assert.notDeepEqual(actual, expected, message_opt);
7653
7654 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
7655 if (_deepEqual(actual, expected, false)) {
7656 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
7657 }
7658 };
7659
7660 assert.notDeepStrictEqual = notDeepStrictEqual;
7661 function notDeepStrictEqual(actual, expected, message) {
7662 if (_deepEqual(actual, expected, true)) {
7663 fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);
7664 }
7665 }
7666
7667
7668 // 9. The strict equality assertion tests strict equality, as determined by ===.
7669 // assert.strictEqual(actual, expected, message_opt);
7670
7671 assert.strictEqual = function strictEqual(actual, expected, message) {
7672 if (actual !== expected) {
7673 fail(actual, expected, message, '===', assert.strictEqual);
7674 }
7675 };
7676
7677 // 10. The strict non-equality assertion tests for strict inequality, as
7678 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
7679
7680 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
7681 if (actual === expected) {
7682 fail(actual, expected, message, '!==', assert.notStrictEqual);
7683 }
7684 };
7685
7686 function expectedException(actual, expected) {
7687 if (!actual || !expected) {
7688 return false;
7689 }
7690
7691 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
7692 return expected.test(actual);
7693 }
7694
7695 try {
7696 if (actual instanceof expected) {
7697 return true;
7698 }
7699 } catch (e) {
7700 // Ignore. The instanceof check doesn't work for arrow functions.
7701 }
7702
7703 if (Error.isPrototypeOf(expected)) {
7704 return false;
7705 }
7706
7707 return expected.call({}, actual) === true;
7708 }
7709
7710 function _tryBlock(block) {
7711 var error;
7712 try {
7713 block();
7714 } catch (e) {
7715 error = e;
7716 }
7717 return error;
7718 }
7719
7720 function _throws(shouldThrow, block, expected, message) {
7721 var actual;
7722
7723 if (typeof block !== 'function') {
7724 throw new TypeError('"block" argument must be a function');
7725 }
7726
7727 if (typeof expected === 'string') {
7728 message = expected;
7729 expected = null;
7730 }
7731
7732 actual = _tryBlock(block);
7733
7734 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
7735 (message ? ' ' + message : '.');
7736
7737 if (shouldThrow && !actual) {
7738 fail(actual, expected, 'Missing expected exception' + message);
7739 }
7740
7741 var userProvidedMessage = typeof message === 'string';
7742 var isUnwantedException = !shouldThrow && util.isError(actual);
7743 var isUnexpectedException = !shouldThrow && actual && !expected;
7744
7745 if ((isUnwantedException &&
7746 userProvidedMessage &&
7747 expectedException(actual, expected)) ||
7748 isUnexpectedException) {
7749 fail(actual, expected, 'Got unwanted exception' + message);
7750 }
7751
7752 if ((shouldThrow && actual && expected &&
7753 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
7754 throw actual;
7755 }
7756 }
7757
7758 // 11. Expected to throw an error:
7759 // assert.throws(block, Error_opt, message_opt);
7760
7761 assert.throws = function(block, /*optional*/error, /*optional*/message) {
7762 _throws(true, block, error, message);
7763 };
7764
7765 // EXTENSION! This is annoying to write outside this module.
7766 assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {
7767 _throws(false, block, error, message);
7768 };
7769
7770 assert.ifError = function(err) { if (err) throw err; };
7771
7772 var objectKeys = Object.keys || function (obj) {
7773 var keys = [];
7774 for (var key in obj) {
7775 if (hasOwn.call(obj, key)) keys.push(key);
7776 }
7777 return keys;
7778 };
7779
7780 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
7781 },{"util/":32}],2:[function(require,module,exports){
7782 'use strict'
7783
7784 exports.byteLength = byteLength
7785 exports.toByteArray = toByteArray
7786 exports.fromByteArray = fromByteArray
7787
7788 var lookup = []
7789 var revLookup = []
7790 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
7791
7792 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
7793 for (var i = 0, len = code.length; i < len; ++i) {
7794 lookup[i] = code[i]
7795 revLookup[code.charCodeAt(i)] = i
7796 }
7797
7798 revLookup['-'.charCodeAt(0)] = 62
7799 revLookup['_'.charCodeAt(0)] = 63
7800
7801 function placeHoldersCount (b64) {
7802 var len = b64.length
7803 if (len % 4 > 0) {
7804 throw new Error('Invalid string. Length must be a multiple of 4')
7805 }
7806
7807 // the number of equal signs (place holders)
7808 // if there are two placeholders, than the two characters before it
7809 // represent one byte
7810 // if there is only one, then the three characters before it represent 2 bytes
7811 // this is just a cheap hack to not do indexOf twice
7812 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
7813 }
7814
7815 function byteLength (b64) {
7816 // base64 is 4/3 + up to two characters of the original data
7817 return (b64.length * 3 / 4) - placeHoldersCount(b64)
7818 }
7819
7820 function toByteArray (b64) {
7821 var i, l, tmp, placeHolders, arr
7822 var len = b64.length
7823 placeHolders = placeHoldersCount(b64)
7824
7825 arr = new Arr((len * 3 / 4) - placeHolders)
7826
7827 // if there are placeholders, only get up to the last complete 4 chars
7828 l = placeHolders > 0 ? len - 4 : len
7829
7830 var L = 0
7831
7832 for (i = 0; i < l; i += 4) {
7833 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
7834 arr[L++] = (tmp >> 16) & 0xFF
7835 arr[L++] = (tmp >> 8) & 0xFF
7836 arr[L++] = tmp & 0xFF
7837 }
7838
7839 if (placeHolders === 2) {
7840 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
7841 arr[L++] = tmp & 0xFF
7842 } else if (placeHolders === 1) {
7843 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
7844 arr[L++] = (tmp >> 8) & 0xFF
7845 arr[L++] = tmp & 0xFF
7846 }
7847
7848 return arr
7849 }
7850
7851 function tripletToBase64 (num) {
7852 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
7853 }
7854
7855 function encodeChunk (uint8, start, end) {
7856 var tmp
7857 var output = []
7858 for (var i = start; i < end; i += 3) {
7859 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
7860 output.push(tripletToBase64(tmp))
7861 }
7862 return output.join('')
7863 }
7864
7865 function fromByteArray (uint8) {
7866 var tmp
7867 var len = uint8.length
7868 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
7869 var output = ''
7870 var parts = []
7871 var maxChunkLength = 16383 // must be multiple of 3
7872
7873 // go through the array every three bytes, we'll deal with trailing stuff later
7874 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
7875 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
7876 }
7877
7878 // pad the end with zeros, but make sure to not forget the extra bytes
7879 if (extraBytes === 1) {
7880 tmp = uint8[len - 1]
7881 output += lookup[tmp >> 2]
7882 output += lookup[(tmp << 4) & 0x3F]
7883 output += '=='
7884 } else if (extraBytes === 2) {
7885 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
7886 output += lookup[tmp >> 10]
7887 output += lookup[(tmp >> 4) & 0x3F]
7888 output += lookup[(tmp << 2) & 0x3F]
7889 output += '='
7890 }
7891
7892 parts.push(output)
7893
7894 return parts.join('')
7895 }
7896
7897 },{}],3:[function(require,module,exports){
7898
7899 },{}],4:[function(require,module,exports){
7900 /*!
7901 * The buffer module from node.js, for the browser.
7902 *
7903 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
7904 * @license MIT
7905 */
7906 /* eslint-disable no-proto */
7907
7908 'use strict'
7909
7910 var base64 = require('base64-js')
7911 var ieee754 = require('ieee754')
7912
7913 exports.Buffer = Buffer
7914 exports.SlowBuffer = SlowBuffer
7915 exports.INSPECT_MAX_BYTES = 50
7916
7917 var K_MAX_LENGTH = 0x7fffffff
7918 exports.kMaxLength = K_MAX_LENGTH
7919
7920 /**
7921 * If `Buffer.TYPED_ARRAY_SUPPORT`:
7922 * === true Use Uint8Array implementation (fastest)
7923 * === false Print warning and recommend using `buffer` v4.x which has an Object
7924 * implementation (most compatible, even IE6)
7925 *
7926 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
7927 * Opera 11.6+, iOS 4.2+.
7928 *
7929 * We report that the browser does not support typed arrays if the are not subclassable
7930 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
7931 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
7932 * for __proto__ and has a buggy typed array implementation.
7933 */
7934 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
7935
7936 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
7937 typeof console.error === 'function') {
7938 console.error(
7939 'This browser lacks typed array (Uint8Array) support which is required by ' +
7940 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
7941 )
7942 }
7943
7944 function typedArraySupport () {
7945 // Can typed array instances can be augmented?
7946 try {
7947 var arr = new Uint8Array(1)
7948 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
7949 return arr.foo() === 42
7950 } catch (e) {
7951 return false
7952 }
7953 }
7954
7955 function createBuffer (length) {
7956 if (length > K_MAX_LENGTH) {
7957 throw new RangeError('Invalid typed array length')
7958 }
7959 // Return an augmented `Uint8Array` instance
7960 var buf = new Uint8Array(length)
7961 buf.__proto__ = Buffer.prototype
7962 return buf
7963 }
7964
7965 /**
7966 * The Buffer constructor returns instances of `Uint8Array` that have their
7967 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
7968 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
7969 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
7970 * returns a single octet.
7971 *
7972 * The `Uint8Array` prototype remains unmodified.
7973 */
7974
7975 function Buffer (arg, encodingOrOffset, length) {
7976 // Common case.
7977 if (typeof arg === 'number') {
7978 if (typeof encodingOrOffset === 'string') {
7979 throw new Error(
7980 'If encoding is specified then the first argument must be a string'
7981 )
7982 }
7983 return allocUnsafe(arg)
7984 }
7985 return from(arg, encodingOrOffset, length)
7986 }
7987
7988 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
7989 if (typeof Symbol !== 'undefined' && Symbol.species &&
7990 Buffer[Symbol.species] === Buffer) {
7991 Object.defineProperty(Buffer, Symbol.species, {
7992 value: null,
7993 configurable: true,
7994 enumerable: false,
7995 writable: false
7996 })
7997 }
7998
7999 Buffer.poolSize = 8192 // not used by this implementation
8000
8001 function from (value, encodingOrOffset, length) {
8002 if (typeof value === 'number') {
8003 throw new TypeError('"value" argument must not be a number')
8004 }
8005
8006 if (value instanceof ArrayBuffer) {
8007 return fromArrayBuffer(value, encodingOrOffset, length)
8008 }
8009
8010 if (typeof value === 'string') {
8011 return fromString(value, encodingOrOffset)
8012 }
8013
8014 return fromObject(value)
8015 }
8016
8017 /**
8018 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
8019 * if value is a number.
8020 * Buffer.from(str[, encoding])
8021 * Buffer.from(array)
8022 * Buffer.from(buffer)
8023 * Buffer.from(arrayBuffer[, byteOffset[, length]])
8024 **/
8025 Buffer.from = function (value, encodingOrOffset, length) {
8026 return from(value, encodingOrOffset, length)
8027 }
8028
8029 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
8030 // https://github.com/feross/buffer/pull/148
8031 Buffer.prototype.__proto__ = Uint8Array.prototype
8032 Buffer.__proto__ = Uint8Array
8033
8034 function assertSize (size) {
8035 if (typeof size !== 'number') {
8036 throw new TypeError('"size" argument must be a number')
8037 } else if (size < 0) {
8038 throw new RangeError('"size" argument must not be negative')
8039 }
8040 }
8041
8042 function alloc (size, fill, encoding) {
8043 assertSize(size)
8044 if (size <= 0) {
8045 return createBuffer(size)
8046 }
8047 if (fill !== undefined) {
8048 // Only pay attention to encoding if it's a string. This
8049 // prevents accidentally sending in a number that would
8050 // be interpretted as a start offset.
8051 return typeof encoding === 'string'
8052 ? createBuffer(size).fill(fill, encoding)
8053 : createBuffer(size).fill(fill)
8054 }
8055 return createBuffer(size)
8056 }
8057
8058 /**
8059 * Creates a new filled Buffer instance.
8060 * alloc(size[, fill[, encoding]])
8061 **/
8062 Buffer.alloc = function (size, fill, encoding) {
8063 return alloc(size, fill, encoding)
8064 }
8065
8066 function allocUnsafe (size) {
8067 assertSize(size)
8068 return createBuffer(size < 0 ? 0 : checked(size) | 0)
8069 }
8070
8071 /**
8072 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
8073 * */
8074 Buffer.allocUnsafe = function (size) {
8075 return allocUnsafe(size)
8076 }
8077 /**
8078 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
8079 */
8080 Buffer.allocUnsafeSlow = function (size) {
8081 return allocUnsafe(size)
8082 }
8083
8084 function fromString (string, encoding) {
8085 if (typeof encoding !== 'string' || encoding === '') {
8086 encoding = 'utf8'
8087 }
8088
8089 if (!Buffer.isEncoding(encoding)) {
8090 throw new TypeError('"encoding" must be a valid string encoding')
8091 }
8092
8093 var length = byteLength(string, encoding) | 0
8094 var buf = createBuffer(length)
8095
8096 var actual = buf.write(string, encoding)
8097
8098 if (actual !== length) {
8099 // Writing a hex string, for example, that contains invalid characters will
8100 // cause everything after the first invalid character to be ignored. (e.g.
8101 // 'abxxcd' will be treated as 'ab')
8102 buf = buf.slice(0, actual)
8103 }
8104
8105 return buf
8106 }
8107
8108 function fromArrayLike (array) {
8109 var length = array.length < 0 ? 0 : checked(array.length) | 0
8110 var buf = createBuffer(length)
8111 for (var i = 0; i < length; i += 1) {
8112 buf[i] = array[i] & 255
8113 }
8114 return buf
8115 }
8116
8117 function fromArrayBuffer (array, byteOffset, length) {
8118 if (byteOffset < 0 || array.byteLength < byteOffset) {
8119 throw new RangeError('\'offset\' is out of bounds')
8120 }
8121
8122 if (array.byteLength < byteOffset + (length || 0)) {
8123 throw new RangeError('\'length\' is out of bounds')
8124 }
8125
8126 var buf
8127 if (byteOffset === undefined && length === undefined) {
8128 buf = new Uint8Array(array)
8129 } else if (length === undefined) {
8130 buf = new Uint8Array(array, byteOffset)
8131 } else {
8132 buf = new Uint8Array(array, byteOffset, length)
8133 }
8134
8135 // Return an augmented `Uint8Array` instance
8136 buf.__proto__ = Buffer.prototype
8137 return buf
8138 }
8139
8140 function fromObject (obj) {
8141 if (Buffer.isBuffer(obj)) {
8142 var len = checked(obj.length) | 0
8143 var buf = createBuffer(len)
8144
8145 if (buf.length === 0) {
8146 return buf
8147 }
8148
8149 obj.copy(buf, 0, 0, len)
8150 return buf
8151 }
8152
8153 if (obj) {
8154 if (isArrayBufferView(obj) || 'length' in obj) {
8155 if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
8156 return createBuffer(0)
8157 }
8158 return fromArrayLike(obj)
8159 }
8160
8161 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
8162 return fromArrayLike(obj.data)
8163 }
8164 }
8165
8166 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
8167 }
8168
8169 function checked (length) {
8170 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
8171 // length is NaN (which is otherwise coerced to zero.)
8172 if (length >= K_MAX_LENGTH) {
8173 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
8174 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
8175 }
8176 return length | 0
8177 }
8178
8179 function SlowBuffer (length) {
8180 if (+length != length) { // eslint-disable-line eqeqeq
8181 length = 0
8182 }
8183 return Buffer.alloc(+length)
8184 }
8185
8186 Buffer.isBuffer = function isBuffer (b) {
8187 return b != null && b._isBuffer === true
8188 }
8189
8190 Buffer.compare = function compare (a, b) {
8191 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
8192 throw new TypeError('Arguments must be Buffers')
8193 }
8194
8195 if (a === b) return 0
8196
8197 var x = a.length
8198 var y = b.length
8199
8200 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
8201 if (a[i] !== b[i]) {
8202 x = a[i]
8203 y = b[i]
8204 break
8205 }
8206 }
8207
8208 if (x < y) return -1
8209 if (y < x) return 1
8210 return 0
8211 }
8212
8213 Buffer.isEncoding = function isEncoding (encoding) {
8214 switch (String(encoding).toLowerCase()) {
8215 case 'hex':
8216 case 'utf8':
8217 case 'utf-8':
8218 case 'ascii':
8219 case 'latin1':
8220 case 'binary':
8221 case 'base64':
8222 case 'ucs2':
8223 case 'ucs-2':
8224 case 'utf16le':
8225 case 'utf-16le':
8226 return true
8227 default:
8228 return false
8229 }
8230 }
8231
8232 Buffer.concat = function concat (list, length) {
8233 if (!Array.isArray(list)) {
8234 throw new TypeError('"list" argument must be an Array of Buffers')
8235 }
8236
8237 if (list.length === 0) {
8238 return Buffer.alloc(0)
8239 }
8240
8241 var i
8242 if (length === undefined) {
8243 length = 0
8244 for (i = 0; i < list.length; ++i) {
8245 length += list[i].length
8246 }
8247 }
8248
8249 var buffer = Buffer.allocUnsafe(length)
8250 var pos = 0
8251 for (i = 0; i < list.length; ++i) {
8252 var buf = list[i]
8253 if (!Buffer.isBuffer(buf)) {
8254 throw new TypeError('"list" argument must be an Array of Buffers')
8255 }
8256 buf.copy(buffer, pos)
8257 pos += buf.length
8258 }
8259 return buffer
8260 }
8261
8262 function byteLength (string, encoding) {
8263 if (Buffer.isBuffer(string)) {
8264 return string.length
8265 }
8266 if (isArrayBufferView(string) || string instanceof ArrayBuffer) {
8267 return string.byteLength
8268 }
8269 if (typeof string !== 'string') {
8270 string = '' + string
8271 }
8272
8273 var len = string.length
8274 if (len === 0) return 0
8275
8276 // Use a for loop to avoid recursion
8277 var loweredCase = false
8278 for (;;) {
8279 switch (encoding) {
8280 case 'ascii':
8281 case 'latin1':
8282 case 'binary':
8283 return len
8284 case 'utf8':
8285 case 'utf-8':
8286 case undefined:
8287 return utf8ToBytes(string).length
8288 case 'ucs2':
8289 case 'ucs-2':
8290 case 'utf16le':
8291 case 'utf-16le':
8292 return len * 2
8293 case 'hex':
8294 return len >>> 1
8295 case 'base64':
8296 return base64ToBytes(string).length
8297 default:
8298 if (loweredCase) return utf8ToBytes(string).length // assume utf8
8299 encoding = ('' + encoding).toLowerCase()
8300 loweredCase = true
8301 }
8302 }
8303 }
8304 Buffer.byteLength = byteLength
8305
8306 function slowToString (encoding, start, end) {
8307 var loweredCase = false
8308
8309 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
8310 // property of a typed array.
8311
8312 // This behaves neither like String nor Uint8Array in that we set start/end
8313 // to their upper/lower bounds if the value passed is out of range.
8314 // undefined is handled specially as per ECMA-262 6th Edition,
8315 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
8316 if (start === undefined || start < 0) {
8317 start = 0
8318 }
8319 // Return early if start > this.length. Done here to prevent potential uint32
8320 // coercion fail below.
8321 if (start > this.length) {
8322 return ''
8323 }
8324
8325 if (end === undefined || end > this.length) {
8326 end = this.length
8327 }
8328
8329 if (end <= 0) {
8330 return ''
8331 }
8332
8333 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
8334 end >>>= 0
8335 start >>>= 0
8336
8337 if (end <= start) {
8338 return ''
8339 }
8340
8341 if (!encoding) encoding = 'utf8'
8342
8343 while (true) {
8344 switch (encoding) {
8345 case 'hex':
8346 return hexSlice(this, start, end)
8347
8348 case 'utf8':
8349 case 'utf-8':
8350 return utf8Slice(this, start, end)
8351
8352 case 'ascii':
8353 return asciiSlice(this, start, end)
8354
8355 case 'latin1':
8356 case 'binary':
8357 return latin1Slice(this, start, end)
8358
8359 case 'base64':
8360 return base64Slice(this, start, end)
8361
8362 case 'ucs2':
8363 case 'ucs-2':
8364 case 'utf16le':
8365 case 'utf-16le':
8366 return utf16leSlice(this, start, end)
8367
8368 default:
8369 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
8370 encoding = (encoding + '').toLowerCase()
8371 loweredCase = true
8372 }
8373 }
8374 }
8375
8376 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
8377 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
8378 // reliably in a browserify context because there could be multiple different
8379 // copies of the 'buffer' package in use. This method works even for Buffer
8380 // instances that were created from another copy of the `buffer` package.
8381 // See: https://github.com/feross/buffer/issues/154
8382 Buffer.prototype._isBuffer = true
8383
8384 function swap (b, n, m) {
8385 var i = b[n]
8386 b[n] = b[m]
8387 b[m] = i
8388 }
8389
8390 Buffer.prototype.swap16 = function swap16 () {
8391 var len = this.length
8392 if (len % 2 !== 0) {
8393 throw new RangeError('Buffer size must be a multiple of 16-bits')
8394 }
8395 for (var i = 0; i < len; i += 2) {
8396 swap(this, i, i + 1)
8397 }
8398 return this
8399 }
8400
8401 Buffer.prototype.swap32 = function swap32 () {
8402 var len = this.length
8403 if (len % 4 !== 0) {
8404 throw new RangeError('Buffer size must be a multiple of 32-bits')
8405 }
8406 for (var i = 0; i < len; i += 4) {
8407 swap(this, i, i + 3)
8408 swap(this, i + 1, i + 2)
8409 }
8410 return this
8411 }
8412
8413 Buffer.prototype.swap64 = function swap64 () {
8414 var len = this.length
8415 if (len % 8 !== 0) {
8416 throw new RangeError('Buffer size must be a multiple of 64-bits')
8417 }
8418 for (var i = 0; i < len; i += 8) {
8419 swap(this, i, i + 7)
8420 swap(this, i + 1, i + 6)
8421 swap(this, i + 2, i + 5)
8422 swap(this, i + 3, i + 4)
8423 }
8424 return this
8425 }
8426
8427 Buffer.prototype.toString = function toString () {
8428 var length = this.length
8429 if (length === 0) return ''
8430 if (arguments.length === 0) return utf8Slice(this, 0, length)
8431 return slowToString.apply(this, arguments)
8432 }
8433
8434 Buffer.prototype.equals = function equals (b) {
8435 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
8436 if (this === b) return true
8437 return Buffer.compare(this, b) === 0
8438 }
8439
8440 Buffer.prototype.inspect = function inspect () {
8441 var str = ''
8442 var max = exports.INSPECT_MAX_BYTES
8443 if (this.length > 0) {
8444 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
8445 if (this.length > max) str += ' ... '
8446 }
8447 return '<Buffer ' + str + '>'
8448 }
8449
8450 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
8451 if (!Buffer.isBuffer(target)) {
8452 throw new TypeError('Argument must be a Buffer')
8453 }
8454
8455 if (start === undefined) {
8456 start = 0
8457 }
8458 if (end === undefined) {
8459 end = target ? target.length : 0
8460 }
8461 if (thisStart === undefined) {
8462 thisStart = 0
8463 }
8464 if (thisEnd === undefined) {
8465 thisEnd = this.length
8466 }
8467
8468 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
8469 throw new RangeError('out of range index')
8470 }
8471
8472 if (thisStart >= thisEnd && start >= end) {
8473 return 0
8474 }
8475 if (thisStart >= thisEnd) {
8476 return -1
8477 }
8478 if (start >= end) {
8479 return 1
8480 }
8481
8482 start >>>= 0
8483 end >>>= 0
8484 thisStart >>>= 0
8485 thisEnd >>>= 0
8486
8487 if (this === target) return 0
8488
8489 var x = thisEnd - thisStart
8490 var y = end - start
8491 var len = Math.min(x, y)
8492
8493 var thisCopy = this.slice(thisStart, thisEnd)
8494 var targetCopy = target.slice(start, end)
8495
8496 for (var i = 0; i < len; ++i) {
8497 if (thisCopy[i] !== targetCopy[i]) {
8498 x = thisCopy[i]
8499 y = targetCopy[i]
8500 break
8501 }
8502 }
8503
8504 if (x < y) return -1
8505 if (y < x) return 1
8506 return 0
8507 }
8508
8509 // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
8510 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
8511 //
8512 // Arguments:
8513 // - buffer - a Buffer to search
8514 // - val - a string, Buffer, or number
8515 // - byteOffset - an index into `buffer`; will be clamped to an int32
8516 // - encoding - an optional encoding, relevant is val is a string
8517 // - dir - true for indexOf, false for lastIndexOf
8518 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
8519 // Empty buffer means no match
8520 if (buffer.length === 0) return -1
8521
8522 // Normalize byteOffset
8523 if (typeof byteOffset === 'string') {
8524 encoding = byteOffset
8525 byteOffset = 0
8526 } else if (byteOffset > 0x7fffffff) {
8527 byteOffset = 0x7fffffff
8528 } else if (byteOffset < -0x80000000) {
8529 byteOffset = -0x80000000
8530 }
8531 byteOffset = +byteOffset // Coerce to Number.
8532 if (numberIsNaN(byteOffset)) {
8533 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
8534 byteOffset = dir ? 0 : (buffer.length - 1)
8535 }
8536
8537 // Normalize byteOffset: negative offsets start from the end of the buffer
8538 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
8539 if (byteOffset >= buffer.length) {
8540 if (dir) return -1
8541 else byteOffset = buffer.length - 1
8542 } else if (byteOffset < 0) {
8543 if (dir) byteOffset = 0
8544 else return -1
8545 }
8546
8547 // Normalize val
8548 if (typeof val === 'string') {
8549 val = Buffer.from(val, encoding)
8550 }
8551
8552 // Finally, search either indexOf (if dir is true) or lastIndexOf
8553 if (Buffer.isBuffer(val)) {
8554 // Special case: looking for empty string/buffer always fails
8555 if (val.length === 0) {
8556 return -1
8557 }
8558 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
8559 } else if (typeof val === 'number') {
8560 val = val & 0xFF // Search for a byte value [0-255]
8561 if (typeof Uint8Array.prototype.indexOf === 'function') {
8562 if (dir) {
8563 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
8564 } else {
8565 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
8566 }
8567 }
8568 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
8569 }
8570
8571 throw new TypeError('val must be string, number or Buffer')
8572 }
8573
8574 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
8575 var indexSize = 1
8576 var arrLength = arr.length
8577 var valLength = val.length
8578
8579 if (encoding !== undefined) {
8580 encoding = String(encoding).toLowerCase()
8581 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
8582 encoding === 'utf16le' || encoding === 'utf-16le') {
8583 if (arr.length < 2 || val.length < 2) {
8584 return -1
8585 }
8586 indexSize = 2
8587 arrLength /= 2
8588 valLength /= 2
8589 byteOffset /= 2
8590 }
8591 }
8592
8593 function read (buf, i) {
8594 if (indexSize === 1) {
8595 return buf[i]
8596 } else {
8597 return buf.readUInt16BE(i * indexSize)
8598 }
8599 }
8600
8601 var i
8602 if (dir) {
8603 var foundIndex = -1
8604 for (i = byteOffset; i < arrLength; i++) {
8605 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
8606 if (foundIndex === -1) foundIndex = i
8607 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
8608 } else {
8609 if (foundIndex !== -1) i -= i - foundIndex
8610 foundIndex = -1
8611 }
8612 }
8613 } else {
8614 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
8615 for (i = byteOffset; i >= 0; i--) {
8616 var found = true
8617 for (var j = 0; j < valLength; j++) {
8618 if (read(arr, i + j) !== read(val, j)) {
8619 found = false
8620 break
8621 }
8622 }
8623 if (found) return i
8624 }
8625 }
8626
8627 return -1
8628 }
8629
8630 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
8631 return this.indexOf(val, byteOffset, encoding) !== -1
8632 }
8633
8634 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
8635 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
8636 }
8637
8638 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
8639 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
8640 }
8641
8642 function hexWrite (buf, string, offset, length) {
8643 offset = Number(offset) || 0
8644 var remaining = buf.length - offset
8645 if (!length) {
8646 length = remaining
8647 } else {
8648 length = Number(length)
8649 if (length > remaining) {
8650 length = remaining
8651 }
8652 }
8653
8654 // must be an even number of digits
8655 var strLen = string.length
8656 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
8657
8658 if (length > strLen / 2) {
8659 length = strLen / 2
8660 }
8661 for (var i = 0; i < length; ++i) {
8662 var parsed = parseInt(string.substr(i * 2, 2), 16)
8663 if (numberIsNaN(parsed)) return i
8664 buf[offset + i] = parsed
8665 }
8666 return i
8667 }
8668
8669 function utf8Write (buf, string, offset, length) {
8670 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
8671 }
8672
8673 function asciiWrite (buf, string, offset, length) {
8674 return blitBuffer(asciiToBytes(string), buf, offset, length)
8675 }
8676
8677 function latin1Write (buf, string, offset, length) {
8678 return asciiWrite(buf, string, offset, length)
8679 }
8680
8681 function base64Write (buf, string, offset, length) {
8682 return blitBuffer(base64ToBytes(string), buf, offset, length)
8683 }
8684
8685 function ucs2Write (buf, string, offset, length) {
8686 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
8687 }
8688
8689 Buffer.prototype.write = function write (string, offset, length, encoding) {
8690 // Buffer#write(string)
8691 if (offset === undefined) {
8692 encoding = 'utf8'
8693 length = this.length
8694 offset = 0
8695 // Buffer#write(string, encoding)
8696 } else if (length === undefined && typeof offset === 'string') {
8697 encoding = offset
8698 length = this.length
8699 offset = 0
8700 // Buffer#write(string, offset[, length][, encoding])
8701 } else if (isFinite(offset)) {
8702 offset = offset >>> 0
8703 if (isFinite(length)) {
8704 length = length >>> 0
8705 if (encoding === undefined) encoding = 'utf8'
8706 } else {
8707 encoding = length
8708 length = undefined
8709 }
8710 } else {
8711 throw new Error(
8712 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
8713 )
8714 }
8715
8716 var remaining = this.length - offset
8717 if (length === undefined || length > remaining) length = remaining
8718
8719 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
8720 throw new RangeError('Attempt to write outside buffer bounds')
8721 }
8722
8723 if (!encoding) encoding = 'utf8'
8724
8725 var loweredCase = false
8726 for (;;) {
8727 switch (encoding) {
8728 case 'hex':
8729 return hexWrite(this, string, offset, length)
8730
8731 case 'utf8':
8732 case 'utf-8':
8733 return utf8Write(this, string, offset, length)
8734
8735 case 'ascii':
8736 return asciiWrite(this, string, offset, length)
8737
8738 case 'latin1':
8739 case 'binary':
8740 return latin1Write(this, string, offset, length)
8741
8742 case 'base64':
8743 // Warning: maxLength not taken into account in base64Write
8744 return base64Write(this, string, offset, length)
8745
8746 case 'ucs2':
8747 case 'ucs-2':
8748 case 'utf16le':
8749 case 'utf-16le':
8750 return ucs2Write(this, string, offset, length)
8751
8752 default:
8753 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
8754 encoding = ('' + encoding).toLowerCase()
8755 loweredCase = true
8756 }
8757 }
8758 }
8759
8760 Buffer.prototype.toJSON = function toJSON () {
8761 return {
8762 type: 'Buffer',
8763 data: Array.prototype.slice.call(this._arr || this, 0)
8764 }
8765 }
8766
8767 function base64Slice (buf, start, end) {
8768 if (start === 0 && end === buf.length) {
8769 return base64.fromByteArray(buf)
8770 } else {
8771 return base64.fromByteArray(buf.slice(start, end))
8772 }
8773 }
8774
8775 function utf8Slice (buf, start, end) {
8776 end = Math.min(buf.length, end)
8777 var res = []
8778
8779 var i = start
8780 while (i < end) {
8781 var firstByte = buf[i]
8782 var codePoint = null
8783 var bytesPerSequence = (firstByte > 0xEF) ? 4
8784 : (firstByte > 0xDF) ? 3
8785 : (firstByte > 0xBF) ? 2
8786 : 1
8787
8788 if (i + bytesPerSequence <= end) {
8789 var secondByte, thirdByte, fourthByte, tempCodePoint
8790
8791 switch (bytesPerSequence) {
8792 case 1:
8793 if (firstByte < 0x80) {
8794 codePoint = firstByte
8795 }
8796 break
8797 case 2:
8798 secondByte = buf[i + 1]
8799 if ((secondByte & 0xC0) === 0x80) {
8800 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
8801 if (tempCodePoint > 0x7F) {
8802 codePoint = tempCodePoint
8803 }
8804 }
8805 break
8806 case 3:
8807 secondByte = buf[i + 1]
8808 thirdByte = buf[i + 2]
8809 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
8810 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
8811 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
8812 codePoint = tempCodePoint
8813 }
8814 }
8815 break
8816 case 4:
8817 secondByte = buf[i + 1]
8818 thirdByte = buf[i + 2]
8819 fourthByte = buf[i + 3]
8820 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
8821 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
8822 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
8823 codePoint = tempCodePoint
8824 }
8825 }
8826 }
8827 }
8828
8829 if (codePoint === null) {
8830 // we did not generate a valid codePoint so insert a
8831 // replacement char (U+FFFD) and advance only 1 byte
8832 codePoint = 0xFFFD
8833 bytesPerSequence = 1
8834 } else if (codePoint > 0xFFFF) {
8835 // encode to utf16 (surrogate pair dance)
8836 codePoint -= 0x10000
8837 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
8838 codePoint = 0xDC00 | codePoint & 0x3FF
8839 }
8840
8841 res.push(codePoint)
8842 i += bytesPerSequence
8843 }
8844
8845 return decodeCodePointsArray(res)
8846 }
8847
8848 // Based on http://stackoverflow.com/a/22747272/680742, the browser with
8849 // the lowest limit is Chrome, with 0x10000 args.
8850 // We go 1 magnitude less, for safety
8851 var MAX_ARGUMENTS_LENGTH = 0x1000
8852
8853 function decodeCodePointsArray (codePoints) {
8854 var len = codePoints.length
8855 if (len <= MAX_ARGUMENTS_LENGTH) {
8856 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
8857 }
8858
8859 // Decode in chunks to avoid "call stack size exceeded".
8860 var res = ''
8861 var i = 0
8862 while (i < len) {
8863 res += String.fromCharCode.apply(
8864 String,
8865 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
8866 )
8867 }
8868 return res
8869 }
8870
8871 function asciiSlice (buf, start, end) {
8872 var ret = ''
8873 end = Math.min(buf.length, end)
8874
8875 for (var i = start; i < end; ++i) {
8876 ret += String.fromCharCode(buf[i] & 0x7F)
8877 }
8878 return ret
8879 }
8880
8881 function latin1Slice (buf, start, end) {
8882 var ret = ''
8883 end = Math.min(buf.length, end)
8884
8885 for (var i = start; i < end; ++i) {
8886 ret += String.fromCharCode(buf[i])
8887 }
8888 return ret
8889 }
8890
8891 function hexSlice (buf, start, end) {
8892 var len = buf.length
8893
8894 if (!start || start < 0) start = 0
8895 if (!end || end < 0 || end > len) end = len
8896
8897 var out = ''
8898 for (var i = start; i < end; ++i) {
8899 out += toHex(buf[i])
8900 }
8901 return out
8902 }
8903
8904 function utf16leSlice (buf, start, end) {
8905 var bytes = buf.slice(start, end)
8906 var res = ''
8907 for (var i = 0; i < bytes.length; i += 2) {
8908 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
8909 }
8910 return res
8911 }
8912
8913 Buffer.prototype.slice = function slice (start, end) {
8914 var len = this.length
8915 start = ~~start
8916 end = end === undefined ? len : ~~end
8917
8918 if (start < 0) {
8919 start += len
8920 if (start < 0) start = 0
8921 } else if (start > len) {
8922 start = len
8923 }
8924
8925 if (end < 0) {
8926 end += len
8927 if (end < 0) end = 0
8928 } else if (end > len) {
8929 end = len
8930 }
8931
8932 if (end < start) end = start
8933
8934 var newBuf = this.subarray(start, end)
8935 // Return an augmented `Uint8Array` instance
8936 newBuf.__proto__ = Buffer.prototype
8937 return newBuf
8938 }
8939
8940 /*
8941 * Need to make sure that buffer isn't trying to write out of bounds.
8942 */
8943 function checkOffset (offset, ext, length) {
8944 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
8945 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
8946 }
8947
8948 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
8949 offset = offset >>> 0
8950 byteLength = byteLength >>> 0
8951 if (!noAssert) checkOffset(offset, byteLength, this.length)
8952
8953 var val = this[offset]
8954 var mul = 1
8955 var i = 0
8956 while (++i < byteLength && (mul *= 0x100)) {
8957 val += this[offset + i] * mul
8958 }
8959
8960 return val
8961 }
8962
8963 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
8964 offset = offset >>> 0
8965 byteLength = byteLength >>> 0
8966 if (!noAssert) {
8967 checkOffset(offset, byteLength, this.length)
8968 }
8969
8970 var val = this[offset + --byteLength]
8971 var mul = 1
8972 while (byteLength > 0 && (mul *= 0x100)) {
8973 val += this[offset + --byteLength] * mul
8974 }
8975
8976 return val
8977 }
8978
8979 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
8980 offset = offset >>> 0
8981 if (!noAssert) checkOffset(offset, 1, this.length)
8982 return this[offset]
8983 }
8984
8985 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
8986 offset = offset >>> 0
8987 if (!noAssert) checkOffset(offset, 2, this.length)
8988 return this[offset] | (this[offset + 1] << 8)
8989 }
8990
8991 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
8992 offset = offset >>> 0
8993 if (!noAssert) checkOffset(offset, 2, this.length)
8994 return (this[offset] << 8) | this[offset + 1]
8995 }
8996
8997 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
8998 offset = offset >>> 0
8999 if (!noAssert) checkOffset(offset, 4, this.length)
9000
9001 return ((this[offset]) |
9002 (this[offset + 1] << 8) |
9003 (this[offset + 2] << 16)) +
9004 (this[offset + 3] * 0x1000000)
9005 }
9006
9007 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
9008 offset = offset >>> 0
9009 if (!noAssert) checkOffset(offset, 4, this.length)
9010
9011 return (this[offset] * 0x1000000) +
9012 ((this[offset + 1] << 16) |
9013 (this[offset + 2] << 8) |
9014 this[offset + 3])
9015 }
9016
9017 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
9018 offset = offset >>> 0
9019 byteLength = byteLength >>> 0
9020 if (!noAssert) checkOffset(offset, byteLength, this.length)
9021
9022 var val = this[offset]
9023 var mul = 1
9024 var i = 0
9025 while (++i < byteLength && (mul *= 0x100)) {
9026 val += this[offset + i] * mul
9027 }
9028 mul *= 0x80
9029
9030 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
9031
9032 return val
9033 }
9034
9035 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
9036 offset = offset >>> 0
9037 byteLength = byteLength >>> 0
9038 if (!noAssert) checkOffset(offset, byteLength, this.length)
9039
9040 var i = byteLength
9041 var mul = 1
9042 var val = this[offset + --i]
9043 while (i > 0 && (mul *= 0x100)) {
9044 val += this[offset + --i] * mul
9045 }
9046 mul *= 0x80
9047
9048 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
9049
9050 return val
9051 }
9052
9053 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
9054 offset = offset >>> 0
9055 if (!noAssert) checkOffset(offset, 1, this.length)
9056 if (!(this[offset] & 0x80)) return (this[offset])
9057 return ((0xff - this[offset] + 1) * -1)
9058 }
9059
9060 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
9061 offset = offset >>> 0
9062 if (!noAssert) checkOffset(offset, 2, this.length)
9063 var val = this[offset] | (this[offset + 1] << 8)
9064 return (val & 0x8000) ? val | 0xFFFF0000 : val
9065 }
9066
9067 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
9068 offset = offset >>> 0
9069 if (!noAssert) checkOffset(offset, 2, this.length)
9070 var val = this[offset + 1] | (this[offset] << 8)
9071 return (val & 0x8000) ? val | 0xFFFF0000 : val
9072 }
9073
9074 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
9075 offset = offset >>> 0
9076 if (!noAssert) checkOffset(offset, 4, this.length)
9077
9078 return (this[offset]) |
9079 (this[offset + 1] << 8) |
9080 (this[offset + 2] << 16) |
9081 (this[offset + 3] << 24)
9082 }
9083
9084 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
9085 offset = offset >>> 0
9086 if (!noAssert) checkOffset(offset, 4, this.length)
9087
9088 return (this[offset] << 24) |
9089 (this[offset + 1] << 16) |
9090 (this[offset + 2] << 8) |
9091 (this[offset + 3])
9092 }
9093
9094 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
9095 offset = offset >>> 0
9096 if (!noAssert) checkOffset(offset, 4, this.length)
9097 return ieee754.read(this, offset, true, 23, 4)
9098 }
9099
9100 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
9101 offset = offset >>> 0
9102 if (!noAssert) checkOffset(offset, 4, this.length)
9103 return ieee754.read(this, offset, false, 23, 4)
9104 }
9105
9106 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
9107 offset = offset >>> 0
9108 if (!noAssert) checkOffset(offset, 8, this.length)
9109 return ieee754.read(this, offset, true, 52, 8)
9110 }
9111
9112 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
9113 offset = offset >>> 0
9114 if (!noAssert) checkOffset(offset, 8, this.length)
9115 return ieee754.read(this, offset, false, 52, 8)
9116 }
9117
9118 function checkInt (buf, value, offset, ext, max, min) {
9119 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
9120 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
9121 if (offset + ext > buf.length) throw new RangeError('Index out of range')
9122 }
9123
9124 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
9125 value = +value
9126 offset = offset >>> 0
9127 byteLength = byteLength >>> 0
9128 if (!noAssert) {
9129 var maxBytes = Math.pow(2, 8 * byteLength) - 1
9130 checkInt(this, value, offset, byteLength, maxBytes, 0)
9131 }
9132
9133 var mul = 1
9134 var i = 0
9135 this[offset] = value & 0xFF
9136 while (++i < byteLength && (mul *= 0x100)) {
9137 this[offset + i] = (value / mul) & 0xFF
9138 }
9139
9140 return offset + byteLength
9141 }
9142
9143 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
9144 value = +value
9145 offset = offset >>> 0
9146 byteLength = byteLength >>> 0
9147 if (!noAssert) {
9148 var maxBytes = Math.pow(2, 8 * byteLength) - 1
9149 checkInt(this, value, offset, byteLength, maxBytes, 0)
9150 }
9151
9152 var i = byteLength - 1
9153 var mul = 1
9154 this[offset + i] = value & 0xFF
9155 while (--i >= 0 && (mul *= 0x100)) {
9156 this[offset + i] = (value / mul) & 0xFF
9157 }
9158
9159 return offset + byteLength
9160 }
9161
9162 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
9163 value = +value
9164 offset = offset >>> 0
9165 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
9166 this[offset] = (value & 0xff)
9167 return offset + 1
9168 }
9169
9170 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
9171 value = +value
9172 offset = offset >>> 0
9173 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
9174 this[offset] = (value & 0xff)
9175 this[offset + 1] = (value >>> 8)
9176 return offset + 2
9177 }
9178
9179 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
9180 value = +value
9181 offset = offset >>> 0
9182 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
9183 this[offset] = (value >>> 8)
9184 this[offset + 1] = (value & 0xff)
9185 return offset + 2
9186 }
9187
9188 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
9189 value = +value
9190 offset = offset >>> 0
9191 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
9192 this[offset + 3] = (value >>> 24)
9193 this[offset + 2] = (value >>> 16)
9194 this[offset + 1] = (value >>> 8)
9195 this[offset] = (value & 0xff)
9196 return offset + 4
9197 }
9198
9199 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
9200 value = +value
9201 offset = offset >>> 0
9202 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
9203 this[offset] = (value >>> 24)
9204 this[offset + 1] = (value >>> 16)
9205 this[offset + 2] = (value >>> 8)
9206 this[offset + 3] = (value & 0xff)
9207 return offset + 4
9208 }
9209
9210 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
9211 value = +value
9212 offset = offset >>> 0
9213 if (!noAssert) {
9214 var limit = Math.pow(2, (8 * byteLength) - 1)
9215
9216 checkInt(this, value, offset, byteLength, limit - 1, -limit)
9217 }
9218
9219 var i = 0
9220 var mul = 1
9221 var sub = 0
9222 this[offset] = value & 0xFF
9223 while (++i < byteLength && (mul *= 0x100)) {
9224 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
9225 sub = 1
9226 }
9227 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
9228 }
9229
9230 return offset + byteLength
9231 }
9232
9233 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
9234 value = +value
9235 offset = offset >>> 0
9236 if (!noAssert) {
9237 var limit = Math.pow(2, (8 * byteLength) - 1)
9238
9239 checkInt(this, value, offset, byteLength, limit - 1, -limit)
9240 }
9241
9242 var i = byteLength - 1
9243 var mul = 1
9244 var sub = 0
9245 this[offset + i] = value & 0xFF
9246 while (--i >= 0 && (mul *= 0x100)) {
9247 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
9248 sub = 1
9249 }
9250 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
9251 }
9252
9253 return offset + byteLength
9254 }
9255
9256 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
9257 value = +value
9258 offset = offset >>> 0
9259 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
9260 if (value < 0) value = 0xff + value + 1
9261 this[offset] = (value & 0xff)
9262 return offset + 1
9263 }
9264
9265 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
9266 value = +value
9267 offset = offset >>> 0
9268 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
9269 this[offset] = (value & 0xff)
9270 this[offset + 1] = (value >>> 8)
9271 return offset + 2
9272 }
9273
9274 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
9275 value = +value
9276 offset = offset >>> 0
9277 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
9278 this[offset] = (value >>> 8)
9279 this[offset + 1] = (value & 0xff)
9280 return offset + 2
9281 }
9282
9283 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
9284 value = +value
9285 offset = offset >>> 0
9286 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
9287 this[offset] = (value & 0xff)
9288 this[offset + 1] = (value >>> 8)
9289 this[offset + 2] = (value >>> 16)
9290 this[offset + 3] = (value >>> 24)
9291 return offset + 4
9292 }
9293
9294 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
9295 value = +value
9296 offset = offset >>> 0
9297 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
9298 if (value < 0) value = 0xffffffff + value + 1
9299 this[offset] = (value >>> 24)
9300 this[offset + 1] = (value >>> 16)
9301 this[offset + 2] = (value >>> 8)
9302 this[offset + 3] = (value & 0xff)
9303 return offset + 4
9304 }
9305
9306 function checkIEEE754 (buf, value, offset, ext, max, min) {
9307 if (offset + ext > buf.length) throw new RangeError('Index out of range')
9308 if (offset < 0) throw new RangeError('Index out of range')
9309 }
9310
9311 function writeFloat (buf, value, offset, littleEndian, noAssert) {
9312 value = +value
9313 offset = offset >>> 0
9314 if (!noAssert) {
9315 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
9316 }
9317 ieee754.write(buf, value, offset, littleEndian, 23, 4)
9318 return offset + 4
9319 }
9320
9321 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
9322 return writeFloat(this, value, offset, true, noAssert)
9323 }
9324
9325 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
9326 return writeFloat(this, value, offset, false, noAssert)
9327 }
9328
9329 function writeDouble (buf, value, offset, littleEndian, noAssert) {
9330 value = +value
9331 offset = offset >>> 0
9332 if (!noAssert) {
9333 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
9334 }
9335 ieee754.write(buf, value, offset, littleEndian, 52, 8)
9336 return offset + 8
9337 }
9338
9339 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
9340 return writeDouble(this, value, offset, true, noAssert)
9341 }
9342
9343 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
9344 return writeDouble(this, value, offset, false, noAssert)
9345 }
9346
9347 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
9348 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
9349 if (!start) start = 0
9350 if (!end && end !== 0) end = this.length
9351 if (targetStart >= target.length) targetStart = target.length
9352 if (!targetStart) targetStart = 0
9353 if (end > 0 && end < start) end = start
9354
9355 // Copy 0 bytes; we're done
9356 if (end === start) return 0
9357 if (target.length === 0 || this.length === 0) return 0
9358
9359 // Fatal error conditions
9360 if (targetStart < 0) {
9361 throw new RangeError('targetStart out of bounds')
9362 }
9363 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
9364 if (end < 0) throw new RangeError('sourceEnd out of bounds')
9365
9366 // Are we oob?
9367 if (end > this.length) end = this.length
9368 if (target.length - targetStart < end - start) {
9369 end = target.length - targetStart + start
9370 }
9371
9372 var len = end - start
9373 var i
9374
9375 if (this === target && start < targetStart && targetStart < end) {
9376 // descending copy from end
9377 for (i = len - 1; i >= 0; --i) {
9378 target[i + targetStart] = this[i + start]
9379 }
9380 } else if (len < 1000) {
9381 // ascending copy from start
9382 for (i = 0; i < len; ++i) {
9383 target[i + targetStart] = this[i + start]
9384 }
9385 } else {
9386 Uint8Array.prototype.set.call(
9387 target,
9388 this.subarray(start, start + len),
9389 targetStart
9390 )
9391 }
9392
9393 return len
9394 }
9395
9396 // Usage:
9397 // buffer.fill(number[, offset[, end]])
9398 // buffer.fill(buffer[, offset[, end]])
9399 // buffer.fill(string[, offset[, end]][, encoding])
9400 Buffer.prototype.fill = function fill (val, start, end, encoding) {
9401 // Handle string cases:
9402 if (typeof val === 'string') {
9403 if (typeof start === 'string') {
9404 encoding = start
9405 start = 0
9406 end = this.length
9407 } else if (typeof end === 'string') {
9408 encoding = end
9409 end = this.length
9410 }
9411 if (val.length === 1) {
9412 var code = val.charCodeAt(0)
9413 if (code < 256) {
9414 val = code
9415 }
9416 }
9417 if (encoding !== undefined && typeof encoding !== 'string') {
9418 throw new TypeError('encoding must be a string')
9419 }
9420 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
9421 throw new TypeError('Unknown encoding: ' + encoding)
9422 }
9423 } else if (typeof val === 'number') {
9424 val = val & 255
9425 }
9426
9427 // Invalid ranges are not set to a default, so can range check early.
9428 if (start < 0 || this.length < start || this.length < end) {
9429 throw new RangeError('Out of range index')
9430 }
9431
9432 if (end <= start) {
9433 return this
9434 }
9435
9436 start = start >>> 0
9437 end = end === undefined ? this.length : end >>> 0
9438
9439 if (!val) val = 0
9440
9441 var i
9442 if (typeof val === 'number') {
9443 for (i = start; i < end; ++i) {
9444 this[i] = val
9445 }
9446 } else {
9447 var bytes = Buffer.isBuffer(val)
9448 ? val
9449 : new Buffer(val, encoding)
9450 var len = bytes.length
9451 for (i = 0; i < end - start; ++i) {
9452 this[i + start] = bytes[i % len]
9453 }
9454 }
9455
9456 return this
9457 }
9458
9459 // HELPER FUNCTIONS
9460 // ================
9461
9462 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
9463
9464 function base64clean (str) {
9465 // Node strips out invalid characters like \n and \t from the string, base64-js does not
9466 str = str.trim().replace(INVALID_BASE64_RE, '')
9467 // Node converts strings with length < 2 to ''
9468 if (str.length < 2) return ''
9469 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
9470 while (str.length % 4 !== 0) {
9471 str = str + '='
9472 }
9473 return str
9474 }
9475
9476 function toHex (n) {
9477 if (n < 16) return '0' + n.toString(16)
9478 return n.toString(16)
9479 }
9480
9481 function utf8ToBytes (string, units) {
9482 units = units || Infinity
9483 var codePoint
9484 var length = string.length
9485 var leadSurrogate = null
9486 var bytes = []
9487
9488 for (var i = 0; i < length; ++i) {
9489 codePoint = string.charCodeAt(i)
9490
9491 // is surrogate component
9492 if (codePoint > 0xD7FF && codePoint < 0xE000) {
9493 // last char was a lead
9494 if (!leadSurrogate) {
9495 // no lead yet
9496 if (codePoint > 0xDBFF) {
9497 // unexpected trail
9498 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
9499 continue
9500 } else if (i + 1 === length) {
9501 // unpaired lead
9502 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
9503 continue
9504 }
9505
9506 // valid lead
9507 leadSurrogate = codePoint
9508
9509 continue
9510 }
9511
9512 // 2 leads in a row
9513 if (codePoint < 0xDC00) {
9514 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
9515 leadSurrogate = codePoint
9516 continue
9517 }
9518
9519 // valid surrogate pair
9520 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
9521 } else if (leadSurrogate) {
9522 // valid bmp char, but last char was a lead
9523 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
9524 }
9525
9526 leadSurrogate = null
9527
9528 // encode utf8
9529 if (codePoint < 0x80) {
9530 if ((units -= 1) < 0) break
9531 bytes.push(codePoint)
9532 } else if (codePoint < 0x800) {
9533 if ((units -= 2) < 0) break
9534 bytes.push(
9535 codePoint >> 0x6 | 0xC0,
9536 codePoint & 0x3F | 0x80
9537 )
9538 } else if (codePoint < 0x10000) {
9539 if ((units -= 3) < 0) break
9540 bytes.push(
9541 codePoint >> 0xC | 0xE0,
9542 codePoint >> 0x6 & 0x3F | 0x80,
9543 codePoint & 0x3F | 0x80
9544 )
9545 } else if (codePoint < 0x110000) {
9546 if ((units -= 4) < 0) break
9547 bytes.push(
9548 codePoint >> 0x12 | 0xF0,
9549 codePoint >> 0xC & 0x3F | 0x80,
9550 codePoint >> 0x6 & 0x3F | 0x80,
9551 codePoint & 0x3F | 0x80
9552 )
9553 } else {
9554 throw new Error('Invalid code point')
9555 }
9556 }
9557
9558 return bytes
9559 }
9560
9561 function asciiToBytes (str) {
9562 var byteArray = []
9563 for (var i = 0; i < str.length; ++i) {
9564 // Node's code seems to be doing this and not & 0x7F..
9565 byteArray.push(str.charCodeAt(i) & 0xFF)
9566 }
9567 return byteArray
9568 }
9569
9570 function utf16leToBytes (str, units) {
9571 var c, hi, lo
9572 var byteArray = []
9573 for (var i = 0; i < str.length; ++i) {
9574 if ((units -= 2) < 0) break
9575
9576 c = str.charCodeAt(i)
9577 hi = c >> 8
9578 lo = c % 256
9579 byteArray.push(lo)
9580 byteArray.push(hi)
9581 }
9582
9583 return byteArray
9584 }
9585
9586 function base64ToBytes (str) {
9587 return base64.toByteArray(base64clean(str))
9588 }
9589
9590 function blitBuffer (src, dst, offset, length) {
9591 for (var i = 0; i < length; ++i) {
9592 if ((i + offset >= dst.length) || (i >= src.length)) break
9593 dst[i + offset] = src[i]
9594 }
9595 return i
9596 }
9597
9598 // Node 0.10 supports `ArrayBuffer` but lacks `ArrayBuffer.isView`
9599 function isArrayBufferView (obj) {
9600 return (typeof ArrayBuffer.isView === 'function') && ArrayBuffer.isView(obj)
9601 }
9602
9603 function numberIsNaN (obj) {
9604 return obj !== obj // eslint-disable-line no-self-compare
9605 }
9606
9607 },{"base64-js":2,"ieee754":7}],5:[function(require,module,exports){
9608 (function (Buffer){
9609 // Copyright Joyent, Inc. and other Node contributors.
9610 //
9611 // Permission is hereby granted, free of charge, to any person obtaining a
9612 // copy of this software and associated documentation files (the
9613 // "Software"), to deal in the Software without restriction, including
9614 // without limitation the rights to use, copy, modify, merge, publish,
9615 // distribute, sublicense, and/or sell copies of the Software, and to permit
9616 // persons to whom the Software is furnished to do so, subject to the
9617 // following conditions:
9618 //
9619 // The above copyright notice and this permission notice shall be included
9620 // in all copies or substantial portions of the Software.
9621 //
9622 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
9623 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
9624 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
9625 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
9626 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
9627 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
9628 // USE OR OTHER DEALINGS IN THE SOFTWARE.
9629
9630 // NOTE: These type checking functions intentionally don't use `instanceof`
9631 // because it is fragile and can be easily faked with `Object.create()`.
9632
9633 function isArray(arg) {
9634 if (Array.isArray) {
9635 return Array.isArray(arg);
9636 }
9637 return objectToString(arg) === '[object Array]';
9638 }
9639 exports.isArray = isArray;
9640
9641 function isBoolean(arg) {
9642 return typeof arg === 'boolean';
9643 }
9644 exports.isBoolean = isBoolean;
9645
9646 function isNull(arg) {
9647 return arg === null;
9648 }
9649 exports.isNull = isNull;
9650
9651 function isNullOrUndefined(arg) {
9652 return arg == null;
9653 }
9654 exports.isNullOrUndefined = isNullOrUndefined;
9655
9656 function isNumber(arg) {
9657 return typeof arg === 'number';
9658 }
9659 exports.isNumber = isNumber;
9660
9661 function isString(arg) {
9662 return typeof arg === 'string';
9663 }
9664 exports.isString = isString;
9665
9666 function isSymbol(arg) {
9667 return typeof arg === 'symbol';
9668 }
9669 exports.isSymbol = isSymbol;
9670
9671 function isUndefined(arg) {
9672 return arg === void 0;
9673 }
9674 exports.isUndefined = isUndefined;
9675
9676 function isRegExp(re) {
9677 return objectToString(re) === '[object RegExp]';
9678 }
9679 exports.isRegExp = isRegExp;
9680
9681 function isObject(arg) {
9682 return typeof arg === 'object' && arg !== null;
9683 }
9684 exports.isObject = isObject;
9685
9686 function isDate(d) {
9687 return objectToString(d) === '[object Date]';
9688 }
9689 exports.isDate = isDate;
9690
9691 function isError(e) {
9692 return (objectToString(e) === '[object Error]' || e instanceof Error);
9693 }
9694 exports.isError = isError;
9695
9696 function isFunction(arg) {
9697 return typeof arg === 'function';
9698 }
9699 exports.isFunction = isFunction;
9700
9701 function isPrimitive(arg) {
9702 return arg === null ||
9703 typeof arg === 'boolean' ||
9704 typeof arg === 'number' ||
9705 typeof arg === 'string' ||
9706 typeof arg === 'symbol' || // ES6 symbol
9707 typeof arg === 'undefined';
9708 }
9709 exports.isPrimitive = isPrimitive;
9710
9711 exports.isBuffer = Buffer.isBuffer;
9712
9713 function objectToString(o) {
9714 return Object.prototype.toString.call(o);
9715 }
9716
9717 }).call(this,{"isBuffer":require("../../is-buffer/index.js")})
9718 },{"../../is-buffer/index.js":9}],6:[function(require,module,exports){
9719 // Copyright Joyent, Inc. and other Node contributors.
9720 //
9721 // Permission is hereby granted, free of charge, to any person obtaining a
9722 // copy of this software and associated documentation files (the
9723 // "Software"), to deal in the Software without restriction, including
9724 // without limitation the rights to use, copy, modify, merge, publish,
9725 // distribute, sublicense, and/or sell copies of the Software, and to permit
9726 // persons to whom the Software is furnished to do so, subject to the
9727 // following conditions:
9728 //
9729 // The above copyright notice and this permission notice shall be included
9730 // in all copies or substantial portions of the Software.
9731 //
9732 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
9733 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
9734 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
9735 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
9736 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
9737 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
9738 // USE OR OTHER DEALINGS IN THE SOFTWARE.
9739
9740 function EventEmitter() {
9741 this._events = this._events || {};
9742 this._maxListeners = this._maxListeners || undefined;
9743 }
9744 module.exports = EventEmitter;
9745
9746 // Backwards-compat with node 0.10.x
9747 EventEmitter.EventEmitter = EventEmitter;
9748
9749 EventEmitter.prototype._events = undefined;
9750 EventEmitter.prototype._maxListeners = undefined;
9751
9752 // By default EventEmitters will print a warning if more than 10 listeners are
9753 // added to it. This is a useful default which helps finding memory leaks.
9754 EventEmitter.defaultMaxListeners = 10;
9755
9756 // Obviously not all Emitters should be limited to 10. This function allows
9757 // that to be increased. Set to zero for unlimited.
9758 EventEmitter.prototype.setMaxListeners = function(n) {
9759 if (!isNumber(n) || n < 0 || isNaN(n))
9760 throw TypeError('n must be a positive number');
9761 this._maxListeners = n;
9762 return this;
9763 };
9764
9765 EventEmitter.prototype.emit = function(type) {
9766 var er, handler, len, args, i, listeners;
9767
9768 if (!this._events)
9769 this._events = {};
9770
9771 // If there is no 'error' event listener then throw.
9772 if (type === 'error') {
9773 if (!this._events.error ||
9774 (isObject(this._events.error) && !this._events.error.length)) {
9775 er = arguments[1];
9776 if (er instanceof Error) {
9777 throw er; // Unhandled 'error' event
9778 } else {
9779 // At least give some kind of context to the user
9780 var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
9781 err.context = er;
9782 throw err;
9783 }
9784 }
9785 }
9786
9787 handler = this._events[type];
9788
9789 if (isUndefined(handler))
9790 return false;
9791
9792 if (isFunction(handler)) {
9793 switch (arguments.length) {
9794 // fast cases
9795 case 1:
9796 handler.call(this);
9797 break;
9798 case 2:
9799 handler.call(this, arguments[1]);
9800 break;
9801 case 3:
9802 handler.call(this, arguments[1], arguments[2]);
9803 break;
9804 // slower
9805 default:
9806 args = Array.prototype.slice.call(arguments, 1);
9807 handler.apply(this, args);
9808 }
9809 } else if (isObject(handler)) {
9810 args = Array.prototype.slice.call(arguments, 1);
9811 listeners = handler.slice();
9812 len = listeners.length;
9813 for (i = 0; i < len; i++)
9814 listeners[i].apply(this, args);
9815 }
9816
9817 return true;
9818 };
9819
9820 EventEmitter.prototype.addListener = function(type, listener) {
9821 var m;
9822
9823 if (!isFunction(listener))
9824 throw TypeError('listener must be a function');
9825
9826 if (!this._events)
9827 this._events = {};
9828
9829 // To avoid recursion in the case that type === "newListener"! Before
9830 // adding it to the listeners, first emit "newListener".
9831 if (this._events.newListener)
9832 this.emit('newListener', type,
9833 isFunction(listener.listener) ?
9834 listener.listener : listener);
9835
9836 if (!this._events[type])
9837 // Optimize the case of one listener. Don't need the extra array object.
9838 this._events[type] = listener;
9839 else if (isObject(this._events[type]))
9840 // If we've already got an array, just append.
9841 this._events[type].push(listener);
9842 else
9843 // Adding the second element, need to change to array.
9844 this._events[type] = [this._events[type], listener];
9845
9846 // Check for listener leak
9847 if (isObject(this._events[type]) && !this._events[type].warned) {
9848 if (!isUndefined(this._maxListeners)) {
9849 m = this._maxListeners;
9850 } else {
9851 m = EventEmitter.defaultMaxListeners;
9852 }
9853
9854 if (m && m > 0 && this._events[type].length > m) {
9855 this._events[type].warned = true;
9856 console.error('(node) warning: possible EventEmitter memory ' +
9857 'leak detected. %d listeners added. ' +
9858 'Use emitter.setMaxListeners() to increase limit.',
9859 this._events[type].length);
9860 if (typeof console.trace === 'function') {
9861 // not supported in IE 10
9862 console.trace();
9863 }
9864 }
9865 }
9866
9867 return this;
9868 };
9869
9870 EventEmitter.prototype.on = EventEmitter.prototype.addListener;
9871
9872 EventEmitter.prototype.once = function(type, listener) {
9873 if (!isFunction(listener))
9874 throw TypeError('listener must be a function');
9875
9876 var fired = false;
9877
9878 function g() {
9879 this.removeListener(type, g);
9880
9881 if (!fired) {
9882 fired = true;
9883 listener.apply(this, arguments);
9884 }
9885 }
9886
9887 g.listener = listener;
9888 this.on(type, g);
9889
9890 return this;
9891 };
9892
9893 // emits a 'removeListener' event iff the listener was removed
9894 EventEmitter.prototype.removeListener = function(type, listener) {
9895 var list, position, length, i;
9896
9897 if (!isFunction(listener))
9898 throw TypeError('listener must be a function');
9899
9900 if (!this._events || !this._events[type])
9901 return this;
9902
9903 list = this._events[type];
9904 length = list.length;
9905 position = -1;
9906
9907 if (list === listener ||
9908 (isFunction(list.listener) && list.listener === listener)) {
9909 delete this._events[type];
9910 if (this._events.removeListener)
9911 this.emit('removeListener', type, listener);
9912
9913 } else if (isObject(list)) {
9914 for (i = length; i-- > 0;) {
9915 if (list[i] === listener ||
9916 (list[i].listener && list[i].listener === listener)) {
9917 position = i;
9918 break;
9919 }
9920 }
9921
9922 if (position < 0)
9923 return this;
9924
9925 if (list.length === 1) {
9926 list.length = 0;
9927 delete this._events[type];
9928 } else {
9929 list.splice(position, 1);
9930 }
9931
9932 if (this._events.removeListener)
9933 this.emit('removeListener', type, listener);
9934 }
9935
9936 return this;
9937 };
9938
9939 EventEmitter.prototype.removeAllListeners = function(type) {
9940 var key, listeners;
9941
9942 if (!this._events)
9943 return this;
9944
9945 // not listening for removeListener, no need to emit
9946 if (!this._events.removeListener) {
9947 if (arguments.length === 0)
9948 this._events = {};
9949 else if (this._events[type])
9950 delete this._events[type];
9951 return this;
9952 }
9953
9954 // emit removeListener for all listeners on all events
9955 if (arguments.length === 0) {
9956 for (key in this._events) {
9957 if (key === 'removeListener') continue;
9958 this.removeAllListeners(key);
9959 }
9960 this.removeAllListeners('removeListener');
9961 this._events = {};
9962 return this;
9963 }
9964
9965 listeners = this._events[type];
9966
9967 if (isFunction(listeners)) {
9968 this.removeListener(type, listeners);
9969 } else if (listeners) {
9970 // LIFO order
9971 while (listeners.length)
9972 this.removeListener(type, listeners[listeners.length - 1]);
9973 }
9974 delete this._events[type];
9975
9976 return this;
9977 };
9978
9979 EventEmitter.prototype.listeners = function(type) {
9980 var ret;
9981 if (!this._events || !this._events[type])
9982 ret = [];
9983 else if (isFunction(this._events[type]))
9984 ret = [this._events[type]];
9985 else
9986 ret = this._events[type].slice();
9987 return ret;
9988 };
9989
9990 EventEmitter.prototype.listenerCount = function(type) {
9991 if (this._events) {
9992 var evlistener = this._events[type];
9993
9994 if (isFunction(evlistener))
9995 return 1;
9996 else if (evlistener)
9997 return evlistener.length;
9998 }
9999 return 0;
10000 };
10001
10002 EventEmitter.listenerCount = function(emitter, type) {
10003 return emitter.listenerCount(type);
10004 };
10005
10006 function isFunction(arg) {
10007 return typeof arg === 'function';
10008 }
10009
10010 function isNumber(arg) {
10011 return typeof arg === 'number';
10012 }
10013
10014 function isObject(arg) {
10015 return typeof arg === 'object' && arg !== null;
10016 }
10017
10018 function isUndefined(arg) {
10019 return arg === void 0;
10020 }
10021
10022 },{}],7:[function(require,module,exports){
10023 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
10024 var e, m
10025 var eLen = nBytes * 8 - mLen - 1
10026 var eMax = (1 << eLen) - 1
10027 var eBias = eMax >> 1
10028 var nBits = -7
10029 var i = isLE ? (nBytes - 1) : 0
10030 var d = isLE ? -1 : 1
10031 var s = buffer[offset + i]
10032
10033 i += d
10034
10035 e = s & ((1 << (-nBits)) - 1)
10036 s >>= (-nBits)
10037 nBits += eLen
10038 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
10039
10040 m = e & ((1 << (-nBits)) - 1)
10041 e >>= (-nBits)
10042 nBits += mLen
10043 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
10044
10045 if (e === 0) {
10046 e = 1 - eBias
10047 } else if (e === eMax) {
10048 return m ? NaN : ((s ? -1 : 1) * Infinity)
10049 } else {
10050 m = m + Math.pow(2, mLen)
10051 e = e - eBias
10052 }
10053 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
10054 }
10055
10056 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
10057 var e, m, c
10058 var eLen = nBytes * 8 - mLen - 1
10059 var eMax = (1 << eLen) - 1
10060 var eBias = eMax >> 1
10061 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
10062 var i = isLE ? 0 : (nBytes - 1)
10063 var d = isLE ? 1 : -1
10064 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
10065
10066 value = Math.abs(value)
10067
10068 if (isNaN(value) || value === Infinity) {
10069 m = isNaN(value) ? 1 : 0
10070 e = eMax
10071 } else {
10072 e = Math.floor(Math.log(value) / Math.LN2)
10073 if (value * (c = Math.pow(2, -e)) < 1) {
10074 e--
10075 c *= 2
10076 }
10077 if (e + eBias >= 1) {
10078 value += rt / c
10079 } else {
10080 value += rt * Math.pow(2, 1 - eBias)
10081 }
10082 if (value * c >= 2) {
10083 e++
10084 c /= 2
10085 }
10086
10087 if (e + eBias >= eMax) {
10088 m = 0
10089 e = eMax
10090 } else if (e + eBias >= 1) {
10091 m = (value * c - 1) * Math.pow(2, mLen)
10092 e = e + eBias
10093 } else {
10094 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
10095 e = 0
10096 }
10097 }
10098
10099 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
10100
10101 e = (e << mLen) | m
10102 eLen += mLen
10103 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
10104
10105 buffer[offset + i - d] |= s * 128
10106 }
10107
10108 },{}],8:[function(require,module,exports){
10109 if (typeof Object.create === 'function') {
10110 // implementation from standard node.js 'util' module
10111 module.exports = function inherits(ctor, superCtor) {
10112 ctor.super_ = superCtor
10113 ctor.prototype = Object.create(superCtor.prototype, {
10114 constructor: {
10115 value: ctor,
10116 enumerable: false,
10117 writable: true,
10118 configurable: true
10119 }
10120 });
10121 };
10122 } else {
10123 // old school shim for old browsers
10124 module.exports = function inherits(ctor, superCtor) {
10125 ctor.super_ = superCtor
10126 var TempCtor = function () {}
10127 TempCtor.prototype = superCtor.prototype
10128 ctor.prototype = new TempCtor()
10129 ctor.prototype.constructor = ctor
10130 }
10131 }
10132
10133 },{}],9:[function(require,module,exports){
10134 /*!
10135 * Determine if an object is a Buffer
10136 *
10137 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
10138 * @license MIT
10139 */
10140
10141 // The _isBuffer check is for Safari 5-7 support, because it's missing
10142 // Object.prototype.constructor. Remove this eventually
10143 module.exports = function (obj) {
10144 return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
10145 }
10146
10147 function isBuffer (obj) {
10148 return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
10149 }
10150
10151 // For Node v0.10 support. Remove this eventually.
10152 function isSlowBuffer (obj) {
10153 return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
10154 }
10155
10156 },{}],10:[function(require,module,exports){
10157 var toString = {}.toString;
10158
10159 module.exports = Array.isArray || function (arr) {
10160 return toString.call(arr) == '[object Array]';
10161 };
10162
10163 },{}],11:[function(require,module,exports){
10164 (function (process){
10165 'use strict';
10166
10167 if (!process.version ||
10168 process.version.indexOf('v0.') === 0 ||
10169 process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
10170 module.exports = nextTick;
10171 } else {
10172 module.exports = process.nextTick;
10173 }
10174
10175 function nextTick(fn, arg1, arg2, arg3) {
10176 if (typeof fn !== 'function') {
10177 throw new TypeError('"callback" argument must be a function');
10178 }
10179 var len = arguments.length;
10180 var args, i;
10181 switch (len) {
10182 case 0:
10183 case 1:
10184 return process.nextTick(fn);
10185 case 2:
10186 return process.nextTick(function afterTickOne() {
10187 fn.call(null, arg1);
10188 });
10189 case 3:
10190 return process.nextTick(function afterTickTwo() {
10191 fn.call(null, arg1, arg2);
10192 });
10193 case 4:
10194 return process.nextTick(function afterTickThree() {
10195 fn.call(null, arg1, arg2, arg3);
10196 });
10197 default:
10198 args = new Array(len - 1);
10199 i = 0;
10200 while (i < args.length) {
10201 args[i++] = arguments[i];
10202 }
10203 return process.nextTick(function afterTick() {
10204 fn.apply(null, args);
10205 });
10206 }
10207 }
10208
10209 }).call(this,require('_process'))
10210 },{"_process":12}],12:[function(require,module,exports){
10211 // shim for using process in browser
10212 var process = module.exports = {};
10213
10214 // cached from whatever global is present so that test runners that stub it
10215 // don't break things. But we need to wrap it in a try catch in case it is
10216 // wrapped in strict mode code which doesn't define any globals. It's inside a
10217 // function because try/catches deoptimize in certain engines.
10218
10219 var cachedSetTimeout;
10220 var cachedClearTimeout;
10221
10222 function defaultSetTimout() {
10223 throw new Error('setTimeout has not been defined');
10224 }
10225 function defaultClearTimeout () {
10226 throw new Error('clearTimeout has not been defined');
10227 }
10228 (function () {
10229 try {
10230 if (typeof setTimeout === 'function') {
10231 cachedSetTimeout = setTimeout;
10232 } else {
10233 cachedSetTimeout = defaultSetTimout;
10234 }
10235 } catch (e) {
10236 cachedSetTimeout = defaultSetTimout;
10237 }
10238 try {
10239 if (typeof clearTimeout === 'function') {
10240 cachedClearTimeout = clearTimeout;
10241 } else {
10242 cachedClearTimeout = defaultClearTimeout;
10243 }
10244 } catch (e) {
10245 cachedClearTimeout = defaultClearTimeout;
10246 }
10247 } ())
10248 function runTimeout(fun) {
10249 if (cachedSetTimeout === setTimeout) {
10250 //normal enviroments in sane situations
10251 return setTimeout(fun, 0);
10252 }
10253 // if setTimeout wasn't available but was latter defined
10254 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
10255 cachedSetTimeout = setTimeout;
10256 return setTimeout(fun, 0);
10257 }
10258 try {
10259 // when when somebody has screwed with setTimeout but no I.E. maddness
10260 return cachedSetTimeout(fun, 0);
10261 } catch(e){
10262 try {
10263 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
10264 return cachedSetTimeout.call(null, fun, 0);
10265 } catch(e){
10266 // 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
10267 return cachedSetTimeout.call(this, fun, 0);
10268 }
10269 }
10270
10271
10272 }
10273 function runClearTimeout(marker) {
10274 if (cachedClearTimeout === clearTimeout) {
10275 //normal enviroments in sane situations
10276 return clearTimeout(marker);
10277 }
10278 // if clearTimeout wasn't available but was latter defined
10279 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
10280 cachedClearTimeout = clearTimeout;
10281 return clearTimeout(marker);
10282 }
10283 try {
10284 // when when somebody has screwed with setTimeout but no I.E. maddness
10285 return cachedClearTimeout(marker);
10286 } catch (e){
10287 try {
10288 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
10289 return cachedClearTimeout.call(null, marker);
10290 } catch (e){
10291 // 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.
10292 // Some versions of I.E. have different rules for clearTimeout vs setTimeout
10293 return cachedClearTimeout.call(this, marker);
10294 }
10295 }
10296
10297
10298
10299 }
10300 var queue = [];
10301 var draining = false;
10302 var currentQueue;
10303 var queueIndex = -1;
10304
10305 function cleanUpNextTick() {
10306 if (!draining || !currentQueue) {
10307 return;
10308 }
10309 draining = false;
10310 if (currentQueue.length) {
10311 queue = currentQueue.concat(queue);
10312 } else {
10313 queueIndex = -1;
10314 }
10315 if (queue.length) {
10316 drainQueue();
10317 }
10318 }
10319
10320 function drainQueue() {
10321 if (draining) {
10322 return;
10323 }
10324 var timeout = runTimeout(cleanUpNextTick);
10325 draining = true;
10326
10327 var len = queue.length;
10328 while(len) {
10329 currentQueue = queue;
10330 queue = [];
10331 while (++queueIndex < len) {
10332 if (currentQueue) {
10333 currentQueue[queueIndex].run();
10334 }
10335 }
10336 queueIndex = -1;
10337 len = queue.length;
10338 }
10339 currentQueue = null;
10340 draining = false;
10341 runClearTimeout(timeout);
10342 }
10343
10344 process.nextTick = function (fun) {
10345 var args = new Array(arguments.length - 1);
10346 if (arguments.length > 1) {
10347 for (var i = 1; i < arguments.length; i++) {
10348 args[i - 1] = arguments[i];
10349 }
10350 }
10351 queue.push(new Item(fun, args));
10352 if (queue.length === 1 && !draining) {
10353 runTimeout(drainQueue);
10354 }
10355 };
10356
10357 // v8 likes predictible objects
10358 function Item(fun, array) {
10359 this.fun = fun;
10360 this.array = array;
10361 }
10362 Item.prototype.run = function () {
10363 this.fun.apply(null, this.array);
10364 };
10365 process.title = 'browser';
10366 process.browser = true;
10367 process.env = {};
10368 process.argv = [];
10369 process.version = ''; // empty string to avoid regexp issues
10370 process.versions = {};
10371
10372 function noop() {}
10373
10374 process.on = noop;
10375 process.addListener = noop;
10376 process.once = noop;
10377 process.off = noop;
10378 process.removeListener = noop;
10379 process.removeAllListeners = noop;
10380 process.emit = noop;
10381 process.prependListener = noop;
10382 process.prependOnceListener = noop;
10383
10384 process.listeners = function (name) { return [] }
10385
10386 process.binding = function (name) {
10387 throw new Error('process.binding is not supported');
10388 };
10389
10390 process.cwd = function () { return '/' };
10391 process.chdir = function (dir) {
10392 throw new Error('process.chdir is not supported');
10393 };
10394 process.umask = function() { return 0; };
10395
10396 },{}],13:[function(require,module,exports){
10397 module.exports = require('./lib/_stream_duplex.js');
10398
10399 },{"./lib/_stream_duplex.js":14}],14:[function(require,module,exports){
10400 // Copyright Joyent, Inc. and other Node contributors.
10401 //
10402 // Permission is hereby granted, free of charge, to any person obtaining a
10403 // copy of this software and associated documentation files (the
10404 // "Software"), to deal in the Software without restriction, including
10405 // without limitation the rights to use, copy, modify, merge, publish,
10406 // distribute, sublicense, and/or sell copies of the Software, and to permit
10407 // persons to whom the Software is furnished to do so, subject to the
10408 // following conditions:
10409 //
10410 // The above copyright notice and this permission notice shall be included
10411 // in all copies or substantial portions of the Software.
10412 //
10413 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
10414 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10415 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
10416 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
10417 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
10418 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
10419 // USE OR OTHER DEALINGS IN THE SOFTWARE.
10420
10421 // a duplex stream is just a stream that is both readable and writable.
10422 // Since JS doesn't have multiple prototypal inheritance, this class
10423 // prototypally inherits from Readable, and then parasitically from
10424 // Writable.
10425
10426 'use strict';
10427
10428 /*<replacement>*/
10429
10430 var processNextTick = require('process-nextick-args');
10431 /*</replacement>*/
10432
10433 /*<replacement>*/
10434 var objectKeys = Object.keys || function (obj) {
10435 var keys = [];
10436 for (var key in obj) {
10437 keys.push(key);
10438 }return keys;
10439 };
10440 /*</replacement>*/
10441
10442 module.exports = Duplex;
10443
10444 /*<replacement>*/
10445 var util = require('core-util-is');
10446 util.inherits = require('inherits');
10447 /*</replacement>*/
10448
10449 var Readable = require('./_stream_readable');
10450 var Writable = require('./_stream_writable');
10451
10452 util.inherits(Duplex, Readable);
10453
10454 var keys = objectKeys(Writable.prototype);
10455 for (var v = 0; v < keys.length; v++) {
10456 var method = keys[v];
10457 if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
10458 }
10459
10460 function Duplex(options) {
10461 if (!(this instanceof Duplex)) return new Duplex(options);
10462
10463 Readable.call(this, options);
10464 Writable.call(this, options);
10465
10466 if (options && options.readable === false) this.readable = false;
10467
10468 if (options && options.writable === false) this.writable = false;
10469
10470 this.allowHalfOpen = true;
10471 if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
10472
10473 this.once('end', onend);
10474 }
10475
10476 // the no-half-open enforcer
10477 function onend() {
10478 // if we allow half-open state, or if the writable side ended,
10479 // then we're ok.
10480 if (this.allowHalfOpen || this._writableState.ended) return;
10481
10482 // no more data can be written.
10483 // But allow more writes to happen in this tick.
10484 processNextTick(onEndNT, this);
10485 }
10486
10487 function onEndNT(self) {
10488 self.end();
10489 }
10490
10491 Object.defineProperty(Duplex.prototype, 'destroyed', {
10492 get: function () {
10493 if (this._readableState === undefined || this._writableState === undefined) {
10494 return false;
10495 }
10496 return this._readableState.destroyed && this._writableState.destroyed;
10497 },
10498 set: function (value) {
10499 // we ignore the value if the stream
10500 // has not been initialized yet
10501 if (this._readableState === undefined || this._writableState === undefined) {
10502 return;
10503 }
10504
10505 // backward compatibility, the user is explicitly
10506 // managing destroyed
10507 this._readableState.destroyed = value;
10508 this._writableState.destroyed = value;
10509 }
10510 });
10511
10512 Duplex.prototype._destroy = function (err, cb) {
10513 this.push(null);
10514 this.end();
10515
10516 processNextTick(cb, err);
10517 };
10518
10519 function forEach(xs, f) {
10520 for (var i = 0, l = xs.length; i < l; i++) {
10521 f(xs[i], i);
10522 }
10523 }
10524 },{"./_stream_readable":16,"./_stream_writable":18,"core-util-is":5,"inherits":8,"process-nextick-args":11}],15:[function(require,module,exports){
10525 // Copyright Joyent, Inc. and other Node contributors.
10526 //
10527 // Permission is hereby granted, free of charge, to any person obtaining a
10528 // copy of this software and associated documentation files (the
10529 // "Software"), to deal in the Software without restriction, including
10530 // without limitation the rights to use, copy, modify, merge, publish,
10531 // distribute, sublicense, and/or sell copies of the Software, and to permit
10532 // persons to whom the Software is furnished to do so, subject to the
10533 // following conditions:
10534 //
10535 // The above copyright notice and this permission notice shall be included
10536 // in all copies or substantial portions of the Software.
10537 //
10538 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
10539 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10540 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
10541 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
10542 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
10543 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
10544 // USE OR OTHER DEALINGS IN THE SOFTWARE.
10545
10546 // a passthrough stream.
10547 // basically just the most minimal sort of Transform stream.
10548 // Every written chunk gets output as-is.
10549
10550 'use strict';
10551
10552 module.exports = PassThrough;
10553
10554 var Transform = require('./_stream_transform');
10555
10556 /*<replacement>*/
10557 var util = require('core-util-is');
10558 util.inherits = require('inherits');
10559 /*</replacement>*/
10560
10561 util.inherits(PassThrough, Transform);
10562
10563 function PassThrough(options) {
10564 if (!(this instanceof PassThrough)) return new PassThrough(options);
10565
10566 Transform.call(this, options);
10567 }
10568
10569 PassThrough.prototype._transform = function (chunk, encoding, cb) {
10570 cb(null, chunk);
10571 };
10572 },{"./_stream_transform":17,"core-util-is":5,"inherits":8}],16:[function(require,module,exports){
10573 (function (process,global){
10574 // Copyright Joyent, Inc. and other Node contributors.
10575 //
10576 // Permission is hereby granted, free of charge, to any person obtaining a
10577 // copy of this software and associated documentation files (the
10578 // "Software"), to deal in the Software without restriction, including
10579 // without limitation the rights to use, copy, modify, merge, publish,
10580 // distribute, sublicense, and/or sell copies of the Software, and to permit
10581 // persons to whom the Software is furnished to do so, subject to the
10582 // following conditions:
10583 //
10584 // The above copyright notice and this permission notice shall be included
10585 // in all copies or substantial portions of the Software.
10586 //
10587 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
10588 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10589 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
10590 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
10591 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
10592 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
10593 // USE OR OTHER DEALINGS IN THE SOFTWARE.
10594
10595 'use strict';
10596
10597 /*<replacement>*/
10598
10599 var processNextTick = require('process-nextick-args');
10600 /*</replacement>*/
10601
10602 module.exports = Readable;
10603
10604 /*<replacement>*/
10605 var isArray = require('isarray');
10606 /*</replacement>*/
10607
10608 /*<replacement>*/
10609 var Duplex;
10610 /*</replacement>*/
10611
10612 Readable.ReadableState = ReadableState;
10613
10614 /*<replacement>*/
10615 var EE = require('events').EventEmitter;
10616
10617 var EElistenerCount = function (emitter, type) {
10618 return emitter.listeners(type).length;
10619 };
10620 /*</replacement>*/
10621
10622 /*<replacement>*/
10623 var Stream = require('./internal/streams/stream');
10624 /*</replacement>*/
10625
10626 // TODO(bmeurer): Change this back to const once hole checks are
10627 // properly optimized away early in Ignition+TurboFan.
10628 /*<replacement>*/
10629 var Buffer = require('safe-buffer').Buffer;
10630 var OurUint8Array = global.Uint8Array || function () {};
10631 function _uint8ArrayToBuffer(chunk) {
10632 return Buffer.from(chunk);
10633 }
10634 function _isUint8Array(obj) {
10635 return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
10636 }
10637 /*</replacement>*/
10638
10639 /*<replacement>*/
10640 var util = require('core-util-is');
10641 util.inherits = require('inherits');
10642 /*</replacement>*/
10643
10644 /*<replacement>*/
10645 var debugUtil = require('util');
10646 var debug = void 0;
10647 if (debugUtil && debugUtil.debuglog) {
10648 debug = debugUtil.debuglog('stream');
10649 } else {
10650 debug = function () {};
10651 }
10652 /*</replacement>*/
10653
10654 var BufferList = require('./internal/streams/BufferList');
10655 var destroyImpl = require('./internal/streams/destroy');
10656 var StringDecoder;
10657
10658 util.inherits(Readable, Stream);
10659
10660 var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];
10661
10662 function prependListener(emitter, event, fn) {
10663 // Sadly this is not cacheable as some libraries bundle their own
10664 // event emitter implementation with them.
10665 if (typeof emitter.prependListener === 'function') {
10666 return emitter.prependListener(event, fn);
10667 } else {
10668 // This is a hack to make sure that our error handler is attached before any
10669 // userland ones. NEVER DO THIS. This is here only because this code needs
10670 // to continue to work with older versions of Node.js that do not include
10671 // the prependListener() method. The goal is to eventually remove this hack.
10672 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]];
10673 }
10674 }
10675
10676 function ReadableState(options, stream) {
10677 Duplex = Duplex || require('./_stream_duplex');
10678
10679 options = options || {};
10680
10681 // object stream flag. Used to make read(n) ignore n and to
10682 // make all the buffer merging and length checks go away
10683 this.objectMode = !!options.objectMode;
10684
10685 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
10686
10687 // the point at which it stops calling _read() to fill the buffer
10688 // Note: 0 is a valid value, means "don't call _read preemptively ever"
10689 var hwm = options.highWaterMark;
10690 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
10691 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
10692
10693 // cast to ints.
10694 this.highWaterMark = Math.floor(this.highWaterMark);
10695
10696 // A linked list is used to store data chunks instead of an array because the
10697 // linked list can remove elements from the beginning faster than
10698 // array.shift()
10699 this.buffer = new BufferList();
10700 this.length = 0;
10701 this.pipes = null;
10702 this.pipesCount = 0;
10703 this.flowing = null;
10704 this.ended = false;
10705 this.endEmitted = false;
10706 this.reading = false;
10707
10708 // a flag to be able to tell if the event 'readable'/'data' is emitted
10709 // immediately, or on a later tick. We set this to true at first, because
10710 // any actions that shouldn't happen until "later" should generally also
10711 // not happen before the first read call.
10712 this.sync = true;
10713
10714 // whenever we return null, then we set a flag to say
10715 // that we're awaiting a 'readable' event emission.
10716 this.needReadable = false;
10717 this.emittedReadable = false;
10718 this.readableListening = false;
10719 this.resumeScheduled = false;
10720
10721 // has it been destroyed
10722 this.destroyed = false;
10723
10724 // Crypto is kind of old and crusty. Historically, its default string
10725 // encoding is 'binary' so we have to make this configurable.
10726 // Everything else in the universe uses 'utf8', though.
10727 this.defaultEncoding = options.defaultEncoding || 'utf8';
10728
10729 // the number of writers that are awaiting a drain event in .pipe()s
10730 this.awaitDrain = 0;
10731
10732 // if true, a maybeReadMore has been scheduled
10733 this.readingMore = false;
10734
10735 this.decoder = null;
10736 this.encoding = null;
10737 if (options.encoding) {
10738 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
10739 this.decoder = new StringDecoder(options.encoding);
10740 this.encoding = options.encoding;
10741 }
10742 }
10743
10744 function Readable(options) {
10745 Duplex = Duplex || require('./_stream_duplex');
10746
10747 if (!(this instanceof Readable)) return new Readable(options);
10748
10749 this._readableState = new ReadableState(options, this);
10750
10751 // legacy
10752 this.readable = true;
10753
10754 if (options) {
10755 if (typeof options.read === 'function') this._read = options.read;
10756
10757 if (typeof options.destroy === 'function') this._destroy = options.destroy;
10758 }
10759
10760 Stream.call(this);
10761 }
10762
10763 Object.defineProperty(Readable.prototype, 'destroyed', {
10764 get: function () {
10765 if (this._readableState === undefined) {
10766 return false;
10767 }
10768 return this._readableState.destroyed;
10769 },
10770 set: function (value) {
10771 // we ignore the value if the stream
10772 // has not been initialized yet
10773 if (!this._readableState) {
10774 return;
10775 }
10776
10777 // backward compatibility, the user is explicitly
10778 // managing destroyed
10779 this._readableState.destroyed = value;
10780 }
10781 });
10782
10783 Readable.prototype.destroy = destroyImpl.destroy;
10784 Readable.prototype._undestroy = destroyImpl.undestroy;
10785 Readable.prototype._destroy = function (err, cb) {
10786 this.push(null);
10787 cb(err);
10788 };
10789
10790 // Manually shove something into the read() buffer.
10791 // This returns true if the highWaterMark has not been hit yet,
10792 // similar to how Writable.write() returns true if you should
10793 // write() some more.
10794 Readable.prototype.push = function (chunk, encoding) {
10795 var state = this._readableState;
10796 var skipChunkCheck;
10797
10798 if (!state.objectMode) {
10799 if (typeof chunk === 'string') {
10800 encoding = encoding || state.defaultEncoding;
10801 if (encoding !== state.encoding) {
10802 chunk = Buffer.from(chunk, encoding);
10803 encoding = '';
10804 }
10805 skipChunkCheck = true;
10806 }
10807 } else {
10808 skipChunkCheck = true;
10809 }
10810
10811 return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
10812 };
10813
10814 // Unshift should *always* be something directly out of read()
10815 Readable.prototype.unshift = function (chunk) {
10816 return readableAddChunk(this, chunk, null, true, false);
10817 };
10818
10819 function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
10820 var state = stream._readableState;
10821 if (chunk === null) {
10822 state.reading = false;
10823 onEofChunk(stream, state);
10824 } else {
10825 var er;
10826 if (!skipChunkCheck) er = chunkInvalid(state, chunk);
10827 if (er) {
10828 stream.emit('error', er);
10829 } else if (state.objectMode || chunk && chunk.length > 0) {
10830 if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {
10831 chunk = _uint8ArrayToBuffer(chunk);
10832 }
10833
10834 if (addToFront) {
10835 if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);
10836 } else if (state.ended) {
10837 stream.emit('error', new Error('stream.push() after EOF'));
10838 } else {
10839 state.reading = false;
10840 if (state.decoder && !encoding) {
10841 chunk = state.decoder.write(chunk);
10842 if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);
10843 } else {
10844 addChunk(stream, state, chunk, false);
10845 }
10846 }
10847 } else if (!addToFront) {
10848 state.reading = false;
10849 }
10850 }
10851
10852 return needMoreData(state);
10853 }
10854
10855 function addChunk(stream, state, chunk, addToFront) {
10856 if (state.flowing && state.length === 0 && !state.sync) {
10857 stream.emit('data', chunk);
10858 stream.read(0);
10859 } else {
10860 // update the buffer info.
10861 state.length += state.objectMode ? 1 : chunk.length;
10862 if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
10863
10864 if (state.needReadable) emitReadable(stream);
10865 }
10866 maybeReadMore(stream, state);
10867 }
10868
10869 function chunkInvalid(state, chunk) {
10870 var er;
10871 if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
10872 er = new TypeError('Invalid non-string/buffer chunk');
10873 }
10874 return er;
10875 }
10876
10877 // if it's past the high water mark, we can push in some more.
10878 // Also, if we have no data yet, we can stand some
10879 // more bytes. This is to work around cases where hwm=0,
10880 // such as the repl. Also, if the push() triggered a
10881 // readable event, and the user called read(largeNumber) such that
10882 // needReadable was set, then we ought to push more, so that another
10883 // 'readable' event will be triggered.
10884 function needMoreData(state) {
10885 return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
10886 }
10887
10888 Readable.prototype.isPaused = function () {
10889 return this._readableState.flowing === false;
10890 };
10891
10892 // backwards compatibility.
10893 Readable.prototype.setEncoding = function (enc) {
10894 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
10895 this._readableState.decoder = new StringDecoder(enc);
10896 this._readableState.encoding = enc;
10897 return this;
10898 };
10899
10900 // Don't raise the hwm > 8MB
10901 var MAX_HWM = 0x800000;
10902 function computeNewHighWaterMark(n) {
10903 if (n >= MAX_HWM) {
10904 n = MAX_HWM;
10905 } else {
10906 // Get the next highest power of 2 to prevent increasing hwm excessively in
10907 // tiny amounts
10908 n--;
10909 n |= n >>> 1;
10910 n |= n >>> 2;
10911 n |= n >>> 4;
10912 n |= n >>> 8;
10913 n |= n >>> 16;
10914 n++;
10915 }
10916 return n;
10917 }
10918
10919 // This function is designed to be inlinable, so please take care when making
10920 // changes to the function body.
10921 function howMuchToRead(n, state) {
10922 if (n <= 0 || state.length === 0 && state.ended) return 0;
10923 if (state.objectMode) return 1;
10924 if (n !== n) {
10925 // Only flow one buffer at a time
10926 if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
10927 }
10928 // If we're asking for more than the current hwm, then raise the hwm.
10929 if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
10930 if (n <= state.length) return n;
10931 // Don't have enough
10932 if (!state.ended) {
10933 state.needReadable = true;
10934 return 0;
10935 }
10936 return state.length;
10937 }
10938
10939 // you can override either this method, or the async _read(n) below.
10940 Readable.prototype.read = function (n) {
10941 debug('read', n);
10942 n = parseInt(n, 10);
10943 var state = this._readableState;
10944 var nOrig = n;
10945
10946 if (n !== 0) state.emittedReadable = false;
10947
10948 // if we're doing read(0) to trigger a readable event, but we
10949 // already have a bunch of data in the buffer, then just trigger
10950 // the 'readable' event and move on.
10951 if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
10952 debug('read: emitReadable', state.length, state.ended);
10953 if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
10954 return null;
10955 }
10956
10957 n = howMuchToRead(n, state);
10958
10959 // if we've ended, and we're now clear, then finish it up.
10960 if (n === 0 && state.ended) {
10961 if (state.length === 0) endReadable(this);
10962 return null;
10963 }
10964
10965 // All the actual chunk generation logic needs to be
10966 // *below* the call to _read. The reason is that in certain
10967 // synthetic stream cases, such as passthrough streams, _read
10968 // may be a completely synchronous operation which may change
10969 // the state of the read buffer, providing enough data when
10970 // before there was *not* enough.
10971 //
10972 // So, the steps are:
10973 // 1. Figure out what the state of things will be after we do
10974 // a read from the buffer.
10975 //
10976 // 2. If that resulting state will trigger a _read, then call _read.
10977 // Note that this may be asynchronous, or synchronous. Yes, it is
10978 // deeply ugly to write APIs this way, but that still doesn't mean
10979 // that the Readable class should behave improperly, as streams are
10980 // designed to be sync/async agnostic.
10981 // Take note if the _read call is sync or async (ie, if the read call
10982 // has returned yet), so that we know whether or not it's safe to emit
10983 // 'readable' etc.
10984 //
10985 // 3. Actually pull the requested chunks out of the buffer and return.
10986
10987 // if we need a readable event, then we need to do some reading.
10988 var doRead = state.needReadable;
10989 debug('need readable', doRead);
10990
10991 // if we currently have less than the highWaterMark, then also read some
10992 if (state.length === 0 || state.length - n < state.highWaterMark) {
10993 doRead = true;
10994 debug('length less than watermark', doRead);
10995 }
10996
10997 // however, if we've ended, then there's no point, and if we're already
10998 // reading, then it's unnecessary.
10999 if (state.ended || state.reading) {
11000 doRead = false;
11001 debug('reading or ended', doRead);
11002 } else if (doRead) {
11003 debug('do read');
11004 state.reading = true;
11005 state.sync = true;
11006 // if the length is currently zero, then we *need* a readable event.
11007 if (state.length === 0) state.needReadable = true;
11008 // call internal read method
11009 this._read(state.highWaterMark);
11010 state.sync = false;
11011 // If _read pushed data synchronously, then `reading` will be false,
11012 // and we need to re-evaluate how much data we can return to the user.
11013 if (!state.reading) n = howMuchToRead(nOrig, state);
11014 }
11015
11016 var ret;
11017 if (n > 0) ret = fromList(n, state);else ret = null;
11018
11019 if (ret === null) {
11020 state.needReadable = true;
11021 n = 0;
11022 } else {
11023 state.length -= n;
11024 }
11025
11026 if (state.length === 0) {
11027 // If we have nothing in the buffer, then we want to know
11028 // as soon as we *do* get something into the buffer.
11029 if (!state.ended) state.needReadable = true;
11030
11031 // If we tried to read() past the EOF, then emit end on the next tick.
11032 if (nOrig !== n && state.ended) endReadable(this);
11033 }
11034
11035 if (ret !== null) this.emit('data', ret);
11036
11037 return ret;
11038 };
11039
11040 function onEofChunk(stream, state) {
11041 if (state.ended) return;
11042 if (state.decoder) {
11043 var chunk = state.decoder.end();
11044 if (chunk && chunk.length) {
11045 state.buffer.push(chunk);
11046 state.length += state.objectMode ? 1 : chunk.length;
11047 }
11048 }
11049 state.ended = true;
11050
11051 // emit 'readable' now to make sure it gets picked up.
11052 emitReadable(stream);
11053 }
11054
11055 // Don't emit readable right away in sync mode, because this can trigger
11056 // another read() call => stack overflow. This way, it might trigger
11057 // a nextTick recursion warning, but that's not so bad.
11058 function emitReadable(stream) {
11059 var state = stream._readableState;
11060 state.needReadable = false;
11061 if (!state.emittedReadable) {
11062 debug('emitReadable', state.flowing);
11063 state.emittedReadable = true;
11064 if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
11065 }
11066 }
11067
11068 function emitReadable_(stream) {
11069 debug('emit readable');
11070 stream.emit('readable');
11071 flow(stream);
11072 }
11073
11074 // at this point, the user has presumably seen the 'readable' event,
11075 // and called read() to consume some data. that may have triggered
11076 // in turn another _read(n) call, in which case reading = true if
11077 // it's in progress.
11078 // However, if we're not ended, or reading, and the length < hwm,
11079 // then go ahead and try to read some more preemptively.
11080 function maybeReadMore(stream, state) {
11081 if (!state.readingMore) {
11082 state.readingMore = true;
11083 processNextTick(maybeReadMore_, stream, state);
11084 }
11085 }
11086
11087 function maybeReadMore_(stream, state) {
11088 var len = state.length;
11089 while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
11090 debug('maybeReadMore read 0');
11091 stream.read(0);
11092 if (len === state.length)
11093 // didn't get any data, stop spinning.
11094 break;else len = state.length;
11095 }
11096 state.readingMore = false;
11097 }
11098
11099 // abstract method. to be overridden in specific implementation classes.
11100 // call cb(er, data) where data is <= n in length.
11101 // for virtual (non-string, non-buffer) streams, "length" is somewhat
11102 // arbitrary, and perhaps not very meaningful.
11103 Readable.prototype._read = function (n) {
11104 this.emit('error', new Error('_read() is not implemented'));
11105 };
11106
11107 Readable.prototype.pipe = function (dest, pipeOpts) {
11108 var src = this;
11109 var state = this._readableState;
11110
11111 switch (state.pipesCount) {
11112 case 0:
11113 state.pipes = dest;
11114 break;
11115 case 1:
11116 state.pipes = [state.pipes, dest];
11117 break;
11118 default:
11119 state.pipes.push(dest);
11120 break;
11121 }
11122 state.pipesCount += 1;
11123 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
11124
11125 var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
11126
11127 var endFn = doEnd ? onend : unpipe;
11128 if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
11129
11130 dest.on('unpipe', onunpipe);
11131 function onunpipe(readable, unpipeInfo) {
11132 debug('onunpipe');
11133 if (readable === src) {
11134 if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
11135 unpipeInfo.hasUnpiped = true;
11136 cleanup();
11137 }
11138 }
11139 }
11140
11141 function onend() {
11142 debug('onend');
11143 dest.end();
11144 }
11145
11146 // when the dest drains, it reduces the awaitDrain counter
11147 // on the source. This would be more elegant with a .once()
11148 // handler in flow(), but adding and removing repeatedly is
11149 // too slow.
11150 var ondrain = pipeOnDrain(src);
11151 dest.on('drain', ondrain);
11152
11153 var cleanedUp = false;
11154 function cleanup() {
11155 debug('cleanup');
11156 // cleanup event handlers once the pipe is broken
11157 dest.removeListener('close', onclose);
11158 dest.removeListener('finish', onfinish);
11159 dest.removeListener('drain', ondrain);
11160 dest.removeListener('error', onerror);
11161 dest.removeListener('unpipe', onunpipe);
11162 src.removeListener('end', onend);
11163 src.removeListener('end', unpipe);
11164 src.removeListener('data', ondata);
11165
11166 cleanedUp = true;
11167
11168 // if the reader is waiting for a drain event from this
11169 // specific writer, then it would cause it to never start
11170 // flowing again.
11171 // So, if this is awaiting a drain, then we just call it now.
11172 // If we don't know, then assume that we are waiting for one.
11173 if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
11174 }
11175
11176 // If the user pushes more data while we're writing to dest then we'll end up
11177 // in ondata again. However, we only want to increase awaitDrain once because
11178 // dest will only emit one 'drain' event for the multiple writes.
11179 // => Introduce a guard on increasing awaitDrain.
11180 var increasedAwaitDrain = false;
11181 src.on('data', ondata);
11182 function ondata(chunk) {
11183 debug('ondata');
11184 increasedAwaitDrain = false;
11185 var ret = dest.write(chunk);
11186 if (false === ret && !increasedAwaitDrain) {
11187 // If the user unpiped during `dest.write()`, it is possible
11188 // to get stuck in a permanently paused state if that write
11189 // also returned false.
11190 // => Check whether `dest` is still a piping destination.
11191 if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
11192 debug('false write response, pause', src._readableState.awaitDrain);
11193 src._readableState.awaitDrain++;
11194 increasedAwaitDrain = true;
11195 }
11196 src.pause();
11197 }
11198 }
11199
11200 // if the dest has an error, then stop piping into it.
11201 // however, don't suppress the throwing behavior for this.
11202 function onerror(er) {
11203 debug('onerror', er);
11204 unpipe();
11205 dest.removeListener('error', onerror);
11206 if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
11207 }
11208
11209 // Make sure our error handler is attached before userland ones.
11210 prependListener(dest, 'error', onerror);
11211
11212 // Both close and finish should trigger unpipe, but only once.
11213 function onclose() {
11214 dest.removeListener('finish', onfinish);
11215 unpipe();
11216 }
11217 dest.once('close', onclose);
11218 function onfinish() {
11219 debug('onfinish');
11220 dest.removeListener('close', onclose);
11221 unpipe();
11222 }
11223 dest.once('finish', onfinish);
11224
11225 function unpipe() {
11226 debug('unpipe');
11227 src.unpipe(dest);
11228 }
11229
11230 // tell the dest that it's being piped to
11231 dest.emit('pipe', src);
11232
11233 // start the flow if it hasn't been started already.
11234 if (!state.flowing) {
11235 debug('pipe resume');
11236 src.resume();
11237 }
11238
11239 return dest;
11240 };
11241
11242 function pipeOnDrain(src) {
11243 return function () {
11244 var state = src._readableState;
11245 debug('pipeOnDrain', state.awaitDrain);
11246 if (state.awaitDrain) state.awaitDrain--;
11247 if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
11248 state.flowing = true;
11249 flow(src);
11250 }
11251 };
11252 }
11253
11254 Readable.prototype.unpipe = function (dest) {
11255 var state = this._readableState;
11256 var unpipeInfo = { hasUnpiped: false };
11257
11258 // if we're not piping anywhere, then do nothing.
11259 if (state.pipesCount === 0) return this;
11260
11261 // just one destination. most common case.
11262 if (state.pipesCount === 1) {
11263 // passed in one, but it's not the right one.
11264 if (dest && dest !== state.pipes) return this;
11265
11266 if (!dest) dest = state.pipes;
11267
11268 // got a match.
11269 state.pipes = null;
11270 state.pipesCount = 0;
11271 state.flowing = false;
11272 if (dest) dest.emit('unpipe', this, unpipeInfo);
11273 return this;
11274 }
11275
11276 // slow case. multiple pipe destinations.
11277
11278 if (!dest) {
11279 // remove all.
11280 var dests = state.pipes;
11281 var len = state.pipesCount;
11282 state.pipes = null;
11283 state.pipesCount = 0;
11284 state.flowing = false;
11285
11286 for (var i = 0; i < len; i++) {
11287 dests[i].emit('unpipe', this, unpipeInfo);
11288 }return this;
11289 }
11290
11291 // try to find the right one.
11292 var index = indexOf(state.pipes, dest);
11293 if (index === -1) return this;
11294
11295 state.pipes.splice(index, 1);
11296 state.pipesCount -= 1;
11297 if (state.pipesCount === 1) state.pipes = state.pipes[0];
11298
11299 dest.emit('unpipe', this, unpipeInfo);
11300
11301 return this;
11302 };
11303
11304 // set up data events if they are asked for
11305 // Ensure readable listeners eventually get something
11306 Readable.prototype.on = function (ev, fn) {
11307 var res = Stream.prototype.on.call(this, ev, fn);
11308
11309 if (ev === 'data') {
11310 // Start flowing on next tick if stream isn't explicitly paused
11311 if (this._readableState.flowing !== false) this.resume();
11312 } else if (ev === 'readable') {
11313 var state = this._readableState;
11314 if (!state.endEmitted && !state.readableListening) {
11315 state.readableListening = state.needReadable = true;
11316 state.emittedReadable = false;
11317 if (!state.reading) {
11318 processNextTick(nReadingNextTick, this);
11319 } else if (state.length) {
11320 emitReadable(this);
11321 }
11322 }
11323 }
11324
11325 return res;
11326 };
11327 Readable.prototype.addListener = Readable.prototype.on;
11328
11329 function nReadingNextTick(self) {
11330 debug('readable nexttick read 0');
11331 self.read(0);
11332 }
11333
11334 // pause() and resume() are remnants of the legacy readable stream API
11335 // If the user uses them, then switch into old mode.
11336 Readable.prototype.resume = function () {
11337 var state = this._readableState;
11338 if (!state.flowing) {
11339 debug('resume');
11340 state.flowing = true;
11341 resume(this, state);
11342 }
11343 return this;
11344 };
11345
11346 function resume(stream, state) {
11347 if (!state.resumeScheduled) {
11348 state.resumeScheduled = true;
11349 processNextTick(resume_, stream, state);
11350 }
11351 }
11352
11353 function resume_(stream, state) {
11354 if (!state.reading) {
11355 debug('resume read 0');
11356 stream.read(0);
11357 }
11358
11359 state.resumeScheduled = false;
11360 state.awaitDrain = 0;
11361 stream.emit('resume');
11362 flow(stream);
11363 if (state.flowing && !state.reading) stream.read(0);
11364 }
11365
11366 Readable.prototype.pause = function () {
11367 debug('call pause flowing=%j', this._readableState.flowing);
11368 if (false !== this._readableState.flowing) {
11369 debug('pause');
11370 this._readableState.flowing = false;
11371 this.emit('pause');
11372 }
11373 return this;
11374 };
11375
11376 function flow(stream) {
11377 var state = stream._readableState;
11378 debug('flow', state.flowing);
11379 while (state.flowing && stream.read() !== null) {}
11380 }
11381
11382 // wrap an old-style stream as the async data source.
11383 // This is *not* part of the readable stream interface.
11384 // It is an ugly unfortunate mess of history.
11385 Readable.prototype.wrap = function (stream) {
11386 var state = this._readableState;
11387 var paused = false;
11388
11389 var self = this;
11390 stream.on('end', function () {
11391 debug('wrapped end');
11392 if (state.decoder && !state.ended) {
11393 var chunk = state.decoder.end();
11394 if (chunk && chunk.length) self.push(chunk);
11395 }
11396
11397 self.push(null);
11398 });
11399
11400 stream.on('data', function (chunk) {
11401 debug('wrapped data');
11402 if (state.decoder) chunk = state.decoder.write(chunk);
11403
11404 // don't skip over falsy values in objectMode
11405 if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
11406
11407 var ret = self.push(chunk);
11408 if (!ret) {
11409 paused = true;
11410 stream.pause();
11411 }
11412 });
11413
11414 // proxy all the other methods.
11415 // important when wrapping filters and duplexes.
11416 for (var i in stream) {
11417 if (this[i] === undefined && typeof stream[i] === 'function') {
11418 this[i] = function (method) {
11419 return function () {
11420 return stream[method].apply(stream, arguments);
11421 };
11422 }(i);
11423 }
11424 }
11425
11426 // proxy certain important events.
11427 for (var n = 0; n < kProxyEvents.length; n++) {
11428 stream.on(kProxyEvents[n], self.emit.bind(self, kProxyEvents[n]));
11429 }
11430
11431 // when we try to consume some more bytes, simply unpause the
11432 // underlying stream.
11433 self._read = function (n) {
11434 debug('wrapped _read', n);
11435 if (paused) {
11436 paused = false;
11437 stream.resume();
11438 }
11439 };
11440
11441 return self;
11442 };
11443
11444 // exposed for testing purposes only.
11445 Readable._fromList = fromList;
11446
11447 // Pluck off n bytes from an array of buffers.
11448 // Length is the combined lengths of all the buffers in the list.
11449 // This function is designed to be inlinable, so please take care when making
11450 // changes to the function body.
11451 function fromList(n, state) {
11452 // nothing buffered
11453 if (state.length === 0) return null;
11454
11455 var ret;
11456 if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
11457 // read it all, truncate the list
11458 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);
11459 state.buffer.clear();
11460 } else {
11461 // read part of list
11462 ret = fromListPartial(n, state.buffer, state.decoder);
11463 }
11464
11465 return ret;
11466 }
11467
11468 // Extracts only enough buffered data to satisfy the amount requested.
11469 // This function is designed to be inlinable, so please take care when making
11470 // changes to the function body.
11471 function fromListPartial(n, list, hasStrings) {
11472 var ret;
11473 if (n < list.head.data.length) {
11474 // slice is the same for buffers and strings
11475 ret = list.head.data.slice(0, n);
11476 list.head.data = list.head.data.slice(n);
11477 } else if (n === list.head.data.length) {
11478 // first chunk is a perfect match
11479 ret = list.shift();
11480 } else {
11481 // result spans more than one buffer
11482 ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
11483 }
11484 return ret;
11485 }
11486
11487 // Copies a specified amount of characters from the list of buffered data
11488 // chunks.
11489 // This function is designed to be inlinable, so please take care when making
11490 // changes to the function body.
11491 function copyFromBufferString(n, list) {
11492 var p = list.head;
11493 var c = 1;
11494 var ret = p.data;
11495 n -= ret.length;
11496 while (p = p.next) {
11497 var str = p.data;
11498 var nb = n > str.length ? str.length : n;
11499 if (nb === str.length) ret += str;else ret += str.slice(0, n);
11500 n -= nb;
11501 if (n === 0) {
11502 if (nb === str.length) {
11503 ++c;
11504 if (p.next) list.head = p.next;else list.head = list.tail = null;
11505 } else {
11506 list.head = p;
11507 p.data = str.slice(nb);
11508 }
11509 break;
11510 }
11511 ++c;
11512 }
11513 list.length -= c;
11514 return ret;
11515 }
11516
11517 // Copies a specified amount of bytes from the list of buffered data chunks.
11518 // This function is designed to be inlinable, so please take care when making
11519 // changes to the function body.
11520 function copyFromBuffer(n, list) {
11521 var ret = Buffer.allocUnsafe(n);
11522 var p = list.head;
11523 var c = 1;
11524 p.data.copy(ret);
11525 n -= p.data.length;
11526 while (p = p.next) {
11527 var buf = p.data;
11528 var nb = n > buf.length ? buf.length : n;
11529 buf.copy(ret, ret.length - n, 0, nb);
11530 n -= nb;
11531 if (n === 0) {
11532 if (nb === buf.length) {
11533 ++c;
11534 if (p.next) list.head = p.next;else list.head = list.tail = null;
11535 } else {
11536 list.head = p;
11537 p.data = buf.slice(nb);
11538 }
11539 break;
11540 }
11541 ++c;
11542 }
11543 list.length -= c;
11544 return ret;
11545 }
11546
11547 function endReadable(stream) {
11548 var state = stream._readableState;
11549
11550 // If we get here before consuming all the bytes, then that is a
11551 // bug in node. Should never happen.
11552 if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
11553
11554 if (!state.endEmitted) {
11555 state.ended = true;
11556 processNextTick(endReadableNT, state, stream);
11557 }
11558 }
11559
11560 function endReadableNT(state, stream) {
11561 // Check that we didn't get one last unshift.
11562 if (!state.endEmitted && state.length === 0) {
11563 state.endEmitted = true;
11564 stream.readable = false;
11565 stream.emit('end');
11566 }
11567 }
11568
11569 function forEach(xs, f) {
11570 for (var i = 0, l = xs.length; i < l; i++) {
11571 f(xs[i], i);
11572 }
11573 }
11574
11575 function indexOf(xs, x) {
11576 for (var i = 0, l = xs.length; i < l; i++) {
11577 if (xs[i] === x) return i;
11578 }
11579 return -1;
11580 }
11581 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
11582 },{"./_stream_duplex":14,"./internal/streams/BufferList":19,"./internal/streams/destroy":20,"./internal/streams/stream":21,"_process":12,"core-util-is":5,"events":6,"inherits":8,"isarray":10,"process-nextick-args":11,"safe-buffer":26,"string_decoder/":28,"util":3}],17:[function(require,module,exports){
11583 // Copyright Joyent, Inc. and other Node contributors.
11584 //
11585 // Permission is hereby granted, free of charge, to any person obtaining a
11586 // copy of this software and associated documentation files (the
11587 // "Software"), to deal in the Software without restriction, including
11588 // without limitation the rights to use, copy, modify, merge, publish,
11589 // distribute, sublicense, and/or sell copies of the Software, and to permit
11590 // persons to whom the Software is furnished to do so, subject to the
11591 // following conditions:
11592 //
11593 // The above copyright notice and this permission notice shall be included
11594 // in all copies or substantial portions of the Software.
11595 //
11596 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11597 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11598 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11599 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11600 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11601 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11602 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11603
11604 // a transform stream is a readable/writable stream where you do
11605 // something with the data. Sometimes it's called a "filter",
11606 // but that's not a great name for it, since that implies a thing where
11607 // some bits pass through, and others are simply ignored. (That would
11608 // be a valid example of a transform, of course.)
11609 //
11610 // While the output is causally related to the input, it's not a
11611 // necessarily symmetric or synchronous transformation. For example,
11612 // a zlib stream might take multiple plain-text writes(), and then
11613 // emit a single compressed chunk some time in the future.
11614 //
11615 // Here's how this works:
11616 //
11617 // The Transform stream has all the aspects of the readable and writable
11618 // stream classes. When you write(chunk), that calls _write(chunk,cb)
11619 // internally, and returns false if there's a lot of pending writes
11620 // buffered up. When you call read(), that calls _read(n) until
11621 // there's enough pending readable data buffered up.
11622 //
11623 // In a transform stream, the written data is placed in a buffer. When
11624 // _read(n) is called, it transforms the queued up data, calling the
11625 // buffered _write cb's as it consumes chunks. If consuming a single
11626 // written chunk would result in multiple output chunks, then the first
11627 // outputted bit calls the readcb, and subsequent chunks just go into
11628 // the read buffer, and will cause it to emit 'readable' if necessary.
11629 //
11630 // This way, back-pressure is actually determined by the reading side,
11631 // since _read has to be called to start processing a new chunk. However,
11632 // a pathological inflate type of transform can cause excessive buffering
11633 // here. For example, imagine a stream where every byte of input is
11634 // interpreted as an integer from 0-255, and then results in that many
11635 // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
11636 // 1kb of data being output. In this case, you could write a very small
11637 // amount of input, and end up with a very large amount of output. In
11638 // such a pathological inflating mechanism, there'd be no way to tell
11639 // the system to stop doing the transform. A single 4MB write could
11640 // cause the system to run out of memory.
11641 //
11642 // However, even in such a pathological case, only a single written chunk
11643 // would be consumed, and then the rest would wait (un-transformed) until
11644 // the results of the previous transformed chunk were consumed.
11645
11646 'use strict';
11647
11648 module.exports = Transform;
11649
11650 var Duplex = require('./_stream_duplex');
11651
11652 /*<replacement>*/
11653 var util = require('core-util-is');
11654 util.inherits = require('inherits');
11655 /*</replacement>*/
11656
11657 util.inherits(Transform, Duplex);
11658
11659 function TransformState(stream) {
11660 this.afterTransform = function (er, data) {
11661 return afterTransform(stream, er, data);
11662 };
11663
11664 this.needTransform = false;
11665 this.transforming = false;
11666 this.writecb = null;
11667 this.writechunk = null;
11668 this.writeencoding = null;
11669 }
11670
11671 function afterTransform(stream, er, data) {
11672 var ts = stream._transformState;
11673 ts.transforming = false;
11674
11675 var cb = ts.writecb;
11676
11677 if (!cb) {
11678 return stream.emit('error', new Error('write callback called multiple times'));
11679 }
11680
11681 ts.writechunk = null;
11682 ts.writecb = null;
11683
11684 if (data !== null && data !== undefined) stream.push(data);
11685
11686 cb(er);
11687
11688 var rs = stream._readableState;
11689 rs.reading = false;
11690 if (rs.needReadable || rs.length < rs.highWaterMark) {
11691 stream._read(rs.highWaterMark);
11692 }
11693 }
11694
11695 function Transform(options) {
11696 if (!(this instanceof Transform)) return new Transform(options);
11697
11698 Duplex.call(this, options);
11699
11700 this._transformState = new TransformState(this);
11701
11702 var stream = this;
11703
11704 // start out asking for a readable event once data is transformed.
11705 this._readableState.needReadable = true;
11706
11707 // we have implemented the _read method, and done the other things
11708 // that Readable wants before the first _read call, so unset the
11709 // sync guard flag.
11710 this._readableState.sync = false;
11711
11712 if (options) {
11713 if (typeof options.transform === 'function') this._transform = options.transform;
11714
11715 if (typeof options.flush === 'function') this._flush = options.flush;
11716 }
11717
11718 // When the writable side finishes, then flush out anything remaining.
11719 this.once('prefinish', function () {
11720 if (typeof this._flush === 'function') this._flush(function (er, data) {
11721 done(stream, er, data);
11722 });else done(stream);
11723 });
11724 }
11725
11726 Transform.prototype.push = function (chunk, encoding) {
11727 this._transformState.needTransform = false;
11728 return Duplex.prototype.push.call(this, chunk, encoding);
11729 };
11730
11731 // This is the part where you do stuff!
11732 // override this function in implementation classes.
11733 // 'chunk' is an input chunk.
11734 //
11735 // Call `push(newChunk)` to pass along transformed output
11736 // to the readable side. You may call 'push' zero or more times.
11737 //
11738 // Call `cb(err)` when you are done with this chunk. If you pass
11739 // an error, then that'll put the hurt on the whole operation. If you
11740 // never call cb(), then you'll never get another chunk.
11741 Transform.prototype._transform = function (chunk, encoding, cb) {
11742 throw new Error('_transform() is not implemented');
11743 };
11744
11745 Transform.prototype._write = function (chunk, encoding, cb) {
11746 var ts = this._transformState;
11747 ts.writecb = cb;
11748 ts.writechunk = chunk;
11749 ts.writeencoding = encoding;
11750 if (!ts.transforming) {
11751 var rs = this._readableState;
11752 if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
11753 }
11754 };
11755
11756 // Doesn't matter what the args are here.
11757 // _transform does all the work.
11758 // That we got here means that the readable side wants more data.
11759 Transform.prototype._read = function (n) {
11760 var ts = this._transformState;
11761
11762 if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
11763 ts.transforming = true;
11764 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
11765 } else {
11766 // mark that we need a transform, so that any data that comes in
11767 // will get processed, now that we've asked for it.
11768 ts.needTransform = true;
11769 }
11770 };
11771
11772 Transform.prototype._destroy = function (err, cb) {
11773 var _this = this;
11774
11775 Duplex.prototype._destroy.call(this, err, function (err2) {
11776 cb(err2);
11777 _this.emit('close');
11778 });
11779 };
11780
11781 function done(stream, er, data) {
11782 if (er) return stream.emit('error', er);
11783
11784 if (data !== null && data !== undefined) stream.push(data);
11785
11786 // if there's nothing in the write buffer, then that means
11787 // that nothing more will ever be provided
11788 var ws = stream._writableState;
11789 var ts = stream._transformState;
11790
11791 if (ws.length) throw new Error('Calling transform done when ws.length != 0');
11792
11793 if (ts.transforming) throw new Error('Calling transform done when still transforming');
11794
11795 return stream.push(null);
11796 }
11797 },{"./_stream_duplex":14,"core-util-is":5,"inherits":8}],18:[function(require,module,exports){
11798 (function (process,global){
11799 // Copyright Joyent, Inc. and other Node contributors.
11800 //
11801 // Permission is hereby granted, free of charge, to any person obtaining a
11802 // copy of this software and associated documentation files (the
11803 // "Software"), to deal in the Software without restriction, including
11804 // without limitation the rights to use, copy, modify, merge, publish,
11805 // distribute, sublicense, and/or sell copies of the Software, and to permit
11806 // persons to whom the Software is furnished to do so, subject to the
11807 // following conditions:
11808 //
11809 // The above copyright notice and this permission notice shall be included
11810 // in all copies or substantial portions of the Software.
11811 //
11812 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11813 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11814 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11815 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11816 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11817 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11818 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11819
11820 // A bit simpler than readable streams.
11821 // Implement an async ._write(chunk, encoding, cb), and it'll handle all
11822 // the drain event emission and buffering.
11823
11824 'use strict';
11825
11826 /*<replacement>*/
11827
11828 var processNextTick = require('process-nextick-args');
11829 /*</replacement>*/
11830
11831 module.exports = Writable;
11832
11833 /* <replacement> */
11834 function WriteReq(chunk, encoding, cb) {
11835 this.chunk = chunk;
11836 this.encoding = encoding;
11837 this.callback = cb;
11838 this.next = null;
11839 }
11840
11841 // It seems a linked list but it is not
11842 // there will be only 2 of these for each stream
11843 function CorkedRequest(state) {
11844 var _this = this;
11845
11846 this.next = null;
11847 this.entry = null;
11848 this.finish = function () {
11849 onCorkedFinish(_this, state);
11850 };
11851 }
11852 /* </replacement> */
11853
11854 /*<replacement>*/
11855 var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
11856 /*</replacement>*/
11857
11858 /*<replacement>*/
11859 var Duplex;
11860 /*</replacement>*/
11861
11862 Writable.WritableState = WritableState;
11863
11864 /*<replacement>*/
11865 var util = require('core-util-is');
11866 util.inherits = require('inherits');
11867 /*</replacement>*/
11868
11869 /*<replacement>*/
11870 var internalUtil = {
11871 deprecate: require('util-deprecate')
11872 };
11873 /*</replacement>*/
11874
11875 /*<replacement>*/
11876 var Stream = require('./internal/streams/stream');
11877 /*</replacement>*/
11878
11879 /*<replacement>*/
11880 var Buffer = require('safe-buffer').Buffer;
11881 var OurUint8Array = global.Uint8Array || function () {};
11882 function _uint8ArrayToBuffer(chunk) {
11883 return Buffer.from(chunk);
11884 }
11885 function _isUint8Array(obj) {
11886 return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
11887 }
11888 /*</replacement>*/
11889
11890 var destroyImpl = require('./internal/streams/destroy');
11891
11892 util.inherits(Writable, Stream);
11893
11894 function nop() {}
11895
11896 function WritableState(options, stream) {
11897 Duplex = Duplex || require('./_stream_duplex');
11898
11899 options = options || {};
11900
11901 // object stream flag to indicate whether or not this stream
11902 // contains buffers or objects.
11903 this.objectMode = !!options.objectMode;
11904
11905 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
11906
11907 // the point at which write() starts returning false
11908 // Note: 0 is a valid value, means that we always return false if
11909 // the entire buffer is not flushed immediately on write()
11910 var hwm = options.highWaterMark;
11911 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
11912 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
11913
11914 // cast to ints.
11915 this.highWaterMark = Math.floor(this.highWaterMark);
11916
11917 // if _final has been called
11918 this.finalCalled = false;
11919
11920 // drain event flag.
11921 this.needDrain = false;
11922 // at the start of calling end()
11923 this.ending = false;
11924 // when end() has been called, and returned
11925 this.ended = false;
11926 // when 'finish' is emitted
11927 this.finished = false;
11928
11929 // has it been destroyed
11930 this.destroyed = false;
11931
11932 // should we decode strings into buffers before passing to _write?
11933 // this is here so that some node-core streams can optimize string
11934 // handling at a lower level.
11935 var noDecode = options.decodeStrings === false;
11936 this.decodeStrings = !noDecode;
11937
11938 // Crypto is kind of old and crusty. Historically, its default string
11939 // encoding is 'binary' so we have to make this configurable.
11940 // Everything else in the universe uses 'utf8', though.
11941 this.defaultEncoding = options.defaultEncoding || 'utf8';
11942
11943 // not an actual buffer we keep track of, but a measurement
11944 // of how much we're waiting to get pushed to some underlying
11945 // socket or file.
11946 this.length = 0;
11947
11948 // a flag to see when we're in the middle of a write.
11949 this.writing = false;
11950
11951 // when true all writes will be buffered until .uncork() call
11952 this.corked = 0;
11953
11954 // a flag to be able to tell if the onwrite cb is called immediately,
11955 // or on a later tick. We set this to true at first, because any
11956 // actions that shouldn't happen until "later" should generally also
11957 // not happen before the first write call.
11958 this.sync = true;
11959
11960 // a flag to know if we're processing previously buffered items, which
11961 // may call the _write() callback in the same tick, so that we don't
11962 // end up in an overlapped onwrite situation.
11963 this.bufferProcessing = false;
11964
11965 // the callback that's passed to _write(chunk,cb)
11966 this.onwrite = function (er) {
11967 onwrite(stream, er);
11968 };
11969
11970 // the callback that the user supplies to write(chunk,encoding,cb)
11971 this.writecb = null;
11972
11973 // the amount that is being written when _write is called.
11974 this.writelen = 0;
11975
11976 this.bufferedRequest = null;
11977 this.lastBufferedRequest = null;
11978
11979 // number of pending user-supplied write callbacks
11980 // this must be 0 before 'finish' can be emitted
11981 this.pendingcb = 0;
11982
11983 // emit prefinish if the only thing we're waiting for is _write cbs
11984 // This is relevant for synchronous Transform streams
11985 this.prefinished = false;
11986
11987 // True if the error was already emitted and should not be thrown again
11988 this.errorEmitted = false;
11989
11990 // count buffered requests
11991 this.bufferedRequestCount = 0;
11992
11993 // allocate the first CorkedRequest, there is always
11994 // one allocated and free to use, and we maintain at most two
11995 this.corkedRequestsFree = new CorkedRequest(this);
11996 }
11997
11998 WritableState.prototype.getBuffer = function getBuffer() {
11999 var current = this.bufferedRequest;
12000 var out = [];
12001 while (current) {
12002 out.push(current);
12003 current = current.next;
12004 }
12005 return out;
12006 };
12007
12008 (function () {
12009 try {
12010 Object.defineProperty(WritableState.prototype, 'buffer', {
12011 get: internalUtil.deprecate(function () {
12012 return this.getBuffer();
12013 }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')
12014 });
12015 } catch (_) {}
12016 })();
12017
12018 // Test _writableState for inheritance to account for Duplex streams,
12019 // whose prototype chain only points to Readable.
12020 var realHasInstance;
12021 if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
12022 realHasInstance = Function.prototype[Symbol.hasInstance];
12023 Object.defineProperty(Writable, Symbol.hasInstance, {
12024 value: function (object) {
12025 if (realHasInstance.call(this, object)) return true;
12026
12027 return object && object._writableState instanceof WritableState;
12028 }
12029 });
12030 } else {
12031 realHasInstance = function (object) {
12032 return object instanceof this;
12033 };
12034 }
12035
12036 function Writable(options) {
12037 Duplex = Duplex || require('./_stream_duplex');
12038
12039 // Writable ctor is applied to Duplexes, too.
12040 // `realHasInstance` is necessary because using plain `instanceof`
12041 // would return false, as no `_writableState` property is attached.
12042
12043 // Trying to use the custom `instanceof` for Writable here will also break the
12044 // Node.js LazyTransform implementation, which has a non-trivial getter for
12045 // `_writableState` that would lead to infinite recursion.
12046 if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
12047 return new Writable(options);
12048 }
12049
12050 this._writableState = new WritableState(options, this);
12051
12052 // legacy.
12053 this.writable = true;
12054
12055 if (options) {
12056 if (typeof options.write === 'function') this._write = options.write;
12057
12058 if (typeof options.writev === 'function') this._writev = options.writev;
12059
12060 if (typeof options.destroy === 'function') this._destroy = options.destroy;
12061
12062 if (typeof options.final === 'function') this._final = options.final;
12063 }
12064
12065 Stream.call(this);
12066 }
12067
12068 // Otherwise people can pipe Writable streams, which is just wrong.
12069 Writable.prototype.pipe = function () {
12070 this.emit('error', new Error('Cannot pipe, not readable'));
12071 };
12072
12073 function writeAfterEnd(stream, cb) {
12074 var er = new Error('write after end');
12075 // TODO: defer error events consistently everywhere, not just the cb
12076 stream.emit('error', er);
12077 processNextTick(cb, er);
12078 }
12079
12080 // Checks that a user-supplied chunk is valid, especially for the particular
12081 // mode the stream is in. Currently this means that `null` is never accepted
12082 // and undefined/non-string values are only allowed in object mode.
12083 function validChunk(stream, state, chunk, cb) {
12084 var valid = true;
12085 var er = false;
12086
12087 if (chunk === null) {
12088 er = new TypeError('May not write null values to stream');
12089 } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
12090 er = new TypeError('Invalid non-string/buffer chunk');
12091 }
12092 if (er) {
12093 stream.emit('error', er);
12094 processNextTick(cb, er);
12095 valid = false;
12096 }
12097 return valid;
12098 }
12099
12100 Writable.prototype.write = function (chunk, encoding, cb) {
12101 var state = this._writableState;
12102 var ret = false;
12103 var isBuf = _isUint8Array(chunk) && !state.objectMode;
12104
12105 if (isBuf && !Buffer.isBuffer(chunk)) {
12106 chunk = _uint8ArrayToBuffer(chunk);
12107 }
12108
12109 if (typeof encoding === 'function') {
12110 cb = encoding;
12111 encoding = null;
12112 }
12113
12114 if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
12115
12116 if (typeof cb !== 'function') cb = nop;
12117
12118 if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {
12119 state.pendingcb++;
12120 ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
12121 }
12122
12123 return ret;
12124 };
12125
12126 Writable.prototype.cork = function () {
12127 var state = this._writableState;
12128
12129 state.corked++;
12130 };
12131
12132 Writable.prototype.uncork = function () {
12133 var state = this._writableState;
12134
12135 if (state.corked) {
12136 state.corked--;
12137
12138 if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
12139 }
12140 };
12141
12142 Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
12143 // node::ParseEncoding() requires lower case.
12144 if (typeof encoding === 'string') encoding = encoding.toLowerCase();
12145 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);
12146 this._writableState.defaultEncoding = encoding;
12147 return this;
12148 };
12149
12150 function decodeChunk(state, chunk, encoding) {
12151 if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
12152 chunk = Buffer.from(chunk, encoding);
12153 }
12154 return chunk;
12155 }
12156
12157 // if we're already writing something, then just put this
12158 // in the queue, and wait our turn. Otherwise, call _write
12159 // If we return false, then we need a drain event, so set that flag.
12160 function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
12161 if (!isBuf) {
12162 var newChunk = decodeChunk(state, chunk, encoding);
12163 if (chunk !== newChunk) {
12164 isBuf = true;
12165 encoding = 'buffer';
12166 chunk = newChunk;
12167 }
12168 }
12169 var len = state.objectMode ? 1 : chunk.length;
12170
12171 state.length += len;
12172
12173 var ret = state.length < state.highWaterMark;
12174 // we must ensure that previous needDrain will not be reset to false.
12175 if (!ret) state.needDrain = true;
12176
12177 if (state.writing || state.corked) {
12178 var last = state.lastBufferedRequest;
12179 state.lastBufferedRequest = {
12180 chunk: chunk,
12181 encoding: encoding,
12182 isBuf: isBuf,
12183 callback: cb,
12184 next: null
12185 };
12186 if (last) {
12187 last.next = state.lastBufferedRequest;
12188 } else {
12189 state.bufferedRequest = state.lastBufferedRequest;
12190 }
12191 state.bufferedRequestCount += 1;
12192 } else {
12193 doWrite(stream, state, false, len, chunk, encoding, cb);
12194 }
12195
12196 return ret;
12197 }
12198
12199 function doWrite(stream, state, writev, len, chunk, encoding, cb) {
12200 state.writelen = len;
12201 state.writecb = cb;
12202 state.writing = true;
12203 state.sync = true;
12204 if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
12205 state.sync = false;
12206 }
12207
12208 function onwriteError(stream, state, sync, er, cb) {
12209 --state.pendingcb;
12210
12211 if (sync) {
12212 // defer the callback if we are being called synchronously
12213 // to avoid piling up things on the stack
12214 processNextTick(cb, er);
12215 // this can emit finish, and it will always happen
12216 // after error
12217 processNextTick(finishMaybe, stream, state);
12218 stream._writableState.errorEmitted = true;
12219 stream.emit('error', er);
12220 } else {
12221 // the caller expect this to happen before if
12222 // it is async
12223 cb(er);
12224 stream._writableState.errorEmitted = true;
12225 stream.emit('error', er);
12226 // this can emit finish, but finish must
12227 // always follow error
12228 finishMaybe(stream, state);
12229 }
12230 }
12231
12232 function onwriteStateUpdate(state) {
12233 state.writing = false;
12234 state.writecb = null;
12235 state.length -= state.writelen;
12236 state.writelen = 0;
12237 }
12238
12239 function onwrite(stream, er) {
12240 var state = stream._writableState;
12241 var sync = state.sync;
12242 var cb = state.writecb;
12243
12244 onwriteStateUpdate(state);
12245
12246 if (er) onwriteError(stream, state, sync, er, cb);else {
12247 // Check if we're actually ready to finish, but don't emit yet
12248 var finished = needFinish(state);
12249
12250 if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
12251 clearBuffer(stream, state);
12252 }
12253
12254 if (sync) {
12255 /*<replacement>*/
12256 asyncWrite(afterWrite, stream, state, finished, cb);
12257 /*</replacement>*/
12258 } else {
12259 afterWrite(stream, state, finished, cb);
12260 }
12261 }
12262 }
12263
12264 function afterWrite(stream, state, finished, cb) {
12265 if (!finished) onwriteDrain(stream, state);
12266 state.pendingcb--;
12267 cb();
12268 finishMaybe(stream, state);
12269 }
12270
12271 // Must force callback to be called on nextTick, so that we don't
12272 // emit 'drain' before the write() consumer gets the 'false' return
12273 // value, and has a chance to attach a 'drain' listener.
12274 function onwriteDrain(stream, state) {
12275 if (state.length === 0 && state.needDrain) {
12276 state.needDrain = false;
12277 stream.emit('drain');
12278 }
12279 }
12280
12281 // if there's something in the buffer waiting, then process it
12282 function clearBuffer(stream, state) {
12283 state.bufferProcessing = true;
12284 var entry = state.bufferedRequest;
12285
12286 if (stream._writev && entry && entry.next) {
12287 // Fast case, write everything using _writev()
12288 var l = state.bufferedRequestCount;
12289 var buffer = new Array(l);
12290 var holder = state.corkedRequestsFree;
12291 holder.entry = entry;
12292
12293 var count = 0;
12294 var allBuffers = true;
12295 while (entry) {
12296 buffer[count] = entry;
12297 if (!entry.isBuf) allBuffers = false;
12298 entry = entry.next;
12299 count += 1;
12300 }
12301 buffer.allBuffers = allBuffers;
12302
12303 doWrite(stream, state, true, state.length, buffer, '', holder.finish);
12304
12305 // doWrite is almost always async, defer these to save a bit of time
12306 // as the hot path ends with doWrite
12307 state.pendingcb++;
12308 state.lastBufferedRequest = null;
12309 if (holder.next) {
12310 state.corkedRequestsFree = holder.next;
12311 holder.next = null;
12312 } else {
12313 state.corkedRequestsFree = new CorkedRequest(state);
12314 }
12315 } else {
12316 // Slow case, write chunks one-by-one
12317 while (entry) {
12318 var chunk = entry.chunk;
12319 var encoding = entry.encoding;
12320 var cb = entry.callback;
12321 var len = state.objectMode ? 1 : chunk.length;
12322
12323 doWrite(stream, state, false, len, chunk, encoding, cb);
12324 entry = entry.next;
12325 // if we didn't call the onwrite immediately, then
12326 // it means that we need to wait until it does.
12327 // also, that means that the chunk and cb are currently
12328 // being processed, so move the buffer counter past them.
12329 if (state.writing) {
12330 break;
12331 }
12332 }
12333
12334 if (entry === null) state.lastBufferedRequest = null;
12335 }
12336
12337 state.bufferedRequestCount = 0;
12338 state.bufferedRequest = entry;
12339 state.bufferProcessing = false;
12340 }
12341
12342 Writable.prototype._write = function (chunk, encoding, cb) {
12343 cb(new Error('_write() is not implemented'));
12344 };
12345
12346 Writable.prototype._writev = null;
12347
12348 Writable.prototype.end = function (chunk, encoding, cb) {
12349 var state = this._writableState;
12350
12351 if (typeof chunk === 'function') {
12352 cb = chunk;
12353 chunk = null;
12354 encoding = null;
12355 } else if (typeof encoding === 'function') {
12356 cb = encoding;
12357 encoding = null;
12358 }
12359
12360 if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
12361
12362 // .end() fully uncorks
12363 if (state.corked) {
12364 state.corked = 1;
12365 this.uncork();
12366 }
12367
12368 // ignore unnecessary end() calls.
12369 if (!state.ending && !state.finished) endWritable(this, state, cb);
12370 };
12371
12372 function needFinish(state) {
12373 return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
12374 }
12375 function callFinal(stream, state) {
12376 stream._final(function (err) {
12377 state.pendingcb--;
12378 if (err) {
12379 stream.emit('error', err);
12380 }
12381 state.prefinished = true;
12382 stream.emit('prefinish');
12383 finishMaybe(stream, state);
12384 });
12385 }
12386 function prefinish(stream, state) {
12387 if (!state.prefinished && !state.finalCalled) {
12388 if (typeof stream._final === 'function') {
12389 state.pendingcb++;
12390 state.finalCalled = true;
12391 processNextTick(callFinal, stream, state);
12392 } else {
12393 state.prefinished = true;
12394 stream.emit('prefinish');
12395 }
12396 }
12397 }
12398
12399 function finishMaybe(stream, state) {
12400 var need = needFinish(state);
12401 if (need) {
12402 prefinish(stream, state);
12403 if (state.pendingcb === 0) {
12404 state.finished = true;
12405 stream.emit('finish');
12406 }
12407 }
12408 return need;
12409 }
12410
12411 function endWritable(stream, state, cb) {
12412 state.ending = true;
12413 finishMaybe(stream, state);
12414 if (cb) {
12415 if (state.finished) processNextTick(cb);else stream.once('finish', cb);
12416 }
12417 state.ended = true;
12418 stream.writable = false;
12419 }
12420
12421 function onCorkedFinish(corkReq, state, err) {
12422 var entry = corkReq.entry;
12423 corkReq.entry = null;
12424 while (entry) {
12425 var cb = entry.callback;
12426 state.pendingcb--;
12427 cb(err);
12428 entry = entry.next;
12429 }
12430 if (state.corkedRequestsFree) {
12431 state.corkedRequestsFree.next = corkReq;
12432 } else {
12433 state.corkedRequestsFree = corkReq;
12434 }
12435 }
12436
12437 Object.defineProperty(Writable.prototype, 'destroyed', {
12438 get: function () {
12439 if (this._writableState === undefined) {
12440 return false;
12441 }
12442 return this._writableState.destroyed;
12443 },
12444 set: function (value) {
12445 // we ignore the value if the stream
12446 // has not been initialized yet
12447 if (!this._writableState) {
12448 return;
12449 }
12450
12451 // backward compatibility, the user is explicitly
12452 // managing destroyed
12453 this._writableState.destroyed = value;
12454 }
12455 });
12456
12457 Writable.prototype.destroy = destroyImpl.destroy;
12458 Writable.prototype._undestroy = destroyImpl.undestroy;
12459 Writable.prototype._destroy = function (err, cb) {
12460 this.end();
12461 cb(err);
12462 };
12463 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
12464 },{"./_stream_duplex":14,"./internal/streams/destroy":20,"./internal/streams/stream":21,"_process":12,"core-util-is":5,"inherits":8,"process-nextick-args":11,"safe-buffer":26,"util-deprecate":29}],19:[function(require,module,exports){
12465 'use strict';
12466
12467 /*<replacement>*/
12468
12469 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
12470
12471 var Buffer = require('safe-buffer').Buffer;
12472 /*</replacement>*/
12473
12474 function copyBuffer(src, target, offset) {
12475 src.copy(target, offset);
12476 }
12477
12478 module.exports = function () {
12479 function BufferList() {
12480 _classCallCheck(this, BufferList);
12481
12482 this.head = null;
12483 this.tail = null;
12484 this.length = 0;
12485 }
12486
12487 BufferList.prototype.push = function push(v) {
12488 var entry = { data: v, next: null };
12489 if (this.length > 0) this.tail.next = entry;else this.head = entry;
12490 this.tail = entry;
12491 ++this.length;
12492 };
12493
12494 BufferList.prototype.unshift = function unshift(v) {
12495 var entry = { data: v, next: this.head };
12496 if (this.length === 0) this.tail = entry;
12497 this.head = entry;
12498 ++this.length;
12499 };
12500
12501 BufferList.prototype.shift = function shift() {
12502 if (this.length === 0) return;
12503 var ret = this.head.data;
12504 if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
12505 --this.length;
12506 return ret;
12507 };
12508
12509 BufferList.prototype.clear = function clear() {
12510 this.head = this.tail = null;
12511 this.length = 0;
12512 };
12513
12514 BufferList.prototype.join = function join(s) {
12515 if (this.length === 0) return '';
12516 var p = this.head;
12517 var ret = '' + p.data;
12518 while (p = p.next) {
12519 ret += s + p.data;
12520 }return ret;
12521 };
12522
12523 BufferList.prototype.concat = function concat(n) {
12524 if (this.length === 0) return Buffer.alloc(0);
12525 if (this.length === 1) return this.head.data;
12526 var ret = Buffer.allocUnsafe(n >>> 0);
12527 var p = this.head;
12528 var i = 0;
12529 while (p) {
12530 copyBuffer(p.data, ret, i);
12531 i += p.data.length;
12532 p = p.next;
12533 }
12534 return ret;
12535 };
12536
12537 return BufferList;
12538 }();
12539 },{"safe-buffer":26}],20:[function(require,module,exports){
12540 'use strict';
12541
12542 /*<replacement>*/
12543
12544 var processNextTick = require('process-nextick-args');
12545 /*</replacement>*/
12546
12547 // undocumented cb() API, needed for core, not for public API
12548 function destroy(err, cb) {
12549 var _this = this;
12550
12551 var readableDestroyed = this._readableState && this._readableState.destroyed;
12552 var writableDestroyed = this._writableState && this._writableState.destroyed;
12553
12554 if (readableDestroyed || writableDestroyed) {
12555 if (cb) {
12556 cb(err);
12557 } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {
12558 processNextTick(emitErrorNT, this, err);
12559 }
12560 return;
12561 }
12562
12563 // we set destroyed to true before firing error callbacks in order
12564 // to make it re-entrance safe in case destroy() is called within callbacks
12565
12566 if (this._readableState) {
12567 this._readableState.destroyed = true;
12568 }
12569
12570 // if this is a duplex stream mark the writable part as destroyed as well
12571 if (this._writableState) {
12572 this._writableState.destroyed = true;
12573 }
12574
12575 this._destroy(err || null, function (err) {
12576 if (!cb && err) {
12577 processNextTick(emitErrorNT, _this, err);
12578 if (_this._writableState) {
12579 _this._writableState.errorEmitted = true;
12580 }
12581 } else if (cb) {
12582 cb(err);
12583 }
12584 });
12585 }
12586
12587 function undestroy() {
12588 if (this._readableState) {
12589 this._readableState.destroyed = false;
12590 this._readableState.reading = false;
12591 this._readableState.ended = false;
12592 this._readableState.endEmitted = false;
12593 }
12594
12595 if (this._writableState) {
12596 this._writableState.destroyed = false;
12597 this._writableState.ended = false;
12598 this._writableState.ending = false;
12599 this._writableState.finished = false;
12600 this._writableState.errorEmitted = false;
12601 }
12602 }
12603
12604 function emitErrorNT(self, err) {
12605 self.emit('error', err);
12606 }
12607
12608 module.exports = {
12609 destroy: destroy,
12610 undestroy: undestroy
12611 };
12612 },{"process-nextick-args":11}],21:[function(require,module,exports){
12613 module.exports = require('events').EventEmitter;
12614
12615 },{"events":6}],22:[function(require,module,exports){
12616 module.exports = require('./readable').PassThrough
12617
12618 },{"./readable":23}],23:[function(require,module,exports){
12619 exports = module.exports = require('./lib/_stream_readable.js');
12620 exports.Stream = exports;
12621 exports.Readable = exports;
12622 exports.Writable = require('./lib/_stream_writable.js');
12623 exports.Duplex = require('./lib/_stream_duplex.js');
12624 exports.Transform = require('./lib/_stream_transform.js');
12625 exports.PassThrough = require('./lib/_stream_passthrough.js');
12626
12627 },{"./lib/_stream_duplex.js":14,"./lib/_stream_passthrough.js":15,"./lib/_stream_readable.js":16,"./lib/_stream_transform.js":17,"./lib/_stream_writable.js":18}],24:[function(require,module,exports){
12628 module.exports = require('./readable').Transform
12629
12630 },{"./readable":23}],25:[function(require,module,exports){
12631 module.exports = require('./lib/_stream_writable.js');
12632
12633 },{"./lib/_stream_writable.js":18}],26:[function(require,module,exports){
12634 /* eslint-disable node/no-deprecated-api */
12635 var buffer = require('buffer')
12636 var Buffer = buffer.Buffer
12637
12638 // alternative to using Object.keys for old browsers
12639 function copyProps (src, dst) {
12640 for (var key in src) {
12641 dst[key] = src[key]
12642 }
12643 }
12644 if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
12645 module.exports = buffer
12646 } else {
12647 // Copy properties from require('buffer')
12648 copyProps(buffer, exports)
12649 exports.Buffer = SafeBuffer
12650 }
12651
12652 function SafeBuffer (arg, encodingOrOffset, length) {
12653 return Buffer(arg, encodingOrOffset, length)
12654 }
12655
12656 // Copy static methods from Buffer
12657 copyProps(Buffer, SafeBuffer)
12658
12659 SafeBuffer.from = function (arg, encodingOrOffset, length) {
12660 if (typeof arg === 'number') {
12661 throw new TypeError('Argument must not be a number')
12662 }
12663 return Buffer(arg, encodingOrOffset, length)
12664 }
12665
12666 SafeBuffer.alloc = function (size, fill, encoding) {
12667 if (typeof size !== 'number') {
12668 throw new TypeError('Argument must be a number')
12669 }
12670 var buf = Buffer(size)
12671 if (fill !== undefined) {
12672 if (typeof encoding === 'string') {
12673 buf.fill(fill, encoding)
12674 } else {
12675 buf.fill(fill)
12676 }
12677 } else {
12678 buf.fill(0)
12679 }
12680 return buf
12681 }
12682
12683 SafeBuffer.allocUnsafe = function (size) {
12684 if (typeof size !== 'number') {
12685 throw new TypeError('Argument must be a number')
12686 }
12687 return Buffer(size)
12688 }
12689
12690 SafeBuffer.allocUnsafeSlow = function (size) {
12691 if (typeof size !== 'number') {
12692 throw new TypeError('Argument must be a number')
12693 }
12694 return buffer.SlowBuffer(size)
12695 }
12696
12697 },{"buffer":4}],27:[function(require,module,exports){
12698 // Copyright Joyent, Inc. and other Node contributors.
12699 //
12700 // Permission is hereby granted, free of charge, to any person obtaining a
12701 // copy of this software and associated documentation files (the
12702 // "Software"), to deal in the Software without restriction, including
12703 // without limitation the rights to use, copy, modify, merge, publish,
12704 // distribute, sublicense, and/or sell copies of the Software, and to permit
12705 // persons to whom the Software is furnished to do so, subject to the
12706 // following conditions:
12707 //
12708 // The above copyright notice and this permission notice shall be included
12709 // in all copies or substantial portions of the Software.
12710 //
12711 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
12712 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
12713 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
12714 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
12715 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
12716 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
12717 // USE OR OTHER DEALINGS IN THE SOFTWARE.
12718
12719 module.exports = Stream;
12720
12721 var EE = require('events').EventEmitter;
12722 var inherits = require('inherits');
12723
12724 inherits(Stream, EE);
12725 Stream.Readable = require('readable-stream/readable.js');
12726 Stream.Writable = require('readable-stream/writable.js');
12727 Stream.Duplex = require('readable-stream/duplex.js');
12728 Stream.Transform = require('readable-stream/transform.js');
12729 Stream.PassThrough = require('readable-stream/passthrough.js');
12730
12731 // Backwards-compat with node 0.4.x
12732 Stream.Stream = Stream;
12733
12734
12735
12736 // old-style streams. Note that the pipe method (the only relevant
12737 // part of this class) is overridden in the Readable class.
12738
12739 function Stream() {
12740 EE.call(this);
12741 }
12742
12743 Stream.prototype.pipe = function(dest, options) {
12744 var source = this;
12745
12746 function ondata(chunk) {
12747 if (dest.writable) {
12748 if (false === dest.write(chunk) && source.pause) {
12749 source.pause();
12750 }
12751 }
12752 }
12753
12754 source.on('data', ondata);
12755
12756 function ondrain() {
12757 if (source.readable && source.resume) {
12758 source.resume();
12759 }
12760 }
12761
12762 dest.on('drain', ondrain);
12763
12764 // If the 'end' option is not supplied, dest.end() will be called when
12765 // source gets the 'end' or 'close' events. Only dest.end() once.
12766 if (!dest._isStdio && (!options || options.end !== false)) {
12767 source.on('end', onend);
12768 source.on('close', onclose);
12769 }
12770
12771 var didOnEnd = false;
12772 function onend() {
12773 if (didOnEnd) return;
12774 didOnEnd = true;
12775
12776 dest.end();
12777 }
12778
12779
12780 function onclose() {
12781 if (didOnEnd) return;
12782 didOnEnd = true;
12783
12784 if (typeof dest.destroy === 'function') dest.destroy();
12785 }
12786
12787 // don't leave dangling pipes when there are errors.
12788 function onerror(er) {
12789 cleanup();
12790 if (EE.listenerCount(this, 'error') === 0) {
12791 throw er; // Unhandled stream error in pipe.
12792 }
12793 }
12794
12795 source.on('error', onerror);
12796 dest.on('error', onerror);
12797
12798 // remove all the event listeners that were added.
12799 function cleanup() {
12800 source.removeListener('data', ondata);
12801 dest.removeListener('drain', ondrain);
12802
12803 source.removeListener('end', onend);
12804 source.removeListener('close', onclose);
12805
12806 source.removeListener('error', onerror);
12807 dest.removeListener('error', onerror);
12808
12809 source.removeListener('end', cleanup);
12810 source.removeListener('close', cleanup);
12811
12812 dest.removeListener('close', cleanup);
12813 }
12814
12815 source.on('end', cleanup);
12816 source.on('close', cleanup);
12817
12818 dest.on('close', cleanup);
12819
12820 dest.emit('pipe', source);
12821
12822 // Allow for unix-like usage: A.pipe(B).pipe(C)
12823 return dest;
12824 };
12825
12826 },{"events":6,"inherits":8,"readable-stream/duplex.js":13,"readable-stream/passthrough.js":22,"readable-stream/readable.js":23,"readable-stream/transform.js":24,"readable-stream/writable.js":25}],28:[function(require,module,exports){
12827 'use strict';
12828
12829 var Buffer = require('safe-buffer').Buffer;
12830
12831 var isEncoding = Buffer.isEncoding || function (encoding) {
12832 encoding = '' + encoding;
12833 switch (encoding && encoding.toLowerCase()) {
12834 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':
12835 return true;
12836 default:
12837 return false;
12838 }
12839 };
12840
12841 function _normalizeEncoding(enc) {
12842 if (!enc) return 'utf8';
12843 var retried;
12844 while (true) {
12845 switch (enc) {
12846 case 'utf8':
12847 case 'utf-8':
12848 return 'utf8';
12849 case 'ucs2':
12850 case 'ucs-2':
12851 case 'utf16le':
12852 case 'utf-16le':
12853 return 'utf16le';
12854 case 'latin1':
12855 case 'binary':
12856 return 'latin1';
12857 case 'base64':
12858 case 'ascii':
12859 case 'hex':
12860 return enc;
12861 default:
12862 if (retried) return; // undefined
12863 enc = ('' + enc).toLowerCase();
12864 retried = true;
12865 }
12866 }
12867 };
12868
12869 // Do not cache `Buffer.isEncoding` when checking encoding names as some
12870 // modules monkey-patch it to support additional encodings
12871 function normalizeEncoding(enc) {
12872 var nenc = _normalizeEncoding(enc);
12873 if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);
12874 return nenc || enc;
12875 }
12876
12877 // StringDecoder provides an interface for efficiently splitting a series of
12878 // buffers into a series of JS strings without breaking apart multi-byte
12879 // characters.
12880 exports.StringDecoder = StringDecoder;
12881 function StringDecoder(encoding) {
12882 this.encoding = normalizeEncoding(encoding);
12883 var nb;
12884 switch (this.encoding) {
12885 case 'utf16le':
12886 this.text = utf16Text;
12887 this.end = utf16End;
12888 nb = 4;
12889 break;
12890 case 'utf8':
12891 this.fillLast = utf8FillLast;
12892 nb = 4;
12893 break;
12894 case 'base64':
12895 this.text = base64Text;
12896 this.end = base64End;
12897 nb = 3;
12898 break;
12899 default:
12900 this.write = simpleWrite;
12901 this.end = simpleEnd;
12902 return;
12903 }
12904 this.lastNeed = 0;
12905 this.lastTotal = 0;
12906 this.lastChar = Buffer.allocUnsafe(nb);
12907 }
12908
12909 StringDecoder.prototype.write = function (buf) {
12910 if (buf.length === 0) return '';
12911 var r;
12912 var i;
12913 if (this.lastNeed) {
12914 r = this.fillLast(buf);
12915 if (r === undefined) return '';
12916 i = this.lastNeed;
12917 this.lastNeed = 0;
12918 } else {
12919 i = 0;
12920 }
12921 if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);
12922 return r || '';
12923 };
12924
12925 StringDecoder.prototype.end = utf8End;
12926
12927 // Returns only complete characters in a Buffer
12928 StringDecoder.prototype.text = utf8Text;
12929
12930 // Attempts to complete a partial non-UTF-8 character using bytes from a Buffer
12931 StringDecoder.prototype.fillLast = function (buf) {
12932 if (this.lastNeed <= buf.length) {
12933 buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);
12934 return this.lastChar.toString(this.encoding, 0, this.lastTotal);
12935 }
12936 buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);
12937 this.lastNeed -= buf.length;
12938 };
12939
12940 // Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a
12941 // continuation byte.
12942 function utf8CheckByte(byte) {
12943 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;
12944 return -1;
12945 }
12946
12947 // Checks at most 3 bytes at the end of a Buffer in order to detect an
12948 // incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)
12949 // needed to complete the UTF-8 character (if applicable) are returned.
12950 function utf8CheckIncomplete(self, buf, i) {
12951 var j = buf.length - 1;
12952 if (j < i) return 0;
12953 var nb = utf8CheckByte(buf[j]);
12954 if (nb >= 0) {
12955 if (nb > 0) self.lastNeed = nb - 1;
12956 return nb;
12957 }
12958 if (--j < i) return 0;
12959 nb = utf8CheckByte(buf[j]);
12960 if (nb >= 0) {
12961 if (nb > 0) self.lastNeed = nb - 2;
12962 return nb;
12963 }
12964 if (--j < i) return 0;
12965 nb = utf8CheckByte(buf[j]);
12966 if (nb >= 0) {
12967 if (nb > 0) {
12968 if (nb === 2) nb = 0;else self.lastNeed = nb - 3;
12969 }
12970 return nb;
12971 }
12972 return 0;
12973 }
12974
12975 // Validates as many continuation bytes for a multi-byte UTF-8 character as
12976 // needed or are available. If we see a non-continuation byte where we expect
12977 // one, we "replace" the validated continuation bytes we've seen so far with
12978 // UTF-8 replacement characters ('\ufffd'), to match v8's UTF-8 decoding
12979 // behavior. The continuation byte check is included three times in the case
12980 // where all of the continuation bytes for a character exist in the same buffer.
12981 // It is also done this way as a slight performance increase instead of using a
12982 // loop.
12983 function utf8CheckExtraBytes(self, buf, p) {
12984 if ((buf[0] & 0xC0) !== 0x80) {
12985 self.lastNeed = 0;
12986 return '\ufffd'.repeat(p);
12987 }
12988 if (self.lastNeed > 1 && buf.length > 1) {
12989 if ((buf[1] & 0xC0) !== 0x80) {
12990 self.lastNeed = 1;
12991 return '\ufffd'.repeat(p + 1);
12992 }
12993 if (self.lastNeed > 2 && buf.length > 2) {
12994 if ((buf[2] & 0xC0) !== 0x80) {
12995 self.lastNeed = 2;
12996 return '\ufffd'.repeat(p + 2);
12997 }
12998 }
12999 }
13000 }
13001
13002 // Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.
13003 function utf8FillLast(buf) {
13004 var p = this.lastTotal - this.lastNeed;
13005 var r = utf8CheckExtraBytes(this, buf, p);
13006 if (r !== undefined) return r;
13007 if (this.lastNeed <= buf.length) {
13008 buf.copy(this.lastChar, p, 0, this.lastNeed);
13009 return this.lastChar.toString(this.encoding, 0, this.lastTotal);
13010 }
13011 buf.copy(this.lastChar, p, 0, buf.length);
13012 this.lastNeed -= buf.length;
13013 }
13014
13015 // Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a
13016 // partial character, the character's bytes are buffered until the required
13017 // number of bytes are available.
13018 function utf8Text(buf, i) {
13019 var total = utf8CheckIncomplete(this, buf, i);
13020 if (!this.lastNeed) return buf.toString('utf8', i);
13021 this.lastTotal = total;
13022 var end = buf.length - (total - this.lastNeed);
13023 buf.copy(this.lastChar, 0, end);
13024 return buf.toString('utf8', i, end);
13025 }
13026
13027 // For UTF-8, a replacement character for each buffered byte of a (partial)
13028 // character needs to be added to the output.
13029 function utf8End(buf) {
13030 var r = buf && buf.length ? this.write(buf) : '';
13031 if (this.lastNeed) return r + '\ufffd'.repeat(this.lastTotal - this.lastNeed);
13032 return r;
13033 }
13034
13035 // UTF-16LE typically needs two bytes per character, but even if we have an even
13036 // number of bytes available, we need to check if we end on a leading/high
13037 // surrogate. In that case, we need to wait for the next two bytes in order to
13038 // decode the last character properly.
13039 function utf16Text(buf, i) {
13040 if ((buf.length - i) % 2 === 0) {
13041 var r = buf.toString('utf16le', i);
13042 if (r) {
13043 var c = r.charCodeAt(r.length - 1);
13044 if (c >= 0xD800 && c <= 0xDBFF) {
13045 this.lastNeed = 2;
13046 this.lastTotal = 4;
13047 this.lastChar[0] = buf[buf.length - 2];
13048 this.lastChar[1] = buf[buf.length - 1];
13049 return r.slice(0, -1);
13050 }
13051 }
13052 return r;
13053 }
13054 this.lastNeed = 1;
13055 this.lastTotal = 2;
13056 this.lastChar[0] = buf[buf.length - 1];
13057 return buf.toString('utf16le', i, buf.length - 1);
13058 }
13059
13060 // For UTF-16LE we do not explicitly append special replacement characters if we
13061 // end on a partial character, we simply let v8 handle that.
13062 function utf16End(buf) {
13063 var r = buf && buf.length ? this.write(buf) : '';
13064 if (this.lastNeed) {
13065 var end = this.lastTotal - this.lastNeed;
13066 return r + this.lastChar.toString('utf16le', 0, end);
13067 }
13068 return r;
13069 }
13070
13071 function base64Text(buf, i) {
13072 var n = (buf.length - i) % 3;
13073 if (n === 0) return buf.toString('base64', i);
13074 this.lastNeed = 3 - n;
13075 this.lastTotal = 3;
13076 if (n === 1) {
13077 this.lastChar[0] = buf[buf.length - 1];
13078 } else {
13079 this.lastChar[0] = buf[buf.length - 2];
13080 this.lastChar[1] = buf[buf.length - 1];
13081 }
13082 return buf.toString('base64', i, buf.length - n);
13083 }
13084
13085 function base64End(buf) {
13086 var r = buf && buf.length ? this.write(buf) : '';
13087 if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);
13088 return r;
13089 }
13090
13091 // Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)
13092 function simpleWrite(buf) {
13093 return buf.toString(this.encoding);
13094 }
13095
13096 function simpleEnd(buf) {
13097 return buf && buf.length ? this.write(buf) : '';
13098 }
13099 },{"safe-buffer":26}],29:[function(require,module,exports){
13100 (function (global){
13101
13102 /**
13103 * Module exports.
13104 */
13105
13106 module.exports = deprecate;
13107
13108 /**
13109 * Mark that a method should not be used.
13110 * Returns a modified function which warns once by default.
13111 *
13112 * If `localStorage.noDeprecation = true` is set, then it is a no-op.
13113 *
13114 * If `localStorage.throwDeprecation = true` is set, then deprecated functions
13115 * will throw an Error when invoked.
13116 *
13117 * If `localStorage.traceDeprecation = true` is set, then deprecated functions
13118 * will invoke `console.trace()` instead of `console.error()`.
13119 *
13120 * @param {Function} fn - the function to deprecate
13121 * @param {String} msg - the string to print to the console when `fn` is invoked
13122 * @returns {Function} a new "deprecated" version of `fn`
13123 * @api public
13124 */
13125
13126 function deprecate (fn, msg) {
13127 if (config('noDeprecation')) {
13128 return fn;
13129 }
13130
13131 var warned = false;
13132 function deprecated() {
13133 if (!warned) {
13134 if (config('throwDeprecation')) {
13135 throw new Error(msg);
13136 } else if (config('traceDeprecation')) {
13137 console.trace(msg);
13138 } else {
13139 console.warn(msg);
13140 }
13141 warned = true;
13142 }
13143 return fn.apply(this, arguments);
13144 }
13145
13146 return deprecated;
13147 }
13148
13149 /**
13150 * Checks `localStorage` for boolean values for the given `name`.
13151 *
13152 * @param {String} name
13153 * @returns {Boolean}
13154 * @api private
13155 */
13156
13157 function config (name) {
13158 // accessing global.localStorage can trigger a DOMException in sandboxed iframes
13159 try {
13160 if (!global.localStorage) return false;
13161 } catch (_) {
13162 return false;
13163 }
13164 var val = global.localStorage[name];
13165 if (null == val) return false;
13166 return String(val).toLowerCase() === 'true';
13167 }
13168
13169 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
13170 },{}],30:[function(require,module,exports){
13171 arguments[4][8][0].apply(exports,arguments)
13172 },{"dup":8}],31:[function(require,module,exports){
13173 module.exports = function isBuffer(arg) {
13174 return arg && typeof arg === 'object'
13175 && typeof arg.copy === 'function'
13176 && typeof arg.fill === 'function'
13177 && typeof arg.readUInt8 === 'function';
13178 }
13179 },{}],32:[function(require,module,exports){
13180 (function (process,global){
13181 // Copyright Joyent, Inc. and other Node contributors.
13182 //
13183 // Permission is hereby granted, free of charge, to any person obtaining a
13184 // copy of this software and associated documentation files (the
13185 // "Software"), to deal in the Software without restriction, including
13186 // without limitation the rights to use, copy, modify, merge, publish,
13187 // distribute, sublicense, and/or sell copies of the Software, and to permit
13188 // persons to whom the Software is furnished to do so, subject to the
13189 // following conditions:
13190 //
13191 // The above copyright notice and this permission notice shall be included
13192 // in all copies or substantial portions of the Software.
13193 //
13194 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13195 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13196 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
13197 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
13198 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
13199 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
13200 // USE OR OTHER DEALINGS IN THE SOFTWARE.
13201
13202 var formatRegExp = /%[sdj%]/g;
13203 exports.format = function(f) {
13204 if (!isString(f)) {
13205 var objects = [];
13206 for (var i = 0; i < arguments.length; i++) {
13207 objects.push(inspect(arguments[i]));
13208 }
13209 return objects.join(' ');
13210 }
13211
13212 var i = 1;
13213 var args = arguments;
13214 var len = args.length;
13215 var str = String(f).replace(formatRegExp, function(x) {
13216 if (x === '%%') return '%';
13217 if (i >= len) return x;
13218 switch (x) {
13219 case '%s': return String(args[i++]);
13220 case '%d': return Number(args[i++]);
13221 case '%j':
13222 try {
13223 return JSON.stringify(args[i++]);
13224 } catch (_) {
13225 return '[Circular]';
13226 }
13227 default:
13228 return x;
13229 }
13230 });
13231 for (var x = args[i]; i < len; x = args[++i]) {
13232 if (isNull(x) || !isObject(x)) {
13233 str += ' ' + x;
13234 } else {
13235 str += ' ' + inspect(x);
13236 }
13237 }
13238 return str;
13239 };
13240
13241
13242 // Mark that a method should not be used.
13243 // Returns a modified function which warns once by default.
13244 // If --no-deprecation is set, then it is a no-op.
13245 exports.deprecate = function(fn, msg) {
13246 // Allow for deprecating things in the process of starting up.
13247 if (isUndefined(global.process)) {
13248 return function() {
13249 return exports.deprecate(fn, msg).apply(this, arguments);
13250 };
13251 }
13252
13253 if (process.noDeprecation === true) {
13254 return fn;
13255 }
13256
13257 var warned = false;
13258 function deprecated() {
13259 if (!warned) {
13260 if (process.throwDeprecation) {
13261 throw new Error(msg);
13262 } else if (process.traceDeprecation) {
13263 console.trace(msg);
13264 } else {
13265 console.error(msg);
13266 }
13267 warned = true;
13268 }
13269 return fn.apply(this, arguments);
13270 }
13271
13272 return deprecated;
13273 };
13274
13275
13276 var debugs = {};
13277 var debugEnviron;
13278 exports.debuglog = function(set) {
13279 if (isUndefined(debugEnviron))
13280 debugEnviron = process.env.NODE_DEBUG || '';
13281 set = set.toUpperCase();
13282 if (!debugs[set]) {
13283 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
13284 var pid = process.pid;
13285 debugs[set] = function() {
13286 var msg = exports.format.apply(exports, arguments);
13287 console.error('%s %d: %s', set, pid, msg);
13288 };
13289 } else {
13290 debugs[set] = function() {};
13291 }
13292 }
13293 return debugs[set];
13294 };
13295
13296
13297 /**
13298 * Echos the value of a value. Trys to print the value out
13299 * in the best way possible given the different types.
13300 *
13301 * @param {Object} obj The object to print out.
13302 * @param {Object} opts Optional options object that alters the output.
13303 */
13304 /* legacy: obj, showHidden, depth, colors*/
13305 function inspect(obj, opts) {
13306 // default options
13307 var ctx = {
13308 seen: [],
13309 stylize: stylizeNoColor
13310 };
13311 // legacy...
13312 if (arguments.length >= 3) ctx.depth = arguments[2];
13313 if (arguments.length >= 4) ctx.colors = arguments[3];
13314 if (isBoolean(opts)) {
13315 // legacy...
13316 ctx.showHidden = opts;
13317 } else if (opts) {
13318 // got an "options" object
13319 exports._extend(ctx, opts);
13320 }
13321 // set default options
13322 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
13323 if (isUndefined(ctx.depth)) ctx.depth = 2;
13324 if (isUndefined(ctx.colors)) ctx.colors = false;
13325 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
13326 if (ctx.colors) ctx.stylize = stylizeWithColor;
13327 return formatValue(ctx, obj, ctx.depth);
13328 }
13329 exports.inspect = inspect;
13330
13331
13332 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
13333 inspect.colors = {
13334 'bold' : [1, 22],
13335 'italic' : [3, 23],
13336 'underline' : [4, 24],
13337 'inverse' : [7, 27],
13338 'white' : [37, 39],
13339 'grey' : [90, 39],
13340 'black' : [30, 39],
13341 'blue' : [34, 39],
13342 'cyan' : [36, 39],
13343 'green' : [32, 39],
13344 'magenta' : [35, 39],
13345 'red' : [31, 39],
13346 'yellow' : [33, 39]
13347 };
13348
13349 // Don't use 'blue' not visible on cmd.exe
13350 inspect.styles = {
13351 'special': 'cyan',
13352 'number': 'yellow',
13353 'boolean': 'yellow',
13354 'undefined': 'grey',
13355 'null': 'bold',
13356 'string': 'green',
13357 'date': 'magenta',
13358 // "name": intentionally not styling
13359 'regexp': 'red'
13360 };
13361
13362
13363 function stylizeWithColor(str, styleType) {
13364 var style = inspect.styles[styleType];
13365
13366 if (style) {
13367 return '\u001b[' + inspect.colors[style][0] + 'm' + str +
13368 '\u001b[' + inspect.colors[style][1] + 'm';
13369 } else {
13370 return str;
13371 }
13372 }
13373
13374
13375 function stylizeNoColor(str, styleType) {
13376 return str;
13377 }
13378
13379
13380 function arrayToHash(array) {
13381 var hash = {};
13382
13383 array.forEach(function(val, idx) {
13384 hash[val] = true;
13385 });
13386
13387 return hash;
13388 }
13389
13390
13391 function formatValue(ctx, value, recurseTimes) {
13392 // Provide a hook for user-specified inspect functions.
13393 // Check that value is an object with an inspect function on it
13394 if (ctx.customInspect &&
13395 value &&
13396 isFunction(value.inspect) &&
13397 // Filter out the util module, it's inspect function is special
13398 value.inspect !== exports.inspect &&
13399 // Also filter out any prototype objects using the circular check.
13400 !(value.constructor && value.constructor.prototype === value)) {
13401 var ret = value.inspect(recurseTimes, ctx);
13402 if (!isString(ret)) {
13403 ret = formatValue(ctx, ret, recurseTimes);
13404 }
13405 return ret;
13406 }
13407
13408 // Primitive types cannot have properties
13409 var primitive = formatPrimitive(ctx, value);
13410 if (primitive) {
13411 return primitive;
13412 }
13413
13414 // Look up the keys of the object.
13415 var keys = Object.keys(value);
13416 var visibleKeys = arrayToHash(keys);
13417
13418 if (ctx.showHidden) {
13419 keys = Object.getOwnPropertyNames(value);
13420 }
13421
13422 // IE doesn't make error fields non-enumerable
13423 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
13424 if (isError(value)
13425 && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
13426 return formatError(value);
13427 }
13428
13429 // Some type of object without properties can be shortcutted.
13430 if (keys.length === 0) {
13431 if (isFunction(value)) {
13432 var name = value.name ? ': ' + value.name : '';
13433 return ctx.stylize('[Function' + name + ']', 'special');
13434 }
13435 if (isRegExp(value)) {
13436 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
13437 }
13438 if (isDate(value)) {
13439 return ctx.stylize(Date.prototype.toString.call(value), 'date');
13440 }
13441 if (isError(value)) {
13442 return formatError(value);
13443 }
13444 }
13445
13446 var base = '', array = false, braces = ['{', '}'];
13447
13448 // Make Array say that they are Array
13449 if (isArray(value)) {
13450 array = true;
13451 braces = ['[', ']'];
13452 }
13453
13454 // Make functions say that they are functions
13455 if (isFunction(value)) {
13456 var n = value.name ? ': ' + value.name : '';
13457 base = ' [Function' + n + ']';
13458 }
13459
13460 // Make RegExps say that they are RegExps
13461 if (isRegExp(value)) {
13462 base = ' ' + RegExp.prototype.toString.call(value);
13463 }
13464
13465 // Make dates with properties first say the date
13466 if (isDate(value)) {
13467 base = ' ' + Date.prototype.toUTCString.call(value);
13468 }
13469
13470 // Make error with message first say the error
13471 if (isError(value)) {
13472 base = ' ' + formatError(value);
13473 }
13474
13475 if (keys.length === 0 && (!array || value.length == 0)) {
13476 return braces[0] + base + braces[1];
13477 }
13478
13479 if (recurseTimes < 0) {
13480 if (isRegExp(value)) {
13481 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
13482 } else {
13483 return ctx.stylize('[Object]', 'special');
13484 }
13485 }
13486
13487 ctx.seen.push(value);
13488
13489 var output;
13490 if (array) {
13491 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
13492 } else {
13493 output = keys.map(function(key) {
13494 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
13495 });
13496 }
13497
13498 ctx.seen.pop();
13499
13500 return reduceToSingleString(output, base, braces);
13501 }
13502
13503
13504 function formatPrimitive(ctx, value) {
13505 if (isUndefined(value))
13506 return ctx.stylize('undefined', 'undefined');
13507 if (isString(value)) {
13508 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
13509 .replace(/'/g, "\\'")
13510 .replace(/\\"/g, '"') + '\'';
13511 return ctx.stylize(simple, 'string');
13512 }
13513 if (isNumber(value))
13514 return ctx.stylize('' + value, 'number');
13515 if (isBoolean(value))
13516 return ctx.stylize('' + value, 'boolean');
13517 // For some reason typeof null is "object", so special case here.
13518 if (isNull(value))
13519 return ctx.stylize('null', 'null');
13520 }
13521
13522
13523 function formatError(value) {
13524 return '[' + Error.prototype.toString.call(value) + ']';
13525 }
13526
13527
13528 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
13529 var output = [];
13530 for (var i = 0, l = value.length; i < l; ++i) {
13531 if (hasOwnProperty(value, String(i))) {
13532 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
13533 String(i), true));
13534 } else {
13535 output.push('');
13536 }
13537 }
13538 keys.forEach(function(key) {
13539 if (!key.match(/^\d+$/)) {
13540 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
13541 key, true));
13542 }
13543 });
13544 return output;
13545 }
13546
13547
13548 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
13549 var name, str, desc;
13550 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
13551 if (desc.get) {
13552 if (desc.set) {
13553 str = ctx.stylize('[Getter/Setter]', 'special');
13554 } else {
13555 str = ctx.stylize('[Getter]', 'special');
13556 }
13557 } else {
13558 if (desc.set) {
13559 str = ctx.stylize('[Setter]', 'special');
13560 }
13561 }
13562 if (!hasOwnProperty(visibleKeys, key)) {
13563 name = '[' + key + ']';
13564 }
13565 if (!str) {
13566 if (ctx.seen.indexOf(desc.value) < 0) {
13567 if (isNull(recurseTimes)) {
13568 str = formatValue(ctx, desc.value, null);
13569 } else {
13570 str = formatValue(ctx, desc.value, recurseTimes - 1);
13571 }
13572 if (str.indexOf('\n') > -1) {
13573 if (array) {
13574 str = str.split('\n').map(function(line) {
13575 return ' ' + line;
13576 }).join('\n').substr(2);
13577 } else {
13578 str = '\n' + str.split('\n').map(function(line) {
13579 return ' ' + line;
13580 }).join('\n');
13581 }
13582 }
13583 } else {
13584 str = ctx.stylize('[Circular]', 'special');
13585 }
13586 }
13587 if (isUndefined(name)) {
13588 if (array && key.match(/^\d+$/)) {
13589 return str;
13590 }
13591 name = JSON.stringify('' + key);
13592 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
13593 name = name.substr(1, name.length - 2);
13594 name = ctx.stylize(name, 'name');
13595 } else {
13596 name = name.replace(/'/g, "\\'")
13597 .replace(/\\"/g, '"')
13598 .replace(/(^"|"$)/g, "'");
13599 name = ctx.stylize(name, 'string');
13600 }
13601 }
13602
13603 return name + ': ' + str;
13604 }
13605
13606
13607 function reduceToSingleString(output, base, braces) {
13608 var numLinesEst = 0;
13609 var length = output.reduce(function(prev, cur) {
13610 numLinesEst++;
13611 if (cur.indexOf('\n') >= 0) numLinesEst++;
13612 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
13613 }, 0);
13614
13615 if (length > 60) {
13616 return braces[0] +
13617 (base === '' ? '' : base + '\n ') +
13618 ' ' +
13619 output.join(',\n ') +
13620 ' ' +
13621 braces[1];
13622 }
13623
13624 return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
13625 }
13626
13627
13628 // NOTE: These type checking functions intentionally don't use `instanceof`
13629 // because it is fragile and can be easily faked with `Object.create()`.
13630 function isArray(ar) {
13631 return Array.isArray(ar);
13632 }
13633 exports.isArray = isArray;
13634
13635 function isBoolean(arg) {
13636 return typeof arg === 'boolean';
13637 }
13638 exports.isBoolean = isBoolean;
13639
13640 function isNull(arg) {
13641 return arg === null;
13642 }
13643 exports.isNull = isNull;
13644
13645 function isNullOrUndefined(arg) {
13646 return arg == null;
13647 }
13648 exports.isNullOrUndefined = isNullOrUndefined;
13649
13650 function isNumber(arg) {
13651 return typeof arg === 'number';
13652 }
13653 exports.isNumber = isNumber;
13654
13655 function isString(arg) {
13656 return typeof arg === 'string';
13657 }
13658 exports.isString = isString;
13659
13660 function isSymbol(arg) {
13661 return typeof arg === 'symbol';
13662 }
13663 exports.isSymbol = isSymbol;
13664
13665 function isUndefined(arg) {
13666 return arg === void 0;
13667 }
13668 exports.isUndefined = isUndefined;
13669
13670 function isRegExp(re) {
13671 return isObject(re) && objectToString(re) === '[object RegExp]';
13672 }
13673 exports.isRegExp = isRegExp;
13674
13675 function isObject(arg) {
13676 return typeof arg === 'object' && arg !== null;
13677 }
13678 exports.isObject = isObject;
13679
13680 function isDate(d) {
13681 return isObject(d) && objectToString(d) === '[object Date]';
13682 }
13683 exports.isDate = isDate;
13684
13685 function isError(e) {
13686 return isObject(e) &&
13687 (objectToString(e) === '[object Error]' || e instanceof Error);
13688 }
13689 exports.isError = isError;
13690
13691 function isFunction(arg) {
13692 return typeof arg === 'function';
13693 }
13694 exports.isFunction = isFunction;
13695
13696 function isPrimitive(arg) {
13697 return arg === null ||
13698 typeof arg === 'boolean' ||
13699 typeof arg === 'number' ||
13700 typeof arg === 'string' ||
13701 typeof arg === 'symbol' || // ES6 symbol
13702 typeof arg === 'undefined';
13703 }
13704 exports.isPrimitive = isPrimitive;
13705
13706 exports.isBuffer = require('./support/isBuffer');
13707
13708 function objectToString(o) {
13709 return Object.prototype.toString.call(o);
13710 }
13711
13712
13713 function pad(n) {
13714 return n < 10 ? '0' + n.toString(10) : n.toString(10);
13715 }
13716
13717
13718 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
13719 'Oct', 'Nov', 'Dec'];
13720
13721 // 26 Feb 16:19:34
13722 function timestamp() {
13723 var d = new Date();
13724 var time = [pad(d.getHours()),
13725 pad(d.getMinutes()),
13726 pad(d.getSeconds())].join(':');
13727 return [d.getDate(), months[d.getMonth()], time].join(' ');
13728 }
13729
13730
13731 // log is just a thin wrapper to console.log that prepends a timestamp
13732 exports.log = function() {
13733 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
13734 };
13735
13736
13737 /**
13738 * Inherit the prototype methods from one constructor into another.
13739 *
13740 * The Function.prototype.inherits from lang.js rewritten as a standalone
13741 * function (not on Function.prototype). NOTE: If this file is to be loaded
13742 * during bootstrapping this function needs to be rewritten using some native
13743 * functions as prototype setup using normal JavaScript does not work as
13744 * expected during bootstrapping (see mirror.js in r114903).
13745 *
13746 * @param {function} ctor Constructor function which needs to inherit the
13747 * prototype.
13748 * @param {function} superCtor Constructor function to inherit prototype from.
13749 */
13750 exports.inherits = require('inherits');
13751
13752 exports._extend = function(origin, add) {
13753 // Don't do anything if add isn't an object
13754 if (!add || !isObject(add)) return origin;
13755
13756 var keys = Object.keys(add);
13757 var i = keys.length;
13758 while (i--) {
13759 origin[keys[i]] = add[keys[i]];
13760 }
13761 return origin;
13762 };
13763
13764 function hasOwnProperty(obj, prop) {
13765 return Object.prototype.hasOwnProperty.call(obj, prop);
13766 }
13767
13768 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
13769 },{"./support/isBuffer":31,"_process":12,"inherits":30}],33:[function(require,module,exports){
13770 module.exports = {
13771 base58: require('bs58'),
13772 bitcoin: require('bitcoinjs-lib'),
13773 ecurve: require('ecurve'),
13774 BigInteger: require('bigi')
13775 }
13776
13777 },{"bigi":37,"bitcoinjs-lib":50,"bs58":79,"ecurve":89}],34:[function(require,module,exports){
13778 // base-x encoding
13779 // Forked from https://github.com/cryptocoinjs/bs58
13780 // Originally written by Mike Hearn for BitcoinJ
13781 // Copyright (c) 2011 Google Inc
13782 // Ported to JavaScript by Stefan Thomas
13783 // Merged Buffer refactorings from base58-native by Stephen Pair
13784 // Copyright (c) 2013 BitPay Inc
13785
13786 var Buffer = require('safe-buffer').Buffer
13787
13788 module.exports = function base (ALPHABET) {
13789 var ALPHABET_MAP = {}
13790 var BASE = ALPHABET.length
13791 var LEADER = ALPHABET.charAt(0)
13792
13793 // pre-compute lookup table
13794 for (var z = 0; z < ALPHABET.length; z++) {
13795 var x = ALPHABET.charAt(z)
13796
13797 if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')
13798 ALPHABET_MAP[x] = z
13799 }
13800
13801 function encode (source) {
13802 if (source.length === 0) return ''
13803
13804 var digits = [0]
13805 for (var i = 0; i < source.length; ++i) {
13806 for (var j = 0, carry = source[i]; j < digits.length; ++j) {
13807 carry += digits[j] << 8
13808 digits[j] = carry % BASE
13809 carry = (carry / BASE) | 0
13810 }
13811
13812 while (carry > 0) {
13813 digits.push(carry % BASE)
13814 carry = (carry / BASE) | 0
13815 }
13816 }
13817
13818 var string = ''
13819
13820 // deal with leading zeros
13821 for (var k = 0; source[k] === 0 && k < source.length - 1; ++k) string += ALPHABET[0]
13822 // convert digits to a string
13823 for (var q = digits.length - 1; q >= 0; --q) string += ALPHABET[digits[q]]
13824
13825 return string
13826 }
13827
13828 function decodeUnsafe (string) {
13829 if (string.length === 0) return Buffer.allocUnsafe(0)
13830
13831 var bytes = [0]
13832 for (var i = 0; i < string.length; i++) {
13833 var value = ALPHABET_MAP[string[i]]
13834 if (value === undefined) return
13835
13836 for (var j = 0, carry = value; j < bytes.length; ++j) {
13837 carry += bytes[j] * BASE
13838 bytes[j] = carry & 0xff
13839 carry >>= 8
13840 }
13841
13842 while (carry > 0) {
13843 bytes.push(carry & 0xff)
13844 carry >>= 8
13845 }
13846 }
13847
13848 // deal with leading zeros
13849 for (var k = 0; string[k] === LEADER && k < string.length - 1; ++k) {
13850 bytes.push(0)
13851 }
13852
13853 return Buffer.from(bytes.reverse())
13854 }
13855
13856 function decode (string) {
13857 var buffer = decodeUnsafe(string)
13858 if (buffer) return buffer
13859
13860 throw new Error('Non-base' + BASE + ' character')
13861 }
13862
13863 return {
13864 encode: encode,
13865 decodeUnsafe: decodeUnsafe,
13866 decode: decode
13867 }
13868 }
13869
13870 },{"safe-buffer":98}],35:[function(require,module,exports){
13871 // (public) Constructor
13872 function BigInteger(a, b, c) {
13873 if (!(this instanceof BigInteger))
13874 return new BigInteger(a, b, c)
13875
13876 if (a != null) {
13877 if ("number" == typeof a) this.fromNumber(a, b, c)
13878 else if (b == null && "string" != typeof a) this.fromString(a, 256)
13879 else this.fromString(a, b)
13880 }
13881 }
13882
13883 var proto = BigInteger.prototype
13884
13885 // duck-typed isBigInteger
13886 proto.__bigi = require('../package.json').version
13887 BigInteger.isBigInteger = function (obj, check_ver) {
13888 return obj && obj.__bigi && (!check_ver || obj.__bigi === proto.__bigi)
13889 }
13890
13891 // Bits per digit
13892 var dbits
13893
13894 // am: Compute w_j += (x*this_i), propagate carries,
13895 // c is initial carry, returns final carry.
13896 // c < 3*dvalue, x < 2*dvalue, this_i < dvalue
13897 // We need to select the fastest one that works in this environment.
13898
13899 // am1: use a single mult and divide to get the high bits,
13900 // max digit bits should be 26 because
13901 // max internal value = 2*dvalue^2-2*dvalue (< 2^53)
13902 function am1(i, x, w, j, c, n) {
13903 while (--n >= 0) {
13904 var v = x * this[i++] + w[j] + c
13905 c = Math.floor(v / 0x4000000)
13906 w[j++] = v & 0x3ffffff
13907 }
13908 return c
13909 }
13910 // am2 avoids a big mult-and-extract completely.
13911 // Max digit bits should be <= 30 because we do bitwise ops
13912 // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)
13913 function am2(i, x, w, j, c, n) {
13914 var xl = x & 0x7fff,
13915 xh = x >> 15
13916 while (--n >= 0) {
13917 var l = this[i] & 0x7fff
13918 var h = this[i++] >> 15
13919 var m = xh * l + h * xl
13920 l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff)
13921 c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30)
13922 w[j++] = l & 0x3fffffff
13923 }
13924 return c
13925 }
13926 // Alternately, set max digit bits to 28 since some
13927 // browsers slow down when dealing with 32-bit numbers.
13928 function am3(i, x, w, j, c, n) {
13929 var xl = x & 0x3fff,
13930 xh = x >> 14
13931 while (--n >= 0) {
13932 var l = this[i] & 0x3fff
13933 var h = this[i++] >> 14
13934 var m = xh * l + h * xl
13935 l = xl * l + ((m & 0x3fff) << 14) + w[j] + c
13936 c = (l >> 28) + (m >> 14) + xh * h
13937 w[j++] = l & 0xfffffff
13938 }
13939 return c
13940 }
13941
13942 // wtf?
13943 BigInteger.prototype.am = am1
13944 dbits = 26
13945
13946 BigInteger.prototype.DB = dbits
13947 BigInteger.prototype.DM = ((1 << dbits) - 1)
13948 var DV = BigInteger.prototype.DV = (1 << dbits)
13949
13950 var BI_FP = 52
13951 BigInteger.prototype.FV = Math.pow(2, BI_FP)
13952 BigInteger.prototype.F1 = BI_FP - dbits
13953 BigInteger.prototype.F2 = 2 * dbits - BI_FP
13954
13955 // Digit conversions
13956 var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz"
13957 var BI_RC = new Array()
13958 var rr, vv
13959 rr = "0".charCodeAt(0)
13960 for (vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv
13961 rr = "a".charCodeAt(0)
13962 for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
13963 rr = "A".charCodeAt(0)
13964 for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
13965
13966 function int2char(n) {
13967 return BI_RM.charAt(n)
13968 }
13969
13970 function intAt(s, i) {
13971 var c = BI_RC[s.charCodeAt(i)]
13972 return (c == null) ? -1 : c
13973 }
13974
13975 // (protected) copy this to r
13976 function bnpCopyTo(r) {
13977 for (var i = this.t - 1; i >= 0; --i) r[i] = this[i]
13978 r.t = this.t
13979 r.s = this.s
13980 }
13981
13982 // (protected) set from integer value x, -DV <= x < DV
13983 function bnpFromInt(x) {
13984 this.t = 1
13985 this.s = (x < 0) ? -1 : 0
13986 if (x > 0) this[0] = x
13987 else if (x < -1) this[0] = x + DV
13988 else this.t = 0
13989 }
13990
13991 // return bigint initialized to value
13992 function nbv(i) {
13993 var r = new BigInteger()
13994 r.fromInt(i)
13995 return r
13996 }
13997
13998 // (protected) set from string and radix
13999 function bnpFromString(s, b) {
14000 var self = this
14001
14002 var k
14003 if (b == 16) k = 4
14004 else if (b == 8) k = 3
14005 else if (b == 256) k = 8; // byte array
14006 else if (b == 2) k = 1
14007 else if (b == 32) k = 5
14008 else if (b == 4) k = 2
14009 else {
14010 self.fromRadix(s, b)
14011 return
14012 }
14013 self.t = 0
14014 self.s = 0
14015 var i = s.length,
14016 mi = false,
14017 sh = 0
14018 while (--i >= 0) {
14019 var x = (k == 8) ? s[i] & 0xff : intAt(s, i)
14020 if (x < 0) {
14021 if (s.charAt(i) == "-") mi = true
14022 continue
14023 }
14024 mi = false
14025 if (sh == 0)
14026 self[self.t++] = x
14027 else if (sh + k > self.DB) {
14028 self[self.t - 1] |= (x & ((1 << (self.DB - sh)) - 1)) << sh
14029 self[self.t++] = (x >> (self.DB - sh))
14030 } else
14031 self[self.t - 1] |= x << sh
14032 sh += k
14033 if (sh >= self.DB) sh -= self.DB
14034 }
14035 if (k == 8 && (s[0] & 0x80) != 0) {
14036 self.s = -1
14037 if (sh > 0) self[self.t - 1] |= ((1 << (self.DB - sh)) - 1) << sh
14038 }
14039 self.clamp()
14040 if (mi) BigInteger.ZERO.subTo(self, self)
14041 }
14042
14043 // (protected) clamp off excess high words
14044 function bnpClamp() {
14045 var c = this.s & this.DM
14046 while (this.t > 0 && this[this.t - 1] == c)--this.t
14047 }
14048
14049 // (public) return string representation in given radix
14050 function bnToString(b) {
14051 var self = this
14052 if (self.s < 0) return "-" + self.negate()
14053 .toString(b)
14054 var k
14055 if (b == 16) k = 4
14056 else if (b == 8) k = 3
14057 else if (b == 2) k = 1
14058 else if (b == 32) k = 5
14059 else if (b == 4) k = 2
14060 else return self.toRadix(b)
14061 var km = (1 << k) - 1,
14062 d, m = false,
14063 r = "",
14064 i = self.t
14065 var p = self.DB - (i * self.DB) % k
14066 if (i-- > 0) {
14067 if (p < self.DB && (d = self[i] >> p) > 0) {
14068 m = true
14069 r = int2char(d)
14070 }
14071 while (i >= 0) {
14072 if (p < k) {
14073 d = (self[i] & ((1 << p) - 1)) << (k - p)
14074 d |= self[--i] >> (p += self.DB - k)
14075 } else {
14076 d = (self[i] >> (p -= k)) & km
14077 if (p <= 0) {
14078 p += self.DB
14079 --i
14080 }
14081 }
14082 if (d > 0) m = true
14083 if (m) r += int2char(d)
14084 }
14085 }
14086 return m ? r : "0"
14087 }
14088
14089 // (public) -this
14090 function bnNegate() {
14091 var r = new BigInteger()
14092 BigInteger.ZERO.subTo(this, r)
14093 return r
14094 }
14095
14096 // (public) |this|
14097 function bnAbs() {
14098 return (this.s < 0) ? this.negate() : this
14099 }
14100
14101 // (public) return + if this > a, - if this < a, 0 if equal
14102 function bnCompareTo(a) {
14103 var r = this.s - a.s
14104 if (r != 0) return r
14105 var i = this.t
14106 r = i - a.t
14107 if (r != 0) return (this.s < 0) ? -r : r
14108 while (--i >= 0)
14109 if ((r = this[i] - a[i]) != 0) return r
14110 return 0
14111 }
14112
14113 // returns bit length of the integer x
14114 function nbits(x) {
14115 var r = 1,
14116 t
14117 if ((t = x >>> 16) != 0) {
14118 x = t
14119 r += 16
14120 }
14121 if ((t = x >> 8) != 0) {
14122 x = t
14123 r += 8
14124 }
14125 if ((t = x >> 4) != 0) {
14126 x = t
14127 r += 4
14128 }
14129 if ((t = x >> 2) != 0) {
14130 x = t
14131 r += 2
14132 }
14133 if ((t = x >> 1) != 0) {
14134 x = t
14135 r += 1
14136 }
14137 return r
14138 }
14139
14140 // (public) return the number of bits in "this"
14141 function bnBitLength() {
14142 if (this.t <= 0) return 0
14143 return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ (this.s & this.DM))
14144 }
14145
14146 // (public) return the number of bytes in "this"
14147 function bnByteLength() {
14148 return this.bitLength() >> 3
14149 }
14150
14151 // (protected) r = this << n*DB
14152 function bnpDLShiftTo(n, r) {
14153 var i
14154 for (i = this.t - 1; i >= 0; --i) r[i + n] = this[i]
14155 for (i = n - 1; i >= 0; --i) r[i] = 0
14156 r.t = this.t + n
14157 r.s = this.s
14158 }
14159
14160 // (protected) r = this >> n*DB
14161 function bnpDRShiftTo(n, r) {
14162 for (var i = n; i < this.t; ++i) r[i - n] = this[i]
14163 r.t = Math.max(this.t - n, 0)
14164 r.s = this.s
14165 }
14166
14167 // (protected) r = this << n
14168 function bnpLShiftTo(n, r) {
14169 var self = this
14170 var bs = n % self.DB
14171 var cbs = self.DB - bs
14172 var bm = (1 << cbs) - 1
14173 var ds = Math.floor(n / self.DB),
14174 c = (self.s << bs) & self.DM,
14175 i
14176 for (i = self.t - 1; i >= 0; --i) {
14177 r[i + ds + 1] = (self[i] >> cbs) | c
14178 c = (self[i] & bm) << bs
14179 }
14180 for (i = ds - 1; i >= 0; --i) r[i] = 0
14181 r[ds] = c
14182 r.t = self.t + ds + 1
14183 r.s = self.s
14184 r.clamp()
14185 }
14186
14187 // (protected) r = this >> n
14188 function bnpRShiftTo(n, r) {
14189 var self = this
14190 r.s = self.s
14191 var ds = Math.floor(n / self.DB)
14192 if (ds >= self.t) {
14193 r.t = 0
14194 return
14195 }
14196 var bs = n % self.DB
14197 var cbs = self.DB - bs
14198 var bm = (1 << bs) - 1
14199 r[0] = self[ds] >> bs
14200 for (var i = ds + 1; i < self.t; ++i) {
14201 r[i - ds - 1] |= (self[i] & bm) << cbs
14202 r[i - ds] = self[i] >> bs
14203 }
14204 if (bs > 0) r[self.t - ds - 1] |= (self.s & bm) << cbs
14205 r.t = self.t - ds
14206 r.clamp()
14207 }
14208
14209 // (protected) r = this - a
14210 function bnpSubTo(a, r) {
14211 var self = this
14212 var i = 0,
14213 c = 0,
14214 m = Math.min(a.t, self.t)
14215 while (i < m) {
14216 c += self[i] - a[i]
14217 r[i++] = c & self.DM
14218 c >>= self.DB
14219 }
14220 if (a.t < self.t) {
14221 c -= a.s
14222 while (i < self.t) {
14223 c += self[i]
14224 r[i++] = c & self.DM
14225 c >>= self.DB
14226 }
14227 c += self.s
14228 } else {
14229 c += self.s
14230 while (i < a.t) {
14231 c -= a[i]
14232 r[i++] = c & self.DM
14233 c >>= self.DB
14234 }
14235 c -= a.s
14236 }
14237 r.s = (c < 0) ? -1 : 0
14238 if (c < -1) r[i++] = self.DV + c
14239 else if (c > 0) r[i++] = c
14240 r.t = i
14241 r.clamp()
14242 }
14243
14244 // (protected) r = this * a, r != this,a (HAC 14.12)
14245 // "this" should be the larger one if appropriate.
14246 function bnpMultiplyTo(a, r) {
14247 var x = this.abs(),
14248 y = a.abs()
14249 var i = x.t
14250 r.t = i + y.t
14251 while (--i >= 0) r[i] = 0
14252 for (i = 0; i < y.t; ++i) r[i + x.t] = x.am(0, y[i], r, i, 0, x.t)
14253 r.s = 0
14254 r.clamp()
14255 if (this.s != a.s) BigInteger.ZERO.subTo(r, r)
14256 }
14257
14258 // (protected) r = this^2, r != this (HAC 14.16)
14259 function bnpSquareTo(r) {
14260 var x = this.abs()
14261 var i = r.t = 2 * x.t
14262 while (--i >= 0) r[i] = 0
14263 for (i = 0; i < x.t - 1; ++i) {
14264 var c = x.am(i, x[i], r, 2 * i, 0, 1)
14265 if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {
14266 r[i + x.t] -= x.DV
14267 r[i + x.t + 1] = 1
14268 }
14269 }
14270 if (r.t > 0) r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1)
14271 r.s = 0
14272 r.clamp()
14273 }
14274
14275 // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)
14276 // r != q, this != m. q or r may be null.
14277 function bnpDivRemTo(m, q, r) {
14278 var self = this
14279 var pm = m.abs()
14280 if (pm.t <= 0) return
14281 var pt = self.abs()
14282 if (pt.t < pm.t) {
14283 if (q != null) q.fromInt(0)
14284 if (r != null) self.copyTo(r)
14285 return
14286 }
14287 if (r == null) r = new BigInteger()
14288 var y = new BigInteger(),
14289 ts = self.s,
14290 ms = m.s
14291 var nsh = self.DB - nbits(pm[pm.t - 1]); // normalize modulus
14292 if (nsh > 0) {
14293 pm.lShiftTo(nsh, y)
14294 pt.lShiftTo(nsh, r)
14295 } else {
14296 pm.copyTo(y)
14297 pt.copyTo(r)
14298 }
14299 var ys = y.t
14300 var y0 = y[ys - 1]
14301 if (y0 == 0) return
14302 var yt = y0 * (1 << self.F1) + ((ys > 1) ? y[ys - 2] >> self.F2 : 0)
14303 var d1 = self.FV / yt,
14304 d2 = (1 << self.F1) / yt,
14305 e = 1 << self.F2
14306 var i = r.t,
14307 j = i - ys,
14308 t = (q == null) ? new BigInteger() : q
14309 y.dlShiftTo(j, t)
14310 if (r.compareTo(t) >= 0) {
14311 r[r.t++] = 1
14312 r.subTo(t, r)
14313 }
14314 BigInteger.ONE.dlShiftTo(ys, t)
14315 t.subTo(y, y); // "negative" y so we can replace sub with am later
14316 while (y.t < ys) y[y.t++] = 0
14317 while (--j >= 0) {
14318 // Estimate quotient digit
14319 var qd = (r[--i] == y0) ? self.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2)
14320 if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) { // Try it out
14321 y.dlShiftTo(j, t)
14322 r.subTo(t, r)
14323 while (r[i] < --qd) r.subTo(t, r)
14324 }
14325 }
14326 if (q != null) {
14327 r.drShiftTo(ys, q)
14328 if (ts != ms) BigInteger.ZERO.subTo(q, q)
14329 }
14330 r.t = ys
14331 r.clamp()
14332 if (nsh > 0) r.rShiftTo(nsh, r); // Denormalize remainder
14333 if (ts < 0) BigInteger.ZERO.subTo(r, r)
14334 }
14335
14336 // (public) this mod a
14337 function bnMod(a) {
14338 var r = new BigInteger()
14339 this.abs()
14340 .divRemTo(a, null, r)
14341 if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r, r)
14342 return r
14343 }
14344
14345 // Modular reduction using "classic" algorithm
14346 function Classic(m) {
14347 this.m = m
14348 }
14349
14350 function cConvert(x) {
14351 if (x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m)
14352 else return x
14353 }
14354
14355 function cRevert(x) {
14356 return x
14357 }
14358
14359 function cReduce(x) {
14360 x.divRemTo(this.m, null, x)
14361 }
14362
14363 function cMulTo(x, y, r) {
14364 x.multiplyTo(y, r)
14365 this.reduce(r)
14366 }
14367
14368 function cSqrTo(x, r) {
14369 x.squareTo(r)
14370 this.reduce(r)
14371 }
14372
14373 Classic.prototype.convert = cConvert
14374 Classic.prototype.revert = cRevert
14375 Classic.prototype.reduce = cReduce
14376 Classic.prototype.mulTo = cMulTo
14377 Classic.prototype.sqrTo = cSqrTo
14378
14379 // (protected) return "-1/this % 2^DB"; useful for Mont. reduction
14380 // justification:
14381 // xy == 1 (mod m)
14382 // xy = 1+km
14383 // xy(2-xy) = (1+km)(1-km)
14384 // x[y(2-xy)] = 1-k^2m^2
14385 // x[y(2-xy)] == 1 (mod m^2)
14386 // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2
14387 // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.
14388 // JS multiply "overflows" differently from C/C++, so care is needed here.
14389 function bnpInvDigit() {
14390 if (this.t < 1) return 0
14391 var x = this[0]
14392 if ((x & 1) == 0) return 0
14393 var y = x & 3; // y == 1/x mod 2^2
14394 y = (y * (2 - (x & 0xf) * y)) & 0xf; // y == 1/x mod 2^4
14395 y = (y * (2 - (x & 0xff) * y)) & 0xff; // y == 1/x mod 2^8
14396 y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff; // y == 1/x mod 2^16
14397 // last step - calculate inverse mod DV directly
14398 // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints
14399 y = (y * (2 - x * y % this.DV)) % this.DV; // y == 1/x mod 2^dbits
14400 // we really want the negative inverse, and -DV < y < DV
14401 return (y > 0) ? this.DV - y : -y
14402 }
14403
14404 // Montgomery reduction
14405 function Montgomery(m) {
14406 this.m = m
14407 this.mp = m.invDigit()
14408 this.mpl = this.mp & 0x7fff
14409 this.mph = this.mp >> 15
14410 this.um = (1 << (m.DB - 15)) - 1
14411 this.mt2 = 2 * m.t
14412 }
14413
14414 // xR mod m
14415 function montConvert(x) {
14416 var r = new BigInteger()
14417 x.abs()
14418 .dlShiftTo(this.m.t, r)
14419 r.divRemTo(this.m, null, r)
14420 if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r, r)
14421 return r
14422 }
14423
14424 // x/R mod m
14425 function montRevert(x) {
14426 var r = new BigInteger()
14427 x.copyTo(r)
14428 this.reduce(r)
14429 return r
14430 }
14431
14432 // x = x/R mod m (HAC 14.32)
14433 function montReduce(x) {
14434 while (x.t <= this.mt2) // pad x so am has enough room later
14435 x[x.t++] = 0
14436 for (var i = 0; i < this.m.t; ++i) {
14437 // faster way of calculating u0 = x[i]*mp mod DV
14438 var j = x[i] & 0x7fff
14439 var u0 = (j * this.mpl + (((j * this.mph + (x[i] >> 15) * this.mpl) & this.um) << 15)) & x.DM
14440 // use am to combine the multiply-shift-add into one call
14441 j = i + this.m.t
14442 x[j] += this.m.am(0, u0, x, i, 0, this.m.t)
14443 // propagate carry
14444 while (x[j] >= x.DV) {
14445 x[j] -= x.DV
14446 x[++j]++
14447 }
14448 }
14449 x.clamp()
14450 x.drShiftTo(this.m.t, x)
14451 if (x.compareTo(this.m) >= 0) x.subTo(this.m, x)
14452 }
14453
14454 // r = "x^2/R mod m"; x != r
14455 function montSqrTo(x, r) {
14456 x.squareTo(r)
14457 this.reduce(r)
14458 }
14459
14460 // r = "xy/R mod m"; x,y != r
14461 function montMulTo(x, y, r) {
14462 x.multiplyTo(y, r)
14463 this.reduce(r)
14464 }
14465
14466 Montgomery.prototype.convert = montConvert
14467 Montgomery.prototype.revert = montRevert
14468 Montgomery.prototype.reduce = montReduce
14469 Montgomery.prototype.mulTo = montMulTo
14470 Montgomery.prototype.sqrTo = montSqrTo
14471
14472 // (protected) true iff this is even
14473 function bnpIsEven() {
14474 return ((this.t > 0) ? (this[0] & 1) : this.s) == 0
14475 }
14476
14477 // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79)
14478 function bnpExp(e, z) {
14479 if (e > 0xffffffff || e < 1) return BigInteger.ONE
14480 var r = new BigInteger(),
14481 r2 = new BigInteger(),
14482 g = z.convert(this),
14483 i = nbits(e) - 1
14484 g.copyTo(r)
14485 while (--i >= 0) {
14486 z.sqrTo(r, r2)
14487 if ((e & (1 << i)) > 0) z.mulTo(r2, g, r)
14488 else {
14489 var t = r
14490 r = r2
14491 r2 = t
14492 }
14493 }
14494 return z.revert(r)
14495 }
14496
14497 // (public) this^e % m, 0 <= e < 2^32
14498 function bnModPowInt(e, m) {
14499 var z
14500 if (e < 256 || m.isEven()) z = new Classic(m)
14501 else z = new Montgomery(m)
14502 return this.exp(e, z)
14503 }
14504
14505 // protected
14506 proto.copyTo = bnpCopyTo
14507 proto.fromInt = bnpFromInt
14508 proto.fromString = bnpFromString
14509 proto.clamp = bnpClamp
14510 proto.dlShiftTo = bnpDLShiftTo
14511 proto.drShiftTo = bnpDRShiftTo
14512 proto.lShiftTo = bnpLShiftTo
14513 proto.rShiftTo = bnpRShiftTo
14514 proto.subTo = bnpSubTo
14515 proto.multiplyTo = bnpMultiplyTo
14516 proto.squareTo = bnpSquareTo
14517 proto.divRemTo = bnpDivRemTo
14518 proto.invDigit = bnpInvDigit
14519 proto.isEven = bnpIsEven
14520 proto.exp = bnpExp
14521
14522 // public
14523 proto.toString = bnToString
14524 proto.negate = bnNegate
14525 proto.abs = bnAbs
14526 proto.compareTo = bnCompareTo
14527 proto.bitLength = bnBitLength
14528 proto.byteLength = bnByteLength
14529 proto.mod = bnMod
14530 proto.modPowInt = bnModPowInt
14531
14532 // (public)
14533 function bnClone() {
14534 var r = new BigInteger()
14535 this.copyTo(r)
14536 return r
14537 }
14538
14539 // (public) return value as integer
14540 function bnIntValue() {
14541 if (this.s < 0) {
14542 if (this.t == 1) return this[0] - this.DV
14543 else if (this.t == 0) return -1
14544 } else if (this.t == 1) return this[0]
14545 else if (this.t == 0) return 0
14546 // assumes 16 < DB < 32
14547 return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0]
14548 }
14549
14550 // (public) return value as byte
14551 function bnByteValue() {
14552 return (this.t == 0) ? this.s : (this[0] << 24) >> 24
14553 }
14554
14555 // (public) return value as short (assumes DB>=16)
14556 function bnShortValue() {
14557 return (this.t == 0) ? this.s : (this[0] << 16) >> 16
14558 }
14559
14560 // (protected) return x s.t. r^x < DV
14561 function bnpChunkSize(r) {
14562 return Math.floor(Math.LN2 * this.DB / Math.log(r))
14563 }
14564
14565 // (public) 0 if this == 0, 1 if this > 0
14566 function bnSigNum() {
14567 if (this.s < 0) return -1
14568 else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0
14569 else return 1
14570 }
14571
14572 // (protected) convert to radix string
14573 function bnpToRadix(b) {
14574 if (b == null) b = 10
14575 if (this.signum() == 0 || b < 2 || b > 36) return "0"
14576 var cs = this.chunkSize(b)
14577 var a = Math.pow(b, cs)
14578 var d = nbv(a),
14579 y = new BigInteger(),
14580 z = new BigInteger(),
14581 r = ""
14582 this.divRemTo(d, y, z)
14583 while (y.signum() > 0) {
14584 r = (a + z.intValue())
14585 .toString(b)
14586 .substr(1) + r
14587 y.divRemTo(d, y, z)
14588 }
14589 return z.intValue()
14590 .toString(b) + r
14591 }
14592
14593 // (protected) convert from radix string
14594 function bnpFromRadix(s, b) {
14595 var self = this
14596 self.fromInt(0)
14597 if (b == null) b = 10
14598 var cs = self.chunkSize(b)
14599 var d = Math.pow(b, cs),
14600 mi = false,
14601 j = 0,
14602 w = 0
14603 for (var i = 0; i < s.length; ++i) {
14604 var x = intAt(s, i)
14605 if (x < 0) {
14606 if (s.charAt(i) == "-" && self.signum() == 0) mi = true
14607 continue
14608 }
14609 w = b * w + x
14610 if (++j >= cs) {
14611 self.dMultiply(d)
14612 self.dAddOffset(w, 0)
14613 j = 0
14614 w = 0
14615 }
14616 }
14617 if (j > 0) {
14618 self.dMultiply(Math.pow(b, j))
14619 self.dAddOffset(w, 0)
14620 }
14621 if (mi) BigInteger.ZERO.subTo(self, self)
14622 }
14623
14624 // (protected) alternate constructor
14625 function bnpFromNumber(a, b, c) {
14626 var self = this
14627 if ("number" == typeof b) {
14628 // new BigInteger(int,int,RNG)
14629 if (a < 2) self.fromInt(1)
14630 else {
14631 self.fromNumber(a, c)
14632 if (!self.testBit(a - 1)) // force MSB set
14633 self.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), op_or, self)
14634 if (self.isEven()) self.dAddOffset(1, 0); // force odd
14635 while (!self.isProbablePrime(b)) {
14636 self.dAddOffset(2, 0)
14637 if (self.bitLength() > a) self.subTo(BigInteger.ONE.shiftLeft(a - 1), self)
14638 }
14639 }
14640 } else {
14641 // new BigInteger(int,RNG)
14642 var x = new Array(),
14643 t = a & 7
14644 x.length = (a >> 3) + 1
14645 b.nextBytes(x)
14646 if (t > 0) x[0] &= ((1 << t) - 1)
14647 else x[0] = 0
14648 self.fromString(x, 256)
14649 }
14650 }
14651
14652 // (public) convert to bigendian byte array
14653 function bnToByteArray() {
14654 var self = this
14655 var i = self.t,
14656 r = new Array()
14657 r[0] = self.s
14658 var p = self.DB - (i * self.DB) % 8,
14659 d, k = 0
14660 if (i-- > 0) {
14661 if (p < self.DB && (d = self[i] >> p) != (self.s & self.DM) >> p)
14662 r[k++] = d | (self.s << (self.DB - p))
14663 while (i >= 0) {
14664 if (p < 8) {
14665 d = (self[i] & ((1 << p) - 1)) << (8 - p)
14666 d |= self[--i] >> (p += self.DB - 8)
14667 } else {
14668 d = (self[i] >> (p -= 8)) & 0xff
14669 if (p <= 0) {
14670 p += self.DB
14671 --i
14672 }
14673 }
14674 if ((d & 0x80) != 0) d |= -256
14675 if (k === 0 && (self.s & 0x80) != (d & 0x80))++k
14676 if (k > 0 || d != self.s) r[k++] = d
14677 }
14678 }
14679 return r
14680 }
14681
14682 function bnEquals(a) {
14683 return (this.compareTo(a) == 0)
14684 }
14685
14686 function bnMin(a) {
14687 return (this.compareTo(a) < 0) ? this : a
14688 }
14689
14690 function bnMax(a) {
14691 return (this.compareTo(a) > 0) ? this : a
14692 }
14693
14694 // (protected) r = this op a (bitwise)
14695 function bnpBitwiseTo(a, op, r) {
14696 var self = this
14697 var i, f, m = Math.min(a.t, self.t)
14698 for (i = 0; i < m; ++i) r[i] = op(self[i], a[i])
14699 if (a.t < self.t) {
14700 f = a.s & self.DM
14701 for (i = m; i < self.t; ++i) r[i] = op(self[i], f)
14702 r.t = self.t
14703 } else {
14704 f = self.s & self.DM
14705 for (i = m; i < a.t; ++i) r[i] = op(f, a[i])
14706 r.t = a.t
14707 }
14708 r.s = op(self.s, a.s)
14709 r.clamp()
14710 }
14711
14712 // (public) this & a
14713 function op_and(x, y) {
14714 return x & y
14715 }
14716
14717 function bnAnd(a) {
14718 var r = new BigInteger()
14719 this.bitwiseTo(a, op_and, r)
14720 return r
14721 }
14722
14723 // (public) this | a
14724 function op_or(x, y) {
14725 return x | y
14726 }
14727
14728 function bnOr(a) {
14729 var r = new BigInteger()
14730 this.bitwiseTo(a, op_or, r)
14731 return r
14732 }
14733
14734 // (public) this ^ a
14735 function op_xor(x, y) {
14736 return x ^ y
14737 }
14738
14739 function bnXor(a) {
14740 var r = new BigInteger()
14741 this.bitwiseTo(a, op_xor, r)
14742 return r
14743 }
14744
14745 // (public) this & ~a
14746 function op_andnot(x, y) {
14747 return x & ~y
14748 }
14749
14750 function bnAndNot(a) {
14751 var r = new BigInteger()
14752 this.bitwiseTo(a, op_andnot, r)
14753 return r
14754 }
14755
14756 // (public) ~this
14757 function bnNot() {
14758 var r = new BigInteger()
14759 for (var i = 0; i < this.t; ++i) r[i] = this.DM & ~this[i]
14760 r.t = this.t
14761 r.s = ~this.s
14762 return r
14763 }
14764
14765 // (public) this << n
14766 function bnShiftLeft(n) {
14767 var r = new BigInteger()
14768 if (n < 0) this.rShiftTo(-n, r)
14769 else this.lShiftTo(n, r)
14770 return r
14771 }
14772
14773 // (public) this >> n
14774 function bnShiftRight(n) {
14775 var r = new BigInteger()
14776 if (n < 0) this.lShiftTo(-n, r)
14777 else this.rShiftTo(n, r)
14778 return r
14779 }
14780
14781 // return index of lowest 1-bit in x, x < 2^31
14782 function lbit(x) {
14783 if (x == 0) return -1
14784 var r = 0
14785 if ((x & 0xffff) == 0) {
14786 x >>= 16
14787 r += 16
14788 }
14789 if ((x & 0xff) == 0) {
14790 x >>= 8
14791 r += 8
14792 }
14793 if ((x & 0xf) == 0) {
14794 x >>= 4
14795 r += 4
14796 }
14797 if ((x & 3) == 0) {
14798 x >>= 2
14799 r += 2
14800 }
14801 if ((x & 1) == 0)++r
14802 return r
14803 }
14804
14805 // (public) returns index of lowest 1-bit (or -1 if none)
14806 function bnGetLowestSetBit() {
14807 for (var i = 0; i < this.t; ++i)
14808 if (this[i] != 0) return i * this.DB + lbit(this[i])
14809 if (this.s < 0) return this.t * this.DB
14810 return -1
14811 }
14812
14813 // return number of 1 bits in x
14814 function cbit(x) {
14815 var r = 0
14816 while (x != 0) {
14817 x &= x - 1
14818 ++r
14819 }
14820 return r
14821 }
14822
14823 // (public) return number of set bits
14824 function bnBitCount() {
14825 var r = 0,
14826 x = this.s & this.DM
14827 for (var i = 0; i < this.t; ++i) r += cbit(this[i] ^ x)
14828 return r
14829 }
14830
14831 // (public) true iff nth bit is set
14832 function bnTestBit(n) {
14833 var j = Math.floor(n / this.DB)
14834 if (j >= this.t) return (this.s != 0)
14835 return ((this[j] & (1 << (n % this.DB))) != 0)
14836 }
14837
14838 // (protected) this op (1<<n)
14839 function bnpChangeBit(n, op) {
14840 var r = BigInteger.ONE.shiftLeft(n)
14841 this.bitwiseTo(r, op, r)
14842 return r
14843 }
14844
14845 // (public) this | (1<<n)
14846 function bnSetBit(n) {
14847 return this.changeBit(n, op_or)
14848 }
14849
14850 // (public) this & ~(1<<n)
14851 function bnClearBit(n) {
14852 return this.changeBit(n, op_andnot)
14853 }
14854
14855 // (public) this ^ (1<<n)
14856 function bnFlipBit(n) {
14857 return this.changeBit(n, op_xor)
14858 }
14859
14860 // (protected) r = this + a
14861 function bnpAddTo(a, r) {
14862 var self = this
14863
14864 var i = 0,
14865 c = 0,
14866 m = Math.min(a.t, self.t)
14867 while (i < m) {
14868 c += self[i] + a[i]
14869 r[i++] = c & self.DM
14870 c >>= self.DB
14871 }
14872 if (a.t < self.t) {
14873 c += a.s
14874 while (i < self.t) {
14875 c += self[i]
14876 r[i++] = c & self.DM
14877 c >>= self.DB
14878 }
14879 c += self.s
14880 } else {
14881 c += self.s
14882 while (i < a.t) {
14883 c += a[i]
14884 r[i++] = c & self.DM
14885 c >>= self.DB
14886 }
14887 c += a.s
14888 }
14889 r.s = (c < 0) ? -1 : 0
14890 if (c > 0) r[i++] = c
14891 else if (c < -1) r[i++] = self.DV + c
14892 r.t = i
14893 r.clamp()
14894 }
14895
14896 // (public) this + a
14897 function bnAdd(a) {
14898 var r = new BigInteger()
14899 this.addTo(a, r)
14900 return r
14901 }
14902
14903 // (public) this - a
14904 function bnSubtract(a) {
14905 var r = new BigInteger()
14906 this.subTo(a, r)
14907 return r
14908 }
14909
14910 // (public) this * a
14911 function bnMultiply(a) {
14912 var r = new BigInteger()
14913 this.multiplyTo(a, r)
14914 return r
14915 }
14916
14917 // (public) this^2
14918 function bnSquare() {
14919 var r = new BigInteger()
14920 this.squareTo(r)
14921 return r
14922 }
14923
14924 // (public) this / a
14925 function bnDivide(a) {
14926 var r = new BigInteger()
14927 this.divRemTo(a, r, null)
14928 return r
14929 }
14930
14931 // (public) this % a
14932 function bnRemainder(a) {
14933 var r = new BigInteger()
14934 this.divRemTo(a, null, r)
14935 return r
14936 }
14937
14938 // (public) [this/a,this%a]
14939 function bnDivideAndRemainder(a) {
14940 var q = new BigInteger(),
14941 r = new BigInteger()
14942 this.divRemTo(a, q, r)
14943 return new Array(q, r)
14944 }
14945
14946 // (protected) this *= n, this >= 0, 1 < n < DV
14947 function bnpDMultiply(n) {
14948 this[this.t] = this.am(0, n - 1, this, 0, 0, this.t)
14949 ++this.t
14950 this.clamp()
14951 }
14952
14953 // (protected) this += n << w words, this >= 0
14954 function bnpDAddOffset(n, w) {
14955 if (n == 0) return
14956 while (this.t <= w) this[this.t++] = 0
14957 this[w] += n
14958 while (this[w] >= this.DV) {
14959 this[w] -= this.DV
14960 if (++w >= this.t) this[this.t++] = 0
14961 ++this[w]
14962 }
14963 }
14964
14965 // A "null" reducer
14966 function NullExp() {}
14967
14968 function nNop(x) {
14969 return x
14970 }
14971
14972 function nMulTo(x, y, r) {
14973 x.multiplyTo(y, r)
14974 }
14975
14976 function nSqrTo(x, r) {
14977 x.squareTo(r)
14978 }
14979
14980 NullExp.prototype.convert = nNop
14981 NullExp.prototype.revert = nNop
14982 NullExp.prototype.mulTo = nMulTo
14983 NullExp.prototype.sqrTo = nSqrTo
14984
14985 // (public) this^e
14986 function bnPow(e) {
14987 return this.exp(e, new NullExp())
14988 }
14989
14990 // (protected) r = lower n words of "this * a", a.t <= n
14991 // "this" should be the larger one if appropriate.
14992 function bnpMultiplyLowerTo(a, n, r) {
14993 var i = Math.min(this.t + a.t, n)
14994 r.s = 0; // assumes a,this >= 0
14995 r.t = i
14996 while (i > 0) r[--i] = 0
14997 var j
14998 for (j = r.t - this.t; i < j; ++i) r[i + this.t] = this.am(0, a[i], r, i, 0, this.t)
14999 for (j = Math.min(a.t, n); i < j; ++i) this.am(0, a[i], r, i, 0, n - i)
15000 r.clamp()
15001 }
15002
15003 // (protected) r = "this * a" without lower n words, n > 0
15004 // "this" should be the larger one if appropriate.
15005 function bnpMultiplyUpperTo(a, n, r) {
15006 --n
15007 var i = r.t = this.t + a.t - n
15008 r.s = 0; // assumes a,this >= 0
15009 while (--i >= 0) r[i] = 0
15010 for (i = Math.max(n - this.t, 0); i < a.t; ++i)
15011 r[this.t + i - n] = this.am(n - i, a[i], r, 0, 0, this.t + i - n)
15012 r.clamp()
15013 r.drShiftTo(1, r)
15014 }
15015
15016 // Barrett modular reduction
15017 function Barrett(m) {
15018 // setup Barrett
15019 this.r2 = new BigInteger()
15020 this.q3 = new BigInteger()
15021 BigInteger.ONE.dlShiftTo(2 * m.t, this.r2)
15022 this.mu = this.r2.divide(m)
15023 this.m = m
15024 }
15025
15026 function barrettConvert(x) {
15027 if (x.s < 0 || x.t > 2 * this.m.t) return x.mod(this.m)
15028 else if (x.compareTo(this.m) < 0) return x
15029 else {
15030 var r = new BigInteger()
15031 x.copyTo(r)
15032 this.reduce(r)
15033 return r
15034 }
15035 }
15036
15037 function barrettRevert(x) {
15038 return x
15039 }
15040
15041 // x = x mod m (HAC 14.42)
15042 function barrettReduce(x) {
15043 var self = this
15044 x.drShiftTo(self.m.t - 1, self.r2)
15045 if (x.t > self.m.t + 1) {
15046 x.t = self.m.t + 1
15047 x.clamp()
15048 }
15049 self.mu.multiplyUpperTo(self.r2, self.m.t + 1, self.q3)
15050 self.m.multiplyLowerTo(self.q3, self.m.t + 1, self.r2)
15051 while (x.compareTo(self.r2) < 0) x.dAddOffset(1, self.m.t + 1)
15052 x.subTo(self.r2, x)
15053 while (x.compareTo(self.m) >= 0) x.subTo(self.m, x)
15054 }
15055
15056 // r = x^2 mod m; x != r
15057 function barrettSqrTo(x, r) {
15058 x.squareTo(r)
15059 this.reduce(r)
15060 }
15061
15062 // r = x*y mod m; x,y != r
15063 function barrettMulTo(x, y, r) {
15064 x.multiplyTo(y, r)
15065 this.reduce(r)
15066 }
15067
15068 Barrett.prototype.convert = barrettConvert
15069 Barrett.prototype.revert = barrettRevert
15070 Barrett.prototype.reduce = barrettReduce
15071 Barrett.prototype.mulTo = barrettMulTo
15072 Barrett.prototype.sqrTo = barrettSqrTo
15073
15074 // (public) this^e % m (HAC 14.85)
15075 function bnModPow(e, m) {
15076 var i = e.bitLength(),
15077 k, r = nbv(1),
15078 z
15079 if (i <= 0) return r
15080 else if (i < 18) k = 1
15081 else if (i < 48) k = 3
15082 else if (i < 144) k = 4
15083 else if (i < 768) k = 5
15084 else k = 6
15085 if (i < 8)
15086 z = new Classic(m)
15087 else if (m.isEven())
15088 z = new Barrett(m)
15089 else
15090 z = new Montgomery(m)
15091
15092 // precomputation
15093 var g = new Array(),
15094 n = 3,
15095 k1 = k - 1,
15096 km = (1 << k) - 1
15097 g[1] = z.convert(this)
15098 if (k > 1) {
15099 var g2 = new BigInteger()
15100 z.sqrTo(g[1], g2)
15101 while (n <= km) {
15102 g[n] = new BigInteger()
15103 z.mulTo(g2, g[n - 2], g[n])
15104 n += 2
15105 }
15106 }
15107
15108 var j = e.t - 1,
15109 w, is1 = true,
15110 r2 = new BigInteger(),
15111 t
15112 i = nbits(e[j]) - 1
15113 while (j >= 0) {
15114 if (i >= k1) w = (e[j] >> (i - k1)) & km
15115 else {
15116 w = (e[j] & ((1 << (i + 1)) - 1)) << (k1 - i)
15117 if (j > 0) w |= e[j - 1] >> (this.DB + i - k1)
15118 }
15119
15120 n = k
15121 while ((w & 1) == 0) {
15122 w >>= 1
15123 --n
15124 }
15125 if ((i -= n) < 0) {
15126 i += this.DB
15127 --j
15128 }
15129 if (is1) { // ret == 1, don't bother squaring or multiplying it
15130 g[w].copyTo(r)
15131 is1 = false
15132 } else {
15133 while (n > 1) {
15134 z.sqrTo(r, r2)
15135 z.sqrTo(r2, r)
15136 n -= 2
15137 }
15138 if (n > 0) z.sqrTo(r, r2)
15139 else {
15140 t = r
15141 r = r2
15142 r2 = t
15143 }
15144 z.mulTo(r2, g[w], r)
15145 }
15146
15147 while (j >= 0 && (e[j] & (1 << i)) == 0) {
15148 z.sqrTo(r, r2)
15149 t = r
15150 r = r2
15151 r2 = t
15152 if (--i < 0) {
15153 i = this.DB - 1
15154 --j
15155 }
15156 }
15157 }
15158 return z.revert(r)
15159 }
15160
15161 // (public) gcd(this,a) (HAC 14.54)
15162 function bnGCD(a) {
15163 var x = (this.s < 0) ? this.negate() : this.clone()
15164 var y = (a.s < 0) ? a.negate() : a.clone()
15165 if (x.compareTo(y) < 0) {
15166 var t = x
15167 x = y
15168 y = t
15169 }
15170 var i = x.getLowestSetBit(),
15171 g = y.getLowestSetBit()
15172 if (g < 0) return x
15173 if (i < g) g = i
15174 if (g > 0) {
15175 x.rShiftTo(g, x)
15176 y.rShiftTo(g, y)
15177 }
15178 while (x.signum() > 0) {
15179 if ((i = x.getLowestSetBit()) > 0) x.rShiftTo(i, x)
15180 if ((i = y.getLowestSetBit()) > 0) y.rShiftTo(i, y)
15181 if (x.compareTo(y) >= 0) {
15182 x.subTo(y, x)
15183 x.rShiftTo(1, x)
15184 } else {
15185 y.subTo(x, y)
15186 y.rShiftTo(1, y)
15187 }
15188 }
15189 if (g > 0) y.lShiftTo(g, y)
15190 return y
15191 }
15192
15193 // (protected) this % n, n < 2^26
15194 function bnpModInt(n) {
15195 if (n <= 0) return 0
15196 var d = this.DV % n,
15197 r = (this.s < 0) ? n - 1 : 0
15198 if (this.t > 0)
15199 if (d == 0) r = this[0] % n
15200 else
15201 for (var i = this.t - 1; i >= 0; --i) r = (d * r + this[i]) % n
15202 return r
15203 }
15204
15205 // (public) 1/this % m (HAC 14.61)
15206 function bnModInverse(m) {
15207 var ac = m.isEven()
15208 if (this.signum() === 0) throw new Error('division by zero')
15209 if ((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO
15210 var u = m.clone(),
15211 v = this.clone()
15212 var a = nbv(1),
15213 b = nbv(0),
15214 c = nbv(0),
15215 d = nbv(1)
15216 while (u.signum() != 0) {
15217 while (u.isEven()) {
15218 u.rShiftTo(1, u)
15219 if (ac) {
15220 if (!a.isEven() || !b.isEven()) {
15221 a.addTo(this, a)
15222 b.subTo(m, b)
15223 }
15224 a.rShiftTo(1, a)
15225 } else if (!b.isEven()) b.subTo(m, b)
15226 b.rShiftTo(1, b)
15227 }
15228 while (v.isEven()) {
15229 v.rShiftTo(1, v)
15230 if (ac) {
15231 if (!c.isEven() || !d.isEven()) {
15232 c.addTo(this, c)
15233 d.subTo(m, d)
15234 }
15235 c.rShiftTo(1, c)
15236 } else if (!d.isEven()) d.subTo(m, d)
15237 d.rShiftTo(1, d)
15238 }
15239 if (u.compareTo(v) >= 0) {
15240 u.subTo(v, u)
15241 if (ac) a.subTo(c, a)
15242 b.subTo(d, b)
15243 } else {
15244 v.subTo(u, v)
15245 if (ac) c.subTo(a, c)
15246 d.subTo(b, d)
15247 }
15248 }
15249 if (v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO
15250 while (d.compareTo(m) >= 0) d.subTo(m, d)
15251 while (d.signum() < 0) d.addTo(m, d)
15252 return d
15253 }
15254
15255 var lowprimes = [
15256 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71,
15257 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151,
15258 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233,
15259 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317,
15260 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419,
15261 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503,
15262 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607,
15263 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701,
15264 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811,
15265 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911,
15266 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997
15267 ]
15268
15269 var lplim = (1 << 26) / lowprimes[lowprimes.length - 1]
15270
15271 // (public) test primality with certainty >= 1-.5^t
15272 function bnIsProbablePrime(t) {
15273 var i, x = this.abs()
15274 if (x.t == 1 && x[0] <= lowprimes[lowprimes.length - 1]) {
15275 for (i = 0; i < lowprimes.length; ++i)
15276 if (x[0] == lowprimes[i]) return true
15277 return false
15278 }
15279 if (x.isEven()) return false
15280 i = 1
15281 while (i < lowprimes.length) {
15282 var m = lowprimes[i],
15283 j = i + 1
15284 while (j < lowprimes.length && m < lplim) m *= lowprimes[j++]
15285 m = x.modInt(m)
15286 while (i < j) if (m % lowprimes[i++] == 0) return false
15287 }
15288 return x.millerRabin(t)
15289 }
15290
15291 // (protected) true if probably prime (HAC 4.24, Miller-Rabin)
15292 function bnpMillerRabin(t) {
15293 var n1 = this.subtract(BigInteger.ONE)
15294 var k = n1.getLowestSetBit()
15295 if (k <= 0) return false
15296 var r = n1.shiftRight(k)
15297 t = (t + 1) >> 1
15298 if (t > lowprimes.length) t = lowprimes.length
15299 var a = new BigInteger(null)
15300 var j, bases = []
15301 for (var i = 0; i < t; ++i) {
15302 for (;;) {
15303 j = lowprimes[Math.floor(Math.random() * lowprimes.length)]
15304 if (bases.indexOf(j) == -1) break
15305 }
15306 bases.push(j)
15307 a.fromInt(j)
15308 var y = a.modPow(r, this)
15309 if (y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {
15310 var j = 1
15311 while (j++ < k && y.compareTo(n1) != 0) {
15312 y = y.modPowInt(2, this)
15313 if (y.compareTo(BigInteger.ONE) == 0) return false
15314 }
15315 if (y.compareTo(n1) != 0) return false
15316 }
15317 }
15318 return true
15319 }
15320
15321 // protected
15322 proto.chunkSize = bnpChunkSize
15323 proto.toRadix = bnpToRadix
15324 proto.fromRadix = bnpFromRadix
15325 proto.fromNumber = bnpFromNumber
15326 proto.bitwiseTo = bnpBitwiseTo
15327 proto.changeBit = bnpChangeBit
15328 proto.addTo = bnpAddTo
15329 proto.dMultiply = bnpDMultiply
15330 proto.dAddOffset = bnpDAddOffset
15331 proto.multiplyLowerTo = bnpMultiplyLowerTo
15332 proto.multiplyUpperTo = bnpMultiplyUpperTo
15333 proto.modInt = bnpModInt
15334 proto.millerRabin = bnpMillerRabin
15335
15336 // public
15337 proto.clone = bnClone
15338 proto.intValue = bnIntValue
15339 proto.byteValue = bnByteValue
15340 proto.shortValue = bnShortValue
15341 proto.signum = bnSigNum
15342 proto.toByteArray = bnToByteArray
15343 proto.equals = bnEquals
15344 proto.min = bnMin
15345 proto.max = bnMax
15346 proto.and = bnAnd
15347 proto.or = bnOr
15348 proto.xor = bnXor
15349 proto.andNot = bnAndNot
15350 proto.not = bnNot
15351 proto.shiftLeft = bnShiftLeft
15352 proto.shiftRight = bnShiftRight
15353 proto.getLowestSetBit = bnGetLowestSetBit
15354 proto.bitCount = bnBitCount
15355 proto.testBit = bnTestBit
15356 proto.setBit = bnSetBit
15357 proto.clearBit = bnClearBit
15358 proto.flipBit = bnFlipBit
15359 proto.add = bnAdd
15360 proto.subtract = bnSubtract
15361 proto.multiply = bnMultiply
15362 proto.divide = bnDivide
15363 proto.remainder = bnRemainder
15364 proto.divideAndRemainder = bnDivideAndRemainder
15365 proto.modPow = bnModPow
15366 proto.modInverse = bnModInverse
15367 proto.pow = bnPow
15368 proto.gcd = bnGCD
15369 proto.isProbablePrime = bnIsProbablePrime
15370
15371 // JSBN-specific extension
15372 proto.square = bnSquare
15373
15374 // constants
15375 BigInteger.ZERO = nbv(0)
15376 BigInteger.ONE = nbv(1)
15377 BigInteger.valueOf = nbv
15378
15379 module.exports = BigInteger
15380
15381 },{"../package.json":38}],36:[function(require,module,exports){
15382 (function (Buffer){
15383 // FIXME: Kind of a weird way to throw exceptions, consider removing
15384 var assert = require('assert')
15385 var BigInteger = require('./bigi')
15386
15387 /**
15388 * Turns a byte array into a big integer.
15389 *
15390 * This function will interpret a byte array as a big integer in big
15391 * endian notation.
15392 */
15393 BigInteger.fromByteArrayUnsigned = function(byteArray) {
15394 // BigInteger expects a DER integer conformant byte array
15395 if (byteArray[0] & 0x80) {
15396 return new BigInteger([0].concat(byteArray))
15397 }
15398
15399 return new BigInteger(byteArray)
15400 }
15401
15402 /**
15403 * Returns a byte array representation of the big integer.
15404 *
15405 * This returns the absolute of the contained value in big endian
15406 * form. A value of zero results in an empty array.
15407 */
15408 BigInteger.prototype.toByteArrayUnsigned = function() {
15409 var byteArray = this.toByteArray()
15410 return byteArray[0] === 0 ? byteArray.slice(1) : byteArray
15411 }
15412
15413 BigInteger.fromDERInteger = function(byteArray) {
15414 return new BigInteger(byteArray)
15415 }
15416
15417 /*
15418 * Converts BigInteger to a DER integer representation.
15419 *
15420 * The format for this value uses the most significant bit as a sign
15421 * bit. If the most significant bit is already set and the integer is
15422 * positive, a 0x00 is prepended.
15423 *
15424 * Examples:
15425 *
15426 * 0 => 0x00
15427 * 1 => 0x01
15428 * -1 => 0xff
15429 * 127 => 0x7f
15430 * -127 => 0x81
15431 * 128 => 0x0080
15432 * -128 => 0x80
15433 * 255 => 0x00ff
15434 * -255 => 0xff01
15435 * 16300 => 0x3fac
15436 * -16300 => 0xc054
15437 * 62300 => 0x00f35c
15438 * -62300 => 0xff0ca4
15439 */
15440 BigInteger.prototype.toDERInteger = BigInteger.prototype.toByteArray
15441
15442 BigInteger.fromBuffer = function(buffer) {
15443 // BigInteger expects a DER integer conformant byte array
15444 if (buffer[0] & 0x80) {
15445 var byteArray = Array.prototype.slice.call(buffer)
15446
15447 return new BigInteger([0].concat(byteArray))
15448 }
15449
15450 return new BigInteger(buffer)
15451 }
15452
15453 BigInteger.fromHex = function(hex) {
15454 if (hex === '') return BigInteger.ZERO
15455
15456 assert.equal(hex, hex.match(/^[A-Fa-f0-9]+/), 'Invalid hex string')
15457 assert.equal(hex.length % 2, 0, 'Incomplete hex')
15458 return new BigInteger(hex, 16)
15459 }
15460
15461 BigInteger.prototype.toBuffer = function(size) {
15462 var byteArray = this.toByteArrayUnsigned()
15463 var zeros = []
15464
15465 var padding = size - byteArray.length
15466 while (zeros.length < padding) zeros.push(0)
15467
15468 return new Buffer(zeros.concat(byteArray))
15469 }
15470
15471 BigInteger.prototype.toHex = function(size) {
15472 return this.toBuffer(size).toString('hex')
15473 }
15474
15475 }).call(this,require("buffer").Buffer)
15476 },{"./bigi":35,"assert":1,"buffer":4}],37:[function(require,module,exports){
15477 var BigInteger = require('./bigi')
15478
15479 //addons
15480 require('./convert')
15481
15482 module.exports = BigInteger
15483 },{"./bigi":35,"./convert":36}],38:[function(require,module,exports){
15484 module.exports={
15485 "_args": [
15486 [
15487 "bigi",
15488 "/home/ian/git/bitcoin/bitcoinjs-lib-browser"
15489 ]
15490 ],
15491 "_from": "bigi@latest",
15492 "_id": "bigi@1.4.2",
15493 "_inCache": true,
15494 "_installable": true,
15495 "_location": "/bigi",
15496 "_nodeVersion": "6.1.0",
15497 "_npmOperationalInternal": {
15498 "host": "packages-12-west.internal.npmjs.com",
15499 "tmp": "tmp/bigi-1.4.2.tgz_1469584192413_0.6801238611806184"
15500 },
15501 "_npmUser": {
15502 "email": "jprichardson@gmail.com",
15503 "name": "jprichardson"
15504 },
15505 "_npmVersion": "3.8.6",
15506 "_phantomChildren": {},
15507 "_requested": {
15508 "name": "bigi",
15509 "raw": "bigi",
15510 "rawSpec": "",
15511 "scope": null,
15512 "spec": "latest",
15513 "type": "tag"
15514 },
15515 "_requiredBy": [
15516 "#USER",
15517 "/bitcoinjs-lib",
15518 "/ecurve"
15519 ],
15520 "_resolved": "https://registry.npmjs.org/bigi/-/bigi-1.4.2.tgz",
15521 "_shasum": "9c665a95f88b8b08fc05cfd731f561859d725825",
15522 "_shrinkwrap": null,
15523 "_spec": "bigi",
15524 "_where": "/home/ian/git/bitcoin/bitcoinjs-lib-browser",
15525 "bugs": {
15526 "url": "https://github.com/cryptocoinjs/bigi/issues"
15527 },
15528 "dependencies": {},
15529 "description": "Big integers.",
15530 "devDependencies": {
15531 "coveralls": "^2.11.2",
15532 "istanbul": "^0.3.5",
15533 "jshint": "^2.5.1",
15534 "mocha": "^2.1.0",
15535 "mochify": "^2.1.0"
15536 },
15537 "directories": {},
15538 "dist": {
15539 "shasum": "9c665a95f88b8b08fc05cfd731f561859d725825",
15540 "tarball": "https://registry.npmjs.org/bigi/-/bigi-1.4.2.tgz"
15541 },
15542 "gitHead": "c25308081c896ff84702303722bf5ecd8b3f78e3",
15543 "homepage": "https://github.com/cryptocoinjs/bigi#readme",
15544 "keywords": [
15545 "cryptography",
15546 "math",
15547 "bitcoin",
15548 "arbitrary",
15549 "precision",
15550 "arithmetic",
15551 "big",
15552 "integer",
15553 "int",
15554 "number",
15555 "biginteger",
15556 "bigint",
15557 "bignumber",
15558 "decimal",
15559 "float"
15560 ],
15561 "main": "./lib/index.js",
15562 "maintainers": [
15563 {
15564 "email": "boydb@midnightdesign.ws",
15565 "name": "midnightlightning"
15566 },
15567 {
15568 "email": "sidazhang89@gmail.com",
15569 "name": "sidazhang"
15570 },
15571 {
15572 "email": "npm@shesek.info",
15573 "name": "nadav"
15574 },
15575 {
15576 "email": "jprichardson@gmail.com",
15577 "name": "jprichardson"
15578 }
15579 ],
15580 "name": "bigi",
15581 "optionalDependencies": {},
15582 "readme": "ERROR: No README data found!",
15583 "repository": {
15584 "type": "git",
15585 "url": "git+https://github.com/cryptocoinjs/bigi.git"
15586 },
15587 "scripts": {
15588 "browser-test": "mochify --wd -R spec",
15589 "coverage": "istanbul cover ./node_modules/.bin/_mocha -- --reporter list test/*.js",
15590 "coveralls": "npm run-script coverage && node ./node_modules/.bin/coveralls < coverage/lcov.info",
15591 "jshint": "jshint --config jshint.json lib/*.js ; true",
15592 "test": "_mocha -- test/*.js",
15593 "unit": "mocha"
15594 },
15595 "testling": {
15596 "browsers": [
15597 "ie/9..latest",
15598 "firefox/latest",
15599 "chrome/latest",
15600 "safari/6.0..latest",
15601 "iphone/6.0..latest",
15602 "android-browser/4.2..latest"
15603 ],
15604 "files": "test/*.js",
15605 "harness": "mocha"
15606 },
15607 "version": "1.4.2"
15608 }
15609
15610 },{}],39:[function(require,module,exports){
15611 // Reference https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki
15612 // Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
15613 // NOTE: SIGHASH byte ignored AND restricted, truncate before use
15614
15615 var Buffer = require('safe-buffer').Buffer
15616
15617 function check (buffer) {
15618 if (buffer.length < 8) return false
15619 if (buffer.length > 72) return false
15620 if (buffer[0] !== 0x30) return false
15621 if (buffer[1] !== buffer.length - 2) return false
15622 if (buffer[2] !== 0x02) return false
15623
15624 var lenR = buffer[3]
15625 if (lenR === 0) return false
15626 if (5 + lenR >= buffer.length) return false
15627 if (buffer[4 + lenR] !== 0x02) return false
15628
15629 var lenS = buffer[5 + lenR]
15630 if (lenS === 0) return false
15631 if ((6 + lenR + lenS) !== buffer.length) return false
15632
15633 if (buffer[4] & 0x80) return false
15634 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) return false
15635
15636 if (buffer[lenR + 6] & 0x80) return false
15637 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) return false
15638 return true
15639 }
15640
15641 function decode (buffer) {
15642 if (buffer.length < 8) throw new Error('DER sequence length is too short')
15643 if (buffer.length > 72) throw new Error('DER sequence length is too long')
15644 if (buffer[0] !== 0x30) throw new Error('Expected DER sequence')
15645 if (buffer[1] !== buffer.length - 2) throw new Error('DER sequence length is invalid')
15646 if (buffer[2] !== 0x02) throw new Error('Expected DER integer')
15647
15648 var lenR = buffer[3]
15649 if (lenR === 0) throw new Error('R length is zero')
15650 if (5 + lenR >= buffer.length) throw new Error('R length is too long')
15651 if (buffer[4 + lenR] !== 0x02) throw new Error('Expected DER integer (2)')
15652
15653 var lenS = buffer[5 + lenR]
15654 if (lenS === 0) throw new Error('S length is zero')
15655 if ((6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')
15656
15657 if (buffer[4] & 0x80) throw new Error('R value is negative')
15658 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) throw new Error('R value excessively padded')
15659
15660 if (buffer[lenR + 6] & 0x80) throw new Error('S value is negative')
15661 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) throw new Error('S value excessively padded')
15662
15663 // non-BIP66 - extract R, S values
15664 return {
15665 r: buffer.slice(4, 4 + lenR),
15666 s: buffer.slice(6 + lenR)
15667 }
15668 }
15669
15670 /*
15671 * Expects r and s to be positive DER integers.
15672 *
15673 * The DER format uses the most significant bit as a sign bit (& 0x80).
15674 * If the significant bit is set AND the integer is positive, a 0x00 is prepended.
15675 *
15676 * Examples:
15677 *
15678 * 0 => 0x00
15679 * 1 => 0x01
15680 * -1 => 0xff
15681 * 127 => 0x7f
15682 * -127 => 0x81
15683 * 128 => 0x0080
15684 * -128 => 0x80
15685 * 255 => 0x00ff
15686 * -255 => 0xff01
15687 * 16300 => 0x3fac
15688 * -16300 => 0xc054
15689 * 62300 => 0x00f35c
15690 * -62300 => 0xff0ca4
15691 */
15692 function encode (r, s) {
15693 var lenR = r.length
15694 var lenS = s.length
15695 if (lenR === 0) throw new Error('R length is zero')
15696 if (lenS === 0) throw new Error('S length is zero')
15697 if (lenR > 33) throw new Error('R length is too long')
15698 if (lenS > 33) throw new Error('S length is too long')
15699 if (r[0] & 0x80) throw new Error('R value is negative')
15700 if (s[0] & 0x80) throw new Error('S value is negative')
15701 if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) throw new Error('R value excessively padded')
15702 if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) throw new Error('S value excessively padded')
15703
15704 var signature = Buffer.allocUnsafe(6 + lenR + lenS)
15705
15706 // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
15707 signature[0] = 0x30
15708 signature[1] = signature.length - 2
15709 signature[2] = 0x02
15710 signature[3] = r.length
15711 r.copy(signature, 4)
15712 signature[4 + lenR] = 0x02
15713 signature[5 + lenR] = s.length
15714 s.copy(signature, 6 + lenR)
15715
15716 return signature
15717 }
15718
15719 module.exports = {
15720 check: check,
15721 decode: decode,
15722 encode: encode
15723 }
15724
15725 },{"safe-buffer":98}],40:[function(require,module,exports){
15726 module.exports={
15727 "OP_FALSE": 0,
15728 "OP_0": 0,
15729 "OP_PUSHDATA1": 76,
15730 "OP_PUSHDATA2": 77,
15731 "OP_PUSHDATA4": 78,
15732 "OP_1NEGATE": 79,
15733 "OP_RESERVED": 80,
15734 "OP_1": 81,
15735 "OP_TRUE": 81,
15736 "OP_2": 82,
15737 "OP_3": 83,
15738 "OP_4": 84,
15739 "OP_5": 85,
15740 "OP_6": 86,
15741 "OP_7": 87,
15742 "OP_8": 88,
15743 "OP_9": 89,
15744 "OP_10": 90,
15745 "OP_11": 91,
15746 "OP_12": 92,
15747 "OP_13": 93,
15748 "OP_14": 94,
15749 "OP_15": 95,
15750 "OP_16": 96,
15751
15752 "OP_NOP": 97,
15753 "OP_VER": 98,
15754 "OP_IF": 99,
15755 "OP_NOTIF": 100,
15756 "OP_VERIF": 101,
15757 "OP_VERNOTIF": 102,
15758 "OP_ELSE": 103,
15759 "OP_ENDIF": 104,
15760 "OP_VERIFY": 105,
15761 "OP_RETURN": 106,
15762
15763 "OP_TOALTSTACK": 107,
15764 "OP_FROMALTSTACK": 108,
15765 "OP_2DROP": 109,
15766 "OP_2DUP": 110,
15767 "OP_3DUP": 111,
15768 "OP_2OVER": 112,
15769 "OP_2ROT": 113,
15770 "OP_2SWAP": 114,
15771 "OP_IFDUP": 115,
15772 "OP_DEPTH": 116,
15773 "OP_DROP": 117,
15774 "OP_DUP": 118,
15775 "OP_NIP": 119,
15776 "OP_OVER": 120,
15777 "OP_PICK": 121,
15778 "OP_ROLL": 122,
15779 "OP_ROT": 123,
15780 "OP_SWAP": 124,
15781 "OP_TUCK": 125,
15782
15783 "OP_CAT": 126,
15784 "OP_SUBSTR": 127,
15785 "OP_LEFT": 128,
15786 "OP_RIGHT": 129,
15787 "OP_SIZE": 130,
15788
15789 "OP_INVERT": 131,
15790 "OP_AND": 132,
15791 "OP_OR": 133,
15792 "OP_XOR": 134,
15793 "OP_EQUAL": 135,
15794 "OP_EQUALVERIFY": 136,
15795 "OP_RESERVED1": 137,
15796 "OP_RESERVED2": 138,
15797
15798 "OP_1ADD": 139,
15799 "OP_1SUB": 140,
15800 "OP_2MUL": 141,
15801 "OP_2DIV": 142,
15802 "OP_NEGATE": 143,
15803 "OP_ABS": 144,
15804 "OP_NOT": 145,
15805 "OP_0NOTEQUAL": 146,
15806 "OP_ADD": 147,
15807 "OP_SUB": 148,
15808 "OP_MUL": 149,
15809 "OP_DIV": 150,
15810 "OP_MOD": 151,
15811 "OP_LSHIFT": 152,
15812 "OP_RSHIFT": 153,
15813
15814 "OP_BOOLAND": 154,
15815 "OP_BOOLOR": 155,
15816 "OP_NUMEQUAL": 156,
15817 "OP_NUMEQUALVERIFY": 157,
15818 "OP_NUMNOTEQUAL": 158,
15819 "OP_LESSTHAN": 159,
15820 "OP_GREATERTHAN": 160,
15821 "OP_LESSTHANOREQUAL": 161,
15822 "OP_GREATERTHANOREQUAL": 162,
15823 "OP_MIN": 163,
15824 "OP_MAX": 164,
15825
15826 "OP_WITHIN": 165,
15827
15828 "OP_RIPEMD160": 166,
15829 "OP_SHA1": 167,
15830 "OP_SHA256": 168,
15831 "OP_HASH160": 169,
15832 "OP_HASH256": 170,
15833 "OP_CODESEPARATOR": 171,
15834 "OP_CHECKSIG": 172,
15835 "OP_CHECKSIGVERIFY": 173,
15836 "OP_CHECKMULTISIG": 174,
15837 "OP_CHECKMULTISIGVERIFY": 175,
15838
15839 "OP_NOP1": 176,
15840 "OP_NOP2": 177,
15841 "OP_CHECKLOCKTIMEVERIFY": 177,
15842
15843 "OP_NOP3": 178,
15844 "OP_NOP4": 179,
15845 "OP_NOP5": 180,
15846 "OP_NOP6": 181,
15847 "OP_NOP7": 182,
15848 "OP_NOP8": 183,
15849 "OP_NOP9": 184,
15850 "OP_NOP10": 185,
15851
15852 "OP_PUBKEYHASH": 253,
15853 "OP_PUBKEY": 254,
15854 "OP_INVALIDOPCODE": 255
15855 }
15856
15857 },{}],41:[function(require,module,exports){
15858 var OPS = require('./index.json')
15859
15860 var map = {}
15861 for (var op in OPS) {
15862 var code = OPS[op]
15863 map[code] = op
15864 }
15865
15866 module.exports = map
15867
15868 },{"./index.json":40}],42:[function(require,module,exports){
15869 var Buffer = require('safe-buffer').Buffer
15870 var bs58check = require('bs58check')
15871 var bscript = require('./script')
15872 var networks = require('./networks')
15873 var typeforce = require('typeforce')
15874 var types = require('./types')
15875
15876 function fromBase58Check (address) {
15877 var payload = bs58check.decode(address)
15878 if (payload.length < 21) throw new TypeError(address + ' is too short')
15879 if (payload.length > 21) throw new TypeError(address + ' is too long')
15880
15881 var version = payload.readUInt8(0)
15882 var hash = payload.slice(1)
15883
15884 return { hash: hash, version: version }
15885 }
15886
15887 function toBase58Check (hash, version) {
15888 typeforce(types.tuple(types.Hash160bit, types.UInt8), arguments)
15889
15890 var payload = Buffer.allocUnsafe(21)
15891 payload.writeUInt8(version, 0)
15892 hash.copy(payload, 1)
15893
15894 return bs58check.encode(payload)
15895 }
15896
15897 function fromOutputScript (outputScript, network) {
15898 network = network || networks.bitcoin
15899
15900 if (bscript.pubKeyHash.output.check(outputScript)) return toBase58Check(bscript.compile(outputScript).slice(3, 23), network.pubKeyHash)
15901 if (bscript.scriptHash.output.check(outputScript)) return toBase58Check(bscript.compile(outputScript).slice(2, 22), network.scriptHash)
15902
15903 throw new Error(bscript.toASM(outputScript) + ' has no matching Address')
15904 }
15905
15906 function toOutputScript (address, network) {
15907 network = network || networks.bitcoin
15908
15909 var decode = fromBase58Check(address)
15910 if (decode.version === network.pubKeyHash) return bscript.pubKeyHash.output.encode(decode.hash)
15911 if (decode.version === network.scriptHash) return bscript.scriptHash.output.encode(decode.hash)
15912
15913 throw new Error(address + ' has no matching Script')
15914 }
15915
15916 module.exports = {
15917 fromBase58Check: fromBase58Check,
15918 fromOutputScript: fromOutputScript,
15919 toBase58Check: toBase58Check,
15920 toOutputScript: toOutputScript
15921 }
15922
15923 },{"./networks":51,"./script":52,"./types":78,"bs58check":80,"safe-buffer":98,"typeforce":109}],43:[function(require,module,exports){
15924 var Buffer = require('safe-buffer').Buffer
15925 var bcrypto = require('./crypto')
15926 var fastMerkleRoot = require('merkle-lib/fastRoot')
15927 var typeforce = require('typeforce')
15928 var types = require('./types')
15929 var varuint = require('varuint-bitcoin')
15930
15931 var Transaction = require('./transaction')
15932
15933 function Block () {
15934 this.version = 1
15935 this.prevHash = null
15936 this.merkleRoot = null
15937 this.timestamp = 0
15938 this.bits = 0
15939 this.nonce = 0
15940 }
15941
15942 Block.fromBuffer = function (buffer) {
15943 if (buffer.length < 80) throw new Error('Buffer too small (< 80 bytes)')
15944
15945 var offset = 0
15946 function readSlice (n) {
15947 offset += n
15948 return buffer.slice(offset - n, offset)
15949 }
15950
15951 function readUInt32 () {
15952 var i = buffer.readUInt32LE(offset)
15953 offset += 4
15954 return i
15955 }
15956
15957 function readInt32 () {
15958 var i = buffer.readInt32LE(offset)
15959 offset += 4
15960 return i
15961 }
15962
15963 var block = new Block()
15964 block.version = readInt32()
15965 block.prevHash = readSlice(32)
15966 block.merkleRoot = readSlice(32)
15967 block.timestamp = readUInt32()
15968 block.bits = readUInt32()
15969 block.nonce = readUInt32()
15970
15971 if (buffer.length === 80) return block
15972
15973 function readVarInt () {
15974 var vi = varuint.decode(buffer, offset)
15975 offset += varuint.decode.bytes
15976 return vi
15977 }
15978
15979 function readTransaction () {
15980 var tx = Transaction.fromBuffer(buffer.slice(offset), true)
15981 offset += tx.byteLength()
15982 return tx
15983 }
15984
15985 var nTransactions = readVarInt()
15986 block.transactions = []
15987
15988 for (var i = 0; i < nTransactions; ++i) {
15989 var tx = readTransaction()
15990 block.transactions.push(tx)
15991 }
15992
15993 return block
15994 }
15995
15996 Block.prototype.byteLength = function (headersOnly) {
15997 if (headersOnly || !this.transactions) return 80
15998
15999 return 80 + varuint.encodingLength(this.transactions.length) + this.transactions.reduce(function (a, x) {
16000 return a + x.byteLength()
16001 }, 0)
16002 }
16003
16004 Block.fromHex = function (hex) {
16005 return Block.fromBuffer(Buffer.from(hex, 'hex'))
16006 }
16007
16008 Block.prototype.getHash = function () {
16009 return bcrypto.hash256(this.toBuffer(true))
16010 }
16011
16012 Block.prototype.getId = function () {
16013 return this.getHash().reverse().toString('hex')
16014 }
16015
16016 Block.prototype.getUTCDate = function () {
16017 var date = new Date(0) // epoch
16018 date.setUTCSeconds(this.timestamp)
16019
16020 return date
16021 }
16022
16023 // TODO: buffer, offset compatibility
16024 Block.prototype.toBuffer = function (headersOnly) {
16025 var buffer = Buffer.allocUnsafe(this.byteLength(headersOnly))
16026
16027 var offset = 0
16028 function writeSlice (slice) {
16029 slice.copy(buffer, offset)
16030 offset += slice.length
16031 }
16032
16033 function writeInt32 (i) {
16034 buffer.writeInt32LE(i, offset)
16035 offset += 4
16036 }
16037 function writeUInt32 (i) {
16038 buffer.writeUInt32LE(i, offset)
16039 offset += 4
16040 }
16041
16042 writeInt32(this.version)
16043 writeSlice(this.prevHash)
16044 writeSlice(this.merkleRoot)
16045 writeUInt32(this.timestamp)
16046 writeUInt32(this.bits)
16047 writeUInt32(this.nonce)
16048
16049 if (headersOnly || !this.transactions) return buffer
16050
16051 varuint.encode(this.transactions.length, buffer, offset)
16052 offset += varuint.encode.bytes
16053
16054 this.transactions.forEach(function (tx) {
16055 var txSize = tx.byteLength() // TODO: extract from toBuffer?
16056 tx.toBuffer(buffer, offset)
16057 offset += txSize
16058 })
16059
16060 return buffer
16061 }
16062
16063 Block.prototype.toHex = function (headersOnly) {
16064 return this.toBuffer(headersOnly).toString('hex')
16065 }
16066
16067 Block.calculateTarget = function (bits) {
16068 var exponent = ((bits & 0xff000000) >> 24) - 3
16069 var mantissa = bits & 0x007fffff
16070 var target = Buffer.alloc(32, 0)
16071 target.writeUInt32BE(mantissa, 28 - exponent)
16072 return target
16073 }
16074
16075 Block.calculateMerkleRoot = function (transactions) {
16076 typeforce([{ getHash: types.Function }], transactions)
16077 if (transactions.length === 0) throw TypeError('Cannot compute merkle root for zero transactions')
16078
16079 var hashes = transactions.map(function (transaction) {
16080 return transaction.getHash()
16081 })
16082
16083 return fastMerkleRoot(hashes, bcrypto.hash256)
16084 }
16085
16086 Block.prototype.checkMerkleRoot = function () {
16087 if (!this.transactions) return false
16088
16089 var actualMerkleRoot = Block.calculateMerkleRoot(this.transactions)
16090 return this.merkleRoot.compare(actualMerkleRoot) === 0
16091 }
16092
16093 Block.prototype.checkProofOfWork = function () {
16094 var hash = this.getHash().reverse()
16095 var target = Block.calculateTarget(this.bits)
16096
16097 return hash.compare(target) <= 0
16098 }
16099
16100 module.exports = Block
16101
16102 },{"./crypto":45,"./transaction":76,"./types":78,"merkle-lib/fastRoot":94,"safe-buffer":98,"typeforce":109,"varuint-bitcoin":111}],44:[function(require,module,exports){
16103 var pushdata = require('pushdata-bitcoin')
16104 var varuint = require('varuint-bitcoin')
16105
16106 // https://github.com/feross/buffer/blob/master/index.js#L1127
16107 function verifuint (value, max) {
16108 if (typeof value !== 'number') throw new Error('cannot write a non-number as a number')
16109 if (value < 0) throw new Error('specified a negative value for writing an unsigned value')
16110 if (value > max) throw new Error('RangeError: value out of range')
16111 if (Math.floor(value) !== value) throw new Error('value has a fractional component')
16112 }
16113
16114 function readUInt64LE (buffer, offset) {
16115 var a = buffer.readUInt32LE(offset)
16116 var b = buffer.readUInt32LE(offset + 4)
16117 b *= 0x100000000
16118
16119 verifuint(b + a, 0x001fffffffffffff)
16120
16121 return b + a
16122 }
16123
16124 function writeUInt64LE (buffer, value, offset) {
16125 verifuint(value, 0x001fffffffffffff)
16126
16127 buffer.writeInt32LE(value & -1, offset)
16128 buffer.writeUInt32LE(Math.floor(value / 0x100000000), offset + 4)
16129 return offset + 8
16130 }
16131
16132 // TODO: remove in 4.0.0?
16133 function readVarInt (buffer, offset) {
16134 var result = varuint.decode(buffer, offset)
16135
16136 return {
16137 number: result,
16138 size: varuint.decode.bytes
16139 }
16140 }
16141
16142 // TODO: remove in 4.0.0?
16143 function writeVarInt (buffer, number, offset) {
16144 varuint.encode(number, buffer, offset)
16145 return varuint.encode.bytes
16146 }
16147
16148 module.exports = {
16149 pushDataSize: pushdata.encodingLength,
16150 readPushDataInt: pushdata.decode,
16151 readUInt64LE: readUInt64LE,
16152 readVarInt: readVarInt,
16153 varIntBuffer: varuint.encode,
16154 varIntSize: varuint.encodingLength,
16155 writePushDataInt: pushdata.encode,
16156 writeUInt64LE: writeUInt64LE,
16157 writeVarInt: writeVarInt
16158 }
16159
16160 },{"pushdata-bitcoin":95,"varuint-bitcoin":111}],45:[function(require,module,exports){
16161 var createHash = require('create-hash')
16162
16163 function ripemd160 (buffer) {
16164 return createHash('rmd160').update(buffer).digest()
16165 }
16166
16167 function sha1 (buffer) {
16168 return createHash('sha1').update(buffer).digest()
16169 }
16170
16171 function sha256 (buffer) {
16172 return createHash('sha256').update(buffer).digest()
16173 }
16174
16175 function hash160 (buffer) {
16176 return ripemd160(sha256(buffer))
16177 }
16178
16179 function hash256 (buffer) {
16180 return sha256(sha256(buffer))
16181 }
16182
16183 module.exports = {
16184 hash160: hash160,
16185 hash256: hash256,
16186 ripemd160: ripemd160,
16187 sha1: sha1,
16188 sha256: sha256
16189 }
16190
16191 },{"create-hash":82}],46:[function(require,module,exports){
16192 var Buffer = require('safe-buffer').Buffer
16193 var createHmac = require('create-hmac')
16194 var typeforce = require('typeforce')
16195 var types = require('./types')
16196
16197 var BigInteger = require('bigi')
16198 var ECSignature = require('./ecsignature')
16199
16200 var ZERO = Buffer.alloc(1, 0)
16201 var ONE = Buffer.alloc(1, 1)
16202
16203 var ecurve = require('ecurve')
16204 var secp256k1 = ecurve.getCurveByName('secp256k1')
16205
16206 // https://tools.ietf.org/html/rfc6979#section-3.2
16207 function deterministicGenerateK (hash, x, checkSig) {
16208 typeforce(types.tuple(
16209 types.Hash256bit,
16210 types.Buffer256bit,
16211 types.Function
16212 ), arguments)
16213
16214 // Step A, ignored as hash already provided
16215 // Step B
16216 // Step C
16217 var k = Buffer.alloc(32, 0)
16218 var v = Buffer.alloc(32, 1)
16219
16220 // Step D
16221 k = createHmac('sha256', k)
16222 .update(v)
16223 .update(ZERO)
16224 .update(x)
16225 .update(hash)
16226 .digest()
16227
16228 // Step E
16229 v = createHmac('sha256', k).update(v).digest()
16230
16231 // Step F
16232 k = createHmac('sha256', k)
16233 .update(v)
16234 .update(ONE)
16235 .update(x)
16236 .update(hash)
16237 .digest()
16238
16239 // Step G
16240 v = createHmac('sha256', k).update(v).digest()
16241
16242 // Step H1/H2a, ignored as tlen === qlen (256 bit)
16243 // Step H2b
16244 v = createHmac('sha256', k).update(v).digest()
16245
16246 var T = BigInteger.fromBuffer(v)
16247
16248 // Step H3, repeat until T is within the interval [1, n - 1] and is suitable for ECDSA
16249 while (T.signum() <= 0 || T.compareTo(secp256k1.n) >= 0 || !checkSig(T)) {
16250 k = createHmac('sha256', k)
16251 .update(v)
16252 .update(ZERO)
16253 .digest()
16254
16255 v = createHmac('sha256', k).update(v).digest()
16256
16257 // Step H1/H2a, again, ignored as tlen === qlen (256 bit)
16258 // Step H2b again
16259 v = createHmac('sha256', k).update(v).digest()
16260 T = BigInteger.fromBuffer(v)
16261 }
16262
16263 return T
16264 }
16265
16266 var N_OVER_TWO = secp256k1.n.shiftRight(1)
16267
16268 function sign (hash, d) {
16269 typeforce(types.tuple(types.Hash256bit, types.BigInt), arguments)
16270
16271 var x = d.toBuffer(32)
16272 var e = BigInteger.fromBuffer(hash)
16273 var n = secp256k1.n
16274 var G = secp256k1.G
16275
16276 var r, s
16277 deterministicGenerateK(hash, x, function (k) {
16278 var Q = G.multiply(k)
16279
16280 if (secp256k1.isInfinity(Q)) return false
16281
16282 r = Q.affineX.mod(n)
16283 if (r.signum() === 0) return false
16284
16285 s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n)
16286 if (s.signum() === 0) return false
16287
16288 return true
16289 })
16290
16291 // enforce low S values, see bip62: 'low s values in signatures'
16292 if (s.compareTo(N_OVER_TWO) > 0) {
16293 s = n.subtract(s)
16294 }
16295
16296 return new ECSignature(r, s)
16297 }
16298
16299 function verify (hash, signature, Q) {
16300 typeforce(types.tuple(
16301 types.Hash256bit,
16302 types.ECSignature,
16303 types.ECPoint
16304 ), arguments)
16305
16306 var n = secp256k1.n
16307 var G = secp256k1.G
16308
16309 var r = signature.r
16310 var s = signature.s
16311
16312 // 1.4.1 Enforce r and s are both integers in the interval [1, n − 1]
16313 if (r.signum() <= 0 || r.compareTo(n) >= 0) return false
16314 if (s.signum() <= 0 || s.compareTo(n) >= 0) return false
16315
16316 // 1.4.2 H = Hash(M), already done by the user
16317 // 1.4.3 e = H
16318 var e = BigInteger.fromBuffer(hash)
16319
16320 // Compute s^-1
16321 var sInv = s.modInverse(n)
16322
16323 // 1.4.4 Compute u1 = es^−1 mod n
16324 // u2 = rs^−1 mod n
16325 var u1 = e.multiply(sInv).mod(n)
16326 var u2 = r.multiply(sInv).mod(n)
16327
16328 // 1.4.5 Compute R = (xR, yR)
16329 // R = u1G + u2Q
16330 var R = G.multiplyTwo(u1, Q, u2)
16331
16332 // 1.4.5 (cont.) Enforce R is not at infinity
16333 if (secp256k1.isInfinity(R)) return false
16334
16335 // 1.4.6 Convert the field element R.x to an integer
16336 var xR = R.affineX
16337
16338 // 1.4.7 Set v = xR mod n
16339 var v = xR.mod(n)
16340
16341 // 1.4.8 If v = r, output "valid", and if v != r, output "invalid"
16342 return v.equals(r)
16343 }
16344
16345 module.exports = {
16346 deterministicGenerateK: deterministicGenerateK,
16347 sign: sign,
16348 verify: verify,
16349
16350 // TODO: remove
16351 __curve: secp256k1
16352 }
16353
16354 },{"./ecsignature":48,"./types":78,"bigi":37,"create-hmac":85,"ecurve":89,"safe-buffer":98,"typeforce":109}],47:[function(require,module,exports){
16355 var baddress = require('./address')
16356 var bcrypto = require('./crypto')
16357 var ecdsa = require('./ecdsa')
16358 var randomBytes = require('randombytes')
16359 var typeforce = require('typeforce')
16360 var types = require('./types')
16361 var wif = require('wif')
16362
16363 var NETWORKS = require('./networks')
16364 var BigInteger = require('bigi')
16365
16366 var ecurve = require('ecurve')
16367 var secp256k1 = ecdsa.__curve
16368
16369 function ECPair (d, Q, options) {
16370 if (options) {
16371 typeforce({
16372 compressed: types.maybe(types.Boolean),
16373 network: types.maybe(types.Network)
16374 }, options)
16375 }
16376
16377 options = options || {}
16378
16379 if (d) {
16380 if (d.signum() <= 0) throw new Error('Private key must be greater than 0')
16381 if (d.compareTo(secp256k1.n) >= 0) throw new Error('Private key must be less than the curve order')
16382 if (Q) throw new TypeError('Unexpected publicKey parameter')
16383
16384 this.d = d
16385 } else {
16386 typeforce(types.ECPoint, Q)
16387
16388 this.__Q = Q
16389 }
16390
16391 this.compressed = options.compressed === undefined ? true : options.compressed
16392 this.network = options.network || NETWORKS.bitcoin
16393 }
16394
16395 Object.defineProperty(ECPair.prototype, 'Q', {
16396 get: function () {
16397 if (!this.__Q && this.d) {
16398 this.__Q = secp256k1.G.multiply(this.d)
16399 }
16400
16401 return this.__Q
16402 }
16403 })
16404
16405 ECPair.fromPublicKeyBuffer = function (buffer, network) {
16406 var Q = ecurve.Point.decodeFrom(secp256k1, buffer)
16407
16408 return new ECPair(null, Q, {
16409 compressed: Q.compressed,
16410 network: network
16411 })
16412 }
16413
16414 ECPair.fromWIF = function (string, network) {
16415 var decoded = wif.decode(string)
16416 var version = decoded.version
16417
16418 // list of networks?
16419 if (types.Array(network)) {
16420 network = network.filter(function (x) {
16421 return version === x.wif
16422 }).pop()
16423
16424 if (!network) throw new Error('Unknown network version')
16425
16426 // otherwise, assume a network object (or default to bitcoin)
16427 } else {
16428 network = network || NETWORKS.bitcoin
16429
16430 if (version !== network.wif) throw new Error('Invalid network version')
16431 }
16432
16433 var d = BigInteger.fromBuffer(decoded.privateKey)
16434
16435 return new ECPair(d, null, {
16436 compressed: decoded.compressed,
16437 network: network
16438 })
16439 }
16440
16441 ECPair.makeRandom = function (options) {
16442 options = options || {}
16443
16444 var rng = options.rng || randomBytes
16445
16446 var d
16447 do {
16448 var buffer = rng(32)
16449 typeforce(types.Buffer256bit, buffer)
16450
16451 d = BigInteger.fromBuffer(buffer)
16452 } while (d.signum() <= 0 || d.compareTo(secp256k1.n) >= 0)
16453
16454 return new ECPair(d, null, options)
16455 }
16456
16457 ECPair.prototype.getAddress = function () {
16458 return baddress.toBase58Check(bcrypto.hash160(this.getPublicKeyBuffer()), this.getNetwork().pubKeyHash)
16459 }
16460
16461 ECPair.prototype.getNetwork = function () {
16462 return this.network
16463 }
16464
16465 ECPair.prototype.getPublicKeyBuffer = function () {
16466 return this.Q.getEncoded(this.compressed)
16467 }
16468
16469 ECPair.prototype.sign = function (hash) {
16470 if (!this.d) throw new Error('Missing private key')
16471
16472 return ecdsa.sign(hash, this.d)
16473 }
16474
16475 ECPair.prototype.toWIF = function () {
16476 if (!this.d) throw new Error('Missing private key')
16477
16478 return wif.encode(this.network.wif, this.d.toBuffer(32), this.compressed)
16479 }
16480
16481 ECPair.prototype.verify = function (hash, signature) {
16482 return ecdsa.verify(hash, signature, this.Q)
16483 }
16484
16485 module.exports = ECPair
16486
16487 },{"./address":42,"./crypto":45,"./ecdsa":46,"./networks":51,"./types":78,"bigi":37,"ecurve":89,"randombytes":96,"typeforce":109,"wif":112}],48:[function(require,module,exports){
16488 (function (Buffer){
16489 var bip66 = require('bip66')
16490 var typeforce = require('typeforce')
16491 var types = require('./types')
16492
16493 var BigInteger = require('bigi')
16494
16495 function ECSignature (r, s) {
16496 typeforce(types.tuple(types.BigInt, types.BigInt), arguments)
16497
16498 this.r = r
16499 this.s = s
16500 }
16501
16502 ECSignature.parseCompact = function (buffer) {
16503 if (buffer.length !== 65) throw new Error('Invalid signature length')
16504
16505 var flagByte = buffer.readUInt8(0) - 27
16506 if (flagByte !== (flagByte & 7)) throw new Error('Invalid signature parameter')
16507
16508 var compressed = !!(flagByte & 4)
16509 var recoveryParam = flagByte & 3
16510
16511 var r = BigInteger.fromBuffer(buffer.slice(1, 33))
16512 var s = BigInteger.fromBuffer(buffer.slice(33))
16513
16514 return {
16515 compressed: compressed,
16516 i: recoveryParam,
16517 signature: new ECSignature(r, s)
16518 }
16519 }
16520
16521 ECSignature.fromDER = function (buffer) {
16522 var decode = bip66.decode(buffer)
16523 var r = BigInteger.fromDERInteger(decode.r)
16524 var s = BigInteger.fromDERInteger(decode.s)
16525
16526 return new ECSignature(r, s)
16527 }
16528
16529 // BIP62: 1 byte hashType flag (only 0x01, 0x02, 0x03, 0x81, 0x82 and 0x83 are allowed)
16530 ECSignature.parseScriptSignature = function (buffer) {
16531 var hashType = buffer.readUInt8(buffer.length - 1)
16532 var hashTypeMod = hashType & ~0x80
16533
16534 if (hashTypeMod <= 0x00 || hashTypeMod >= 0x04) throw new Error('Invalid hashType ' + hashType)
16535
16536 return {
16537 signature: ECSignature.fromDER(buffer.slice(0, -1)),
16538 hashType: hashType
16539 }
16540 }
16541
16542 ECSignature.prototype.toCompact = function (i, compressed) {
16543 if (compressed) {
16544 i += 4
16545 }
16546
16547 i += 27
16548
16549 var buffer = Buffer.alloc(65)
16550 buffer.writeUInt8(i, 0)
16551 this.r.toBuffer(32).copy(buffer, 1)
16552 this.s.toBuffer(32).copy(buffer, 33)
16553
16554 return buffer
16555 }
16556
16557 ECSignature.prototype.toDER = function () {
16558 var r = Buffer.from(this.r.toDERInteger())
16559 var s = Buffer.from(this.s.toDERInteger())
16560
16561 return bip66.encode(r, s)
16562 }
16563
16564 ECSignature.prototype.toScriptSignature = function (hashType) {
16565 var hashTypeMod = hashType & ~0x80
16566 if (hashTypeMod <= 0 || hashTypeMod >= 4) throw new Error('Invalid hashType ' + hashType)
16567
16568 var hashTypeBuffer = Buffer.alloc(1)
16569 hashTypeBuffer.writeUInt8(hashType, 0)
16570
16571 return Buffer.concat([this.toDER(), hashTypeBuffer])
16572 }
16573
16574 module.exports = ECSignature
16575
16576 }).call(this,require("buffer").Buffer)
16577 },{"./types":78,"bigi":37,"bip66":39,"buffer":4,"typeforce":109}],49:[function(require,module,exports){
16578 var Buffer = require('safe-buffer').Buffer
16579 var base58check = require('bs58check')
16580 var bcrypto = require('./crypto')
16581 var createHmac = require('create-hmac')
16582 var typeforce = require('typeforce')
16583 var types = require('./types')
16584 var NETWORKS = require('./networks')
16585
16586 var BigInteger = require('bigi')
16587 var ECPair = require('./ecpair')
16588
16589 var ecurve = require('ecurve')
16590 var curve = ecurve.getCurveByName('secp256k1')
16591
16592 function HDNode (keyPair, chainCode) {
16593 typeforce(types.tuple('ECPair', types.Buffer256bit), arguments)
16594
16595 if (!keyPair.compressed) throw new TypeError('BIP32 only allows compressed keyPairs')
16596
16597 this.keyPair = keyPair
16598 this.chainCode = chainCode
16599 this.depth = 0
16600 this.index = 0
16601 this.parentFingerprint = 0x00000000
16602 }
16603
16604 HDNode.HIGHEST_BIT = 0x80000000
16605 HDNode.LENGTH = 78
16606 HDNode.MASTER_SECRET = Buffer.from('Bitcoin seed', 'utf8')
16607
16608 HDNode.fromSeedBuffer = function (seed, network) {
16609 typeforce(types.tuple(types.Buffer, types.maybe(types.Network)), arguments)
16610
16611 if (seed.length < 16) throw new TypeError('Seed should be at least 128 bits')
16612 if (seed.length > 64) throw new TypeError('Seed should be at most 512 bits')
16613
16614 var I = createHmac('sha512', HDNode.MASTER_SECRET).update(seed).digest()
16615 var IL = I.slice(0, 32)
16616 var IR = I.slice(32)
16617
16618 // In case IL is 0 or >= n, the master key is invalid
16619 // This is handled by the ECPair constructor
16620 var pIL = BigInteger.fromBuffer(IL)
16621 var keyPair = new ECPair(pIL, null, {
16622 network: network
16623 })
16624
16625 return new HDNode(keyPair, IR)
16626 }
16627
16628 HDNode.fromSeedHex = function (hex, network) {
16629 return HDNode.fromSeedBuffer(Buffer.from(hex, 'hex'), network)
16630 }
16631
16632 HDNode.fromBase58 = function (string, networks) {
16633 var buffer = base58check.decode(string)
16634 if (buffer.length !== 78) throw new Error('Invalid buffer length')
16635
16636 // 4 bytes: version bytes
16637 var version = buffer.readUInt32BE(0)
16638 var network
16639
16640 // list of networks?
16641 if (Array.isArray(networks)) {
16642 network = networks.filter(function (x) {
16643 return version === x.bip32.private ||
16644 version === x.bip32.public
16645 }).pop()
16646
16647 if (!network) throw new Error('Unknown network version')
16648
16649 // otherwise, assume a network object (or default to bitcoin)
16650 } else {
16651 network = networks || NETWORKS.bitcoin
16652 }
16653
16654 if (version !== network.bip32.private &&
16655 version !== network.bip32.public) throw new Error('Invalid network version')
16656
16657 // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ...
16658 var depth = buffer[4]
16659
16660 // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
16661 var parentFingerprint = buffer.readUInt32BE(5)
16662 if (depth === 0) {
16663 if (parentFingerprint !== 0x00000000) throw new Error('Invalid parent fingerprint')
16664 }
16665
16666 // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
16667 // This is encoded in MSB order. (0x00000000 if master key)
16668 var index = buffer.readUInt32BE(9)
16669 if (depth === 0 && index !== 0) throw new Error('Invalid index')
16670
16671 // 32 bytes: the chain code
16672 var chainCode = buffer.slice(13, 45)
16673 var keyPair
16674
16675 // 33 bytes: private key data (0x00 + k)
16676 if (version === network.bip32.private) {
16677 if (buffer.readUInt8(45) !== 0x00) throw new Error('Invalid private key')
16678
16679 var d = BigInteger.fromBuffer(buffer.slice(46, 78))
16680 keyPair = new ECPair(d, null, { network: network })
16681
16682 // 33 bytes: public key data (0x02 + X or 0x03 + X)
16683 } else {
16684 var Q = ecurve.Point.decodeFrom(curve, buffer.slice(45, 78))
16685 // Q.compressed is assumed, if somehow this assumption is broken, `new HDNode` will throw
16686
16687 // Verify that the X coordinate in the public point corresponds to a point on the curve.
16688 // If not, the extended public key is invalid.
16689 curve.validate(Q)
16690
16691 keyPair = new ECPair(null, Q, { network: network })
16692 }
16693
16694 var hd = new HDNode(keyPair, chainCode)
16695 hd.depth = depth
16696 hd.index = index
16697 hd.parentFingerprint = parentFingerprint
16698
16699 return hd
16700 }
16701
16702 HDNode.prototype.getAddress = function () {
16703 return this.keyPair.getAddress()
16704 }
16705
16706 HDNode.prototype.getIdentifier = function () {
16707 return bcrypto.hash160(this.keyPair.getPublicKeyBuffer())
16708 }
16709
16710 HDNode.prototype.getFingerprint = function () {
16711 return this.getIdentifier().slice(0, 4)
16712 }
16713
16714 HDNode.prototype.getNetwork = function () {
16715 return this.keyPair.getNetwork()
16716 }
16717
16718 HDNode.prototype.getPublicKeyBuffer = function () {
16719 return this.keyPair.getPublicKeyBuffer()
16720 }
16721
16722 HDNode.prototype.neutered = function () {
16723 var neuteredKeyPair = new ECPair(null, this.keyPair.Q, {
16724 network: this.keyPair.network
16725 })
16726
16727 var neutered = new HDNode(neuteredKeyPair, this.chainCode)
16728 neutered.depth = this.depth
16729 neutered.index = this.index
16730 neutered.parentFingerprint = this.parentFingerprint
16731
16732 return neutered
16733 }
16734
16735 HDNode.prototype.sign = function (hash) {
16736 return this.keyPair.sign(hash)
16737 }
16738
16739 HDNode.prototype.verify = function (hash, signature) {
16740 return this.keyPair.verify(hash, signature)
16741 }
16742
16743 HDNode.prototype.toBase58 = function (__isPrivate) {
16744 if (__isPrivate !== undefined) throw new TypeError('Unsupported argument in 2.0.0')
16745
16746 // Version
16747 var network = this.keyPair.network
16748 var version = (!this.isNeutered()) ? network.bip32.private : network.bip32.public
16749 var buffer = Buffer.allocUnsafe(78)
16750
16751 // 4 bytes: version bytes
16752 buffer.writeUInt32BE(version, 0)
16753
16754 // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ....
16755 buffer.writeUInt8(this.depth, 4)
16756
16757 // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
16758 buffer.writeUInt32BE(this.parentFingerprint, 5)
16759
16760 // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
16761 // This is encoded in big endian. (0x00000000 if master key)
16762 buffer.writeUInt32BE(this.index, 9)
16763
16764 // 32 bytes: the chain code
16765 this.chainCode.copy(buffer, 13)
16766
16767 // 33 bytes: the public key or private key data
16768 if (!this.isNeutered()) {
16769 // 0x00 + k for private keys
16770 buffer.writeUInt8(0, 45)
16771 this.keyPair.d.toBuffer(32).copy(buffer, 46)
16772
16773 // 33 bytes: the public key
16774 } else {
16775 // X9.62 encoding for public keys
16776 this.keyPair.getPublicKeyBuffer().copy(buffer, 45)
16777 }
16778
16779 return base58check.encode(buffer)
16780 }
16781
16782 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#child-key-derivation-ckd-functions
16783 HDNode.prototype.derive = function (index) {
16784 typeforce(types.UInt32, index)
16785
16786 var isHardened = index >= HDNode.HIGHEST_BIT
16787 var data = Buffer.allocUnsafe(37)
16788
16789 // Hardened child
16790 if (isHardened) {
16791 if (this.isNeutered()) throw new TypeError('Could not derive hardened child key')
16792
16793 // data = 0x00 || ser256(kpar) || ser32(index)
16794 data[0] = 0x00
16795 this.keyPair.d.toBuffer(32).copy(data, 1)
16796 data.writeUInt32BE(index, 33)
16797
16798 // Normal child
16799 } else {
16800 // data = serP(point(kpar)) || ser32(index)
16801 // = serP(Kpar) || ser32(index)
16802 this.keyPair.getPublicKeyBuffer().copy(data, 0)
16803 data.writeUInt32BE(index, 33)
16804 }
16805
16806 var I = createHmac('sha512', this.chainCode).update(data).digest()
16807 var IL = I.slice(0, 32)
16808 var IR = I.slice(32)
16809
16810 var pIL = BigInteger.fromBuffer(IL)
16811
16812 // In case parse256(IL) >= n, proceed with the next value for i
16813 if (pIL.compareTo(curve.n) >= 0) {
16814 return this.derive(index + 1)
16815 }
16816
16817 // Private parent key -> private child key
16818 var derivedKeyPair
16819 if (!this.isNeutered()) {
16820 // ki = parse256(IL) + kpar (mod n)
16821 var ki = pIL.add(this.keyPair.d).mod(curve.n)
16822
16823 // In case ki == 0, proceed with the next value for i
16824 if (ki.signum() === 0) {
16825 return this.derive(index + 1)
16826 }
16827
16828 derivedKeyPair = new ECPair(ki, null, {
16829 network: this.keyPair.network
16830 })
16831
16832 // Public parent key -> public child key
16833 } else {
16834 // Ki = point(parse256(IL)) + Kpar
16835 // = G*IL + Kpar
16836 var Ki = curve.G.multiply(pIL).add(this.keyPair.Q)
16837
16838 // In case Ki is the point at infinity, proceed with the next value for i
16839 if (curve.isInfinity(Ki)) {
16840 return this.derive(index + 1)
16841 }
16842
16843 derivedKeyPair = new ECPair(null, Ki, {
16844 network: this.keyPair.network
16845 })
16846 }
16847
16848 var hd = new HDNode(derivedKeyPair, IR)
16849 hd.depth = this.depth + 1
16850 hd.index = index
16851 hd.parentFingerprint = this.getFingerprint().readUInt32BE(0)
16852
16853 return hd
16854 }
16855
16856 HDNode.prototype.deriveHardened = function (index) {
16857 typeforce(types.UInt31, index)
16858
16859 // Only derives hardened private keys by default
16860 return this.derive(index + HDNode.HIGHEST_BIT)
16861 }
16862
16863 // Private === not neutered
16864 // Public === neutered
16865 HDNode.prototype.isNeutered = function () {
16866 return !(this.keyPair.d)
16867 }
16868
16869 HDNode.prototype.derivePath = function (path) {
16870 typeforce(types.BIP32Path, path)
16871
16872 var splitPath = path.split('/')
16873 if (splitPath[0] === 'm') {
16874 if (this.parentFingerprint) {
16875 throw new Error('Not a master node')
16876 }
16877
16878 splitPath = splitPath.slice(1)
16879 }
16880
16881 return splitPath.reduce(function (prevHd, indexStr) {
16882 var index
16883 if (indexStr.slice(-1) === "'") {
16884 index = parseInt(indexStr.slice(0, -1), 10)
16885 return prevHd.deriveHardened(index)
16886 } else {
16887 index = parseInt(indexStr, 10)
16888 return prevHd.derive(index)
16889 }
16890 }, this)
16891 }
16892
16893 module.exports = HDNode
16894
16895 },{"./crypto":45,"./ecpair":47,"./networks":51,"./types":78,"bigi":37,"bs58check":80,"create-hmac":85,"ecurve":89,"safe-buffer":98,"typeforce":109}],50:[function(require,module,exports){
16896 module.exports = {
16897 Block: require('./block'),
16898 ECPair: require('./ecpair'),
16899 ECSignature: require('./ecsignature'),
16900 HDNode: require('./hdnode'),
16901 Transaction: require('./transaction'),
16902 TransactionBuilder: require('./transaction_builder'),
16903
16904 address: require('./address'),
16905 bufferutils: require('./bufferutils'), // TODO: remove in 4.0.0
16906 crypto: require('./crypto'),
16907 networks: require('./networks'),
16908 opcodes: require('bitcoin-ops'),
16909 script: require('./script')
16910 }
16911
16912 },{"./address":42,"./block":43,"./bufferutils":44,"./crypto":45,"./ecpair":47,"./ecsignature":48,"./hdnode":49,"./networks":51,"./script":52,"./transaction":76,"./transaction_builder":77,"bitcoin-ops":40}],51:[function(require,module,exports){
16913 // https://en.bitcoin.it/wiki/List_of_address_prefixes
16914 // Dogecoin BIP32 is a proposed standard: https://bitcointalk.org/index.php?topic=409731
16915
16916 module.exports = {
16917 bitcoin: {
16918 messagePrefix: '\x18Bitcoin Signed Message:\n',
16919 bip32: {
16920 public: 0x0488b21e,
16921 private: 0x0488ade4
16922 },
16923 pubKeyHash: 0x00,
16924 scriptHash: 0x05,
16925 wif: 0x80
16926 },
16927 testnet: {
16928 messagePrefix: '\x18Bitcoin Signed Message:\n',
16929 bip32: {
16930 public: 0x043587cf,
16931 private: 0x04358394
16932 },
16933 pubKeyHash: 0x6f,
16934 scriptHash: 0xc4,
16935 wif: 0xef
16936 },
16937 litecoin: {
16938 messagePrefix: '\x19Litecoin Signed Message:\n',
16939 bip32: {
16940 public: 0x0488b21e,
16941 private: 0x0488ade4,
16942 },
16943 pubKeyHash: 0x30,
16944 scriptHash: 0x32,
16945 wif: 0xb0
16946 },
16947 litecoinLtub: {
16948 messagePrefix: '\x19Litecoin Signed Message:\n',
16949 bip32: {
16950 public: 0x019da462,
16951 private: 0x019d9cfe
16952 },
16953 pubKeyHash: 0x30,
16954 scriptHash: 0x32,
16955 wif: 0xb0
16956 }
16957 }
16958
16959 },{}],52:[function(require,module,exports){
16960 var Buffer = require('safe-buffer').Buffer
16961 var bip66 = require('bip66')
16962 var pushdata = require('pushdata-bitcoin')
16963 var typeforce = require('typeforce')
16964 var types = require('./types')
16965 var scriptNumber = require('./script_number')
16966
16967 var OPS = require('bitcoin-ops')
16968 var REVERSE_OPS = require('bitcoin-ops/map')
16969 var OP_INT_BASE = OPS.OP_RESERVED // OP_1 - 1
16970
16971 function isOPInt (value) {
16972 return types.Number(value) &&
16973 ((value === OPS.OP_0) ||
16974 (value >= OPS.OP_1 && value <= OPS.OP_16) ||
16975 (value === OPS.OP_1NEGATE))
16976 }
16977
16978 function isPushOnlyChunk (value) {
16979 return types.Buffer(value) || isOPInt(value)
16980 }
16981
16982 function isPushOnly (value) {
16983 return types.Array(value) && value.every(isPushOnlyChunk)
16984 }
16985
16986 function compile (chunks) {
16987 // TODO: remove me
16988 if (Buffer.isBuffer(chunks)) return chunks
16989
16990 typeforce(types.Array, chunks)
16991
16992 var bufferSize = chunks.reduce(function (accum, chunk) {
16993 // data chunk
16994 if (Buffer.isBuffer(chunk)) {
16995 // adhere to BIP62.3, minimal push policy
16996 if (chunk.length === 1 && (chunk[0] === 0x81 || (chunk[0] >= 1 && chunk[0] <= 16))) {
16997 return accum + 1
16998 }
16999
17000 return accum + pushdata.encodingLength(chunk.length) + chunk.length
17001 }
17002
17003 // opcode
17004 return accum + 1
17005 }, 0.0)
17006
17007 var buffer = Buffer.allocUnsafe(bufferSize)
17008 var offset = 0
17009
17010 chunks.forEach(function (chunk) {
17011 // data chunk
17012 if (Buffer.isBuffer(chunk)) {
17013 // adhere to BIP62.3, minimal push policy
17014 if (chunk.length === 1 && chunk[0] >= 1 && chunk[0] <= 16) {
17015 var opcode = OP_INT_BASE + chunk[0]
17016 buffer.writeUInt8(opcode, offset)
17017 offset += 1
17018 return
17019 }
17020
17021 if (chunk.length === 1 && chunk[0] === 0x81) {
17022 buffer.writeUInt8(OPS.OP_1NEGATE, offset)
17023 offset += 1
17024 return
17025 }
17026
17027 offset += pushdata.encode(buffer, chunk.length, offset)
17028
17029 chunk.copy(buffer, offset)
17030 offset += chunk.length
17031
17032 // opcode
17033 } else {
17034 buffer.writeUInt8(chunk, offset)
17035 offset += 1
17036 }
17037 })
17038
17039 if (offset !== buffer.length) throw new Error('Could not decode chunks')
17040 return buffer
17041 }
17042
17043 function decompile (buffer) {
17044 // TODO: remove me
17045 if (types.Array(buffer)) return buffer
17046
17047 typeforce(types.Buffer, buffer)
17048
17049 var chunks = []
17050 var i = 0
17051
17052 while (i < buffer.length) {
17053 var opcode = buffer[i]
17054
17055 // data chunk
17056 if ((opcode > OPS.OP_0) && (opcode <= OPS.OP_PUSHDATA4)) {
17057 var d = pushdata.decode(buffer, i)
17058
17059 // did reading a pushDataInt fail? empty script
17060 if (d === null) return []
17061 i += d.size
17062
17063 // attempt to read too much data? empty script
17064 if (i + d.number > buffer.length) return []
17065
17066 var data = buffer.slice(i, i + d.number)
17067 i += d.number
17068
17069 chunks.push(data)
17070
17071 // opcode
17072 } else {
17073 chunks.push(opcode)
17074
17075 i += 1
17076 }
17077 }
17078
17079 return chunks
17080 }
17081
17082 function toASM (chunks) {
17083 if (Buffer.isBuffer(chunks)) {
17084 chunks = decompile(chunks)
17085 }
17086
17087 return chunks.map(function (chunk) {
17088 // data?
17089 if (Buffer.isBuffer(chunk)) return chunk.toString('hex')
17090
17091 // opcode!
17092 return REVERSE_OPS[chunk]
17093 }).join(' ')
17094 }
17095
17096 function fromASM (asm) {
17097 typeforce(types.String, asm)
17098
17099 return compile(asm.split(' ').map(function (chunkStr) {
17100 // opcode?
17101 if (OPS[chunkStr] !== undefined) return OPS[chunkStr]
17102 typeforce(types.Hex, chunkStr)
17103
17104 // data!
17105 return Buffer.from(chunkStr, 'hex')
17106 }))
17107 }
17108
17109 function toStack (chunks) {
17110 chunks = decompile(chunks)
17111 typeforce(isPushOnly, chunks)
17112
17113 return chunks.map(function (op) {
17114 if (Buffer.isBuffer(op)) return op
17115 if (op === OPS.OP_0) return Buffer.allocUnsafe(0)
17116
17117 return scriptNumber.encode(op - OP_INT_BASE)
17118 })
17119 }
17120
17121 function isCanonicalPubKey (buffer) {
17122 if (!Buffer.isBuffer(buffer)) return false
17123 if (buffer.length < 33) return false
17124
17125 switch (buffer[0]) {
17126 case 0x02:
17127 case 0x03:
17128 return buffer.length === 33
17129 case 0x04:
17130 return buffer.length === 65
17131 }
17132
17133 return false
17134 }
17135
17136 function isDefinedHashType (hashType) {
17137 var hashTypeMod = hashType & ~0x80
17138
17139 // return hashTypeMod > SIGHASH_ALL && hashTypeMod < SIGHASH_SINGLE
17140 return hashTypeMod > 0x00 && hashTypeMod < 0x04
17141 }
17142
17143 function isCanonicalSignature (buffer) {
17144 if (!Buffer.isBuffer(buffer)) return false
17145 if (!isDefinedHashType(buffer[buffer.length - 1])) return false
17146
17147 return bip66.check(buffer.slice(0, -1))
17148 }
17149
17150 module.exports = {
17151 compile: compile,
17152 decompile: decompile,
17153 fromASM: fromASM,
17154 toASM: toASM,
17155 toStack: toStack,
17156
17157 number: require('./script_number'),
17158
17159 isCanonicalPubKey: isCanonicalPubKey,
17160 isCanonicalSignature: isCanonicalSignature,
17161 isPushOnly: isPushOnly,
17162 isDefinedHashType: isDefinedHashType
17163 }
17164
17165 var templates = require('./templates')
17166 for (var key in templates) {
17167 module.exports[key] = templates[key]
17168 }
17169
17170 },{"./script_number":53,"./templates":54,"./types":78,"bip66":39,"bitcoin-ops":40,"bitcoin-ops/map":41,"pushdata-bitcoin":95,"safe-buffer":98,"typeforce":109}],53:[function(require,module,exports){
17171 var Buffer = require('safe-buffer').Buffer
17172
17173 function decode (buffer, maxLength, minimal) {
17174 maxLength = maxLength || 4
17175 minimal = minimal === undefined ? true : minimal
17176
17177 var length = buffer.length
17178 if (length === 0) return 0
17179 if (length > maxLength) throw new TypeError('Script number overflow')
17180 if (minimal) {
17181 if ((buffer[length - 1] & 0x7f) === 0) {
17182 if (length <= 1 || (buffer[length - 2] & 0x80) === 0) throw new Error('Non-minimally encoded script number')
17183 }
17184 }
17185
17186 // 40-bit
17187 if (length === 5) {
17188 var a = buffer.readUInt32LE(0)
17189 var b = buffer.readUInt8(4)
17190
17191 if (b & 0x80) return -(((b & ~0x80) * 0x100000000) + a)
17192 return (b * 0x100000000) + a
17193 }
17194
17195 var result = 0
17196
17197 // 32-bit / 24-bit / 16-bit / 8-bit
17198 for (var i = 0; i < length; ++i) {
17199 result |= buffer[i] << (8 * i)
17200 }
17201
17202 if (buffer[length - 1] & 0x80) return -(result & ~(0x80 << (8 * (length - 1))))
17203 return result
17204 }
17205
17206 function scriptNumSize (i) {
17207 return i > 0x7fffffff ? 5
17208 : i > 0x7fffff ? 4
17209 : i > 0x7fff ? 3
17210 : i > 0x7f ? 2
17211 : i > 0x00 ? 1
17212 : 0
17213 }
17214
17215 function encode (number) {
17216 var value = Math.abs(number)
17217 var size = scriptNumSize(value)
17218 var buffer = Buffer.allocUnsafe(size)
17219 var negative = number < 0
17220
17221 for (var i = 0; i < size; ++i) {
17222 buffer.writeUInt8(value & 0xff, i)
17223 value >>= 8
17224 }
17225
17226 if (buffer[size - 1] & 0x80) {
17227 buffer.writeUInt8(negative ? 0x80 : 0x00, size - 1)
17228 } else if (negative) {
17229 buffer[size - 1] |= 0x80
17230 }
17231
17232 return buffer
17233 }
17234
17235 module.exports = {
17236 decode: decode,
17237 encode: encode
17238 }
17239
17240 },{"safe-buffer":98}],54:[function(require,module,exports){
17241 var decompile = require('../script').decompile
17242 var multisig = require('./multisig')
17243 var nullData = require('./nulldata')
17244 var pubKey = require('./pubkey')
17245 var pubKeyHash = require('./pubkeyhash')
17246 var scriptHash = require('./scripthash')
17247 var witnessPubKeyHash = require('./witnesspubkeyhash')
17248 var witnessScriptHash = require('./witnessscripthash')
17249 var witnessCommitment = require('./witnesscommitment')
17250
17251 var types = {
17252 MULTISIG: 'multisig',
17253 NONSTANDARD: 'nonstandard',
17254 NULLDATA: 'nulldata',
17255 P2PK: 'pubkey',
17256 P2PKH: 'pubkeyhash',
17257 P2SH: 'scripthash',
17258 P2WPKH: 'witnesspubkeyhash',
17259 P2WSH: 'witnessscripthash',
17260 WITNESS_COMMITMENT: 'witnesscommitment'
17261 }
17262
17263 function classifyOutput (script) {
17264 if (witnessPubKeyHash.output.check(script)) return types.P2WPKH
17265 if (witnessScriptHash.output.check(script)) return types.P2WSH
17266 if (pubKeyHash.output.check(script)) return types.P2PKH
17267 if (scriptHash.output.check(script)) return types.P2SH
17268
17269 // XXX: optimization, below functions .decompile before use
17270 var chunks = decompile(script)
17271 if (multisig.output.check(chunks)) return types.MULTISIG
17272 if (pubKey.output.check(chunks)) return types.P2PK
17273 if (witnessCommitment.output.check(chunks)) return types.WITNESS_COMMITMENT
17274 if (nullData.output.check(chunks)) return types.NULLDATA
17275
17276 return types.NONSTANDARD
17277 }
17278
17279 function classifyInput (script, allowIncomplete) {
17280 // XXX: optimization, below functions .decompile before use
17281 var chunks = decompile(script)
17282
17283 if (pubKeyHash.input.check(chunks)) return types.P2PKH
17284 if (scriptHash.input.check(chunks, allowIncomplete)) return types.P2SH
17285 if (multisig.input.check(chunks, allowIncomplete)) return types.MULTISIG
17286 if (pubKey.input.check(chunks)) return types.P2PK
17287
17288 return types.NONSTANDARD
17289 }
17290
17291 function classifyWitness (script, allowIncomplete) {
17292 // XXX: optimization, below functions .decompile before use
17293 var chunks = decompile(script)
17294
17295 if (witnessPubKeyHash.input.check(chunks)) return types.P2WPKH
17296 if (witnessScriptHash.input.check(chunks, allowIncomplete)) return types.P2WSH
17297
17298 return types.NONSTANDARD
17299 }
17300
17301 module.exports = {
17302 classifyInput: classifyInput,
17303 classifyOutput: classifyOutput,
17304 classifyWitness: classifyWitness,
17305 multisig: multisig,
17306 nullData: nullData,
17307 pubKey: pubKey,
17308 pubKeyHash: pubKeyHash,
17309 scriptHash: scriptHash,
17310 witnessPubKeyHash: witnessPubKeyHash,
17311 witnessScriptHash: witnessScriptHash,
17312 witnessCommitment: witnessCommitment,
17313 types: types
17314 }
17315
17316 },{"../script":52,"./multisig":55,"./nulldata":58,"./pubkey":59,"./pubkeyhash":62,"./scripthash":65,"./witnesscommitment":68,"./witnesspubkeyhash":70,"./witnessscripthash":73}],55:[function(require,module,exports){
17317 module.exports = {
17318 input: require('./input'),
17319 output: require('./output')
17320 }
17321
17322 },{"./input":56,"./output":57}],56:[function(require,module,exports){
17323 // OP_0 [signatures ...]
17324
17325 var Buffer = require('safe-buffer').Buffer
17326 var bscript = require('../../script')
17327 var typeforce = require('typeforce')
17328 var OPS = require('bitcoin-ops')
17329
17330 function partialSignature (value) {
17331 return value === OPS.OP_0 || bscript.isCanonicalSignature(value)
17332 }
17333
17334 function check (script, allowIncomplete) {
17335 var chunks = bscript.decompile(script)
17336 if (chunks.length < 2) return false
17337 if (chunks[0] !== OPS.OP_0) return false
17338
17339 if (allowIncomplete) {
17340 return chunks.slice(1).every(partialSignature)
17341 }
17342
17343 return chunks.slice(1).every(bscript.isCanonicalSignature)
17344 }
17345 check.toJSON = function () { return 'multisig input' }
17346
17347 var EMPTY_BUFFER = Buffer.allocUnsafe(0)
17348
17349 function encodeStack (signatures, scriptPubKey) {
17350 typeforce([partialSignature], signatures)
17351
17352 if (scriptPubKey) {
17353 var scriptData = bscript.multisig.output.decode(scriptPubKey)
17354
17355 if (signatures.length < scriptData.m) {
17356 throw new TypeError('Not enough signatures provided')
17357 }
17358
17359 if (signatures.length > scriptData.pubKeys.length) {
17360 throw new TypeError('Too many signatures provided')
17361 }
17362 }
17363
17364 return [].concat(EMPTY_BUFFER, signatures)
17365 }
17366
17367 function encode (signatures, scriptPubKey) {
17368 return bscript.compile(encodeStack(signatures, scriptPubKey))
17369 }
17370
17371 function decodeStack (stack, allowIncomplete) {
17372 typeforce(check, stack, allowIncomplete)
17373 return stack.slice(1)
17374 }
17375
17376 function decode (buffer, allowIncomplete) {
17377 var stack = bscript.decompile(buffer)
17378 return decodeStack(stack, allowIncomplete)
17379 }
17380
17381 module.exports = {
17382 check: check,
17383 decode: decode,
17384 decodeStack: decodeStack,
17385 encode: encode,
17386 encodeStack: encodeStack
17387 }
17388
17389 },{"../../script":52,"bitcoin-ops":40,"safe-buffer":98,"typeforce":109}],57:[function(require,module,exports){
17390 // m [pubKeys ...] n OP_CHECKMULTISIG
17391
17392 var bscript = require('../../script')
17393 var types = require('../../types')
17394 var typeforce = require('typeforce')
17395 var OPS = require('bitcoin-ops')
17396 var OP_INT_BASE = OPS.OP_RESERVED // OP_1 - 1
17397
17398 function check (script, allowIncomplete) {
17399 var chunks = bscript.decompile(script)
17400
17401 if (chunks.length < 4) return false
17402 if (chunks[chunks.length - 1] !== OPS.OP_CHECKMULTISIG) return false
17403 if (!types.Number(chunks[0])) return false
17404 if (!types.Number(chunks[chunks.length - 2])) return false
17405 var m = chunks[0] - OP_INT_BASE
17406 var n = chunks[chunks.length - 2] - OP_INT_BASE
17407
17408 if (m <= 0) return false
17409 if (n > 16) return false
17410 if (m > n) return false
17411 if (n !== chunks.length - 3) return false
17412 if (allowIncomplete) return true
17413
17414 var keys = chunks.slice(1, -2)
17415 return keys.every(bscript.isCanonicalPubKey)
17416 }
17417 check.toJSON = function () { return 'multi-sig output' }
17418
17419 function encode (m, pubKeys) {
17420 typeforce({
17421 m: types.Number,
17422 pubKeys: [bscript.isCanonicalPubKey]
17423 }, {
17424 m: m,
17425 pubKeys: pubKeys
17426 })
17427
17428 var n = pubKeys.length
17429 if (n < m) throw new TypeError('Not enough pubKeys provided')
17430
17431 return bscript.compile([].concat(
17432 OP_INT_BASE + m,
17433 pubKeys,
17434 OP_INT_BASE + n,
17435 OPS.OP_CHECKMULTISIG
17436 ))
17437 }
17438
17439 function decode (buffer, allowIncomplete) {
17440 var chunks = bscript.decompile(buffer)
17441 typeforce(check, chunks, allowIncomplete)
17442
17443 return {
17444 m: chunks[0] - OP_INT_BASE,
17445 pubKeys: chunks.slice(1, -2)
17446 }
17447 }
17448
17449 module.exports = {
17450 check: check,
17451 decode: decode,
17452 encode: encode
17453 }
17454
17455 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],58:[function(require,module,exports){
17456 // OP_RETURN {data}
17457
17458 var bscript = require('../script')
17459 var types = require('../types')
17460 var typeforce = require('typeforce')
17461 var OPS = require('bitcoin-ops')
17462
17463 function check (script) {
17464 var buffer = bscript.compile(script)
17465
17466 return buffer.length > 1 &&
17467 buffer[0] === OPS.OP_RETURN
17468 }
17469 check.toJSON = function () { return 'null data output' }
17470
17471 function encode (data) {
17472 typeforce(types.Buffer, data)
17473
17474 return bscript.compile([OPS.OP_RETURN, data])
17475 }
17476
17477 function decode (buffer) {
17478 typeforce(check, buffer)
17479
17480 return buffer.slice(2)
17481 }
17482
17483 module.exports = {
17484 output: {
17485 check: check,
17486 decode: decode,
17487 encode: encode
17488 }
17489 }
17490
17491 },{"../script":52,"../types":78,"bitcoin-ops":40,"typeforce":109}],59:[function(require,module,exports){
17492 arguments[4][55][0].apply(exports,arguments)
17493 },{"./input":60,"./output":61,"dup":55}],60:[function(require,module,exports){
17494 // {signature}
17495
17496 var bscript = require('../../script')
17497 var types = require('../../types')
17498 var typeforce = require('typeforce')
17499
17500 function check (script) {
17501 var chunks = bscript.decompile(script)
17502
17503 return chunks.length === 1 &&
17504 bscript.isCanonicalSignature(chunks[0])
17505 }
17506 check.toJSON = function () { return 'pubKey input' }
17507
17508 function encodeStack (signature) {
17509 typeforce(types.Buffer, signature)
17510 return [signature]
17511 }
17512
17513 function encode (signature) {
17514 return bscript.compile(encodeStack(signature))
17515 }
17516
17517 function decodeStack (stack) {
17518 typeforce(check, stack)
17519 return stack[0]
17520 }
17521
17522 function decode (buffer) {
17523 var stack = bscript.decompile(buffer)
17524 return decodeStack(stack)
17525 }
17526
17527 module.exports = {
17528 check: check,
17529 decode: decode,
17530 decodeStack: decodeStack,
17531 encode: encode,
17532 encodeStack: encodeStack
17533 }
17534
17535 },{"../../script":52,"../../types":78,"typeforce":109}],61:[function(require,module,exports){
17536 // {pubKey} OP_CHECKSIG
17537
17538 var bscript = require('../../script')
17539 var typeforce = require('typeforce')
17540 var OPS = require('bitcoin-ops')
17541
17542 function check (script) {
17543 var chunks = bscript.decompile(script)
17544
17545 return chunks.length === 2 &&
17546 bscript.isCanonicalPubKey(chunks[0]) &&
17547 chunks[1] === OPS.OP_CHECKSIG
17548 }
17549 check.toJSON = function () { return 'pubKey output' }
17550
17551 function encode (pubKey) {
17552 typeforce(bscript.isCanonicalPubKey, pubKey)
17553
17554 return bscript.compile([pubKey, OPS.OP_CHECKSIG])
17555 }
17556
17557 function decode (buffer) {
17558 var chunks = bscript.decompile(buffer)
17559 typeforce(check, chunks)
17560
17561 return chunks[0]
17562 }
17563
17564 module.exports = {
17565 check: check,
17566 decode: decode,
17567 encode: encode
17568 }
17569
17570 },{"../../script":52,"bitcoin-ops":40,"typeforce":109}],62:[function(require,module,exports){
17571 arguments[4][55][0].apply(exports,arguments)
17572 },{"./input":63,"./output":64,"dup":55}],63:[function(require,module,exports){
17573 // {signature} {pubKey}
17574
17575 var bscript = require('../../script')
17576 var types = require('../../types')
17577 var typeforce = require('typeforce')
17578
17579 function check (script) {
17580 var chunks = bscript.decompile(script)
17581
17582 return chunks.length === 2 &&
17583 bscript.isCanonicalSignature(chunks[0]) &&
17584 bscript.isCanonicalPubKey(chunks[1])
17585 }
17586 check.toJSON = function () { return 'pubKeyHash input' }
17587
17588 function encodeStack (signature, pubKey) {
17589 typeforce({
17590 signature: types.Buffer, pubKey: types.Buffer
17591 }, {
17592 signature: signature, pubKey: pubKey
17593 })
17594
17595 return [signature, pubKey]
17596 }
17597
17598 function encode (signature, pubKey) {
17599 return bscript.compile(encodeStack(signature, pubKey))
17600 }
17601
17602 function decodeStack (stack) {
17603 typeforce(check, stack)
17604
17605 return {
17606 signature: stack[0],
17607 pubKey: stack[1]
17608 }
17609 }
17610
17611 function decode (buffer) {
17612 var stack = bscript.decompile(buffer)
17613 return decodeStack(stack)
17614 }
17615
17616 module.exports = {
17617 check: check,
17618 decode: decode,
17619 decodeStack: decodeStack,
17620 encode: encode,
17621 encodeStack: encodeStack
17622 }
17623
17624 },{"../../script":52,"../../types":78,"typeforce":109}],64:[function(require,module,exports){
17625 // OP_DUP OP_HASH160 {pubKeyHash} OP_EQUALVERIFY OP_CHECKSIG
17626
17627 var bscript = require('../../script')
17628 var types = require('../../types')
17629 var typeforce = require('typeforce')
17630 var OPS = require('bitcoin-ops')
17631
17632 function check (script) {
17633 var buffer = bscript.compile(script)
17634
17635 return buffer.length === 25 &&
17636 buffer[0] === OPS.OP_DUP &&
17637 buffer[1] === OPS.OP_HASH160 &&
17638 buffer[2] === 0x14 &&
17639 buffer[23] === OPS.OP_EQUALVERIFY &&
17640 buffer[24] === OPS.OP_CHECKSIG
17641 }
17642 check.toJSON = function () { return 'pubKeyHash output' }
17643
17644 function encode (pubKeyHash) {
17645 typeforce(types.Hash160bit, pubKeyHash)
17646
17647 return bscript.compile([
17648 OPS.OP_DUP,
17649 OPS.OP_HASH160,
17650 pubKeyHash,
17651 OPS.OP_EQUALVERIFY,
17652 OPS.OP_CHECKSIG
17653 ])
17654 }
17655
17656 function decode (buffer) {
17657 typeforce(check, buffer)
17658
17659 return buffer.slice(3, 23)
17660 }
17661
17662 module.exports = {
17663 check: check,
17664 decode: decode,
17665 encode: encode
17666 }
17667
17668 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],65:[function(require,module,exports){
17669 arguments[4][55][0].apply(exports,arguments)
17670 },{"./input":66,"./output":67,"dup":55}],66:[function(require,module,exports){
17671 // <scriptSig> {serialized scriptPubKey script}
17672
17673 var Buffer = require('safe-buffer').Buffer
17674 var bscript = require('../../script')
17675 var typeforce = require('typeforce')
17676
17677 function check (script, allowIncomplete) {
17678 var chunks = bscript.decompile(script)
17679 if (chunks.length < 1) return false
17680
17681 var lastChunk = chunks[chunks.length - 1]
17682 if (!Buffer.isBuffer(lastChunk)) return false
17683
17684 var scriptSigChunks = bscript.decompile(bscript.compile(chunks.slice(0, -1)))
17685 var redeemScriptChunks = bscript.decompile(lastChunk)
17686
17687 // is redeemScript a valid script?
17688 if (redeemScriptChunks.length === 0) return false
17689
17690 // is redeemScriptSig push only?
17691 if (!bscript.isPushOnly(scriptSigChunks)) return false
17692
17693 var inputType = bscript.classifyInput(scriptSigChunks, allowIncomplete)
17694 var outputType = bscript.classifyOutput(redeemScriptChunks)
17695 if (chunks.length === 1) {
17696 return outputType === bscript.types.P2WSH || outputType === bscript.types.P2WPKH
17697 }
17698 return inputType === outputType
17699 }
17700 check.toJSON = function () { return 'scriptHash input' }
17701
17702 function encodeStack (redeemScriptStack, redeemScript) {
17703 var serializedScriptPubKey = bscript.compile(redeemScript)
17704
17705 return [].concat(redeemScriptStack, serializedScriptPubKey)
17706 }
17707
17708 function encode (redeemScriptSig, redeemScript) {
17709 var redeemScriptStack = bscript.decompile(redeemScriptSig)
17710
17711 return bscript.compile(encodeStack(redeemScriptStack, redeemScript))
17712 }
17713
17714 function decodeStack (stack) {
17715 typeforce(check, stack)
17716
17717 return {
17718 redeemScriptStack: stack.slice(0, -1),
17719 redeemScript: stack[stack.length - 1]
17720 }
17721 }
17722
17723 function decode (buffer) {
17724 var stack = bscript.decompile(buffer)
17725 var result = decodeStack(stack)
17726 result.redeemScriptSig = bscript.compile(result.redeemScriptStack)
17727 delete result.redeemScriptStack
17728 return result
17729 }
17730
17731 module.exports = {
17732 check: check,
17733 decode: decode,
17734 decodeStack: decodeStack,
17735 encode: encode,
17736 encodeStack: encodeStack
17737 }
17738
17739 },{"../../script":52,"safe-buffer":98,"typeforce":109}],67:[function(require,module,exports){
17740 // OP_HASH160 {scriptHash} OP_EQUAL
17741
17742 var bscript = require('../../script')
17743 var types = require('../../types')
17744 var typeforce = require('typeforce')
17745 var OPS = require('bitcoin-ops')
17746
17747 function check (script) {
17748 var buffer = bscript.compile(script)
17749
17750 return buffer.length === 23 &&
17751 buffer[0] === OPS.OP_HASH160 &&
17752 buffer[1] === 0x14 &&
17753 buffer[22] === OPS.OP_EQUAL
17754 }
17755 check.toJSON = function () { return 'scriptHash output' }
17756
17757 function encode (scriptHash) {
17758 typeforce(types.Hash160bit, scriptHash)
17759
17760 return bscript.compile([OPS.OP_HASH160, scriptHash, OPS.OP_EQUAL])
17761 }
17762
17763 function decode (buffer) {
17764 typeforce(check, buffer)
17765
17766 return buffer.slice(2, 22)
17767 }
17768
17769 module.exports = {
17770 check: check,
17771 decode: decode,
17772 encode: encode
17773 }
17774
17775 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],68:[function(require,module,exports){
17776 module.exports = {
17777 output: require('./output')
17778 }
17779
17780 },{"./output":69}],69:[function(require,module,exports){
17781 // OP_RETURN {aa21a9ed} {commitment}
17782
17783 var Buffer = require('safe-buffer').Buffer
17784 var bscript = require('../../script')
17785 var types = require('../../types')
17786 var typeforce = require('typeforce')
17787 var OPS = require('bitcoin-ops')
17788
17789 var HEADER = Buffer.from('aa21a9ed', 'hex')
17790
17791 function check (script) {
17792 var buffer = bscript.compile(script)
17793
17794 return buffer.length > 37 &&
17795 buffer[0] === OPS.OP_RETURN &&
17796 buffer[1] === 0x24 &&
17797 buffer.slice(2, 6).equals(HEADER)
17798 }
17799
17800 check.toJSON = function () { return 'Witness commitment output' }
17801
17802 function encode (commitment) {
17803 typeforce(types.Hash256bit, commitment)
17804
17805 var buffer = Buffer.allocUnsafe(36)
17806 HEADER.copy(buffer, 0)
17807 commitment.copy(buffer, 4)
17808
17809 return bscript.compile([OPS.OP_RETURN, buffer])
17810 }
17811
17812 function decode (buffer) {
17813 typeforce(check, buffer)
17814
17815 return bscript.decompile(buffer)[1].slice(4, 36)
17816 }
17817
17818 module.exports = {
17819 check: check,
17820 decode: decode,
17821 encode: encode
17822 }
17823
17824 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"safe-buffer":98,"typeforce":109}],70:[function(require,module,exports){
17825 arguments[4][55][0].apply(exports,arguments)
17826 },{"./input":71,"./output":72,"dup":55}],71:[function(require,module,exports){
17827 // {signature} {pubKey}
17828
17829 var pkh = require('../pubkeyhash/input')
17830
17831 module.exports = {
17832 check: pkh.check,
17833 decodeStack: pkh.decodeStack,
17834 encodeStack: pkh.encodeStack
17835 }
17836
17837 },{"../pubkeyhash/input":63}],72:[function(require,module,exports){
17838 // OP_0 {pubKeyHash}
17839
17840 var bscript = require('../../script')
17841 var types = require('../../types')
17842 var typeforce = require('typeforce')
17843 var OPS = require('bitcoin-ops')
17844
17845 function check (script) {
17846 var buffer = bscript.compile(script)
17847
17848 return buffer.length === 22 &&
17849 buffer[0] === OPS.OP_0 &&
17850 buffer[1] === 0x14
17851 }
17852 check.toJSON = function () { return 'Witness pubKeyHash output' }
17853
17854 function encode (pubKeyHash) {
17855 typeforce(types.Hash160bit, pubKeyHash)
17856
17857 return bscript.compile([OPS.OP_0, pubKeyHash])
17858 }
17859
17860 function decode (buffer) {
17861 typeforce(check, buffer)
17862
17863 return buffer.slice(2)
17864 }
17865
17866 module.exports = {
17867 check: check,
17868 decode: decode,
17869 encode: encode
17870 }
17871
17872 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],73:[function(require,module,exports){
17873 arguments[4][55][0].apply(exports,arguments)
17874 },{"./input":74,"./output":75,"dup":55}],74:[function(require,module,exports){
17875 // {signature} {pubKey}
17876
17877 var p2sh = require('../scripthash/input')
17878
17879 module.exports = {
17880 check: p2sh.check,
17881 decodeStack: p2sh.decodeStack,
17882 encodeStack: p2sh.encodeStack
17883 }
17884
17885 },{"../scripthash/input":66}],75:[function(require,module,exports){
17886 // OP_0 {scriptHash}
17887
17888 var bscript = require('../../script')
17889 var types = require('../../types')
17890 var typeforce = require('typeforce')
17891 var OPS = require('bitcoin-ops')
17892
17893 function check (script) {
17894 var buffer = bscript.compile(script)
17895
17896 return buffer.length === 34 &&
17897 buffer[0] === OPS.OP_0 &&
17898 buffer[1] === 0x20
17899 }
17900 check.toJSON = function () { return 'Witness scriptHash output' }
17901
17902 function encode (scriptHash) {
17903 typeforce(types.Hash256bit, scriptHash)
17904
17905 return bscript.compile([OPS.OP_0, scriptHash])
17906 }
17907
17908 function decode (buffer) {
17909 typeforce(check, buffer)
17910
17911 return buffer.slice(2)
17912 }
17913
17914 module.exports = {
17915 check: check,
17916 decode: decode,
17917 encode: encode
17918 }
17919
17920 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],76:[function(require,module,exports){
17921 var Buffer = require('safe-buffer').Buffer
17922 var bcrypto = require('./crypto')
17923 var bscript = require('./script')
17924 var bufferutils = require('./bufferutils')
17925 var opcodes = require('bitcoin-ops')
17926 var typeforce = require('typeforce')
17927 var types = require('./types')
17928 var varuint = require('varuint-bitcoin')
17929
17930 function varSliceSize (someScript) {
17931 var length = someScript.length
17932
17933 return varuint.encodingLength(length) + length
17934 }
17935
17936 function vectorSize (someVector) {
17937 var length = someVector.length
17938
17939 return varuint.encodingLength(length) + someVector.reduce(function (sum, witness) {
17940 return sum + varSliceSize(witness)
17941 }, 0)
17942 }
17943
17944 function Transaction () {
17945 this.version = 1
17946 this.locktime = 0
17947 this.ins = []
17948 this.outs = []
17949 }
17950
17951 Transaction.DEFAULT_SEQUENCE = 0xffffffff
17952 Transaction.SIGHASH_ALL = 0x01
17953 Transaction.SIGHASH_NONE = 0x02
17954 Transaction.SIGHASH_SINGLE = 0x03
17955 Transaction.SIGHASH_ANYONECANPAY = 0x80
17956 Transaction.ADVANCED_TRANSACTION_MARKER = 0x00
17957 Transaction.ADVANCED_TRANSACTION_FLAG = 0x01
17958
17959 var EMPTY_SCRIPT = Buffer.allocUnsafe(0)
17960 var EMPTY_WITNESS = []
17961 var ZERO = Buffer.from('0000000000000000000000000000000000000000000000000000000000000000', 'hex')
17962 var ONE = Buffer.from('0000000000000000000000000000000000000000000000000000000000000001', 'hex')
17963 var VALUE_UINT64_MAX = Buffer.from('ffffffffffffffff', 'hex')
17964 var BLANK_OUTPUT = {
17965 script: EMPTY_SCRIPT,
17966 valueBuffer: VALUE_UINT64_MAX
17967 }
17968
17969 Transaction.fromBuffer = function (buffer, __noStrict) {
17970 var offset = 0
17971 function readSlice (n) {
17972 offset += n
17973 return buffer.slice(offset - n, offset)
17974 }
17975
17976 function readUInt32 () {
17977 var i = buffer.readUInt32LE(offset)
17978 offset += 4
17979 return i
17980 }
17981
17982 function readInt32 () {
17983 var i = buffer.readInt32LE(offset)
17984 offset += 4
17985 return i
17986 }
17987
17988 function readUInt64 () {
17989 var i = bufferutils.readUInt64LE(buffer, offset)
17990 offset += 8
17991 return i
17992 }
17993
17994 function readVarInt () {
17995 var vi = varuint.decode(buffer, offset)
17996 offset += varuint.decode.bytes
17997 return vi
17998 }
17999
18000 function readVarSlice () {
18001 return readSlice(readVarInt())
18002 }
18003
18004 function readVector () {
18005 var count = readVarInt()
18006 var vector = []
18007 for (var i = 0; i < count; i++) vector.push(readVarSlice())
18008 return vector
18009 }
18010
18011 var tx = new Transaction()
18012 tx.version = readInt32()
18013
18014 var marker = buffer.readUInt8(offset)
18015 var flag = buffer.readUInt8(offset + 1)
18016
18017 var hasWitnesses = false
18018 if (marker === Transaction.ADVANCED_TRANSACTION_MARKER &&
18019 flag === Transaction.ADVANCED_TRANSACTION_FLAG) {
18020 offset += 2
18021 hasWitnesses = true
18022 }
18023
18024 var vinLen = readVarInt()
18025 for (var i = 0; i < vinLen; ++i) {
18026 tx.ins.push({
18027 hash: readSlice(32),
18028 index: readUInt32(),
18029 script: readVarSlice(),
18030 sequence: readUInt32(),
18031 witness: EMPTY_WITNESS
18032 })
18033 }
18034
18035 var voutLen = readVarInt()
18036 for (i = 0; i < voutLen; ++i) {
18037 tx.outs.push({
18038 value: readUInt64(),
18039 script: readVarSlice()
18040 })
18041 }
18042
18043 if (hasWitnesses) {
18044 for (i = 0; i < vinLen; ++i) {
18045 tx.ins[i].witness = readVector()
18046 }
18047
18048 // was this pointless?
18049 if (!tx.hasWitnesses()) throw new Error('Transaction has superfluous witness data')
18050 }
18051
18052 tx.locktime = readUInt32()
18053
18054 if (__noStrict) return tx
18055 if (offset !== buffer.length) throw new Error('Transaction has unexpected data')
18056
18057 return tx
18058 }
18059
18060 Transaction.fromHex = function (hex) {
18061 return Transaction.fromBuffer(Buffer.from(hex, 'hex'))
18062 }
18063
18064 Transaction.isCoinbaseHash = function (buffer) {
18065 typeforce(types.Hash256bit, buffer)
18066 for (var i = 0; i < 32; ++i) {
18067 if (buffer[i] !== 0) return false
18068 }
18069 return true
18070 }
18071
18072 Transaction.prototype.isCoinbase = function () {
18073 return this.ins.length === 1 && Transaction.isCoinbaseHash(this.ins[0].hash)
18074 }
18075
18076 Transaction.prototype.addInput = function (hash, index, sequence, scriptSig) {
18077 typeforce(types.tuple(
18078 types.Hash256bit,
18079 types.UInt32,
18080 types.maybe(types.UInt32),
18081 types.maybe(types.Buffer)
18082 ), arguments)
18083
18084 if (types.Null(sequence)) {
18085 sequence = Transaction.DEFAULT_SEQUENCE
18086 }
18087
18088 // Add the input and return the input's index
18089 return (this.ins.push({
18090 hash: hash,
18091 index: index,
18092 script: scriptSig || EMPTY_SCRIPT,
18093 sequence: sequence,
18094 witness: EMPTY_WITNESS
18095 }) - 1)
18096 }
18097
18098 Transaction.prototype.addOutput = function (scriptPubKey, value) {
18099 typeforce(types.tuple(types.Buffer, types.Satoshi), arguments)
18100
18101 // Add the output and return the output's index
18102 return (this.outs.push({
18103 script: scriptPubKey,
18104 value: value
18105 }) - 1)
18106 }
18107
18108 Transaction.prototype.hasWitnesses = function () {
18109 return this.ins.some(function (x) {
18110 return x.witness.length !== 0
18111 })
18112 }
18113
18114 Transaction.prototype.weight = function () {
18115 var base = this.__byteLength(false)
18116 var total = this.__byteLength(true)
18117 return base * 3 + total
18118 }
18119
18120 Transaction.prototype.virtualSize = function () {
18121 return Math.ceil(this.weight() / 4)
18122 }
18123
18124 Transaction.prototype.byteLength = function () {
18125 return this.__byteLength(true)
18126 }
18127
18128 Transaction.prototype.__byteLength = function (__allowWitness) {
18129 var hasWitnesses = __allowWitness && this.hasWitnesses()
18130
18131 return (
18132 (hasWitnesses ? 10 : 8) +
18133 varuint.encodingLength(this.ins.length) +
18134 varuint.encodingLength(this.outs.length) +
18135 this.ins.reduce(function (sum, input) { return sum + 40 + varSliceSize(input.script) }, 0) +
18136 this.outs.reduce(function (sum, output) { return sum + 8 + varSliceSize(output.script) }, 0) +
18137 (hasWitnesses ? this.ins.reduce(function (sum, input) { return sum + vectorSize(input.witness) }, 0) : 0)
18138 )
18139 }
18140
18141 Transaction.prototype.clone = function () {
18142 var newTx = new Transaction()
18143 newTx.version = this.version
18144 newTx.locktime = this.locktime
18145
18146 newTx.ins = this.ins.map(function (txIn) {
18147 return {
18148 hash: txIn.hash,
18149 index: txIn.index,
18150 script: txIn.script,
18151 sequence: txIn.sequence,
18152 witness: txIn.witness
18153 }
18154 })
18155
18156 newTx.outs = this.outs.map(function (txOut) {
18157 return {
18158 script: txOut.script,
18159 value: txOut.value
18160 }
18161 })
18162
18163 return newTx
18164 }
18165
18166 /**
18167 * Hash transaction for signing a specific input.
18168 *
18169 * Bitcoin uses a different hash for each signed transaction input.
18170 * This method copies the transaction, makes the necessary changes based on the
18171 * hashType, and then hashes the result.
18172 * This hash can then be used to sign the provided transaction input.
18173 */
18174 Transaction.prototype.hashForSignature = function (inIndex, prevOutScript, hashType) {
18175 typeforce(types.tuple(types.UInt32, types.Buffer, /* types.UInt8 */ types.Number), arguments)
18176
18177 // https://github.com/bitcoin/bitcoin/blob/master/src/test/sighash_tests.cpp#L29
18178 if (inIndex >= this.ins.length) return ONE
18179
18180 // ignore OP_CODESEPARATOR
18181 var ourScript = bscript.compile(bscript.decompile(prevOutScript).filter(function (x) {
18182 return x !== opcodes.OP_CODESEPARATOR
18183 }))
18184
18185 var txTmp = this.clone()
18186
18187 // SIGHASH_NONE: ignore all outputs? (wildcard payee)
18188 if ((hashType & 0x1f) === Transaction.SIGHASH_NONE) {
18189 txTmp.outs = []
18190
18191 // ignore sequence numbers (except at inIndex)
18192 txTmp.ins.forEach(function (input, i) {
18193 if (i === inIndex) return
18194
18195 input.sequence = 0
18196 })
18197
18198 // SIGHASH_SINGLE: ignore all outputs, except at the same index?
18199 } else if ((hashType & 0x1f) === Transaction.SIGHASH_SINGLE) {
18200 // https://github.com/bitcoin/bitcoin/blob/master/src/test/sighash_tests.cpp#L60
18201 if (inIndex >= this.outs.length) return ONE
18202
18203 // truncate outputs after
18204 txTmp.outs.length = inIndex + 1
18205
18206 // "blank" outputs before
18207 for (var i = 0; i < inIndex; i++) {
18208 txTmp.outs[i] = BLANK_OUTPUT
18209 }
18210
18211 // ignore sequence numbers (except at inIndex)
18212 txTmp.ins.forEach(function (input, y) {
18213 if (y === inIndex) return
18214
18215 input.sequence = 0
18216 })
18217 }
18218
18219 // SIGHASH_ANYONECANPAY: ignore inputs entirely?
18220 if (hashType & Transaction.SIGHASH_ANYONECANPAY) {
18221 txTmp.ins = [txTmp.ins[inIndex]]
18222 txTmp.ins[0].script = ourScript
18223
18224 // SIGHASH_ALL: only ignore input scripts
18225 } else {
18226 // "blank" others input scripts
18227 txTmp.ins.forEach(function (input) { input.script = EMPTY_SCRIPT })
18228 txTmp.ins[inIndex].script = ourScript
18229 }
18230
18231 // serialize and hash
18232 var buffer = Buffer.allocUnsafe(txTmp.__byteLength(false) + 4)
18233 buffer.writeInt32LE(hashType, buffer.length - 4)
18234 txTmp.__toBuffer(buffer, 0, false)
18235
18236 return bcrypto.hash256(buffer)
18237 }
18238
18239 Transaction.prototype.hashForWitnessV0 = function (inIndex, prevOutScript, value, hashType) {
18240 typeforce(types.tuple(types.UInt32, types.Buffer, types.Satoshi, types.UInt32), arguments)
18241
18242 var tbuffer, toffset
18243 function writeSlice (slice) { toffset += slice.copy(tbuffer, toffset) }
18244 function writeUInt32 (i) { toffset = tbuffer.writeUInt32LE(i, toffset) }
18245 function writeUInt64 (i) { toffset = bufferutils.writeUInt64LE(tbuffer, i, toffset) }
18246 function writeVarInt (i) {
18247 varuint.encode(i, tbuffer, toffset)
18248 toffset += varuint.encode.bytes
18249 }
18250 function writeVarSlice (slice) { writeVarInt(slice.length); writeSlice(slice) }
18251
18252 var hashOutputs = ZERO
18253 var hashPrevouts = ZERO
18254 var hashSequence = ZERO
18255
18256 if (!(hashType & Transaction.SIGHASH_ANYONECANPAY)) {
18257 tbuffer = Buffer.allocUnsafe(36 * this.ins.length)
18258 toffset = 0
18259
18260 this.ins.forEach(function (txIn) {
18261 writeSlice(txIn.hash)
18262 writeUInt32(txIn.index)
18263 })
18264
18265 hashPrevouts = bcrypto.hash256(tbuffer)
18266 }
18267
18268 if (!(hashType & Transaction.SIGHASH_ANYONECANPAY) &&
18269 (hashType & 0x1f) !== Transaction.SIGHASH_SINGLE &&
18270 (hashType & 0x1f) !== Transaction.SIGHASH_NONE) {
18271 tbuffer = Buffer.allocUnsafe(4 * this.ins.length)
18272 toffset = 0
18273
18274 this.ins.forEach(function (txIn) {
18275 writeUInt32(txIn.sequence)
18276 })
18277
18278 hashSequence = bcrypto.hash256(tbuffer)
18279 }
18280
18281 if ((hashType & 0x1f) !== Transaction.SIGHASH_SINGLE &&
18282 (hashType & 0x1f) !== Transaction.SIGHASH_NONE) {
18283 var txOutsSize = this.outs.reduce(function (sum, output) {
18284 return sum + 8 + varSliceSize(output.script)
18285 }, 0)
18286
18287 tbuffer = Buffer.allocUnsafe(txOutsSize)
18288 toffset = 0
18289
18290 this.outs.forEach(function (out) {
18291 writeUInt64(out.value)
18292 writeVarSlice(out.script)
18293 })
18294
18295 hashOutputs = bcrypto.hash256(tbuffer)
18296 } else if ((hashType & 0x1f) === Transaction.SIGHASH_SINGLE && inIndex < this.outs.length) {
18297 var output = this.outs[inIndex]
18298
18299 tbuffer = Buffer.allocUnsafe(8 + varSliceSize(output.script))
18300 toffset = 0
18301 writeUInt64(output.value)
18302 writeVarSlice(output.script)
18303
18304 hashOutputs = bcrypto.hash256(tbuffer)
18305 }
18306
18307 tbuffer = Buffer.allocUnsafe(156 + varSliceSize(prevOutScript))
18308 toffset = 0
18309
18310 var input = this.ins[inIndex]
18311 writeUInt32(this.version)
18312 writeSlice(hashPrevouts)
18313 writeSlice(hashSequence)
18314 writeSlice(input.hash)
18315 writeUInt32(input.index)
18316 writeVarSlice(prevOutScript)
18317 writeUInt64(value)
18318 writeUInt32(input.sequence)
18319 writeSlice(hashOutputs)
18320 writeUInt32(this.locktime)
18321 writeUInt32(hashType)
18322 return bcrypto.hash256(tbuffer)
18323 }
18324
18325 Transaction.prototype.getHash = function () {
18326 return bcrypto.hash256(this.__toBuffer(undefined, undefined, false))
18327 }
18328
18329 Transaction.prototype.getId = function () {
18330 // transaction hash's are displayed in reverse order
18331 return this.getHash().reverse().toString('hex')
18332 }
18333
18334 Transaction.prototype.toBuffer = function (buffer, initialOffset) {
18335 return this.__toBuffer(buffer, initialOffset, true)
18336 }
18337
18338 Transaction.prototype.__toBuffer = function (buffer, initialOffset, __allowWitness) {
18339 if (!buffer) buffer = Buffer.allocUnsafe(this.__byteLength(__allowWitness))
18340
18341 var offset = initialOffset || 0
18342 function writeSlice (slice) { offset += slice.copy(buffer, offset) }
18343 function writeUInt8 (i) { offset = buffer.writeUInt8(i, offset) }
18344 function writeUInt32 (i) { offset = buffer.writeUInt32LE(i, offset) }
18345 function writeInt32 (i) { offset = buffer.writeInt32LE(i, offset) }
18346 function writeUInt64 (i) { offset = bufferutils.writeUInt64LE(buffer, i, offset) }
18347 function writeVarInt (i) {
18348 varuint.encode(i, buffer, offset)
18349 offset += varuint.encode.bytes
18350 }
18351 function writeVarSlice (slice) { writeVarInt(slice.length); writeSlice(slice) }
18352 function writeVector (vector) { writeVarInt(vector.length); vector.forEach(writeVarSlice) }
18353
18354 writeInt32(this.version)
18355
18356 var hasWitnesses = __allowWitness && this.hasWitnesses()
18357
18358 if (hasWitnesses) {
18359 writeUInt8(Transaction.ADVANCED_TRANSACTION_MARKER)
18360 writeUInt8(Transaction.ADVANCED_TRANSACTION_FLAG)
18361 }
18362
18363 writeVarInt(this.ins.length)
18364
18365 this.ins.forEach(function (txIn) {
18366 writeSlice(txIn.hash)
18367 writeUInt32(txIn.index)
18368 writeVarSlice(txIn.script)
18369 writeUInt32(txIn.sequence)
18370 })
18371
18372 writeVarInt(this.outs.length)
18373 this.outs.forEach(function (txOut) {
18374 if (!txOut.valueBuffer) {
18375 writeUInt64(txOut.value)
18376 } else {
18377 writeSlice(txOut.valueBuffer)
18378 }
18379
18380 writeVarSlice(txOut.script)
18381 })
18382
18383 if (hasWitnesses) {
18384 this.ins.forEach(function (input) {
18385 writeVector(input.witness)
18386 })
18387 }
18388
18389 writeUInt32(this.locktime)
18390
18391 // avoid slicing unless necessary
18392 if (initialOffset !== undefined) return buffer.slice(initialOffset, offset)
18393 return buffer
18394 }
18395
18396 Transaction.prototype.toHex = function () {
18397 return this.toBuffer().toString('hex')
18398 }
18399
18400 Transaction.prototype.setInputScript = function (index, scriptSig) {
18401 typeforce(types.tuple(types.Number, types.Buffer), arguments)
18402
18403 this.ins[index].script = scriptSig
18404 }
18405
18406 Transaction.prototype.setWitness = function (index, witness) {
18407 typeforce(types.tuple(types.Number, [types.Buffer]), arguments)
18408
18409 this.ins[index].witness = witness
18410 }
18411
18412 module.exports = Transaction
18413
18414 },{"./bufferutils":44,"./crypto":45,"./script":52,"./types":78,"bitcoin-ops":40,"safe-buffer":98,"typeforce":109,"varuint-bitcoin":111}],77:[function(require,module,exports){
18415 var Buffer = require('safe-buffer').Buffer
18416 var baddress = require('./address')
18417 var bcrypto = require('./crypto')
18418 var bscript = require('./script')
18419 var networks = require('./networks')
18420 var ops = require('bitcoin-ops')
18421 var typeforce = require('typeforce')
18422 var types = require('./types')
18423 var scriptTypes = bscript.types
18424 var SIGNABLE = [bscript.types.P2PKH, bscript.types.P2PK, bscript.types.MULTISIG]
18425 var P2SH = SIGNABLE.concat([bscript.types.P2WPKH, bscript.types.P2WSH])
18426
18427 var ECPair = require('./ecpair')
18428 var ECSignature = require('./ecsignature')
18429 var Transaction = require('./transaction')
18430
18431 function extractChunks (type, chunks, script) {
18432 var pubKeys = []
18433 var signatures = []
18434 switch (type) {
18435 case scriptTypes.P2PKH:
18436 // if (redeemScript) throw new Error('Nonstandard... P2SH(P2PKH)')
18437 pubKeys = chunks.slice(1)
18438 signatures = chunks.slice(0, 1)
18439 break
18440
18441 case scriptTypes.P2PK:
18442 pubKeys[0] = script ? bscript.pubKey.output.decode(script) : undefined
18443 signatures = chunks.slice(0, 1)
18444 break
18445
18446 case scriptTypes.MULTISIG:
18447 if (script) {
18448 var multisig = bscript.multisig.output.decode(script)
18449 pubKeys = multisig.pubKeys
18450 }
18451
18452 signatures = chunks.slice(1).map(function (chunk) {
18453 return chunk.length === 0 ? undefined : chunk
18454 })
18455 break
18456 }
18457
18458 return {
18459 pubKeys: pubKeys,
18460 signatures: signatures
18461 }
18462 }
18463 function expandInput (scriptSig, witnessStack) {
18464 if (scriptSig.length === 0 && witnessStack.length === 0) return {}
18465
18466 var prevOutScript
18467 var prevOutType
18468 var scriptType
18469 var script
18470 var redeemScript
18471 var witnessScript
18472 var witnessScriptType
18473 var redeemScriptType
18474 var witness = false
18475 var p2wsh = false
18476 var p2sh = false
18477 var witnessProgram
18478 var chunks
18479
18480 var scriptSigChunks = bscript.decompile(scriptSig)
18481 var sigType = bscript.classifyInput(scriptSigChunks, true)
18482 if (sigType === scriptTypes.P2SH) {
18483 p2sh = true
18484 redeemScript = scriptSigChunks[scriptSigChunks.length - 1]
18485 redeemScriptType = bscript.classifyOutput(redeemScript)
18486 prevOutScript = bscript.scriptHash.output.encode(bcrypto.hash160(redeemScript))
18487 prevOutType = scriptTypes.P2SH
18488 script = redeemScript
18489 }
18490
18491 var classifyWitness = bscript.classifyWitness(witnessStack)
18492 if (classifyWitness === scriptTypes.P2WSH) {
18493 witnessScript = witnessStack[witnessStack.length - 1]
18494 witnessScriptType = bscript.classifyOutput(witnessScript)
18495 p2wsh = true
18496 if (scriptSig.length === 0) {
18497 prevOutScript = bscript.witnessScriptHash.output.encode(bcrypto.sha256(witnessScript))
18498 prevOutType = scriptTypes.P2WSH
18499 if (typeof redeemScript !== 'undefined') {
18500 throw new Error('Redeem script given when unnecessary')
18501 }
18502 // bare witness
18503 } else {
18504 if (!redeemScript) {
18505 throw new Error('No redeemScript provided for P2WSH, but scriptSig non-empty')
18506 }
18507 witnessProgram = bscript.witnessScriptHash.output.encode(bcrypto.sha256(witnessScript))
18508 if (!redeemScript.equals(witnessProgram)) {
18509 throw new Error('Redeem script didn\'t match witnessScript')
18510 }
18511 }
18512
18513 if (SIGNABLE.indexOf(bscript.classifyOutput(witnessScript)) === -1) {
18514 throw new Error('unsupported witness script')
18515 }
18516 script = witnessScript
18517 scriptType = witnessScriptType
18518 chunks = witnessStack.slice(0, -1)
18519 } else if (classifyWitness === scriptTypes.P2WPKH) {
18520 var key = witnessStack[witnessStack.length - 1]
18521 var keyHash = bcrypto.hash160(key)
18522 if (scriptSig.length === 0) {
18523 prevOutScript = bscript.witnessPubKeyHash.output.encode(keyHash)
18524 prevOutType = scriptTypes.P2WPKH
18525 if (typeof redeemScript !== 'undefined') {
18526 throw new Error('Redeem script given when unnecessary')
18527 }
18528 } else {
18529 if (!redeemScript) {
18530 throw new Error('No redeemScript provided for P2WPKH, but scriptSig wasn\'t empty')
18531 }
18532 witnessProgram = bscript.witnessPubKeyHash.output.encode(keyHash)
18533 if (!redeemScript.equals(witnessProgram)) {
18534 throw new Error('Redeem script did not have the right witness program')
18535 }
18536 }
18537
18538 scriptType = scriptTypes.P2PKH
18539 chunks = witnessStack
18540 } else if (redeemScript) {
18541 if (P2SH.indexOf(redeemScriptType) === -1) {
18542 throw new Error('Bad redeemscript!')
18543 }
18544
18545 script = redeemScript
18546 scriptType = redeemScriptType
18547 chunks = scriptSigChunks.slice(0, -1)
18548 } else {
18549 prevOutType = scriptType = bscript.classifyInput(scriptSig)
18550 chunks = scriptSigChunks
18551 }
18552
18553 var expanded = extractChunks(scriptType, chunks, script)
18554
18555 var result = {
18556 pubKeys: expanded.pubKeys,
18557 signatures: expanded.signatures,
18558 prevOutScript: prevOutScript,
18559 prevOutType: prevOutType,
18560 signType: scriptType,
18561 signScript: script,
18562 witness: Boolean(witness)
18563 }
18564
18565 if (p2sh) {
18566 result.redeemScript = redeemScript
18567 result.redeemScriptType = redeemScriptType
18568 }
18569
18570 if (p2wsh) {
18571 result.witnessScript = witnessScript
18572 result.witnessScriptType = witnessScriptType
18573 }
18574
18575 return result
18576 }
18577
18578 // could be done in expandInput, but requires the original Transaction for hashForSignature
18579 function fixMultisigOrder (input, transaction, vin) {
18580 if (input.redeemScriptType !== scriptTypes.MULTISIG || !input.redeemScript) return
18581 if (input.pubKeys.length === input.signatures.length) return
18582
18583 var unmatched = input.signatures.concat()
18584
18585 input.signatures = input.pubKeys.map(function (pubKey) {
18586 var keyPair = ECPair.fromPublicKeyBuffer(pubKey)
18587 var match
18588
18589 // check for a signature
18590 unmatched.some(function (signature, i) {
18591 // skip if undefined || OP_0
18592 if (!signature) return false
18593
18594 // TODO: avoid O(n) hashForSignature
18595 var parsed = ECSignature.parseScriptSignature(signature)
18596 var hash = transaction.hashForSignature(vin, input.redeemScript, parsed.hashType)
18597
18598 // skip if signature does not match pubKey
18599 if (!keyPair.verify(hash, parsed.signature)) return false
18600
18601 // remove matched signature from unmatched
18602 unmatched[i] = undefined
18603 match = signature
18604
18605 return true
18606 })
18607
18608 return match
18609 })
18610 }
18611
18612 function expandOutput (script, scriptType, ourPubKey) {
18613 typeforce(types.Buffer, script)
18614
18615 var scriptChunks = bscript.decompile(script)
18616 if (!scriptType) {
18617 scriptType = bscript.classifyOutput(script)
18618 }
18619
18620 var pubKeys = []
18621
18622 switch (scriptType) {
18623 // does our hash160(pubKey) match the output scripts?
18624 case scriptTypes.P2PKH:
18625 if (!ourPubKey) break
18626
18627 var pkh1 = scriptChunks[2]
18628 var pkh2 = bcrypto.hash160(ourPubKey)
18629 if (pkh1.equals(pkh2)) pubKeys = [ourPubKey]
18630 break
18631
18632 // does our hash160(pubKey) match the output scripts?
18633 case scriptTypes.P2WPKH:
18634 if (!ourPubKey) break
18635
18636 var wpkh1 = scriptChunks[1]
18637 var wpkh2 = bcrypto.hash160(ourPubKey)
18638 if (wpkh1.equals(wpkh2)) pubKeys = [ourPubKey]
18639 break
18640
18641 case scriptTypes.P2PK:
18642 pubKeys = scriptChunks.slice(0, 1)
18643 break
18644
18645 case scriptTypes.MULTISIG:
18646 pubKeys = scriptChunks.slice(1, -2)
18647 break
18648
18649 default: return { scriptType: scriptType }
18650 }
18651
18652 return {
18653 pubKeys: pubKeys,
18654 scriptType: scriptType,
18655 signatures: pubKeys.map(function () { return undefined })
18656 }
18657 }
18658
18659 function checkP2shInput (input, redeemScriptHash) {
18660 if (input.prevOutType) {
18661 if (input.prevOutType !== scriptTypes.P2SH) throw new Error('PrevOutScript must be P2SH')
18662
18663 var prevOutScriptScriptHash = bscript.decompile(input.prevOutScript)[1]
18664 if (!prevOutScriptScriptHash.equals(redeemScriptHash)) throw new Error('Inconsistent hash160(RedeemScript)')
18665 }
18666 }
18667
18668 function checkP2WSHInput (input, witnessScriptHash) {
18669 if (input.prevOutType) {
18670 if (input.prevOutType !== scriptTypes.P2WSH) throw new Error('PrevOutScript must be P2WSH')
18671
18672 var scriptHash = bscript.decompile(input.prevOutScript)[1]
18673 if (!scriptHash.equals(witnessScriptHash)) throw new Error('Inconsistent sha25(WitnessScript)')
18674 }
18675 }
18676
18677 function prepareInput (input, kpPubKey, redeemScript, witnessValue, witnessScript) {
18678 var expanded
18679 var prevOutType
18680 var prevOutScript
18681
18682 var p2sh = false
18683 var p2shType
18684 var redeemScriptHash
18685
18686 var witness = false
18687 var p2wsh = false
18688 var witnessType
18689 var witnessScriptHash
18690
18691 var signType
18692 var signScript
18693
18694 if (redeemScript && witnessScript) {
18695 redeemScriptHash = bcrypto.hash160(redeemScript)
18696 witnessScriptHash = bcrypto.sha256(witnessScript)
18697 checkP2shInput(input, redeemScriptHash)
18698
18699 if (!redeemScript.equals(bscript.witnessScriptHash.output.encode(witnessScriptHash))) throw new Error('Witness script inconsistent with redeem script')
18700
18701 expanded = expandOutput(witnessScript, undefined, kpPubKey)
18702 if (!expanded.pubKeys) throw new Error('WitnessScript not supported "' + bscript.toASM(redeemScript) + '"')
18703 prevOutType = bscript.types.P2SH
18704 prevOutScript = bscript.scriptHash.output.encode(redeemScriptHash)
18705 p2sh = witness = p2wsh = true
18706 p2shType = bscript.types.P2WSH
18707 signType = witnessType = expanded.scriptType
18708 signScript = witnessScript
18709 } else if (redeemScript) {
18710 redeemScriptHash = bcrypto.hash160(redeemScript)
18711 checkP2shInput(input, redeemScriptHash)
18712
18713 expanded = expandOutput(redeemScript, undefined, kpPubKey)
18714 if (!expanded.pubKeys) throw new Error('RedeemScript not supported "' + bscript.toASM(redeemScript) + '"')
18715
18716 prevOutType = bscript.types.P2SH
18717 prevOutScript = bscript.scriptHash.output.encode(redeemScriptHash)
18718 p2sh = true
18719 signType = p2shType = expanded.scriptType
18720 signScript = redeemScript
18721 witness = signType === bscript.types.P2WPKH
18722 } else if (witnessScript) {
18723 witnessScriptHash = bcrypto.sha256(witnessScript)
18724 checkP2WSHInput(input, witnessScriptHash)
18725
18726 expanded = expandOutput(witnessScript, undefined, kpPubKey)
18727 if (!expanded.pubKeys) throw new Error('WitnessScript not supported "' + bscript.toASM(redeemScript) + '"')
18728
18729 prevOutType = bscript.types.P2WSH
18730 prevOutScript = bscript.witnessScriptHash.output.encode(witnessScriptHash)
18731 witness = p2wsh = true
18732 signType = witnessType = expanded.scriptType
18733 signScript = witnessScript
18734 } else if (input.prevOutType) {
18735 // embedded scripts are not possible without a redeemScript
18736 if (input.prevOutType === scriptTypes.P2SH ||
18737 input.prevOutType === scriptTypes.P2WSH) {
18738 throw new Error('PrevOutScript is ' + input.prevOutType + ', requires redeemScript')
18739 }
18740
18741 prevOutType = input.prevOutType
18742 prevOutScript = input.prevOutScript
18743 expanded = expandOutput(input.prevOutScript, input.prevOutType, kpPubKey)
18744 if (!expanded.pubKeys) return
18745
18746 witness = (input.prevOutType === scriptTypes.P2WPKH)
18747 signType = prevOutType
18748 signScript = prevOutScript
18749 } else {
18750 prevOutScript = bscript.pubKeyHash.output.encode(bcrypto.hash160(kpPubKey))
18751 expanded = expandOutput(prevOutScript, scriptTypes.P2PKH, kpPubKey)
18752 prevOutType = scriptTypes.P2PKH
18753 witness = false
18754 signType = prevOutType
18755 signScript = prevOutScript
18756 }
18757
18758 if (witness && !types.Satoshi(witnessValue)) {
18759 throw new Error('Input was witness but not given witness value')
18760 }
18761
18762 if (signType === scriptTypes.P2WPKH) {
18763 signScript = bscript.pubKeyHash.output.encode(bscript.witnessPubKeyHash.output.decode(signScript))
18764 }
18765
18766 if (p2sh) {
18767 input.redeemScript = redeemScript
18768 input.redeemScriptType = p2shType
18769 }
18770
18771 if (p2wsh) {
18772 input.witnessScript = witnessScript
18773 input.witnessScriptType = witnessType
18774 }
18775
18776 input.pubKeys = expanded.pubKeys
18777 input.signatures = expanded.signatures
18778 input.signScript = signScript
18779 input.signType = signType
18780 input.prevOutScript = prevOutScript
18781 input.prevOutType = prevOutType
18782 input.witness = witness
18783 }
18784
18785 function buildStack (type, signatures, pubKeys, allowIncomplete) {
18786 if (type === scriptTypes.P2PKH) {
18787 if (signatures.length === 1 && Buffer.isBuffer(signatures[0]) && pubKeys.length === 1) return bscript.pubKeyHash.input.encodeStack(signatures[0], pubKeys[0])
18788 } else if (type === scriptTypes.P2PK) {
18789 if (signatures.length === 1 && Buffer.isBuffer(signatures[0])) return bscript.pubKey.input.encodeStack(signatures[0])
18790 } else if (type === scriptTypes.MULTISIG) {
18791 if (signatures.length > 0) {
18792 signatures = signatures.map(function (signature) {
18793 return signature || ops.OP_0
18794 })
18795 if (!allowIncomplete) {
18796 // remove blank signatures
18797 signatures = signatures.filter(function (x) { return x !== ops.OP_0 })
18798 }
18799
18800 return bscript.multisig.input.encodeStack(signatures /* see if it's necessary first */)
18801 }
18802 } else {
18803 throw new Error('Not yet supported')
18804 }
18805
18806 if (!allowIncomplete) throw new Error('Not enough signatures provided')
18807
18808 return []
18809 }
18810
18811 function buildInput (input, allowIncomplete) {
18812 var scriptType = input.prevOutType
18813 var sig = []
18814 var witness = []
18815 if (SIGNABLE.indexOf(scriptType) !== -1) {
18816 sig = buildStack(scriptType, input.signatures, input.pubKeys, allowIncomplete)
18817 }
18818
18819 var p2sh = false
18820 if (scriptType === bscript.types.P2SH) {
18821 // We can remove this error later when we have a guarantee prepareInput
18822 // rejects unsignable scripts - it MUST be signable at this point.
18823 if (P2SH.indexOf(input.redeemScriptType) === -1) {
18824 throw new Error('Impossible to sign this type')
18825 }
18826 p2sh = true
18827 if (SIGNABLE.indexOf(input.redeemScriptType) !== -1) {
18828 sig = buildStack(input.redeemScriptType, input.signatures, input.pubKeys, allowIncomplete)
18829 }
18830 // If it wasn't SIGNABLE, it's witness, defer to that
18831 scriptType = input.redeemScriptType
18832 }
18833
18834 if (scriptType === bscript.types.P2WPKH) {
18835 // P2WPKH is a special case of P2PKH
18836 witness = buildStack(bscript.types.P2PKH, input.signatures, input.pubKeys, allowIncomplete)
18837 } else if (scriptType === bscript.types.P2WSH) {
18838 // We can remove this check later
18839 if (SIGNABLE.indexOf(input.witnessScriptType) !== -1) {
18840 witness = buildStack(input.witnessScriptType, input.signatures, input.pubKeys, allowIncomplete)
18841 witness.push(input.witnessScript)
18842 } else {
18843 // We can remove this error later when we have a guarantee prepareInput
18844 // rejects unsignble scripts - it MUST be signable at this point.
18845 throw new Error()
18846 }
18847
18848 scriptType = input.witnessScriptType
18849 }
18850
18851 // append redeemScript if necessary
18852 if (p2sh) {
18853 sig.push(input.redeemScript)
18854 }
18855
18856 return {
18857 type: scriptType,
18858 script: bscript.compile(sig),
18859 witness: witness
18860 }
18861 }
18862
18863 function TransactionBuilder (network, maximumFeeRate) {
18864 this.prevTxMap = {}
18865 this.network = network || networks.bitcoin
18866
18867 // WARNING: This is __NOT__ to be relied on, its just another potential safety mechanism (safety in-depth)
18868 this.maximumFeeRate = maximumFeeRate || 1000
18869
18870 this.inputs = []
18871 this.tx = new Transaction()
18872 }
18873
18874 TransactionBuilder.prototype.setLockTime = function (locktime) {
18875 typeforce(types.UInt32, locktime)
18876
18877 // if any signatures exist, throw
18878 if (this.inputs.some(function (input) {
18879 if (!input.signatures) return false
18880
18881 return input.signatures.some(function (s) { return s })
18882 })) {
18883 throw new Error('No, this would invalidate signatures')
18884 }
18885
18886 this.tx.locktime = locktime
18887 }
18888
18889 TransactionBuilder.prototype.setVersion = function (version) {
18890 typeforce(types.UInt32, version)
18891
18892 // XXX: this might eventually become more complex depending on what the versions represent
18893 this.tx.version = version
18894 }
18895
18896 TransactionBuilder.fromTransaction = function (transaction, network) {
18897 var txb = new TransactionBuilder(network)
18898
18899 // Copy transaction fields
18900 txb.setVersion(transaction.version)
18901 txb.setLockTime(transaction.locktime)
18902
18903 // Copy outputs (done first to avoid signature invalidation)
18904 transaction.outs.forEach(function (txOut) {
18905 txb.addOutput(txOut.script, txOut.value)
18906 })
18907
18908 // Copy inputs
18909 transaction.ins.forEach(function (txIn) {
18910 txb.__addInputUnsafe(txIn.hash, txIn.index, {
18911 sequence: txIn.sequence,
18912 script: txIn.script,
18913 witness: txIn.witness
18914 })
18915 })
18916
18917 // fix some things not possible through the public API
18918 txb.inputs.forEach(function (input, i) {
18919 fixMultisigOrder(input, transaction, i)
18920 })
18921
18922 return txb
18923 }
18924
18925 TransactionBuilder.prototype.addInput = function (txHash, vout, sequence, prevOutScript) {
18926 if (!this.__canModifyInputs()) {
18927 throw new Error('No, this would invalidate signatures')
18928 }
18929
18930 var value
18931
18932 // is it a hex string?
18933 if (typeof txHash === 'string') {
18934 // transaction hashs's are displayed in reverse order, un-reverse it
18935 txHash = Buffer.from(txHash, 'hex').reverse()
18936
18937 // is it a Transaction object?
18938 } else if (txHash instanceof Transaction) {
18939 var txOut = txHash.outs[vout]
18940 prevOutScript = txOut.script
18941 value = txOut.value
18942
18943 txHash = txHash.getHash()
18944 }
18945
18946 return this.__addInputUnsafe(txHash, vout, {
18947 sequence: sequence,
18948 prevOutScript: prevOutScript,
18949 value: value
18950 })
18951 }
18952
18953 TransactionBuilder.prototype.__addInputUnsafe = function (txHash, vout, options) {
18954 if (Transaction.isCoinbaseHash(txHash)) {
18955 throw new Error('coinbase inputs not supported')
18956 }
18957
18958 var prevTxOut = txHash.toString('hex') + ':' + vout
18959 if (this.prevTxMap[prevTxOut] !== undefined) throw new Error('Duplicate TxOut: ' + prevTxOut)
18960
18961 var input = {}
18962
18963 // derive what we can from the scriptSig
18964 if (options.script !== undefined) {
18965 input = expandInput(options.script, options.witness || [])
18966 }
18967
18968 // if an input value was given, retain it
18969 if (options.value !== undefined) {
18970 input.value = options.value
18971 }
18972
18973 // derive what we can from the previous transactions output script
18974 if (!input.prevOutScript && options.prevOutScript) {
18975 var prevOutType
18976
18977 if (!input.pubKeys && !input.signatures) {
18978 var expanded = expandOutput(options.prevOutScript)
18979
18980 if (expanded.pubKeys) {
18981 input.pubKeys = expanded.pubKeys
18982 input.signatures = expanded.signatures
18983 }
18984
18985 prevOutType = expanded.scriptType
18986 }
18987
18988 input.prevOutScript = options.prevOutScript
18989 input.prevOutType = prevOutType || bscript.classifyOutput(options.prevOutScript)
18990 }
18991
18992 var vin = this.tx.addInput(txHash, vout, options.sequence, options.scriptSig)
18993 this.inputs[vin] = input
18994 this.prevTxMap[prevTxOut] = vin
18995
18996 return vin
18997 }
18998
18999 TransactionBuilder.prototype.addOutput = function (scriptPubKey, value) {
19000 if (!this.__canModifyOutputs()) {
19001 throw new Error('No, this would invalidate signatures')
19002 }
19003
19004 // Attempt to get a script if it's a base58 address string
19005 if (typeof scriptPubKey === 'string') {
19006 scriptPubKey = baddress.toOutputScript(scriptPubKey, this.network)
19007 }
19008
19009 return this.tx.addOutput(scriptPubKey, value)
19010 }
19011
19012 TransactionBuilder.prototype.build = function () {
19013 return this.__build(false)
19014 }
19015 TransactionBuilder.prototype.buildIncomplete = function () {
19016 return this.__build(true)
19017 }
19018
19019 TransactionBuilder.prototype.__build = function (allowIncomplete) {
19020 if (!allowIncomplete) {
19021 if (!this.tx.ins.length) throw new Error('Transaction has no inputs')
19022 if (!this.tx.outs.length) throw new Error('Transaction has no outputs')
19023 }
19024
19025 var tx = this.tx.clone()
19026 // Create script signatures from inputs
19027 this.inputs.forEach(function (input, i) {
19028 var scriptType = input.witnessScriptType || input.redeemScriptType || input.prevOutType
19029 if (!scriptType && !allowIncomplete) throw new Error('Transaction is not complete')
19030 var result = buildInput(input, allowIncomplete)
19031
19032 // skip if no result
19033 if (!allowIncomplete) {
19034 if (SIGNABLE.indexOf(result.type) === -1 && result.type !== bscript.types.P2WPKH) {
19035 throw new Error(result.type + ' not supported')
19036 }
19037 }
19038
19039 tx.setInputScript(i, result.script)
19040 tx.setWitness(i, result.witness)
19041 })
19042
19043 if (!allowIncomplete) {
19044 // do not rely on this, its merely a last resort
19045 if (this.__overMaximumFees(tx.byteLength())) {
19046 throw new Error('Transaction has absurd fees')
19047 }
19048 }
19049
19050 return tx
19051 }
19052
19053 function canSign (input) {
19054 return input.prevOutScript !== undefined &&
19055 input.signScript !== undefined &&
19056 input.pubKeys !== undefined &&
19057 input.signatures !== undefined &&
19058 input.signatures.length === input.pubKeys.length &&
19059 input.pubKeys.length > 0 &&
19060 input.witness !== undefined
19061 }
19062
19063 TransactionBuilder.prototype.sign = function (vin, keyPair, redeemScript, hashType, witnessValue, witnessScript) {
19064 if (keyPair.network !== this.network) throw new Error('Inconsistent network')
19065 if (!this.inputs[vin]) throw new Error('No input at index: ' + vin)
19066 hashType = hashType || Transaction.SIGHASH_ALL
19067
19068 var input = this.inputs[vin]
19069
19070 // if redeemScript was previously provided, enforce consistency
19071 if (input.redeemScript !== undefined &&
19072 redeemScript &&
19073 !input.redeemScript.equals(redeemScript)) {
19074 throw new Error('Inconsistent redeemScript')
19075 }
19076
19077 var kpPubKey = keyPair.getPublicKeyBuffer()
19078 if (!canSign(input)) {
19079 prepareInput(input, kpPubKey, redeemScript, witnessValue, witnessScript)
19080 if (!canSign(input)) throw Error(input.prevOutType + ' not supported')
19081 }
19082
19083 // ready to sign
19084 var signatureHash
19085 if (input.witness) {
19086 signatureHash = this.tx.hashForWitnessV0(vin, input.signScript, witnessValue, hashType)
19087 } else {
19088 signatureHash = this.tx.hashForSignature(vin, input.signScript, hashType)
19089 }
19090 // enforce in order signing of public keys
19091 var signed = input.pubKeys.some(function (pubKey, i) {
19092 if (!kpPubKey.equals(pubKey)) return false
19093 if (input.signatures[i]) throw new Error('Signature already exists')
19094
19095 input.signatures[i] = keyPair.sign(signatureHash).toScriptSignature(hashType)
19096 return true
19097 })
19098
19099 if (!signed) throw new Error('Key pair cannot sign for this input')
19100 }
19101
19102 function signatureHashType (buffer) {
19103 return buffer.readUInt8(buffer.length - 1)
19104 }
19105
19106 TransactionBuilder.prototype.__canModifyInputs = function () {
19107 return this.inputs.every(function (input) {
19108 // any signatures?
19109 if (input.signatures === undefined) return true
19110
19111 return input.signatures.every(function (signature) {
19112 if (!signature) return true
19113 var hashType = signatureHashType(signature)
19114
19115 // if SIGHASH_ANYONECANPAY is set, signatures would not
19116 // be invalidated by more inputs
19117 return hashType & Transaction.SIGHASH_ANYONECANPAY
19118 })
19119 })
19120 }
19121
19122 TransactionBuilder.prototype.__canModifyOutputs = function () {
19123 var nInputs = this.tx.ins.length
19124 var nOutputs = this.tx.outs.length
19125
19126 return this.inputs.every(function (input) {
19127 if (input.signatures === undefined) return true
19128
19129 return input.signatures.every(function (signature) {
19130 if (!signature) return true
19131 var hashType = signatureHashType(signature)
19132
19133 var hashTypeMod = hashType & 0x1f
19134 if (hashTypeMod === Transaction.SIGHASH_NONE) return true
19135 if (hashTypeMod === Transaction.SIGHASH_SINGLE) {
19136 // if SIGHASH_SINGLE is set, and nInputs > nOutputs
19137 // some signatures would be invalidated by the addition
19138 // of more outputs
19139 return nInputs <= nOutputs
19140 }
19141 })
19142 })
19143 }
19144
19145 TransactionBuilder.prototype.__overMaximumFees = function (bytes) {
19146 // not all inputs will have .value defined
19147 var incoming = this.inputs.reduce(function (a, x) { return a + (x.value >>> 0) }, 0)
19148
19149 // but all outputs do, and if we have any input value
19150 // we can immediately determine if the outputs are too small
19151 var outgoing = this.tx.outs.reduce(function (a, x) { return a + x.value }, 0)
19152 var fee = incoming - outgoing
19153 var feeRate = fee / bytes
19154
19155 return feeRate > this.maximumFeeRate
19156 }
19157
19158 module.exports = TransactionBuilder
19159
19160 },{"./address":42,"./crypto":45,"./ecpair":47,"./ecsignature":48,"./networks":51,"./script":52,"./transaction":76,"./types":78,"bitcoin-ops":40,"safe-buffer":98,"typeforce":109}],78:[function(require,module,exports){
19161 var typeforce = require('typeforce')
19162
19163 var UINT31_MAX = Math.pow(2, 31) - 1
19164 function UInt31 (value) {
19165 return typeforce.UInt32(value) && value <= UINT31_MAX
19166 }
19167
19168 function BIP32Path (value) {
19169 return typeforce.String(value) && value.match(/^(m\/)?(\d+'?\/)*\d+'?$/)
19170 }
19171 BIP32Path.toJSON = function () { return 'BIP32 derivation path' }
19172
19173 var SATOSHI_MAX = 21 * 1e14
19174 function Satoshi (value) {
19175 return typeforce.UInt53(value) && value <= SATOSHI_MAX
19176 }
19177
19178 // external dependent types
19179 var BigInt = typeforce.quacksLike('BigInteger')
19180 var ECPoint = typeforce.quacksLike('Point')
19181
19182 // exposed, external API
19183 var ECSignature = typeforce.compile({ r: BigInt, s: BigInt })
19184 var Network = typeforce.compile({
19185 messagePrefix: typeforce.oneOf(typeforce.Buffer, typeforce.String),
19186 bip32: {
19187 public: typeforce.UInt32,
19188 private: typeforce.UInt32
19189 },
19190 pubKeyHash: typeforce.UInt8,
19191 scriptHash: typeforce.UInt8,
19192 wif: typeforce.UInt8
19193 })
19194
19195 // extend typeforce types with ours
19196 var types = {
19197 BigInt: BigInt,
19198 BIP32Path: BIP32Path,
19199 Buffer256bit: typeforce.BufferN(32),
19200 ECPoint: ECPoint,
19201 ECSignature: ECSignature,
19202 Hash160bit: typeforce.BufferN(20),
19203 Hash256bit: typeforce.BufferN(32),
19204 Network: Network,
19205 Satoshi: Satoshi,
19206 UInt31: UInt31
19207 }
19208
19209 for (var typeName in typeforce) {
19210 types[typeName] = typeforce[typeName]
19211 }
19212
19213 module.exports = types
19214
19215 },{"typeforce":109}],79:[function(require,module,exports){
19216 var basex = require('base-x')
19217 var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
19218
19219 module.exports = basex(ALPHABET)
19220
19221 },{"base-x":34}],80:[function(require,module,exports){
19222 (function (Buffer){
19223 'use strict'
19224
19225 var base58 = require('bs58')
19226 var createHash = require('create-hash')
19227
19228 // SHA256(SHA256(buffer))
19229 function sha256x2 (buffer) {
19230 var tmp = createHash('sha256').update(buffer).digest()
19231 return createHash('sha256').update(tmp).digest()
19232 }
19233
19234 // Encode a buffer as a base58-check encoded string
19235 function encode (payload) {
19236 var checksum = sha256x2(payload)
19237
19238 return base58.encode(Buffer.concat([
19239 payload,
19240 checksum
19241 ], payload.length + 4))
19242 }
19243
19244 function decodeRaw (buffer) {
19245 var payload = buffer.slice(0, -4)
19246 var checksum = buffer.slice(-4)
19247 var newChecksum = sha256x2(payload)
19248
19249 if (checksum[0] ^ newChecksum[0] |
19250 checksum[1] ^ newChecksum[1] |
19251 checksum[2] ^ newChecksum[2] |
19252 checksum[3] ^ newChecksum[3]) return
19253
19254 return payload
19255 }
19256
19257 // Decode a base58-check encoded string to a buffer, no result if checksum is wrong
19258 function decodeUnsafe (string) {
19259 var buffer = base58.decodeUnsafe(string)
19260 if (!buffer) return
19261
19262 return decodeRaw(buffer)
19263 }
19264
19265 function decode (string) {
19266 var buffer = base58.decode(string)
19267 var payload = decodeRaw(buffer)
19268 if (!payload) throw new Error('Invalid checksum')
19269 return payload
19270 }
19271
19272 module.exports = {
19273 encode: encode,
19274 decode: decode,
19275 decodeUnsafe: decodeUnsafe
19276 }
19277
19278 }).call(this,require("buffer").Buffer)
19279 },{"bs58":79,"buffer":4,"create-hash":82}],81:[function(require,module,exports){
19280 var Buffer = require('safe-buffer').Buffer
19281 var Transform = require('stream').Transform
19282 var StringDecoder = require('string_decoder').StringDecoder
19283 var inherits = require('inherits')
19284
19285 function CipherBase (hashMode) {
19286 Transform.call(this)
19287 this.hashMode = typeof hashMode === 'string'
19288 if (this.hashMode) {
19289 this[hashMode] = this._finalOrDigest
19290 } else {
19291 this.final = this._finalOrDigest
19292 }
19293 if (this._final) {
19294 this.__final = this._final
19295 this._final = null
19296 }
19297 this._decoder = null
19298 this._encoding = null
19299 }
19300 inherits(CipherBase, Transform)
19301
19302 CipherBase.prototype.update = function (data, inputEnc, outputEnc) {
19303 if (typeof data === 'string') {
19304 data = Buffer.from(data, inputEnc)
19305 }
19306
19307 var outData = this._update(data)
19308 if (this.hashMode) return this
19309
19310 if (outputEnc) {
19311 outData = this._toString(outData, outputEnc)
19312 }
19313
19314 return outData
19315 }
19316
19317 CipherBase.prototype.setAutoPadding = function () {}
19318 CipherBase.prototype.getAuthTag = function () {
19319 throw new Error('trying to get auth tag in unsupported state')
19320 }
19321
19322 CipherBase.prototype.setAuthTag = function () {
19323 throw new Error('trying to set auth tag in unsupported state')
19324 }
19325
19326 CipherBase.prototype.setAAD = function () {
19327 throw new Error('trying to set aad in unsupported state')
19328 }
19329
19330 CipherBase.prototype._transform = function (data, _, next) {
19331 var err
19332 try {
19333 if (this.hashMode) {
19334 this._update(data)
19335 } else {
19336 this.push(this._update(data))
19337 }
19338 } catch (e) {
19339 err = e
19340 } finally {
19341 next(err)
19342 }
19343 }
19344 CipherBase.prototype._flush = function (done) {
19345 var err
19346 try {
19347 this.push(this.__final())
19348 } catch (e) {
19349 err = e
19350 }
19351
19352 done(err)
19353 }
19354 CipherBase.prototype._finalOrDigest = function (outputEnc) {
19355 var outData = this.__final() || Buffer.alloc(0)
19356 if (outputEnc) {
19357 outData = this._toString(outData, outputEnc, true)
19358 }
19359 return outData
19360 }
19361
19362 CipherBase.prototype._toString = function (value, enc, fin) {
19363 if (!this._decoder) {
19364 this._decoder = new StringDecoder(enc)
19365 this._encoding = enc
19366 }
19367
19368 if (this._encoding !== enc) throw new Error('can\'t switch encodings')
19369
19370 var out = this._decoder.write(value)
19371 if (fin) {
19372 out += this._decoder.end()
19373 }
19374
19375 return out
19376 }
19377
19378 module.exports = CipherBase
19379
19380 },{"inherits":93,"safe-buffer":98,"stream":27,"string_decoder":28}],82:[function(require,module,exports){
19381 (function (Buffer){
19382 'use strict'
19383 var inherits = require('inherits')
19384 var md5 = require('./md5')
19385 var RIPEMD160 = require('ripemd160')
19386 var sha = require('sha.js')
19387
19388 var Base = require('cipher-base')
19389
19390 function HashNoConstructor (hash) {
19391 Base.call(this, 'digest')
19392
19393 this._hash = hash
19394 this.buffers = []
19395 }
19396
19397 inherits(HashNoConstructor, Base)
19398
19399 HashNoConstructor.prototype._update = function (data) {
19400 this.buffers.push(data)
19401 }
19402
19403 HashNoConstructor.prototype._final = function () {
19404 var buf = Buffer.concat(this.buffers)
19405 var r = this._hash(buf)
19406 this.buffers = null
19407
19408 return r
19409 }
19410
19411 function Hash (hash) {
19412 Base.call(this, 'digest')
19413
19414 this._hash = hash
19415 }
19416
19417 inherits(Hash, Base)
19418
19419 Hash.prototype._update = function (data) {
19420 this._hash.update(data)
19421 }
19422
19423 Hash.prototype._final = function () {
19424 return this._hash.digest()
19425 }
19426
19427 module.exports = function createHash (alg) {
19428 alg = alg.toLowerCase()
19429 if (alg === 'md5') return new HashNoConstructor(md5)
19430 if (alg === 'rmd160' || alg === 'ripemd160') return new Hash(new RIPEMD160())
19431
19432 return new Hash(sha(alg))
19433 }
19434
19435 }).call(this,require("buffer").Buffer)
19436 },{"./md5":84,"buffer":4,"cipher-base":81,"inherits":93,"ripemd160":97,"sha.js":100}],83:[function(require,module,exports){
19437 (function (Buffer){
19438 'use strict'
19439 var intSize = 4
19440 var zeroBuffer = new Buffer(intSize)
19441 zeroBuffer.fill(0)
19442
19443 var charSize = 8
19444 var hashSize = 16
19445
19446 function toArray (buf) {
19447 if ((buf.length % intSize) !== 0) {
19448 var len = buf.length + (intSize - (buf.length % intSize))
19449 buf = Buffer.concat([buf, zeroBuffer], len)
19450 }
19451
19452 var arr = new Array(buf.length >>> 2)
19453 for (var i = 0, j = 0; i < buf.length; i += intSize, j++) {
19454 arr[j] = buf.readInt32LE(i)
19455 }
19456
19457 return arr
19458 }
19459
19460 module.exports = function hash (buf, fn) {
19461 var arr = fn(toArray(buf), buf.length * charSize)
19462 buf = new Buffer(hashSize)
19463 for (var i = 0; i < arr.length; i++) {
19464 buf.writeInt32LE(arr[i], i << 2, true)
19465 }
19466 return buf
19467 }
19468
19469 }).call(this,require("buffer").Buffer)
19470 },{"buffer":4}],84:[function(require,module,exports){
19471 'use strict'
19472 /*
19473 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
19474 * Digest Algorithm, as defined in RFC 1321.
19475 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
19476 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
19477 * Distributed under the BSD License
19478 * See http://pajhome.org.uk/crypt/md5 for more info.
19479 */
19480
19481 var makeHash = require('./make-hash')
19482
19483 /*
19484 * Calculate the MD5 of an array of little-endian words, and a bit length
19485 */
19486 function core_md5 (x, len) {
19487 /* append padding */
19488 x[len >> 5] |= 0x80 << ((len) % 32)
19489 x[(((len + 64) >>> 9) << 4) + 14] = len
19490
19491 var a = 1732584193
19492 var b = -271733879
19493 var c = -1732584194
19494 var d = 271733878
19495
19496 for (var i = 0; i < x.length; i += 16) {
19497 var olda = a
19498 var oldb = b
19499 var oldc = c
19500 var oldd = d
19501
19502 a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936)
19503 d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586)
19504 c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819)
19505 b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330)
19506 a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897)
19507 d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426)
19508 c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341)
19509 b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983)
19510 a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416)
19511 d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417)
19512 c = md5_ff(c, d, a, b, x[i + 10], 17, -42063)
19513 b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162)
19514 a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682)
19515 d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101)
19516 c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290)
19517 b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329)
19518
19519 a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510)
19520 d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632)
19521 c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713)
19522 b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302)
19523 a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691)
19524 d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083)
19525 c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335)
19526 b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848)
19527 a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438)
19528 d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690)
19529 c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961)
19530 b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501)
19531 a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467)
19532 d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784)
19533 c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473)
19534 b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734)
19535
19536 a = md5_hh(a, b, c, d, x[i + 5], 4, -378558)
19537 d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463)
19538 c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562)
19539 b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556)
19540 a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060)
19541 d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353)
19542 c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632)
19543 b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640)
19544 a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174)
19545 d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222)
19546 c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979)
19547 b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189)
19548 a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487)
19549 d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835)
19550 c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520)
19551 b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651)
19552
19553 a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844)
19554 d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415)
19555 c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905)
19556 b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055)
19557 a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571)
19558 d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606)
19559 c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523)
19560 b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799)
19561 a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359)
19562 d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744)
19563 c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380)
19564 b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649)
19565 a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070)
19566 d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379)
19567 c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259)
19568 b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551)
19569
19570 a = safe_add(a, olda)
19571 b = safe_add(b, oldb)
19572 c = safe_add(c, oldc)
19573 d = safe_add(d, oldd)
19574 }
19575
19576 return [a, b, c, d]
19577 }
19578
19579 /*
19580 * These functions implement the four basic operations the algorithm uses.
19581 */
19582 function md5_cmn (q, a, b, x, s, t) {
19583 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b)
19584 }
19585
19586 function md5_ff (a, b, c, d, x, s, t) {
19587 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t)
19588 }
19589
19590 function md5_gg (a, b, c, d, x, s, t) {
19591 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t)
19592 }
19593
19594 function md5_hh (a, b, c, d, x, s, t) {
19595 return md5_cmn(b ^ c ^ d, a, b, x, s, t)
19596 }
19597
19598 function md5_ii (a, b, c, d, x, s, t) {
19599 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t)
19600 }
19601
19602 /*
19603 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
19604 * to work around bugs in some JS interpreters.
19605 */
19606 function safe_add (x, y) {
19607 var lsw = (x & 0xFFFF) + (y & 0xFFFF)
19608 var msw = (x >> 16) + (y >> 16) + (lsw >> 16)
19609 return (msw << 16) | (lsw & 0xFFFF)
19610 }
19611
19612 /*
19613 * Bitwise rotate a 32-bit number to the left.
19614 */
19615 function bit_rol (num, cnt) {
19616 return (num << cnt) | (num >>> (32 - cnt))
19617 }
19618
19619 module.exports = function md5 (buf) {
19620 return makeHash(buf, core_md5)
19621 }
19622
19623 },{"./make-hash":83}],85:[function(require,module,exports){
19624 'use strict'
19625 var inherits = require('inherits')
19626 var Legacy = require('./legacy')
19627 var Base = require('cipher-base')
19628 var Buffer = require('safe-buffer').Buffer
19629 var md5 = require('create-hash/md5')
19630 var RIPEMD160 = require('ripemd160')
19631
19632 var sha = require('sha.js')
19633
19634 var ZEROS = Buffer.alloc(128)
19635
19636 function Hmac (alg, key) {
19637 Base.call(this, 'digest')
19638 if (typeof key === 'string') {
19639 key = Buffer.from(key)
19640 }
19641
19642 var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64
19643
19644 this._alg = alg
19645 this._key = key
19646 if (key.length > blocksize) {
19647 var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)
19648 key = hash.update(key).digest()
19649 } else if (key.length < blocksize) {
19650 key = Buffer.concat([key, ZEROS], blocksize)
19651 }
19652
19653 var ipad = this._ipad = Buffer.allocUnsafe(blocksize)
19654 var opad = this._opad = Buffer.allocUnsafe(blocksize)
19655
19656 for (var i = 0; i < blocksize; i++) {
19657 ipad[i] = key[i] ^ 0x36
19658 opad[i] = key[i] ^ 0x5C
19659 }
19660 this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)
19661 this._hash.update(ipad)
19662 }
19663
19664 inherits(Hmac, Base)
19665
19666 Hmac.prototype._update = function (data) {
19667 this._hash.update(data)
19668 }
19669
19670 Hmac.prototype._final = function () {
19671 var h = this._hash.digest()
19672 var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)
19673 return hash.update(this._opad).update(h).digest()
19674 }
19675
19676 module.exports = function createHmac (alg, key) {
19677 alg = alg.toLowerCase()
19678 if (alg === 'rmd160' || alg === 'ripemd160') {
19679 return new Hmac('rmd160', key)
19680 }
19681 if (alg === 'md5') {
19682 return new Legacy(md5, key)
19683 }
19684 return new Hmac(alg, key)
19685 }
19686
19687 },{"./legacy":86,"cipher-base":81,"create-hash/md5":84,"inherits":93,"ripemd160":97,"safe-buffer":98,"sha.js":100}],86:[function(require,module,exports){
19688 'use strict'
19689 var inherits = require('inherits')
19690 var Buffer = require('safe-buffer').Buffer
19691
19692 var Base = require('cipher-base')
19693
19694 var ZEROS = Buffer.alloc(128)
19695 var blocksize = 64
19696
19697 function Hmac (alg, key) {
19698 Base.call(this, 'digest')
19699 if (typeof key === 'string') {
19700 key = Buffer.from(key)
19701 }
19702
19703 this._alg = alg
19704 this._key = key
19705
19706 if (key.length > blocksize) {
19707 key = alg(key)
19708 } else if (key.length < blocksize) {
19709 key = Buffer.concat([key, ZEROS], blocksize)
19710 }
19711
19712 var ipad = this._ipad = Buffer.allocUnsafe(blocksize)
19713 var opad = this._opad = Buffer.allocUnsafe(blocksize)
19714
19715 for (var i = 0; i < blocksize; i++) {
19716 ipad[i] = key[i] ^ 0x36
19717 opad[i] = key[i] ^ 0x5C
19718 }
19719
19720 this._hash = [ipad]
19721 }
19722
19723 inherits(Hmac, Base)
19724
19725 Hmac.prototype._update = function (data) {
19726 this._hash.push(data)
19727 }
19728
19729 Hmac.prototype._final = function () {
19730 var h = this._alg(Buffer.concat(this._hash))
19731 return this._alg(Buffer.concat([this._opad, h]))
19732 }
19733 module.exports = Hmac
19734
19735 },{"cipher-base":81,"inherits":93,"safe-buffer":98}],87:[function(require,module,exports){
19736 var assert = require('assert')
19737 var BigInteger = require('bigi')
19738
19739 var Point = require('./point')
19740
19741 function Curve (p, a, b, Gx, Gy, n, h) {
19742 this.p = p
19743 this.a = a
19744 this.b = b
19745 this.G = Point.fromAffine(this, Gx, Gy)
19746 this.n = n
19747 this.h = h
19748
19749 this.infinity = new Point(this, null, null, BigInteger.ZERO)
19750
19751 // result caching
19752 this.pOverFour = p.add(BigInteger.ONE).shiftRight(2)
19753
19754 // determine size of p in bytes
19755 this.pLength = Math.floor((this.p.bitLength() + 7) / 8)
19756 }
19757
19758 Curve.prototype.pointFromX = function (isOdd, x) {
19759 var alpha = x.pow(3).add(this.a.multiply(x)).add(this.b).mod(this.p)
19760 var beta = alpha.modPow(this.pOverFour, this.p) // XXX: not compatible with all curves
19761
19762 var y = beta
19763 if (beta.isEven() ^ !isOdd) {
19764 y = this.p.subtract(y) // -y % p
19765 }
19766
19767 return Point.fromAffine(this, x, y)
19768 }
19769
19770 Curve.prototype.isInfinity = function (Q) {
19771 if (Q === this.infinity) return true
19772
19773 return Q.z.signum() === 0 && Q.y.signum() !== 0
19774 }
19775
19776 Curve.prototype.isOnCurve = function (Q) {
19777 if (this.isInfinity(Q)) return true
19778
19779 var x = Q.affineX
19780 var y = Q.affineY
19781 var a = this.a
19782 var b = this.b
19783 var p = this.p
19784
19785 // Check that xQ and yQ are integers in the interval [0, p - 1]
19786 if (x.signum() < 0 || x.compareTo(p) >= 0) return false
19787 if (y.signum() < 0 || y.compareTo(p) >= 0) return false
19788
19789 // and check that y^2 = x^3 + ax + b (mod p)
19790 var lhs = y.square().mod(p)
19791 var rhs = x.pow(3).add(a.multiply(x)).add(b).mod(p)
19792 return lhs.equals(rhs)
19793 }
19794
19795 /**
19796 * Validate an elliptic curve point.
19797 *
19798 * See SEC 1, section 3.2.2.1: Elliptic Curve Public Key Validation Primitive
19799 */
19800 Curve.prototype.validate = function (Q) {
19801 // Check Q != O
19802 assert(!this.isInfinity(Q), 'Point is at infinity')
19803 assert(this.isOnCurve(Q), 'Point is not on the curve')
19804
19805 // Check nQ = O (where Q is a scalar multiple of G)
19806 var nQ = Q.multiply(this.n)
19807 assert(this.isInfinity(nQ), 'Point is not a scalar multiple of G')
19808
19809 return true
19810 }
19811
19812 module.exports = Curve
19813
19814 },{"./point":91,"assert":1,"bigi":37}],88:[function(require,module,exports){
19815 module.exports={
19816 "secp128r1": {
19817 "p": "fffffffdffffffffffffffffffffffff",
19818 "a": "fffffffdfffffffffffffffffffffffc",
19819 "b": "e87579c11079f43dd824993c2cee5ed3",
19820 "n": "fffffffe0000000075a30d1b9038a115",
19821 "h": "01",
19822 "Gx": "161ff7528b899b2d0c28607ca52c5b86",
19823 "Gy": "cf5ac8395bafeb13c02da292dded7a83"
19824 },
19825 "secp160k1": {
19826 "p": "fffffffffffffffffffffffffffffffeffffac73",
19827 "a": "00",
19828 "b": "07",
19829 "n": "0100000000000000000001b8fa16dfab9aca16b6b3",
19830 "h": "01",
19831 "Gx": "3b4c382ce37aa192a4019e763036f4f5dd4d7ebb",
19832 "Gy": "938cf935318fdced6bc28286531733c3f03c4fee"
19833 },
19834 "secp160r1": {
19835 "p": "ffffffffffffffffffffffffffffffff7fffffff",
19836 "a": "ffffffffffffffffffffffffffffffff7ffffffc",
19837 "b": "1c97befc54bd7a8b65acf89f81d4d4adc565fa45",
19838 "n": "0100000000000000000001f4c8f927aed3ca752257",
19839 "h": "01",
19840 "Gx": "4a96b5688ef573284664698968c38bb913cbfc82",
19841 "Gy": "23a628553168947d59dcc912042351377ac5fb32"
19842 },
19843 "secp192k1": {
19844 "p": "fffffffffffffffffffffffffffffffffffffffeffffee37",
19845 "a": "00",
19846 "b": "03",
19847 "n": "fffffffffffffffffffffffe26f2fc170f69466a74defd8d",
19848 "h": "01",
19849 "Gx": "db4ff10ec057e9ae26b07d0280b7f4341da5d1b1eae06c7d",
19850 "Gy": "9b2f2f6d9c5628a7844163d015be86344082aa88d95e2f9d"
19851 },
19852 "secp192r1": {
19853 "p": "fffffffffffffffffffffffffffffffeffffffffffffffff",
19854 "a": "fffffffffffffffffffffffffffffffefffffffffffffffc",
19855 "b": "64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1",
19856 "n": "ffffffffffffffffffffffff99def836146bc9b1b4d22831",
19857 "h": "01",
19858 "Gx": "188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012",
19859 "Gy": "07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
19860 },
19861 "secp256k1": {
19862 "p": "fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f",
19863 "a": "00",
19864 "b": "07",
19865 "n": "fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141",
19866 "h": "01",
19867 "Gx": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
19868 "Gy": "483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8"
19869 },
19870 "secp256r1": {
19871 "p": "ffffffff00000001000000000000000000000000ffffffffffffffffffffffff",
19872 "a": "ffffffff00000001000000000000000000000000fffffffffffffffffffffffc",
19873 "b": "5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b",
19874 "n": "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551",
19875 "h": "01",
19876 "Gx": "6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296",
19877 "Gy": "4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5"
19878 }
19879 }
19880
19881 },{}],89:[function(require,module,exports){
19882 var Point = require('./point')
19883 var Curve = require('./curve')
19884
19885 var getCurveByName = require('./names')
19886
19887 module.exports = {
19888 Curve: Curve,
19889 Point: Point,
19890 getCurveByName: getCurveByName
19891 }
19892
19893 },{"./curve":87,"./names":90,"./point":91}],90:[function(require,module,exports){
19894 var BigInteger = require('bigi')
19895
19896 var curves = require('./curves.json')
19897 var Curve = require('./curve')
19898
19899 function getCurveByName (name) {
19900 var curve = curves[name]
19901 if (!curve) return null
19902
19903 var p = new BigInteger(curve.p, 16)
19904 var a = new BigInteger(curve.a, 16)
19905 var b = new BigInteger(curve.b, 16)
19906 var n = new BigInteger(curve.n, 16)
19907 var h = new BigInteger(curve.h, 16)
19908 var Gx = new BigInteger(curve.Gx, 16)
19909 var Gy = new BigInteger(curve.Gy, 16)
19910
19911 return new Curve(p, a, b, Gx, Gy, n, h)
19912 }
19913
19914 module.exports = getCurveByName
19915
19916 },{"./curve":87,"./curves.json":88,"bigi":37}],91:[function(require,module,exports){
19917 (function (Buffer){
19918 var assert = require('assert')
19919 var BigInteger = require('bigi')
19920
19921 var THREE = BigInteger.valueOf(3)
19922
19923 function Point (curve, x, y, z) {
19924 assert.notStrictEqual(z, undefined, 'Missing Z coordinate')
19925
19926 this.curve = curve
19927 this.x = x
19928 this.y = y
19929 this.z = z
19930 this._zInv = null
19931
19932 this.compressed = true
19933 }
19934
19935 Object.defineProperty(Point.prototype, 'zInv', {
19936 get: function () {
19937 if (this._zInv === null) {
19938 this._zInv = this.z.modInverse(this.curve.p)
19939 }
19940
19941 return this._zInv
19942 }
19943 })
19944
19945 Object.defineProperty(Point.prototype, 'affineX', {
19946 get: function () {
19947 return this.x.multiply(this.zInv).mod(this.curve.p)
19948 }
19949 })
19950
19951 Object.defineProperty(Point.prototype, 'affineY', {
19952 get: function () {
19953 return this.y.multiply(this.zInv).mod(this.curve.p)
19954 }
19955 })
19956
19957 Point.fromAffine = function (curve, x, y) {
19958 return new Point(curve, x, y, BigInteger.ONE)
19959 }
19960
19961 Point.prototype.equals = function (other) {
19962 if (other === this) return true
19963 if (this.curve.isInfinity(this)) return this.curve.isInfinity(other)
19964 if (this.curve.isInfinity(other)) return this.curve.isInfinity(this)
19965
19966 // u = Y2 * Z1 - Y1 * Z2
19967 var u = other.y.multiply(this.z).subtract(this.y.multiply(other.z)).mod(this.curve.p)
19968
19969 if (u.signum() !== 0) return false
19970
19971 // v = X2 * Z1 - X1 * Z2
19972 var v = other.x.multiply(this.z).subtract(this.x.multiply(other.z)).mod(this.curve.p)
19973
19974 return v.signum() === 0
19975 }
19976
19977 Point.prototype.negate = function () {
19978 var y = this.curve.p.subtract(this.y)
19979
19980 return new Point(this.curve, this.x, y, this.z)
19981 }
19982
19983 Point.prototype.add = function (b) {
19984 if (this.curve.isInfinity(this)) return b
19985 if (this.curve.isInfinity(b)) return this
19986
19987 var x1 = this.x
19988 var y1 = this.y
19989 var x2 = b.x
19990 var y2 = b.y
19991
19992 // u = Y2 * Z1 - Y1 * Z2
19993 var u = y2.multiply(this.z).subtract(y1.multiply(b.z)).mod(this.curve.p)
19994 // v = X2 * Z1 - X1 * Z2
19995 var v = x2.multiply(this.z).subtract(x1.multiply(b.z)).mod(this.curve.p)
19996
19997 if (v.signum() === 0) {
19998 if (u.signum() === 0) {
19999 return this.twice() // this == b, so double
20000 }
20001
20002 return this.curve.infinity // this = -b, so infinity
20003 }
20004
20005 var v2 = v.square()
20006 var v3 = v2.multiply(v)
20007 var x1v2 = x1.multiply(v2)
20008 var zu2 = u.square().multiply(this.z)
20009
20010 // x3 = v * (z2 * (z1 * u^2 - 2 * x1 * v^2) - v^3)
20011 var x3 = zu2.subtract(x1v2.shiftLeft(1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.p)
20012 // y3 = z2 * (3 * x1 * u * v^2 - y1 * v^3 - z1 * u^3) + u * v^3
20013 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)
20014 // z3 = v^3 * z1 * z2
20015 var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.p)
20016
20017 return new Point(this.curve, x3, y3, z3)
20018 }
20019
20020 Point.prototype.twice = function () {
20021 if (this.curve.isInfinity(this)) return this
20022 if (this.y.signum() === 0) return this.curve.infinity
20023
20024 var x1 = this.x
20025 var y1 = this.y
20026
20027 var y1z1 = y1.multiply(this.z).mod(this.curve.p)
20028 var y1sqz1 = y1z1.multiply(y1).mod(this.curve.p)
20029 var a = this.curve.a
20030
20031 // w = 3 * x1^2 + a * z1^2
20032 var w = x1.square().multiply(THREE)
20033
20034 if (a.signum() !== 0) {
20035 w = w.add(this.z.square().multiply(a))
20036 }
20037
20038 w = w.mod(this.curve.p)
20039 // x3 = 2 * y1 * z1 * (w^2 - 8 * x1 * y1^2 * z1)
20040 var x3 = w.square().subtract(x1.shiftLeft(3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).mod(this.curve.p)
20041 // y3 = 4 * y1^2 * z1 * (3 * w * x1 - 2 * y1^2 * z1) - w^3
20042 var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(1)).shiftLeft(2).multiply(y1sqz1).subtract(w.pow(3)).mod(this.curve.p)
20043 // z3 = 8 * (y1 * z1)^3
20044 var z3 = y1z1.pow(3).shiftLeft(3).mod(this.curve.p)
20045
20046 return new Point(this.curve, x3, y3, z3)
20047 }
20048
20049 // Simple NAF (Non-Adjacent Form) multiplication algorithm
20050 // TODO: modularize the multiplication algorithm
20051 Point.prototype.multiply = function (k) {
20052 if (this.curve.isInfinity(this)) return this
20053 if (k.signum() === 0) return this.curve.infinity
20054
20055 var e = k
20056 var h = e.multiply(THREE)
20057
20058 var neg = this.negate()
20059 var R = this
20060
20061 for (var i = h.bitLength() - 2; i > 0; --i) {
20062 var hBit = h.testBit(i)
20063 var eBit = e.testBit(i)
20064
20065 R = R.twice()
20066
20067 if (hBit !== eBit) {
20068 R = R.add(hBit ? this : neg)
20069 }
20070 }
20071
20072 return R
20073 }
20074
20075 // Compute this*j + x*k (simultaneous multiplication)
20076 Point.prototype.multiplyTwo = function (j, x, k) {
20077 var i = Math.max(j.bitLength(), k.bitLength()) - 1
20078 var R = this.curve.infinity
20079 var both = this.add(x)
20080
20081 while (i >= 0) {
20082 var jBit = j.testBit(i)
20083 var kBit = k.testBit(i)
20084
20085 R = R.twice()
20086
20087 if (jBit) {
20088 if (kBit) {
20089 R = R.add(both)
20090 } else {
20091 R = R.add(this)
20092 }
20093 } else if (kBit) {
20094 R = R.add(x)
20095 }
20096 --i
20097 }
20098
20099 return R
20100 }
20101
20102 Point.prototype.getEncoded = function (compressed) {
20103 if (compressed == null) compressed = this.compressed
20104 if (this.curve.isInfinity(this)) return new Buffer('00', 'hex') // Infinity point encoded is simply '00'
20105
20106 var x = this.affineX
20107 var y = this.affineY
20108 var byteLength = this.curve.pLength
20109 var buffer
20110
20111 // 0x02/0x03 | X
20112 if (compressed) {
20113 buffer = new Buffer(1 + byteLength)
20114 buffer.writeUInt8(y.isEven() ? 0x02 : 0x03, 0)
20115
20116 // 0x04 | X | Y
20117 } else {
20118 buffer = new Buffer(1 + byteLength + byteLength)
20119 buffer.writeUInt8(0x04, 0)
20120
20121 y.toBuffer(byteLength).copy(buffer, 1 + byteLength)
20122 }
20123
20124 x.toBuffer(byteLength).copy(buffer, 1)
20125
20126 return buffer
20127 }
20128
20129 Point.decodeFrom = function (curve, buffer) {
20130 var type = buffer.readUInt8(0)
20131 var compressed = (type !== 4)
20132
20133 var byteLength = Math.floor((curve.p.bitLength() + 7) / 8)
20134 var x = BigInteger.fromBuffer(buffer.slice(1, 1 + byteLength))
20135
20136 var Q
20137 if (compressed) {
20138 assert.equal(buffer.length, byteLength + 1, 'Invalid sequence length')
20139 assert(type === 0x02 || type === 0x03, 'Invalid sequence tag')
20140
20141 var isOdd = (type === 0x03)
20142 Q = curve.pointFromX(isOdd, x)
20143 } else {
20144 assert.equal(buffer.length, 1 + byteLength + byteLength, 'Invalid sequence length')
20145
20146 var y = BigInteger.fromBuffer(buffer.slice(1 + byteLength))
20147 Q = Point.fromAffine(curve, x, y)
20148 }
20149
20150 Q.compressed = compressed
20151 return Q
20152 }
20153
20154 Point.prototype.toString = function () {
20155 if (this.curve.isInfinity(this)) return '(INFINITY)'
20156
20157 return '(' + this.affineX.toString() + ',' + this.affineY.toString() + ')'
20158 }
20159
20160 module.exports = Point
20161
20162 }).call(this,require("buffer").Buffer)
20163 },{"assert":1,"bigi":37,"buffer":4}],92:[function(require,module,exports){
20164 (function (Buffer){
20165 'use strict'
20166 var Transform = require('stream').Transform
20167 var inherits = require('inherits')
20168
20169 function HashBase (blockSize) {
20170 Transform.call(this)
20171
20172 this._block = new Buffer(blockSize)
20173 this._blockSize = blockSize
20174 this._blockOffset = 0
20175 this._length = [0, 0, 0, 0]
20176
20177 this._finalized = false
20178 }
20179
20180 inherits(HashBase, Transform)
20181
20182 HashBase.prototype._transform = function (chunk, encoding, callback) {
20183 var error = null
20184 try {
20185 if (encoding !== 'buffer') chunk = new Buffer(chunk, encoding)
20186 this.update(chunk)
20187 } catch (err) {
20188 error = err
20189 }
20190
20191 callback(error)
20192 }
20193
20194 HashBase.prototype._flush = function (callback) {
20195 var error = null
20196 try {
20197 this.push(this._digest())
20198 } catch (err) {
20199 error = err
20200 }
20201
20202 callback(error)
20203 }
20204
20205 HashBase.prototype.update = function (data, encoding) {
20206 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
20207 if (this._finalized) throw new Error('Digest already called')
20208 if (!Buffer.isBuffer(data)) data = new Buffer(data, encoding || 'binary')
20209
20210 // consume data
20211 var block = this._block
20212 var offset = 0
20213 while (this._blockOffset + data.length - offset >= this._blockSize) {
20214 for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]
20215 this._update()
20216 this._blockOffset = 0
20217 }
20218 while (offset < data.length) block[this._blockOffset++] = data[offset++]
20219
20220 // update length
20221 for (var j = 0, carry = data.length * 8; carry > 0; ++j) {
20222 this._length[j] += carry
20223 carry = (this._length[j] / 0x0100000000) | 0
20224 if (carry > 0) this._length[j] -= 0x0100000000 * carry
20225 }
20226
20227 return this
20228 }
20229
20230 HashBase.prototype._update = function (data) {
20231 throw new Error('_update is not implemented')
20232 }
20233
20234 HashBase.prototype.digest = function (encoding) {
20235 if (this._finalized) throw new Error('Digest already called')
20236 this._finalized = true
20237
20238 var digest = this._digest()
20239 if (encoding !== undefined) digest = digest.toString(encoding)
20240 return digest
20241 }
20242
20243 HashBase.prototype._digest = function () {
20244 throw new Error('_digest is not implemented')
20245 }
20246
20247 module.exports = HashBase
20248
20249 }).call(this,require("buffer").Buffer)
20250 },{"buffer":4,"inherits":93,"stream":27}],93:[function(require,module,exports){
20251 arguments[4][8][0].apply(exports,arguments)
20252 },{"dup":8}],94:[function(require,module,exports){
20253 (function (Buffer){
20254 // constant-space merkle root calculation algorithm
20255 module.exports = function fastRoot (values, digestFn) {
20256 if (!Array.isArray(values)) throw TypeError('Expected values Array')
20257 if (typeof digestFn !== 'function') throw TypeError('Expected digest Function')
20258
20259 var length = values.length
20260 var results = values.concat()
20261
20262 while (length > 1) {
20263 var j = 0
20264
20265 for (var i = 0; i < length; i += 2, ++j) {
20266 var left = results[i]
20267 var right = i + 1 === length ? left : results[i + 1]
20268 var data = Buffer.concat([left, right])
20269
20270 results[j] = digestFn(data)
20271 }
20272
20273 length = j
20274 }
20275
20276 return results[0]
20277 }
20278
20279 }).call(this,require("buffer").Buffer)
20280 },{"buffer":4}],95:[function(require,module,exports){
20281 var OPS = require('bitcoin-ops')
20282
20283 function encodingLength (i) {
20284 return i < OPS.OP_PUSHDATA1 ? 1
20285 : i <= 0xff ? 2
20286 : i <= 0xffff ? 3
20287 : 5
20288 }
20289
20290 function encode (buffer, number, offset) {
20291 var size = encodingLength(number)
20292
20293 // ~6 bit
20294 if (size === 1) {
20295 buffer.writeUInt8(number, offset)
20296
20297 // 8 bit
20298 } else if (size === 2) {
20299 buffer.writeUInt8(OPS.OP_PUSHDATA1, offset)
20300 buffer.writeUInt8(number, offset + 1)
20301
20302 // 16 bit
20303 } else if (size === 3) {
20304 buffer.writeUInt8(OPS.OP_PUSHDATA2, offset)
20305 buffer.writeUInt16LE(number, offset + 1)
20306
20307 // 32 bit
20308 } else {
20309 buffer.writeUInt8(OPS.OP_PUSHDATA4, offset)
20310 buffer.writeUInt32LE(number, offset + 1)
20311 }
20312
20313 return size
20314 }
20315
20316 function decode (buffer, offset) {
20317 var opcode = buffer.readUInt8(offset)
20318 var number, size
20319
20320 // ~6 bit
20321 if (opcode < OPS.OP_PUSHDATA1) {
20322 number = opcode
20323 size = 1
20324
20325 // 8 bit
20326 } else if (opcode === OPS.OP_PUSHDATA1) {
20327 if (offset + 2 > buffer.length) return null
20328 number = buffer.readUInt8(offset + 1)
20329 size = 2
20330
20331 // 16 bit
20332 } else if (opcode === OPS.OP_PUSHDATA2) {
20333 if (offset + 3 > buffer.length) return null
20334 number = buffer.readUInt16LE(offset + 1)
20335 size = 3
20336
20337 // 32 bit
20338 } else {
20339 if (offset + 5 > buffer.length) return null
20340 if (opcode !== OPS.OP_PUSHDATA4) throw new Error('Unexpected opcode')
20341
20342 number = buffer.readUInt32LE(offset + 1)
20343 size = 5
20344 }
20345
20346 return {
20347 opcode: opcode,
20348 number: number,
20349 size: size
20350 }
20351 }
20352
20353 module.exports = {
20354 encodingLength: encodingLength,
20355 encode: encode,
20356 decode: decode
20357 }
20358
20359 },{"bitcoin-ops":40}],96:[function(require,module,exports){
20360 (function (process,global){
20361 'use strict'
20362
20363 function oldBrowser () {
20364 throw new Error('secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11')
20365 }
20366
20367 var Buffer = require('safe-buffer').Buffer
20368 var crypto = global.crypto || global.msCrypto
20369
20370 if (crypto && crypto.getRandomValues) {
20371 module.exports = randomBytes
20372 } else {
20373 module.exports = oldBrowser
20374 }
20375
20376 function randomBytes (size, cb) {
20377 // phantomjs needs to throw
20378 if (size > 65536) throw new Error('requested too many random bytes')
20379 // in case browserify isn't using the Uint8Array version
20380 var rawBytes = new global.Uint8Array(size)
20381
20382 // This will not work in older browsers.
20383 // See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues
20384 if (size > 0) { // getRandomValues fails on IE if size == 0
20385 crypto.getRandomValues(rawBytes)
20386 }
20387
20388 // XXX: phantomjs doesn't like a buffer being passed here
20389 var bytes = Buffer.from(rawBytes.buffer)
20390
20391 if (typeof cb === 'function') {
20392 return process.nextTick(function () {
20393 cb(null, bytes)
20394 })
20395 }
20396
20397 return bytes
20398 }
20399
20400 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
20401 },{"_process":12,"safe-buffer":98}],97:[function(require,module,exports){
20402 (function (Buffer){
20403 'use strict'
20404 var inherits = require('inherits')
20405 var HashBase = require('hash-base')
20406
20407 function RIPEMD160 () {
20408 HashBase.call(this, 64)
20409
20410 // state
20411 this._a = 0x67452301
20412 this._b = 0xefcdab89
20413 this._c = 0x98badcfe
20414 this._d = 0x10325476
20415 this._e = 0xc3d2e1f0
20416 }
20417
20418 inherits(RIPEMD160, HashBase)
20419
20420 RIPEMD160.prototype._update = function () {
20421 var m = new Array(16)
20422 for (var i = 0; i < 16; ++i) m[i] = this._block.readInt32LE(i * 4)
20423
20424 var al = this._a
20425 var bl = this._b
20426 var cl = this._c
20427 var dl = this._d
20428 var el = this._e
20429
20430 // Mj = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
20431 // K = 0x00000000
20432 // Sj = 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8
20433 al = fn1(al, bl, cl, dl, el, m[0], 0x00000000, 11); cl = rotl(cl, 10)
20434 el = fn1(el, al, bl, cl, dl, m[1], 0x00000000, 14); bl = rotl(bl, 10)
20435 dl = fn1(dl, el, al, bl, cl, m[2], 0x00000000, 15); al = rotl(al, 10)
20436 cl = fn1(cl, dl, el, al, bl, m[3], 0x00000000, 12); el = rotl(el, 10)
20437 bl = fn1(bl, cl, dl, el, al, m[4], 0x00000000, 5); dl = rotl(dl, 10)
20438 al = fn1(al, bl, cl, dl, el, m[5], 0x00000000, 8); cl = rotl(cl, 10)
20439 el = fn1(el, al, bl, cl, dl, m[6], 0x00000000, 7); bl = rotl(bl, 10)
20440 dl = fn1(dl, el, al, bl, cl, m[7], 0x00000000, 9); al = rotl(al, 10)
20441 cl = fn1(cl, dl, el, al, bl, m[8], 0x00000000, 11); el = rotl(el, 10)
20442 bl = fn1(bl, cl, dl, el, al, m[9], 0x00000000, 13); dl = rotl(dl, 10)
20443 al = fn1(al, bl, cl, dl, el, m[10], 0x00000000, 14); cl = rotl(cl, 10)
20444 el = fn1(el, al, bl, cl, dl, m[11], 0x00000000, 15); bl = rotl(bl, 10)
20445 dl = fn1(dl, el, al, bl, cl, m[12], 0x00000000, 6); al = rotl(al, 10)
20446 cl = fn1(cl, dl, el, al, bl, m[13], 0x00000000, 7); el = rotl(el, 10)
20447 bl = fn1(bl, cl, dl, el, al, m[14], 0x00000000, 9); dl = rotl(dl, 10)
20448 al = fn1(al, bl, cl, dl, el, m[15], 0x00000000, 8); cl = rotl(cl, 10)
20449
20450 // Mj = 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8
20451 // K = 0x5a827999
20452 // Sj = 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12
20453 el = fn2(el, al, bl, cl, dl, m[7], 0x5a827999, 7); bl = rotl(bl, 10)
20454 dl = fn2(dl, el, al, bl, cl, m[4], 0x5a827999, 6); al = rotl(al, 10)
20455 cl = fn2(cl, dl, el, al, bl, m[13], 0x5a827999, 8); el = rotl(el, 10)
20456 bl = fn2(bl, cl, dl, el, al, m[1], 0x5a827999, 13); dl = rotl(dl, 10)
20457 al = fn2(al, bl, cl, dl, el, m[10], 0x5a827999, 11); cl = rotl(cl, 10)
20458 el = fn2(el, al, bl, cl, dl, m[6], 0x5a827999, 9); bl = rotl(bl, 10)
20459 dl = fn2(dl, el, al, bl, cl, m[15], 0x5a827999, 7); al = rotl(al, 10)
20460 cl = fn2(cl, dl, el, al, bl, m[3], 0x5a827999, 15); el = rotl(el, 10)
20461 bl = fn2(bl, cl, dl, el, al, m[12], 0x5a827999, 7); dl = rotl(dl, 10)
20462 al = fn2(al, bl, cl, dl, el, m[0], 0x5a827999, 12); cl = rotl(cl, 10)
20463 el = fn2(el, al, bl, cl, dl, m[9], 0x5a827999, 15); bl = rotl(bl, 10)
20464 dl = fn2(dl, el, al, bl, cl, m[5], 0x5a827999, 9); al = rotl(al, 10)
20465 cl = fn2(cl, dl, el, al, bl, m[2], 0x5a827999, 11); el = rotl(el, 10)
20466 bl = fn2(bl, cl, dl, el, al, m[14], 0x5a827999, 7); dl = rotl(dl, 10)
20467 al = fn2(al, bl, cl, dl, el, m[11], 0x5a827999, 13); cl = rotl(cl, 10)
20468 el = fn2(el, al, bl, cl, dl, m[8], 0x5a827999, 12); bl = rotl(bl, 10)
20469
20470 // Mj = 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12
20471 // K = 0x6ed9eba1
20472 // Sj = 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5
20473 dl = fn3(dl, el, al, bl, cl, m[3], 0x6ed9eba1, 11); al = rotl(al, 10)
20474 cl = fn3(cl, dl, el, al, bl, m[10], 0x6ed9eba1, 13); el = rotl(el, 10)
20475 bl = fn3(bl, cl, dl, el, al, m[14], 0x6ed9eba1, 6); dl = rotl(dl, 10)
20476 al = fn3(al, bl, cl, dl, el, m[4], 0x6ed9eba1, 7); cl = rotl(cl, 10)
20477 el = fn3(el, al, bl, cl, dl, m[9], 0x6ed9eba1, 14); bl = rotl(bl, 10)
20478 dl = fn3(dl, el, al, bl, cl, m[15], 0x6ed9eba1, 9); al = rotl(al, 10)
20479 cl = fn3(cl, dl, el, al, bl, m[8], 0x6ed9eba1, 13); el = rotl(el, 10)
20480 bl = fn3(bl, cl, dl, el, al, m[1], 0x6ed9eba1, 15); dl = rotl(dl, 10)
20481 al = fn3(al, bl, cl, dl, el, m[2], 0x6ed9eba1, 14); cl = rotl(cl, 10)
20482 el = fn3(el, al, bl, cl, dl, m[7], 0x6ed9eba1, 8); bl = rotl(bl, 10)
20483 dl = fn3(dl, el, al, bl, cl, m[0], 0x6ed9eba1, 13); al = rotl(al, 10)
20484 cl = fn3(cl, dl, el, al, bl, m[6], 0x6ed9eba1, 6); el = rotl(el, 10)
20485 bl = fn3(bl, cl, dl, el, al, m[13], 0x6ed9eba1, 5); dl = rotl(dl, 10)
20486 al = fn3(al, bl, cl, dl, el, m[11], 0x6ed9eba1, 12); cl = rotl(cl, 10)
20487 el = fn3(el, al, bl, cl, dl, m[5], 0x6ed9eba1, 7); bl = rotl(bl, 10)
20488 dl = fn3(dl, el, al, bl, cl, m[12], 0x6ed9eba1, 5); al = rotl(al, 10)
20489
20490 // Mj = 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2
20491 // K = 0x8f1bbcdc
20492 // Sj = 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12
20493 cl = fn4(cl, dl, el, al, bl, m[1], 0x8f1bbcdc, 11); el = rotl(el, 10)
20494 bl = fn4(bl, cl, dl, el, al, m[9], 0x8f1bbcdc, 12); dl = rotl(dl, 10)
20495 al = fn4(al, bl, cl, dl, el, m[11], 0x8f1bbcdc, 14); cl = rotl(cl, 10)
20496 el = fn4(el, al, bl, cl, dl, m[10], 0x8f1bbcdc, 15); bl = rotl(bl, 10)
20497 dl = fn4(dl, el, al, bl, cl, m[0], 0x8f1bbcdc, 14); al = rotl(al, 10)
20498 cl = fn4(cl, dl, el, al, bl, m[8], 0x8f1bbcdc, 15); el = rotl(el, 10)
20499 bl = fn4(bl, cl, dl, el, al, m[12], 0x8f1bbcdc, 9); dl = rotl(dl, 10)
20500 al = fn4(al, bl, cl, dl, el, m[4], 0x8f1bbcdc, 8); cl = rotl(cl, 10)
20501 el = fn4(el, al, bl, cl, dl, m[13], 0x8f1bbcdc, 9); bl = rotl(bl, 10)
20502 dl = fn4(dl, el, al, bl, cl, m[3], 0x8f1bbcdc, 14); al = rotl(al, 10)
20503 cl = fn4(cl, dl, el, al, bl, m[7], 0x8f1bbcdc, 5); el = rotl(el, 10)
20504 bl = fn4(bl, cl, dl, el, al, m[15], 0x8f1bbcdc, 6); dl = rotl(dl, 10)
20505 al = fn4(al, bl, cl, dl, el, m[14], 0x8f1bbcdc, 8); cl = rotl(cl, 10)
20506 el = fn4(el, al, bl, cl, dl, m[5], 0x8f1bbcdc, 6); bl = rotl(bl, 10)
20507 dl = fn4(dl, el, al, bl, cl, m[6], 0x8f1bbcdc, 5); al = rotl(al, 10)
20508 cl = fn4(cl, dl, el, al, bl, m[2], 0x8f1bbcdc, 12); el = rotl(el, 10)
20509
20510 // Mj = 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
20511 // K = 0xa953fd4e
20512 // Sj = 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
20513 bl = fn5(bl, cl, dl, el, al, m[4], 0xa953fd4e, 9); dl = rotl(dl, 10)
20514 al = fn5(al, bl, cl, dl, el, m[0], 0xa953fd4e, 15); cl = rotl(cl, 10)
20515 el = fn5(el, al, bl, cl, dl, m[5], 0xa953fd4e, 5); bl = rotl(bl, 10)
20516 dl = fn5(dl, el, al, bl, cl, m[9], 0xa953fd4e, 11); al = rotl(al, 10)
20517 cl = fn5(cl, dl, el, al, bl, m[7], 0xa953fd4e, 6); el = rotl(el, 10)
20518 bl = fn5(bl, cl, dl, el, al, m[12], 0xa953fd4e, 8); dl = rotl(dl, 10)
20519 al = fn5(al, bl, cl, dl, el, m[2], 0xa953fd4e, 13); cl = rotl(cl, 10)
20520 el = fn5(el, al, bl, cl, dl, m[10], 0xa953fd4e, 12); bl = rotl(bl, 10)
20521 dl = fn5(dl, el, al, bl, cl, m[14], 0xa953fd4e, 5); al = rotl(al, 10)
20522 cl = fn5(cl, dl, el, al, bl, m[1], 0xa953fd4e, 12); el = rotl(el, 10)
20523 bl = fn5(bl, cl, dl, el, al, m[3], 0xa953fd4e, 13); dl = rotl(dl, 10)
20524 al = fn5(al, bl, cl, dl, el, m[8], 0xa953fd4e, 14); cl = rotl(cl, 10)
20525 el = fn5(el, al, bl, cl, dl, m[11], 0xa953fd4e, 11); bl = rotl(bl, 10)
20526 dl = fn5(dl, el, al, bl, cl, m[6], 0xa953fd4e, 8); al = rotl(al, 10)
20527 cl = fn5(cl, dl, el, al, bl, m[15], 0xa953fd4e, 5); el = rotl(el, 10)
20528 bl = fn5(bl, cl, dl, el, al, m[13], 0xa953fd4e, 6); dl = rotl(dl, 10)
20529
20530 var ar = this._a
20531 var br = this._b
20532 var cr = this._c
20533 var dr = this._d
20534 var er = this._e
20535
20536 // M'j = 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12
20537 // K' = 0x50a28be6
20538 // S'j = 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6
20539 ar = fn5(ar, br, cr, dr, er, m[5], 0x50a28be6, 8); cr = rotl(cr, 10)
20540 er = fn5(er, ar, br, cr, dr, m[14], 0x50a28be6, 9); br = rotl(br, 10)
20541 dr = fn5(dr, er, ar, br, cr, m[7], 0x50a28be6, 9); ar = rotl(ar, 10)
20542 cr = fn5(cr, dr, er, ar, br, m[0], 0x50a28be6, 11); er = rotl(er, 10)
20543 br = fn5(br, cr, dr, er, ar, m[9], 0x50a28be6, 13); dr = rotl(dr, 10)
20544 ar = fn5(ar, br, cr, dr, er, m[2], 0x50a28be6, 15); cr = rotl(cr, 10)
20545 er = fn5(er, ar, br, cr, dr, m[11], 0x50a28be6, 15); br = rotl(br, 10)
20546 dr = fn5(dr, er, ar, br, cr, m[4], 0x50a28be6, 5); ar = rotl(ar, 10)
20547 cr = fn5(cr, dr, er, ar, br, m[13], 0x50a28be6, 7); er = rotl(er, 10)
20548 br = fn5(br, cr, dr, er, ar, m[6], 0x50a28be6, 7); dr = rotl(dr, 10)
20549 ar = fn5(ar, br, cr, dr, er, m[15], 0x50a28be6, 8); cr = rotl(cr, 10)
20550 er = fn5(er, ar, br, cr, dr, m[8], 0x50a28be6, 11); br = rotl(br, 10)
20551 dr = fn5(dr, er, ar, br, cr, m[1], 0x50a28be6, 14); ar = rotl(ar, 10)
20552 cr = fn5(cr, dr, er, ar, br, m[10], 0x50a28be6, 14); er = rotl(er, 10)
20553 br = fn5(br, cr, dr, er, ar, m[3], 0x50a28be6, 12); dr = rotl(dr, 10)
20554 ar = fn5(ar, br, cr, dr, er, m[12], 0x50a28be6, 6); cr = rotl(cr, 10)
20555
20556 // M'j = 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2
20557 // K' = 0x5c4dd124
20558 // S'j = 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11
20559 er = fn4(er, ar, br, cr, dr, m[6], 0x5c4dd124, 9); br = rotl(br, 10)
20560 dr = fn4(dr, er, ar, br, cr, m[11], 0x5c4dd124, 13); ar = rotl(ar, 10)
20561 cr = fn4(cr, dr, er, ar, br, m[3], 0x5c4dd124, 15); er = rotl(er, 10)
20562 br = fn4(br, cr, dr, er, ar, m[7], 0x5c4dd124, 7); dr = rotl(dr, 10)
20563 ar = fn4(ar, br, cr, dr, er, m[0], 0x5c4dd124, 12); cr = rotl(cr, 10)
20564 er = fn4(er, ar, br, cr, dr, m[13], 0x5c4dd124, 8); br = rotl(br, 10)
20565 dr = fn4(dr, er, ar, br, cr, m[5], 0x5c4dd124, 9); ar = rotl(ar, 10)
20566 cr = fn4(cr, dr, er, ar, br, m[10], 0x5c4dd124, 11); er = rotl(er, 10)
20567 br = fn4(br, cr, dr, er, ar, m[14], 0x5c4dd124, 7); dr = rotl(dr, 10)
20568 ar = fn4(ar, br, cr, dr, er, m[15], 0x5c4dd124, 7); cr = rotl(cr, 10)
20569 er = fn4(er, ar, br, cr, dr, m[8], 0x5c4dd124, 12); br = rotl(br, 10)
20570 dr = fn4(dr, er, ar, br, cr, m[12], 0x5c4dd124, 7); ar = rotl(ar, 10)
20571 cr = fn4(cr, dr, er, ar, br, m[4], 0x5c4dd124, 6); er = rotl(er, 10)
20572 br = fn4(br, cr, dr, er, ar, m[9], 0x5c4dd124, 15); dr = rotl(dr, 10)
20573 ar = fn4(ar, br, cr, dr, er, m[1], 0x5c4dd124, 13); cr = rotl(cr, 10)
20574 er = fn4(er, ar, br, cr, dr, m[2], 0x5c4dd124, 11); br = rotl(br, 10)
20575
20576 // M'j = 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13
20577 // K' = 0x6d703ef3
20578 // S'j = 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5
20579 dr = fn3(dr, er, ar, br, cr, m[15], 0x6d703ef3, 9); ar = rotl(ar, 10)
20580 cr = fn3(cr, dr, er, ar, br, m[5], 0x6d703ef3, 7); er = rotl(er, 10)
20581 br = fn3(br, cr, dr, er, ar, m[1], 0x6d703ef3, 15); dr = rotl(dr, 10)
20582 ar = fn3(ar, br, cr, dr, er, m[3], 0x6d703ef3, 11); cr = rotl(cr, 10)
20583 er = fn3(er, ar, br, cr, dr, m[7], 0x6d703ef3, 8); br = rotl(br, 10)
20584 dr = fn3(dr, er, ar, br, cr, m[14], 0x6d703ef3, 6); ar = rotl(ar, 10)
20585 cr = fn3(cr, dr, er, ar, br, m[6], 0x6d703ef3, 6); er = rotl(er, 10)
20586 br = fn3(br, cr, dr, er, ar, m[9], 0x6d703ef3, 14); dr = rotl(dr, 10)
20587 ar = fn3(ar, br, cr, dr, er, m[11], 0x6d703ef3, 12); cr = rotl(cr, 10)
20588 er = fn3(er, ar, br, cr, dr, m[8], 0x6d703ef3, 13); br = rotl(br, 10)
20589 dr = fn3(dr, er, ar, br, cr, m[12], 0x6d703ef3, 5); ar = rotl(ar, 10)
20590 cr = fn3(cr, dr, er, ar, br, m[2], 0x6d703ef3, 14); er = rotl(er, 10)
20591 br = fn3(br, cr, dr, er, ar, m[10], 0x6d703ef3, 13); dr = rotl(dr, 10)
20592 ar = fn3(ar, br, cr, dr, er, m[0], 0x6d703ef3, 13); cr = rotl(cr, 10)
20593 er = fn3(er, ar, br, cr, dr, m[4], 0x6d703ef3, 7); br = rotl(br, 10)
20594 dr = fn3(dr, er, ar, br, cr, m[13], 0x6d703ef3, 5); ar = rotl(ar, 10)
20595
20596 // M'j = 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14
20597 // K' = 0x7a6d76e9
20598 // S'j = 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8
20599 cr = fn2(cr, dr, er, ar, br, m[8], 0x7a6d76e9, 15); er = rotl(er, 10)
20600 br = fn2(br, cr, dr, er, ar, m[6], 0x7a6d76e9, 5); dr = rotl(dr, 10)
20601 ar = fn2(ar, br, cr, dr, er, m[4], 0x7a6d76e9, 8); cr = rotl(cr, 10)
20602 er = fn2(er, ar, br, cr, dr, m[1], 0x7a6d76e9, 11); br = rotl(br, 10)
20603 dr = fn2(dr, er, ar, br, cr, m[3], 0x7a6d76e9, 14); ar = rotl(ar, 10)
20604 cr = fn2(cr, dr, er, ar, br, m[11], 0x7a6d76e9, 14); er = rotl(er, 10)
20605 br = fn2(br, cr, dr, er, ar, m[15], 0x7a6d76e9, 6); dr = rotl(dr, 10)
20606 ar = fn2(ar, br, cr, dr, er, m[0], 0x7a6d76e9, 14); cr = rotl(cr, 10)
20607 er = fn2(er, ar, br, cr, dr, m[5], 0x7a6d76e9, 6); br = rotl(br, 10)
20608 dr = fn2(dr, er, ar, br, cr, m[12], 0x7a6d76e9, 9); ar = rotl(ar, 10)
20609 cr = fn2(cr, dr, er, ar, br, m[2], 0x7a6d76e9, 12); er = rotl(er, 10)
20610 br = fn2(br, cr, dr, er, ar, m[13], 0x7a6d76e9, 9); dr = rotl(dr, 10)
20611 ar = fn2(ar, br, cr, dr, er, m[9], 0x7a6d76e9, 12); cr = rotl(cr, 10)
20612 er = fn2(er, ar, br, cr, dr, m[7], 0x7a6d76e9, 5); br = rotl(br, 10)
20613 dr = fn2(dr, er, ar, br, cr, m[10], 0x7a6d76e9, 15); ar = rotl(ar, 10)
20614 cr = fn2(cr, dr, er, ar, br, m[14], 0x7a6d76e9, 8); er = rotl(er, 10)
20615
20616 // M'j = 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
20617 // K' = 0x00000000
20618 // S'j = 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
20619 br = fn1(br, cr, dr, er, ar, m[12], 0x00000000, 8); dr = rotl(dr, 10)
20620 ar = fn1(ar, br, cr, dr, er, m[15], 0x00000000, 5); cr = rotl(cr, 10)
20621 er = fn1(er, ar, br, cr, dr, m[10], 0x00000000, 12); br = rotl(br, 10)
20622 dr = fn1(dr, er, ar, br, cr, m[4], 0x00000000, 9); ar = rotl(ar, 10)
20623 cr = fn1(cr, dr, er, ar, br, m[1], 0x00000000, 12); er = rotl(er, 10)
20624 br = fn1(br, cr, dr, er, ar, m[5], 0x00000000, 5); dr = rotl(dr, 10)
20625 ar = fn1(ar, br, cr, dr, er, m[8], 0x00000000, 14); cr = rotl(cr, 10)
20626 er = fn1(er, ar, br, cr, dr, m[7], 0x00000000, 6); br = rotl(br, 10)
20627 dr = fn1(dr, er, ar, br, cr, m[6], 0x00000000, 8); ar = rotl(ar, 10)
20628 cr = fn1(cr, dr, er, ar, br, m[2], 0x00000000, 13); er = rotl(er, 10)
20629 br = fn1(br, cr, dr, er, ar, m[13], 0x00000000, 6); dr = rotl(dr, 10)
20630 ar = fn1(ar, br, cr, dr, er, m[14], 0x00000000, 5); cr = rotl(cr, 10)
20631 er = fn1(er, ar, br, cr, dr, m[0], 0x00000000, 15); br = rotl(br, 10)
20632 dr = fn1(dr, er, ar, br, cr, m[3], 0x00000000, 13); ar = rotl(ar, 10)
20633 cr = fn1(cr, dr, er, ar, br, m[9], 0x00000000, 11); er = rotl(er, 10)
20634 br = fn1(br, cr, dr, er, ar, m[11], 0x00000000, 11); dr = rotl(dr, 10)
20635
20636 // change state
20637 var t = (this._b + cl + dr) | 0
20638 this._b = (this._c + dl + er) | 0
20639 this._c = (this._d + el + ar) | 0
20640 this._d = (this._e + al + br) | 0
20641 this._e = (this._a + bl + cr) | 0
20642 this._a = t
20643 }
20644
20645 RIPEMD160.prototype._digest = function () {
20646 // create padding and handle blocks
20647 this._block[this._blockOffset++] = 0x80
20648 if (this._blockOffset > 56) {
20649 this._block.fill(0, this._blockOffset, 64)
20650 this._update()
20651 this._blockOffset = 0
20652 }
20653
20654 this._block.fill(0, this._blockOffset, 56)
20655 this._block.writeUInt32LE(this._length[0], 56)
20656 this._block.writeUInt32LE(this._length[1], 60)
20657 this._update()
20658
20659 // produce result
20660 var buffer = new Buffer(20)
20661 buffer.writeInt32LE(this._a, 0)
20662 buffer.writeInt32LE(this._b, 4)
20663 buffer.writeInt32LE(this._c, 8)
20664 buffer.writeInt32LE(this._d, 12)
20665 buffer.writeInt32LE(this._e, 16)
20666 return buffer
20667 }
20668
20669 function rotl (x, n) {
20670 return (x << n) | (x >>> (32 - n))
20671 }
20672
20673 function fn1 (a, b, c, d, e, m, k, s) {
20674 return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0
20675 }
20676
20677 function fn2 (a, b, c, d, e, m, k, s) {
20678 return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0
20679 }
20680
20681 function fn3 (a, b, c, d, e, m, k, s) {
20682 return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0
20683 }
20684
20685 function fn4 (a, b, c, d, e, m, k, s) {
20686 return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0
20687 }
20688
20689 function fn5 (a, b, c, d, e, m, k, s) {
20690 return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0
20691 }
20692
20693 module.exports = RIPEMD160
20694
20695 }).call(this,require("buffer").Buffer)
20696 },{"buffer":4,"hash-base":92,"inherits":93}],98:[function(require,module,exports){
20697 arguments[4][26][0].apply(exports,arguments)
20698 },{"buffer":4,"dup":26}],99:[function(require,module,exports){
20699 (function (Buffer){
20700 // prototype class for hash functions
20701 function Hash (blockSize, finalSize) {
20702 this._block = new Buffer(blockSize)
20703 this._finalSize = finalSize
20704 this._blockSize = blockSize
20705 this._len = 0
20706 this._s = 0
20707 }
20708
20709 Hash.prototype.update = function (data, enc) {
20710 if (typeof data === 'string') {
20711 enc = enc || 'utf8'
20712 data = new Buffer(data, enc)
20713 }
20714
20715 var l = this._len += data.length
20716 var s = this._s || 0
20717 var f = 0
20718 var buffer = this._block
20719
20720 while (s < l) {
20721 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
20722 var ch = (t - f)
20723
20724 for (var i = 0; i < ch; i++) {
20725 buffer[(s % this._blockSize) + i] = data[i + f]
20726 }
20727
20728 s += ch
20729 f += ch
20730
20731 if ((s % this._blockSize) === 0) {
20732 this._update(buffer)
20733 }
20734 }
20735 this._s = s
20736
20737 return this
20738 }
20739
20740 Hash.prototype.digest = function (enc) {
20741 // Suppose the length of the message M, in bits, is l
20742 var l = this._len * 8
20743
20744 // Append the bit 1 to the end of the message
20745 this._block[this._len % this._blockSize] = 0x80
20746
20747 // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
20748 this._block.fill(0, this._len % this._blockSize + 1)
20749
20750 if (l % (this._blockSize * 8) >= this._finalSize * 8) {
20751 this._update(this._block)
20752 this._block.fill(0)
20753 }
20754
20755 // to this append the block which is equal to the number l written in binary
20756 // TODO: handle case where l is > Math.pow(2, 29)
20757 this._block.writeInt32BE(l, this._blockSize - 4)
20758
20759 var hash = this._update(this._block) || this._hash()
20760
20761 return enc ? hash.toString(enc) : hash
20762 }
20763
20764 Hash.prototype._update = function () {
20765 throw new Error('_update must be implemented by subclass')
20766 }
20767
20768 module.exports = Hash
20769
20770 }).call(this,require("buffer").Buffer)
20771 },{"buffer":4}],100:[function(require,module,exports){
20772 var exports = module.exports = function SHA (algorithm) {
20773 algorithm = algorithm.toLowerCase()
20774
20775 var Algorithm = exports[algorithm]
20776 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
20777
20778 return new Algorithm()
20779 }
20780
20781 exports.sha = require('./sha')
20782 exports.sha1 = require('./sha1')
20783 exports.sha224 = require('./sha224')
20784 exports.sha256 = require('./sha256')
20785 exports.sha384 = require('./sha384')
20786 exports.sha512 = require('./sha512')
20787
20788 },{"./sha":101,"./sha1":102,"./sha224":103,"./sha256":104,"./sha384":105,"./sha512":106}],101:[function(require,module,exports){
20789 (function (Buffer){
20790 /*
20791 * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
20792 * in FIPS PUB 180-1
20793 * This source code is derived from sha1.js of the same repository.
20794 * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
20795 * operation was added.
20796 */
20797
20798 var inherits = require('inherits')
20799 var Hash = require('./hash')
20800
20801 var K = [
20802 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
20803 ]
20804
20805 var W = new Array(80)
20806
20807 function Sha () {
20808 this.init()
20809 this._w = W
20810
20811 Hash.call(this, 64, 56)
20812 }
20813
20814 inherits(Sha, Hash)
20815
20816 Sha.prototype.init = function () {
20817 this._a = 0x67452301
20818 this._b = 0xefcdab89
20819 this._c = 0x98badcfe
20820 this._d = 0x10325476
20821 this._e = 0xc3d2e1f0
20822
20823 return this
20824 }
20825
20826 function rotl5 (num) {
20827 return (num << 5) | (num >>> 27)
20828 }
20829
20830 function rotl30 (num) {
20831 return (num << 30) | (num >>> 2)
20832 }
20833
20834 function ft (s, b, c, d) {
20835 if (s === 0) return (b & c) | ((~b) & d)
20836 if (s === 2) return (b & c) | (b & d) | (c & d)
20837 return b ^ c ^ d
20838 }
20839
20840 Sha.prototype._update = function (M) {
20841 var W = this._w
20842
20843 var a = this._a | 0
20844 var b = this._b | 0
20845 var c = this._c | 0
20846 var d = this._d | 0
20847 var e = this._e | 0
20848
20849 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
20850 for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]
20851
20852 for (var j = 0; j < 80; ++j) {
20853 var s = ~~(j / 20)
20854 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
20855
20856 e = d
20857 d = c
20858 c = rotl30(b)
20859 b = a
20860 a = t
20861 }
20862
20863 this._a = (a + this._a) | 0
20864 this._b = (b + this._b) | 0
20865 this._c = (c + this._c) | 0
20866 this._d = (d + this._d) | 0
20867 this._e = (e + this._e) | 0
20868 }
20869
20870 Sha.prototype._hash = function () {
20871 var H = new Buffer(20)
20872
20873 H.writeInt32BE(this._a | 0, 0)
20874 H.writeInt32BE(this._b | 0, 4)
20875 H.writeInt32BE(this._c | 0, 8)
20876 H.writeInt32BE(this._d | 0, 12)
20877 H.writeInt32BE(this._e | 0, 16)
20878
20879 return H
20880 }
20881
20882 module.exports = Sha
20883
20884 }).call(this,require("buffer").Buffer)
20885 },{"./hash":99,"buffer":4,"inherits":93}],102:[function(require,module,exports){
20886 (function (Buffer){
20887 /*
20888 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
20889 * in FIPS PUB 180-1
20890 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
20891 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
20892 * Distributed under the BSD License
20893 * See http://pajhome.org.uk/crypt/md5 for details.
20894 */
20895
20896 var inherits = require('inherits')
20897 var Hash = require('./hash')
20898
20899 var K = [
20900 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
20901 ]
20902
20903 var W = new Array(80)
20904
20905 function Sha1 () {
20906 this.init()
20907 this._w = W
20908
20909 Hash.call(this, 64, 56)
20910 }
20911
20912 inherits(Sha1, Hash)
20913
20914 Sha1.prototype.init = function () {
20915 this._a = 0x67452301
20916 this._b = 0xefcdab89
20917 this._c = 0x98badcfe
20918 this._d = 0x10325476
20919 this._e = 0xc3d2e1f0
20920
20921 return this
20922 }
20923
20924 function rotl1 (num) {
20925 return (num << 1) | (num >>> 31)
20926 }
20927
20928 function rotl5 (num) {
20929 return (num << 5) | (num >>> 27)
20930 }
20931
20932 function rotl30 (num) {
20933 return (num << 30) | (num >>> 2)
20934 }
20935
20936 function ft (s, b, c, d) {
20937 if (s === 0) return (b & c) | ((~b) & d)
20938 if (s === 2) return (b & c) | (b & d) | (c & d)
20939 return b ^ c ^ d
20940 }
20941
20942 Sha1.prototype._update = function (M) {
20943 var W = this._w
20944
20945 var a = this._a | 0
20946 var b = this._b | 0
20947 var c = this._c | 0
20948 var d = this._d | 0
20949 var e = this._e | 0
20950
20951 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
20952 for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])
20953
20954 for (var j = 0; j < 80; ++j) {
20955 var s = ~~(j / 20)
20956 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
20957
20958 e = d
20959 d = c
20960 c = rotl30(b)
20961 b = a
20962 a = t
20963 }
20964
20965 this._a = (a + this._a) | 0
20966 this._b = (b + this._b) | 0
20967 this._c = (c + this._c) | 0
20968 this._d = (d + this._d) | 0
20969 this._e = (e + this._e) | 0
20970 }
20971
20972 Sha1.prototype._hash = function () {
20973 var H = new Buffer(20)
20974
20975 H.writeInt32BE(this._a | 0, 0)
20976 H.writeInt32BE(this._b | 0, 4)
20977 H.writeInt32BE(this._c | 0, 8)
20978 H.writeInt32BE(this._d | 0, 12)
20979 H.writeInt32BE(this._e | 0, 16)
20980
20981 return H
20982 }
20983
20984 module.exports = Sha1
20985
20986 }).call(this,require("buffer").Buffer)
20987 },{"./hash":99,"buffer":4,"inherits":93}],103:[function(require,module,exports){
20988 (function (Buffer){
20989 /**
20990 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
20991 * in FIPS 180-2
20992 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
20993 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
20994 *
20995 */
20996
20997 var inherits = require('inherits')
20998 var Sha256 = require('./sha256')
20999 var Hash = require('./hash')
21000
21001 var W = new Array(64)
21002
21003 function Sha224 () {
21004 this.init()
21005
21006 this._w = W // new Array(64)
21007
21008 Hash.call(this, 64, 56)
21009 }
21010
21011 inherits(Sha224, Sha256)
21012
21013 Sha224.prototype.init = function () {
21014 this._a = 0xc1059ed8
21015 this._b = 0x367cd507
21016 this._c = 0x3070dd17
21017 this._d = 0xf70e5939
21018 this._e = 0xffc00b31
21019 this._f = 0x68581511
21020 this._g = 0x64f98fa7
21021 this._h = 0xbefa4fa4
21022
21023 return this
21024 }
21025
21026 Sha224.prototype._hash = function () {
21027 var H = new Buffer(28)
21028
21029 H.writeInt32BE(this._a, 0)
21030 H.writeInt32BE(this._b, 4)
21031 H.writeInt32BE(this._c, 8)
21032 H.writeInt32BE(this._d, 12)
21033 H.writeInt32BE(this._e, 16)
21034 H.writeInt32BE(this._f, 20)
21035 H.writeInt32BE(this._g, 24)
21036
21037 return H
21038 }
21039
21040 module.exports = Sha224
21041
21042 }).call(this,require("buffer").Buffer)
21043 },{"./hash":99,"./sha256":104,"buffer":4,"inherits":93}],104:[function(require,module,exports){
21044 (function (Buffer){
21045 /**
21046 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
21047 * in FIPS 180-2
21048 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
21049 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
21050 *
21051 */
21052
21053 var inherits = require('inherits')
21054 var Hash = require('./hash')
21055
21056 var K = [
21057 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
21058 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
21059 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
21060 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
21061 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
21062 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
21063 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
21064 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
21065 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
21066 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
21067 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
21068 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
21069 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
21070 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
21071 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
21072 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
21073 ]
21074
21075 var W = new Array(64)
21076
21077 function Sha256 () {
21078 this.init()
21079
21080 this._w = W // new Array(64)
21081
21082 Hash.call(this, 64, 56)
21083 }
21084
21085 inherits(Sha256, Hash)
21086
21087 Sha256.prototype.init = function () {
21088 this._a = 0x6a09e667
21089 this._b = 0xbb67ae85
21090 this._c = 0x3c6ef372
21091 this._d = 0xa54ff53a
21092 this._e = 0x510e527f
21093 this._f = 0x9b05688c
21094 this._g = 0x1f83d9ab
21095 this._h = 0x5be0cd19
21096
21097 return this
21098 }
21099
21100 function ch (x, y, z) {
21101 return z ^ (x & (y ^ z))
21102 }
21103
21104 function maj (x, y, z) {
21105 return (x & y) | (z & (x | y))
21106 }
21107
21108 function sigma0 (x) {
21109 return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)
21110 }
21111
21112 function sigma1 (x) {
21113 return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)
21114 }
21115
21116 function gamma0 (x) {
21117 return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)
21118 }
21119
21120 function gamma1 (x) {
21121 return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)
21122 }
21123
21124 Sha256.prototype._update = function (M) {
21125 var W = this._w
21126
21127 var a = this._a | 0
21128 var b = this._b | 0
21129 var c = this._c | 0
21130 var d = this._d | 0
21131 var e = this._e | 0
21132 var f = this._f | 0
21133 var g = this._g | 0
21134 var h = this._h | 0
21135
21136 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
21137 for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0
21138
21139 for (var j = 0; j < 64; ++j) {
21140 var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0
21141 var T2 = (sigma0(a) + maj(a, b, c)) | 0
21142
21143 h = g
21144 g = f
21145 f = e
21146 e = (d + T1) | 0
21147 d = c
21148 c = b
21149 b = a
21150 a = (T1 + T2) | 0
21151 }
21152
21153 this._a = (a + this._a) | 0
21154 this._b = (b + this._b) | 0
21155 this._c = (c + this._c) | 0
21156 this._d = (d + this._d) | 0
21157 this._e = (e + this._e) | 0
21158 this._f = (f + this._f) | 0
21159 this._g = (g + this._g) | 0
21160 this._h = (h + this._h) | 0
21161 }
21162
21163 Sha256.prototype._hash = function () {
21164 var H = new Buffer(32)
21165
21166 H.writeInt32BE(this._a, 0)
21167 H.writeInt32BE(this._b, 4)
21168 H.writeInt32BE(this._c, 8)
21169 H.writeInt32BE(this._d, 12)
21170 H.writeInt32BE(this._e, 16)
21171 H.writeInt32BE(this._f, 20)
21172 H.writeInt32BE(this._g, 24)
21173 H.writeInt32BE(this._h, 28)
21174
21175 return H
21176 }
21177
21178 module.exports = Sha256
21179
21180 }).call(this,require("buffer").Buffer)
21181 },{"./hash":99,"buffer":4,"inherits":93}],105:[function(require,module,exports){
21182 (function (Buffer){
21183 var inherits = require('inherits')
21184 var SHA512 = require('./sha512')
21185 var Hash = require('./hash')
21186
21187 var W = new Array(160)
21188
21189 function Sha384 () {
21190 this.init()
21191 this._w = W
21192
21193 Hash.call(this, 128, 112)
21194 }
21195
21196 inherits(Sha384, SHA512)
21197
21198 Sha384.prototype.init = function () {
21199 this._ah = 0xcbbb9d5d
21200 this._bh = 0x629a292a
21201 this._ch = 0x9159015a
21202 this._dh = 0x152fecd8
21203 this._eh = 0x67332667
21204 this._fh = 0x8eb44a87
21205 this._gh = 0xdb0c2e0d
21206 this._hh = 0x47b5481d
21207
21208 this._al = 0xc1059ed8
21209 this._bl = 0x367cd507
21210 this._cl = 0x3070dd17
21211 this._dl = 0xf70e5939
21212 this._el = 0xffc00b31
21213 this._fl = 0x68581511
21214 this._gl = 0x64f98fa7
21215 this._hl = 0xbefa4fa4
21216
21217 return this
21218 }
21219
21220 Sha384.prototype._hash = function () {
21221 var H = new Buffer(48)
21222
21223 function writeInt64BE (h, l, offset) {
21224 H.writeInt32BE(h, offset)
21225 H.writeInt32BE(l, offset + 4)
21226 }
21227
21228 writeInt64BE(this._ah, this._al, 0)
21229 writeInt64BE(this._bh, this._bl, 8)
21230 writeInt64BE(this._ch, this._cl, 16)
21231 writeInt64BE(this._dh, this._dl, 24)
21232 writeInt64BE(this._eh, this._el, 32)
21233 writeInt64BE(this._fh, this._fl, 40)
21234
21235 return H
21236 }
21237
21238 module.exports = Sha384
21239
21240 }).call(this,require("buffer").Buffer)
21241 },{"./hash":99,"./sha512":106,"buffer":4,"inherits":93}],106:[function(require,module,exports){
21242 (function (Buffer){
21243 var inherits = require('inherits')
21244 var Hash = require('./hash')
21245
21246 var K = [
21247 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
21248 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
21249 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
21250 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
21251 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
21252 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
21253 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
21254 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
21255 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
21256 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
21257 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
21258 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
21259 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
21260 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
21261 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
21262 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
21263 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
21264 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
21265 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
21266 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
21267 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
21268 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
21269 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
21270 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
21271 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
21272 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
21273 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
21274 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
21275 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
21276 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
21277 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
21278 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
21279 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
21280 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
21281 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
21282 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
21283 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
21284 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
21285 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
21286 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
21287 ]
21288
21289 var W = new Array(160)
21290
21291 function Sha512 () {
21292 this.init()
21293 this._w = W
21294
21295 Hash.call(this, 128, 112)
21296 }
21297
21298 inherits(Sha512, Hash)
21299
21300 Sha512.prototype.init = function () {
21301 this._ah = 0x6a09e667
21302 this._bh = 0xbb67ae85
21303 this._ch = 0x3c6ef372
21304 this._dh = 0xa54ff53a
21305 this._eh = 0x510e527f
21306 this._fh = 0x9b05688c
21307 this._gh = 0x1f83d9ab
21308 this._hh = 0x5be0cd19
21309
21310 this._al = 0xf3bcc908
21311 this._bl = 0x84caa73b
21312 this._cl = 0xfe94f82b
21313 this._dl = 0x5f1d36f1
21314 this._el = 0xade682d1
21315 this._fl = 0x2b3e6c1f
21316 this._gl = 0xfb41bd6b
21317 this._hl = 0x137e2179
21318
21319 return this
21320 }
21321
21322 function Ch (x, y, z) {
21323 return z ^ (x & (y ^ z))
21324 }
21325
21326 function maj (x, y, z) {
21327 return (x & y) | (z & (x | y))
21328 }
21329
21330 function sigma0 (x, xl) {
21331 return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)
21332 }
21333
21334 function sigma1 (x, xl) {
21335 return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)
21336 }
21337
21338 function Gamma0 (x, xl) {
21339 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)
21340 }
21341
21342 function Gamma0l (x, xl) {
21343 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)
21344 }
21345
21346 function Gamma1 (x, xl) {
21347 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)
21348 }
21349
21350 function Gamma1l (x, xl) {
21351 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)
21352 }
21353
21354 function getCarry (a, b) {
21355 return (a >>> 0) < (b >>> 0) ? 1 : 0
21356 }
21357
21358 Sha512.prototype._update = function (M) {
21359 var W = this._w
21360
21361 var ah = this._ah | 0
21362 var bh = this._bh | 0
21363 var ch = this._ch | 0
21364 var dh = this._dh | 0
21365 var eh = this._eh | 0
21366 var fh = this._fh | 0
21367 var gh = this._gh | 0
21368 var hh = this._hh | 0
21369
21370 var al = this._al | 0
21371 var bl = this._bl | 0
21372 var cl = this._cl | 0
21373 var dl = this._dl | 0
21374 var el = this._el | 0
21375 var fl = this._fl | 0
21376 var gl = this._gl | 0
21377 var hl = this._hl | 0
21378
21379 for (var i = 0; i < 32; i += 2) {
21380 W[i] = M.readInt32BE(i * 4)
21381 W[i + 1] = M.readInt32BE(i * 4 + 4)
21382 }
21383 for (; i < 160; i += 2) {
21384 var xh = W[i - 15 * 2]
21385 var xl = W[i - 15 * 2 + 1]
21386 var gamma0 = Gamma0(xh, xl)
21387 var gamma0l = Gamma0l(xl, xh)
21388
21389 xh = W[i - 2 * 2]
21390 xl = W[i - 2 * 2 + 1]
21391 var gamma1 = Gamma1(xh, xl)
21392 var gamma1l = Gamma1l(xl, xh)
21393
21394 // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
21395 var Wi7h = W[i - 7 * 2]
21396 var Wi7l = W[i - 7 * 2 + 1]
21397
21398 var Wi16h = W[i - 16 * 2]
21399 var Wi16l = W[i - 16 * 2 + 1]
21400
21401 var Wil = (gamma0l + Wi7l) | 0
21402 var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0
21403 Wil = (Wil + gamma1l) | 0
21404 Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0
21405 Wil = (Wil + Wi16l) | 0
21406 Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0
21407
21408 W[i] = Wih
21409 W[i + 1] = Wil
21410 }
21411
21412 for (var j = 0; j < 160; j += 2) {
21413 Wih = W[j]
21414 Wil = W[j + 1]
21415
21416 var majh = maj(ah, bh, ch)
21417 var majl = maj(al, bl, cl)
21418
21419 var sigma0h = sigma0(ah, al)
21420 var sigma0l = sigma0(al, ah)
21421 var sigma1h = sigma1(eh, el)
21422 var sigma1l = sigma1(el, eh)
21423
21424 // t1 = h + sigma1 + ch + K[j] + W[j]
21425 var Kih = K[j]
21426 var Kil = K[j + 1]
21427
21428 var chh = Ch(eh, fh, gh)
21429 var chl = Ch(el, fl, gl)
21430
21431 var t1l = (hl + sigma1l) | 0
21432 var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0
21433 t1l = (t1l + chl) | 0
21434 t1h = (t1h + chh + getCarry(t1l, chl)) | 0
21435 t1l = (t1l + Kil) | 0
21436 t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0
21437 t1l = (t1l + Wil) | 0
21438 t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0
21439
21440 // t2 = sigma0 + maj
21441 var t2l = (sigma0l + majl) | 0
21442 var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0
21443
21444 hh = gh
21445 hl = gl
21446 gh = fh
21447 gl = fl
21448 fh = eh
21449 fl = el
21450 el = (dl + t1l) | 0
21451 eh = (dh + t1h + getCarry(el, dl)) | 0
21452 dh = ch
21453 dl = cl
21454 ch = bh
21455 cl = bl
21456 bh = ah
21457 bl = al
21458 al = (t1l + t2l) | 0
21459 ah = (t1h + t2h + getCarry(al, t1l)) | 0
21460 }
21461
21462 this._al = (this._al + al) | 0
21463 this._bl = (this._bl + bl) | 0
21464 this._cl = (this._cl + cl) | 0
21465 this._dl = (this._dl + dl) | 0
21466 this._el = (this._el + el) | 0
21467 this._fl = (this._fl + fl) | 0
21468 this._gl = (this._gl + gl) | 0
21469 this._hl = (this._hl + hl) | 0
21470
21471 this._ah = (this._ah + ah + getCarry(this._al, al)) | 0
21472 this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0
21473 this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0
21474 this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0
21475 this._eh = (this._eh + eh + getCarry(this._el, el)) | 0
21476 this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0
21477 this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0
21478 this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0
21479 }
21480
21481 Sha512.prototype._hash = function () {
21482 var H = new Buffer(64)
21483
21484 function writeInt64BE (h, l, offset) {
21485 H.writeInt32BE(h, offset)
21486 H.writeInt32BE(l, offset + 4)
21487 }
21488
21489 writeInt64BE(this._ah, this._al, 0)
21490 writeInt64BE(this._bh, this._bl, 8)
21491 writeInt64BE(this._ch, this._cl, 16)
21492 writeInt64BE(this._dh, this._dl, 24)
21493 writeInt64BE(this._eh, this._el, 32)
21494 writeInt64BE(this._fh, this._fl, 40)
21495 writeInt64BE(this._gh, this._gl, 48)
21496 writeInt64BE(this._hh, this._hl, 56)
21497
21498 return H
21499 }
21500
21501 module.exports = Sha512
21502
21503 }).call(this,require("buffer").Buffer)
21504 },{"./hash":99,"buffer":4,"inherits":93}],107:[function(require,module,exports){
21505 var inherits = require('inherits')
21506 var native = require('./native')
21507
21508 function TfTypeError (type, value, valueTypeName) {
21509 this.__error = Error.call(this)
21510 this.__type = type
21511 this.__value = value
21512 this.__valueTypeName = valueTypeName
21513
21514 var message
21515 Object.defineProperty(this, 'message', {
21516 enumerable: true,
21517 get: function () {
21518 if (message) return message
21519
21520 valueTypeName = valueTypeName || getValueTypeName(value)
21521 message = tfErrorString(type, value, valueTypeName)
21522
21523 return message
21524 }
21525 })
21526 }
21527
21528 function TfPropertyTypeError (type, property, label, value, error, valueTypeName) {
21529 this.__error = error || Error.call(this)
21530 this.__label = label
21531 this.__property = property
21532 this.__type = type
21533 this.__value = value
21534 this.__valueTypeName = valueTypeName
21535
21536 var message
21537 Object.defineProperty(this, 'message', {
21538 enumerable: true,
21539 get: function () {
21540 if (message) return message
21541 if (type) {
21542 valueTypeName = valueTypeName || getValueTypeName(value)
21543 message = tfPropertyErrorString(type, label, property, value, valueTypeName)
21544 } else {
21545 message = 'Unexpected property "' + property + '"'
21546 }
21547
21548 return message
21549 }
21550 })
21551 }
21552
21553 // inherit from Error, assign stack
21554 [TfTypeError, TfPropertyTypeError].forEach(function (tfErrorType) {
21555 inherits(tfErrorType, Error)
21556 Object.defineProperty(tfErrorType, 'stack', {
21557 get: function () { return this.__error.stack }
21558 })
21559 })
21560
21561 function tfCustomError (expected, actual) {
21562 return new TfTypeError(expected, {}, actual)
21563 }
21564
21565 function tfSubError (e, property, label) {
21566 // sub child?
21567 if (e instanceof TfPropertyTypeError) {
21568 property = property + '.' + e.__property
21569 label = e.__label
21570
21571 return new TfPropertyTypeError(
21572 e.__type, property, label, e.__value, e.__error, e.__valueTypeName
21573 )
21574 }
21575
21576 // child?
21577 if (e instanceof TfTypeError) {
21578 return new TfPropertyTypeError(
21579 e.__type, property, label, e.__value, e.__error, e.__valueTypeName
21580 )
21581 }
21582
21583 return e
21584 }
21585
21586 function getTypeName (fn) {
21587 return fn.name || fn.toString().match(/function (.*?)\s*\(/)[1]
21588 }
21589
21590 function getValueTypeName (value) {
21591 return native.Nil(value) ? '' : getTypeName(value.constructor)
21592 }
21593
21594 function getValue (value) {
21595 if (native.Function(value)) return ''
21596 if (native.String(value)) return JSON.stringify(value)
21597 if (value && native.Object(value)) return ''
21598 return value
21599 }
21600
21601 function tfJSON (type) {
21602 if (native.Function(type)) return type.toJSON ? type.toJSON() : getTypeName(type)
21603 if (native.Array(type)) return 'Array'
21604 if (type && native.Object(type)) return 'Object'
21605
21606 return type !== undefined ? type : ''
21607 }
21608
21609 function tfErrorString (type, value, valueTypeName) {
21610 var valueJson = getValue(value)
21611
21612 return 'Expected ' + tfJSON(type) + ', got' +
21613 (valueTypeName !== '' ? ' ' + valueTypeName : '') +
21614 (valueJson !== '' ? ' ' + valueJson : '')
21615 }
21616
21617 function tfPropertyErrorString (type, label, name, value, valueTypeName) {
21618 var description = '" of type '
21619 if (label === 'key') description = '" with key type '
21620
21621 return tfErrorString('property "' + tfJSON(name) + description + tfJSON(type), value, valueTypeName)
21622 }
21623
21624 module.exports = {
21625 TfTypeError: TfTypeError,
21626 TfPropertyTypeError: TfPropertyTypeError,
21627 tfCustomError: tfCustomError,
21628 tfSubError: tfSubError,
21629 tfJSON: tfJSON,
21630 getValueTypeName: getValueTypeName
21631 }
21632
21633 },{"./native":110,"inherits":93}],108:[function(require,module,exports){
21634 (function (Buffer){
21635 var NATIVE = require('./native')
21636 var ERRORS = require('./errors')
21637
21638 function _Buffer (value) {
21639 return Buffer.isBuffer(value)
21640 }
21641
21642 function Hex (value) {
21643 return typeof value === 'string' && /^([0-9a-f]{2})+$/i.test(value)
21644 }
21645
21646 function _LengthN (type, length) {
21647 var name = type.toJSON()
21648
21649 function Length (value) {
21650 if (!type(value)) return false
21651 if (value.length === length) return true
21652
21653 throw ERRORS.tfCustomError(name + '(Length: ' + length + ')', name + '(Length: ' + value.length + ')')
21654 }
21655 Length.toJSON = function () { return name }
21656
21657 return Length
21658 }
21659
21660 var _ArrayN = _LengthN.bind(null, NATIVE.Array)
21661 var _BufferN = _LengthN.bind(null, _Buffer)
21662 var _HexN = _LengthN.bind(null, Hex)
21663
21664 var UINT53_MAX = Math.pow(2, 53) - 1
21665
21666 function Finite (value) {
21667 return typeof value === 'number' && isFinite(value)
21668 }
21669 function Int8 (value) { return ((value << 24) >> 24) === value }
21670 function Int16 (value) { return ((value << 16) >> 16) === value }
21671 function Int32 (value) { return (value | 0) === value }
21672 function UInt8 (value) { return (value & 0xff) === value }
21673 function UInt16 (value) { return (value & 0xffff) === value }
21674 function UInt32 (value) { return (value >>> 0) === value }
21675 function UInt53 (value) {
21676 return typeof value === 'number' &&
21677 value >= 0 &&
21678 value <= UINT53_MAX &&
21679 Math.floor(value) === value
21680 }
21681
21682 var types = {
21683 ArrayN: _ArrayN,
21684 Buffer: _Buffer,
21685 BufferN: _BufferN,
21686 Finite: Finite,
21687 Hex: Hex,
21688 HexN: _HexN,
21689 Int8: Int8,
21690 Int16: Int16,
21691 Int32: Int32,
21692 UInt8: UInt8,
21693 UInt16: UInt16,
21694 UInt32: UInt32,
21695 UInt53: UInt53
21696 }
21697
21698 for (var typeName in types) {
21699 types[typeName].toJSON = function (t) {
21700 return t
21701 }.bind(null, typeName)
21702 }
21703
21704 module.exports = types
21705
21706 }).call(this,{"isBuffer":require("../../../../../.nvm/versions/node/v6.0.0/lib/node_modules/browserify/node_modules/is-buffer/index.js")})
21707 },{"../../../../../.nvm/versions/node/v6.0.0/lib/node_modules/browserify/node_modules/is-buffer/index.js":9,"./errors":107,"./native":110}],109:[function(require,module,exports){
21708 var ERRORS = require('./errors')
21709 var NATIVE = require('./native')
21710
21711 // short-hand
21712 var tfJSON = ERRORS.tfJSON
21713 var TfTypeError = ERRORS.TfTypeError
21714 var TfPropertyTypeError = ERRORS.TfPropertyTypeError
21715 var tfSubError = ERRORS.tfSubError
21716 var getValueTypeName = ERRORS.getValueTypeName
21717
21718 var TYPES = {
21719 arrayOf: function arrayOf (type) {
21720 type = compile(type)
21721
21722 function _arrayOf (array, strict) {
21723 if (!NATIVE.Array(array)) return false
21724
21725 return array.every(function (value, i) {
21726 try {
21727 return typeforce(type, value, strict)
21728 } catch (e) {
21729 throw tfSubError(e, i)
21730 }
21731 })
21732 }
21733 _arrayOf.toJSON = function () { return '[' + tfJSON(type) + ']' }
21734
21735 return _arrayOf
21736 },
21737
21738 maybe: function maybe (type) {
21739 type = compile(type)
21740
21741 function _maybe (value, strict) {
21742 return NATIVE.Nil(value) || type(value, strict, maybe)
21743 }
21744 _maybe.toJSON = function () { return '?' + tfJSON(type) }
21745
21746 return _maybe
21747 },
21748
21749 map: function map (propertyType, propertyKeyType) {
21750 propertyType = compile(propertyType)
21751 if (propertyKeyType) propertyKeyType = compile(propertyKeyType)
21752
21753 function _map (value, strict) {
21754 if (!NATIVE.Object(value, strict)) return false
21755 if (NATIVE.Nil(value, strict)) return false
21756
21757 for (var propertyName in value) {
21758 try {
21759 if (propertyKeyType) {
21760 typeforce(propertyKeyType, propertyName, strict)
21761 }
21762 } catch (e) {
21763 throw tfSubError(e, propertyName, 'key')
21764 }
21765
21766 try {
21767 var propertyValue = value[propertyName]
21768 typeforce(propertyType, propertyValue, strict)
21769 } catch (e) {
21770 throw tfSubError(e, propertyName)
21771 }
21772 }
21773
21774 return true
21775 }
21776
21777 if (propertyKeyType) {
21778 _map.toJSON = function () {
21779 return '{' + tfJSON(propertyKeyType) + ': ' + tfJSON(propertyType) + '}'
21780 }
21781 } else {
21782 _map.toJSON = function () { return '{' + tfJSON(propertyType) + '}' }
21783 }
21784
21785 return _map
21786 },
21787
21788 object: function object (uncompiled) {
21789 var type = {}
21790
21791 for (var typePropertyName in uncompiled) {
21792 type[typePropertyName] = compile(uncompiled[typePropertyName])
21793 }
21794
21795 function _object (value, strict) {
21796 if (!NATIVE.Object(value)) return false
21797 if (NATIVE.Nil(value)) return false
21798
21799 var propertyName
21800
21801 try {
21802 for (propertyName in type) {
21803 var propertyType = type[propertyName]
21804 var propertyValue = value[propertyName]
21805
21806 typeforce(propertyType, propertyValue, strict)
21807 }
21808 } catch (e) {
21809 throw tfSubError(e, propertyName)
21810 }
21811
21812 if (strict) {
21813 for (propertyName in value) {
21814 if (type[propertyName]) continue
21815
21816 throw new TfPropertyTypeError(undefined, propertyName)
21817 }
21818 }
21819
21820 return true
21821 }
21822 _object.toJSON = function () { return tfJSON(type) }
21823
21824 return _object
21825 },
21826
21827 oneOf: function oneOf () {
21828 var types = [].slice.call(arguments).map(compile)
21829
21830 function _oneOf (value, strict) {
21831 return types.some(function (type) {
21832 try {
21833 return typeforce(type, value, strict)
21834 } catch (e) {
21835 return false
21836 }
21837 })
21838 }
21839 _oneOf.toJSON = function () { return types.map(tfJSON).join('|') }
21840
21841 return _oneOf
21842 },
21843
21844 quacksLike: function quacksLike (type) {
21845 function _quacksLike (value) {
21846 return type === getValueTypeName(value)
21847 }
21848 _quacksLike.toJSON = function () { return type }
21849
21850 return _quacksLike
21851 },
21852
21853 tuple: function tuple () {
21854 var types = [].slice.call(arguments).map(compile)
21855
21856 function _tuple (values, strict) {
21857 return types.every(function (type, i) {
21858 try {
21859 return typeforce(type, values[i], strict)
21860 } catch (e) {
21861 throw tfSubError(e, i)
21862 }
21863 }) && (!strict || values.length === arguments.length)
21864 }
21865 _tuple.toJSON = function () { return '(' + types.map(tfJSON).join(', ') + ')' }
21866
21867 return _tuple
21868 },
21869
21870 value: function value (expected) {
21871 function _value (actual) {
21872 return actual === expected
21873 }
21874 _value.toJSON = function () { return expected }
21875
21876 return _value
21877 }
21878 }
21879
21880 function compile (type) {
21881 if (NATIVE.String(type)) {
21882 if (type[0] === '?') return TYPES.maybe(compile(type.slice(1)))
21883
21884 return NATIVE[type] || TYPES.quacksLike(type)
21885 } else if (type && NATIVE.Object(type)) {
21886 if (NATIVE.Array(type)) return TYPES.arrayOf(compile(type[0]))
21887
21888 return TYPES.object(type)
21889 } else if (NATIVE.Function(type)) {
21890 return type
21891 }
21892
21893 return TYPES.value(type)
21894 }
21895
21896 function typeforce (type, value, strict, surrogate) {
21897 if (NATIVE.Function(type)) {
21898 if (type(value, strict)) return true
21899
21900 throw new TfTypeError(surrogate || type, value)
21901 }
21902
21903 // JIT
21904 return typeforce(compile(type), value, strict)
21905 }
21906
21907 // assign types to typeforce function
21908 for (var typeName in NATIVE) {
21909 typeforce[typeName] = NATIVE[typeName]
21910 }
21911
21912 for (typeName in TYPES) {
21913 typeforce[typeName] = TYPES[typeName]
21914 }
21915
21916 var EXTRA = require('./extra')
21917 for (typeName in EXTRA) {
21918 typeforce[typeName] = EXTRA[typeName]
21919 }
21920
21921 // async wrapper
21922 function __async (type, value, strict, callback) {
21923 // default to falsy strict if using shorthand overload
21924 if (typeof strict === 'function') return __async(type, value, false, strict)
21925
21926 try {
21927 typeforce(type, value, strict)
21928 } catch (e) {
21929 return callback(e)
21930 }
21931
21932 callback()
21933 }
21934
21935 typeforce.async = __async
21936 typeforce.compile = compile
21937 typeforce.TfTypeError = TfTypeError
21938 typeforce.TfPropertyTypeError = TfPropertyTypeError
21939
21940 module.exports = typeforce
21941
21942 },{"./errors":107,"./extra":108,"./native":110}],110:[function(require,module,exports){
21943 var types = {
21944 Array: function (value) { return value !== null && value !== undefined && value.constructor === Array },
21945 Boolean: function (value) { return typeof value === 'boolean' },
21946 Function: function (value) { return typeof value === 'function' },
21947 Nil: function (value) { return value === undefined || value === null },
21948 Number: function (value) { return typeof value === 'number' },
21949 Object: function (value) { return typeof value === 'object' },
21950 String: function (value) { return typeof value === 'string' },
21951 '': function () { return true }
21952 }
21953
21954 // TODO: deprecate
21955 types.Null = types.Nil
21956
21957 for (var typeName in types) {
21958 types[typeName].toJSON = function (t) {
21959 return t
21960 }.bind(null, typeName)
21961 }
21962
21963 module.exports = types
21964
21965 },{}],111:[function(require,module,exports){
21966 (function (Buffer){
21967 'use strict'
21968
21969 // Number.MAX_SAFE_INTEGER
21970 var MAX_SAFE_INTEGER = 9007199254740991
21971
21972 function checkUInt53 (n) {
21973 if (n < 0 || n > MAX_SAFE_INTEGER || n % 1 !== 0) throw new RangeError('value out of range')
21974 }
21975
21976 function encode (number, buffer, offset) {
21977 checkUInt53(number)
21978
21979 if (!buffer) buffer = new Buffer(encodingLength(number))
21980 if (!Buffer.isBuffer(buffer)) throw new TypeError('buffer must be a Buffer instance')
21981 if (!offset) offset = 0
21982
21983 // 8 bit
21984 if (number < 0xfd) {
21985 buffer.writeUInt8(number, offset)
21986 encode.bytes = 1
21987
21988 // 16 bit
21989 } else if (number <= 0xffff) {
21990 buffer.writeUInt8(0xfd, offset)
21991 buffer.writeUInt16LE(number, offset + 1)
21992 encode.bytes = 3
21993
21994 // 32 bit
21995 } else if (number <= 0xffffffff) {
21996 buffer.writeUInt8(0xfe, offset)
21997 buffer.writeUInt32LE(number, offset + 1)
21998 encode.bytes = 5
21999
22000 // 64 bit
22001 } else {
22002 buffer.writeUInt8(0xff, offset)
22003 buffer.writeUInt32LE(number >>> 0, offset + 1)
22004 buffer.writeUInt32LE((number / 0x100000000) | 0, offset + 5)
22005 encode.bytes = 9
22006 }
22007
22008 return buffer
22009 }
22010
22011 function decode (buffer, offset) {
22012 if (!Buffer.isBuffer(buffer)) throw new TypeError('buffer must be a Buffer instance')
22013 if (!offset) offset = 0
22014
22015 var first = buffer.readUInt8(offset)
22016
22017 // 8 bit
22018 if (first < 0xfd) {
22019 decode.bytes = 1
22020 return first
22021
22022 // 16 bit
22023 } else if (first === 0xfd) {
22024 decode.bytes = 3
22025 return buffer.readUInt16LE(offset + 1)
22026
22027 // 32 bit
22028 } else if (first === 0xfe) {
22029 decode.bytes = 5
22030 return buffer.readUInt32LE(offset + 1)
22031
22032 // 64 bit
22033 } else {
22034 decode.bytes = 9
22035 var lo = buffer.readUInt32LE(offset + 1)
22036 var hi = buffer.readUInt32LE(offset + 5)
22037 var number = hi * 0x0100000000 + lo
22038 checkUInt53(number)
22039
22040 return number
22041 }
22042 }
22043
22044 function encodingLength (number) {
22045 checkUInt53(number)
22046
22047 return (
22048 number < 0xfd ? 1
22049 : number <= 0xffff ? 3
22050 : number <= 0xffffffff ? 5
22051 : 9
22052 )
22053 }
22054
22055 module.exports = { encode: encode, decode: decode, encodingLength: encodingLength }
22056
22057 }).call(this,require("buffer").Buffer)
22058 },{"buffer":4}],112:[function(require,module,exports){
22059 (function (Buffer){
22060 var bs58check = require('bs58check')
22061
22062 function decodeRaw (buffer, version) {
22063 // check version only if defined
22064 if (version !== undefined && buffer[0] !== version) throw new Error('Invalid network version')
22065
22066 // uncompressed
22067 if (buffer.length === 33) {
22068 return {
22069 version: buffer[0],
22070 privateKey: buffer.slice(1, 33),
22071 compressed: false
22072 }
22073 }
22074
22075 // invalid length
22076 if (buffer.length !== 34) throw new Error('Invalid WIF length')
22077
22078 // invalid compression flag
22079 if (buffer[33] !== 0x01) throw new Error('Invalid compression flag')
22080
22081 return {
22082 version: buffer[0],
22083 privateKey: buffer.slice(1, 33),
22084 compressed: true
22085 }
22086 }
22087
22088 function encodeRaw (version, privateKey, compressed) {
22089 var result = new Buffer(compressed ? 34 : 33)
22090
22091 result.writeUInt8(version, 0)
22092 privateKey.copy(result, 1)
22093
22094 if (compressed) {
22095 result[33] = 0x01
22096 }
22097
22098 return result
22099 }
22100
22101 function decode (string, version) {
22102 return decodeRaw(bs58check.decode(string), version)
22103 }
22104
22105 function encode (version, privateKey, compressed) {
22106 if (typeof version === 'number') return bs58check.encode(encodeRaw(version, privateKey, compressed))
22107
22108 return bs58check.encode(
22109 encodeRaw(
22110 version.version,
22111 version.privateKey,
22112 version.compressed
22113 )
22114 )
22115 }
22116
22117 module.exports = {
22118 decode: decode,
22119 decodeRaw: decodeRaw,
22120 encode: encode,
22121 encodeRaw: encodeRaw
22122 }
22123
22124 }).call(this,require("buffer").Buffer)
22125 },{"bs58check":80,"buffer":4}]},{},[33])(33)
22126 });
22127 </script>
22128 <script>bitcoinjs.bitcoin.networks.shadow = {
22129 messagePrefix: "unused",
22130 bip32: {
22131 public: 0xEE80286A,
22132 private: 0xEE8031E8
22133 },
22134 pubKeyHash: 0x3f,
22135 scriptHash: 0x7d,
22136 wif: 0xbf,
22137 };
22138
22139 bitcoinjs.bitcoin.networks.shadowtn = {
22140 messagePrefix: "unused",
22141 bip32: {
22142 public: 0x76C0FDFB,
22143 private: 0x76C1077A
22144 },
22145 pubKeyHash: 0x7f,
22146 scriptHash: 0xc4,
22147 wif: 0xff,
22148 };
22149
22150 bitcoinjs.bitcoin.networks.clam = {
22151 messagePrefix: "unused",
22152 bip32: {
22153 public: 0xa8c26d64,
22154 private: 0xa8c17826
22155 },
22156 pubKeyHash: 0x89,
22157 scriptHash: 0x00, // TODO set this correctly
22158 wif: 0x85,
22159 };
22160
22161 bitcoinjs.bitcoin.networks.crown = {
22162 messagePrefix: "unused",
22163 bip32: {
22164 public: 0x0488b21e,
22165 private: 0x0488ade4
22166 },
22167 pubKeyHash: 0x00,
22168 scriptHash: 0x05,
22169 wif: 0x80,
22170 };
22171
22172 bitcoinjs.bitcoin.networks.dash = {
22173 messagePrefix: "unused",
22174 bip32: {
22175 public: 0x0488b21e,
22176 private: 0x0488ade4
22177 },
22178 pubKeyHash: 0x4c,
22179 scriptHash: 0x10,
22180 wif: 0xcc,
22181 };
22182
22183 bitcoinjs.bitcoin.networks.maza = {
22184 messagePrefix: "unused",
22185 bip32: {
22186 public: 0x0488b21e,
22187 private: 0x0488ade4
22188 },
22189 pubKeyHash: 0x32,
22190 scriptHash: 0x09,
22191 wif: 0xe0,
22192 };
22193
22194 bitcoinjs.bitcoin.networks.dashtn = {
22195 messagePrefix: "unused",
22196 bip32: {
22197 public: 0x043587cf,
22198 private: 0x04358394
22199 },
22200 pubKeyHash: 0x8c,
22201 scriptHash: 0x13,
22202 wif: 0xef,
22203 };
22204
22205 bitcoinjs.bitcoin.networks.game = {
22206 messagePrefix: "unused",
22207 bip32: {
22208 public: 0x0488b21e,
22209 private: 0x0488ade4
22210 },
22211 pubKeyHash: 0x26,
22212 scriptHash: 0x05,
22213 wif: 0xa6,
22214 };
22215
22216 bitcoinjs.bitcoin.networks.namecoin = {
22217 messagePrefix: "unused",
22218 bip32: {
22219 public: 0x0488b21e,
22220 private: 0x0488ade4
22221 },
22222 pubKeyHash: 0x34,
22223 scriptHash: 0x00, // TODO set this correctly
22224 wif: 0x80,
22225 };
22226
22227 bitcoinjs.bitcoin.networks.peercoin = {
22228 messagePrefix: "unused",
22229 bip32: {
22230 public: 0x0488b21e,
22231 private: 0x0488ade4
22232 },
22233 pubKeyHash: 0x37,
22234 scriptHash: 0x00, // TODO set this correctly
22235 wif: 0xb7,
22236 };
22237
22238 bitcoinjs.bitcoin.networks.slimcoin = {
22239 messagePrefix: "unused",
22240 bip32: {
22241 public: 0xef6adf10,
22242 private: 0xef69ea80
22243 },
22244 pubKeyHash: 0x3f,
22245 scriptHash: 0x7d,
22246 wif: 0x46,
22247 };
22248
22249 bitcoinjs.bitcoin.networks.slimcointn = {
22250 messagePrefix: "unused",
22251 bip32: {
22252 public: 0x043587CF,
22253 private: 0x04358394
22254 },
22255 pubKeyHash: 0x6f,
22256 scriptHash: 0xc4,
22257 wif: 0x57,
22258 };
22259
22260 bitcoinjs.bitcoin.networks.dogecoin = {
22261 messagePrefix: '\x19Dogecoin Signed Message:\n',
22262 bip32: {
22263 public: 0x02facafd,
22264 private: 0x02fac398
22265 },
22266 pubKeyHash: 0x1e,
22267 scriptHash: 0x16,
22268 wif: 0x9e,
22269 },
22270
22271 bitcoinjs.bitcoin.networks.viacoin = {
22272 messagePrefix: '\x18Viacoin Signed Message:\n',
22273 bip32: {
22274 public: 0x0488b21e,
22275 private: 0x0488ade4
22276 },
22277 pubKeyHash: 0x47,
22278 scriptHash: 0x21,
22279 wif: 0xc7,
22280 },
22281
22282 bitcoinjs.bitcoin.networks.viacointestnet = {
22283 messagePrefix: '\x18Viacoin Signed Message:\n',
22284 bip32: {
22285 public: 0x043587cf,
22286 private: 0x04358394
22287 },
22288 pubKeyHash: 0x7f,
22289 scriptHash: 0xc4,
22290 wif: 0xff,
22291 },
22292
22293 bitcoinjs.bitcoin.networks.gamerscoin = {
22294 messagePrefix: '\x19Gamerscoin Signed Message:\n',
22295 bip32: {
22296 public: 0x019da462,
22297 private: 0x019d9cfe
22298 },
22299 pubKeyHash: 0x26,
22300 scriptHash: 0x05,
22301 wif: 0xA6,
22302 },
22303
22304 bitcoinjs.bitcoin.networks.jumbucks = {
22305 messagePrefix: '\x19Jumbucks Signed Message:\n',
22306 bip32: {
22307 public: 0x037a689a,
22308 private: 0x037a6460
22309 },
22310 pubKeyHash: 0x2b,
22311 scriptHash: 0x05,
22312 wif: 0xab,
22313 },
22314
22315 bitcoinjs.bitcoin.networks.zetacoin = {
22316 messagePrefix: '\x18Zetacoin Signed Message:\n',
22317 bip32: {
22318 public: 0x0488b21e,
22319 private: 0x0488ade4
22320 },
22321 pubKeyHash: 0x50,
22322 scriptHash: 0x09,
22323 wif: 0xe0,
22324 }
22325
22326 bitcoinjs.bitcoin.networks.myriadcoin = {
22327 messagePrefix: "unused",
22328 bip32: {
22329 public: 0x0488b21e,
22330 private: 0x0488ade4
22331 },
22332 pubKeyHash: 0x32,
22333 scriptHash: 0x00, // TODO set this correctly
22334 wif: 0xb2,
22335 };
22336
22337 bitcoinjs.bitcoin.networks.pivx = {
22338 messagePrefix: "unused",
22339 bip32: {
22340 public: 0x022d2533,
22341 private: 0x0221312b
22342 },
22343 pubKeyHash: 0x1e,
22344 scriptHash: 0x0d,
22345 wif: 0xd4,
22346 };
22347
22348 bitcoinjs.bitcoin.networks.pivxtestnet = {
22349 messagePrefix: "unused",
22350 bip32: {
22351 public: 0x3a8061a0,
22352 private: 0x3a805837
22353 },
22354 pubKeyHash: 0x8b,
22355 scriptHash: 0x13,
22356 wif: 0xef,
22357 };
22358 </script>
22359 <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){
22360 (function (global){
22361 'use strict';
22362
22363 // compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js
22364 // original notice:
22365
22366 /*!
22367 * The buffer module from node.js, for the browser.
22368 *
22369 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
22370 * @license MIT
22371 */
22372 function compare(a, b) {
22373 if (a === b) {
22374 return 0;
22375 }
22376
22377 var x = a.length;
22378 var y = b.length;
22379
22380 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
22381 if (a[i] !== b[i]) {
22382 x = a[i];
22383 y = b[i];
22384 break;
22385 }
22386 }
22387
22388 if (x < y) {
22389 return -1;
22390 }
22391 if (y < x) {
22392 return 1;
22393 }
22394 return 0;
22395 }
22396 function isBuffer(b) {
22397 if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {
22398 return global.Buffer.isBuffer(b);
22399 }
22400 return !!(b != null && b._isBuffer);
22401 }
22402
22403 // based on node assert, original notice:
22404
22405 // http://wiki.commonjs.org/wiki/Unit_Testing/1.0
22406 //
22407 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
22408 //
22409 // Originally from narwhal.js (http://narwhaljs.org)
22410 // Copyright (c) 2009 Thomas Robinson <280north.com>
22411 //
22412 // Permission is hereby granted, free of charge, to any person obtaining a copy
22413 // of this software and associated documentation files (the 'Software'), to
22414 // deal in the Software without restriction, including without limitation the
22415 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
22416 // sell copies of the Software, and to permit persons to whom the Software is
22417 // furnished to do so, subject to the following conditions:
22418 //
22419 // The above copyright notice and this permission notice shall be included in
22420 // all copies or substantial portions of the Software.
22421 //
22422 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22423 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22424 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22425 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
22426 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22427 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22428
22429 var util = require('util/');
22430 var hasOwn = Object.prototype.hasOwnProperty;
22431 var pSlice = Array.prototype.slice;
22432 var functionsHaveNames = (function () {
22433 return function foo() {}.name === 'foo';
22434 }());
22435 function pToString (obj) {
22436 return Object.prototype.toString.call(obj);
22437 }
22438 function isView(arrbuf) {
22439 if (isBuffer(arrbuf)) {
22440 return false;
22441 }
22442 if (typeof global.ArrayBuffer !== 'function') {
22443 return false;
22444 }
22445 if (typeof ArrayBuffer.isView === 'function') {
22446 return ArrayBuffer.isView(arrbuf);
22447 }
22448 if (!arrbuf) {
22449 return false;
22450 }
22451 if (arrbuf instanceof DataView) {
22452 return true;
22453 }
22454 if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {
22455 return true;
22456 }
22457 return false;
22458 }
22459 // 1. The assert module provides functions that throw
22460 // AssertionError's when particular conditions are not met. The
22461 // assert module must conform to the following interface.
22462
22463 var assert = module.exports = ok;
22464
22465 // 2. The AssertionError is defined in assert.
22466 // new assert.AssertionError({ message: message,
22467 // actual: actual,
22468 // expected: expected })
22469
22470 var regex = /\s*function\s+([^\(\s]*)\s*/;
22471 // based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js
22472 function getName(func) {
22473 if (!util.isFunction(func)) {
22474 return;
22475 }
22476 if (functionsHaveNames) {
22477 return func.name;
22478 }
22479 var str = func.toString();
22480 var match = str.match(regex);
22481 return match && match[1];
22482 }
22483 assert.AssertionError = function AssertionError(options) {
22484 this.name = 'AssertionError';
22485 this.actual = options.actual;
22486 this.expected = options.expected;
22487 this.operator = options.operator;
22488 if (options.message) {
22489 this.message = options.message;
22490 this.generatedMessage = false;
22491 } else {
22492 this.message = getMessage(this);
22493 this.generatedMessage = true;
22494 }
22495 var stackStartFunction = options.stackStartFunction || fail;
22496 if (Error.captureStackTrace) {
22497 Error.captureStackTrace(this, stackStartFunction);
22498 } else {
22499 // non v8 browsers so we can have a stacktrace
22500 var err = new Error();
22501 if (err.stack) {
22502 var out = err.stack;
22503
22504 // try to strip useless frames
22505 var fn_name = getName(stackStartFunction);
22506 var idx = out.indexOf('\n' + fn_name);
22507 if (idx >= 0) {
22508 // once we have located the function frame
22509 // we need to strip out everything before it (and its line)
22510 var next_line = out.indexOf('\n', idx + 1);
22511 out = out.substring(next_line + 1);
22512 }
22513
22514 this.stack = out;
22515 }
22516 }
22517 };
22518
22519 // assert.AssertionError instanceof Error
22520 util.inherits(assert.AssertionError, Error);
22521
22522 function truncate(s, n) {
22523 if (typeof s === 'string') {
22524 return s.length < n ? s : s.slice(0, n);
22525 } else {
22526 return s;
22527 }
22528 }
22529 function inspect(something) {
22530 if (functionsHaveNames || !util.isFunction(something)) {
22531 return util.inspect(something);
22532 }
22533 var rawname = getName(something);
22534 var name = rawname ? ': ' + rawname : '';
22535 return '[Function' + name + ']';
22536 }
22537 function getMessage(self) {
22538 return truncate(inspect(self.actual), 128) + ' ' +
22539 self.operator + ' ' +
22540 truncate(inspect(self.expected), 128);
22541 }
22542
22543 // At present only the three keys mentioned above are used and
22544 // understood by the spec. Implementations or sub modules can pass
22545 // other keys to the AssertionError's constructor - they will be
22546 // ignored.
22547
22548 // 3. All of the following functions must throw an AssertionError
22549 // when a corresponding condition is not met, with a message that
22550 // may be undefined if not provided. All assertion methods provide
22551 // both the actual and expected values to the assertion error for
22552 // display purposes.
22553
22554 function fail(actual, expected, message, operator, stackStartFunction) {
22555 throw new assert.AssertionError({
22556 message: message,
22557 actual: actual,
22558 expected: expected,
22559 operator: operator,
22560 stackStartFunction: stackStartFunction
22561 });
22562 }
22563
22564 // EXTENSION! allows for well behaved errors defined elsewhere.
22565 assert.fail = fail;
22566
22567 // 4. Pure assertion tests whether a value is truthy, as determined
22568 // by !!guard.
22569 // assert.ok(guard, message_opt);
22570 // This statement is equivalent to assert.equal(true, !!guard,
22571 // message_opt);. To test strictly for the value true, use
22572 // assert.strictEqual(true, guard, message_opt);.
22573
22574 function ok(value, message) {
22575 if (!value) fail(value, true, message, '==', assert.ok);
22576 }
22577 assert.ok = ok;
22578
22579 // 5. The equality assertion tests shallow, coercive equality with
22580 // ==.
22581 // assert.equal(actual, expected, message_opt);
22582
22583 assert.equal = function equal(actual, expected, message) {
22584 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
22585 };
22586
22587 // 6. The non-equality assertion tests for whether two objects are not equal
22588 // with != assert.notEqual(actual, expected, message_opt);
22589
22590 assert.notEqual = function notEqual(actual, expected, message) {
22591 if (actual == expected) {
22592 fail(actual, expected, message, '!=', assert.notEqual);
22593 }
22594 };
22595
22596 // 7. The equivalence assertion tests a deep equality relation.
22597 // assert.deepEqual(actual, expected, message_opt);
22598
22599 assert.deepEqual = function deepEqual(actual, expected, message) {
22600 if (!_deepEqual(actual, expected, false)) {
22601 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
22602 }
22603 };
22604
22605 assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
22606 if (!_deepEqual(actual, expected, true)) {
22607 fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);
22608 }
22609 };
22610
22611 function _deepEqual(actual, expected, strict, memos) {
22612 // 7.1. All identical values are equivalent, as determined by ===.
22613 if (actual === expected) {
22614 return true;
22615 } else if (isBuffer(actual) && isBuffer(expected)) {
22616 return compare(actual, expected) === 0;
22617
22618 // 7.2. If the expected value is a Date object, the actual value is
22619 // equivalent if it is also a Date object that refers to the same time.
22620 } else if (util.isDate(actual) && util.isDate(expected)) {
22621 return actual.getTime() === expected.getTime();
22622
22623 // 7.3 If the expected value is a RegExp object, the actual value is
22624 // equivalent if it is also a RegExp object with the same source and
22625 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
22626 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
22627 return actual.source === expected.source &&
22628 actual.global === expected.global &&
22629 actual.multiline === expected.multiline &&
22630 actual.lastIndex === expected.lastIndex &&
22631 actual.ignoreCase === expected.ignoreCase;
22632
22633 // 7.4. Other pairs that do not both pass typeof value == 'object',
22634 // equivalence is determined by ==.
22635 } else if ((actual === null || typeof actual !== 'object') &&
22636 (expected === null || typeof expected !== 'object')) {
22637 return strict ? actual === expected : actual == expected;
22638
22639 // If both values are instances of typed arrays, wrap their underlying
22640 // ArrayBuffers in a Buffer each to increase performance
22641 // This optimization requires the arrays to have the same type as checked by
22642 // Object.prototype.toString (aka pToString). Never perform binary
22643 // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their
22644 // bit patterns are not identical.
22645 } else if (isView(actual) && isView(expected) &&
22646 pToString(actual) === pToString(expected) &&
22647 !(actual instanceof Float32Array ||
22648 actual instanceof Float64Array)) {
22649 return compare(new Uint8Array(actual.buffer),
22650 new Uint8Array(expected.buffer)) === 0;
22651
22652 // 7.5 For all other Object pairs, including Array objects, equivalence is
22653 // determined by having the same number of owned properties (as verified
22654 // with Object.prototype.hasOwnProperty.call), the same set of keys
22655 // (although not necessarily the same order), equivalent values for every
22656 // corresponding key, and an identical 'prototype' property. Note: this
22657 // accounts for both named and indexed properties on Arrays.
22658 } else if (isBuffer(actual) !== isBuffer(expected)) {
22659 return false;
22660 } else {
22661 memos = memos || {actual: [], expected: []};
22662
22663 var actualIndex = memos.actual.indexOf(actual);
22664 if (actualIndex !== -1) {
22665 if (actualIndex === memos.expected.indexOf(expected)) {
22666 return true;
22667 }
22668 }
22669
22670 memos.actual.push(actual);
22671 memos.expected.push(expected);
22672
22673 return objEquiv(actual, expected, strict, memos);
22674 }
22675 }
22676
22677 function isArguments(object) {
22678 return Object.prototype.toString.call(object) == '[object Arguments]';
22679 }
22680
22681 function objEquiv(a, b, strict, actualVisitedObjects) {
22682 if (a === null || a === undefined || b === null || b === undefined)
22683 return false;
22684 // if one is a primitive, the other must be same
22685 if (util.isPrimitive(a) || util.isPrimitive(b))
22686 return a === b;
22687 if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))
22688 return false;
22689 var aIsArgs = isArguments(a);
22690 var bIsArgs = isArguments(b);
22691 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
22692 return false;
22693 if (aIsArgs) {
22694 a = pSlice.call(a);
22695 b = pSlice.call(b);
22696 return _deepEqual(a, b, strict);
22697 }
22698 var ka = objectKeys(a);
22699 var kb = objectKeys(b);
22700 var key, i;
22701 // having the same number of owned properties (keys incorporates
22702 // hasOwnProperty)
22703 if (ka.length !== kb.length)
22704 return false;
22705 //the same set of keys (although not necessarily the same order),
22706 ka.sort();
22707 kb.sort();
22708 //~~~cheap key test
22709 for (i = ka.length - 1; i >= 0; i--) {
22710 if (ka[i] !== kb[i])
22711 return false;
22712 }
22713 //equivalent values for every corresponding key, and
22714 //~~~possibly expensive deep test
22715 for (i = ka.length - 1; i >= 0; i--) {
22716 key = ka[i];
22717 if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))
22718 return false;
22719 }
22720 return true;
22721 }
22722
22723 // 8. The non-equivalence assertion tests for any deep inequality.
22724 // assert.notDeepEqual(actual, expected, message_opt);
22725
22726 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
22727 if (_deepEqual(actual, expected, false)) {
22728 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
22729 }
22730 };
22731
22732 assert.notDeepStrictEqual = notDeepStrictEqual;
22733 function notDeepStrictEqual(actual, expected, message) {
22734 if (_deepEqual(actual, expected, true)) {
22735 fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);
22736 }
22737 }
22738
22739
22740 // 9. The strict equality assertion tests strict equality, as determined by ===.
22741 // assert.strictEqual(actual, expected, message_opt);
22742
22743 assert.strictEqual = function strictEqual(actual, expected, message) {
22744 if (actual !== expected) {
22745 fail(actual, expected, message, '===', assert.strictEqual);
22746 }
22747 };
22748
22749 // 10. The strict non-equality assertion tests for strict inequality, as
22750 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
22751
22752 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
22753 if (actual === expected) {
22754 fail(actual, expected, message, '!==', assert.notStrictEqual);
22755 }
22756 };
22757
22758 function expectedException(actual, expected) {
22759 if (!actual || !expected) {
22760 return false;
22761 }
22762
22763 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
22764 return expected.test(actual);
22765 }
22766
22767 try {
22768 if (actual instanceof expected) {
22769 return true;
22770 }
22771 } catch (e) {
22772 // Ignore. The instanceof check doesn't work for arrow functions.
22773 }
22774
22775 if (Error.isPrototypeOf(expected)) {
22776 return false;
22777 }
22778
22779 return expected.call({}, actual) === true;
22780 }
22781
22782 function _tryBlock(block) {
22783 var error;
22784 try {
22785 block();
22786 } catch (e) {
22787 error = e;
22788 }
22789 return error;
22790 }
22791
22792 function _throws(shouldThrow, block, expected, message) {
22793 var actual;
22794
22795 if (typeof block !== 'function') {
22796 throw new TypeError('"block" argument must be a function');
22797 }
22798
22799 if (typeof expected === 'string') {
22800 message = expected;
22801 expected = null;
22802 }
22803
22804 actual = _tryBlock(block);
22805
22806 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
22807 (message ? ' ' + message : '.');
22808
22809 if (shouldThrow && !actual) {
22810 fail(actual, expected, 'Missing expected exception' + message);
22811 }
22812
22813 var userProvidedMessage = typeof message === 'string';
22814 var isUnwantedException = !shouldThrow && util.isError(actual);
22815 var isUnexpectedException = !shouldThrow && actual && !expected;
22816
22817 if ((isUnwantedException &&
22818 userProvidedMessage &&
22819 expectedException(actual, expected)) ||
22820 isUnexpectedException) {
22821 fail(actual, expected, 'Got unwanted exception' + message);
22822 }
22823
22824 if ((shouldThrow && actual && expected &&
22825 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
22826 throw actual;
22827 }
22828 }
22829
22830 // 11. Expected to throw an error:
22831 // assert.throws(block, Error_opt, message_opt);
22832
22833 assert.throws = function(block, /*optional*/error, /*optional*/message) {
22834 _throws(true, block, error, message);
22835 };
22836
22837 // EXTENSION! This is annoying to write outside this module.
22838 assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {
22839 _throws(false, block, error, message);
22840 };
22841
22842 assert.ifError = function(err) { if (err) throw err; };
22843
22844 var objectKeys = Object.keys || function (obj) {
22845 var keys = [];
22846 for (var key in obj) {
22847 if (hasOwn.call(obj, key)) keys.push(key);
22848 }
22849 return keys;
22850 };
22851
22852 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
22853 },{"util/":30}],2:[function(require,module,exports){
22854 'use strict'
22855
22856 exports.byteLength = byteLength
22857 exports.toByteArray = toByteArray
22858 exports.fromByteArray = fromByteArray
22859
22860 var lookup = []
22861 var revLookup = []
22862 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
22863
22864 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
22865 for (var i = 0, len = code.length; i < len; ++i) {
22866 lookup[i] = code[i]
22867 revLookup[code.charCodeAt(i)] = i
22868 }
22869
22870 revLookup['-'.charCodeAt(0)] = 62
22871 revLookup['_'.charCodeAt(0)] = 63
22872
22873 function placeHoldersCount (b64) {
22874 var len = b64.length
22875 if (len % 4 > 0) {
22876 throw new Error('Invalid string. Length must be a multiple of 4')
22877 }
22878
22879 // the number of equal signs (place holders)
22880 // if there are two placeholders, than the two characters before it
22881 // represent one byte
22882 // if there is only one, then the three characters before it represent 2 bytes
22883 // this is just a cheap hack to not do indexOf twice
22884 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
22885 }
22886
22887 function byteLength (b64) {
22888 // base64 is 4/3 + up to two characters of the original data
22889 return b64.length * 3 / 4 - placeHoldersCount(b64)
22890 }
22891
22892 function toByteArray (b64) {
22893 var i, j, l, tmp, placeHolders, arr
22894 var len = b64.length
22895 placeHolders = placeHoldersCount(b64)
22896
22897 arr = new Arr(len * 3 / 4 - placeHolders)
22898
22899 // if there are placeholders, only get up to the last complete 4 chars
22900 l = placeHolders > 0 ? len - 4 : len
22901
22902 var L = 0
22903
22904 for (i = 0, j = 0; i < l; i += 4, j += 3) {
22905 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
22906 arr[L++] = (tmp >> 16) & 0xFF
22907 arr[L++] = (tmp >> 8) & 0xFF
22908 arr[L++] = tmp & 0xFF
22909 }
22910
22911 if (placeHolders === 2) {
22912 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
22913 arr[L++] = tmp & 0xFF
22914 } else if (placeHolders === 1) {
22915 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
22916 arr[L++] = (tmp >> 8) & 0xFF
22917 arr[L++] = tmp & 0xFF
22918 }
22919
22920 return arr
22921 }
22922
22923 function tripletToBase64 (num) {
22924 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
22925 }
22926
22927 function encodeChunk (uint8, start, end) {
22928 var tmp
22929 var output = []
22930 for (var i = start; i < end; i += 3) {
22931 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
22932 output.push(tripletToBase64(tmp))
22933 }
22934 return output.join('')
22935 }
22936
22937 function fromByteArray (uint8) {
22938 var tmp
22939 var len = uint8.length
22940 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
22941 var output = ''
22942 var parts = []
22943 var maxChunkLength = 16383 // must be multiple of 3
22944
22945 // go through the array every three bytes, we'll deal with trailing stuff later
22946 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
22947 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
22948 }
22949
22950 // pad the end with zeros, but make sure to not forget the extra bytes
22951 if (extraBytes === 1) {
22952 tmp = uint8[len - 1]
22953 output += lookup[tmp >> 2]
22954 output += lookup[(tmp << 4) & 0x3F]
22955 output += '=='
22956 } else if (extraBytes === 2) {
22957 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
22958 output += lookup[tmp >> 10]
22959 output += lookup[(tmp >> 4) & 0x3F]
22960 output += lookup[(tmp << 2) & 0x3F]
22961 output += '='
22962 }
22963
22964 parts.push(output)
22965
22966 return parts.join('')
22967 }
22968
22969 },{}],3:[function(require,module,exports){
22970
22971 },{}],4:[function(require,module,exports){
22972 (function (global){
22973 'use strict';
22974
22975 var buffer = require('buffer');
22976 var Buffer = buffer.Buffer;
22977 var SlowBuffer = buffer.SlowBuffer;
22978 var MAX_LEN = buffer.kMaxLength || 2147483647;
22979 exports.alloc = function alloc(size, fill, encoding) {
22980 if (typeof Buffer.alloc === 'function') {
22981 return Buffer.alloc(size, fill, encoding);
22982 }
22983 if (typeof encoding === 'number') {
22984 throw new TypeError('encoding must not be number');
22985 }
22986 if (typeof size !== 'number') {
22987 throw new TypeError('size must be a number');
22988 }
22989 if (size > MAX_LEN) {
22990 throw new RangeError('size is too large');
22991 }
22992 var enc = encoding;
22993 var _fill = fill;
22994 if (_fill === undefined) {
22995 enc = undefined;
22996 _fill = 0;
22997 }
22998 var buf = new Buffer(size);
22999 if (typeof _fill === 'string') {
23000 var fillBuf = new Buffer(_fill, enc);
23001 var flen = fillBuf.length;
23002 var i = -1;
23003 while (++i < size) {
23004 buf[i] = fillBuf[i % flen];
23005 }
23006 } else {
23007 buf.fill(_fill);
23008 }
23009 return buf;
23010 }
23011 exports.allocUnsafe = function allocUnsafe(size) {
23012 if (typeof Buffer.allocUnsafe === 'function') {
23013 return Buffer.allocUnsafe(size);
23014 }
23015 if (typeof size !== 'number') {
23016 throw new TypeError('size must be a number');
23017 }
23018 if (size > MAX_LEN) {
23019 throw new RangeError('size is too large');
23020 }
23021 return new Buffer(size);
23022 }
23023 exports.from = function from(value, encodingOrOffset, length) {
23024 if (typeof Buffer.from === 'function' && (!global.Uint8Array || Uint8Array.from !== Buffer.from)) {
23025 return Buffer.from(value, encodingOrOffset, length);
23026 }
23027 if (typeof value === 'number') {
23028 throw new TypeError('"value" argument must not be a number');
23029 }
23030 if (typeof value === 'string') {
23031 return new Buffer(value, encodingOrOffset);
23032 }
23033 if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
23034 var offset = encodingOrOffset;
23035 if (arguments.length === 1) {
23036 return new Buffer(value);
23037 }
23038 if (typeof offset === 'undefined') {
23039 offset = 0;
23040 }
23041 var len = length;
23042 if (typeof len === 'undefined') {
23043 len = value.byteLength - offset;
23044 }
23045 if (offset >= value.byteLength) {
23046 throw new RangeError('\'offset\' is out of bounds');
23047 }
23048 if (len > value.byteLength - offset) {
23049 throw new RangeError('\'length\' is out of bounds');
23050 }
23051 return new Buffer(value.slice(offset, offset + len));
23052 }
23053 if (Buffer.isBuffer(value)) {
23054 var out = new Buffer(value.length);
23055 value.copy(out, 0, 0, value.length);
23056 return out;
23057 }
23058 if (value) {
23059 if (Array.isArray(value) || (typeof ArrayBuffer !== 'undefined' && value.buffer instanceof ArrayBuffer) || 'length' in value) {
23060 return new Buffer(value);
23061 }
23062 if (value.type === 'Buffer' && Array.isArray(value.data)) {
23063 return new Buffer(value.data);
23064 }
23065 }
23066
23067 throw new TypeError('First argument must be a string, Buffer, ' + 'ArrayBuffer, Array, or array-like object.');
23068 }
23069 exports.allocUnsafeSlow = function allocUnsafeSlow(size) {
23070 if (typeof Buffer.allocUnsafeSlow === 'function') {
23071 return Buffer.allocUnsafeSlow(size);
23072 }
23073 if (typeof size !== 'number') {
23074 throw new TypeError('size must be a number');
23075 }
23076 if (size >= MAX_LEN) {
23077 throw new RangeError('size is too large');
23078 }
23079 return new SlowBuffer(size);
23080 }
23081
23082 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
23083 },{"buffer":5}],5:[function(require,module,exports){
23084 /*!
23085 * The buffer module from node.js, for the browser.
23086 *
23087 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
23088 * @license MIT
23089 */
23090 /* eslint-disable no-proto */
23091
23092 'use strict'
23093
23094 var base64 = require('base64-js')
23095 var ieee754 = require('ieee754')
23096
23097 exports.Buffer = Buffer
23098 exports.SlowBuffer = SlowBuffer
23099 exports.INSPECT_MAX_BYTES = 50
23100
23101 var K_MAX_LENGTH = 0x7fffffff
23102 exports.kMaxLength = K_MAX_LENGTH
23103
23104 /**
23105 * If `Buffer.TYPED_ARRAY_SUPPORT`:
23106 * === true Use Uint8Array implementation (fastest)
23107 * === false Print warning and recommend using `buffer` v4.x which has an Object
23108 * implementation (most compatible, even IE6)
23109 *
23110 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
23111 * Opera 11.6+, iOS 4.2+.
23112 *
23113 * We report that the browser does not support typed arrays if the are not subclassable
23114 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
23115 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
23116 * for __proto__ and has a buggy typed array implementation.
23117 */
23118 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
23119
23120 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
23121 typeof console.error === 'function') {
23122 console.error(
23123 'This browser lacks typed array (Uint8Array) support which is required by ' +
23124 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
23125 )
23126 }
23127
23128 function typedArraySupport () {
23129 // Can typed array instances can be augmented?
23130 try {
23131 var arr = new Uint8Array(1)
23132 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
23133 return arr.foo() === 42
23134 } catch (e) {
23135 return false
23136 }
23137 }
23138
23139 function createBuffer (length) {
23140 if (length > K_MAX_LENGTH) {
23141 throw new RangeError('Invalid typed array length')
23142 }
23143 // Return an augmented `Uint8Array` instance
23144 var buf = new Uint8Array(length)
23145 buf.__proto__ = Buffer.prototype
23146 return buf
23147 }
23148
23149 /**
23150 * The Buffer constructor returns instances of `Uint8Array` that have their
23151 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
23152 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
23153 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
23154 * returns a single octet.
23155 *
23156 * The `Uint8Array` prototype remains unmodified.
23157 */
23158
23159 function Buffer (arg, encodingOrOffset, length) {
23160 // Common case.
23161 if (typeof arg === 'number') {
23162 if (typeof encodingOrOffset === 'string') {
23163 throw new Error(
23164 'If encoding is specified then the first argument must be a string'
23165 )
23166 }
23167 return allocUnsafe(arg)
23168 }
23169 return from(arg, encodingOrOffset, length)
23170 }
23171
23172 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
23173 if (typeof Symbol !== 'undefined' && Symbol.species &&
23174 Buffer[Symbol.species] === Buffer) {
23175 Object.defineProperty(Buffer, Symbol.species, {
23176 value: null,
23177 configurable: true,
23178 enumerable: false,
23179 writable: false
23180 })
23181 }
23182
23183 Buffer.poolSize = 8192 // not used by this implementation
23184
23185 function from (value, encodingOrOffset, length) {
23186 if (typeof value === 'number') {
23187 throw new TypeError('"value" argument must not be a number')
23188 }
23189
23190 if (value instanceof ArrayBuffer) {
23191 return fromArrayBuffer(value, encodingOrOffset, length)
23192 }
23193
23194 if (typeof value === 'string') {
23195 return fromString(value, encodingOrOffset)
23196 }
23197
23198 return fromObject(value)
23199 }
23200
23201 /**
23202 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
23203 * if value is a number.
23204 * Buffer.from(str[, encoding])
23205 * Buffer.from(array)
23206 * Buffer.from(buffer)
23207 * Buffer.from(arrayBuffer[, byteOffset[, length]])
23208 **/
23209 Buffer.from = function (value, encodingOrOffset, length) {
23210 return from(value, encodingOrOffset, length)
23211 }
23212
23213 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
23214 // https://github.com/feross/buffer/pull/148
23215 Buffer.prototype.__proto__ = Uint8Array.prototype
23216 Buffer.__proto__ = Uint8Array
23217
23218 function assertSize (size) {
23219 if (typeof size !== 'number') {
23220 throw new TypeError('"size" argument must be a number')
23221 } else if (size < 0) {
23222 throw new RangeError('"size" argument must not be negative')
23223 }
23224 }
23225
23226 function alloc (size, fill, encoding) {
23227 assertSize(size)
23228 if (size <= 0) {
23229 return createBuffer(size)
23230 }
23231 if (fill !== undefined) {
23232 // Only pay attention to encoding if it's a string. This
23233 // prevents accidentally sending in a number that would
23234 // be interpretted as a start offset.
23235 return typeof encoding === 'string'
23236 ? createBuffer(size).fill(fill, encoding)
23237 : createBuffer(size).fill(fill)
23238 }
23239 return createBuffer(size)
23240 }
23241
23242 /**
23243 * Creates a new filled Buffer instance.
23244 * alloc(size[, fill[, encoding]])
23245 **/
23246 Buffer.alloc = function (size, fill, encoding) {
23247 return alloc(size, fill, encoding)
23248 }
23249
23250 function allocUnsafe (size) {
23251 assertSize(size)
23252 return createBuffer(size < 0 ? 0 : checked(size) | 0)
23253 }
23254
23255 /**
23256 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
23257 * */
23258 Buffer.allocUnsafe = function (size) {
23259 return allocUnsafe(size)
23260 }
23261 /**
23262 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
23263 */
23264 Buffer.allocUnsafeSlow = function (size) {
23265 return allocUnsafe(size)
23266 }
23267
23268 function fromString (string, encoding) {
23269 if (typeof encoding !== 'string' || encoding === '') {
23270 encoding = 'utf8'
23271 }
23272
23273 if (!Buffer.isEncoding(encoding)) {
23274 throw new TypeError('"encoding" must be a valid string encoding')
23275 }
23276
23277 var length = byteLength(string, encoding) | 0
23278 var buf = createBuffer(length)
23279
23280 var actual = buf.write(string, encoding)
23281
23282 if (actual !== length) {
23283 // Writing a hex string, for example, that contains invalid characters will
23284 // cause everything after the first invalid character to be ignored. (e.g.
23285 // 'abxxcd' will be treated as 'ab')
23286 buf = buf.slice(0, actual)
23287 }
23288
23289 return buf
23290 }
23291
23292 function fromArrayLike (array) {
23293 var length = array.length < 0 ? 0 : checked(array.length) | 0
23294 var buf = createBuffer(length)
23295 for (var i = 0; i < length; i += 1) {
23296 buf[i] = array[i] & 255
23297 }
23298 return buf
23299 }
23300
23301 function fromArrayBuffer (array, byteOffset, length) {
23302 if (byteOffset < 0 || array.byteLength < byteOffset) {
23303 throw new RangeError('\'offset\' is out of bounds')
23304 }
23305
23306 if (array.byteLength < byteOffset + (length || 0)) {
23307 throw new RangeError('\'length\' is out of bounds')
23308 }
23309
23310 var buf
23311 if (byteOffset === undefined && length === undefined) {
23312 buf = new Uint8Array(array)
23313 } else if (length === undefined) {
23314 buf = new Uint8Array(array, byteOffset)
23315 } else {
23316 buf = new Uint8Array(array, byteOffset, length)
23317 }
23318
23319 // Return an augmented `Uint8Array` instance
23320 buf.__proto__ = Buffer.prototype
23321 return buf
23322 }
23323
23324 function fromObject (obj) {
23325 if (Buffer.isBuffer(obj)) {
23326 var len = checked(obj.length) | 0
23327 var buf = createBuffer(len)
23328
23329 if (buf.length === 0) {
23330 return buf
23331 }
23332
23333 obj.copy(buf, 0, 0, len)
23334 return buf
23335 }
23336
23337 if (obj) {
23338 if (ArrayBuffer.isView(obj) || 'length' in obj) {
23339 if (typeof obj.length !== 'number' || isnan(obj.length)) {
23340 return createBuffer(0)
23341 }
23342 return fromArrayLike(obj)
23343 }
23344
23345 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
23346 return fromArrayLike(obj.data)
23347 }
23348 }
23349
23350 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
23351 }
23352
23353 function checked (length) {
23354 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
23355 // length is NaN (which is otherwise coerced to zero.)
23356 if (length >= K_MAX_LENGTH) {
23357 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
23358 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
23359 }
23360 return length | 0
23361 }
23362
23363 function SlowBuffer (length) {
23364 if (+length != length) { // eslint-disable-line eqeqeq
23365 length = 0
23366 }
23367 return Buffer.alloc(+length)
23368 }
23369
23370 Buffer.isBuffer = function isBuffer (b) {
23371 return b != null && b._isBuffer === true
23372 }
23373
23374 Buffer.compare = function compare (a, b) {
23375 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
23376 throw new TypeError('Arguments must be Buffers')
23377 }
23378
23379 if (a === b) return 0
23380
23381 var x = a.length
23382 var y = b.length
23383
23384 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
23385 if (a[i] !== b[i]) {
23386 x = a[i]
23387 y = b[i]
23388 break
23389 }
23390 }
23391
23392 if (x < y) return -1
23393 if (y < x) return 1
23394 return 0
23395 }
23396
23397 Buffer.isEncoding = function isEncoding (encoding) {
23398 switch (String(encoding).toLowerCase()) {
23399 case 'hex':
23400 case 'utf8':
23401 case 'utf-8':
23402 case 'ascii':
23403 case 'latin1':
23404 case 'binary':
23405 case 'base64':
23406 case 'ucs2':
23407 case 'ucs-2':
23408 case 'utf16le':
23409 case 'utf-16le':
23410 return true
23411 default:
23412 return false
23413 }
23414 }
23415
23416 Buffer.concat = function concat (list, length) {
23417 if (!Array.isArray(list)) {
23418 throw new TypeError('"list" argument must be an Array of Buffers')
23419 }
23420
23421 if (list.length === 0) {
23422 return Buffer.alloc(0)
23423 }
23424
23425 var i
23426 if (length === undefined) {
23427 length = 0
23428 for (i = 0; i < list.length; ++i) {
23429 length += list[i].length
23430 }
23431 }
23432
23433 var buffer = Buffer.allocUnsafe(length)
23434 var pos = 0
23435 for (i = 0; i < list.length; ++i) {
23436 var buf = list[i]
23437 if (!Buffer.isBuffer(buf)) {
23438 throw new TypeError('"list" argument must be an Array of Buffers')
23439 }
23440 buf.copy(buffer, pos)
23441 pos += buf.length
23442 }
23443 return buffer
23444 }
23445
23446 function byteLength (string, encoding) {
23447 if (Buffer.isBuffer(string)) {
23448 return string.length
23449 }
23450 if (ArrayBuffer.isView(string) || string instanceof ArrayBuffer) {
23451 return string.byteLength
23452 }
23453 if (typeof string !== 'string') {
23454 string = '' + string
23455 }
23456
23457 var len = string.length
23458 if (len === 0) return 0
23459
23460 // Use a for loop to avoid recursion
23461 var loweredCase = false
23462 for (;;) {
23463 switch (encoding) {
23464 case 'ascii':
23465 case 'latin1':
23466 case 'binary':
23467 return len
23468 case 'utf8':
23469 case 'utf-8':
23470 case undefined:
23471 return utf8ToBytes(string).length
23472 case 'ucs2':
23473 case 'ucs-2':
23474 case 'utf16le':
23475 case 'utf-16le':
23476 return len * 2
23477 case 'hex':
23478 return len >>> 1
23479 case 'base64':
23480 return base64ToBytes(string).length
23481 default:
23482 if (loweredCase) return utf8ToBytes(string).length // assume utf8
23483 encoding = ('' + encoding).toLowerCase()
23484 loweredCase = true
23485 }
23486 }
23487 }
23488 Buffer.byteLength = byteLength
23489
23490 function slowToString (encoding, start, end) {
23491 var loweredCase = false
23492
23493 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
23494 // property of a typed array.
23495
23496 // This behaves neither like String nor Uint8Array in that we set start/end
23497 // to their upper/lower bounds if the value passed is out of range.
23498 // undefined is handled specially as per ECMA-262 6th Edition,
23499 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
23500 if (start === undefined || start < 0) {
23501 start = 0
23502 }
23503 // Return early if start > this.length. Done here to prevent potential uint32
23504 // coercion fail below.
23505 if (start > this.length) {
23506 return ''
23507 }
23508
23509 if (end === undefined || end > this.length) {
23510 end = this.length
23511 }
23512
23513 if (end <= 0) {
23514 return ''
23515 }
23516
23517 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
23518 end >>>= 0
23519 start >>>= 0
23520
23521 if (end <= start) {
23522 return ''
23523 }
23524
23525 if (!encoding) encoding = 'utf8'
23526
23527 while (true) {
23528 switch (encoding) {
23529 case 'hex':
23530 return hexSlice(this, start, end)
23531
23532 case 'utf8':
23533 case 'utf-8':
23534 return utf8Slice(this, start, end)
23535
23536 case 'ascii':
23537 return asciiSlice(this, start, end)
23538
23539 case 'latin1':
23540 case 'binary':
23541 return latin1Slice(this, start, end)
23542
23543 case 'base64':
23544 return base64Slice(this, start, end)
23545
23546 case 'ucs2':
23547 case 'ucs-2':
23548 case 'utf16le':
23549 case 'utf-16le':
23550 return utf16leSlice(this, start, end)
23551
23552 default:
23553 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
23554 encoding = (encoding + '').toLowerCase()
23555 loweredCase = true
23556 }
23557 }
23558 }
23559
23560 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
23561 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
23562 // reliably in a browserify context because there could be multiple different
23563 // copies of the 'buffer' package in use. This method works even for Buffer
23564 // instances that were created from another copy of the `buffer` package.
23565 // See: https://github.com/feross/buffer/issues/154
23566 Buffer.prototype._isBuffer = true
23567
23568 function swap (b, n, m) {
23569 var i = b[n]
23570 b[n] = b[m]
23571 b[m] = i
23572 }
23573
23574 Buffer.prototype.swap16 = function swap16 () {
23575 var len = this.length
23576 if (len % 2 !== 0) {
23577 throw new RangeError('Buffer size must be a multiple of 16-bits')
23578 }
23579 for (var i = 0; i < len; i += 2) {
23580 swap(this, i, i + 1)
23581 }
23582 return this
23583 }
23584
23585 Buffer.prototype.swap32 = function swap32 () {
23586 var len = this.length
23587 if (len % 4 !== 0) {
23588 throw new RangeError('Buffer size must be a multiple of 32-bits')
23589 }
23590 for (var i = 0; i < len; i += 4) {
23591 swap(this, i, i + 3)
23592 swap(this, i + 1, i + 2)
23593 }
23594 return this
23595 }
23596
23597 Buffer.prototype.swap64 = function swap64 () {
23598 var len = this.length
23599 if (len % 8 !== 0) {
23600 throw new RangeError('Buffer size must be a multiple of 64-bits')
23601 }
23602 for (var i = 0; i < len; i += 8) {
23603 swap(this, i, i + 7)
23604 swap(this, i + 1, i + 6)
23605 swap(this, i + 2, i + 5)
23606 swap(this, i + 3, i + 4)
23607 }
23608 return this
23609 }
23610
23611 Buffer.prototype.toString = function toString () {
23612 var length = this.length
23613 if (length === 0) return ''
23614 if (arguments.length === 0) return utf8Slice(this, 0, length)
23615 return slowToString.apply(this, arguments)
23616 }
23617
23618 Buffer.prototype.equals = function equals (b) {
23619 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
23620 if (this === b) return true
23621 return Buffer.compare(this, b) === 0
23622 }
23623
23624 Buffer.prototype.inspect = function inspect () {
23625 var str = ''
23626 var max = exports.INSPECT_MAX_BYTES
23627 if (this.length > 0) {
23628 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
23629 if (this.length > max) str += ' ... '
23630 }
23631 return '<Buffer ' + str + '>'
23632 }
23633
23634 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
23635 if (!Buffer.isBuffer(target)) {
23636 throw new TypeError('Argument must be a Buffer')
23637 }
23638
23639 if (start === undefined) {
23640 start = 0
23641 }
23642 if (end === undefined) {
23643 end = target ? target.length : 0
23644 }
23645 if (thisStart === undefined) {
23646 thisStart = 0
23647 }
23648 if (thisEnd === undefined) {
23649 thisEnd = this.length
23650 }
23651
23652 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
23653 throw new RangeError('out of range index')
23654 }
23655
23656 if (thisStart >= thisEnd && start >= end) {
23657 return 0
23658 }
23659 if (thisStart >= thisEnd) {
23660 return -1
23661 }
23662 if (start >= end) {
23663 return 1
23664 }
23665
23666 start >>>= 0
23667 end >>>= 0
23668 thisStart >>>= 0
23669 thisEnd >>>= 0
23670
23671 if (this === target) return 0
23672
23673 var x = thisEnd - thisStart
23674 var y = end - start
23675 var len = Math.min(x, y)
23676
23677 var thisCopy = this.slice(thisStart, thisEnd)
23678 var targetCopy = target.slice(start, end)
23679
23680 for (var i = 0; i < len; ++i) {
23681 if (thisCopy[i] !== targetCopy[i]) {
23682 x = thisCopy[i]
23683 y = targetCopy[i]
23684 break
23685 }
23686 }
23687
23688 if (x < y) return -1
23689 if (y < x) return 1
23690 return 0
23691 }
23692
23693 // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
23694 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
23695 //
23696 // Arguments:
23697 // - buffer - a Buffer to search
23698 // - val - a string, Buffer, or number
23699 // - byteOffset - an index into `buffer`; will be clamped to an int32
23700 // - encoding - an optional encoding, relevant is val is a string
23701 // - dir - true for indexOf, false for lastIndexOf
23702 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
23703 // Empty buffer means no match
23704 if (buffer.length === 0) return -1
23705
23706 // Normalize byteOffset
23707 if (typeof byteOffset === 'string') {
23708 encoding = byteOffset
23709 byteOffset = 0
23710 } else if (byteOffset > 0x7fffffff) {
23711 byteOffset = 0x7fffffff
23712 } else if (byteOffset < -0x80000000) {
23713 byteOffset = -0x80000000
23714 }
23715 byteOffset = +byteOffset // Coerce to Number.
23716 if (isNaN(byteOffset)) {
23717 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
23718 byteOffset = dir ? 0 : (buffer.length - 1)
23719 }
23720
23721 // Normalize byteOffset: negative offsets start from the end of the buffer
23722 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
23723 if (byteOffset >= buffer.length) {
23724 if (dir) return -1
23725 else byteOffset = buffer.length - 1
23726 } else if (byteOffset < 0) {
23727 if (dir) byteOffset = 0
23728 else return -1
23729 }
23730
23731 // Normalize val
23732 if (typeof val === 'string') {
23733 val = Buffer.from(val, encoding)
23734 }
23735
23736 // Finally, search either indexOf (if dir is true) or lastIndexOf
23737 if (Buffer.isBuffer(val)) {
23738 // Special case: looking for empty string/buffer always fails
23739 if (val.length === 0) {
23740 return -1
23741 }
23742 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
23743 } else if (typeof val === 'number') {
23744 val = val & 0xFF // Search for a byte value [0-255]
23745 if (typeof Uint8Array.prototype.indexOf === 'function') {
23746 if (dir) {
23747 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
23748 } else {
23749 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
23750 }
23751 }
23752 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
23753 }
23754
23755 throw new TypeError('val must be string, number or Buffer')
23756 }
23757
23758 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
23759 var indexSize = 1
23760 var arrLength = arr.length
23761 var valLength = val.length
23762
23763 if (encoding !== undefined) {
23764 encoding = String(encoding).toLowerCase()
23765 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
23766 encoding === 'utf16le' || encoding === 'utf-16le') {
23767 if (arr.length < 2 || val.length < 2) {
23768 return -1
23769 }
23770 indexSize = 2
23771 arrLength /= 2
23772 valLength /= 2
23773 byteOffset /= 2
23774 }
23775 }
23776
23777 function read (buf, i) {
23778 if (indexSize === 1) {
23779 return buf[i]
23780 } else {
23781 return buf.readUInt16BE(i * indexSize)
23782 }
23783 }
23784
23785 var i
23786 if (dir) {
23787 var foundIndex = -1
23788 for (i = byteOffset; i < arrLength; i++) {
23789 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
23790 if (foundIndex === -1) foundIndex = i
23791 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
23792 } else {
23793 if (foundIndex !== -1) i -= i - foundIndex
23794 foundIndex = -1
23795 }
23796 }
23797 } else {
23798 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
23799 for (i = byteOffset; i >= 0; i--) {
23800 var found = true
23801 for (var j = 0; j < valLength; j++) {
23802 if (read(arr, i + j) !== read(val, j)) {
23803 found = false
23804 break
23805 }
23806 }
23807 if (found) return i
23808 }
23809 }
23810
23811 return -1
23812 }
23813
23814 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
23815 return this.indexOf(val, byteOffset, encoding) !== -1
23816 }
23817
23818 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
23819 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
23820 }
23821
23822 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
23823 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
23824 }
23825
23826 function hexWrite (buf, string, offset, length) {
23827 offset = Number(offset) || 0
23828 var remaining = buf.length - offset
23829 if (!length) {
23830 length = remaining
23831 } else {
23832 length = Number(length)
23833 if (length > remaining) {
23834 length = remaining
23835 }
23836 }
23837
23838 // must be an even number of digits
23839 var strLen = string.length
23840 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
23841
23842 if (length > strLen / 2) {
23843 length = strLen / 2
23844 }
23845 for (var i = 0; i < length; ++i) {
23846 var parsed = parseInt(string.substr(i * 2, 2), 16)
23847 if (isNaN(parsed)) return i
23848 buf[offset + i] = parsed
23849 }
23850 return i
23851 }
23852
23853 function utf8Write (buf, string, offset, length) {
23854 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
23855 }
23856
23857 function asciiWrite (buf, string, offset, length) {
23858 return blitBuffer(asciiToBytes(string), buf, offset, length)
23859 }
23860
23861 function latin1Write (buf, string, offset, length) {
23862 return asciiWrite(buf, string, offset, length)
23863 }
23864
23865 function base64Write (buf, string, offset, length) {
23866 return blitBuffer(base64ToBytes(string), buf, offset, length)
23867 }
23868
23869 function ucs2Write (buf, string, offset, length) {
23870 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
23871 }
23872
23873 Buffer.prototype.write = function write (string, offset, length, encoding) {
23874 // Buffer#write(string)
23875 if (offset === undefined) {
23876 encoding = 'utf8'
23877 length = this.length
23878 offset = 0
23879 // Buffer#write(string, encoding)
23880 } else if (length === undefined && typeof offset === 'string') {
23881 encoding = offset
23882 length = this.length
23883 offset = 0
23884 // Buffer#write(string, offset[, length][, encoding])
23885 } else if (isFinite(offset)) {
23886 offset = offset >>> 0
23887 if (isFinite(length)) {
23888 length = length >>> 0
23889 if (encoding === undefined) encoding = 'utf8'
23890 } else {
23891 encoding = length
23892 length = undefined
23893 }
23894 } else {
23895 throw new Error(
23896 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
23897 )
23898 }
23899
23900 var remaining = this.length - offset
23901 if (length === undefined || length > remaining) length = remaining
23902
23903 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
23904 throw new RangeError('Attempt to write outside buffer bounds')
23905 }
23906
23907 if (!encoding) encoding = 'utf8'
23908
23909 var loweredCase = false
23910 for (;;) {
23911 switch (encoding) {
23912 case 'hex':
23913 return hexWrite(this, string, offset, length)
23914
23915 case 'utf8':
23916 case 'utf-8':
23917 return utf8Write(this, string, offset, length)
23918
23919 case 'ascii':
23920 return asciiWrite(this, string, offset, length)
23921
23922 case 'latin1':
23923 case 'binary':
23924 return latin1Write(this, string, offset, length)
23925
23926 case 'base64':
23927 // Warning: maxLength not taken into account in base64Write
23928 return base64Write(this, string, offset, length)
23929
23930 case 'ucs2':
23931 case 'ucs-2':
23932 case 'utf16le':
23933 case 'utf-16le':
23934 return ucs2Write(this, string, offset, length)
23935
23936 default:
23937 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
23938 encoding = ('' + encoding).toLowerCase()
23939 loweredCase = true
23940 }
23941 }
23942 }
23943
23944 Buffer.prototype.toJSON = function toJSON () {
23945 return {
23946 type: 'Buffer',
23947 data: Array.prototype.slice.call(this._arr || this, 0)
23948 }
23949 }
23950
23951 function base64Slice (buf, start, end) {
23952 if (start === 0 && end === buf.length) {
23953 return base64.fromByteArray(buf)
23954 } else {
23955 return base64.fromByteArray(buf.slice(start, end))
23956 }
23957 }
23958
23959 function utf8Slice (buf, start, end) {
23960 end = Math.min(buf.length, end)
23961 var res = []
23962
23963 var i = start
23964 while (i < end) {
23965 var firstByte = buf[i]
23966 var codePoint = null
23967 var bytesPerSequence = (firstByte > 0xEF) ? 4
23968 : (firstByte > 0xDF) ? 3
23969 : (firstByte > 0xBF) ? 2
23970 : 1
23971
23972 if (i + bytesPerSequence <= end) {
23973 var secondByte, thirdByte, fourthByte, tempCodePoint
23974
23975 switch (bytesPerSequence) {
23976 case 1:
23977 if (firstByte < 0x80) {
23978 codePoint = firstByte
23979 }
23980 break
23981 case 2:
23982 secondByte = buf[i + 1]
23983 if ((secondByte & 0xC0) === 0x80) {
23984 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
23985 if (tempCodePoint > 0x7F) {
23986 codePoint = tempCodePoint
23987 }
23988 }
23989 break
23990 case 3:
23991 secondByte = buf[i + 1]
23992 thirdByte = buf[i + 2]
23993 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
23994 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
23995 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
23996 codePoint = tempCodePoint
23997 }
23998 }
23999 break
24000 case 4:
24001 secondByte = buf[i + 1]
24002 thirdByte = buf[i + 2]
24003 fourthByte = buf[i + 3]
24004 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
24005 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
24006 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
24007 codePoint = tempCodePoint
24008 }
24009 }
24010 }
24011 }
24012
24013 if (codePoint === null) {
24014 // we did not generate a valid codePoint so insert a
24015 // replacement char (U+FFFD) and advance only 1 byte
24016 codePoint = 0xFFFD
24017 bytesPerSequence = 1
24018 } else if (codePoint > 0xFFFF) {
24019 // encode to utf16 (surrogate pair dance)
24020 codePoint -= 0x10000
24021 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
24022 codePoint = 0xDC00 | codePoint & 0x3FF
24023 }
24024
24025 res.push(codePoint)
24026 i += bytesPerSequence
24027 }
24028
24029 return decodeCodePointsArray(res)
24030 }
24031
24032 // Based on http://stackoverflow.com/a/22747272/680742, the browser with
24033 // the lowest limit is Chrome, with 0x10000 args.
24034 // We go 1 magnitude less, for safety
24035 var MAX_ARGUMENTS_LENGTH = 0x1000
24036
24037 function decodeCodePointsArray (codePoints) {
24038 var len = codePoints.length
24039 if (len <= MAX_ARGUMENTS_LENGTH) {
24040 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
24041 }
24042
24043 // Decode in chunks to avoid "call stack size exceeded".
24044 var res = ''
24045 var i = 0
24046 while (i < len) {
24047 res += String.fromCharCode.apply(
24048 String,
24049 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
24050 )
24051 }
24052 return res
24053 }
24054
24055 function asciiSlice (buf, start, end) {
24056 var ret = ''
24057 end = Math.min(buf.length, end)
24058
24059 for (var i = start; i < end; ++i) {
24060 ret += String.fromCharCode(buf[i] & 0x7F)
24061 }
24062 return ret
24063 }
24064
24065 function latin1Slice (buf, start, end) {
24066 var ret = ''
24067 end = Math.min(buf.length, end)
24068
24069 for (var i = start; i < end; ++i) {
24070 ret += String.fromCharCode(buf[i])
24071 }
24072 return ret
24073 }
24074
24075 function hexSlice (buf, start, end) {
24076 var len = buf.length
24077
24078 if (!start || start < 0) start = 0
24079 if (!end || end < 0 || end > len) end = len
24080
24081 var out = ''
24082 for (var i = start; i < end; ++i) {
24083 out += toHex(buf[i])
24084 }
24085 return out
24086 }
24087
24088 function utf16leSlice (buf, start, end) {
24089 var bytes = buf.slice(start, end)
24090 var res = ''
24091 for (var i = 0; i < bytes.length; i += 2) {
24092 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
24093 }
24094 return res
24095 }
24096
24097 Buffer.prototype.slice = function slice (start, end) {
24098 var len = this.length
24099 start = ~~start
24100 end = end === undefined ? len : ~~end
24101
24102 if (start < 0) {
24103 start += len
24104 if (start < 0) start = 0
24105 } else if (start > len) {
24106 start = len
24107 }
24108
24109 if (end < 0) {
24110 end += len
24111 if (end < 0) end = 0
24112 } else if (end > len) {
24113 end = len
24114 }
24115
24116 if (end < start) end = start
24117
24118 var newBuf = this.subarray(start, end)
24119 // Return an augmented `Uint8Array` instance
24120 newBuf.__proto__ = Buffer.prototype
24121 return newBuf
24122 }
24123
24124 /*
24125 * Need to make sure that buffer isn't trying to write out of bounds.
24126 */
24127 function checkOffset (offset, ext, length) {
24128 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
24129 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
24130 }
24131
24132 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
24133 offset = offset >>> 0
24134 byteLength = byteLength >>> 0
24135 if (!noAssert) checkOffset(offset, byteLength, this.length)
24136
24137 var val = this[offset]
24138 var mul = 1
24139 var i = 0
24140 while (++i < byteLength && (mul *= 0x100)) {
24141 val += this[offset + i] * mul
24142 }
24143
24144 return val
24145 }
24146
24147 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
24148 offset = offset >>> 0
24149 byteLength = byteLength >>> 0
24150 if (!noAssert) {
24151 checkOffset(offset, byteLength, this.length)
24152 }
24153
24154 var val = this[offset + --byteLength]
24155 var mul = 1
24156 while (byteLength > 0 && (mul *= 0x100)) {
24157 val += this[offset + --byteLength] * mul
24158 }
24159
24160 return val
24161 }
24162
24163 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
24164 offset = offset >>> 0
24165 if (!noAssert) checkOffset(offset, 1, this.length)
24166 return this[offset]
24167 }
24168
24169 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
24170 offset = offset >>> 0
24171 if (!noAssert) checkOffset(offset, 2, this.length)
24172 return this[offset] | (this[offset + 1] << 8)
24173 }
24174
24175 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
24176 offset = offset >>> 0
24177 if (!noAssert) checkOffset(offset, 2, this.length)
24178 return (this[offset] << 8) | this[offset + 1]
24179 }
24180
24181 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
24182 offset = offset >>> 0
24183 if (!noAssert) checkOffset(offset, 4, this.length)
24184
24185 return ((this[offset]) |
24186 (this[offset + 1] << 8) |
24187 (this[offset + 2] << 16)) +
24188 (this[offset + 3] * 0x1000000)
24189 }
24190
24191 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
24192 offset = offset >>> 0
24193 if (!noAssert) checkOffset(offset, 4, this.length)
24194
24195 return (this[offset] * 0x1000000) +
24196 ((this[offset + 1] << 16) |
24197 (this[offset + 2] << 8) |
24198 this[offset + 3])
24199 }
24200
24201 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
24202 offset = offset >>> 0
24203 byteLength = byteLength >>> 0
24204 if (!noAssert) checkOffset(offset, byteLength, this.length)
24205
24206 var val = this[offset]
24207 var mul = 1
24208 var i = 0
24209 while (++i < byteLength && (mul *= 0x100)) {
24210 val += this[offset + i] * mul
24211 }
24212 mul *= 0x80
24213
24214 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
24215
24216 return val
24217 }
24218
24219 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
24220 offset = offset >>> 0
24221 byteLength = byteLength >>> 0
24222 if (!noAssert) checkOffset(offset, byteLength, this.length)
24223
24224 var i = byteLength
24225 var mul = 1
24226 var val = this[offset + --i]
24227 while (i > 0 && (mul *= 0x100)) {
24228 val += this[offset + --i] * mul
24229 }
24230 mul *= 0x80
24231
24232 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
24233
24234 return val
24235 }
24236
24237 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
24238 offset = offset >>> 0
24239 if (!noAssert) checkOffset(offset, 1, this.length)
24240 if (!(this[offset] & 0x80)) return (this[offset])
24241 return ((0xff - this[offset] + 1) * -1)
24242 }
24243
24244 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
24245 offset = offset >>> 0
24246 if (!noAssert) checkOffset(offset, 2, this.length)
24247 var val = this[offset] | (this[offset + 1] << 8)
24248 return (val & 0x8000) ? val | 0xFFFF0000 : val
24249 }
24250
24251 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
24252 offset = offset >>> 0
24253 if (!noAssert) checkOffset(offset, 2, this.length)
24254 var val = this[offset + 1] | (this[offset] << 8)
24255 return (val & 0x8000) ? val | 0xFFFF0000 : val
24256 }
24257
24258 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
24259 offset = offset >>> 0
24260 if (!noAssert) checkOffset(offset, 4, this.length)
24261
24262 return (this[offset]) |
24263 (this[offset + 1] << 8) |
24264 (this[offset + 2] << 16) |
24265 (this[offset + 3] << 24)
24266 }
24267
24268 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
24269 offset = offset >>> 0
24270 if (!noAssert) checkOffset(offset, 4, this.length)
24271
24272 return (this[offset] << 24) |
24273 (this[offset + 1] << 16) |
24274 (this[offset + 2] << 8) |
24275 (this[offset + 3])
24276 }
24277
24278 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
24279 offset = offset >>> 0
24280 if (!noAssert) checkOffset(offset, 4, this.length)
24281 return ieee754.read(this, offset, true, 23, 4)
24282 }
24283
24284 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
24285 offset = offset >>> 0
24286 if (!noAssert) checkOffset(offset, 4, this.length)
24287 return ieee754.read(this, offset, false, 23, 4)
24288 }
24289
24290 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
24291 offset = offset >>> 0
24292 if (!noAssert) checkOffset(offset, 8, this.length)
24293 return ieee754.read(this, offset, true, 52, 8)
24294 }
24295
24296 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
24297 offset = offset >>> 0
24298 if (!noAssert) checkOffset(offset, 8, this.length)
24299 return ieee754.read(this, offset, false, 52, 8)
24300 }
24301
24302 function checkInt (buf, value, offset, ext, max, min) {
24303 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
24304 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
24305 if (offset + ext > buf.length) throw new RangeError('Index out of range')
24306 }
24307
24308 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
24309 value = +value
24310 offset = offset >>> 0
24311 byteLength = byteLength >>> 0
24312 if (!noAssert) {
24313 var maxBytes = Math.pow(2, 8 * byteLength) - 1
24314 checkInt(this, value, offset, byteLength, maxBytes, 0)
24315 }
24316
24317 var mul = 1
24318 var i = 0
24319 this[offset] = value & 0xFF
24320 while (++i < byteLength && (mul *= 0x100)) {
24321 this[offset + i] = (value / mul) & 0xFF
24322 }
24323
24324 return offset + byteLength
24325 }
24326
24327 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
24328 value = +value
24329 offset = offset >>> 0
24330 byteLength = byteLength >>> 0
24331 if (!noAssert) {
24332 var maxBytes = Math.pow(2, 8 * byteLength) - 1
24333 checkInt(this, value, offset, byteLength, maxBytes, 0)
24334 }
24335
24336 var i = byteLength - 1
24337 var mul = 1
24338 this[offset + i] = value & 0xFF
24339 while (--i >= 0 && (mul *= 0x100)) {
24340 this[offset + i] = (value / mul) & 0xFF
24341 }
24342
24343 return offset + byteLength
24344 }
24345
24346 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
24347 value = +value
24348 offset = offset >>> 0
24349 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
24350 this[offset] = (value & 0xff)
24351 return offset + 1
24352 }
24353
24354 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
24355 value = +value
24356 offset = offset >>> 0
24357 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
24358 this[offset] = (value & 0xff)
24359 this[offset + 1] = (value >>> 8)
24360 return offset + 2
24361 }
24362
24363 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
24364 value = +value
24365 offset = offset >>> 0
24366 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
24367 this[offset] = (value >>> 8)
24368 this[offset + 1] = (value & 0xff)
24369 return offset + 2
24370 }
24371
24372 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
24373 value = +value
24374 offset = offset >>> 0
24375 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
24376 this[offset + 3] = (value >>> 24)
24377 this[offset + 2] = (value >>> 16)
24378 this[offset + 1] = (value >>> 8)
24379 this[offset] = (value & 0xff)
24380 return offset + 4
24381 }
24382
24383 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
24384 value = +value
24385 offset = offset >>> 0
24386 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
24387 this[offset] = (value >>> 24)
24388 this[offset + 1] = (value >>> 16)
24389 this[offset + 2] = (value >>> 8)
24390 this[offset + 3] = (value & 0xff)
24391 return offset + 4
24392 }
24393
24394 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
24395 value = +value
24396 offset = offset >>> 0
24397 if (!noAssert) {
24398 var limit = Math.pow(2, (8 * byteLength) - 1)
24399
24400 checkInt(this, value, offset, byteLength, limit - 1, -limit)
24401 }
24402
24403 var i = 0
24404 var mul = 1
24405 var sub = 0
24406 this[offset] = value & 0xFF
24407 while (++i < byteLength && (mul *= 0x100)) {
24408 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
24409 sub = 1
24410 }
24411 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
24412 }
24413
24414 return offset + byteLength
24415 }
24416
24417 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
24418 value = +value
24419 offset = offset >>> 0
24420 if (!noAssert) {
24421 var limit = Math.pow(2, (8 * byteLength) - 1)
24422
24423 checkInt(this, value, offset, byteLength, limit - 1, -limit)
24424 }
24425
24426 var i = byteLength - 1
24427 var mul = 1
24428 var sub = 0
24429 this[offset + i] = value & 0xFF
24430 while (--i >= 0 && (mul *= 0x100)) {
24431 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
24432 sub = 1
24433 }
24434 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
24435 }
24436
24437 return offset + byteLength
24438 }
24439
24440 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
24441 value = +value
24442 offset = offset >>> 0
24443 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
24444 if (value < 0) value = 0xff + value + 1
24445 this[offset] = (value & 0xff)
24446 return offset + 1
24447 }
24448
24449 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
24450 value = +value
24451 offset = offset >>> 0
24452 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
24453 this[offset] = (value & 0xff)
24454 this[offset + 1] = (value >>> 8)
24455 return offset + 2
24456 }
24457
24458 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
24459 value = +value
24460 offset = offset >>> 0
24461 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
24462 this[offset] = (value >>> 8)
24463 this[offset + 1] = (value & 0xff)
24464 return offset + 2
24465 }
24466
24467 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
24468 value = +value
24469 offset = offset >>> 0
24470 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
24471 this[offset] = (value & 0xff)
24472 this[offset + 1] = (value >>> 8)
24473 this[offset + 2] = (value >>> 16)
24474 this[offset + 3] = (value >>> 24)
24475 return offset + 4
24476 }
24477
24478 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
24479 value = +value
24480 offset = offset >>> 0
24481 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
24482 if (value < 0) value = 0xffffffff + value + 1
24483 this[offset] = (value >>> 24)
24484 this[offset + 1] = (value >>> 16)
24485 this[offset + 2] = (value >>> 8)
24486 this[offset + 3] = (value & 0xff)
24487 return offset + 4
24488 }
24489
24490 function checkIEEE754 (buf, value, offset, ext, max, min) {
24491 if (offset + ext > buf.length) throw new RangeError('Index out of range')
24492 if (offset < 0) throw new RangeError('Index out of range')
24493 }
24494
24495 function writeFloat (buf, value, offset, littleEndian, noAssert) {
24496 value = +value
24497 offset = offset >>> 0
24498 if (!noAssert) {
24499 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
24500 }
24501 ieee754.write(buf, value, offset, littleEndian, 23, 4)
24502 return offset + 4
24503 }
24504
24505 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
24506 return writeFloat(this, value, offset, true, noAssert)
24507 }
24508
24509 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
24510 return writeFloat(this, value, offset, false, noAssert)
24511 }
24512
24513 function writeDouble (buf, value, offset, littleEndian, noAssert) {
24514 value = +value
24515 offset = offset >>> 0
24516 if (!noAssert) {
24517 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
24518 }
24519 ieee754.write(buf, value, offset, littleEndian, 52, 8)
24520 return offset + 8
24521 }
24522
24523 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
24524 return writeDouble(this, value, offset, true, noAssert)
24525 }
24526
24527 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
24528 return writeDouble(this, value, offset, false, noAssert)
24529 }
24530
24531 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
24532 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
24533 if (!start) start = 0
24534 if (!end && end !== 0) end = this.length
24535 if (targetStart >= target.length) targetStart = target.length
24536 if (!targetStart) targetStart = 0
24537 if (end > 0 && end < start) end = start
24538
24539 // Copy 0 bytes; we're done
24540 if (end === start) return 0
24541 if (target.length === 0 || this.length === 0) return 0
24542
24543 // Fatal error conditions
24544 if (targetStart < 0) {
24545 throw new RangeError('targetStart out of bounds')
24546 }
24547 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
24548 if (end < 0) throw new RangeError('sourceEnd out of bounds')
24549
24550 // Are we oob?
24551 if (end > this.length) end = this.length
24552 if (target.length - targetStart < end - start) {
24553 end = target.length - targetStart + start
24554 }
24555
24556 var len = end - start
24557 var i
24558
24559 if (this === target && start < targetStart && targetStart < end) {
24560 // descending copy from end
24561 for (i = len - 1; i >= 0; --i) {
24562 target[i + targetStart] = this[i + start]
24563 }
24564 } else if (len < 1000) {
24565 // ascending copy from start
24566 for (i = 0; i < len; ++i) {
24567 target[i + targetStart] = this[i + start]
24568 }
24569 } else {
24570 Uint8Array.prototype.set.call(
24571 target,
24572 this.subarray(start, start + len),
24573 targetStart
24574 )
24575 }
24576
24577 return len
24578 }
24579
24580 // Usage:
24581 // buffer.fill(number[, offset[, end]])
24582 // buffer.fill(buffer[, offset[, end]])
24583 // buffer.fill(string[, offset[, end]][, encoding])
24584 Buffer.prototype.fill = function fill (val, start, end, encoding) {
24585 // Handle string cases:
24586 if (typeof val === 'string') {
24587 if (typeof start === 'string') {
24588 encoding = start
24589 start = 0
24590 end = this.length
24591 } else if (typeof end === 'string') {
24592 encoding = end
24593 end = this.length
24594 }
24595 if (val.length === 1) {
24596 var code = val.charCodeAt(0)
24597 if (code < 256) {
24598 val = code
24599 }
24600 }
24601 if (encoding !== undefined && typeof encoding !== 'string') {
24602 throw new TypeError('encoding must be a string')
24603 }
24604 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
24605 throw new TypeError('Unknown encoding: ' + encoding)
24606 }
24607 } else if (typeof val === 'number') {
24608 val = val & 255
24609 }
24610
24611 // Invalid ranges are not set to a default, so can range check early.
24612 if (start < 0 || this.length < start || this.length < end) {
24613 throw new RangeError('Out of range index')
24614 }
24615
24616 if (end <= start) {
24617 return this
24618 }
24619
24620 start = start >>> 0
24621 end = end === undefined ? this.length : end >>> 0
24622
24623 if (!val) val = 0
24624
24625 var i
24626 if (typeof val === 'number') {
24627 for (i = start; i < end; ++i) {
24628 this[i] = val
24629 }
24630 } else {
24631 var bytes = Buffer.isBuffer(val)
24632 ? val
24633 : new Buffer(val, encoding)
24634 var len = bytes.length
24635 for (i = 0; i < end - start; ++i) {
24636 this[i + start] = bytes[i % len]
24637 }
24638 }
24639
24640 return this
24641 }
24642
24643 // HELPER FUNCTIONS
24644 // ================
24645
24646 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
24647
24648 function base64clean (str) {
24649 // Node strips out invalid characters like \n and \t from the string, base64-js does not
24650 str = stringtrim(str).replace(INVALID_BASE64_RE, '')
24651 // Node converts strings with length < 2 to ''
24652 if (str.length < 2) return ''
24653 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
24654 while (str.length % 4 !== 0) {
24655 str = str + '='
24656 }
24657 return str
24658 }
24659
24660 function stringtrim (str) {
24661 if (str.trim) return str.trim()
24662 return str.replace(/^\s+|\s+$/g, '')
24663 }
24664
24665 function toHex (n) {
24666 if (n < 16) return '0' + n.toString(16)
24667 return n.toString(16)
24668 }
24669
24670 function utf8ToBytes (string, units) {
24671 units = units || Infinity
24672 var codePoint
24673 var length = string.length
24674 var leadSurrogate = null
24675 var bytes = []
24676
24677 for (var i = 0; i < length; ++i) {
24678 codePoint = string.charCodeAt(i)
24679
24680 // is surrogate component
24681 if (codePoint > 0xD7FF && codePoint < 0xE000) {
24682 // last char was a lead
24683 if (!leadSurrogate) {
24684 // no lead yet
24685 if (codePoint > 0xDBFF) {
24686 // unexpected trail
24687 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
24688 continue
24689 } else if (i + 1 === length) {
24690 // unpaired lead
24691 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
24692 continue
24693 }
24694
24695 // valid lead
24696 leadSurrogate = codePoint
24697
24698 continue
24699 }
24700
24701 // 2 leads in a row
24702 if (codePoint < 0xDC00) {
24703 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
24704 leadSurrogate = codePoint
24705 continue
24706 }
24707
24708 // valid surrogate pair
24709 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
24710 } else if (leadSurrogate) {
24711 // valid bmp char, but last char was a lead
24712 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
24713 }
24714
24715 leadSurrogate = null
24716
24717 // encode utf8
24718 if (codePoint < 0x80) {
24719 if ((units -= 1) < 0) break
24720 bytes.push(codePoint)
24721 } else if (codePoint < 0x800) {
24722 if ((units -= 2) < 0) break
24723 bytes.push(
24724 codePoint >> 0x6 | 0xC0,
24725 codePoint & 0x3F | 0x80
24726 )
24727 } else if (codePoint < 0x10000) {
24728 if ((units -= 3) < 0) break
24729 bytes.push(
24730 codePoint >> 0xC | 0xE0,
24731 codePoint >> 0x6 & 0x3F | 0x80,
24732 codePoint & 0x3F | 0x80
24733 )
24734 } else if (codePoint < 0x110000) {
24735 if ((units -= 4) < 0) break
24736 bytes.push(
24737 codePoint >> 0x12 | 0xF0,
24738 codePoint >> 0xC & 0x3F | 0x80,
24739 codePoint >> 0x6 & 0x3F | 0x80,
24740 codePoint & 0x3F | 0x80
24741 )
24742 } else {
24743 throw new Error('Invalid code point')
24744 }
24745 }
24746
24747 return bytes
24748 }
24749
24750 function asciiToBytes (str) {
24751 var byteArray = []
24752 for (var i = 0; i < str.length; ++i) {
24753 // Node's code seems to be doing this and not & 0x7F..
24754 byteArray.push(str.charCodeAt(i) & 0xFF)
24755 }
24756 return byteArray
24757 }
24758
24759 function utf16leToBytes (str, units) {
24760 var c, hi, lo
24761 var byteArray = []
24762 for (var i = 0; i < str.length; ++i) {
24763 if ((units -= 2) < 0) break
24764
24765 c = str.charCodeAt(i)
24766 hi = c >> 8
24767 lo = c % 256
24768 byteArray.push(lo)
24769 byteArray.push(hi)
24770 }
24771
24772 return byteArray
24773 }
24774
24775 function base64ToBytes (str) {
24776 return base64.toByteArray(base64clean(str))
24777 }
24778
24779 function blitBuffer (src, dst, offset, length) {
24780 for (var i = 0; i < length; ++i) {
24781 if ((i + offset >= dst.length) || (i >= src.length)) break
24782 dst[i + offset] = src[i]
24783 }
24784 return i
24785 }
24786
24787 function isnan (val) {
24788 return val !== val // eslint-disable-line no-self-compare
24789 }
24790
24791 },{"base64-js":2,"ieee754":8}],6:[function(require,module,exports){
24792 (function (Buffer){
24793 // Copyright Joyent, Inc. and other Node contributors.
24794 //
24795 // Permission is hereby granted, free of charge, to any person obtaining a
24796 // copy of this software and associated documentation files (the
24797 // "Software"), to deal in the Software without restriction, including
24798 // without limitation the rights to use, copy, modify, merge, publish,
24799 // distribute, sublicense, and/or sell copies of the Software, and to permit
24800 // persons to whom the Software is furnished to do so, subject to the
24801 // following conditions:
24802 //
24803 // The above copyright notice and this permission notice shall be included
24804 // in all copies or substantial portions of the Software.
24805 //
24806 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24807 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24808 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
24809 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
24810 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
24811 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
24812 // USE OR OTHER DEALINGS IN THE SOFTWARE.
24813
24814 // NOTE: These type checking functions intentionally don't use `instanceof`
24815 // because it is fragile and can be easily faked with `Object.create()`.
24816
24817 function isArray(arg) {
24818 if (Array.isArray) {
24819 return Array.isArray(arg);
24820 }
24821 return objectToString(arg) === '[object Array]';
24822 }
24823 exports.isArray = isArray;
24824
24825 function isBoolean(arg) {
24826 return typeof arg === 'boolean';
24827 }
24828 exports.isBoolean = isBoolean;
24829
24830 function isNull(arg) {
24831 return arg === null;
24832 }
24833 exports.isNull = isNull;
24834
24835 function isNullOrUndefined(arg) {
24836 return arg == null;
24837 }
24838 exports.isNullOrUndefined = isNullOrUndefined;
24839
24840 function isNumber(arg) {
24841 return typeof arg === 'number';
24842 }
24843 exports.isNumber = isNumber;
24844
24845 function isString(arg) {
24846 return typeof arg === 'string';
24847 }
24848 exports.isString = isString;
24849
24850 function isSymbol(arg) {
24851 return typeof arg === 'symbol';
24852 }
24853 exports.isSymbol = isSymbol;
24854
24855 function isUndefined(arg) {
24856 return arg === void 0;
24857 }
24858 exports.isUndefined = isUndefined;
24859
24860 function isRegExp(re) {
24861 return objectToString(re) === '[object RegExp]';
24862 }
24863 exports.isRegExp = isRegExp;
24864
24865 function isObject(arg) {
24866 return typeof arg === 'object' && arg !== null;
24867 }
24868 exports.isObject = isObject;
24869
24870 function isDate(d) {
24871 return objectToString(d) === '[object Date]';
24872 }
24873 exports.isDate = isDate;
24874
24875 function isError(e) {
24876 return (objectToString(e) === '[object Error]' || e instanceof Error);
24877 }
24878 exports.isError = isError;
24879
24880 function isFunction(arg) {
24881 return typeof arg === 'function';
24882 }
24883 exports.isFunction = isFunction;
24884
24885 function isPrimitive(arg) {
24886 return arg === null ||
24887 typeof arg === 'boolean' ||
24888 typeof arg === 'number' ||
24889 typeof arg === 'string' ||
24890 typeof arg === 'symbol' || // ES6 symbol
24891 typeof arg === 'undefined';
24892 }
24893 exports.isPrimitive = isPrimitive;
24894
24895 exports.isBuffer = Buffer.isBuffer;
24896
24897 function objectToString(o) {
24898 return Object.prototype.toString.call(o);
24899 }
24900
24901 }).call(this,{"isBuffer":require("../../is-buffer/index.js")})
24902 },{"../../is-buffer/index.js":10}],7:[function(require,module,exports){
24903 // Copyright Joyent, Inc. and other Node contributors.
24904 //
24905 // Permission is hereby granted, free of charge, to any person obtaining a
24906 // copy of this software and associated documentation files (the
24907 // "Software"), to deal in the Software without restriction, including
24908 // without limitation the rights to use, copy, modify, merge, publish,
24909 // distribute, sublicense, and/or sell copies of the Software, and to permit
24910 // persons to whom the Software is furnished to do so, subject to the
24911 // following conditions:
24912 //
24913 // The above copyright notice and this permission notice shall be included
24914 // in all copies or substantial portions of the Software.
24915 //
24916 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24917 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24918 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
24919 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
24920 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
24921 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
24922 // USE OR OTHER DEALINGS IN THE SOFTWARE.
24923
24924 function EventEmitter() {
24925 this._events = this._events || {};
24926 this._maxListeners = this._maxListeners || undefined;
24927 }
24928 module.exports = EventEmitter;
24929
24930 // Backwards-compat with node 0.10.x
24931 EventEmitter.EventEmitter = EventEmitter;
24932
24933 EventEmitter.prototype._events = undefined;
24934 EventEmitter.prototype._maxListeners = undefined;
24935
24936 // By default EventEmitters will print a warning if more than 10 listeners are
24937 // added to it. This is a useful default which helps finding memory leaks.
24938 EventEmitter.defaultMaxListeners = 10;
24939
24940 // Obviously not all Emitters should be limited to 10. This function allows
24941 // that to be increased. Set to zero for unlimited.
24942 EventEmitter.prototype.setMaxListeners = function(n) {
24943 if (!isNumber(n) || n < 0 || isNaN(n))
24944 throw TypeError('n must be a positive number');
24945 this._maxListeners = n;
24946 return this;
24947 };
24948
24949 EventEmitter.prototype.emit = function(type) {
24950 var er, handler, len, args, i, listeners;
24951
24952 if (!this._events)
24953 this._events = {};
24954
24955 // If there is no 'error' event listener then throw.
24956 if (type === 'error') {
24957 if (!this._events.error ||
24958 (isObject(this._events.error) && !this._events.error.length)) {
24959 er = arguments[1];
24960 if (er instanceof Error) {
24961 throw er; // Unhandled 'error' event
24962 } else {
24963 // At least give some kind of context to the user
24964 var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
24965 err.context = er;
24966 throw err;
24967 }
24968 }
24969 }
24970
24971 handler = this._events[type];
24972
24973 if (isUndefined(handler))
24974 return false;
24975
24976 if (isFunction(handler)) {
24977 switch (arguments.length) {
24978 // fast cases
24979 case 1:
24980 handler.call(this);
24981 break;
24982 case 2:
24983 handler.call(this, arguments[1]);
24984 break;
24985 case 3:
24986 handler.call(this, arguments[1], arguments[2]);
24987 break;
24988 // slower
24989 default:
24990 args = Array.prototype.slice.call(arguments, 1);
24991 handler.apply(this, args);
24992 }
24993 } else if (isObject(handler)) {
24994 args = Array.prototype.slice.call(arguments, 1);
24995 listeners = handler.slice();
24996 len = listeners.length;
24997 for (i = 0; i < len; i++)
24998 listeners[i].apply(this, args);
24999 }
25000
25001 return true;
25002 };
25003
25004 EventEmitter.prototype.addListener = function(type, listener) {
25005 var m;
25006
25007 if (!isFunction(listener))
25008 throw TypeError('listener must be a function');
25009
25010 if (!this._events)
25011 this._events = {};
25012
25013 // To avoid recursion in the case that type === "newListener"! Before
25014 // adding it to the listeners, first emit "newListener".
25015 if (this._events.newListener)
25016 this.emit('newListener', type,
25017 isFunction(listener.listener) ?
25018 listener.listener : listener);
25019
25020 if (!this._events[type])
25021 // Optimize the case of one listener. Don't need the extra array object.
25022 this._events[type] = listener;
25023 else if (isObject(this._events[type]))
25024 // If we've already got an array, just append.
25025 this._events[type].push(listener);
25026 else
25027 // Adding the second element, need to change to array.
25028 this._events[type] = [this._events[type], listener];
25029
25030 // Check for listener leak
25031 if (isObject(this._events[type]) && !this._events[type].warned) {
25032 if (!isUndefined(this._maxListeners)) {
25033 m = this._maxListeners;
25034 } else {
25035 m = EventEmitter.defaultMaxListeners;
25036 }
25037
25038 if (m && m > 0 && this._events[type].length > m) {
25039 this._events[type].warned = true;
25040 console.error('(node) warning: possible EventEmitter memory ' +
25041 'leak detected. %d listeners added. ' +
25042 'Use emitter.setMaxListeners() to increase limit.',
25043 this._events[type].length);
25044 if (typeof console.trace === 'function') {
25045 // not supported in IE 10
25046 console.trace();
25047 }
25048 }
25049 }
25050
25051 return this;
25052 };
25053
25054 EventEmitter.prototype.on = EventEmitter.prototype.addListener;
25055
25056 EventEmitter.prototype.once = function(type, listener) {
25057 if (!isFunction(listener))
25058 throw TypeError('listener must be a function');
25059
25060 var fired = false;
25061
25062 function g() {
25063 this.removeListener(type, g);
25064
25065 if (!fired) {
25066 fired = true;
25067 listener.apply(this, arguments);
25068 }
25069 }
25070
25071 g.listener = listener;
25072 this.on(type, g);
25073
25074 return this;
25075 };
25076
25077 // emits a 'removeListener' event iff the listener was removed
25078 EventEmitter.prototype.removeListener = function(type, listener) {
25079 var list, position, length, i;
25080
25081 if (!isFunction(listener))
25082 throw TypeError('listener must be a function');
25083
25084 if (!this._events || !this._events[type])
25085 return this;
25086
25087 list = this._events[type];
25088 length = list.length;
25089 position = -1;
25090
25091 if (list === listener ||
25092 (isFunction(list.listener) && list.listener === listener)) {
25093 delete this._events[type];
25094 if (this._events.removeListener)
25095 this.emit('removeListener', type, listener);
25096
25097 } else if (isObject(list)) {
25098 for (i = length; i-- > 0;) {
25099 if (list[i] === listener ||
25100 (list[i].listener && list[i].listener === listener)) {
25101 position = i;
25102 break;
25103 }
25104 }
25105
25106 if (position < 0)
25107 return this;
25108
25109 if (list.length === 1) {
25110 list.length = 0;
25111 delete this._events[type];
25112 } else {
25113 list.splice(position, 1);
25114 }
25115
25116 if (this._events.removeListener)
25117 this.emit('removeListener', type, listener);
25118 }
25119
25120 return this;
25121 };
25122
25123 EventEmitter.prototype.removeAllListeners = function(type) {
25124 var key, listeners;
25125
25126 if (!this._events)
25127 return this;
25128
25129 // not listening for removeListener, no need to emit
25130 if (!this._events.removeListener) {
25131 if (arguments.length === 0)
25132 this._events = {};
25133 else if (this._events[type])
25134 delete this._events[type];
25135 return this;
25136 }
25137
25138 // emit removeListener for all listeners on all events
25139 if (arguments.length === 0) {
25140 for (key in this._events) {
25141 if (key === 'removeListener') continue;
25142 this.removeAllListeners(key);
25143 }
25144 this.removeAllListeners('removeListener');
25145 this._events = {};
25146 return this;
25147 }
25148
25149 listeners = this._events[type];
25150
25151 if (isFunction(listeners)) {
25152 this.removeListener(type, listeners);
25153 } else if (listeners) {
25154 // LIFO order
25155 while (listeners.length)
25156 this.removeListener(type, listeners[listeners.length - 1]);
25157 }
25158 delete this._events[type];
25159
25160 return this;
25161 };
25162
25163 EventEmitter.prototype.listeners = function(type) {
25164 var ret;
25165 if (!this._events || !this._events[type])
25166 ret = [];
25167 else if (isFunction(this._events[type]))
25168 ret = [this._events[type]];
25169 else
25170 ret = this._events[type].slice();
25171 return ret;
25172 };
25173
25174 EventEmitter.prototype.listenerCount = function(type) {
25175 if (this._events) {
25176 var evlistener = this._events[type];
25177
25178 if (isFunction(evlistener))
25179 return 1;
25180 else if (evlistener)
25181 return evlistener.length;
25182 }
25183 return 0;
25184 };
25185
25186 EventEmitter.listenerCount = function(emitter, type) {
25187 return emitter.listenerCount(type);
25188 };
25189
25190 function isFunction(arg) {
25191 return typeof arg === 'function';
25192 }
25193
25194 function isNumber(arg) {
25195 return typeof arg === 'number';
25196 }
25197
25198 function isObject(arg) {
25199 return typeof arg === 'object' && arg !== null;
25200 }
25201
25202 function isUndefined(arg) {
25203 return arg === void 0;
25204 }
25205
25206 },{}],8:[function(require,module,exports){
25207 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
25208 var e, m
25209 var eLen = nBytes * 8 - mLen - 1
25210 var eMax = (1 << eLen) - 1
25211 var eBias = eMax >> 1
25212 var nBits = -7
25213 var i = isLE ? (nBytes - 1) : 0
25214 var d = isLE ? -1 : 1
25215 var s = buffer[offset + i]
25216
25217 i += d
25218
25219 e = s & ((1 << (-nBits)) - 1)
25220 s >>= (-nBits)
25221 nBits += eLen
25222 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
25223
25224 m = e & ((1 << (-nBits)) - 1)
25225 e >>= (-nBits)
25226 nBits += mLen
25227 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
25228
25229 if (e === 0) {
25230 e = 1 - eBias
25231 } else if (e === eMax) {
25232 return m ? NaN : ((s ? -1 : 1) * Infinity)
25233 } else {
25234 m = m + Math.pow(2, mLen)
25235 e = e - eBias
25236 }
25237 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
25238 }
25239
25240 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
25241 var e, m, c
25242 var eLen = nBytes * 8 - mLen - 1
25243 var eMax = (1 << eLen) - 1
25244 var eBias = eMax >> 1
25245 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
25246 var i = isLE ? 0 : (nBytes - 1)
25247 var d = isLE ? 1 : -1
25248 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
25249
25250 value = Math.abs(value)
25251
25252 if (isNaN(value) || value === Infinity) {
25253 m = isNaN(value) ? 1 : 0
25254 e = eMax
25255 } else {
25256 e = Math.floor(Math.log(value) / Math.LN2)
25257 if (value * (c = Math.pow(2, -e)) < 1) {
25258 e--
25259 c *= 2
25260 }
25261 if (e + eBias >= 1) {
25262 value += rt / c
25263 } else {
25264 value += rt * Math.pow(2, 1 - eBias)
25265 }
25266 if (value * c >= 2) {
25267 e++
25268 c /= 2
25269 }
25270
25271 if (e + eBias >= eMax) {
25272 m = 0
25273 e = eMax
25274 } else if (e + eBias >= 1) {
25275 m = (value * c - 1) * Math.pow(2, mLen)
25276 e = e + eBias
25277 } else {
25278 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
25279 e = 0
25280 }
25281 }
25282
25283 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
25284
25285 e = (e << mLen) | m
25286 eLen += mLen
25287 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
25288
25289 buffer[offset + i - d] |= s * 128
25290 }
25291
25292 },{}],9:[function(require,module,exports){
25293 if (typeof Object.create === 'function') {
25294 // implementation from standard node.js 'util' module
25295 module.exports = function inherits(ctor, superCtor) {
25296 ctor.super_ = superCtor
25297 ctor.prototype = Object.create(superCtor.prototype, {
25298 constructor: {
25299 value: ctor,
25300 enumerable: false,
25301 writable: true,
25302 configurable: true
25303 }
25304 });
25305 };
25306 } else {
25307 // old school shim for old browsers
25308 module.exports = function inherits(ctor, superCtor) {
25309 ctor.super_ = superCtor
25310 var TempCtor = function () {}
25311 TempCtor.prototype = superCtor.prototype
25312 ctor.prototype = new TempCtor()
25313 ctor.prototype.constructor = ctor
25314 }
25315 }
25316
25317 },{}],10:[function(require,module,exports){
25318 /*!
25319 * Determine if an object is a Buffer
25320 *
25321 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
25322 * @license MIT
25323 */
25324
25325 // The _isBuffer check is for Safari 5-7 support, because it's missing
25326 // Object.prototype.constructor. Remove this eventually
25327 module.exports = function (obj) {
25328 return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
25329 }
25330
25331 function isBuffer (obj) {
25332 return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
25333 }
25334
25335 // For Node v0.10 support. Remove this eventually.
25336 function isSlowBuffer (obj) {
25337 return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
25338 }
25339
25340 },{}],11:[function(require,module,exports){
25341 var toString = {}.toString;
25342
25343 module.exports = Array.isArray || function (arr) {
25344 return toString.call(arr) == '[object Array]';
25345 };
25346
25347 },{}],12:[function(require,module,exports){
25348 (function (process){
25349 'use strict';
25350
25351 if (!process.version ||
25352 process.version.indexOf('v0.') === 0 ||
25353 process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
25354 module.exports = nextTick;
25355 } else {
25356 module.exports = process.nextTick;
25357 }
25358
25359 function nextTick(fn, arg1, arg2, arg3) {
25360 if (typeof fn !== 'function') {
25361 throw new TypeError('"callback" argument must be a function');
25362 }
25363 var len = arguments.length;
25364 var args, i;
25365 switch (len) {
25366 case 0:
25367 case 1:
25368 return process.nextTick(fn);
25369 case 2:
25370 return process.nextTick(function afterTickOne() {
25371 fn.call(null, arg1);
25372 });
25373 case 3:
25374 return process.nextTick(function afterTickTwo() {
25375 fn.call(null, arg1, arg2);
25376 });
25377 case 4:
25378 return process.nextTick(function afterTickThree() {
25379 fn.call(null, arg1, arg2, arg3);
25380 });
25381 default:
25382 args = new Array(len - 1);
25383 i = 0;
25384 while (i < args.length) {
25385 args[i++] = arguments[i];
25386 }
25387 return process.nextTick(function afterTick() {
25388 fn.apply(null, args);
25389 });
25390 }
25391 }
25392
25393 }).call(this,require('_process'))
25394 },{"_process":13}],13:[function(require,module,exports){
25395 // shim for using process in browser
25396 var process = module.exports = {};
25397
25398 // cached from whatever global is present so that test runners that stub it
25399 // don't break things. But we need to wrap it in a try catch in case it is
25400 // wrapped in strict mode code which doesn't define any globals. It's inside a
25401 // function because try/catches deoptimize in certain engines.
25402
25403 var cachedSetTimeout;
25404 var cachedClearTimeout;
25405
25406 function defaultSetTimout() {
25407 throw new Error('setTimeout has not been defined');
25408 }
25409 function defaultClearTimeout () {
25410 throw new Error('clearTimeout has not been defined');
25411 }
25412 (function () {
25413 try {
25414 if (typeof setTimeout === 'function') {
25415 cachedSetTimeout = setTimeout;
25416 } else {
25417 cachedSetTimeout = defaultSetTimout;
25418 }
25419 } catch (e) {
25420 cachedSetTimeout = defaultSetTimout;
25421 }
25422 try {
25423 if (typeof clearTimeout === 'function') {
25424 cachedClearTimeout = clearTimeout;
25425 } else {
25426 cachedClearTimeout = defaultClearTimeout;
25427 }
25428 } catch (e) {
25429 cachedClearTimeout = defaultClearTimeout;
25430 }
25431 } ())
25432 function runTimeout(fun) {
25433 if (cachedSetTimeout === setTimeout) {
25434 //normal enviroments in sane situations
25435 return setTimeout(fun, 0);
25436 }
25437 // if setTimeout wasn't available but was latter defined
25438 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
25439 cachedSetTimeout = setTimeout;
25440 return setTimeout(fun, 0);
25441 }
25442 try {
25443 // when when somebody has screwed with setTimeout but no I.E. maddness
25444 return cachedSetTimeout(fun, 0);
25445 } catch(e){
25446 try {
25447 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
25448 return cachedSetTimeout.call(null, fun, 0);
25449 } catch(e){
25450 // 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
25451 return cachedSetTimeout.call(this, fun, 0);
25452 }
25453 }
25454
25455
25456 }
25457 function runClearTimeout(marker) {
25458 if (cachedClearTimeout === clearTimeout) {
25459 //normal enviroments in sane situations
25460 return clearTimeout(marker);
25461 }
25462 // if clearTimeout wasn't available but was latter defined
25463 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
25464 cachedClearTimeout = clearTimeout;
25465 return clearTimeout(marker);
25466 }
25467 try {
25468 // when when somebody has screwed with setTimeout but no I.E. maddness
25469 return cachedClearTimeout(marker);
25470 } catch (e){
25471 try {
25472 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
25473 return cachedClearTimeout.call(null, marker);
25474 } catch (e){
25475 // 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.
25476 // Some versions of I.E. have different rules for clearTimeout vs setTimeout
25477 return cachedClearTimeout.call(this, marker);
25478 }
25479 }
25480
25481
25482
25483 }
25484 var queue = [];
25485 var draining = false;
25486 var currentQueue;
25487 var queueIndex = -1;
25488
25489 function cleanUpNextTick() {
25490 if (!draining || !currentQueue) {
25491 return;
25492 }
25493 draining = false;
25494 if (currentQueue.length) {
25495 queue = currentQueue.concat(queue);
25496 } else {
25497 queueIndex = -1;
25498 }
25499 if (queue.length) {
25500 drainQueue();
25501 }
25502 }
25503
25504 function drainQueue() {
25505 if (draining) {
25506 return;
25507 }
25508 var timeout = runTimeout(cleanUpNextTick);
25509 draining = true;
25510
25511 var len = queue.length;
25512 while(len) {
25513 currentQueue = queue;
25514 queue = [];
25515 while (++queueIndex < len) {
25516 if (currentQueue) {
25517 currentQueue[queueIndex].run();
25518 }
25519 }
25520 queueIndex = -1;
25521 len = queue.length;
25522 }
25523 currentQueue = null;
25524 draining = false;
25525 runClearTimeout(timeout);
25526 }
25527
25528 process.nextTick = function (fun) {
25529 var args = new Array(arguments.length - 1);
25530 if (arguments.length > 1) {
25531 for (var i = 1; i < arguments.length; i++) {
25532 args[i - 1] = arguments[i];
25533 }
25534 }
25535 queue.push(new Item(fun, args));
25536 if (queue.length === 1 && !draining) {
25537 runTimeout(drainQueue);
25538 }
25539 };
25540
25541 // v8 likes predictible objects
25542 function Item(fun, array) {
25543 this.fun = fun;
25544 this.array = array;
25545 }
25546 Item.prototype.run = function () {
25547 this.fun.apply(null, this.array);
25548 };
25549 process.title = 'browser';
25550 process.browser = true;
25551 process.env = {};
25552 process.argv = [];
25553 process.version = ''; // empty string to avoid regexp issues
25554 process.versions = {};
25555
25556 function noop() {}
25557
25558 process.on = noop;
25559 process.addListener = noop;
25560 process.once = noop;
25561 process.off = noop;
25562 process.removeListener = noop;
25563 process.removeAllListeners = noop;
25564 process.emit = noop;
25565
25566 process.binding = function (name) {
25567 throw new Error('process.binding is not supported');
25568 };
25569
25570 process.cwd = function () { return '/' };
25571 process.chdir = function (dir) {
25572 throw new Error('process.chdir is not supported');
25573 };
25574 process.umask = function() { return 0; };
25575
25576 },{}],14:[function(require,module,exports){
25577 module.exports = require("./lib/_stream_duplex.js")
25578
25579 },{"./lib/_stream_duplex.js":15}],15:[function(require,module,exports){
25580 // a duplex stream is just a stream that is both readable and writable.
25581 // Since JS doesn't have multiple prototypal inheritance, this class
25582 // prototypally inherits from Readable, and then parasitically from
25583 // Writable.
25584
25585 'use strict';
25586
25587 /*<replacement>*/
25588
25589 var objectKeys = Object.keys || function (obj) {
25590 var keys = [];
25591 for (var key in obj) {
25592 keys.push(key);
25593 }return keys;
25594 };
25595 /*</replacement>*/
25596
25597 module.exports = Duplex;
25598
25599 /*<replacement>*/
25600 var processNextTick = require('process-nextick-args');
25601 /*</replacement>*/
25602
25603 /*<replacement>*/
25604 var util = require('core-util-is');
25605 util.inherits = require('inherits');
25606 /*</replacement>*/
25607
25608 var Readable = require('./_stream_readable');
25609 var Writable = require('./_stream_writable');
25610
25611 util.inherits(Duplex, Readable);
25612
25613 var keys = objectKeys(Writable.prototype);
25614 for (var v = 0; v < keys.length; v++) {
25615 var method = keys[v];
25616 if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
25617 }
25618
25619 function Duplex(options) {
25620 if (!(this instanceof Duplex)) return new Duplex(options);
25621
25622 Readable.call(this, options);
25623 Writable.call(this, options);
25624
25625 if (options && options.readable === false) this.readable = false;
25626
25627 if (options && options.writable === false) this.writable = false;
25628
25629 this.allowHalfOpen = true;
25630 if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
25631
25632 this.once('end', onend);
25633 }
25634
25635 // the no-half-open enforcer
25636 function onend() {
25637 // if we allow half-open state, or if the writable side ended,
25638 // then we're ok.
25639 if (this.allowHalfOpen || this._writableState.ended) return;
25640
25641 // no more data can be written.
25642 // But allow more writes to happen in this tick.
25643 processNextTick(onEndNT, this);
25644 }
25645
25646 function onEndNT(self) {
25647 self.end();
25648 }
25649
25650 function forEach(xs, f) {
25651 for (var i = 0, l = xs.length; i < l; i++) {
25652 f(xs[i], i);
25653 }
25654 }
25655 },{"./_stream_readable":17,"./_stream_writable":19,"core-util-is":6,"inherits":9,"process-nextick-args":12}],16:[function(require,module,exports){
25656 // a passthrough stream.
25657 // basically just the most minimal sort of Transform stream.
25658 // Every written chunk gets output as-is.
25659
25660 'use strict';
25661
25662 module.exports = PassThrough;
25663
25664 var Transform = require('./_stream_transform');
25665
25666 /*<replacement>*/
25667 var util = require('core-util-is');
25668 util.inherits = require('inherits');
25669 /*</replacement>*/
25670
25671 util.inherits(PassThrough, Transform);
25672
25673 function PassThrough(options) {
25674 if (!(this instanceof PassThrough)) return new PassThrough(options);
25675
25676 Transform.call(this, options);
25677 }
25678
25679 PassThrough.prototype._transform = function (chunk, encoding, cb) {
25680 cb(null, chunk);
25681 };
25682 },{"./_stream_transform":18,"core-util-is":6,"inherits":9}],17:[function(require,module,exports){
25683 (function (process){
25684 'use strict';
25685
25686 module.exports = Readable;
25687
25688 /*<replacement>*/
25689 var processNextTick = require('process-nextick-args');
25690 /*</replacement>*/
25691
25692 /*<replacement>*/
25693 var isArray = require('isarray');
25694 /*</replacement>*/
25695
25696 /*<replacement>*/
25697 var Duplex;
25698 /*</replacement>*/
25699
25700 Readable.ReadableState = ReadableState;
25701
25702 /*<replacement>*/
25703 var EE = require('events').EventEmitter;
25704
25705 var EElistenerCount = function (emitter, type) {
25706 return emitter.listeners(type).length;
25707 };
25708 /*</replacement>*/
25709
25710 /*<replacement>*/
25711 var Stream;
25712 (function () {
25713 try {
25714 Stream = require('st' + 'ream');
25715 } catch (_) {} finally {
25716 if (!Stream) Stream = require('events').EventEmitter;
25717 }
25718 })();
25719 /*</replacement>*/
25720
25721 var Buffer = require('buffer').Buffer;
25722 /*<replacement>*/
25723 var bufferShim = require('buffer-shims');
25724 /*</replacement>*/
25725
25726 /*<replacement>*/
25727 var util = require('core-util-is');
25728 util.inherits = require('inherits');
25729 /*</replacement>*/
25730
25731 /*<replacement>*/
25732 var debugUtil = require('util');
25733 var debug = void 0;
25734 if (debugUtil && debugUtil.debuglog) {
25735 debug = debugUtil.debuglog('stream');
25736 } else {
25737 debug = function () {};
25738 }
25739 /*</replacement>*/
25740
25741 var BufferList = require('./internal/streams/BufferList');
25742 var StringDecoder;
25743
25744 util.inherits(Readable, Stream);
25745
25746 function prependListener(emitter, event, fn) {
25747 // Sadly this is not cacheable as some libraries bundle their own
25748 // event emitter implementation with them.
25749 if (typeof emitter.prependListener === 'function') {
25750 return emitter.prependListener(event, fn);
25751 } else {
25752 // This is a hack to make sure that our error handler is attached before any
25753 // userland ones. NEVER DO THIS. This is here only because this code needs
25754 // to continue to work with older versions of Node.js that do not include
25755 // the prependListener() method. The goal is to eventually remove this hack.
25756 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]];
25757 }
25758 }
25759
25760 function ReadableState(options, stream) {
25761 Duplex = Duplex || require('./_stream_duplex');
25762
25763 options = options || {};
25764
25765 // object stream flag. Used to make read(n) ignore n and to
25766 // make all the buffer merging and length checks go away
25767 this.objectMode = !!options.objectMode;
25768
25769 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
25770
25771 // the point at which it stops calling _read() to fill the buffer
25772 // Note: 0 is a valid value, means "don't call _read preemptively ever"
25773 var hwm = options.highWaterMark;
25774 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
25775 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
25776
25777 // cast to ints.
25778 this.highWaterMark = ~ ~this.highWaterMark;
25779
25780 // A linked list is used to store data chunks instead of an array because the
25781 // linked list can remove elements from the beginning faster than
25782 // array.shift()
25783 this.buffer = new BufferList();
25784 this.length = 0;
25785 this.pipes = null;
25786 this.pipesCount = 0;
25787 this.flowing = null;
25788 this.ended = false;
25789 this.endEmitted = false;
25790 this.reading = false;
25791
25792 // a flag to be able to tell if the onwrite cb is called immediately,
25793 // or on a later tick. We set this to true at first, because any
25794 // actions that shouldn't happen until "later" should generally also
25795 // not happen before the first write call.
25796 this.sync = true;
25797
25798 // whenever we return null, then we set a flag to say
25799 // that we're awaiting a 'readable' event emission.
25800 this.needReadable = false;
25801 this.emittedReadable = false;
25802 this.readableListening = false;
25803 this.resumeScheduled = false;
25804
25805 // Crypto is kind of old and crusty. Historically, its default string
25806 // encoding is 'binary' so we have to make this configurable.
25807 // Everything else in the universe uses 'utf8', though.
25808 this.defaultEncoding = options.defaultEncoding || 'utf8';
25809
25810 // when piping, we only care about 'readable' events that happen
25811 // after read()ing all the bytes and not getting any pushback.
25812 this.ranOut = false;
25813
25814 // the number of writers that are awaiting a drain event in .pipe()s
25815 this.awaitDrain = 0;
25816
25817 // if true, a maybeReadMore has been scheduled
25818 this.readingMore = false;
25819
25820 this.decoder = null;
25821 this.encoding = null;
25822 if (options.encoding) {
25823 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
25824 this.decoder = new StringDecoder(options.encoding);
25825 this.encoding = options.encoding;
25826 }
25827 }
25828
25829 function Readable(options) {
25830 Duplex = Duplex || require('./_stream_duplex');
25831
25832 if (!(this instanceof Readable)) return new Readable(options);
25833
25834 this._readableState = new ReadableState(options, this);
25835
25836 // legacy
25837 this.readable = true;
25838
25839 if (options && typeof options.read === 'function') this._read = options.read;
25840
25841 Stream.call(this);
25842 }
25843
25844 // Manually shove something into the read() buffer.
25845 // This returns true if the highWaterMark has not been hit yet,
25846 // similar to how Writable.write() returns true if you should
25847 // write() some more.
25848 Readable.prototype.push = function (chunk, encoding) {
25849 var state = this._readableState;
25850
25851 if (!state.objectMode && typeof chunk === 'string') {
25852 encoding = encoding || state.defaultEncoding;
25853 if (encoding !== state.encoding) {
25854 chunk = bufferShim.from(chunk, encoding);
25855 encoding = '';
25856 }
25857 }
25858
25859 return readableAddChunk(this, state, chunk, encoding, false);
25860 };
25861
25862 // Unshift should *always* be something directly out of read()
25863 Readable.prototype.unshift = function (chunk) {
25864 var state = this._readableState;
25865 return readableAddChunk(this, state, chunk, '', true);
25866 };
25867
25868 Readable.prototype.isPaused = function () {
25869 return this._readableState.flowing === false;
25870 };
25871
25872 function readableAddChunk(stream, state, chunk, encoding, addToFront) {
25873 var er = chunkInvalid(state, chunk);
25874 if (er) {
25875 stream.emit('error', er);
25876 } else if (chunk === null) {
25877 state.reading = false;
25878 onEofChunk(stream, state);
25879 } else if (state.objectMode || chunk && chunk.length > 0) {
25880 if (state.ended && !addToFront) {
25881 var e = new Error('stream.push() after EOF');
25882 stream.emit('error', e);
25883 } else if (state.endEmitted && addToFront) {
25884 var _e = new Error('stream.unshift() after end event');
25885 stream.emit('error', _e);
25886 } else {
25887 var skipAdd;
25888 if (state.decoder && !addToFront && !encoding) {
25889 chunk = state.decoder.write(chunk);
25890 skipAdd = !state.objectMode && chunk.length === 0;
25891 }
25892
25893 if (!addToFront) state.reading = false;
25894
25895 // Don't add to the buffer if we've decoded to an empty string chunk and
25896 // we're not in object mode
25897 if (!skipAdd) {
25898 // if we want the data now, just emit it.
25899 if (state.flowing && state.length === 0 && !state.sync) {
25900 stream.emit('data', chunk);
25901 stream.read(0);
25902 } else {
25903 // update the buffer info.
25904 state.length += state.objectMode ? 1 : chunk.length;
25905 if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
25906
25907 if (state.needReadable) emitReadable(stream);
25908 }
25909 }
25910
25911 maybeReadMore(stream, state);
25912 }
25913 } else if (!addToFront) {
25914 state.reading = false;
25915 }
25916
25917 return needMoreData(state);
25918 }
25919
25920 // if it's past the high water mark, we can push in some more.
25921 // Also, if we have no data yet, we can stand some
25922 // more bytes. This is to work around cases where hwm=0,
25923 // such as the repl. Also, if the push() triggered a
25924 // readable event, and the user called read(largeNumber) such that
25925 // needReadable was set, then we ought to push more, so that another
25926 // 'readable' event will be triggered.
25927 function needMoreData(state) {
25928 return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
25929 }
25930
25931 // backwards compatibility.
25932 Readable.prototype.setEncoding = function (enc) {
25933 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
25934 this._readableState.decoder = new StringDecoder(enc);
25935 this._readableState.encoding = enc;
25936 return this;
25937 };
25938
25939 // Don't raise the hwm > 8MB
25940 var MAX_HWM = 0x800000;
25941 function computeNewHighWaterMark(n) {
25942 if (n >= MAX_HWM) {
25943 n = MAX_HWM;
25944 } else {
25945 // Get the next highest power of 2 to prevent increasing hwm excessively in
25946 // tiny amounts
25947 n--;
25948 n |= n >>> 1;
25949 n |= n >>> 2;
25950 n |= n >>> 4;
25951 n |= n >>> 8;
25952 n |= n >>> 16;
25953 n++;
25954 }
25955 return n;
25956 }
25957
25958 // This function is designed to be inlinable, so please take care when making
25959 // changes to the function body.
25960 function howMuchToRead(n, state) {
25961 if (n <= 0 || state.length === 0 && state.ended) return 0;
25962 if (state.objectMode) return 1;
25963 if (n !== n) {
25964 // Only flow one buffer at a time
25965 if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
25966 }
25967 // If we're asking for more than the current hwm, then raise the hwm.
25968 if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
25969 if (n <= state.length) return n;
25970 // Don't have enough
25971 if (!state.ended) {
25972 state.needReadable = true;
25973 return 0;
25974 }
25975 return state.length;
25976 }
25977
25978 // you can override either this method, or the async _read(n) below.
25979 Readable.prototype.read = function (n) {
25980 debug('read', n);
25981 n = parseInt(n, 10);
25982 var state = this._readableState;
25983 var nOrig = n;
25984
25985 if (n !== 0) state.emittedReadable = false;
25986
25987 // if we're doing read(0) to trigger a readable event, but we
25988 // already have a bunch of data in the buffer, then just trigger
25989 // the 'readable' event and move on.
25990 if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
25991 debug('read: emitReadable', state.length, state.ended);
25992 if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
25993 return null;
25994 }
25995
25996 n = howMuchToRead(n, state);
25997
25998 // if we've ended, and we're now clear, then finish it up.
25999 if (n === 0 && state.ended) {
26000 if (state.length === 0) endReadable(this);
26001 return null;
26002 }
26003
26004 // All the actual chunk generation logic needs to be
26005 // *below* the call to _read. The reason is that in certain
26006 // synthetic stream cases, such as passthrough streams, _read
26007 // may be a completely synchronous operation which may change
26008 // the state of the read buffer, providing enough data when
26009 // before there was *not* enough.
26010 //
26011 // So, the steps are:
26012 // 1. Figure out what the state of things will be after we do
26013 // a read from the buffer.
26014 //
26015 // 2. If that resulting state will trigger a _read, then call _read.
26016 // Note that this may be asynchronous, or synchronous. Yes, it is
26017 // deeply ugly to write APIs this way, but that still doesn't mean
26018 // that the Readable class should behave improperly, as streams are
26019 // designed to be sync/async agnostic.
26020 // Take note if the _read call is sync or async (ie, if the read call
26021 // has returned yet), so that we know whether or not it's safe to emit
26022 // 'readable' etc.
26023 //
26024 // 3. Actually pull the requested chunks out of the buffer and return.
26025
26026 // if we need a readable event, then we need to do some reading.
26027 var doRead = state.needReadable;
26028 debug('need readable', doRead);
26029
26030 // if we currently have less than the highWaterMark, then also read some
26031 if (state.length === 0 || state.length - n < state.highWaterMark) {
26032 doRead = true;
26033 debug('length less than watermark', doRead);
26034 }
26035
26036 // however, if we've ended, then there's no point, and if we're already
26037 // reading, then it's unnecessary.
26038 if (state.ended || state.reading) {
26039 doRead = false;
26040 debug('reading or ended', doRead);
26041 } else if (doRead) {
26042 debug('do read');
26043 state.reading = true;
26044 state.sync = true;
26045 // if the length is currently zero, then we *need* a readable event.
26046 if (state.length === 0) state.needReadable = true;
26047 // call internal read method
26048 this._read(state.highWaterMark);
26049 state.sync = false;
26050 // If _read pushed data synchronously, then `reading` will be false,
26051 // and we need to re-evaluate how much data we can return to the user.
26052 if (!state.reading) n = howMuchToRead(nOrig, state);
26053 }
26054
26055 var ret;
26056 if (n > 0) ret = fromList(n, state);else ret = null;
26057
26058 if (ret === null) {
26059 state.needReadable = true;
26060 n = 0;
26061 } else {
26062 state.length -= n;
26063 }
26064
26065 if (state.length === 0) {
26066 // If we have nothing in the buffer, then we want to know
26067 // as soon as we *do* get something into the buffer.
26068 if (!state.ended) state.needReadable = true;
26069
26070 // If we tried to read() past the EOF, then emit end on the next tick.
26071 if (nOrig !== n && state.ended) endReadable(this);
26072 }
26073
26074 if (ret !== null) this.emit('data', ret);
26075
26076 return ret;
26077 };
26078
26079 function chunkInvalid(state, chunk) {
26080 var er = null;
26081 if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {
26082 er = new TypeError('Invalid non-string/buffer chunk');
26083 }
26084 return er;
26085 }
26086
26087 function onEofChunk(stream, state) {
26088 if (state.ended) return;
26089 if (state.decoder) {
26090 var chunk = state.decoder.end();
26091 if (chunk && chunk.length) {
26092 state.buffer.push(chunk);
26093 state.length += state.objectMode ? 1 : chunk.length;
26094 }
26095 }
26096 state.ended = true;
26097
26098 // emit 'readable' now to make sure it gets picked up.
26099 emitReadable(stream);
26100 }
26101
26102 // Don't emit readable right away in sync mode, because this can trigger
26103 // another read() call => stack overflow. This way, it might trigger
26104 // a nextTick recursion warning, but that's not so bad.
26105 function emitReadable(stream) {
26106 var state = stream._readableState;
26107 state.needReadable = false;
26108 if (!state.emittedReadable) {
26109 debug('emitReadable', state.flowing);
26110 state.emittedReadable = true;
26111 if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
26112 }
26113 }
26114
26115 function emitReadable_(stream) {
26116 debug('emit readable');
26117 stream.emit('readable');
26118 flow(stream);
26119 }
26120
26121 // at this point, the user has presumably seen the 'readable' event,
26122 // and called read() to consume some data. that may have triggered
26123 // in turn another _read(n) call, in which case reading = true if
26124 // it's in progress.
26125 // However, if we're not ended, or reading, and the length < hwm,
26126 // then go ahead and try to read some more preemptively.
26127 function maybeReadMore(stream, state) {
26128 if (!state.readingMore) {
26129 state.readingMore = true;
26130 processNextTick(maybeReadMore_, stream, state);
26131 }
26132 }
26133
26134 function maybeReadMore_(stream, state) {
26135 var len = state.length;
26136 while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
26137 debug('maybeReadMore read 0');
26138 stream.read(0);
26139 if (len === state.length)
26140 // didn't get any data, stop spinning.
26141 break;else len = state.length;
26142 }
26143 state.readingMore = false;
26144 }
26145
26146 // abstract method. to be overridden in specific implementation classes.
26147 // call cb(er, data) where data is <= n in length.
26148 // for virtual (non-string, non-buffer) streams, "length" is somewhat
26149 // arbitrary, and perhaps not very meaningful.
26150 Readable.prototype._read = function (n) {
26151 this.emit('error', new Error('_read() is not implemented'));
26152 };
26153
26154 Readable.prototype.pipe = function (dest, pipeOpts) {
26155 var src = this;
26156 var state = this._readableState;
26157
26158 switch (state.pipesCount) {
26159 case 0:
26160 state.pipes = dest;
26161 break;
26162 case 1:
26163 state.pipes = [state.pipes, dest];
26164 break;
26165 default:
26166 state.pipes.push(dest);
26167 break;
26168 }
26169 state.pipesCount += 1;
26170 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
26171
26172 var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
26173
26174 var endFn = doEnd ? onend : cleanup;
26175 if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
26176
26177 dest.on('unpipe', onunpipe);
26178 function onunpipe(readable) {
26179 debug('onunpipe');
26180 if (readable === src) {
26181 cleanup();
26182 }
26183 }
26184
26185 function onend() {
26186 debug('onend');
26187 dest.end();
26188 }
26189
26190 // when the dest drains, it reduces the awaitDrain counter
26191 // on the source. This would be more elegant with a .once()
26192 // handler in flow(), but adding and removing repeatedly is
26193 // too slow.
26194 var ondrain = pipeOnDrain(src);
26195 dest.on('drain', ondrain);
26196
26197 var cleanedUp = false;
26198 function cleanup() {
26199 debug('cleanup');
26200 // cleanup event handlers once the pipe is broken
26201 dest.removeListener('close', onclose);
26202 dest.removeListener('finish', onfinish);
26203 dest.removeListener('drain', ondrain);
26204 dest.removeListener('error', onerror);
26205 dest.removeListener('unpipe', onunpipe);
26206 src.removeListener('end', onend);
26207 src.removeListener('end', cleanup);
26208 src.removeListener('data', ondata);
26209
26210 cleanedUp = true;
26211
26212 // if the reader is waiting for a drain event from this
26213 // specific writer, then it would cause it to never start
26214 // flowing again.
26215 // So, if this is awaiting a drain, then we just call it now.
26216 // If we don't know, then assume that we are waiting for one.
26217 if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
26218 }
26219
26220 // If the user pushes more data while we're writing to dest then we'll end up
26221 // in ondata again. However, we only want to increase awaitDrain once because
26222 // dest will only emit one 'drain' event for the multiple writes.
26223 // => Introduce a guard on increasing awaitDrain.
26224 var increasedAwaitDrain = false;
26225 src.on('data', ondata);
26226 function ondata(chunk) {
26227 debug('ondata');
26228 increasedAwaitDrain = false;
26229 var ret = dest.write(chunk);
26230 if (false === ret && !increasedAwaitDrain) {
26231 // If the user unpiped during `dest.write()`, it is possible
26232 // to get stuck in a permanently paused state if that write
26233 // also returned false.
26234 // => Check whether `dest` is still a piping destination.
26235 if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
26236 debug('false write response, pause', src._readableState.awaitDrain);
26237 src._readableState.awaitDrain++;
26238 increasedAwaitDrain = true;
26239 }
26240 src.pause();
26241 }
26242 }
26243
26244 // if the dest has an error, then stop piping into it.
26245 // however, don't suppress the throwing behavior for this.
26246 function onerror(er) {
26247 debug('onerror', er);
26248 unpipe();
26249 dest.removeListener('error', onerror);
26250 if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
26251 }
26252
26253 // Make sure our error handler is attached before userland ones.
26254 prependListener(dest, 'error', onerror);
26255
26256 // Both close and finish should trigger unpipe, but only once.
26257 function onclose() {
26258 dest.removeListener('finish', onfinish);
26259 unpipe();
26260 }
26261 dest.once('close', onclose);
26262 function onfinish() {
26263 debug('onfinish');
26264 dest.removeListener('close', onclose);
26265 unpipe();
26266 }
26267 dest.once('finish', onfinish);
26268
26269 function unpipe() {
26270 debug('unpipe');
26271 src.unpipe(dest);
26272 }
26273
26274 // tell the dest that it's being piped to
26275 dest.emit('pipe', src);
26276
26277 // start the flow if it hasn't been started already.
26278 if (!state.flowing) {
26279 debug('pipe resume');
26280 src.resume();
26281 }
26282
26283 return dest;
26284 };
26285
26286 function pipeOnDrain(src) {
26287 return function () {
26288 var state = src._readableState;
26289 debug('pipeOnDrain', state.awaitDrain);
26290 if (state.awaitDrain) state.awaitDrain--;
26291 if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
26292 state.flowing = true;
26293 flow(src);
26294 }
26295 };
26296 }
26297
26298 Readable.prototype.unpipe = function (dest) {
26299 var state = this._readableState;
26300
26301 // if we're not piping anywhere, then do nothing.
26302 if (state.pipesCount === 0) return this;
26303
26304 // just one destination. most common case.
26305 if (state.pipesCount === 1) {
26306 // passed in one, but it's not the right one.
26307 if (dest && dest !== state.pipes) return this;
26308
26309 if (!dest) dest = state.pipes;
26310
26311 // got a match.
26312 state.pipes = null;
26313 state.pipesCount = 0;
26314 state.flowing = false;
26315 if (dest) dest.emit('unpipe', this);
26316 return this;
26317 }
26318
26319 // slow case. multiple pipe destinations.
26320
26321 if (!dest) {
26322 // remove all.
26323 var dests = state.pipes;
26324 var len = state.pipesCount;
26325 state.pipes = null;
26326 state.pipesCount = 0;
26327 state.flowing = false;
26328
26329 for (var i = 0; i < len; i++) {
26330 dests[i].emit('unpipe', this);
26331 }return this;
26332 }
26333
26334 // try to find the right one.
26335 var index = indexOf(state.pipes, dest);
26336 if (index === -1) return this;
26337
26338 state.pipes.splice(index, 1);
26339 state.pipesCount -= 1;
26340 if (state.pipesCount === 1) state.pipes = state.pipes[0];
26341
26342 dest.emit('unpipe', this);
26343
26344 return this;
26345 };
26346
26347 // set up data events if they are asked for
26348 // Ensure readable listeners eventually get something
26349 Readable.prototype.on = function (ev, fn) {
26350 var res = Stream.prototype.on.call(this, ev, fn);
26351
26352 if (ev === 'data') {
26353 // Start flowing on next tick if stream isn't explicitly paused
26354 if (this._readableState.flowing !== false) this.resume();
26355 } else if (ev === 'readable') {
26356 var state = this._readableState;
26357 if (!state.endEmitted && !state.readableListening) {
26358 state.readableListening = state.needReadable = true;
26359 state.emittedReadable = false;
26360 if (!state.reading) {
26361 processNextTick(nReadingNextTick, this);
26362 } else if (state.length) {
26363 emitReadable(this, state);
26364 }
26365 }
26366 }
26367
26368 return res;
26369 };
26370 Readable.prototype.addListener = Readable.prototype.on;
26371
26372 function nReadingNextTick(self) {
26373 debug('readable nexttick read 0');
26374 self.read(0);
26375 }
26376
26377 // pause() and resume() are remnants of the legacy readable stream API
26378 // If the user uses them, then switch into old mode.
26379 Readable.prototype.resume = function () {
26380 var state = this._readableState;
26381 if (!state.flowing) {
26382 debug('resume');
26383 state.flowing = true;
26384 resume(this, state);
26385 }
26386 return this;
26387 };
26388
26389 function resume(stream, state) {
26390 if (!state.resumeScheduled) {
26391 state.resumeScheduled = true;
26392 processNextTick(resume_, stream, state);
26393 }
26394 }
26395
26396 function resume_(stream, state) {
26397 if (!state.reading) {
26398 debug('resume read 0');
26399 stream.read(0);
26400 }
26401
26402 state.resumeScheduled = false;
26403 state.awaitDrain = 0;
26404 stream.emit('resume');
26405 flow(stream);
26406 if (state.flowing && !state.reading) stream.read(0);
26407 }
26408
26409 Readable.prototype.pause = function () {
26410 debug('call pause flowing=%j', this._readableState.flowing);
26411 if (false !== this._readableState.flowing) {
26412 debug('pause');
26413 this._readableState.flowing = false;
26414 this.emit('pause');
26415 }
26416 return this;
26417 };
26418
26419 function flow(stream) {
26420 var state = stream._readableState;
26421 debug('flow', state.flowing);
26422 while (state.flowing && stream.read() !== null) {}
26423 }
26424
26425 // wrap an old-style stream as the async data source.
26426 // This is *not* part of the readable stream interface.
26427 // It is an ugly unfortunate mess of history.
26428 Readable.prototype.wrap = function (stream) {
26429 var state = this._readableState;
26430 var paused = false;
26431
26432 var self = this;
26433 stream.on('end', function () {
26434 debug('wrapped end');
26435 if (state.decoder && !state.ended) {
26436 var chunk = state.decoder.end();
26437 if (chunk && chunk.length) self.push(chunk);
26438 }
26439
26440 self.push(null);
26441 });
26442
26443 stream.on('data', function (chunk) {
26444 debug('wrapped data');
26445 if (state.decoder) chunk = state.decoder.write(chunk);
26446
26447 // don't skip over falsy values in objectMode
26448 if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
26449
26450 var ret = self.push(chunk);
26451 if (!ret) {
26452 paused = true;
26453 stream.pause();
26454 }
26455 });
26456
26457 // proxy all the other methods.
26458 // important when wrapping filters and duplexes.
26459 for (var i in stream) {
26460 if (this[i] === undefined && typeof stream[i] === 'function') {
26461 this[i] = function (method) {
26462 return function () {
26463 return stream[method].apply(stream, arguments);
26464 };
26465 }(i);
26466 }
26467 }
26468
26469 // proxy certain important events.
26470 var events = ['error', 'close', 'destroy', 'pause', 'resume'];
26471 forEach(events, function (ev) {
26472 stream.on(ev, self.emit.bind(self, ev));
26473 });
26474
26475 // when we try to consume some more bytes, simply unpause the
26476 // underlying stream.
26477 self._read = function (n) {
26478 debug('wrapped _read', n);
26479 if (paused) {
26480 paused = false;
26481 stream.resume();
26482 }
26483 };
26484
26485 return self;
26486 };
26487
26488 // exposed for testing purposes only.
26489 Readable._fromList = fromList;
26490
26491 // Pluck off n bytes from an array of buffers.
26492 // Length is the combined lengths of all the buffers in the list.
26493 // This function is designed to be inlinable, so please take care when making
26494 // changes to the function body.
26495 function fromList(n, state) {
26496 // nothing buffered
26497 if (state.length === 0) return null;
26498
26499 var ret;
26500 if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
26501 // read it all, truncate the list
26502 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);
26503 state.buffer.clear();
26504 } else {
26505 // read part of list
26506 ret = fromListPartial(n, state.buffer, state.decoder);
26507 }
26508
26509 return ret;
26510 }
26511
26512 // Extracts only enough buffered data to satisfy the amount requested.
26513 // This function is designed to be inlinable, so please take care when making
26514 // changes to the function body.
26515 function fromListPartial(n, list, hasStrings) {
26516 var ret;
26517 if (n < list.head.data.length) {
26518 // slice is the same for buffers and strings
26519 ret = list.head.data.slice(0, n);
26520 list.head.data = list.head.data.slice(n);
26521 } else if (n === list.head.data.length) {
26522 // first chunk is a perfect match
26523 ret = list.shift();
26524 } else {
26525 // result spans more than one buffer
26526 ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
26527 }
26528 return ret;
26529 }
26530
26531 // Copies a specified amount of characters from the list of buffered data
26532 // chunks.
26533 // This function is designed to be inlinable, so please take care when making
26534 // changes to the function body.
26535 function copyFromBufferString(n, list) {
26536 var p = list.head;
26537 var c = 1;
26538 var ret = p.data;
26539 n -= ret.length;
26540 while (p = p.next) {
26541 var str = p.data;
26542 var nb = n > str.length ? str.length : n;
26543 if (nb === str.length) ret += str;else ret += str.slice(0, n);
26544 n -= nb;
26545 if (n === 0) {
26546 if (nb === str.length) {
26547 ++c;
26548 if (p.next) list.head = p.next;else list.head = list.tail = null;
26549 } else {
26550 list.head = p;
26551 p.data = str.slice(nb);
26552 }
26553 break;
26554 }
26555 ++c;
26556 }
26557 list.length -= c;
26558 return ret;
26559 }
26560
26561 // Copies a specified amount of bytes from the list of buffered data chunks.
26562 // This function is designed to be inlinable, so please take care when making
26563 // changes to the function body.
26564 function copyFromBuffer(n, list) {
26565 var ret = bufferShim.allocUnsafe(n);
26566 var p = list.head;
26567 var c = 1;
26568 p.data.copy(ret);
26569 n -= p.data.length;
26570 while (p = p.next) {
26571 var buf = p.data;
26572 var nb = n > buf.length ? buf.length : n;
26573 buf.copy(ret, ret.length - n, 0, nb);
26574 n -= nb;
26575 if (n === 0) {
26576 if (nb === buf.length) {
26577 ++c;
26578 if (p.next) list.head = p.next;else list.head = list.tail = null;
26579 } else {
26580 list.head = p;
26581 p.data = buf.slice(nb);
26582 }
26583 break;
26584 }
26585 ++c;
26586 }
26587 list.length -= c;
26588 return ret;
26589 }
26590
26591 function endReadable(stream) {
26592 var state = stream._readableState;
26593
26594 // If we get here before consuming all the bytes, then that is a
26595 // bug in node. Should never happen.
26596 if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
26597
26598 if (!state.endEmitted) {
26599 state.ended = true;
26600 processNextTick(endReadableNT, state, stream);
26601 }
26602 }
26603
26604 function endReadableNT(state, stream) {
26605 // Check that we didn't get one last unshift.
26606 if (!state.endEmitted && state.length === 0) {
26607 state.endEmitted = true;
26608 stream.readable = false;
26609 stream.emit('end');
26610 }
26611 }
26612
26613 function forEach(xs, f) {
26614 for (var i = 0, l = xs.length; i < l; i++) {
26615 f(xs[i], i);
26616 }
26617 }
26618
26619 function indexOf(xs, x) {
26620 for (var i = 0, l = xs.length; i < l; i++) {
26621 if (xs[i] === x) return i;
26622 }
26623 return -1;
26624 }
26625 }).call(this,require('_process'))
26626 },{"./_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){
26627 // a transform stream is a readable/writable stream where you do
26628 // something with the data. Sometimes it's called a "filter",
26629 // but that's not a great name for it, since that implies a thing where
26630 // some bits pass through, and others are simply ignored. (That would
26631 // be a valid example of a transform, of course.)
26632 //
26633 // While the output is causally related to the input, it's not a
26634 // necessarily symmetric or synchronous transformation. For example,
26635 // a zlib stream might take multiple plain-text writes(), and then
26636 // emit a single compressed chunk some time in the future.
26637 //
26638 // Here's how this works:
26639 //
26640 // The Transform stream has all the aspects of the readable and writable
26641 // stream classes. When you write(chunk), that calls _write(chunk,cb)
26642 // internally, and returns false if there's a lot of pending writes
26643 // buffered up. When you call read(), that calls _read(n) until
26644 // there's enough pending readable data buffered up.
26645 //
26646 // In a transform stream, the written data is placed in a buffer. When
26647 // _read(n) is called, it transforms the queued up data, calling the
26648 // buffered _write cb's as it consumes chunks. If consuming a single
26649 // written chunk would result in multiple output chunks, then the first
26650 // outputted bit calls the readcb, and subsequent chunks just go into
26651 // the read buffer, and will cause it to emit 'readable' if necessary.
26652 //
26653 // This way, back-pressure is actually determined by the reading side,
26654 // since _read has to be called to start processing a new chunk. However,
26655 // a pathological inflate type of transform can cause excessive buffering
26656 // here. For example, imagine a stream where every byte of input is
26657 // interpreted as an integer from 0-255, and then results in that many
26658 // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
26659 // 1kb of data being output. In this case, you could write a very small
26660 // amount of input, and end up with a very large amount of output. In
26661 // such a pathological inflating mechanism, there'd be no way to tell
26662 // the system to stop doing the transform. A single 4MB write could
26663 // cause the system to run out of memory.
26664 //
26665 // However, even in such a pathological case, only a single written chunk
26666 // would be consumed, and then the rest would wait (un-transformed) until
26667 // the results of the previous transformed chunk were consumed.
26668
26669 'use strict';
26670
26671 module.exports = Transform;
26672
26673 var Duplex = require('./_stream_duplex');
26674
26675 /*<replacement>*/
26676 var util = require('core-util-is');
26677 util.inherits = require('inherits');
26678 /*</replacement>*/
26679
26680 util.inherits(Transform, Duplex);
26681
26682 function TransformState(stream) {
26683 this.afterTransform = function (er, data) {
26684 return afterTransform(stream, er, data);
26685 };
26686
26687 this.needTransform = false;
26688 this.transforming = false;
26689 this.writecb = null;
26690 this.writechunk = null;
26691 this.writeencoding = null;
26692 }
26693
26694 function afterTransform(stream, er, data) {
26695 var ts = stream._transformState;
26696 ts.transforming = false;
26697
26698 var cb = ts.writecb;
26699
26700 if (!cb) return stream.emit('error', new Error('no writecb in Transform class'));
26701
26702 ts.writechunk = null;
26703 ts.writecb = null;
26704
26705 if (data !== null && data !== undefined) stream.push(data);
26706
26707 cb(er);
26708
26709 var rs = stream._readableState;
26710 rs.reading = false;
26711 if (rs.needReadable || rs.length < rs.highWaterMark) {
26712 stream._read(rs.highWaterMark);
26713 }
26714 }
26715
26716 function Transform(options) {
26717 if (!(this instanceof Transform)) return new Transform(options);
26718
26719 Duplex.call(this, options);
26720
26721 this._transformState = new TransformState(this);
26722
26723 var stream = this;
26724
26725 // start out asking for a readable event once data is transformed.
26726 this._readableState.needReadable = true;
26727
26728 // we have implemented the _read method, and done the other things
26729 // that Readable wants before the first _read call, so unset the
26730 // sync guard flag.
26731 this._readableState.sync = false;
26732
26733 if (options) {
26734 if (typeof options.transform === 'function') this._transform = options.transform;
26735
26736 if (typeof options.flush === 'function') this._flush = options.flush;
26737 }
26738
26739 // When the writable side finishes, then flush out anything remaining.
26740 this.once('prefinish', function () {
26741 if (typeof this._flush === 'function') this._flush(function (er, data) {
26742 done(stream, er, data);
26743 });else done(stream);
26744 });
26745 }
26746
26747 Transform.prototype.push = function (chunk, encoding) {
26748 this._transformState.needTransform = false;
26749 return Duplex.prototype.push.call(this, chunk, encoding);
26750 };
26751
26752 // This is the part where you do stuff!
26753 // override this function in implementation classes.
26754 // 'chunk' is an input chunk.
26755 //
26756 // Call `push(newChunk)` to pass along transformed output
26757 // to the readable side. You may call 'push' zero or more times.
26758 //
26759 // Call `cb(err)` when you are done with this chunk. If you pass
26760 // an error, then that'll put the hurt on the whole operation. If you
26761 // never call cb(), then you'll never get another chunk.
26762 Transform.prototype._transform = function (chunk, encoding, cb) {
26763 throw new Error('_transform() is not implemented');
26764 };
26765
26766 Transform.prototype._write = function (chunk, encoding, cb) {
26767 var ts = this._transformState;
26768 ts.writecb = cb;
26769 ts.writechunk = chunk;
26770 ts.writeencoding = encoding;
26771 if (!ts.transforming) {
26772 var rs = this._readableState;
26773 if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
26774 }
26775 };
26776
26777 // Doesn't matter what the args are here.
26778 // _transform does all the work.
26779 // That we got here means that the readable side wants more data.
26780 Transform.prototype._read = function (n) {
26781 var ts = this._transformState;
26782
26783 if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
26784 ts.transforming = true;
26785 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
26786 } else {
26787 // mark that we need a transform, so that any data that comes in
26788 // will get processed, now that we've asked for it.
26789 ts.needTransform = true;
26790 }
26791 };
26792
26793 function done(stream, er, data) {
26794 if (er) return stream.emit('error', er);
26795
26796 if (data !== null && data !== undefined) stream.push(data);
26797
26798 // if there's nothing in the write buffer, then that means
26799 // that nothing more will ever be provided
26800 var ws = stream._writableState;
26801 var ts = stream._transformState;
26802
26803 if (ws.length) throw new Error('Calling transform done when ws.length != 0');
26804
26805 if (ts.transforming) throw new Error('Calling transform done when still transforming');
26806
26807 return stream.push(null);
26808 }
26809 },{"./_stream_duplex":15,"core-util-is":6,"inherits":9}],19:[function(require,module,exports){
26810 (function (process){
26811 // A bit simpler than readable streams.
26812 // Implement an async ._write(chunk, encoding, cb), and it'll handle all
26813 // the drain event emission and buffering.
26814
26815 'use strict';
26816
26817 module.exports = Writable;
26818
26819 /*<replacement>*/
26820 var processNextTick = require('process-nextick-args');
26821 /*</replacement>*/
26822
26823 /*<replacement>*/
26824 var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
26825 /*</replacement>*/
26826
26827 /*<replacement>*/
26828 var Duplex;
26829 /*</replacement>*/
26830
26831 Writable.WritableState = WritableState;
26832
26833 /*<replacement>*/
26834 var util = require('core-util-is');
26835 util.inherits = require('inherits');
26836 /*</replacement>*/
26837
26838 /*<replacement>*/
26839 var internalUtil = {
26840 deprecate: require('util-deprecate')
26841 };
26842 /*</replacement>*/
26843
26844 /*<replacement>*/
26845 var Stream;
26846 (function () {
26847 try {
26848 Stream = require('st' + 'ream');
26849 } catch (_) {} finally {
26850 if (!Stream) Stream = require('events').EventEmitter;
26851 }
26852 })();
26853 /*</replacement>*/
26854
26855 var Buffer = require('buffer').Buffer;
26856 /*<replacement>*/
26857 var bufferShim = require('buffer-shims');
26858 /*</replacement>*/
26859
26860 util.inherits(Writable, Stream);
26861
26862 function nop() {}
26863
26864 function WriteReq(chunk, encoding, cb) {
26865 this.chunk = chunk;
26866 this.encoding = encoding;
26867 this.callback = cb;
26868 this.next = null;
26869 }
26870
26871 function WritableState(options, stream) {
26872 Duplex = Duplex || require('./_stream_duplex');
26873
26874 options = options || {};
26875
26876 // object stream flag to indicate whether or not this stream
26877 // contains buffers or objects.
26878 this.objectMode = !!options.objectMode;
26879
26880 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
26881
26882 // the point at which write() starts returning false
26883 // Note: 0 is a valid value, means that we always return false if
26884 // the entire buffer is not flushed immediately on write()
26885 var hwm = options.highWaterMark;
26886 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
26887 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
26888
26889 // cast to ints.
26890 this.highWaterMark = ~ ~this.highWaterMark;
26891
26892 // drain event flag.
26893 this.needDrain = false;
26894 // at the start of calling end()
26895 this.ending = false;
26896 // when end() has been called, and returned
26897 this.ended = false;
26898 // when 'finish' is emitted
26899 this.finished = false;
26900
26901 // should we decode strings into buffers before passing to _write?
26902 // this is here so that some node-core streams can optimize string
26903 // handling at a lower level.
26904 var noDecode = options.decodeStrings === false;
26905 this.decodeStrings = !noDecode;
26906
26907 // Crypto is kind of old and crusty. Historically, its default string
26908 // encoding is 'binary' so we have to make this configurable.
26909 // Everything else in the universe uses 'utf8', though.
26910 this.defaultEncoding = options.defaultEncoding || 'utf8';
26911
26912 // not an actual buffer we keep track of, but a measurement
26913 // of how much we're waiting to get pushed to some underlying
26914 // socket or file.
26915 this.length = 0;
26916
26917 // a flag to see when we're in the middle of a write.
26918 this.writing = false;
26919
26920 // when true all writes will be buffered until .uncork() call
26921 this.corked = 0;
26922
26923 // a flag to be able to tell if the onwrite cb is called immediately,
26924 // or on a later tick. We set this to true at first, because any
26925 // actions that shouldn't happen until "later" should generally also
26926 // not happen before the first write call.
26927 this.sync = true;
26928
26929 // a flag to know if we're processing previously buffered items, which
26930 // may call the _write() callback in the same tick, so that we don't
26931 // end up in an overlapped onwrite situation.
26932 this.bufferProcessing = false;
26933
26934 // the callback that's passed to _write(chunk,cb)
26935 this.onwrite = function (er) {
26936 onwrite(stream, er);
26937 };
26938
26939 // the callback that the user supplies to write(chunk,encoding,cb)
26940 this.writecb = null;
26941
26942 // the amount that is being written when _write is called.
26943 this.writelen = 0;
26944
26945 this.bufferedRequest = null;
26946 this.lastBufferedRequest = null;
26947
26948 // number of pending user-supplied write callbacks
26949 // this must be 0 before 'finish' can be emitted
26950 this.pendingcb = 0;
26951
26952 // emit prefinish if the only thing we're waiting for is _write cbs
26953 // This is relevant for synchronous Transform streams
26954 this.prefinished = false;
26955
26956 // True if the error was already emitted and should not be thrown again
26957 this.errorEmitted = false;
26958
26959 // count buffered requests
26960 this.bufferedRequestCount = 0;
26961
26962 // allocate the first CorkedRequest, there is always
26963 // one allocated and free to use, and we maintain at most two
26964 this.corkedRequestsFree = new CorkedRequest(this);
26965 }
26966
26967 WritableState.prototype.getBuffer = function getBuffer() {
26968 var current = this.bufferedRequest;
26969 var out = [];
26970 while (current) {
26971 out.push(current);
26972 current = current.next;
26973 }
26974 return out;
26975 };
26976
26977 (function () {
26978 try {
26979 Object.defineProperty(WritableState.prototype, 'buffer', {
26980 get: internalUtil.deprecate(function () {
26981 return this.getBuffer();
26982 }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.')
26983 });
26984 } catch (_) {}
26985 })();
26986
26987 // Test _writableState for inheritance to account for Duplex streams,
26988 // whose prototype chain only points to Readable.
26989 var realHasInstance;
26990 if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
26991 realHasInstance = Function.prototype[Symbol.hasInstance];
26992 Object.defineProperty(Writable, Symbol.hasInstance, {
26993 value: function (object) {
26994 if (realHasInstance.call(this, object)) return true;
26995
26996 return object && object._writableState instanceof WritableState;
26997 }
26998 });
26999 } else {
27000 realHasInstance = function (object) {
27001 return object instanceof this;
27002 };
27003 }
27004
27005 function Writable(options) {
27006 Duplex = Duplex || require('./_stream_duplex');
27007
27008 // Writable ctor is applied to Duplexes, too.
27009 // `realHasInstance` is necessary because using plain `instanceof`
27010 // would return false, as no `_writableState` property is attached.
27011
27012 // Trying to use the custom `instanceof` for Writable here will also break the
27013 // Node.js LazyTransform implementation, which has a non-trivial getter for
27014 // `_writableState` that would lead to infinite recursion.
27015 if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
27016 return new Writable(options);
27017 }
27018
27019 this._writableState = new WritableState(options, this);
27020
27021 // legacy.
27022 this.writable = true;
27023
27024 if (options) {
27025 if (typeof options.write === 'function') this._write = options.write;
27026
27027 if (typeof options.writev === 'function') this._writev = options.writev;
27028 }
27029
27030 Stream.call(this);
27031 }
27032
27033 // Otherwise people can pipe Writable streams, which is just wrong.
27034 Writable.prototype.pipe = function () {
27035 this.emit('error', new Error('Cannot pipe, not readable'));
27036 };
27037
27038 function writeAfterEnd(stream, cb) {
27039 var er = new Error('write after end');
27040 // TODO: defer error events consistently everywhere, not just the cb
27041 stream.emit('error', er);
27042 processNextTick(cb, er);
27043 }
27044
27045 // If we get something that is not a buffer, string, null, or undefined,
27046 // and we're not in objectMode, then that's an error.
27047 // Otherwise stream chunks are all considered to be of length=1, and the
27048 // watermarks determine how many objects to keep in the buffer, rather than
27049 // how many bytes or characters.
27050 function validChunk(stream, state, chunk, cb) {
27051 var valid = true;
27052 var er = false;
27053 // Always throw error if a null is written
27054 // if we are not in object mode then throw
27055 // if it is not a buffer, string, or undefined.
27056 if (chunk === null) {
27057 er = new TypeError('May not write null values to stream');
27058 } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
27059 er = new TypeError('Invalid non-string/buffer chunk');
27060 }
27061 if (er) {
27062 stream.emit('error', er);
27063 processNextTick(cb, er);
27064 valid = false;
27065 }
27066 return valid;
27067 }
27068
27069 Writable.prototype.write = function (chunk, encoding, cb) {
27070 var state = this._writableState;
27071 var ret = false;
27072
27073 if (typeof encoding === 'function') {
27074 cb = encoding;
27075 encoding = null;
27076 }
27077
27078 if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
27079
27080 if (typeof cb !== 'function') cb = nop;
27081
27082 if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) {
27083 state.pendingcb++;
27084 ret = writeOrBuffer(this, state, chunk, encoding, cb);
27085 }
27086
27087 return ret;
27088 };
27089
27090 Writable.prototype.cork = function () {
27091 var state = this._writableState;
27092
27093 state.corked++;
27094 };
27095
27096 Writable.prototype.uncork = function () {
27097 var state = this._writableState;
27098
27099 if (state.corked) {
27100 state.corked--;
27101
27102 if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
27103 }
27104 };
27105
27106 Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
27107 // node::ParseEncoding() requires lower case.
27108 if (typeof encoding === 'string') encoding = encoding.toLowerCase();
27109 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);
27110 this._writableState.defaultEncoding = encoding;
27111 return this;
27112 };
27113
27114 function decodeChunk(state, chunk, encoding) {
27115 if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
27116 chunk = bufferShim.from(chunk, encoding);
27117 }
27118 return chunk;
27119 }
27120
27121 // if we're already writing something, then just put this
27122 // in the queue, and wait our turn. Otherwise, call _write
27123 // If we return false, then we need a drain event, so set that flag.
27124 function writeOrBuffer(stream, state, chunk, encoding, cb) {
27125 chunk = decodeChunk(state, chunk, encoding);
27126
27127 if (Buffer.isBuffer(chunk)) encoding = 'buffer';
27128 var len = state.objectMode ? 1 : chunk.length;
27129
27130 state.length += len;
27131
27132 var ret = state.length < state.highWaterMark;
27133 // we must ensure that previous needDrain will not be reset to false.
27134 if (!ret) state.needDrain = true;
27135
27136 if (state.writing || state.corked) {
27137 var last = state.lastBufferedRequest;
27138 state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);
27139 if (last) {
27140 last.next = state.lastBufferedRequest;
27141 } else {
27142 state.bufferedRequest = state.lastBufferedRequest;
27143 }
27144 state.bufferedRequestCount += 1;
27145 } else {
27146 doWrite(stream, state, false, len, chunk, encoding, cb);
27147 }
27148
27149 return ret;
27150 }
27151
27152 function doWrite(stream, state, writev, len, chunk, encoding, cb) {
27153 state.writelen = len;
27154 state.writecb = cb;
27155 state.writing = true;
27156 state.sync = true;
27157 if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
27158 state.sync = false;
27159 }
27160
27161 function onwriteError(stream, state, sync, er, cb) {
27162 --state.pendingcb;
27163 if (sync) processNextTick(cb, er);else cb(er);
27164
27165 stream._writableState.errorEmitted = true;
27166 stream.emit('error', er);
27167 }
27168
27169 function onwriteStateUpdate(state) {
27170 state.writing = false;
27171 state.writecb = null;
27172 state.length -= state.writelen;
27173 state.writelen = 0;
27174 }
27175
27176 function onwrite(stream, er) {
27177 var state = stream._writableState;
27178 var sync = state.sync;
27179 var cb = state.writecb;
27180
27181 onwriteStateUpdate(state);
27182
27183 if (er) onwriteError(stream, state, sync, er, cb);else {
27184 // Check if we're actually ready to finish, but don't emit yet
27185 var finished = needFinish(state);
27186
27187 if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
27188 clearBuffer(stream, state);
27189 }
27190
27191 if (sync) {
27192 /*<replacement>*/
27193 asyncWrite(afterWrite, stream, state, finished, cb);
27194 /*</replacement>*/
27195 } else {
27196 afterWrite(stream, state, finished, cb);
27197 }
27198 }
27199 }
27200
27201 function afterWrite(stream, state, finished, cb) {
27202 if (!finished) onwriteDrain(stream, state);
27203 state.pendingcb--;
27204 cb();
27205 finishMaybe(stream, state);
27206 }
27207
27208 // Must force callback to be called on nextTick, so that we don't
27209 // emit 'drain' before the write() consumer gets the 'false' return
27210 // value, and has a chance to attach a 'drain' listener.
27211 function onwriteDrain(stream, state) {
27212 if (state.length === 0 && state.needDrain) {
27213 state.needDrain = false;
27214 stream.emit('drain');
27215 }
27216 }
27217
27218 // if there's something in the buffer waiting, then process it
27219 function clearBuffer(stream, state) {
27220 state.bufferProcessing = true;
27221 var entry = state.bufferedRequest;
27222
27223 if (stream._writev && entry && entry.next) {
27224 // Fast case, write everything using _writev()
27225 var l = state.bufferedRequestCount;
27226 var buffer = new Array(l);
27227 var holder = state.corkedRequestsFree;
27228 holder.entry = entry;
27229
27230 var count = 0;
27231 while (entry) {
27232 buffer[count] = entry;
27233 entry = entry.next;
27234 count += 1;
27235 }
27236
27237 doWrite(stream, state, true, state.length, buffer, '', holder.finish);
27238
27239 // doWrite is almost always async, defer these to save a bit of time
27240 // as the hot path ends with doWrite
27241 state.pendingcb++;
27242 state.lastBufferedRequest = null;
27243 if (holder.next) {
27244 state.corkedRequestsFree = holder.next;
27245 holder.next = null;
27246 } else {
27247 state.corkedRequestsFree = new CorkedRequest(state);
27248 }
27249 } else {
27250 // Slow case, write chunks one-by-one
27251 while (entry) {
27252 var chunk = entry.chunk;
27253 var encoding = entry.encoding;
27254 var cb = entry.callback;
27255 var len = state.objectMode ? 1 : chunk.length;
27256
27257 doWrite(stream, state, false, len, chunk, encoding, cb);
27258 entry = entry.next;
27259 // if we didn't call the onwrite immediately, then
27260 // it means that we need to wait until it does.
27261 // also, that means that the chunk and cb are currently
27262 // being processed, so move the buffer counter past them.
27263 if (state.writing) {
27264 break;
27265 }
27266 }
27267
27268 if (entry === null) state.lastBufferedRequest = null;
27269 }
27270
27271 state.bufferedRequestCount = 0;
27272 state.bufferedRequest = entry;
27273 state.bufferProcessing = false;
27274 }
27275
27276 Writable.prototype._write = function (chunk, encoding, cb) {
27277 cb(new Error('_write() is not implemented'));
27278 };
27279
27280 Writable.prototype._writev = null;
27281
27282 Writable.prototype.end = function (chunk, encoding, cb) {
27283 var state = this._writableState;
27284
27285 if (typeof chunk === 'function') {
27286 cb = chunk;
27287 chunk = null;
27288 encoding = null;
27289 } else if (typeof encoding === 'function') {
27290 cb = encoding;
27291 encoding = null;
27292 }
27293
27294 if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
27295
27296 // .end() fully uncorks
27297 if (state.corked) {
27298 state.corked = 1;
27299 this.uncork();
27300 }
27301
27302 // ignore unnecessary end() calls.
27303 if (!state.ending && !state.finished) endWritable(this, state, cb);
27304 };
27305
27306 function needFinish(state) {
27307 return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
27308 }
27309
27310 function prefinish(stream, state) {
27311 if (!state.prefinished) {
27312 state.prefinished = true;
27313 stream.emit('prefinish');
27314 }
27315 }
27316
27317 function finishMaybe(stream, state) {
27318 var need = needFinish(state);
27319 if (need) {
27320 if (state.pendingcb === 0) {
27321 prefinish(stream, state);
27322 state.finished = true;
27323 stream.emit('finish');
27324 } else {
27325 prefinish(stream, state);
27326 }
27327 }
27328 return need;
27329 }
27330
27331 function endWritable(stream, state, cb) {
27332 state.ending = true;
27333 finishMaybe(stream, state);
27334 if (cb) {
27335 if (state.finished) processNextTick(cb);else stream.once('finish', cb);
27336 }
27337 state.ended = true;
27338 stream.writable = false;
27339 }
27340
27341 // It seems a linked list but it is not
27342 // there will be only 2 of these for each stream
27343 function CorkedRequest(state) {
27344 var _this = this;
27345
27346 this.next = null;
27347 this.entry = null;
27348
27349 this.finish = function (err) {
27350 var entry = _this.entry;
27351 _this.entry = null;
27352 while (entry) {
27353 var cb = entry.callback;
27354 state.pendingcb--;
27355 cb(err);
27356 entry = entry.next;
27357 }
27358 if (state.corkedRequestsFree) {
27359 state.corkedRequestsFree.next = _this;
27360 } else {
27361 state.corkedRequestsFree = _this;
27362 }
27363 };
27364 }
27365 }).call(this,require('_process'))
27366 },{"./_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){
27367 'use strict';
27368
27369 var Buffer = require('buffer').Buffer;
27370 /*<replacement>*/
27371 var bufferShim = require('buffer-shims');
27372 /*</replacement>*/
27373
27374 module.exports = BufferList;
27375
27376 function BufferList() {
27377 this.head = null;
27378 this.tail = null;
27379 this.length = 0;
27380 }
27381
27382 BufferList.prototype.push = function (v) {
27383 var entry = { data: v, next: null };
27384 if (this.length > 0) this.tail.next = entry;else this.head = entry;
27385 this.tail = entry;
27386 ++this.length;
27387 };
27388
27389 BufferList.prototype.unshift = function (v) {
27390 var entry = { data: v, next: this.head };
27391 if (this.length === 0) this.tail = entry;
27392 this.head = entry;
27393 ++this.length;
27394 };
27395
27396 BufferList.prototype.shift = function () {
27397 if (this.length === 0) return;
27398 var ret = this.head.data;
27399 if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
27400 --this.length;
27401 return ret;
27402 };
27403
27404 BufferList.prototype.clear = function () {
27405 this.head = this.tail = null;
27406 this.length = 0;
27407 };
27408
27409 BufferList.prototype.join = function (s) {
27410 if (this.length === 0) return '';
27411 var p = this.head;
27412 var ret = '' + p.data;
27413 while (p = p.next) {
27414 ret += s + p.data;
27415 }return ret;
27416 };
27417
27418 BufferList.prototype.concat = function (n) {
27419 if (this.length === 0) return bufferShim.alloc(0);
27420 if (this.length === 1) return this.head.data;
27421 var ret = bufferShim.allocUnsafe(n >>> 0);
27422 var p = this.head;
27423 var i = 0;
27424 while (p) {
27425 p.data.copy(ret, i);
27426 i += p.data.length;
27427 p = p.next;
27428 }
27429 return ret;
27430 };
27431 },{"buffer":5,"buffer-shims":4}],21:[function(require,module,exports){
27432 module.exports = require("./lib/_stream_passthrough.js")
27433
27434 },{"./lib/_stream_passthrough.js":16}],22:[function(require,module,exports){
27435 (function (process){
27436 var Stream = (function (){
27437 try {
27438 return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify
27439 } catch(_){}
27440 }());
27441 exports = module.exports = require('./lib/_stream_readable.js');
27442 exports.Stream = Stream || exports;
27443 exports.Readable = exports;
27444 exports.Writable = require('./lib/_stream_writable.js');
27445 exports.Duplex = require('./lib/_stream_duplex.js');
27446 exports.Transform = require('./lib/_stream_transform.js');
27447 exports.PassThrough = require('./lib/_stream_passthrough.js');
27448
27449 if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) {
27450 module.exports = Stream;
27451 }
27452
27453 }).call(this,require('_process'))
27454 },{"./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){
27455 module.exports = require("./lib/_stream_transform.js")
27456
27457 },{"./lib/_stream_transform.js":18}],24:[function(require,module,exports){
27458 module.exports = require("./lib/_stream_writable.js")
27459
27460 },{"./lib/_stream_writable.js":19}],25:[function(require,module,exports){
27461 // Copyright Joyent, Inc. and other Node contributors.
27462 //
27463 // Permission is hereby granted, free of charge, to any person obtaining a
27464 // copy of this software and associated documentation files (the
27465 // "Software"), to deal in the Software without restriction, including
27466 // without limitation the rights to use, copy, modify, merge, publish,
27467 // distribute, sublicense, and/or sell copies of the Software, and to permit
27468 // persons to whom the Software is furnished to do so, subject to the
27469 // following conditions:
27470 //
27471 // The above copyright notice and this permission notice shall be included
27472 // in all copies or substantial portions of the Software.
27473 //
27474 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
27475 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27476 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
27477 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
27478 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
27479 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
27480 // USE OR OTHER DEALINGS IN THE SOFTWARE.
27481
27482 module.exports = Stream;
27483
27484 var EE = require('events').EventEmitter;
27485 var inherits = require('inherits');
27486
27487 inherits(Stream, EE);
27488 Stream.Readable = require('readable-stream/readable.js');
27489 Stream.Writable = require('readable-stream/writable.js');
27490 Stream.Duplex = require('readable-stream/duplex.js');
27491 Stream.Transform = require('readable-stream/transform.js');
27492 Stream.PassThrough = require('readable-stream/passthrough.js');
27493
27494 // Backwards-compat with node 0.4.x
27495 Stream.Stream = Stream;
27496
27497
27498
27499 // old-style streams. Note that the pipe method (the only relevant
27500 // part of this class) is overridden in the Readable class.
27501
27502 function Stream() {
27503 EE.call(this);
27504 }
27505
27506 Stream.prototype.pipe = function(dest, options) {
27507 var source = this;
27508
27509 function ondata(chunk) {
27510 if (dest.writable) {
27511 if (false === dest.write(chunk) && source.pause) {
27512 source.pause();
27513 }
27514 }
27515 }
27516
27517 source.on('data', ondata);
27518
27519 function ondrain() {
27520 if (source.readable && source.resume) {
27521 source.resume();
27522 }
27523 }
27524
27525 dest.on('drain', ondrain);
27526
27527 // If the 'end' option is not supplied, dest.end() will be called when
27528 // source gets the 'end' or 'close' events. Only dest.end() once.
27529 if (!dest._isStdio && (!options || options.end !== false)) {
27530 source.on('end', onend);
27531 source.on('close', onclose);
27532 }
27533
27534 var didOnEnd = false;
27535 function onend() {
27536 if (didOnEnd) return;
27537 didOnEnd = true;
27538
27539 dest.end();
27540 }
27541
27542
27543 function onclose() {
27544 if (didOnEnd) return;
27545 didOnEnd = true;
27546
27547 if (typeof dest.destroy === 'function') dest.destroy();
27548 }
27549
27550 // don't leave dangling pipes when there are errors.
27551 function onerror(er) {
27552 cleanup();
27553 if (EE.listenerCount(this, 'error') === 0) {
27554 throw er; // Unhandled stream error in pipe.
27555 }
27556 }
27557
27558 source.on('error', onerror);
27559 dest.on('error', onerror);
27560
27561 // remove all the event listeners that were added.
27562 function cleanup() {
27563 source.removeListener('data', ondata);
27564 dest.removeListener('drain', ondrain);
27565
27566 source.removeListener('end', onend);
27567 source.removeListener('close', onclose);
27568
27569 source.removeListener('error', onerror);
27570 dest.removeListener('error', onerror);
27571
27572 source.removeListener('end', cleanup);
27573 source.removeListener('close', cleanup);
27574
27575 dest.removeListener('close', cleanup);
27576 }
27577
27578 source.on('end', cleanup);
27579 source.on('close', cleanup);
27580
27581 dest.on('close', cleanup);
27582
27583 dest.emit('pipe', source);
27584
27585 // Allow for unix-like usage: A.pipe(B).pipe(C)
27586 return dest;
27587 };
27588
27589 },{"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){
27590 // Copyright Joyent, Inc. and other Node contributors.
27591 //
27592 // Permission is hereby granted, free of charge, to any person obtaining a
27593 // copy of this software and associated documentation files (the
27594 // "Software"), to deal in the Software without restriction, including
27595 // without limitation the rights to use, copy, modify, merge, publish,
27596 // distribute, sublicense, and/or sell copies of the Software, and to permit
27597 // persons to whom the Software is furnished to do so, subject to the
27598 // following conditions:
27599 //
27600 // The above copyright notice and this permission notice shall be included
27601 // in all copies or substantial portions of the Software.
27602 //
27603 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
27604 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27605 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
27606 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
27607 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
27608 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
27609 // USE OR OTHER DEALINGS IN THE SOFTWARE.
27610
27611 var Buffer = require('buffer').Buffer;
27612
27613 var isBufferEncoding = Buffer.isEncoding
27614 || function(encoding) {
27615 switch (encoding && encoding.toLowerCase()) {
27616 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;
27617 default: return false;
27618 }
27619 }
27620
27621
27622 function assertEncoding(encoding) {
27623 if (encoding && !isBufferEncoding(encoding)) {
27624 throw new Error('Unknown encoding: ' + encoding);
27625 }
27626 }
27627
27628 // StringDecoder provides an interface for efficiently splitting a series of
27629 // buffers into a series of JS strings without breaking apart multi-byte
27630 // characters. CESU-8 is handled as part of the UTF-8 encoding.
27631 //
27632 // @TODO Handling all encodings inside a single object makes it very difficult
27633 // to reason about this code, so it should be split up in the future.
27634 // @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code
27635 // points as used by CESU-8.
27636 var StringDecoder = exports.StringDecoder = function(encoding) {
27637 this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
27638 assertEncoding(encoding);
27639 switch (this.encoding) {
27640 case 'utf8':
27641 // CESU-8 represents each of Surrogate Pair by 3-bytes
27642 this.surrogateSize = 3;
27643 break;
27644 case 'ucs2':
27645 case 'utf16le':
27646 // UTF-16 represents each of Surrogate Pair by 2-bytes
27647 this.surrogateSize = 2;
27648 this.detectIncompleteChar = utf16DetectIncompleteChar;
27649 break;
27650 case 'base64':
27651 // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
27652 this.surrogateSize = 3;
27653 this.detectIncompleteChar = base64DetectIncompleteChar;
27654 break;
27655 default:
27656 this.write = passThroughWrite;
27657 return;
27658 }
27659
27660 // Enough space to store all bytes of a single character. UTF-8 needs 4
27661 // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).
27662 this.charBuffer = new Buffer(6);
27663 // Number of bytes received for the current incomplete multi-byte character.
27664 this.charReceived = 0;
27665 // Number of bytes expected for the current incomplete multi-byte character.
27666 this.charLength = 0;
27667 };
27668
27669
27670 // write decodes the given buffer and returns it as JS string that is
27671 // guaranteed to not contain any partial multi-byte characters. Any partial
27672 // character found at the end of the buffer is buffered up, and will be
27673 // returned when calling write again with the remaining bytes.
27674 //
27675 // Note: Converting a Buffer containing an orphan surrogate to a String
27676 // currently works, but converting a String to a Buffer (via `new Buffer`, or
27677 // Buffer#write) will replace incomplete surrogates with the unicode
27678 // replacement character. See https://codereview.chromium.org/121173009/ .
27679 StringDecoder.prototype.write = function(buffer) {
27680 var charStr = '';
27681 // if our last write ended with an incomplete multibyte character
27682 while (this.charLength) {
27683 // determine how many remaining bytes this buffer has to offer for this char
27684 var available = (buffer.length >= this.charLength - this.charReceived) ?
27685 this.charLength - this.charReceived :
27686 buffer.length;
27687
27688 // add the new bytes to the char buffer
27689 buffer.copy(this.charBuffer, this.charReceived, 0, available);
27690 this.charReceived += available;
27691
27692 if (this.charReceived < this.charLength) {
27693 // still not enough chars in this buffer? wait for more ...
27694 return '';
27695 }
27696
27697 // remove bytes belonging to the current character from the buffer
27698 buffer = buffer.slice(available, buffer.length);
27699
27700 // get the character that was split
27701 charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
27702
27703 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
27704 var charCode = charStr.charCodeAt(charStr.length - 1);
27705 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
27706 this.charLength += this.surrogateSize;
27707 charStr = '';
27708 continue;
27709 }
27710 this.charReceived = this.charLength = 0;
27711
27712 // if there are no more bytes in this buffer, just emit our char
27713 if (buffer.length === 0) {
27714 return charStr;
27715 }
27716 break;
27717 }
27718
27719 // determine and set charLength / charReceived
27720 this.detectIncompleteChar(buffer);
27721
27722 var end = buffer.length;
27723 if (this.charLength) {
27724 // buffer the incomplete character bytes we got
27725 buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);
27726 end -= this.charReceived;
27727 }
27728
27729 charStr += buffer.toString(this.encoding, 0, end);
27730
27731 var end = charStr.length - 1;
27732 var charCode = charStr.charCodeAt(end);
27733 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
27734 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
27735 var size = this.surrogateSize;
27736 this.charLength += size;
27737 this.charReceived += size;
27738 this.charBuffer.copy(this.charBuffer, size, 0, size);
27739 buffer.copy(this.charBuffer, 0, 0, size);
27740 return charStr.substring(0, end);
27741 }
27742
27743 // or just emit the charStr
27744 return charStr;
27745 };
27746
27747 // detectIncompleteChar determines if there is an incomplete UTF-8 character at
27748 // the end of the given buffer. If so, it sets this.charLength to the byte
27749 // length that character, and sets this.charReceived to the number of bytes
27750 // that are available for this character.
27751 StringDecoder.prototype.detectIncompleteChar = function(buffer) {
27752 // determine how many bytes we have to check at the end of this buffer
27753 var i = (buffer.length >= 3) ? 3 : buffer.length;
27754
27755 // Figure out if one of the last i bytes of our buffer announces an
27756 // incomplete char.
27757 for (; i > 0; i--) {
27758 var c = buffer[buffer.length - i];
27759
27760 // See http://en.wikipedia.org/wiki/UTF-8#Description
27761
27762 // 110XXXXX
27763 if (i == 1 && c >> 5 == 0x06) {
27764 this.charLength = 2;
27765 break;
27766 }
27767
27768 // 1110XXXX
27769 if (i <= 2 && c >> 4 == 0x0E) {
27770 this.charLength = 3;
27771 break;
27772 }
27773
27774 // 11110XXX
27775 if (i <= 3 && c >> 3 == 0x1E) {
27776 this.charLength = 4;
27777 break;
27778 }
27779 }
27780 this.charReceived = i;
27781 };
27782
27783 StringDecoder.prototype.end = function(buffer) {
27784 var res = '';
27785 if (buffer && buffer.length)
27786 res = this.write(buffer);
27787
27788 if (this.charReceived) {
27789 var cr = this.charReceived;
27790 var buf = this.charBuffer;
27791 var enc = this.encoding;
27792 res += buf.slice(0, cr).toString(enc);
27793 }
27794
27795 return res;
27796 };
27797
27798 function passThroughWrite(buffer) {
27799 return buffer.toString(this.encoding);
27800 }
27801
27802 function utf16DetectIncompleteChar(buffer) {
27803 this.charReceived = buffer.length % 2;
27804 this.charLength = this.charReceived ? 2 : 0;
27805 }
27806
27807 function base64DetectIncompleteChar(buffer) {
27808 this.charReceived = buffer.length % 3;
27809 this.charLength = this.charReceived ? 3 : 0;
27810 }
27811
27812 },{"buffer":5}],27:[function(require,module,exports){
27813 (function (global){
27814
27815 /**
27816 * Module exports.
27817 */
27818
27819 module.exports = deprecate;
27820
27821 /**
27822 * Mark that a method should not be used.
27823 * Returns a modified function which warns once by default.
27824 *
27825 * If `localStorage.noDeprecation = true` is set, then it is a no-op.
27826 *
27827 * If `localStorage.throwDeprecation = true` is set, then deprecated functions
27828 * will throw an Error when invoked.
27829 *
27830 * If `localStorage.traceDeprecation = true` is set, then deprecated functions
27831 * will invoke `console.trace()` instead of `console.error()`.
27832 *
27833 * @param {Function} fn - the function to deprecate
27834 * @param {String} msg - the string to print to the console when `fn` is invoked
27835 * @returns {Function} a new "deprecated" version of `fn`
27836 * @api public
27837 */
27838
27839 function deprecate (fn, msg) {
27840 if (config('noDeprecation')) {
27841 return fn;
27842 }
27843
27844 var warned = false;
27845 function deprecated() {
27846 if (!warned) {
27847 if (config('throwDeprecation')) {
27848 throw new Error(msg);
27849 } else if (config('traceDeprecation')) {
27850 console.trace(msg);
27851 } else {
27852 console.warn(msg);
27853 }
27854 warned = true;
27855 }
27856 return fn.apply(this, arguments);
27857 }
27858
27859 return deprecated;
27860 }
27861
27862 /**
27863 * Checks `localStorage` for boolean values for the given `name`.
27864 *
27865 * @param {String} name
27866 * @returns {Boolean}
27867 * @api private
27868 */
27869
27870 function config (name) {
27871 // accessing global.localStorage can trigger a DOMException in sandboxed iframes
27872 try {
27873 if (!global.localStorage) return false;
27874 } catch (_) {
27875 return false;
27876 }
27877 var val = global.localStorage[name];
27878 if (null == val) return false;
27879 return String(val).toLowerCase() === 'true';
27880 }
27881
27882 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
27883 },{}],28:[function(require,module,exports){
27884 arguments[4][9][0].apply(exports,arguments)
27885 },{"dup":9}],29:[function(require,module,exports){
27886 module.exports = function isBuffer(arg) {
27887 return arg && typeof arg === 'object'
27888 && typeof arg.copy === 'function'
27889 && typeof arg.fill === 'function'
27890 && typeof arg.readUInt8 === 'function';
27891 }
27892 },{}],30:[function(require,module,exports){
27893 (function (process,global){
27894 // Copyright Joyent, Inc. and other Node contributors.
27895 //
27896 // Permission is hereby granted, free of charge, to any person obtaining a
27897 // copy of this software and associated documentation files (the
27898 // "Software"), to deal in the Software without restriction, including
27899 // without limitation the rights to use, copy, modify, merge, publish,
27900 // distribute, sublicense, and/or sell copies of the Software, and to permit
27901 // persons to whom the Software is furnished to do so, subject to the
27902 // following conditions:
27903 //
27904 // The above copyright notice and this permission notice shall be included
27905 // in all copies or substantial portions of the Software.
27906 //
27907 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
27908 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27909 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
27910 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
27911 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
27912 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
27913 // USE OR OTHER DEALINGS IN THE SOFTWARE.
27914
27915 var formatRegExp = /%[sdj%]/g;
27916 exports.format = function(f) {
27917 if (!isString(f)) {
27918 var objects = [];
27919 for (var i = 0; i < arguments.length; i++) {
27920 objects.push(inspect(arguments[i]));
27921 }
27922 return objects.join(' ');
27923 }
27924
27925 var i = 1;
27926 var args = arguments;
27927 var len = args.length;
27928 var str = String(f).replace(formatRegExp, function(x) {
27929 if (x === '%%') return '%';
27930 if (i >= len) return x;
27931 switch (x) {
27932 case '%s': return String(args[i++]);
27933 case '%d': return Number(args[i++]);
27934 case '%j':
27935 try {
27936 return JSON.stringify(args[i++]);
27937 } catch (_) {
27938 return '[Circular]';
27939 }
27940 default:
27941 return x;
27942 }
27943 });
27944 for (var x = args[i]; i < len; x = args[++i]) {
27945 if (isNull(x) || !isObject(x)) {
27946 str += ' ' + x;
27947 } else {
27948 str += ' ' + inspect(x);
27949 }
27950 }
27951 return str;
27952 };
27953
27954
27955 // Mark that a method should not be used.
27956 // Returns a modified function which warns once by default.
27957 // If --no-deprecation is set, then it is a no-op.
27958 exports.deprecate = function(fn, msg) {
27959 // Allow for deprecating things in the process of starting up.
27960 if (isUndefined(global.process)) {
27961 return function() {
27962 return exports.deprecate(fn, msg).apply(this, arguments);
27963 };
27964 }
27965
27966 if (process.noDeprecation === true) {
27967 return fn;
27968 }
27969
27970 var warned = false;
27971 function deprecated() {
27972 if (!warned) {
27973 if (process.throwDeprecation) {
27974 throw new Error(msg);
27975 } else if (process.traceDeprecation) {
27976 console.trace(msg);
27977 } else {
27978 console.error(msg);
27979 }
27980 warned = true;
27981 }
27982 return fn.apply(this, arguments);
27983 }
27984
27985 return deprecated;
27986 };
27987
27988
27989 var debugs = {};
27990 var debugEnviron;
27991 exports.debuglog = function(set) {
27992 if (isUndefined(debugEnviron))
27993 debugEnviron = process.env.NODE_DEBUG || '';
27994 set = set.toUpperCase();
27995 if (!debugs[set]) {
27996 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
27997 var pid = process.pid;
27998 debugs[set] = function() {
27999 var msg = exports.format.apply(exports, arguments);
28000 console.error('%s %d: %s', set, pid, msg);
28001 };
28002 } else {
28003 debugs[set] = function() {};
28004 }
28005 }
28006 return debugs[set];
28007 };
28008
28009
28010 /**
28011 * Echos the value of a value. Trys to print the value out
28012 * in the best way possible given the different types.
28013 *
28014 * @param {Object} obj The object to print out.
28015 * @param {Object} opts Optional options object that alters the output.
28016 */
28017 /* legacy: obj, showHidden, depth, colors*/
28018 function inspect(obj, opts) {
28019 // default options
28020 var ctx = {
28021 seen: [],
28022 stylize: stylizeNoColor
28023 };
28024 // legacy...
28025 if (arguments.length >= 3) ctx.depth = arguments[2];
28026 if (arguments.length >= 4) ctx.colors = arguments[3];
28027 if (isBoolean(opts)) {
28028 // legacy...
28029 ctx.showHidden = opts;
28030 } else if (opts) {
28031 // got an "options" object
28032 exports._extend(ctx, opts);
28033 }
28034 // set default options
28035 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
28036 if (isUndefined(ctx.depth)) ctx.depth = 2;
28037 if (isUndefined(ctx.colors)) ctx.colors = false;
28038 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
28039 if (ctx.colors) ctx.stylize = stylizeWithColor;
28040 return formatValue(ctx, obj, ctx.depth);
28041 }
28042 exports.inspect = inspect;
28043
28044
28045 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
28046 inspect.colors = {
28047 'bold' : [1, 22],
28048 'italic' : [3, 23],
28049 'underline' : [4, 24],
28050 'inverse' : [7, 27],
28051 'white' : [37, 39],
28052 'grey' : [90, 39],
28053 'black' : [30, 39],
28054 'blue' : [34, 39],
28055 'cyan' : [36, 39],
28056 'green' : [32, 39],
28057 'magenta' : [35, 39],
28058 'red' : [31, 39],
28059 'yellow' : [33, 39]
28060 };
28061
28062 // Don't use 'blue' not visible on cmd.exe
28063 inspect.styles = {
28064 'special': 'cyan',
28065 'number': 'yellow',
28066 'boolean': 'yellow',
28067 'undefined': 'grey',
28068 'null': 'bold',
28069 'string': 'green',
28070 'date': 'magenta',
28071 // "name": intentionally not styling
28072 'regexp': 'red'
28073 };
28074
28075
28076 function stylizeWithColor(str, styleType) {
28077 var style = inspect.styles[styleType];
28078
28079 if (style) {
28080 return '\u001b[' + inspect.colors[style][0] + 'm' + str +
28081 '\u001b[' + inspect.colors[style][1] + 'm';
28082 } else {
28083 return str;
28084 }
28085 }
28086
28087
28088 function stylizeNoColor(str, styleType) {
28089 return str;
28090 }
28091
28092
28093 function arrayToHash(array) {
28094 var hash = {};
28095
28096 array.forEach(function(val, idx) {
28097 hash[val] = true;
28098 });
28099
28100 return hash;
28101 }
28102
28103
28104 function formatValue(ctx, value, recurseTimes) {
28105 // Provide a hook for user-specified inspect functions.
28106 // Check that value is an object with an inspect function on it
28107 if (ctx.customInspect &&
28108 value &&
28109 isFunction(value.inspect) &&
28110 // Filter out the util module, it's inspect function is special
28111 value.inspect !== exports.inspect &&
28112 // Also filter out any prototype objects using the circular check.
28113 !(value.constructor && value.constructor.prototype === value)) {
28114 var ret = value.inspect(recurseTimes, ctx);
28115 if (!isString(ret)) {
28116 ret = formatValue(ctx, ret, recurseTimes);
28117 }
28118 return ret;
28119 }
28120
28121 // Primitive types cannot have properties
28122 var primitive = formatPrimitive(ctx, value);
28123 if (primitive) {
28124 return primitive;
28125 }
28126
28127 // Look up the keys of the object.
28128 var keys = Object.keys(value);
28129 var visibleKeys = arrayToHash(keys);
28130
28131 if (ctx.showHidden) {
28132 keys = Object.getOwnPropertyNames(value);
28133 }
28134
28135 // IE doesn't make error fields non-enumerable
28136 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
28137 if (isError(value)
28138 && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
28139 return formatError(value);
28140 }
28141
28142 // Some type of object without properties can be shortcutted.
28143 if (keys.length === 0) {
28144 if (isFunction(value)) {
28145 var name = value.name ? ': ' + value.name : '';
28146 return ctx.stylize('[Function' + name + ']', 'special');
28147 }
28148 if (isRegExp(value)) {
28149 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
28150 }
28151 if (isDate(value)) {
28152 return ctx.stylize(Date.prototype.toString.call(value), 'date');
28153 }
28154 if (isError(value)) {
28155 return formatError(value);
28156 }
28157 }
28158
28159 var base = '', array = false, braces = ['{', '}'];
28160
28161 // Make Array say that they are Array
28162 if (isArray(value)) {
28163 array = true;
28164 braces = ['[', ']'];
28165 }
28166
28167 // Make functions say that they are functions
28168 if (isFunction(value)) {
28169 var n = value.name ? ': ' + value.name : '';
28170 base = ' [Function' + n + ']';
28171 }
28172
28173 // Make RegExps say that they are RegExps
28174 if (isRegExp(value)) {
28175 base = ' ' + RegExp.prototype.toString.call(value);
28176 }
28177
28178 // Make dates with properties first say the date
28179 if (isDate(value)) {
28180 base = ' ' + Date.prototype.toUTCString.call(value);
28181 }
28182
28183 // Make error with message first say the error
28184 if (isError(value)) {
28185 base = ' ' + formatError(value);
28186 }
28187
28188 if (keys.length === 0 && (!array || value.length == 0)) {
28189 return braces[0] + base + braces[1];
28190 }
28191
28192 if (recurseTimes < 0) {
28193 if (isRegExp(value)) {
28194 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
28195 } else {
28196 return ctx.stylize('[Object]', 'special');
28197 }
28198 }
28199
28200 ctx.seen.push(value);
28201
28202 var output;
28203 if (array) {
28204 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
28205 } else {
28206 output = keys.map(function(key) {
28207 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
28208 });
28209 }
28210
28211 ctx.seen.pop();
28212
28213 return reduceToSingleString(output, base, braces);
28214 }
28215
28216
28217 function formatPrimitive(ctx, value) {
28218 if (isUndefined(value))
28219 return ctx.stylize('undefined', 'undefined');
28220 if (isString(value)) {
28221 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
28222 .replace(/'/g, "\\'")
28223 .replace(/\\"/g, '"') + '\'';
28224 return ctx.stylize(simple, 'string');
28225 }
28226 if (isNumber(value))
28227 return ctx.stylize('' + value, 'number');
28228 if (isBoolean(value))
28229 return ctx.stylize('' + value, 'boolean');
28230 // For some reason typeof null is "object", so special case here.
28231 if (isNull(value))
28232 return ctx.stylize('null', 'null');
28233 }
28234
28235
28236 function formatError(value) {
28237 return '[' + Error.prototype.toString.call(value) + ']';
28238 }
28239
28240
28241 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
28242 var output = [];
28243 for (var i = 0, l = value.length; i < l; ++i) {
28244 if (hasOwnProperty(value, String(i))) {
28245 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
28246 String(i), true));
28247 } else {
28248 output.push('');
28249 }
28250 }
28251 keys.forEach(function(key) {
28252 if (!key.match(/^\d+$/)) {
28253 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
28254 key, true));
28255 }
28256 });
28257 return output;
28258 }
28259
28260
28261 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
28262 var name, str, desc;
28263 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
28264 if (desc.get) {
28265 if (desc.set) {
28266 str = ctx.stylize('[Getter/Setter]', 'special');
28267 } else {
28268 str = ctx.stylize('[Getter]', 'special');
28269 }
28270 } else {
28271 if (desc.set) {
28272 str = ctx.stylize('[Setter]', 'special');
28273 }
28274 }
28275 if (!hasOwnProperty(visibleKeys, key)) {
28276 name = '[' + key + ']';
28277 }
28278 if (!str) {
28279 if (ctx.seen.indexOf(desc.value) < 0) {
28280 if (isNull(recurseTimes)) {
28281 str = formatValue(ctx, desc.value, null);
28282 } else {
28283 str = formatValue(ctx, desc.value, recurseTimes - 1);
28284 }
28285 if (str.indexOf('\n') > -1) {
28286 if (array) {
28287 str = str.split('\n').map(function(line) {
28288 return ' ' + line;
28289 }).join('\n').substr(2);
28290 } else {
28291 str = '\n' + str.split('\n').map(function(line) {
28292 return ' ' + line;
28293 }).join('\n');
28294 }
28295 }
28296 } else {
28297 str = ctx.stylize('[Circular]', 'special');
28298 }
28299 }
28300 if (isUndefined(name)) {
28301 if (array && key.match(/^\d+$/)) {
28302 return str;
28303 }
28304 name = JSON.stringify('' + key);
28305 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
28306 name = name.substr(1, name.length - 2);
28307 name = ctx.stylize(name, 'name');
28308 } else {
28309 name = name.replace(/'/g, "\\'")
28310 .replace(/\\"/g, '"')
28311 .replace(/(^"|"$)/g, "'");
28312 name = ctx.stylize(name, 'string');
28313 }
28314 }
28315
28316 return name + ': ' + str;
28317 }
28318
28319
28320 function reduceToSingleString(output, base, braces) {
28321 var numLinesEst = 0;
28322 var length = output.reduce(function(prev, cur) {
28323 numLinesEst++;
28324 if (cur.indexOf('\n') >= 0) numLinesEst++;
28325 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
28326 }, 0);
28327
28328 if (length > 60) {
28329 return braces[0] +
28330 (base === '' ? '' : base + '\n ') +
28331 ' ' +
28332 output.join(',\n ') +
28333 ' ' +
28334 braces[1];
28335 }
28336
28337 return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
28338 }
28339
28340
28341 // NOTE: These type checking functions intentionally don't use `instanceof`
28342 // because it is fragile and can be easily faked with `Object.create()`.
28343 function isArray(ar) {
28344 return Array.isArray(ar);
28345 }
28346 exports.isArray = isArray;
28347
28348 function isBoolean(arg) {
28349 return typeof arg === 'boolean';
28350 }
28351 exports.isBoolean = isBoolean;
28352
28353 function isNull(arg) {
28354 return arg === null;
28355 }
28356 exports.isNull = isNull;
28357
28358 function isNullOrUndefined(arg) {
28359 return arg == null;
28360 }
28361 exports.isNullOrUndefined = isNullOrUndefined;
28362
28363 function isNumber(arg) {
28364 return typeof arg === 'number';
28365 }
28366 exports.isNumber = isNumber;
28367
28368 function isString(arg) {
28369 return typeof arg === 'string';
28370 }
28371 exports.isString = isString;
28372
28373 function isSymbol(arg) {
28374 return typeof arg === 'symbol';
28375 }
28376 exports.isSymbol = isSymbol;
28377
28378 function isUndefined(arg) {
28379 return arg === void 0;
28380 }
28381 exports.isUndefined = isUndefined;
28382
28383 function isRegExp(re) {
28384 return isObject(re) && objectToString(re) === '[object RegExp]';
28385 }
28386 exports.isRegExp = isRegExp;
28387
28388 function isObject(arg) {
28389 return typeof arg === 'object' && arg !== null;
28390 }
28391 exports.isObject = isObject;
28392
28393 function isDate(d) {
28394 return isObject(d) && objectToString(d) === '[object Date]';
28395 }
28396 exports.isDate = isDate;
28397
28398 function isError(e) {
28399 return isObject(e) &&
28400 (objectToString(e) === '[object Error]' || e instanceof Error);
28401 }
28402 exports.isError = isError;
28403
28404 function isFunction(arg) {
28405 return typeof arg === 'function';
28406 }
28407 exports.isFunction = isFunction;
28408
28409 function isPrimitive(arg) {
28410 return arg === null ||
28411 typeof arg === 'boolean' ||
28412 typeof arg === 'number' ||
28413 typeof arg === 'string' ||
28414 typeof arg === 'symbol' || // ES6 symbol
28415 typeof arg === 'undefined';
28416 }
28417 exports.isPrimitive = isPrimitive;
28418
28419 exports.isBuffer = require('./support/isBuffer');
28420
28421 function objectToString(o) {
28422 return Object.prototype.toString.call(o);
28423 }
28424
28425
28426 function pad(n) {
28427 return n < 10 ? '0' + n.toString(10) : n.toString(10);
28428 }
28429
28430
28431 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
28432 'Oct', 'Nov', 'Dec'];
28433
28434 // 26 Feb 16:19:34
28435 function timestamp() {
28436 var d = new Date();
28437 var time = [pad(d.getHours()),
28438 pad(d.getMinutes()),
28439 pad(d.getSeconds())].join(':');
28440 return [d.getDate(), months[d.getMonth()], time].join(' ');
28441 }
28442
28443
28444 // log is just a thin wrapper to console.log that prepends a timestamp
28445 exports.log = function() {
28446 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
28447 };
28448
28449
28450 /**
28451 * Inherit the prototype methods from one constructor into another.
28452 *
28453 * The Function.prototype.inherits from lang.js rewritten as a standalone
28454 * function (not on Function.prototype). NOTE: If this file is to be loaded
28455 * during bootstrapping this function needs to be rewritten using some native
28456 * functions as prototype setup using normal JavaScript does not work as
28457 * expected during bootstrapping (see mirror.js in r114903).
28458 *
28459 * @param {function} ctor Constructor function which needs to inherit the
28460 * prototype.
28461 * @param {function} superCtor Constructor function to inherit prototype from.
28462 */
28463 exports.inherits = require('inherits');
28464
28465 exports._extend = function(origin, add) {
28466 // Don't do anything if add isn't an object
28467 if (!add || !isObject(add)) return origin;
28468
28469 var keys = Object.keys(add);
28470 var i = keys.length;
28471 while (i--) {
28472 origin[keys[i]] = add[keys[i]];
28473 }
28474 return origin;
28475 };
28476
28477 function hasOwnProperty(obj, prop) {
28478 return Object.prototype.hasOwnProperty.call(obj, prop);
28479 }
28480
28481 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
28482 },{"./support/isBuffer":29,"_process":13,"inherits":28}],31:[function(require,module,exports){
28483 (function (Buffer){
28484 const createKeccakHash = require('keccak')
28485 const secp256k1 = require('secp256k1')
28486 const assert = require('assert')
28487 const rlp = require('rlp')
28488 const BN = require('bn.js')
28489 const createHash = require('create-hash')
28490 Object.assign(exports, require('ethjs-util'))
28491
28492 /**
28493 * the max integer that this VM can handle (a ```BN```)
28494 * @var {BN} MAX_INTEGER
28495 */
28496 exports.MAX_INTEGER = new BN('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16)
28497
28498 /**
28499 * 2^256 (a ```BN```)
28500 * @var {BN} TWO_POW256
28501 */
28502 exports.TWO_POW256 = new BN('10000000000000000000000000000000000000000000000000000000000000000', 16)
28503
28504 /**
28505 * SHA3-256 hash of null (a ```String```)
28506 * @var {String} SHA3_NULL_S
28507 */
28508 exports.SHA3_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470'
28509
28510 /**
28511 * SHA3-256 hash of null (a ```Buffer```)
28512 * @var {Buffer} SHA3_NULL
28513 */
28514 exports.SHA3_NULL = Buffer.from(exports.SHA3_NULL_S, 'hex')
28515
28516 /**
28517 * SHA3-256 of an RLP of an empty array (a ```String```)
28518 * @var {String} SHA3_RLP_ARRAY_S
28519 */
28520 exports.SHA3_RLP_ARRAY_S = '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347'
28521
28522 /**
28523 * SHA3-256 of an RLP of an empty array (a ```Buffer```)
28524 * @var {Buffer} SHA3_RLP_ARRAY
28525 */
28526 exports.SHA3_RLP_ARRAY = Buffer.from(exports.SHA3_RLP_ARRAY_S, 'hex')
28527
28528 /**
28529 * SHA3-256 hash of the RLP of null (a ```String```)
28530 * @var {String} SHA3_RLP_S
28531 */
28532 exports.SHA3_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421'
28533
28534 /**
28535 * SHA3-256 hash of the RLP of null (a ```Buffer```)
28536 * @var {Buffer} SHA3_RLP
28537 */
28538 exports.SHA3_RLP = Buffer.from(exports.SHA3_RLP_S, 'hex')
28539
28540 /**
28541 * [`BN`](https://github.com/indutny/bn.js)
28542 * @var {Function}
28543 */
28544 exports.BN = BN
28545
28546 /**
28547 * [`rlp`](https://github.com/ethereumjs/rlp)
28548 * @var {Function}
28549 */
28550 exports.rlp = rlp
28551
28552 /**
28553 * [`secp256k1`](https://github.com/cryptocoinjs/secp256k1-node/)
28554 * @var {Object}
28555 */
28556 exports.secp256k1 = secp256k1
28557
28558 /**
28559 * Returns a buffer filled with 0s
28560 * @method zeros
28561 * @param {Number} bytes the number of bytes the buffer should be
28562 * @return {Buffer}
28563 */
28564 exports.zeros = function (bytes) {
28565 return Buffer.allocUnsafe(bytes).fill(0)
28566 }
28567
28568 /**
28569 * Left Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
28570 * Or it truncates the beginning if it exceeds.
28571 * @method lsetLength
28572 * @param {Buffer|Array} msg the value to pad
28573 * @param {Number} length the number of bytes the output should be
28574 * @param {Boolean} [right=false] whether to start padding form the left or right
28575 * @return {Buffer|Array}
28576 */
28577 exports.setLengthLeft = exports.setLength = function (msg, length, right) {
28578 var buf = exports.zeros(length)
28579 msg = exports.toBuffer(msg)
28580 if (right) {
28581 if (msg.length < length) {
28582 msg.copy(buf)
28583 return buf
28584 }
28585 return msg.slice(0, length)
28586 } else {
28587 if (msg.length < length) {
28588 msg.copy(buf, length - msg.length)
28589 return buf
28590 }
28591 return msg.slice(-length)
28592 }
28593 }
28594
28595 /**
28596 * Right Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
28597 * Or it truncates the beginning if it exceeds.
28598 * @param {Buffer|Array} msg the value to pad
28599 * @param {Number} length the number of bytes the output should be
28600 * @return {Buffer|Array}
28601 */
28602 exports.setLengthRight = function (msg, length) {
28603 return exports.setLength(msg, length, true)
28604 }
28605
28606 /**
28607 * Trims leading zeros from a `Buffer` or an `Array`
28608 * @param {Buffer|Array|String} a
28609 * @return {Buffer|Array|String}
28610 */
28611 exports.unpad = exports.stripZeros = function (a) {
28612 a = exports.stripHexPrefix(a)
28613 var first = a[0]
28614 while (a.length > 0 && first.toString() === '0') {
28615 a = a.slice(1)
28616 first = a[0]
28617 }
28618 return a
28619 }
28620 /**
28621 * 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.
28622 * @param {*} v the value
28623 */
28624 exports.toBuffer = function (v) {
28625 if (!Buffer.isBuffer(v)) {
28626 if (Array.isArray(v)) {
28627 v = Buffer.from(v)
28628 } else if (typeof v === 'string') {
28629 if (exports.isHexPrefixed(v)) {
28630 v = Buffer.from(exports.padToEven(exports.stripHexPrefix(v)), 'hex')
28631 } else {
28632 v = Buffer.from(v)
28633 }
28634 } else if (typeof v === 'number') {
28635 v = exports.intToBuffer(v)
28636 } else if (v === null || v === undefined) {
28637 v = Buffer.allocUnsafe(0)
28638 } else if (v.toArray) {
28639 // converts a BN to a Buffer
28640 v = Buffer.from(v.toArray())
28641 } else {
28642 throw new Error('invalid type')
28643 }
28644 }
28645 return v
28646 }
28647
28648 /**
28649 * Converts a `Buffer` to a `Number`
28650 * @param {Buffer} buf
28651 * @return {Number}
28652 * @throws If the input number exceeds 53 bits.
28653 */
28654 exports.bufferToInt = function (buf) {
28655 return new BN(exports.toBuffer(buf)).toNumber()
28656 }
28657
28658 /**
28659 * Converts a `Buffer` into a hex `String`
28660 * @param {Buffer} buf
28661 * @return {String}
28662 */
28663 exports.bufferToHex = function (buf) {
28664 buf = exports.toBuffer(buf)
28665 return '0x' + buf.toString('hex')
28666 }
28667
28668 /**
28669 * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.
28670 * @param {Buffer} num
28671 * @return {BN}
28672 */
28673 exports.fromSigned = function (num) {
28674 return new BN(num).fromTwos(256)
28675 }
28676
28677 /**
28678 * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.
28679 * @param {BN} num
28680 * @return {Buffer}
28681 */
28682 exports.toUnsigned = function (num) {
28683 return Buffer.from(num.toTwos(256).toArray())
28684 }
28685
28686 /**
28687 * Creates SHA-3 hash of the input
28688 * @param {Buffer|Array|String|Number} a the input data
28689 * @param {Number} [bits=256] the SHA width
28690 * @return {Buffer}
28691 */
28692 exports.sha3 = function (a, bits) {
28693 a = exports.toBuffer(a)
28694 if (!bits) bits = 256
28695
28696 return createKeccakHash('keccak' + bits).update(a).digest()
28697 }
28698
28699 /**
28700 * Creates SHA256 hash of the input
28701 * @param {Buffer|Array|String|Number} a the input data
28702 * @return {Buffer}
28703 */
28704 exports.sha256 = function (a) {
28705 a = exports.toBuffer(a)
28706 return createHash('sha256').update(a).digest()
28707 }
28708
28709 /**
28710 * Creates RIPEMD160 hash of the input
28711 * @param {Buffer|Array|String|Number} a the input data
28712 * @param {Boolean} padded whether it should be padded to 256 bits or not
28713 * @return {Buffer}
28714 */
28715 exports.ripemd160 = function (a, padded) {
28716 a = exports.toBuffer(a)
28717 var hash = createHash('rmd160').update(a).digest()
28718 if (padded === true) {
28719 return exports.setLength(hash, 32)
28720 } else {
28721 return hash
28722 }
28723 }
28724
28725 /**
28726 * Creates SHA-3 hash of the RLP encoded version of the input
28727 * @param {Buffer|Array|String|Number} a the input data
28728 * @return {Buffer}
28729 */
28730 exports.rlphash = function (a) {
28731 return exports.sha3(rlp.encode(a))
28732 }
28733
28734 /**
28735 * Checks if the private key satisfies the rules of the curve secp256k1.
28736 * @param {Buffer} privateKey
28737 * @return {Boolean}
28738 */
28739 exports.isValidPrivate = function (privateKey) {
28740 return secp256k1.privateKeyVerify(privateKey)
28741 }
28742
28743 /**
28744 * Checks if the public key satisfies the rules of the curve secp256k1
28745 * and the requirements of Ethereum.
28746 * @param {Buffer} publicKey The two points of an uncompressed key, unless sanitize is enabled
28747 * @param {Boolean} [sanitize=false] Accept public keys in other formats
28748 * @return {Boolean}
28749 */
28750 exports.isValidPublic = function (publicKey, sanitize) {
28751 if (publicKey.length === 64) {
28752 // Convert to SEC1 for secp256k1
28753 return secp256k1.publicKeyVerify(Buffer.concat([ Buffer.from([4]), publicKey ]))
28754 }
28755
28756 if (!sanitize) {
28757 return false
28758 }
28759
28760 return secp256k1.publicKeyVerify(publicKey)
28761 }
28762
28763 /**
28764 * Returns the ethereum address of a given public key.
28765 * Accepts "Ethereum public keys" and SEC1 encoded keys.
28766 * @param {Buffer} pubKey The two points of an uncompressed key, unless sanitize is enabled
28767 * @param {Boolean} [sanitize=false] Accept public keys in other formats
28768 * @return {Buffer}
28769 */
28770 exports.pubToAddress = exports.publicToAddress = function (pubKey, sanitize) {
28771 pubKey = exports.toBuffer(pubKey)
28772 if (sanitize && (pubKey.length !== 64)) {
28773 pubKey = secp256k1.publicKeyConvert(pubKey, false).slice(1)
28774 }
28775 assert(pubKey.length === 64)
28776 // Only take the lower 160bits of the hash
28777 return exports.sha3(pubKey).slice(-20)
28778 }
28779
28780 /**
28781 * Returns the ethereum public key of a given private key
28782 * @param {Buffer} privateKey A private key must be 256 bits wide
28783 * @return {Buffer}
28784 */
28785 var privateToPublic = exports.privateToPublic = function (privateKey) {
28786 privateKey = exports.toBuffer(privateKey)
28787 // skip the type flag and use the X, Y points
28788 return secp256k1.publicKeyCreate(privateKey, false).slice(1)
28789 }
28790
28791 /**
28792 * Converts a public key to the Ethereum format.
28793 * @param {Buffer} publicKey
28794 * @return {Buffer}
28795 */
28796 exports.importPublic = function (publicKey) {
28797 publicKey = exports.toBuffer(publicKey)
28798 if (publicKey.length !== 64) {
28799 publicKey = secp256k1.publicKeyConvert(publicKey, false).slice(1)
28800 }
28801 return publicKey
28802 }
28803
28804 /**
28805 * ECDSA sign
28806 * @param {Buffer} msgHash
28807 * @param {Buffer} privateKey
28808 * @return {Object}
28809 */
28810 exports.ecsign = function (msgHash, privateKey) {
28811 var sig = secp256k1.sign(msgHash, privateKey)
28812
28813 var ret = {}
28814 ret.r = sig.signature.slice(0, 32)
28815 ret.s = sig.signature.slice(32, 64)
28816 ret.v = sig.recovery + 27
28817 return ret
28818 }
28819
28820 /**
28821 * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.
28822 * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`
28823 * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key
28824 * used to produce the signature.
28825 * @param message
28826 * @returns {Buffer} hash
28827 */
28828 exports.hashPersonalMessage = function (message) {
28829 var prefix = exports.toBuffer('\u0019Ethereum Signed Message:\n' + message.length.toString())
28830 return exports.sha3(Buffer.concat([prefix, message]))
28831 }
28832
28833 /**
28834 * ECDSA public key recovery from signature
28835 * @param {Buffer} msgHash
28836 * @param {Number} v
28837 * @param {Buffer} r
28838 * @param {Buffer} s
28839 * @return {Buffer} publicKey
28840 */
28841 exports.ecrecover = function (msgHash, v, r, s) {
28842 var signature = Buffer.concat([exports.setLength(r, 32), exports.setLength(s, 32)], 64)
28843 var recovery = v - 27
28844 if (recovery !== 0 && recovery !== 1) {
28845 throw new Error('Invalid signature v value')
28846 }
28847 var senderPubKey = secp256k1.recover(msgHash, signature, recovery)
28848 return secp256k1.publicKeyConvert(senderPubKey, false).slice(1)
28849 }
28850
28851 /**
28852 * Convert signature parameters into the format of `eth_sign` RPC method
28853 * @param {Number} v
28854 * @param {Buffer} r
28855 * @param {Buffer} s
28856 * @return {String} sig
28857 */
28858 exports.toRpcSig = function (v, r, s) {
28859 // NOTE: with potential introduction of chainId this might need to be updated
28860 if (v !== 27 && v !== 28) {
28861 throw new Error('Invalid recovery id')
28862 }
28863
28864 // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin
28865 // FIXME: this might change in the future - https://github.com/ethereum/go-ethereum/issues/2053
28866 return exports.bufferToHex(Buffer.concat([
28867 exports.setLengthLeft(r, 32),
28868 exports.setLengthLeft(s, 32),
28869 exports.toBuffer(v - 27)
28870 ]))
28871 }
28872
28873 /**
28874 * Convert signature format of the `eth_sign` RPC method to signature parameters
28875 * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053
28876 * @param {String} sig
28877 * @return {Object}
28878 */
28879 exports.fromRpcSig = function (sig) {
28880 sig = exports.toBuffer(sig)
28881
28882 // NOTE: with potential introduction of chainId this might need to be updated
28883 if (sig.length !== 65) {
28884 throw new Error('Invalid signature length')
28885 }
28886
28887 var v = sig[64]
28888 // support both versions of `eth_sign` responses
28889 if (v < 27) {
28890 v += 27
28891 }
28892
28893 return {
28894 v: v,
28895 r: sig.slice(0, 32),
28896 s: sig.slice(32, 64)
28897 }
28898 }
28899
28900 /**
28901 * Returns the ethereum address of a given private key
28902 * @param {Buffer} privateKey A private key must be 256 bits wide
28903 * @return {Buffer}
28904 */
28905 exports.privateToAddress = function (privateKey) {
28906 return exports.publicToAddress(privateToPublic(privateKey))
28907 }
28908
28909 /**
28910 * Checks if the address is a valid. Accepts checksummed addresses too
28911 * @param {String} address
28912 * @return {Boolean}
28913 */
28914 exports.isValidAddress = function (address) {
28915 return /^0x[0-9a-fA-F]{40}$/i.test(address)
28916 }
28917
28918 /**
28919 * Returns a checksummed address
28920 * @param {String} address
28921 * @return {String}
28922 */
28923 exports.toChecksumAddress = function (address) {
28924 address = exports.stripHexPrefix(address).toLowerCase()
28925 var hash = exports.sha3(address).toString('hex')
28926 var ret = '0x'
28927
28928 for (var i = 0; i < address.length; i++) {
28929 if (parseInt(hash[i], 16) >= 8) {
28930 ret += address[i].toUpperCase()
28931 } else {
28932 ret += address[i]
28933 }
28934 }
28935
28936 return ret
28937 }
28938
28939 /**
28940 * Checks if the address is a valid checksummed address
28941 * @param {Buffer} address
28942 * @return {Boolean}
28943 */
28944 exports.isValidChecksumAddress = function (address) {
28945 return exports.isValidAddress(address) && (exports.toChecksumAddress(address) === address)
28946 }
28947
28948 /**
28949 * Generates an address of a newly created contract
28950 * @param {Buffer} from the address which is creating this new address
28951 * @param {Buffer} nonce the nonce of the from account
28952 * @return {Buffer}
28953 */
28954 exports.generateAddress = function (from, nonce) {
28955 from = exports.toBuffer(from)
28956 nonce = new BN(nonce)
28957
28958 if (nonce.isZero()) {
28959 // in RLP we want to encode null in the case of zero nonce
28960 // read the RLP documentation for an answer if you dare
28961 nonce = null
28962 } else {
28963 nonce = Buffer.from(nonce.toArray())
28964 }
28965
28966 // Only take the lower 160bits of the hash
28967 return exports.rlphash([from, nonce]).slice(-20)
28968 }
28969
28970 /**
28971 * Returns true if the supplied address belongs to a precompiled account
28972 * @param {Buffer|String} address
28973 * @return {Boolean}
28974 */
28975 exports.isPrecompiled = function (address) {
28976 var a = exports.unpad(address)
28977 return a.length === 1 && a[0] > 0 && a[0] < 5
28978 }
28979
28980 /**
28981 * Adds "0x" to a given `String` if it does not already start with "0x"
28982 * @param {String} str
28983 * @return {String}
28984 */
28985 exports.addHexPrefix = function (str) {
28986 if (typeof str !== 'string') {
28987 return str
28988 }
28989
28990 return exports.isHexPrefixed(str) ? str : '0x' + str
28991 }
28992
28993 /**
28994 * Validate ECDSA signature
28995 * @method isValidSignature
28996 * @param {Buffer} v
28997 * @param {Buffer} r
28998 * @param {Buffer} s
28999 * @param {Boolean} [homestead=true]
29000 * @return {Boolean}
29001 */
29002
29003 exports.isValidSignature = function (v, r, s, homestead) {
29004 const SECP256K1_N_DIV_2 = new BN('7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0', 16)
29005 const SECP256K1_N = new BN('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16)
29006
29007 if (r.length !== 32 || s.length !== 32) {
29008 return false
29009 }
29010
29011 if (v !== 27 && v !== 28) {
29012 return false
29013 }
29014
29015 r = new BN(r)
29016 s = new BN(s)
29017
29018 if (r.isZero() || r.gt(SECP256K1_N) || s.isZero() || s.gt(SECP256K1_N)) {
29019 return false
29020 }
29021
29022 if ((homestead === false) && (new BN(s).cmp(SECP256K1_N_DIV_2) === 1)) {
29023 return false
29024 }
29025
29026 return true
29027 }
29028
29029 /**
29030 * Converts a `Buffer` or `Array` to JSON
29031 * @param {Buffer|Array} ba
29032 * @return {Array|String|null}
29033 */
29034 exports.baToJSON = function (ba) {
29035 if (Buffer.isBuffer(ba)) {
29036 return '0x' + ba.toString('hex')
29037 } else if (ba instanceof Array) {
29038 var array = []
29039 for (var i = 0; i < ba.length; i++) {
29040 array.push(exports.baToJSON(ba[i]))
29041 }
29042 return array
29043 }
29044 }
29045
29046 /**
29047 * Defines properties on a `Object`. It make the assumption that underlying data is binary.
29048 * @param {Object} self the `Object` to define properties on
29049 * @param {Array} fields an array fields to define. Fields can contain:
29050 * * `name` - the name of the properties
29051 * * `length` - the number of bytes the field can have
29052 * * `allowLess` - if the field can be less than the length
29053 * * `allowEmpty`
29054 * @param {*} data data to be validated against the definitions
29055 */
29056 exports.defineProperties = function (self, fields, data) {
29057 self.raw = []
29058 self._fields = []
29059
29060 // attach the `toJSON`
29061 self.toJSON = function (label) {
29062 if (label) {
29063 var obj = {}
29064 self._fields.forEach(function (field) {
29065 obj[field] = '0x' + self[field].toString('hex')
29066 })
29067 return obj
29068 }
29069 return exports.baToJSON(this.raw)
29070 }
29071
29072 self.serialize = function serialize () {
29073 return rlp.encode(self.raw)
29074 }
29075
29076 fields.forEach(function (field, i) {
29077 self._fields.push(field.name)
29078 function getter () {
29079 return self.raw[i]
29080 }
29081 function setter (v) {
29082 v = exports.toBuffer(v)
29083
29084 if (v.toString('hex') === '00' && !field.allowZero) {
29085 v = Buffer.allocUnsafe(0)
29086 }
29087
29088 if (field.allowLess && field.length) {
29089 v = exports.stripZeros(v)
29090 assert(field.length >= v.length, 'The field ' + field.name + ' must not have more ' + field.length + ' bytes')
29091 } else if (!(field.allowZero && v.length === 0) && field.length) {
29092 assert(field.length === v.length, 'The field ' + field.name + ' must have byte length of ' + field.length)
29093 }
29094
29095 self.raw[i] = v
29096 }
29097
29098 Object.defineProperty(self, field.name, {
29099 enumerable: true,
29100 configurable: true,
29101 get: getter,
29102 set: setter
29103 })
29104
29105 if (field.default) {
29106 self[field.name] = field.default
29107 }
29108
29109 // attach alias
29110 if (field.alias) {
29111 Object.defineProperty(self, field.alias, {
29112 enumerable: false,
29113 configurable: true,
29114 set: setter,
29115 get: getter
29116 })
29117 }
29118 })
29119
29120 // if the constuctor is passed data
29121 if (data) {
29122 if (typeof data === 'string') {
29123 data = Buffer.from(exports.stripHexPrefix(data), 'hex')
29124 }
29125
29126 if (Buffer.isBuffer(data)) {
29127 data = rlp.decode(data)
29128 }
29129
29130 if (Array.isArray(data)) {
29131 if (data.length > self._fields.length) {
29132 throw (new Error('wrong number of fields in data'))
29133 }
29134
29135 // make sure all the items are buffers
29136 data.forEach(function (d, i) {
29137 self[self._fields[i]] = exports.toBuffer(d)
29138 })
29139 } else if (typeof data === 'object') {
29140 const keys = Object.keys(data)
29141 fields.forEach(function (field) {
29142 if (keys.indexOf(field.name) !== -1) self[field.name] = data[field.name]
29143 if (keys.indexOf(field.alias) !== -1) self[field.alias] = data[field.alias]
29144 })
29145 } else {
29146 throw new Error('invalid data')
29147 }
29148 }
29149 }
29150
29151 }).call(this,require("buffer").Buffer)
29152 },{"assert":1,"bn.js":33,"buffer":5,"create-hash":36,"ethjs-util":56,"keccak":65,"rlp":72,"secp256k1":73}],32:[function(require,module,exports){
29153 (function (Buffer){
29154 // Reference https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki
29155 // Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
29156 // NOTE: SIGHASH byte ignored AND restricted, truncate before use
29157
29158 function check (buffer) {
29159 if (buffer.length < 8) return false
29160 if (buffer.length > 72) return false
29161 if (buffer[0] !== 0x30) return false
29162 if (buffer[1] !== buffer.length - 2) return false
29163 if (buffer[2] !== 0x02) return false
29164
29165 var lenR = buffer[3]
29166 if (lenR === 0) return false
29167 if (5 + lenR >= buffer.length) return false
29168 if (buffer[4 + lenR] !== 0x02) return false
29169
29170 var lenS = buffer[5 + lenR]
29171 if (lenS === 0) return false
29172 if ((6 + lenR + lenS) !== buffer.length) return false
29173
29174 if (buffer[4] & 0x80) return false
29175 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) return false
29176
29177 if (buffer[lenR + 6] & 0x80) return false
29178 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) return false
29179 return true
29180 }
29181
29182 function decode (buffer) {
29183 if (buffer.length < 8) throw new Error('DER sequence length is too short')
29184 if (buffer.length > 72) throw new Error('DER sequence length is too long')
29185 if (buffer[0] !== 0x30) throw new Error('Expected DER sequence')
29186 if (buffer[1] !== buffer.length - 2) throw new Error('DER sequence length is invalid')
29187 if (buffer[2] !== 0x02) throw new Error('Expected DER integer')
29188
29189 var lenR = buffer[3]
29190 if (lenR === 0) throw new Error('R length is zero')
29191 if (5 + lenR >= buffer.length) throw new Error('R length is too long')
29192 if (buffer[4 + lenR] !== 0x02) throw new Error('Expected DER integer (2)')
29193
29194 var lenS = buffer[5 + lenR]
29195 if (lenS === 0) throw new Error('S length is zero')
29196 if ((6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')
29197
29198 if (buffer[4] & 0x80) throw new Error('R value is negative')
29199 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) throw new Error('R value excessively padded')
29200
29201 if (buffer[lenR + 6] & 0x80) throw new Error('S value is negative')
29202 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) throw new Error('S value excessively padded')
29203
29204 // non-BIP66 - extract R, S values
29205 return {
29206 r: buffer.slice(4, 4 + lenR),
29207 s: buffer.slice(6 + lenR)
29208 }
29209 }
29210
29211 /*
29212 * Expects r and s to be positive DER integers.
29213 *
29214 * The DER format uses the most significant bit as a sign bit (& 0x80).
29215 * If the significant bit is set AND the integer is positive, a 0x00 is prepended.
29216 *
29217 * Examples:
29218 *
29219 * 0 => 0x00
29220 * 1 => 0x01
29221 * -1 => 0xff
29222 * 127 => 0x7f
29223 * -127 => 0x81
29224 * 128 => 0x0080
29225 * -128 => 0x80
29226 * 255 => 0x00ff
29227 * -255 => 0xff01
29228 * 16300 => 0x3fac
29229 * -16300 => 0xc054
29230 * 62300 => 0x00f35c
29231 * -62300 => 0xff0ca4
29232 */
29233 function encode (r, s) {
29234 var lenR = r.length
29235 var lenS = s.length
29236 if (lenR === 0) throw new Error('R length is zero')
29237 if (lenS === 0) throw new Error('S length is zero')
29238 if (lenR > 33) throw new Error('R length is too long')
29239 if (lenS > 33) throw new Error('S length is too long')
29240 if (r[0] & 0x80) throw new Error('R value is negative')
29241 if (s[0] & 0x80) throw new Error('S value is negative')
29242 if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) throw new Error('R value excessively padded')
29243 if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) throw new Error('S value excessively padded')
29244
29245 var signature = new Buffer(6 + lenR + lenS)
29246
29247 // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
29248 signature[0] = 0x30
29249 signature[1] = signature.length - 2
29250 signature[2] = 0x02
29251 signature[3] = r.length
29252 r.copy(signature, 4)
29253 signature[4 + lenR] = 0x02
29254 signature[5 + lenR] = s.length
29255 s.copy(signature, 6 + lenR)
29256
29257 return signature
29258 }
29259
29260 module.exports = {
29261 check: check,
29262 decode: decode,
29263 encode: encode
29264 }
29265
29266 }).call(this,require("buffer").Buffer)
29267 },{"buffer":5}],33:[function(require,module,exports){
29268 (function (module, exports) {
29269 'use strict';
29270
29271 // Utils
29272 function assert (val, msg) {
29273 if (!val) throw new Error(msg || 'Assertion failed');
29274 }
29275
29276 // Could use `inherits` module, but don't want to move from single file
29277 // architecture yet.
29278 function inherits (ctor, superCtor) {
29279 ctor.super_ = superCtor;
29280 var TempCtor = function () {};
29281 TempCtor.prototype = superCtor.prototype;
29282 ctor.prototype = new TempCtor();
29283 ctor.prototype.constructor = ctor;
29284 }
29285
29286 // BN
29287
29288 function BN (number, base, endian) {
29289 if (BN.isBN(number)) {
29290 return number;
29291 }
29292
29293 this.negative = 0;
29294 this.words = null;
29295 this.length = 0;
29296
29297 // Reduction context
29298 this.red = null;
29299
29300 if (number !== null) {
29301 if (base === 'le' || base === 'be') {
29302 endian = base;
29303 base = 10;
29304 }
29305
29306 this._init(number || 0, base || 10, endian || 'be');
29307 }
29308 }
29309 if (typeof module === 'object') {
29310 module.exports = BN;
29311 } else {
29312 exports.BN = BN;
29313 }
29314
29315 BN.BN = BN;
29316 BN.wordSize = 26;
29317
29318 var Buffer;
29319 try {
29320 Buffer = require('buf' + 'fer').Buffer;
29321 } catch (e) {
29322 }
29323
29324 BN.isBN = function isBN (num) {
29325 if (num instanceof BN) {
29326 return true;
29327 }
29328
29329 return num !== null && typeof num === 'object' &&
29330 num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
29331 };
29332
29333 BN.max = function max (left, right) {
29334 if (left.cmp(right) > 0) return left;
29335 return right;
29336 };
29337
29338 BN.min = function min (left, right) {
29339 if (left.cmp(right) < 0) return left;
29340 return right;
29341 };
29342
29343 BN.prototype._init = function init (number, base, endian) {
29344 if (typeof number === 'number') {
29345 return this._initNumber(number, base, endian);
29346 }
29347
29348 if (typeof number === 'object') {
29349 return this._initArray(number, base, endian);
29350 }
29351
29352 if (base === 'hex') {
29353 base = 16;
29354 }
29355 assert(base === (base | 0) && base >= 2 && base <= 36);
29356
29357 number = number.toString().replace(/\s+/g, '');
29358 var start = 0;
29359 if (number[0] === '-') {
29360 start++;
29361 }
29362
29363 if (base === 16) {
29364 this._parseHex(number, start);
29365 } else {
29366 this._parseBase(number, base, start);
29367 }
29368
29369 if (number[0] === '-') {
29370 this.negative = 1;
29371 }
29372
29373 this.strip();
29374
29375 if (endian !== 'le') return;
29376
29377 this._initArray(this.toArray(), base, endian);
29378 };
29379
29380 BN.prototype._initNumber = function _initNumber (number, base, endian) {
29381 if (number < 0) {
29382 this.negative = 1;
29383 number = -number;
29384 }
29385 if (number < 0x4000000) {
29386 this.words = [ number & 0x3ffffff ];
29387 this.length = 1;
29388 } else if (number < 0x10000000000000) {
29389 this.words = [
29390 number & 0x3ffffff,
29391 (number / 0x4000000) & 0x3ffffff
29392 ];
29393 this.length = 2;
29394 } else {
29395 assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)
29396 this.words = [
29397 number & 0x3ffffff,
29398 (number / 0x4000000) & 0x3ffffff,
29399 1
29400 ];
29401 this.length = 3;
29402 }
29403
29404 if (endian !== 'le') return;
29405
29406 // Reverse the bytes
29407 this._initArray(this.toArray(), base, endian);
29408 };
29409
29410 BN.prototype._initArray = function _initArray (number, base, endian) {
29411 // Perhaps a Uint8Array
29412 assert(typeof number.length === 'number');
29413 if (number.length <= 0) {
29414 this.words = [ 0 ];
29415 this.length = 1;
29416 return this;
29417 }
29418
29419 this.length = Math.ceil(number.length / 3);
29420 this.words = new Array(this.length);
29421 for (var i = 0; i < this.length; i++) {
29422 this.words[i] = 0;
29423 }
29424
29425 var j, w;
29426 var off = 0;
29427 if (endian === 'be') {
29428 for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
29429 w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);
29430 this.words[j] |= (w << off) & 0x3ffffff;
29431 this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
29432 off += 24;
29433 if (off >= 26) {
29434 off -= 26;
29435 j++;
29436 }
29437 }
29438 } else if (endian === 'le') {
29439 for (i = 0, j = 0; i < number.length; i += 3) {
29440 w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);
29441 this.words[j] |= (w << off) & 0x3ffffff;
29442 this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
29443 off += 24;
29444 if (off >= 26) {
29445 off -= 26;
29446 j++;
29447 }
29448 }
29449 }
29450 return this.strip();
29451 };
29452
29453 function parseHex (str, start, end) {
29454 var r = 0;
29455 var len = Math.min(str.length, end);
29456 for (var i = start; i < len; i++) {
29457 var c = str.charCodeAt(i) - 48;
29458
29459 r <<= 4;
29460
29461 // 'a' - 'f'
29462 if (c >= 49 && c <= 54) {
29463 r |= c - 49 + 0xa;
29464
29465 // 'A' - 'F'
29466 } else if (c >= 17 && c <= 22) {
29467 r |= c - 17 + 0xa;
29468
29469 // '0' - '9'
29470 } else {
29471 r |= c & 0xf;
29472 }
29473 }
29474 return r;
29475 }
29476
29477 BN.prototype._parseHex = function _parseHex (number, start) {
29478 // Create possibly bigger array to ensure that it fits the number
29479 this.length = Math.ceil((number.length - start) / 6);
29480 this.words = new Array(this.length);
29481 for (var i = 0; i < this.length; i++) {
29482 this.words[i] = 0;
29483 }
29484
29485 var j, w;
29486 // Scan 24-bit chunks and add them to the number
29487 var off = 0;
29488 for (i = number.length - 6, j = 0; i >= start; i -= 6) {
29489 w = parseHex(number, i, i + 6);
29490 this.words[j] |= (w << off) & 0x3ffffff;
29491 // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb
29492 this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
29493 off += 24;
29494 if (off >= 26) {
29495 off -= 26;
29496 j++;
29497 }
29498 }
29499 if (i + 6 !== start) {
29500 w = parseHex(number, start, i + 6);
29501 this.words[j] |= (w << off) & 0x3ffffff;
29502 this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
29503 }
29504 this.strip();
29505 };
29506
29507 function parseBase (str, start, end, mul) {
29508 var r = 0;
29509 var len = Math.min(str.length, end);
29510 for (var i = start; i < len; i++) {
29511 var c = str.charCodeAt(i) - 48;
29512
29513 r *= mul;
29514
29515 // 'a'
29516 if (c >= 49) {
29517 r += c - 49 + 0xa;
29518
29519 // 'A'
29520 } else if (c >= 17) {
29521 r += c - 17 + 0xa;
29522
29523 // '0' - '9'
29524 } else {
29525 r += c;
29526 }
29527 }
29528 return r;
29529 }
29530
29531 BN.prototype._parseBase = function _parseBase (number, base, start) {
29532 // Initialize as zero
29533 this.words = [ 0 ];
29534 this.length = 1;
29535
29536 // Find length of limb in base
29537 for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {
29538 limbLen++;
29539 }
29540 limbLen--;
29541 limbPow = (limbPow / base) | 0;
29542
29543 var total = number.length - start;
29544 var mod = total % limbLen;
29545 var end = Math.min(total, total - mod) + start;
29546
29547 var word = 0;
29548 for (var i = start; i < end; i += limbLen) {
29549 word = parseBase(number, i, i + limbLen, base);
29550
29551 this.imuln(limbPow);
29552 if (this.words[0] + word < 0x4000000) {
29553 this.words[0] += word;
29554 } else {
29555 this._iaddn(word);
29556 }
29557 }
29558
29559 if (mod !== 0) {
29560 var pow = 1;
29561 word = parseBase(number, i, number.length, base);
29562
29563 for (i = 0; i < mod; i++) {
29564 pow *= base;
29565 }
29566
29567 this.imuln(pow);
29568 if (this.words[0] + word < 0x4000000) {
29569 this.words[0] += word;
29570 } else {
29571 this._iaddn(word);
29572 }
29573 }
29574 };
29575
29576 BN.prototype.copy = function copy (dest) {
29577 dest.words = new Array(this.length);
29578 for (var i = 0; i < this.length; i++) {
29579 dest.words[i] = this.words[i];
29580 }
29581 dest.length = this.length;
29582 dest.negative = this.negative;
29583 dest.red = this.red;
29584 };
29585
29586 BN.prototype.clone = function clone () {
29587 var r = new BN(null);
29588 this.copy(r);
29589 return r;
29590 };
29591
29592 BN.prototype._expand = function _expand (size) {
29593 while (this.length < size) {
29594 this.words[this.length++] = 0;
29595 }
29596 return this;
29597 };
29598
29599 // Remove leading `0` from `this`
29600 BN.prototype.strip = function strip () {
29601 while (this.length > 1 && this.words[this.length - 1] === 0) {
29602 this.length--;
29603 }
29604 return this._normSign();
29605 };
29606
29607 BN.prototype._normSign = function _normSign () {
29608 // -0 = 0
29609 if (this.length === 1 && this.words[0] === 0) {
29610 this.negative = 0;
29611 }
29612 return this;
29613 };
29614
29615 BN.prototype.inspect = function inspect () {
29616 return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';
29617 };
29618
29619 /*
29620
29621 var zeros = [];
29622 var groupSizes = [];
29623 var groupBases = [];
29624
29625 var s = '';
29626 var i = -1;
29627 while (++i < BN.wordSize) {
29628 zeros[i] = s;
29629 s += '0';
29630 }
29631 groupSizes[0] = 0;
29632 groupSizes[1] = 0;
29633 groupBases[0] = 0;
29634 groupBases[1] = 0;
29635 var base = 2 - 1;
29636 while (++base < 36 + 1) {
29637 var groupSize = 0;
29638 var groupBase = 1;
29639 while (groupBase < (1 << BN.wordSize) / base) {
29640 groupBase *= base;
29641 groupSize += 1;
29642 }
29643 groupSizes[base] = groupSize;
29644 groupBases[base] = groupBase;
29645 }
29646
29647 */
29648
29649 var zeros = [
29650 '',
29651 '0',
29652 '00',
29653 '000',
29654 '0000',
29655 '00000',
29656 '000000',
29657 '0000000',
29658 '00000000',
29659 '000000000',
29660 '0000000000',
29661 '00000000000',
29662 '000000000000',
29663 '0000000000000',
29664 '00000000000000',
29665 '000000000000000',
29666 '0000000000000000',
29667 '00000000000000000',
29668 '000000000000000000',
29669 '0000000000000000000',
29670 '00000000000000000000',
29671 '000000000000000000000',
29672 '0000000000000000000000',
29673 '00000000000000000000000',
29674 '000000000000000000000000',
29675 '0000000000000000000000000'
29676 ];
29677
29678 var groupSizes = [
29679 0, 0,
29680 25, 16, 12, 11, 10, 9, 8,
29681 8, 7, 7, 7, 7, 6, 6,
29682 6, 6, 6, 6, 6, 5, 5,
29683 5, 5, 5, 5, 5, 5, 5,
29684 5, 5, 5, 5, 5, 5, 5
29685 ];
29686
29687 var groupBases = [
29688 0, 0,
29689 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,
29690 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,
29691 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,
29692 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,
29693 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176
29694 ];
29695
29696 BN.prototype.toString = function toString (base, padding) {
29697 base = base || 10;
29698 padding = padding | 0 || 1;
29699
29700 var out;
29701 if (base === 16 || base === 'hex') {
29702 out = '';
29703 var off = 0;
29704 var carry = 0;
29705 for (var i = 0; i < this.length; i++) {
29706 var w = this.words[i];
29707 var word = (((w << off) | carry) & 0xffffff).toString(16);
29708 carry = (w >>> (24 - off)) & 0xffffff;
29709 if (carry !== 0 || i !== this.length - 1) {
29710 out = zeros[6 - word.length] + word + out;
29711 } else {
29712 out = word + out;
29713 }
29714 off += 2;
29715 if (off >= 26) {
29716 off -= 26;
29717 i--;
29718 }
29719 }
29720 if (carry !== 0) {
29721 out = carry.toString(16) + out;
29722 }
29723 while (out.length % padding !== 0) {
29724 out = '0' + out;
29725 }
29726 if (this.negative !== 0) {
29727 out = '-' + out;
29728 }
29729 return out;
29730 }
29731
29732 if (base === (base | 0) && base >= 2 && base <= 36) {
29733 // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));
29734 var groupSize = groupSizes[base];
29735 // var groupBase = Math.pow(base, groupSize);
29736 var groupBase = groupBases[base];
29737 out = '';
29738 var c = this.clone();
29739 c.negative = 0;
29740 while (!c.isZero()) {
29741 var r = c.modn(groupBase).toString(base);
29742 c = c.idivn(groupBase);
29743
29744 if (!c.isZero()) {
29745 out = zeros[groupSize - r.length] + r + out;
29746 } else {
29747 out = r + out;
29748 }
29749 }
29750 if (this.isZero()) {
29751 out = '0' + out;
29752 }
29753 while (out.length % padding !== 0) {
29754 out = '0' + out;
29755 }
29756 if (this.negative !== 0) {
29757 out = '-' + out;
29758 }
29759 return out;
29760 }
29761
29762 assert(false, 'Base should be between 2 and 36');
29763 };
29764
29765 BN.prototype.toNumber = function toNumber () {
29766 var ret = this.words[0];
29767 if (this.length === 2) {
29768 ret += this.words[1] * 0x4000000;
29769 } else if (this.length === 3 && this.words[2] === 0x01) {
29770 // NOTE: at this stage it is known that the top bit is set
29771 ret += 0x10000000000000 + (this.words[1] * 0x4000000);
29772 } else if (this.length > 2) {
29773 assert(false, 'Number can only safely store up to 53 bits');
29774 }
29775 return (this.negative !== 0) ? -ret : ret;
29776 };
29777
29778 BN.prototype.toJSON = function toJSON () {
29779 return this.toString(16);
29780 };
29781
29782 BN.prototype.toBuffer = function toBuffer (endian, length) {
29783 assert(typeof Buffer !== 'undefined');
29784 return this.toArrayLike(Buffer, endian, length);
29785 };
29786
29787 BN.prototype.toArray = function toArray (endian, length) {
29788 return this.toArrayLike(Array, endian, length);
29789 };
29790
29791 BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {
29792 var byteLength = this.byteLength();
29793 var reqLength = length || Math.max(1, byteLength);
29794 assert(byteLength <= reqLength, 'byte array longer than desired length');
29795 assert(reqLength > 0, 'Requested array length <= 0');
29796
29797 this.strip();
29798 var littleEndian = endian === 'le';
29799 var res = new ArrayType(reqLength);
29800
29801 var b, i;
29802 var q = this.clone();
29803 if (!littleEndian) {
29804 // Assume big-endian
29805 for (i = 0; i < reqLength - byteLength; i++) {
29806 res[i] = 0;
29807 }
29808
29809 for (i = 0; !q.isZero(); i++) {
29810 b = q.andln(0xff);
29811 q.iushrn(8);
29812
29813 res[reqLength - i - 1] = b;
29814 }
29815 } else {
29816 for (i = 0; !q.isZero(); i++) {
29817 b = q.andln(0xff);
29818 q.iushrn(8);
29819
29820 res[i] = b;
29821 }
29822
29823 for (; i < reqLength; i++) {
29824 res[i] = 0;
29825 }
29826 }
29827
29828 return res;
29829 };
29830
29831 if (Math.clz32) {
29832 BN.prototype._countBits = function _countBits (w) {
29833 return 32 - Math.clz32(w);
29834 };
29835 } else {
29836 BN.prototype._countBits = function _countBits (w) {
29837 var t = w;
29838 var r = 0;
29839 if (t >= 0x1000) {
29840 r += 13;
29841 t >>>= 13;
29842 }
29843 if (t >= 0x40) {
29844 r += 7;
29845 t >>>= 7;
29846 }
29847 if (t >= 0x8) {
29848 r += 4;
29849 t >>>= 4;
29850 }
29851 if (t >= 0x02) {
29852 r += 2;
29853 t >>>= 2;
29854 }
29855 return r + t;
29856 };
29857 }
29858
29859 BN.prototype._zeroBits = function _zeroBits (w) {
29860 // Short-cut
29861 if (w === 0) return 26;
29862
29863 var t = w;
29864 var r = 0;
29865 if ((t & 0x1fff) === 0) {
29866 r += 13;
29867 t >>>= 13;
29868 }
29869 if ((t & 0x7f) === 0) {
29870 r += 7;
29871 t >>>= 7;
29872 }
29873 if ((t & 0xf) === 0) {
29874 r += 4;
29875 t >>>= 4;
29876 }
29877 if ((t & 0x3) === 0) {
29878 r += 2;
29879 t >>>= 2;
29880 }
29881 if ((t & 0x1) === 0) {
29882 r++;
29883 }
29884 return r;
29885 };
29886
29887 // Return number of used bits in a BN
29888 BN.prototype.bitLength = function bitLength () {
29889 var w = this.words[this.length - 1];
29890 var hi = this._countBits(w);
29891 return (this.length - 1) * 26 + hi;
29892 };
29893
29894 function toBitArray (num) {
29895 var w = new Array(num.bitLength());
29896
29897 for (var bit = 0; bit < w.length; bit++) {
29898 var off = (bit / 26) | 0;
29899 var wbit = bit % 26;
29900
29901 w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;
29902 }
29903
29904 return w;
29905 }
29906
29907 // Number of trailing zero bits
29908 BN.prototype.zeroBits = function zeroBits () {
29909 if (this.isZero()) return 0;
29910
29911 var r = 0;
29912 for (var i = 0; i < this.length; i++) {
29913 var b = this._zeroBits(this.words[i]);
29914 r += b;
29915 if (b !== 26) break;
29916 }
29917 return r;
29918 };
29919
29920 BN.prototype.byteLength = function byteLength () {
29921 return Math.ceil(this.bitLength() / 8);
29922 };
29923
29924 BN.prototype.toTwos = function toTwos (width) {
29925 if (this.negative !== 0) {
29926 return this.abs().inotn(width).iaddn(1);
29927 }
29928 return this.clone();
29929 };
29930
29931 BN.prototype.fromTwos = function fromTwos (width) {
29932 if (this.testn(width - 1)) {
29933 return this.notn(width).iaddn(1).ineg();
29934 }
29935 return this.clone();
29936 };
29937
29938 BN.prototype.isNeg = function isNeg () {
29939 return this.negative !== 0;
29940 };
29941
29942 // Return negative clone of `this`
29943 BN.prototype.neg = function neg () {
29944 return this.clone().ineg();
29945 };
29946
29947 BN.prototype.ineg = function ineg () {
29948 if (!this.isZero()) {
29949 this.negative ^= 1;
29950 }
29951
29952 return this;
29953 };
29954
29955 // Or `num` with `this` in-place
29956 BN.prototype.iuor = function iuor (num) {
29957 while (this.length < num.length) {
29958 this.words[this.length++] = 0;
29959 }
29960
29961 for (var i = 0; i < num.length; i++) {
29962 this.words[i] = this.words[i] | num.words[i];
29963 }
29964
29965 return this.strip();
29966 };
29967
29968 BN.prototype.ior = function ior (num) {
29969 assert((this.negative | num.negative) === 0);
29970 return this.iuor(num);
29971 };
29972
29973 // Or `num` with `this`
29974 BN.prototype.or = function or (num) {
29975 if (this.length > num.length) return this.clone().ior(num);
29976 return num.clone().ior(this);
29977 };
29978
29979 BN.prototype.uor = function uor (num) {
29980 if (this.length > num.length) return this.clone().iuor(num);
29981 return num.clone().iuor(this);
29982 };
29983
29984 // And `num` with `this` in-place
29985 BN.prototype.iuand = function iuand (num) {
29986 // b = min-length(num, this)
29987 var b;
29988 if (this.length > num.length) {
29989 b = num;
29990 } else {
29991 b = this;
29992 }
29993
29994 for (var i = 0; i < b.length; i++) {
29995 this.words[i] = this.words[i] & num.words[i];
29996 }
29997
29998 this.length = b.length;
29999
30000 return this.strip();
30001 };
30002
30003 BN.prototype.iand = function iand (num) {
30004 assert((this.negative | num.negative) === 0);
30005 return this.iuand(num);
30006 };
30007
30008 // And `num` with `this`
30009 BN.prototype.and = function and (num) {
30010 if (this.length > num.length) return this.clone().iand(num);
30011 return num.clone().iand(this);
30012 };
30013
30014 BN.prototype.uand = function uand (num) {
30015 if (this.length > num.length) return this.clone().iuand(num);
30016 return num.clone().iuand(this);
30017 };
30018
30019 // Xor `num` with `this` in-place
30020 BN.prototype.iuxor = function iuxor (num) {
30021 // a.length > b.length
30022 var a;
30023 var b;
30024 if (this.length > num.length) {
30025 a = this;
30026 b = num;
30027 } else {
30028 a = num;
30029 b = this;
30030 }
30031
30032 for (var i = 0; i < b.length; i++) {
30033 this.words[i] = a.words[i] ^ b.words[i];
30034 }
30035
30036 if (this !== a) {
30037 for (; i < a.length; i++) {
30038 this.words[i] = a.words[i];
30039 }
30040 }
30041
30042 this.length = a.length;
30043
30044 return this.strip();
30045 };
30046
30047 BN.prototype.ixor = function ixor (num) {
30048 assert((this.negative | num.negative) === 0);
30049 return this.iuxor(num);
30050 };
30051
30052 // Xor `num` with `this`
30053 BN.prototype.xor = function xor (num) {
30054 if (this.length > num.length) return this.clone().ixor(num);
30055 return num.clone().ixor(this);
30056 };
30057
30058 BN.prototype.uxor = function uxor (num) {
30059 if (this.length > num.length) return this.clone().iuxor(num);
30060 return num.clone().iuxor(this);
30061 };
30062
30063 // Not ``this`` with ``width`` bitwidth
30064 BN.prototype.inotn = function inotn (width) {
30065 assert(typeof width === 'number' && width >= 0);
30066
30067 var bytesNeeded = Math.ceil(width / 26) | 0;
30068 var bitsLeft = width % 26;
30069
30070 // Extend the buffer with leading zeroes
30071 this._expand(bytesNeeded);
30072
30073 if (bitsLeft > 0) {
30074 bytesNeeded--;
30075 }
30076
30077 // Handle complete words
30078 for (var i = 0; i < bytesNeeded; i++) {
30079 this.words[i] = ~this.words[i] & 0x3ffffff;
30080 }
30081
30082 // Handle the residue
30083 if (bitsLeft > 0) {
30084 this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));
30085 }
30086
30087 // And remove leading zeroes
30088 return this.strip();
30089 };
30090
30091 BN.prototype.notn = function notn (width) {
30092 return this.clone().inotn(width);
30093 };
30094
30095 // Set `bit` of `this`
30096 BN.prototype.setn = function setn (bit, val) {
30097 assert(typeof bit === 'number' && bit >= 0);
30098
30099 var off = (bit / 26) | 0;
30100 var wbit = bit % 26;
30101
30102 this._expand(off + 1);
30103
30104 if (val) {
30105 this.words[off] = this.words[off] | (1 << wbit);
30106 } else {
30107 this.words[off] = this.words[off] & ~(1 << wbit);
30108 }
30109
30110 return this.strip();
30111 };
30112
30113 // Add `num` to `this` in-place
30114 BN.prototype.iadd = function iadd (num) {
30115 var r;
30116
30117 // negative + positive
30118 if (this.negative !== 0 && num.negative === 0) {
30119 this.negative = 0;
30120 r = this.isub(num);
30121 this.negative ^= 1;
30122 return this._normSign();
30123
30124 // positive + negative
30125 } else if (this.negative === 0 && num.negative !== 0) {
30126 num.negative = 0;
30127 r = this.isub(num);
30128 num.negative = 1;
30129 return r._normSign();
30130 }
30131
30132 // a.length > b.length
30133 var a, b;
30134 if (this.length > num.length) {
30135 a = this;
30136 b = num;
30137 } else {
30138 a = num;
30139 b = this;
30140 }
30141
30142 var carry = 0;
30143 for (var i = 0; i < b.length; i++) {
30144 r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
30145 this.words[i] = r & 0x3ffffff;
30146 carry = r >>> 26;
30147 }
30148 for (; carry !== 0 && i < a.length; i++) {
30149 r = (a.words[i] | 0) + carry;
30150 this.words[i] = r & 0x3ffffff;
30151 carry = r >>> 26;
30152 }
30153
30154 this.length = a.length;
30155 if (carry !== 0) {
30156 this.words[this.length] = carry;
30157 this.length++;
30158 // Copy the rest of the words
30159 } else if (a !== this) {
30160 for (; i < a.length; i++) {
30161 this.words[i] = a.words[i];
30162 }
30163 }
30164
30165 return this;
30166 };
30167
30168 // Add `num` to `this`
30169 BN.prototype.add = function add (num) {
30170 var res;
30171 if (num.negative !== 0 && this.negative === 0) {
30172 num.negative = 0;
30173 res = this.sub(num);
30174 num.negative ^= 1;
30175 return res;
30176 } else if (num.negative === 0 && this.negative !== 0) {
30177 this.negative = 0;
30178 res = num.sub(this);
30179 this.negative = 1;
30180 return res;
30181 }
30182
30183 if (this.length > num.length) return this.clone().iadd(num);
30184
30185 return num.clone().iadd(this);
30186 };
30187
30188 // Subtract `num` from `this` in-place
30189 BN.prototype.isub = function isub (num) {
30190 // this - (-num) = this + num
30191 if (num.negative !== 0) {
30192 num.negative = 0;
30193 var r = this.iadd(num);
30194 num.negative = 1;
30195 return r._normSign();
30196
30197 // -this - num = -(this + num)
30198 } else if (this.negative !== 0) {
30199 this.negative = 0;
30200 this.iadd(num);
30201 this.negative = 1;
30202 return this._normSign();
30203 }
30204
30205 // At this point both numbers are positive
30206 var cmp = this.cmp(num);
30207
30208 // Optimization - zeroify
30209 if (cmp === 0) {
30210 this.negative = 0;
30211 this.length = 1;
30212 this.words[0] = 0;
30213 return this;
30214 }
30215
30216 // a > b
30217 var a, b;
30218 if (cmp > 0) {
30219 a = this;
30220 b = num;
30221 } else {
30222 a = num;
30223 b = this;
30224 }
30225
30226 var carry = 0;
30227 for (var i = 0; i < b.length; i++) {
30228 r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
30229 carry = r >> 26;
30230 this.words[i] = r & 0x3ffffff;
30231 }
30232 for (; carry !== 0 && i < a.length; i++) {
30233 r = (a.words[i] | 0) + carry;
30234 carry = r >> 26;
30235 this.words[i] = r & 0x3ffffff;
30236 }
30237
30238 // Copy rest of the words
30239 if (carry === 0 && i < a.length && a !== this) {
30240 for (; i < a.length; i++) {
30241 this.words[i] = a.words[i];
30242 }
30243 }
30244
30245 this.length = Math.max(this.length, i);
30246
30247 if (a !== this) {
30248 this.negative = 1;
30249 }
30250
30251 return this.strip();
30252 };
30253
30254 // Subtract `num` from `this`
30255 BN.prototype.sub = function sub (num) {
30256 return this.clone().isub(num);
30257 };
30258
30259 function smallMulTo (self, num, out) {
30260 out.negative = num.negative ^ self.negative;
30261 var len = (self.length + num.length) | 0;
30262 out.length = len;
30263 len = (len - 1) | 0;
30264
30265 // Peel one iteration (compiler can't do it, because of code complexity)
30266 var a = self.words[0] | 0;
30267 var b = num.words[0] | 0;
30268 var r = a * b;
30269
30270 var lo = r & 0x3ffffff;
30271 var carry = (r / 0x4000000) | 0;
30272 out.words[0] = lo;
30273
30274 for (var k = 1; k < len; k++) {
30275 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
30276 // note that ncarry could be >= 0x3ffffff
30277 var ncarry = carry >>> 26;
30278 var rword = carry & 0x3ffffff;
30279 var maxJ = Math.min(k, num.length - 1);
30280 for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
30281 var i = (k - j) | 0;
30282 a = self.words[i] | 0;
30283 b = num.words[j] | 0;
30284 r = a * b + rword;
30285 ncarry += (r / 0x4000000) | 0;
30286 rword = r & 0x3ffffff;
30287 }
30288 out.words[k] = rword | 0;
30289 carry = ncarry | 0;
30290 }
30291 if (carry !== 0) {
30292 out.words[k] = carry | 0;
30293 } else {
30294 out.length--;
30295 }
30296
30297 return out.strip();
30298 }
30299
30300 // TODO(indutny): it may be reasonable to omit it for users who don't need
30301 // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit
30302 // multiplication (like elliptic secp256k1).
30303 var comb10MulTo = function comb10MulTo (self, num, out) {
30304 var a = self.words;
30305 var b = num.words;
30306 var o = out.words;
30307 var c = 0;
30308 var lo;
30309 var mid;
30310 var hi;
30311 var a0 = a[0] | 0;
30312 var al0 = a0 & 0x1fff;
30313 var ah0 = a0 >>> 13;
30314 var a1 = a[1] | 0;
30315 var al1 = a1 & 0x1fff;
30316 var ah1 = a1 >>> 13;
30317 var a2 = a[2] | 0;
30318 var al2 = a2 & 0x1fff;
30319 var ah2 = a2 >>> 13;
30320 var a3 = a[3] | 0;
30321 var al3 = a3 & 0x1fff;
30322 var ah3 = a3 >>> 13;
30323 var a4 = a[4] | 0;
30324 var al4 = a4 & 0x1fff;
30325 var ah4 = a4 >>> 13;
30326 var a5 = a[5] | 0;
30327 var al5 = a5 & 0x1fff;
30328 var ah5 = a5 >>> 13;
30329 var a6 = a[6] | 0;
30330 var al6 = a6 & 0x1fff;
30331 var ah6 = a6 >>> 13;
30332 var a7 = a[7] | 0;
30333 var al7 = a7 & 0x1fff;
30334 var ah7 = a7 >>> 13;
30335 var a8 = a[8] | 0;
30336 var al8 = a8 & 0x1fff;
30337 var ah8 = a8 >>> 13;
30338 var a9 = a[9] | 0;
30339 var al9 = a9 & 0x1fff;
30340 var ah9 = a9 >>> 13;
30341 var b0 = b[0] | 0;
30342 var bl0 = b0 & 0x1fff;
30343 var bh0 = b0 >>> 13;
30344 var b1 = b[1] | 0;
30345 var bl1 = b1 & 0x1fff;
30346 var bh1 = b1 >>> 13;
30347 var b2 = b[2] | 0;
30348 var bl2 = b2 & 0x1fff;
30349 var bh2 = b2 >>> 13;
30350 var b3 = b[3] | 0;
30351 var bl3 = b3 & 0x1fff;
30352 var bh3 = b3 >>> 13;
30353 var b4 = b[4] | 0;
30354 var bl4 = b4 & 0x1fff;
30355 var bh4 = b4 >>> 13;
30356 var b5 = b[5] | 0;
30357 var bl5 = b5 & 0x1fff;
30358 var bh5 = b5 >>> 13;
30359 var b6 = b[6] | 0;
30360 var bl6 = b6 & 0x1fff;
30361 var bh6 = b6 >>> 13;
30362 var b7 = b[7] | 0;
30363 var bl7 = b7 & 0x1fff;
30364 var bh7 = b7 >>> 13;
30365 var b8 = b[8] | 0;
30366 var bl8 = b8 & 0x1fff;
30367 var bh8 = b8 >>> 13;
30368 var b9 = b[9] | 0;
30369 var bl9 = b9 & 0x1fff;
30370 var bh9 = b9 >>> 13;
30371
30372 out.negative = self.negative ^ num.negative;
30373 out.length = 19;
30374 /* k = 0 */
30375 lo = Math.imul(al0, bl0);
30376 mid = Math.imul(al0, bh0);
30377 mid = (mid + Math.imul(ah0, bl0)) | 0;
30378 hi = Math.imul(ah0, bh0);
30379 var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30380 c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;
30381 w0 &= 0x3ffffff;
30382 /* k = 1 */
30383 lo = Math.imul(al1, bl0);
30384 mid = Math.imul(al1, bh0);
30385 mid = (mid + Math.imul(ah1, bl0)) | 0;
30386 hi = Math.imul(ah1, bh0);
30387 lo = (lo + Math.imul(al0, bl1)) | 0;
30388 mid = (mid + Math.imul(al0, bh1)) | 0;
30389 mid = (mid + Math.imul(ah0, bl1)) | 0;
30390 hi = (hi + Math.imul(ah0, bh1)) | 0;
30391 var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30392 c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;
30393 w1 &= 0x3ffffff;
30394 /* k = 2 */
30395 lo = Math.imul(al2, bl0);
30396 mid = Math.imul(al2, bh0);
30397 mid = (mid + Math.imul(ah2, bl0)) | 0;
30398 hi = Math.imul(ah2, bh0);
30399 lo = (lo + Math.imul(al1, bl1)) | 0;
30400 mid = (mid + Math.imul(al1, bh1)) | 0;
30401 mid = (mid + Math.imul(ah1, bl1)) | 0;
30402 hi = (hi + Math.imul(ah1, bh1)) | 0;
30403 lo = (lo + Math.imul(al0, bl2)) | 0;
30404 mid = (mid + Math.imul(al0, bh2)) | 0;
30405 mid = (mid + Math.imul(ah0, bl2)) | 0;
30406 hi = (hi + Math.imul(ah0, bh2)) | 0;
30407 var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30408 c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;
30409 w2 &= 0x3ffffff;
30410 /* k = 3 */
30411 lo = Math.imul(al3, bl0);
30412 mid = Math.imul(al3, bh0);
30413 mid = (mid + Math.imul(ah3, bl0)) | 0;
30414 hi = Math.imul(ah3, bh0);
30415 lo = (lo + Math.imul(al2, bl1)) | 0;
30416 mid = (mid + Math.imul(al2, bh1)) | 0;
30417 mid = (mid + Math.imul(ah2, bl1)) | 0;
30418 hi = (hi + Math.imul(ah2, bh1)) | 0;
30419 lo = (lo + Math.imul(al1, bl2)) | 0;
30420 mid = (mid + Math.imul(al1, bh2)) | 0;
30421 mid = (mid + Math.imul(ah1, bl2)) | 0;
30422 hi = (hi + Math.imul(ah1, bh2)) | 0;
30423 lo = (lo + Math.imul(al0, bl3)) | 0;
30424 mid = (mid + Math.imul(al0, bh3)) | 0;
30425 mid = (mid + Math.imul(ah0, bl3)) | 0;
30426 hi = (hi + Math.imul(ah0, bh3)) | 0;
30427 var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30428 c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;
30429 w3 &= 0x3ffffff;
30430 /* k = 4 */
30431 lo = Math.imul(al4, bl0);
30432 mid = Math.imul(al4, bh0);
30433 mid = (mid + Math.imul(ah4, bl0)) | 0;
30434 hi = Math.imul(ah4, bh0);
30435 lo = (lo + Math.imul(al3, bl1)) | 0;
30436 mid = (mid + Math.imul(al3, bh1)) | 0;
30437 mid = (mid + Math.imul(ah3, bl1)) | 0;
30438 hi = (hi + Math.imul(ah3, bh1)) | 0;
30439 lo = (lo + Math.imul(al2, bl2)) | 0;
30440 mid = (mid + Math.imul(al2, bh2)) | 0;
30441 mid = (mid + Math.imul(ah2, bl2)) | 0;
30442 hi = (hi + Math.imul(ah2, bh2)) | 0;
30443 lo = (lo + Math.imul(al1, bl3)) | 0;
30444 mid = (mid + Math.imul(al1, bh3)) | 0;
30445 mid = (mid + Math.imul(ah1, bl3)) | 0;
30446 hi = (hi + Math.imul(ah1, bh3)) | 0;
30447 lo = (lo + Math.imul(al0, bl4)) | 0;
30448 mid = (mid + Math.imul(al0, bh4)) | 0;
30449 mid = (mid + Math.imul(ah0, bl4)) | 0;
30450 hi = (hi + Math.imul(ah0, bh4)) | 0;
30451 var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30452 c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;
30453 w4 &= 0x3ffffff;
30454 /* k = 5 */
30455 lo = Math.imul(al5, bl0);
30456 mid = Math.imul(al5, bh0);
30457 mid = (mid + Math.imul(ah5, bl0)) | 0;
30458 hi = Math.imul(ah5, bh0);
30459 lo = (lo + Math.imul(al4, bl1)) | 0;
30460 mid = (mid + Math.imul(al4, bh1)) | 0;
30461 mid = (mid + Math.imul(ah4, bl1)) | 0;
30462 hi = (hi + Math.imul(ah4, bh1)) | 0;
30463 lo = (lo + Math.imul(al3, bl2)) | 0;
30464 mid = (mid + Math.imul(al3, bh2)) | 0;
30465 mid = (mid + Math.imul(ah3, bl2)) | 0;
30466 hi = (hi + Math.imul(ah3, bh2)) | 0;
30467 lo = (lo + Math.imul(al2, bl3)) | 0;
30468 mid = (mid + Math.imul(al2, bh3)) | 0;
30469 mid = (mid + Math.imul(ah2, bl3)) | 0;
30470 hi = (hi + Math.imul(ah2, bh3)) | 0;
30471 lo = (lo + Math.imul(al1, bl4)) | 0;
30472 mid = (mid + Math.imul(al1, bh4)) | 0;
30473 mid = (mid + Math.imul(ah1, bl4)) | 0;
30474 hi = (hi + Math.imul(ah1, bh4)) | 0;
30475 lo = (lo + Math.imul(al0, bl5)) | 0;
30476 mid = (mid + Math.imul(al0, bh5)) | 0;
30477 mid = (mid + Math.imul(ah0, bl5)) | 0;
30478 hi = (hi + Math.imul(ah0, bh5)) | 0;
30479 var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30480 c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;
30481 w5 &= 0x3ffffff;
30482 /* k = 6 */
30483 lo = Math.imul(al6, bl0);
30484 mid = Math.imul(al6, bh0);
30485 mid = (mid + Math.imul(ah6, bl0)) | 0;
30486 hi = Math.imul(ah6, bh0);
30487 lo = (lo + Math.imul(al5, bl1)) | 0;
30488 mid = (mid + Math.imul(al5, bh1)) | 0;
30489 mid = (mid + Math.imul(ah5, bl1)) | 0;
30490 hi = (hi + Math.imul(ah5, bh1)) | 0;
30491 lo = (lo + Math.imul(al4, bl2)) | 0;
30492 mid = (mid + Math.imul(al4, bh2)) | 0;
30493 mid = (mid + Math.imul(ah4, bl2)) | 0;
30494 hi = (hi + Math.imul(ah4, bh2)) | 0;
30495 lo = (lo + Math.imul(al3, bl3)) | 0;
30496 mid = (mid + Math.imul(al3, bh3)) | 0;
30497 mid = (mid + Math.imul(ah3, bl3)) | 0;
30498 hi = (hi + Math.imul(ah3, bh3)) | 0;
30499 lo = (lo + Math.imul(al2, bl4)) | 0;
30500 mid = (mid + Math.imul(al2, bh4)) | 0;
30501 mid = (mid + Math.imul(ah2, bl4)) | 0;
30502 hi = (hi + Math.imul(ah2, bh4)) | 0;
30503 lo = (lo + Math.imul(al1, bl5)) | 0;
30504 mid = (mid + Math.imul(al1, bh5)) | 0;
30505 mid = (mid + Math.imul(ah1, bl5)) | 0;
30506 hi = (hi + Math.imul(ah1, bh5)) | 0;
30507 lo = (lo + Math.imul(al0, bl6)) | 0;
30508 mid = (mid + Math.imul(al0, bh6)) | 0;
30509 mid = (mid + Math.imul(ah0, bl6)) | 0;
30510 hi = (hi + Math.imul(ah0, bh6)) | 0;
30511 var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30512 c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;
30513 w6 &= 0x3ffffff;
30514 /* k = 7 */
30515 lo = Math.imul(al7, bl0);
30516 mid = Math.imul(al7, bh0);
30517 mid = (mid + Math.imul(ah7, bl0)) | 0;
30518 hi = Math.imul(ah7, bh0);
30519 lo = (lo + Math.imul(al6, bl1)) | 0;
30520 mid = (mid + Math.imul(al6, bh1)) | 0;
30521 mid = (mid + Math.imul(ah6, bl1)) | 0;
30522 hi = (hi + Math.imul(ah6, bh1)) | 0;
30523 lo = (lo + Math.imul(al5, bl2)) | 0;
30524 mid = (mid + Math.imul(al5, bh2)) | 0;
30525 mid = (mid + Math.imul(ah5, bl2)) | 0;
30526 hi = (hi + Math.imul(ah5, bh2)) | 0;
30527 lo = (lo + Math.imul(al4, bl3)) | 0;
30528 mid = (mid + Math.imul(al4, bh3)) | 0;
30529 mid = (mid + Math.imul(ah4, bl3)) | 0;
30530 hi = (hi + Math.imul(ah4, bh3)) | 0;
30531 lo = (lo + Math.imul(al3, bl4)) | 0;
30532 mid = (mid + Math.imul(al3, bh4)) | 0;
30533 mid = (mid + Math.imul(ah3, bl4)) | 0;
30534 hi = (hi + Math.imul(ah3, bh4)) | 0;
30535 lo = (lo + Math.imul(al2, bl5)) | 0;
30536 mid = (mid + Math.imul(al2, bh5)) | 0;
30537 mid = (mid + Math.imul(ah2, bl5)) | 0;
30538 hi = (hi + Math.imul(ah2, bh5)) | 0;
30539 lo = (lo + Math.imul(al1, bl6)) | 0;
30540 mid = (mid + Math.imul(al1, bh6)) | 0;
30541 mid = (mid + Math.imul(ah1, bl6)) | 0;
30542 hi = (hi + Math.imul(ah1, bh6)) | 0;
30543 lo = (lo + Math.imul(al0, bl7)) | 0;
30544 mid = (mid + Math.imul(al0, bh7)) | 0;
30545 mid = (mid + Math.imul(ah0, bl7)) | 0;
30546 hi = (hi + Math.imul(ah0, bh7)) | 0;
30547 var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30548 c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;
30549 w7 &= 0x3ffffff;
30550 /* k = 8 */
30551 lo = Math.imul(al8, bl0);
30552 mid = Math.imul(al8, bh0);
30553 mid = (mid + Math.imul(ah8, bl0)) | 0;
30554 hi = Math.imul(ah8, bh0);
30555 lo = (lo + Math.imul(al7, bl1)) | 0;
30556 mid = (mid + Math.imul(al7, bh1)) | 0;
30557 mid = (mid + Math.imul(ah7, bl1)) | 0;
30558 hi = (hi + Math.imul(ah7, bh1)) | 0;
30559 lo = (lo + Math.imul(al6, bl2)) | 0;
30560 mid = (mid + Math.imul(al6, bh2)) | 0;
30561 mid = (mid + Math.imul(ah6, bl2)) | 0;
30562 hi = (hi + Math.imul(ah6, bh2)) | 0;
30563 lo = (lo + Math.imul(al5, bl3)) | 0;
30564 mid = (mid + Math.imul(al5, bh3)) | 0;
30565 mid = (mid + Math.imul(ah5, bl3)) | 0;
30566 hi = (hi + Math.imul(ah5, bh3)) | 0;
30567 lo = (lo + Math.imul(al4, bl4)) | 0;
30568 mid = (mid + Math.imul(al4, bh4)) | 0;
30569 mid = (mid + Math.imul(ah4, bl4)) | 0;
30570 hi = (hi + Math.imul(ah4, bh4)) | 0;
30571 lo = (lo + Math.imul(al3, bl5)) | 0;
30572 mid = (mid + Math.imul(al3, bh5)) | 0;
30573 mid = (mid + Math.imul(ah3, bl5)) | 0;
30574 hi = (hi + Math.imul(ah3, bh5)) | 0;
30575 lo = (lo + Math.imul(al2, bl6)) | 0;
30576 mid = (mid + Math.imul(al2, bh6)) | 0;
30577 mid = (mid + Math.imul(ah2, bl6)) | 0;
30578 hi = (hi + Math.imul(ah2, bh6)) | 0;
30579 lo = (lo + Math.imul(al1, bl7)) | 0;
30580 mid = (mid + Math.imul(al1, bh7)) | 0;
30581 mid = (mid + Math.imul(ah1, bl7)) | 0;
30582 hi = (hi + Math.imul(ah1, bh7)) | 0;
30583 lo = (lo + Math.imul(al0, bl8)) | 0;
30584 mid = (mid + Math.imul(al0, bh8)) | 0;
30585 mid = (mid + Math.imul(ah0, bl8)) | 0;
30586 hi = (hi + Math.imul(ah0, bh8)) | 0;
30587 var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30588 c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;
30589 w8 &= 0x3ffffff;
30590 /* k = 9 */
30591 lo = Math.imul(al9, bl0);
30592 mid = Math.imul(al9, bh0);
30593 mid = (mid + Math.imul(ah9, bl0)) | 0;
30594 hi = Math.imul(ah9, bh0);
30595 lo = (lo + Math.imul(al8, bl1)) | 0;
30596 mid = (mid + Math.imul(al8, bh1)) | 0;
30597 mid = (mid + Math.imul(ah8, bl1)) | 0;
30598 hi = (hi + Math.imul(ah8, bh1)) | 0;
30599 lo = (lo + Math.imul(al7, bl2)) | 0;
30600 mid = (mid + Math.imul(al7, bh2)) | 0;
30601 mid = (mid + Math.imul(ah7, bl2)) | 0;
30602 hi = (hi + Math.imul(ah7, bh2)) | 0;
30603 lo = (lo + Math.imul(al6, bl3)) | 0;
30604 mid = (mid + Math.imul(al6, bh3)) | 0;
30605 mid = (mid + Math.imul(ah6, bl3)) | 0;
30606 hi = (hi + Math.imul(ah6, bh3)) | 0;
30607 lo = (lo + Math.imul(al5, bl4)) | 0;
30608 mid = (mid + Math.imul(al5, bh4)) | 0;
30609 mid = (mid + Math.imul(ah5, bl4)) | 0;
30610 hi = (hi + Math.imul(ah5, bh4)) | 0;
30611 lo = (lo + Math.imul(al4, bl5)) | 0;
30612 mid = (mid + Math.imul(al4, bh5)) | 0;
30613 mid = (mid + Math.imul(ah4, bl5)) | 0;
30614 hi = (hi + Math.imul(ah4, bh5)) | 0;
30615 lo = (lo + Math.imul(al3, bl6)) | 0;
30616 mid = (mid + Math.imul(al3, bh6)) | 0;
30617 mid = (mid + Math.imul(ah3, bl6)) | 0;
30618 hi = (hi + Math.imul(ah3, bh6)) | 0;
30619 lo = (lo + Math.imul(al2, bl7)) | 0;
30620 mid = (mid + Math.imul(al2, bh7)) | 0;
30621 mid = (mid + Math.imul(ah2, bl7)) | 0;
30622 hi = (hi + Math.imul(ah2, bh7)) | 0;
30623 lo = (lo + Math.imul(al1, bl8)) | 0;
30624 mid = (mid + Math.imul(al1, bh8)) | 0;
30625 mid = (mid + Math.imul(ah1, bl8)) | 0;
30626 hi = (hi + Math.imul(ah1, bh8)) | 0;
30627 lo = (lo + Math.imul(al0, bl9)) | 0;
30628 mid = (mid + Math.imul(al0, bh9)) | 0;
30629 mid = (mid + Math.imul(ah0, bl9)) | 0;
30630 hi = (hi + Math.imul(ah0, bh9)) | 0;
30631 var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30632 c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;
30633 w9 &= 0x3ffffff;
30634 /* k = 10 */
30635 lo = Math.imul(al9, bl1);
30636 mid = Math.imul(al9, bh1);
30637 mid = (mid + Math.imul(ah9, bl1)) | 0;
30638 hi = Math.imul(ah9, bh1);
30639 lo = (lo + Math.imul(al8, bl2)) | 0;
30640 mid = (mid + Math.imul(al8, bh2)) | 0;
30641 mid = (mid + Math.imul(ah8, bl2)) | 0;
30642 hi = (hi + Math.imul(ah8, bh2)) | 0;
30643 lo = (lo + Math.imul(al7, bl3)) | 0;
30644 mid = (mid + Math.imul(al7, bh3)) | 0;
30645 mid = (mid + Math.imul(ah7, bl3)) | 0;
30646 hi = (hi + Math.imul(ah7, bh3)) | 0;
30647 lo = (lo + Math.imul(al6, bl4)) | 0;
30648 mid = (mid + Math.imul(al6, bh4)) | 0;
30649 mid = (mid + Math.imul(ah6, bl4)) | 0;
30650 hi = (hi + Math.imul(ah6, bh4)) | 0;
30651 lo = (lo + Math.imul(al5, bl5)) | 0;
30652 mid = (mid + Math.imul(al5, bh5)) | 0;
30653 mid = (mid + Math.imul(ah5, bl5)) | 0;
30654 hi = (hi + Math.imul(ah5, bh5)) | 0;
30655 lo = (lo + Math.imul(al4, bl6)) | 0;
30656 mid = (mid + Math.imul(al4, bh6)) | 0;
30657 mid = (mid + Math.imul(ah4, bl6)) | 0;
30658 hi = (hi + Math.imul(ah4, bh6)) | 0;
30659 lo = (lo + Math.imul(al3, bl7)) | 0;
30660 mid = (mid + Math.imul(al3, bh7)) | 0;
30661 mid = (mid + Math.imul(ah3, bl7)) | 0;
30662 hi = (hi + Math.imul(ah3, bh7)) | 0;
30663 lo = (lo + Math.imul(al2, bl8)) | 0;
30664 mid = (mid + Math.imul(al2, bh8)) | 0;
30665 mid = (mid + Math.imul(ah2, bl8)) | 0;
30666 hi = (hi + Math.imul(ah2, bh8)) | 0;
30667 lo = (lo + Math.imul(al1, bl9)) | 0;
30668 mid = (mid + Math.imul(al1, bh9)) | 0;
30669 mid = (mid + Math.imul(ah1, bl9)) | 0;
30670 hi = (hi + Math.imul(ah1, bh9)) | 0;
30671 var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30672 c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;
30673 w10 &= 0x3ffffff;
30674 /* k = 11 */
30675 lo = Math.imul(al9, bl2);
30676 mid = Math.imul(al9, bh2);
30677 mid = (mid + Math.imul(ah9, bl2)) | 0;
30678 hi = Math.imul(ah9, bh2);
30679 lo = (lo + Math.imul(al8, bl3)) | 0;
30680 mid = (mid + Math.imul(al8, bh3)) | 0;
30681 mid = (mid + Math.imul(ah8, bl3)) | 0;
30682 hi = (hi + Math.imul(ah8, bh3)) | 0;
30683 lo = (lo + Math.imul(al7, bl4)) | 0;
30684 mid = (mid + Math.imul(al7, bh4)) | 0;
30685 mid = (mid + Math.imul(ah7, bl4)) | 0;
30686 hi = (hi + Math.imul(ah7, bh4)) | 0;
30687 lo = (lo + Math.imul(al6, bl5)) | 0;
30688 mid = (mid + Math.imul(al6, bh5)) | 0;
30689 mid = (mid + Math.imul(ah6, bl5)) | 0;
30690 hi = (hi + Math.imul(ah6, bh5)) | 0;
30691 lo = (lo + Math.imul(al5, bl6)) | 0;
30692 mid = (mid + Math.imul(al5, bh6)) | 0;
30693 mid = (mid + Math.imul(ah5, bl6)) | 0;
30694 hi = (hi + Math.imul(ah5, bh6)) | 0;
30695 lo = (lo + Math.imul(al4, bl7)) | 0;
30696 mid = (mid + Math.imul(al4, bh7)) | 0;
30697 mid = (mid + Math.imul(ah4, bl7)) | 0;
30698 hi = (hi + Math.imul(ah4, bh7)) | 0;
30699 lo = (lo + Math.imul(al3, bl8)) | 0;
30700 mid = (mid + Math.imul(al3, bh8)) | 0;
30701 mid = (mid + Math.imul(ah3, bl8)) | 0;
30702 hi = (hi + Math.imul(ah3, bh8)) | 0;
30703 lo = (lo + Math.imul(al2, bl9)) | 0;
30704 mid = (mid + Math.imul(al2, bh9)) | 0;
30705 mid = (mid + Math.imul(ah2, bl9)) | 0;
30706 hi = (hi + Math.imul(ah2, bh9)) | 0;
30707 var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30708 c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;
30709 w11 &= 0x3ffffff;
30710 /* k = 12 */
30711 lo = Math.imul(al9, bl3);
30712 mid = Math.imul(al9, bh3);
30713 mid = (mid + Math.imul(ah9, bl3)) | 0;
30714 hi = Math.imul(ah9, bh3);
30715 lo = (lo + Math.imul(al8, bl4)) | 0;
30716 mid = (mid + Math.imul(al8, bh4)) | 0;
30717 mid = (mid + Math.imul(ah8, bl4)) | 0;
30718 hi = (hi + Math.imul(ah8, bh4)) | 0;
30719 lo = (lo + Math.imul(al7, bl5)) | 0;
30720 mid = (mid + Math.imul(al7, bh5)) | 0;
30721 mid = (mid + Math.imul(ah7, bl5)) | 0;
30722 hi = (hi + Math.imul(ah7, bh5)) | 0;
30723 lo = (lo + Math.imul(al6, bl6)) | 0;
30724 mid = (mid + Math.imul(al6, bh6)) | 0;
30725 mid = (mid + Math.imul(ah6, bl6)) | 0;
30726 hi = (hi + Math.imul(ah6, bh6)) | 0;
30727 lo = (lo + Math.imul(al5, bl7)) | 0;
30728 mid = (mid + Math.imul(al5, bh7)) | 0;
30729 mid = (mid + Math.imul(ah5, bl7)) | 0;
30730 hi = (hi + Math.imul(ah5, bh7)) | 0;
30731 lo = (lo + Math.imul(al4, bl8)) | 0;
30732 mid = (mid + Math.imul(al4, bh8)) | 0;
30733 mid = (mid + Math.imul(ah4, bl8)) | 0;
30734 hi = (hi + Math.imul(ah4, bh8)) | 0;
30735 lo = (lo + Math.imul(al3, bl9)) | 0;
30736 mid = (mid + Math.imul(al3, bh9)) | 0;
30737 mid = (mid + Math.imul(ah3, bl9)) | 0;
30738 hi = (hi + Math.imul(ah3, bh9)) | 0;
30739 var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30740 c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;
30741 w12 &= 0x3ffffff;
30742 /* k = 13 */
30743 lo = Math.imul(al9, bl4);
30744 mid = Math.imul(al9, bh4);
30745 mid = (mid + Math.imul(ah9, bl4)) | 0;
30746 hi = Math.imul(ah9, bh4);
30747 lo = (lo + Math.imul(al8, bl5)) | 0;
30748 mid = (mid + Math.imul(al8, bh5)) | 0;
30749 mid = (mid + Math.imul(ah8, bl5)) | 0;
30750 hi = (hi + Math.imul(ah8, bh5)) | 0;
30751 lo = (lo + Math.imul(al7, bl6)) | 0;
30752 mid = (mid + Math.imul(al7, bh6)) | 0;
30753 mid = (mid + Math.imul(ah7, bl6)) | 0;
30754 hi = (hi + Math.imul(ah7, bh6)) | 0;
30755 lo = (lo + Math.imul(al6, bl7)) | 0;
30756 mid = (mid + Math.imul(al6, bh7)) | 0;
30757 mid = (mid + Math.imul(ah6, bl7)) | 0;
30758 hi = (hi + Math.imul(ah6, bh7)) | 0;
30759 lo = (lo + Math.imul(al5, bl8)) | 0;
30760 mid = (mid + Math.imul(al5, bh8)) | 0;
30761 mid = (mid + Math.imul(ah5, bl8)) | 0;
30762 hi = (hi + Math.imul(ah5, bh8)) | 0;
30763 lo = (lo + Math.imul(al4, bl9)) | 0;
30764 mid = (mid + Math.imul(al4, bh9)) | 0;
30765 mid = (mid + Math.imul(ah4, bl9)) | 0;
30766 hi = (hi + Math.imul(ah4, bh9)) | 0;
30767 var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30768 c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;
30769 w13 &= 0x3ffffff;
30770 /* k = 14 */
30771 lo = Math.imul(al9, bl5);
30772 mid = Math.imul(al9, bh5);
30773 mid = (mid + Math.imul(ah9, bl5)) | 0;
30774 hi = Math.imul(ah9, bh5);
30775 lo = (lo + Math.imul(al8, bl6)) | 0;
30776 mid = (mid + Math.imul(al8, bh6)) | 0;
30777 mid = (mid + Math.imul(ah8, bl6)) | 0;
30778 hi = (hi + Math.imul(ah8, bh6)) | 0;
30779 lo = (lo + Math.imul(al7, bl7)) | 0;
30780 mid = (mid + Math.imul(al7, bh7)) | 0;
30781 mid = (mid + Math.imul(ah7, bl7)) | 0;
30782 hi = (hi + Math.imul(ah7, bh7)) | 0;
30783 lo = (lo + Math.imul(al6, bl8)) | 0;
30784 mid = (mid + Math.imul(al6, bh8)) | 0;
30785 mid = (mid + Math.imul(ah6, bl8)) | 0;
30786 hi = (hi + Math.imul(ah6, bh8)) | 0;
30787 lo = (lo + Math.imul(al5, bl9)) | 0;
30788 mid = (mid + Math.imul(al5, bh9)) | 0;
30789 mid = (mid + Math.imul(ah5, bl9)) | 0;
30790 hi = (hi + Math.imul(ah5, bh9)) | 0;
30791 var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30792 c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;
30793 w14 &= 0x3ffffff;
30794 /* k = 15 */
30795 lo = Math.imul(al9, bl6);
30796 mid = Math.imul(al9, bh6);
30797 mid = (mid + Math.imul(ah9, bl6)) | 0;
30798 hi = Math.imul(ah9, bh6);
30799 lo = (lo + Math.imul(al8, bl7)) | 0;
30800 mid = (mid + Math.imul(al8, bh7)) | 0;
30801 mid = (mid + Math.imul(ah8, bl7)) | 0;
30802 hi = (hi + Math.imul(ah8, bh7)) | 0;
30803 lo = (lo + Math.imul(al7, bl8)) | 0;
30804 mid = (mid + Math.imul(al7, bh8)) | 0;
30805 mid = (mid + Math.imul(ah7, bl8)) | 0;
30806 hi = (hi + Math.imul(ah7, bh8)) | 0;
30807 lo = (lo + Math.imul(al6, bl9)) | 0;
30808 mid = (mid + Math.imul(al6, bh9)) | 0;
30809 mid = (mid + Math.imul(ah6, bl9)) | 0;
30810 hi = (hi + Math.imul(ah6, bh9)) | 0;
30811 var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30812 c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;
30813 w15 &= 0x3ffffff;
30814 /* k = 16 */
30815 lo = Math.imul(al9, bl7);
30816 mid = Math.imul(al9, bh7);
30817 mid = (mid + Math.imul(ah9, bl7)) | 0;
30818 hi = Math.imul(ah9, bh7);
30819 lo = (lo + Math.imul(al8, bl8)) | 0;
30820 mid = (mid + Math.imul(al8, bh8)) | 0;
30821 mid = (mid + Math.imul(ah8, bl8)) | 0;
30822 hi = (hi + Math.imul(ah8, bh8)) | 0;
30823 lo = (lo + Math.imul(al7, bl9)) | 0;
30824 mid = (mid + Math.imul(al7, bh9)) | 0;
30825 mid = (mid + Math.imul(ah7, bl9)) | 0;
30826 hi = (hi + Math.imul(ah7, bh9)) | 0;
30827 var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30828 c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;
30829 w16 &= 0x3ffffff;
30830 /* k = 17 */
30831 lo = Math.imul(al9, bl8);
30832 mid = Math.imul(al9, bh8);
30833 mid = (mid + Math.imul(ah9, bl8)) | 0;
30834 hi = Math.imul(ah9, bh8);
30835 lo = (lo + Math.imul(al8, bl9)) | 0;
30836 mid = (mid + Math.imul(al8, bh9)) | 0;
30837 mid = (mid + Math.imul(ah8, bl9)) | 0;
30838 hi = (hi + Math.imul(ah8, bh9)) | 0;
30839 var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30840 c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;
30841 w17 &= 0x3ffffff;
30842 /* k = 18 */
30843 lo = Math.imul(al9, bl9);
30844 mid = Math.imul(al9, bh9);
30845 mid = (mid + Math.imul(ah9, bl9)) | 0;
30846 hi = Math.imul(ah9, bh9);
30847 var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30848 c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;
30849 w18 &= 0x3ffffff;
30850 o[0] = w0;
30851 o[1] = w1;
30852 o[2] = w2;
30853 o[3] = w3;
30854 o[4] = w4;
30855 o[5] = w5;
30856 o[6] = w6;
30857 o[7] = w7;
30858 o[8] = w8;
30859 o[9] = w9;
30860 o[10] = w10;
30861 o[11] = w11;
30862 o[12] = w12;
30863 o[13] = w13;
30864 o[14] = w14;
30865 o[15] = w15;
30866 o[16] = w16;
30867 o[17] = w17;
30868 o[18] = w18;
30869 if (c !== 0) {
30870 o[19] = c;
30871 out.length++;
30872 }
30873 return out;
30874 };
30875
30876 // Polyfill comb
30877 if (!Math.imul) {
30878 comb10MulTo = smallMulTo;
30879 }
30880
30881 function bigMulTo (self, num, out) {
30882 out.negative = num.negative ^ self.negative;
30883 out.length = self.length + num.length;
30884
30885 var carry = 0;
30886 var hncarry = 0;
30887 for (var k = 0; k < out.length - 1; k++) {
30888 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
30889 // note that ncarry could be >= 0x3ffffff
30890 var ncarry = hncarry;
30891 hncarry = 0;
30892 var rword = carry & 0x3ffffff;
30893 var maxJ = Math.min(k, num.length - 1);
30894 for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
30895 var i = k - j;
30896 var a = self.words[i] | 0;
30897 var b = num.words[j] | 0;
30898 var r = a * b;
30899
30900 var lo = r & 0x3ffffff;
30901 ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;
30902 lo = (lo + rword) | 0;
30903 rword = lo & 0x3ffffff;
30904 ncarry = (ncarry + (lo >>> 26)) | 0;
30905
30906 hncarry += ncarry >>> 26;
30907 ncarry &= 0x3ffffff;
30908 }
30909 out.words[k] = rword;
30910 carry = ncarry;
30911 ncarry = hncarry;
30912 }
30913 if (carry !== 0) {
30914 out.words[k] = carry;
30915 } else {
30916 out.length--;
30917 }
30918
30919 return out.strip();
30920 }
30921
30922 function jumboMulTo (self, num, out) {
30923 var fftm = new FFTM();
30924 return fftm.mulp(self, num, out);
30925 }
30926
30927 BN.prototype.mulTo = function mulTo (num, out) {
30928 var res;
30929 var len = this.length + num.length;
30930 if (this.length === 10 && num.length === 10) {
30931 res = comb10MulTo(this, num, out);
30932 } else if (len < 63) {
30933 res = smallMulTo(this, num, out);
30934 } else if (len < 1024) {
30935 res = bigMulTo(this, num, out);
30936 } else {
30937 res = jumboMulTo(this, num, out);
30938 }
30939
30940 return res;
30941 };
30942
30943 // Cooley-Tukey algorithm for FFT
30944 // slightly revisited to rely on looping instead of recursion
30945
30946 function FFTM (x, y) {
30947 this.x = x;
30948 this.y = y;
30949 }
30950
30951 FFTM.prototype.makeRBT = function makeRBT (N) {
30952 var t = new Array(N);
30953 var l = BN.prototype._countBits(N) - 1;
30954 for (var i = 0; i < N; i++) {
30955 t[i] = this.revBin(i, l, N);
30956 }
30957
30958 return t;
30959 };
30960
30961 // Returns binary-reversed representation of `x`
30962 FFTM.prototype.revBin = function revBin (x, l, N) {
30963 if (x === 0 || x === N - 1) return x;
30964
30965 var rb = 0;
30966 for (var i = 0; i < l; i++) {
30967 rb |= (x & 1) << (l - i - 1);
30968 x >>= 1;
30969 }
30970
30971 return rb;
30972 };
30973
30974 // Performs "tweedling" phase, therefore 'emulating'
30975 // behaviour of the recursive algorithm
30976 FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {
30977 for (var i = 0; i < N; i++) {
30978 rtws[i] = rws[rbt[i]];
30979 itws[i] = iws[rbt[i]];
30980 }
30981 };
30982
30983 FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {
30984 this.permute(rbt, rws, iws, rtws, itws, N);
30985
30986 for (var s = 1; s < N; s <<= 1) {
30987 var l = s << 1;
30988
30989 var rtwdf = Math.cos(2 * Math.PI / l);
30990 var itwdf = Math.sin(2 * Math.PI / l);
30991
30992 for (var p = 0; p < N; p += l) {
30993 var rtwdf_ = rtwdf;
30994 var itwdf_ = itwdf;
30995
30996 for (var j = 0; j < s; j++) {
30997 var re = rtws[p + j];
30998 var ie = itws[p + j];
30999
31000 var ro = rtws[p + j + s];
31001 var io = itws[p + j + s];
31002
31003 var rx = rtwdf_ * ro - itwdf_ * io;
31004
31005 io = rtwdf_ * io + itwdf_ * ro;
31006 ro = rx;
31007
31008 rtws[p + j] = re + ro;
31009 itws[p + j] = ie + io;
31010
31011 rtws[p + j + s] = re - ro;
31012 itws[p + j + s] = ie - io;
31013
31014 /* jshint maxdepth : false */
31015 if (j !== l) {
31016 rx = rtwdf * rtwdf_ - itwdf * itwdf_;
31017
31018 itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
31019 rtwdf_ = rx;
31020 }
31021 }
31022 }
31023 }
31024 };
31025
31026 FFTM.prototype.guessLen13b = function guessLen13b (n, m) {
31027 var N = Math.max(m, n) | 1;
31028 var odd = N & 1;
31029 var i = 0;
31030 for (N = N / 2 | 0; N; N = N >>> 1) {
31031 i++;
31032 }
31033
31034 return 1 << i + 1 + odd;
31035 };
31036
31037 FFTM.prototype.conjugate = function conjugate (rws, iws, N) {
31038 if (N <= 1) return;
31039
31040 for (var i = 0; i < N / 2; i++) {
31041 var t = rws[i];
31042
31043 rws[i] = rws[N - i - 1];
31044 rws[N - i - 1] = t;
31045
31046 t = iws[i];
31047
31048 iws[i] = -iws[N - i - 1];
31049 iws[N - i - 1] = -t;
31050 }
31051 };
31052
31053 FFTM.prototype.normalize13b = function normalize13b (ws, N) {
31054 var carry = 0;
31055 for (var i = 0; i < N / 2; i++) {
31056 var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +
31057 Math.round(ws[2 * i] / N) +
31058 carry;
31059
31060 ws[i] = w & 0x3ffffff;
31061
31062 if (w < 0x4000000) {
31063 carry = 0;
31064 } else {
31065 carry = w / 0x4000000 | 0;
31066 }
31067 }
31068
31069 return ws;
31070 };
31071
31072 FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {
31073 var carry = 0;
31074 for (var i = 0; i < len; i++) {
31075 carry = carry + (ws[i] | 0);
31076
31077 rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;
31078 rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;
31079 }
31080
31081 // Pad with zeroes
31082 for (i = 2 * len; i < N; ++i) {
31083 rws[i] = 0;
31084 }
31085
31086 assert(carry === 0);
31087 assert((carry & ~0x1fff) === 0);
31088 };
31089
31090 FFTM.prototype.stub = function stub (N) {
31091 var ph = new Array(N);
31092 for (var i = 0; i < N; i++) {
31093 ph[i] = 0;
31094 }
31095
31096 return ph;
31097 };
31098
31099 FFTM.prototype.mulp = function mulp (x, y, out) {
31100 var N = 2 * this.guessLen13b(x.length, y.length);
31101
31102 var rbt = this.makeRBT(N);
31103
31104 var _ = this.stub(N);
31105
31106 var rws = new Array(N);
31107 var rwst = new Array(N);
31108 var iwst = new Array(N);
31109
31110 var nrws = new Array(N);
31111 var nrwst = new Array(N);
31112 var niwst = new Array(N);
31113
31114 var rmws = out.words;
31115 rmws.length = N;
31116
31117 this.convert13b(x.words, x.length, rws, N);
31118 this.convert13b(y.words, y.length, nrws, N);
31119
31120 this.transform(rws, _, rwst, iwst, N, rbt);
31121 this.transform(nrws, _, nrwst, niwst, N, rbt);
31122
31123 for (var i = 0; i < N; i++) {
31124 var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
31125 iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
31126 rwst[i] = rx;
31127 }
31128
31129 this.conjugate(rwst, iwst, N);
31130 this.transform(rwst, iwst, rmws, _, N, rbt);
31131 this.conjugate(rmws, _, N);
31132 this.normalize13b(rmws, N);
31133
31134 out.negative = x.negative ^ y.negative;
31135 out.length = x.length + y.length;
31136 return out.strip();
31137 };
31138
31139 // Multiply `this` by `num`
31140 BN.prototype.mul = function mul (num) {
31141 var out = new BN(null);
31142 out.words = new Array(this.length + num.length);
31143 return this.mulTo(num, out);
31144 };
31145
31146 // Multiply employing FFT
31147 BN.prototype.mulf = function mulf (num) {
31148 var out = new BN(null);
31149 out.words = new Array(this.length + num.length);
31150 return jumboMulTo(this, num, out);
31151 };
31152
31153 // In-place Multiplication
31154 BN.prototype.imul = function imul (num) {
31155 return this.clone().mulTo(num, this);
31156 };
31157
31158 BN.prototype.imuln = function imuln (num) {
31159 assert(typeof num === 'number');
31160 assert(num < 0x4000000);
31161
31162 // Carry
31163 var carry = 0;
31164 for (var i = 0; i < this.length; i++) {
31165 var w = (this.words[i] | 0) * num;
31166 var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);
31167 carry >>= 26;
31168 carry += (w / 0x4000000) | 0;
31169 // NOTE: lo is 27bit maximum
31170 carry += lo >>> 26;
31171 this.words[i] = lo & 0x3ffffff;
31172 }
31173
31174 if (carry !== 0) {
31175 this.words[i] = carry;
31176 this.length++;
31177 }
31178
31179 return this;
31180 };
31181
31182 BN.prototype.muln = function muln (num) {
31183 return this.clone().imuln(num);
31184 };
31185
31186 // `this` * `this`
31187 BN.prototype.sqr = function sqr () {
31188 return this.mul(this);
31189 };
31190
31191 // `this` * `this` in-place
31192 BN.prototype.isqr = function isqr () {
31193 return this.imul(this.clone());
31194 };
31195
31196 // Math.pow(`this`, `num`)
31197 BN.prototype.pow = function pow (num) {
31198 var w = toBitArray(num);
31199 if (w.length === 0) return new BN(1);
31200
31201 // Skip leading zeroes
31202 var res = this;
31203 for (var i = 0; i < w.length; i++, res = res.sqr()) {
31204 if (w[i] !== 0) break;
31205 }
31206
31207 if (++i < w.length) {
31208 for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
31209 if (w[i] === 0) continue;
31210
31211 res = res.mul(q);
31212 }
31213 }
31214
31215 return res;
31216 };
31217
31218 // Shift-left in-place
31219 BN.prototype.iushln = function iushln (bits) {
31220 assert(typeof bits === 'number' && bits >= 0);
31221 var r = bits % 26;
31222 var s = (bits - r) / 26;
31223 var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);
31224 var i;
31225
31226 if (r !== 0) {
31227 var carry = 0;
31228
31229 for (i = 0; i < this.length; i++) {
31230 var newCarry = this.words[i] & carryMask;
31231 var c = ((this.words[i] | 0) - newCarry) << r;
31232 this.words[i] = c | carry;
31233 carry = newCarry >>> (26 - r);
31234 }
31235
31236 if (carry) {
31237 this.words[i] = carry;
31238 this.length++;
31239 }
31240 }
31241
31242 if (s !== 0) {
31243 for (i = this.length - 1; i >= 0; i--) {
31244 this.words[i + s] = this.words[i];
31245 }
31246
31247 for (i = 0; i < s; i++) {
31248 this.words[i] = 0;
31249 }
31250
31251 this.length += s;
31252 }
31253
31254 return this.strip();
31255 };
31256
31257 BN.prototype.ishln = function ishln (bits) {
31258 // TODO(indutny): implement me
31259 assert(this.negative === 0);
31260 return this.iushln(bits);
31261 };
31262
31263 // Shift-right in-place
31264 // NOTE: `hint` is a lowest bit before trailing zeroes
31265 // NOTE: if `extended` is present - it will be filled with destroyed bits
31266 BN.prototype.iushrn = function iushrn (bits, hint, extended) {
31267 assert(typeof bits === 'number' && bits >= 0);
31268 var h;
31269 if (hint) {
31270 h = (hint - (hint % 26)) / 26;
31271 } else {
31272 h = 0;
31273 }
31274
31275 var r = bits % 26;
31276 var s = Math.min((bits - r) / 26, this.length);
31277 var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
31278 var maskedWords = extended;
31279
31280 h -= s;
31281 h = Math.max(0, h);
31282
31283 // Extended mode, copy masked part
31284 if (maskedWords) {
31285 for (var i = 0; i < s; i++) {
31286 maskedWords.words[i] = this.words[i];
31287 }
31288 maskedWords.length = s;
31289 }
31290
31291 if (s === 0) {
31292 // No-op, we should not move anything at all
31293 } else if (this.length > s) {
31294 this.length -= s;
31295 for (i = 0; i < this.length; i++) {
31296 this.words[i] = this.words[i + s];
31297 }
31298 } else {
31299 this.words[0] = 0;
31300 this.length = 1;
31301 }
31302
31303 var carry = 0;
31304 for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
31305 var word = this.words[i] | 0;
31306 this.words[i] = (carry << (26 - r)) | (word >>> r);
31307 carry = word & mask;
31308 }
31309
31310 // Push carried bits as a mask
31311 if (maskedWords && carry !== 0) {
31312 maskedWords.words[maskedWords.length++] = carry;
31313 }
31314
31315 if (this.length === 0) {
31316 this.words[0] = 0;
31317 this.length = 1;
31318 }
31319
31320 return this.strip();
31321 };
31322
31323 BN.prototype.ishrn = function ishrn (bits, hint, extended) {
31324 // TODO(indutny): implement me
31325 assert(this.negative === 0);
31326 return this.iushrn(bits, hint, extended);
31327 };
31328
31329 // Shift-left
31330 BN.prototype.shln = function shln (bits) {
31331 return this.clone().ishln(bits);
31332 };
31333
31334 BN.prototype.ushln = function ushln (bits) {
31335 return this.clone().iushln(bits);
31336 };
31337
31338 // Shift-right
31339 BN.prototype.shrn = function shrn (bits) {
31340 return this.clone().ishrn(bits);
31341 };
31342
31343 BN.prototype.ushrn = function ushrn (bits) {
31344 return this.clone().iushrn(bits);
31345 };
31346
31347 // Test if n bit is set
31348 BN.prototype.testn = function testn (bit) {
31349 assert(typeof bit === 'number' && bit >= 0);
31350 var r = bit % 26;
31351 var s = (bit - r) / 26;
31352 var q = 1 << r;
31353
31354 // Fast case: bit is much higher than all existing words
31355 if (this.length <= s) return false;
31356
31357 // Check bit and return
31358 var w = this.words[s];
31359
31360 return !!(w & q);
31361 };
31362
31363 // Return only lowers bits of number (in-place)
31364 BN.prototype.imaskn = function imaskn (bits) {
31365 assert(typeof bits === 'number' && bits >= 0);
31366 var r = bits % 26;
31367 var s = (bits - r) / 26;
31368
31369 assert(this.negative === 0, 'imaskn works only with positive numbers');
31370
31371 if (this.length <= s) {
31372 return this;
31373 }
31374
31375 if (r !== 0) {
31376 s++;
31377 }
31378 this.length = Math.min(s, this.length);
31379
31380 if (r !== 0) {
31381 var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
31382 this.words[this.length - 1] &= mask;
31383 }
31384
31385 return this.strip();
31386 };
31387
31388 // Return only lowers bits of number
31389 BN.prototype.maskn = function maskn (bits) {
31390 return this.clone().imaskn(bits);
31391 };
31392
31393 // Add plain number `num` to `this`
31394 BN.prototype.iaddn = function iaddn (num) {
31395 assert(typeof num === 'number');
31396 assert(num < 0x4000000);
31397 if (num < 0) return this.isubn(-num);
31398
31399 // Possible sign change
31400 if (this.negative !== 0) {
31401 if (this.length === 1 && (this.words[0] | 0) < num) {
31402 this.words[0] = num - (this.words[0] | 0);
31403 this.negative = 0;
31404 return this;
31405 }
31406
31407 this.negative = 0;
31408 this.isubn(num);
31409 this.negative = 1;
31410 return this;
31411 }
31412
31413 // Add without checks
31414 return this._iaddn(num);
31415 };
31416
31417 BN.prototype._iaddn = function _iaddn (num) {
31418 this.words[0] += num;
31419
31420 // Carry
31421 for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {
31422 this.words[i] -= 0x4000000;
31423 if (i === this.length - 1) {
31424 this.words[i + 1] = 1;
31425 } else {
31426 this.words[i + 1]++;
31427 }
31428 }
31429 this.length = Math.max(this.length, i + 1);
31430
31431 return this;
31432 };
31433
31434 // Subtract plain number `num` from `this`
31435 BN.prototype.isubn = function isubn (num) {
31436 assert(typeof num === 'number');
31437 assert(num < 0x4000000);
31438 if (num < 0) return this.iaddn(-num);
31439
31440 if (this.negative !== 0) {
31441 this.negative = 0;
31442 this.iaddn(num);
31443 this.negative = 1;
31444 return this;
31445 }
31446
31447 this.words[0] -= num;
31448
31449 if (this.length === 1 && this.words[0] < 0) {
31450 this.words[0] = -this.words[0];
31451 this.negative = 1;
31452 } else {
31453 // Carry
31454 for (var i = 0; i < this.length && this.words[i] < 0; i++) {
31455 this.words[i] += 0x4000000;
31456 this.words[i + 1] -= 1;
31457 }
31458 }
31459
31460 return this.strip();
31461 };
31462
31463 BN.prototype.addn = function addn (num) {
31464 return this.clone().iaddn(num);
31465 };
31466
31467 BN.prototype.subn = function subn (num) {
31468 return this.clone().isubn(num);
31469 };
31470
31471 BN.prototype.iabs = function iabs () {
31472 this.negative = 0;
31473
31474 return this;
31475 };
31476
31477 BN.prototype.abs = function abs () {
31478 return this.clone().iabs();
31479 };
31480
31481 BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {
31482 var len = num.length + shift;
31483 var i;
31484
31485 this._expand(len);
31486
31487 var w;
31488 var carry = 0;
31489 for (i = 0; i < num.length; i++) {
31490 w = (this.words[i + shift] | 0) + carry;
31491 var right = (num.words[i] | 0) * mul;
31492 w -= right & 0x3ffffff;
31493 carry = (w >> 26) - ((right / 0x4000000) | 0);
31494 this.words[i + shift] = w & 0x3ffffff;
31495 }
31496 for (; i < this.length - shift; i++) {
31497 w = (this.words[i + shift] | 0) + carry;
31498 carry = w >> 26;
31499 this.words[i + shift] = w & 0x3ffffff;
31500 }
31501
31502 if (carry === 0) return this.strip();
31503
31504 // Subtraction overflow
31505 assert(carry === -1);
31506 carry = 0;
31507 for (i = 0; i < this.length; i++) {
31508 w = -(this.words[i] | 0) + carry;
31509 carry = w >> 26;
31510 this.words[i] = w & 0x3ffffff;
31511 }
31512 this.negative = 1;
31513
31514 return this.strip();
31515 };
31516
31517 BN.prototype._wordDiv = function _wordDiv (num, mode) {
31518 var shift = this.length - num.length;
31519
31520 var a = this.clone();
31521 var b = num;
31522
31523 // Normalize
31524 var bhi = b.words[b.length - 1] | 0;
31525 var bhiBits = this._countBits(bhi);
31526 shift = 26 - bhiBits;
31527 if (shift !== 0) {
31528 b = b.ushln(shift);
31529 a.iushln(shift);
31530 bhi = b.words[b.length - 1] | 0;
31531 }
31532
31533 // Initialize quotient
31534 var m = a.length - b.length;
31535 var q;
31536
31537 if (mode !== 'mod') {
31538 q = new BN(null);
31539 q.length = m + 1;
31540 q.words = new Array(q.length);
31541 for (var i = 0; i < q.length; i++) {
31542 q.words[i] = 0;
31543 }
31544 }
31545
31546 var diff = a.clone()._ishlnsubmul(b, 1, m);
31547 if (diff.negative === 0) {
31548 a = diff;
31549 if (q) {
31550 q.words[m] = 1;
31551 }
31552 }
31553
31554 for (var j = m - 1; j >= 0; j--) {
31555 var qj = (a.words[b.length + j] | 0) * 0x4000000 +
31556 (a.words[b.length + j - 1] | 0);
31557
31558 // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max
31559 // (0x7ffffff)
31560 qj = Math.min((qj / bhi) | 0, 0x3ffffff);
31561
31562 a._ishlnsubmul(b, qj, j);
31563 while (a.negative !== 0) {
31564 qj--;
31565 a.negative = 0;
31566 a._ishlnsubmul(b, 1, j);
31567 if (!a.isZero()) {
31568 a.negative ^= 1;
31569 }
31570 }
31571 if (q) {
31572 q.words[j] = qj;
31573 }
31574 }
31575 if (q) {
31576 q.strip();
31577 }
31578 a.strip();
31579
31580 // Denormalize
31581 if (mode !== 'div' && shift !== 0) {
31582 a.iushrn(shift);
31583 }
31584
31585 return {
31586 div: q || null,
31587 mod: a
31588 };
31589 };
31590
31591 // NOTE: 1) `mode` can be set to `mod` to request mod only,
31592 // to `div` to request div only, or be absent to
31593 // request both div & mod
31594 // 2) `positive` is true if unsigned mod is requested
31595 BN.prototype.divmod = function divmod (num, mode, positive) {
31596 assert(!num.isZero());
31597
31598 if (this.isZero()) {
31599 return {
31600 div: new BN(0),
31601 mod: new BN(0)
31602 };
31603 }
31604
31605 var div, mod, res;
31606 if (this.negative !== 0 && num.negative === 0) {
31607 res = this.neg().divmod(num, mode);
31608
31609 if (mode !== 'mod') {
31610 div = res.div.neg();
31611 }
31612
31613 if (mode !== 'div') {
31614 mod = res.mod.neg();
31615 if (positive && mod.negative !== 0) {
31616 mod.iadd(num);
31617 }
31618 }
31619
31620 return {
31621 div: div,
31622 mod: mod
31623 };
31624 }
31625
31626 if (this.negative === 0 && num.negative !== 0) {
31627 res = this.divmod(num.neg(), mode);
31628
31629 if (mode !== 'mod') {
31630 div = res.div.neg();
31631 }
31632
31633 return {
31634 div: div,
31635 mod: res.mod
31636 };
31637 }
31638
31639 if ((this.negative & num.negative) !== 0) {
31640 res = this.neg().divmod(num.neg(), mode);
31641
31642 if (mode !== 'div') {
31643 mod = res.mod.neg();
31644 if (positive && mod.negative !== 0) {
31645 mod.isub(num);
31646 }
31647 }
31648
31649 return {
31650 div: res.div,
31651 mod: mod
31652 };
31653 }
31654
31655 // Both numbers are positive at this point
31656
31657 // Strip both numbers to approximate shift value
31658 if (num.length > this.length || this.cmp(num) < 0) {
31659 return {
31660 div: new BN(0),
31661 mod: this
31662 };
31663 }
31664
31665 // Very short reduction
31666 if (num.length === 1) {
31667 if (mode === 'div') {
31668 return {
31669 div: this.divn(num.words[0]),
31670 mod: null
31671 };
31672 }
31673
31674 if (mode === 'mod') {
31675 return {
31676 div: null,
31677 mod: new BN(this.modn(num.words[0]))
31678 };
31679 }
31680
31681 return {
31682 div: this.divn(num.words[0]),
31683 mod: new BN(this.modn(num.words[0]))
31684 };
31685 }
31686
31687 return this._wordDiv(num, mode);
31688 };
31689
31690 // Find `this` / `num`
31691 BN.prototype.div = function div (num) {
31692 return this.divmod(num, 'div', false).div;
31693 };
31694
31695 // Find `this` % `num`
31696 BN.prototype.mod = function mod (num) {
31697 return this.divmod(num, 'mod', false).mod;
31698 };
31699
31700 BN.prototype.umod = function umod (num) {
31701 return this.divmod(num, 'mod', true).mod;
31702 };
31703
31704 // Find Round(`this` / `num`)
31705 BN.prototype.divRound = function divRound (num) {
31706 var dm = this.divmod(num);
31707
31708 // Fast case - exact division
31709 if (dm.mod.isZero()) return dm.div;
31710
31711 var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
31712
31713 var half = num.ushrn(1);
31714 var r2 = num.andln(1);
31715 var cmp = mod.cmp(half);
31716
31717 // Round down
31718 if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;
31719
31720 // Round up
31721 return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
31722 };
31723
31724 BN.prototype.modn = function modn (num) {
31725 assert(num <= 0x3ffffff);
31726 var p = (1 << 26) % num;
31727
31728 var acc = 0;
31729 for (var i = this.length - 1; i >= 0; i--) {
31730 acc = (p * acc + (this.words[i] | 0)) % num;
31731 }
31732
31733 return acc;
31734 };
31735
31736 // In-place division by number
31737 BN.prototype.idivn = function idivn (num) {
31738 assert(num <= 0x3ffffff);
31739
31740 var carry = 0;
31741 for (var i = this.length - 1; i >= 0; i--) {
31742 var w = (this.words[i] | 0) + carry * 0x4000000;
31743 this.words[i] = (w / num) | 0;
31744 carry = w % num;
31745 }
31746
31747 return this.strip();
31748 };
31749
31750 BN.prototype.divn = function divn (num) {
31751 return this.clone().idivn(num);
31752 };
31753
31754 BN.prototype.egcd = function egcd (p) {
31755 assert(p.negative === 0);
31756 assert(!p.isZero());
31757
31758 var x = this;
31759 var y = p.clone();
31760
31761 if (x.negative !== 0) {
31762 x = x.umod(p);
31763 } else {
31764 x = x.clone();
31765 }
31766
31767 // A * x + B * y = x
31768 var A = new BN(1);
31769 var B = new BN(0);
31770
31771 // C * x + D * y = y
31772 var C = new BN(0);
31773 var D = new BN(1);
31774
31775 var g = 0;
31776
31777 while (x.isEven() && y.isEven()) {
31778 x.iushrn(1);
31779 y.iushrn(1);
31780 ++g;
31781 }
31782
31783 var yp = y.clone();
31784 var xp = x.clone();
31785
31786 while (!x.isZero()) {
31787 for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
31788 if (i > 0) {
31789 x.iushrn(i);
31790 while (i-- > 0) {
31791 if (A.isOdd() || B.isOdd()) {
31792 A.iadd(yp);
31793 B.isub(xp);
31794 }
31795
31796 A.iushrn(1);
31797 B.iushrn(1);
31798 }
31799 }
31800
31801 for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
31802 if (j > 0) {
31803 y.iushrn(j);
31804 while (j-- > 0) {
31805 if (C.isOdd() || D.isOdd()) {
31806 C.iadd(yp);
31807 D.isub(xp);
31808 }
31809
31810 C.iushrn(1);
31811 D.iushrn(1);
31812 }
31813 }
31814
31815 if (x.cmp(y) >= 0) {
31816 x.isub(y);
31817 A.isub(C);
31818 B.isub(D);
31819 } else {
31820 y.isub(x);
31821 C.isub(A);
31822 D.isub(B);
31823 }
31824 }
31825
31826 return {
31827 a: C,
31828 b: D,
31829 gcd: y.iushln(g)
31830 };
31831 };
31832
31833 // This is reduced incarnation of the binary EEA
31834 // above, designated to invert members of the
31835 // _prime_ fields F(p) at a maximal speed
31836 BN.prototype._invmp = function _invmp (p) {
31837 assert(p.negative === 0);
31838 assert(!p.isZero());
31839
31840 var a = this;
31841 var b = p.clone();
31842
31843 if (a.negative !== 0) {
31844 a = a.umod(p);
31845 } else {
31846 a = a.clone();
31847 }
31848
31849 var x1 = new BN(1);
31850 var x2 = new BN(0);
31851
31852 var delta = b.clone();
31853
31854 while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
31855 for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
31856 if (i > 0) {
31857 a.iushrn(i);
31858 while (i-- > 0) {
31859 if (x1.isOdd()) {
31860 x1.iadd(delta);
31861 }
31862
31863 x1.iushrn(1);
31864 }
31865 }
31866
31867 for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
31868 if (j > 0) {
31869 b.iushrn(j);
31870 while (j-- > 0) {
31871 if (x2.isOdd()) {
31872 x2.iadd(delta);
31873 }
31874
31875 x2.iushrn(1);
31876 }
31877 }
31878
31879 if (a.cmp(b) >= 0) {
31880 a.isub(b);
31881 x1.isub(x2);
31882 } else {
31883 b.isub(a);
31884 x2.isub(x1);
31885 }
31886 }
31887
31888 var res;
31889 if (a.cmpn(1) === 0) {
31890 res = x1;
31891 } else {
31892 res = x2;
31893 }
31894
31895 if (res.cmpn(0) < 0) {
31896 res.iadd(p);
31897 }
31898
31899 return res;
31900 };
31901
31902 BN.prototype.gcd = function gcd (num) {
31903 if (this.isZero()) return num.abs();
31904 if (num.isZero()) return this.abs();
31905
31906 var a = this.clone();
31907 var b = num.clone();
31908 a.negative = 0;
31909 b.negative = 0;
31910
31911 // Remove common factor of two
31912 for (var shift = 0; a.isEven() && b.isEven(); shift++) {
31913 a.iushrn(1);
31914 b.iushrn(1);
31915 }
31916
31917 do {
31918 while (a.isEven()) {
31919 a.iushrn(1);
31920 }
31921 while (b.isEven()) {
31922 b.iushrn(1);
31923 }
31924
31925 var r = a.cmp(b);
31926 if (r < 0) {
31927 // Swap `a` and `b` to make `a` always bigger than `b`
31928 var t = a;
31929 a = b;
31930 b = t;
31931 } else if (r === 0 || b.cmpn(1) === 0) {
31932 break;
31933 }
31934
31935 a.isub(b);
31936 } while (true);
31937
31938 return b.iushln(shift);
31939 };
31940
31941 // Invert number in the field F(num)
31942 BN.prototype.invm = function invm (num) {
31943 return this.egcd(num).a.umod(num);
31944 };
31945
31946 BN.prototype.isEven = function isEven () {
31947 return (this.words[0] & 1) === 0;
31948 };
31949
31950 BN.prototype.isOdd = function isOdd () {
31951 return (this.words[0] & 1) === 1;
31952 };
31953
31954 // And first word and num
31955 BN.prototype.andln = function andln (num) {
31956 return this.words[0] & num;
31957 };
31958
31959 // Increment at the bit position in-line
31960 BN.prototype.bincn = function bincn (bit) {
31961 assert(typeof bit === 'number');
31962 var r = bit % 26;
31963 var s = (bit - r) / 26;
31964 var q = 1 << r;
31965
31966 // Fast case: bit is much higher than all existing words
31967 if (this.length <= s) {
31968 this._expand(s + 1);
31969 this.words[s] |= q;
31970 return this;
31971 }
31972
31973 // Add bit and propagate, if needed
31974 var carry = q;
31975 for (var i = s; carry !== 0 && i < this.length; i++) {
31976 var w = this.words[i] | 0;
31977 w += carry;
31978 carry = w >>> 26;
31979 w &= 0x3ffffff;
31980 this.words[i] = w;
31981 }
31982 if (carry !== 0) {
31983 this.words[i] = carry;
31984 this.length++;
31985 }
31986 return this;
31987 };
31988
31989 BN.prototype.isZero = function isZero () {
31990 return this.length === 1 && this.words[0] === 0;
31991 };
31992
31993 BN.prototype.cmpn = function cmpn (num) {
31994 var negative = num < 0;
31995
31996 if (this.negative !== 0 && !negative) return -1;
31997 if (this.negative === 0 && negative) return 1;
31998
31999 this.strip();
32000
32001 var res;
32002 if (this.length > 1) {
32003 res = 1;
32004 } else {
32005 if (negative) {
32006 num = -num;
32007 }
32008
32009 assert(num <= 0x3ffffff, 'Number is too big');
32010
32011 var w = this.words[0] | 0;
32012 res = w === num ? 0 : w < num ? -1 : 1;
32013 }
32014 if (this.negative !== 0) return -res | 0;
32015 return res;
32016 };
32017
32018 // Compare two numbers and return:
32019 // 1 - if `this` > `num`
32020 // 0 - if `this` == `num`
32021 // -1 - if `this` < `num`
32022 BN.prototype.cmp = function cmp (num) {
32023 if (this.negative !== 0 && num.negative === 0) return -1;
32024 if (this.negative === 0 && num.negative !== 0) return 1;
32025
32026 var res = this.ucmp(num);
32027 if (this.negative !== 0) return -res | 0;
32028 return res;
32029 };
32030
32031 // Unsigned comparison
32032 BN.prototype.ucmp = function ucmp (num) {
32033 // At this point both numbers have the same sign
32034 if (this.length > num.length) return 1;
32035 if (this.length < num.length) return -1;
32036
32037 var res = 0;
32038 for (var i = this.length - 1; i >= 0; i--) {
32039 var a = this.words[i] | 0;
32040 var b = num.words[i] | 0;
32041
32042 if (a === b) continue;
32043 if (a < b) {
32044 res = -1;
32045 } else if (a > b) {
32046 res = 1;
32047 }
32048 break;
32049 }
32050 return res;
32051 };
32052
32053 BN.prototype.gtn = function gtn (num) {
32054 return this.cmpn(num) === 1;
32055 };
32056
32057 BN.prototype.gt = function gt (num) {
32058 return this.cmp(num) === 1;
32059 };
32060
32061 BN.prototype.gten = function gten (num) {
32062 return this.cmpn(num) >= 0;
32063 };
32064
32065 BN.prototype.gte = function gte (num) {
32066 return this.cmp(num) >= 0;
32067 };
32068
32069 BN.prototype.ltn = function ltn (num) {
32070 return this.cmpn(num) === -1;
32071 };
32072
32073 BN.prototype.lt = function lt (num) {
32074 return this.cmp(num) === -1;
32075 };
32076
32077 BN.prototype.lten = function lten (num) {
32078 return this.cmpn(num) <= 0;
32079 };
32080
32081 BN.prototype.lte = function lte (num) {
32082 return this.cmp(num) <= 0;
32083 };
32084
32085 BN.prototype.eqn = function eqn (num) {
32086 return this.cmpn(num) === 0;
32087 };
32088
32089 BN.prototype.eq = function eq (num) {
32090 return this.cmp(num) === 0;
32091 };
32092
32093 //
32094 // A reduce context, could be using montgomery or something better, depending
32095 // on the `m` itself.
32096 //
32097 BN.red = function red (num) {
32098 return new Red(num);
32099 };
32100
32101 BN.prototype.toRed = function toRed (ctx) {
32102 assert(!this.red, 'Already a number in reduction context');
32103 assert(this.negative === 0, 'red works only with positives');
32104 return ctx.convertTo(this)._forceRed(ctx);
32105 };
32106
32107 BN.prototype.fromRed = function fromRed () {
32108 assert(this.red, 'fromRed works only with numbers in reduction context');
32109 return this.red.convertFrom(this);
32110 };
32111
32112 BN.prototype._forceRed = function _forceRed (ctx) {
32113 this.red = ctx;
32114 return this;
32115 };
32116
32117 BN.prototype.forceRed = function forceRed (ctx) {
32118 assert(!this.red, 'Already a number in reduction context');
32119 return this._forceRed(ctx);
32120 };
32121
32122 BN.prototype.redAdd = function redAdd (num) {
32123 assert(this.red, 'redAdd works only with red numbers');
32124 return this.red.add(this, num);
32125 };
32126
32127 BN.prototype.redIAdd = function redIAdd (num) {
32128 assert(this.red, 'redIAdd works only with red numbers');
32129 return this.red.iadd(this, num);
32130 };
32131
32132 BN.prototype.redSub = function redSub (num) {
32133 assert(this.red, 'redSub works only with red numbers');
32134 return this.red.sub(this, num);
32135 };
32136
32137 BN.prototype.redISub = function redISub (num) {
32138 assert(this.red, 'redISub works only with red numbers');
32139 return this.red.isub(this, num);
32140 };
32141
32142 BN.prototype.redShl = function redShl (num) {
32143 assert(this.red, 'redShl works only with red numbers');
32144 return this.red.shl(this, num);
32145 };
32146
32147 BN.prototype.redMul = function redMul (num) {
32148 assert(this.red, 'redMul works only with red numbers');
32149 this.red._verify2(this, num);
32150 return this.red.mul(this, num);
32151 };
32152
32153 BN.prototype.redIMul = function redIMul (num) {
32154 assert(this.red, 'redMul works only with red numbers');
32155 this.red._verify2(this, num);
32156 return this.red.imul(this, num);
32157 };
32158
32159 BN.prototype.redSqr = function redSqr () {
32160 assert(this.red, 'redSqr works only with red numbers');
32161 this.red._verify1(this);
32162 return this.red.sqr(this);
32163 };
32164
32165 BN.prototype.redISqr = function redISqr () {
32166 assert(this.red, 'redISqr works only with red numbers');
32167 this.red._verify1(this);
32168 return this.red.isqr(this);
32169 };
32170
32171 // Square root over p
32172 BN.prototype.redSqrt = function redSqrt () {
32173 assert(this.red, 'redSqrt works only with red numbers');
32174 this.red._verify1(this);
32175 return this.red.sqrt(this);
32176 };
32177
32178 BN.prototype.redInvm = function redInvm () {
32179 assert(this.red, 'redInvm works only with red numbers');
32180 this.red._verify1(this);
32181 return this.red.invm(this);
32182 };
32183
32184 // Return negative clone of `this` % `red modulo`
32185 BN.prototype.redNeg = function redNeg () {
32186 assert(this.red, 'redNeg works only with red numbers');
32187 this.red._verify1(this);
32188 return this.red.neg(this);
32189 };
32190
32191 BN.prototype.redPow = function redPow (num) {
32192 assert(this.red && !num.red, 'redPow(normalNum)');
32193 this.red._verify1(this);
32194 return this.red.pow(this, num);
32195 };
32196
32197 // Prime numbers with efficient reduction
32198 var primes = {
32199 k256: null,
32200 p224: null,
32201 p192: null,
32202 p25519: null
32203 };
32204
32205 // Pseudo-Mersenne prime
32206 function MPrime (name, p) {
32207 // P = 2 ^ N - K
32208 this.name = name;
32209 this.p = new BN(p, 16);
32210 this.n = this.p.bitLength();
32211 this.k = new BN(1).iushln(this.n).isub(this.p);
32212
32213 this.tmp = this._tmp();
32214 }
32215
32216 MPrime.prototype._tmp = function _tmp () {
32217 var tmp = new BN(null);
32218 tmp.words = new Array(Math.ceil(this.n / 13));
32219 return tmp;
32220 };
32221
32222 MPrime.prototype.ireduce = function ireduce (num) {
32223 // Assumes that `num` is less than `P^2`
32224 // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)
32225 var r = num;
32226 var rlen;
32227
32228 do {
32229 this.split(r, this.tmp);
32230 r = this.imulK(r);
32231 r = r.iadd(this.tmp);
32232 rlen = r.bitLength();
32233 } while (rlen > this.n);
32234
32235 var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
32236 if (cmp === 0) {
32237 r.words[0] = 0;
32238 r.length = 1;
32239 } else if (cmp > 0) {
32240 r.isub(this.p);
32241 } else {
32242 r.strip();
32243 }
32244
32245 return r;
32246 };
32247
32248 MPrime.prototype.split = function split (input, out) {
32249 input.iushrn(this.n, 0, out);
32250 };
32251
32252 MPrime.prototype.imulK = function imulK (num) {
32253 return num.imul(this.k);
32254 };
32255
32256 function K256 () {
32257 MPrime.call(
32258 this,
32259 'k256',
32260 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');
32261 }
32262 inherits(K256, MPrime);
32263
32264 K256.prototype.split = function split (input, output) {
32265 // 256 = 9 * 26 + 22
32266 var mask = 0x3fffff;
32267
32268 var outLen = Math.min(input.length, 9);
32269 for (var i = 0; i < outLen; i++) {
32270 output.words[i] = input.words[i];
32271 }
32272 output.length = outLen;
32273
32274 if (input.length <= 9) {
32275 input.words[0] = 0;
32276 input.length = 1;
32277 return;
32278 }
32279
32280 // Shift by 9 limbs
32281 var prev = input.words[9];
32282 output.words[output.length++] = prev & mask;
32283
32284 for (i = 10; i < input.length; i++) {
32285 var next = input.words[i] | 0;
32286 input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);
32287 prev = next;
32288 }
32289 prev >>>= 22;
32290 input.words[i - 10] = prev;
32291 if (prev === 0 && input.length > 10) {
32292 input.length -= 10;
32293 } else {
32294 input.length -= 9;
32295 }
32296 };
32297
32298 K256.prototype.imulK = function imulK (num) {
32299 // K = 0x1000003d1 = [ 0x40, 0x3d1 ]
32300 num.words[num.length] = 0;
32301 num.words[num.length + 1] = 0;
32302 num.length += 2;
32303
32304 // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390
32305 var lo = 0;
32306 for (var i = 0; i < num.length; i++) {
32307 var w = num.words[i] | 0;
32308 lo += w * 0x3d1;
32309 num.words[i] = lo & 0x3ffffff;
32310 lo = w * 0x40 + ((lo / 0x4000000) | 0);
32311 }
32312
32313 // Fast length reduction
32314 if (num.words[num.length - 1] === 0) {
32315 num.length--;
32316 if (num.words[num.length - 1] === 0) {
32317 num.length--;
32318 }
32319 }
32320 return num;
32321 };
32322
32323 function P224 () {
32324 MPrime.call(
32325 this,
32326 'p224',
32327 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');
32328 }
32329 inherits(P224, MPrime);
32330
32331 function P192 () {
32332 MPrime.call(
32333 this,
32334 'p192',
32335 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');
32336 }
32337 inherits(P192, MPrime);
32338
32339 function P25519 () {
32340 // 2 ^ 255 - 19
32341 MPrime.call(
32342 this,
32343 '25519',
32344 '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');
32345 }
32346 inherits(P25519, MPrime);
32347
32348 P25519.prototype.imulK = function imulK (num) {
32349 // K = 0x13
32350 var carry = 0;
32351 for (var i = 0; i < num.length; i++) {
32352 var hi = (num.words[i] | 0) * 0x13 + carry;
32353 var lo = hi & 0x3ffffff;
32354 hi >>>= 26;
32355
32356 num.words[i] = lo;
32357 carry = hi;
32358 }
32359 if (carry !== 0) {
32360 num.words[num.length++] = carry;
32361 }
32362 return num;
32363 };
32364
32365 // Exported mostly for testing purposes, use plain name instead
32366 BN._prime = function prime (name) {
32367 // Cached version of prime
32368 if (primes[name]) return primes[name];
32369
32370 var prime;
32371 if (name === 'k256') {
32372 prime = new K256();
32373 } else if (name === 'p224') {
32374 prime = new P224();
32375 } else if (name === 'p192') {
32376 prime = new P192();
32377 } else if (name === 'p25519') {
32378 prime = new P25519();
32379 } else {
32380 throw new Error('Unknown prime ' + name);
32381 }
32382 primes[name] = prime;
32383
32384 return prime;
32385 };
32386
32387 //
32388 // Base reduction engine
32389 //
32390 function Red (m) {
32391 if (typeof m === 'string') {
32392 var prime = BN._prime(m);
32393 this.m = prime.p;
32394 this.prime = prime;
32395 } else {
32396 assert(m.gtn(1), 'modulus must be greater than 1');
32397 this.m = m;
32398 this.prime = null;
32399 }
32400 }
32401
32402 Red.prototype._verify1 = function _verify1 (a) {
32403 assert(a.negative === 0, 'red works only with positives');
32404 assert(a.red, 'red works only with red numbers');
32405 };
32406
32407 Red.prototype._verify2 = function _verify2 (a, b) {
32408 assert((a.negative | b.negative) === 0, 'red works only with positives');
32409 assert(a.red && a.red === b.red,
32410 'red works only with red numbers');
32411 };
32412
32413 Red.prototype.imod = function imod (a) {
32414 if (this.prime) return this.prime.ireduce(a)._forceRed(this);
32415 return a.umod(this.m)._forceRed(this);
32416 };
32417
32418 Red.prototype.neg = function neg (a) {
32419 if (a.isZero()) {
32420 return a.clone();
32421 }
32422
32423 return this.m.sub(a)._forceRed(this);
32424 };
32425
32426 Red.prototype.add = function add (a, b) {
32427 this._verify2(a, b);
32428
32429 var res = a.add(b);
32430 if (res.cmp(this.m) >= 0) {
32431 res.isub(this.m);
32432 }
32433 return res._forceRed(this);
32434 };
32435
32436 Red.prototype.iadd = function iadd (a, b) {
32437 this._verify2(a, b);
32438
32439 var res = a.iadd(b);
32440 if (res.cmp(this.m) >= 0) {
32441 res.isub(this.m);
32442 }
32443 return res;
32444 };
32445
32446 Red.prototype.sub = function sub (a, b) {
32447 this._verify2(a, b);
32448
32449 var res = a.sub(b);
32450 if (res.cmpn(0) < 0) {
32451 res.iadd(this.m);
32452 }
32453 return res._forceRed(this);
32454 };
32455
32456 Red.prototype.isub = function isub (a, b) {
32457 this._verify2(a, b);
32458
32459 var res = a.isub(b);
32460 if (res.cmpn(0) < 0) {
32461 res.iadd(this.m);
32462 }
32463 return res;
32464 };
32465
32466 Red.prototype.shl = function shl (a, num) {
32467 this._verify1(a);
32468 return this.imod(a.ushln(num));
32469 };
32470
32471 Red.prototype.imul = function imul (a, b) {
32472 this._verify2(a, b);
32473 return this.imod(a.imul(b));
32474 };
32475
32476 Red.prototype.mul = function mul (a, b) {
32477 this._verify2(a, b);
32478 return this.imod(a.mul(b));
32479 };
32480
32481 Red.prototype.isqr = function isqr (a) {
32482 return this.imul(a, a.clone());
32483 };
32484
32485 Red.prototype.sqr = function sqr (a) {
32486 return this.mul(a, a);
32487 };
32488
32489 Red.prototype.sqrt = function sqrt (a) {
32490 if (a.isZero()) return a.clone();
32491
32492 var mod3 = this.m.andln(3);
32493 assert(mod3 % 2 === 1);
32494
32495 // Fast case
32496 if (mod3 === 3) {
32497 var pow = this.m.add(new BN(1)).iushrn(2);
32498 return this.pow(a, pow);
32499 }
32500
32501 // Tonelli-Shanks algorithm (Totally unoptimized and slow)
32502 //
32503 // Find Q and S, that Q * 2 ^ S = (P - 1)
32504 var q = this.m.subn(1);
32505 var s = 0;
32506 while (!q.isZero() && q.andln(1) === 0) {
32507 s++;
32508 q.iushrn(1);
32509 }
32510 assert(!q.isZero());
32511
32512 var one = new BN(1).toRed(this);
32513 var nOne = one.redNeg();
32514
32515 // Find quadratic non-residue
32516 // NOTE: Max is such because of generalized Riemann hypothesis.
32517 var lpow = this.m.subn(1).iushrn(1);
32518 var z = this.m.bitLength();
32519 z = new BN(2 * z * z).toRed(this);
32520
32521 while (this.pow(z, lpow).cmp(nOne) !== 0) {
32522 z.redIAdd(nOne);
32523 }
32524
32525 var c = this.pow(z, q);
32526 var r = this.pow(a, q.addn(1).iushrn(1));
32527 var t = this.pow(a, q);
32528 var m = s;
32529 while (t.cmp(one) !== 0) {
32530 var tmp = t;
32531 for (var i = 0; tmp.cmp(one) !== 0; i++) {
32532 tmp = tmp.redSqr();
32533 }
32534 assert(i < m);
32535 var b = this.pow(c, new BN(1).iushln(m - i - 1));
32536
32537 r = r.redMul(b);
32538 c = b.redSqr();
32539 t = t.redMul(c);
32540 m = i;
32541 }
32542
32543 return r;
32544 };
32545
32546 Red.prototype.invm = function invm (a) {
32547 var inv = a._invmp(this.m);
32548 if (inv.negative !== 0) {
32549 inv.negative = 0;
32550 return this.imod(inv).redNeg();
32551 } else {
32552 return this.imod(inv);
32553 }
32554 };
32555
32556 Red.prototype.pow = function pow (a, num) {
32557 if (num.isZero()) return new BN(1);
32558 if (num.cmpn(1) === 0) return a.clone();
32559
32560 var windowSize = 4;
32561 var wnd = new Array(1 << windowSize);
32562 wnd[0] = new BN(1).toRed(this);
32563 wnd[1] = a;
32564 for (var i = 2; i < wnd.length; i++) {
32565 wnd[i] = this.mul(wnd[i - 1], a);
32566 }
32567
32568 var res = wnd[0];
32569 var current = 0;
32570 var currentLen = 0;
32571 var start = num.bitLength() % 26;
32572 if (start === 0) {
32573 start = 26;
32574 }
32575
32576 for (i = num.length - 1; i >= 0; i--) {
32577 var word = num.words[i];
32578 for (var j = start - 1; j >= 0; j--) {
32579 var bit = (word >> j) & 1;
32580 if (res !== wnd[0]) {
32581 res = this.sqr(res);
32582 }
32583
32584 if (bit === 0 && current === 0) {
32585 currentLen = 0;
32586 continue;
32587 }
32588
32589 current <<= 1;
32590 current |= bit;
32591 currentLen++;
32592 if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
32593
32594 res = this.mul(res, wnd[current]);
32595 currentLen = 0;
32596 current = 0;
32597 }
32598 start = 26;
32599 }
32600
32601 return res;
32602 };
32603
32604 Red.prototype.convertTo = function convertTo (num) {
32605 var r = num.umod(this.m);
32606
32607 return r === num ? r.clone() : r;
32608 };
32609
32610 Red.prototype.convertFrom = function convertFrom (num) {
32611 var res = num.clone();
32612 res.red = null;
32613 return res;
32614 };
32615
32616 //
32617 // Montgomery method engine
32618 //
32619
32620 BN.mont = function mont (num) {
32621 return new Mont(num);
32622 };
32623
32624 function Mont (m) {
32625 Red.call(this, m);
32626
32627 this.shift = this.m.bitLength();
32628 if (this.shift % 26 !== 0) {
32629 this.shift += 26 - (this.shift % 26);
32630 }
32631
32632 this.r = new BN(1).iushln(this.shift);
32633 this.r2 = this.imod(this.r.sqr());
32634 this.rinv = this.r._invmp(this.m);
32635
32636 this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
32637 this.minv = this.minv.umod(this.r);
32638 this.minv = this.r.sub(this.minv);
32639 }
32640 inherits(Mont, Red);
32641
32642 Mont.prototype.convertTo = function convertTo (num) {
32643 return this.imod(num.ushln(this.shift));
32644 };
32645
32646 Mont.prototype.convertFrom = function convertFrom (num) {
32647 var r = this.imod(num.mul(this.rinv));
32648 r.red = null;
32649 return r;
32650 };
32651
32652 Mont.prototype.imul = function imul (a, b) {
32653 if (a.isZero() || b.isZero()) {
32654 a.words[0] = 0;
32655 a.length = 1;
32656 return a;
32657 }
32658
32659 var t = a.imul(b);
32660 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
32661 var u = t.isub(c).iushrn(this.shift);
32662 var res = u;
32663
32664 if (u.cmp(this.m) >= 0) {
32665 res = u.isub(this.m);
32666 } else if (u.cmpn(0) < 0) {
32667 res = u.iadd(this.m);
32668 }
32669
32670 return res._forceRed(this);
32671 };
32672
32673 Mont.prototype.mul = function mul (a, b) {
32674 if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
32675
32676 var t = a.mul(b);
32677 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
32678 var u = t.isub(c).iushrn(this.shift);
32679 var res = u;
32680 if (u.cmp(this.m) >= 0) {
32681 res = u.isub(this.m);
32682 } else if (u.cmpn(0) < 0) {
32683 res = u.iadd(this.m);
32684 }
32685
32686 return res._forceRed(this);
32687 };
32688
32689 Mont.prototype.invm = function invm (a) {
32690 // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R
32691 var res = this.imod(a._invmp(this.m).mul(this.r2));
32692 return res._forceRed(this);
32693 };
32694 })(typeof module === 'undefined' || module, this);
32695
32696 },{}],34:[function(require,module,exports){
32697 var r;
32698
32699 module.exports = function rand(len) {
32700 if (!r)
32701 r = new Rand(null);
32702
32703 return r.generate(len);
32704 };
32705
32706 function Rand(rand) {
32707 this.rand = rand;
32708 }
32709 module.exports.Rand = Rand;
32710
32711 Rand.prototype.generate = function generate(len) {
32712 return this._rand(len);
32713 };
32714
32715 if (typeof self === 'object') {
32716 if (self.crypto && self.crypto.getRandomValues) {
32717 // Modern browsers
32718 Rand.prototype._rand = function _rand(n) {
32719 var arr = new Uint8Array(n);
32720 self.crypto.getRandomValues(arr);
32721 return arr;
32722 };
32723 } else if (self.msCrypto && self.msCrypto.getRandomValues) {
32724 // IE
32725 Rand.prototype._rand = function _rand(n) {
32726 var arr = new Uint8Array(n);
32727 self.msCrypto.getRandomValues(arr);
32728 return arr;
32729 };
32730 } else {
32731 // Old junk
32732 Rand.prototype._rand = function() {
32733 throw new Error('Not implemented yet');
32734 };
32735 }
32736 } else {
32737 // Node.js or Web worker with no crypto support
32738 try {
32739 var crypto = require('crypto');
32740
32741 Rand.prototype._rand = function _rand(n) {
32742 return crypto.randomBytes(n);
32743 };
32744 } catch (e) {
32745 // Emulate crypto API using randy
32746 Rand.prototype._rand = function _rand(n) {
32747 var res = new Uint8Array(n);
32748 for (var i = 0; i < res.length; i++)
32749 res[i] = this.rand.getByte();
32750 return res;
32751 };
32752 }
32753 }
32754
32755 },{"crypto":3}],35:[function(require,module,exports){
32756 (function (Buffer){
32757 var Transform = require('stream').Transform
32758 var inherits = require('inherits')
32759 var StringDecoder = require('string_decoder').StringDecoder
32760 module.exports = CipherBase
32761 inherits(CipherBase, Transform)
32762 function CipherBase (hashMode) {
32763 Transform.call(this)
32764 this.hashMode = typeof hashMode === 'string'
32765 if (this.hashMode) {
32766 this[hashMode] = this._finalOrDigest
32767 } else {
32768 this.final = this._finalOrDigest
32769 }
32770 this._decoder = null
32771 this._encoding = null
32772 }
32773 CipherBase.prototype.update = function (data, inputEnc, outputEnc) {
32774 if (typeof data === 'string') {
32775 data = new Buffer(data, inputEnc)
32776 }
32777 var outData = this._update(data)
32778 if (this.hashMode) {
32779 return this
32780 }
32781 if (outputEnc) {
32782 outData = this._toString(outData, outputEnc)
32783 }
32784 return outData
32785 }
32786
32787 CipherBase.prototype.setAutoPadding = function () {}
32788
32789 CipherBase.prototype.getAuthTag = function () {
32790 throw new Error('trying to get auth tag in unsupported state')
32791 }
32792
32793 CipherBase.prototype.setAuthTag = function () {
32794 throw new Error('trying to set auth tag in unsupported state')
32795 }
32796
32797 CipherBase.prototype.setAAD = function () {
32798 throw new Error('trying to set aad in unsupported state')
32799 }
32800
32801 CipherBase.prototype._transform = function (data, _, next) {
32802 var err
32803 try {
32804 if (this.hashMode) {
32805 this._update(data)
32806 } else {
32807 this.push(this._update(data))
32808 }
32809 } catch (e) {
32810 err = e
32811 } finally {
32812 next(err)
32813 }
32814 }
32815 CipherBase.prototype._flush = function (done) {
32816 var err
32817 try {
32818 this.push(this._final())
32819 } catch (e) {
32820 err = e
32821 } finally {
32822 done(err)
32823 }
32824 }
32825 CipherBase.prototype._finalOrDigest = function (outputEnc) {
32826 var outData = this._final() || new Buffer('')
32827 if (outputEnc) {
32828 outData = this._toString(outData, outputEnc, true)
32829 }
32830 return outData
32831 }
32832
32833 CipherBase.prototype._toString = function (value, enc, fin) {
32834 if (!this._decoder) {
32835 this._decoder = new StringDecoder(enc)
32836 this._encoding = enc
32837 }
32838 if (this._encoding !== enc) {
32839 throw new Error('can\'t switch encodings')
32840 }
32841 var out = this._decoder.write(value)
32842 if (fin) {
32843 out += this._decoder.end()
32844 }
32845 return out
32846 }
32847
32848 }).call(this,require("buffer").Buffer)
32849 },{"buffer":5,"inherits":63,"stream":25,"string_decoder":26}],36:[function(require,module,exports){
32850 (function (Buffer){
32851 'use strict';
32852 var inherits = require('inherits')
32853 var md5 = require('./md5')
32854 var rmd160 = require('ripemd160')
32855 var sha = require('sha.js')
32856
32857 var Base = require('cipher-base')
32858
32859 function HashNoConstructor(hash) {
32860 Base.call(this, 'digest')
32861
32862 this._hash = hash
32863 this.buffers = []
32864 }
32865
32866 inherits(HashNoConstructor, Base)
32867
32868 HashNoConstructor.prototype._update = function (data) {
32869 this.buffers.push(data)
32870 }
32871
32872 HashNoConstructor.prototype._final = function () {
32873 var buf = Buffer.concat(this.buffers)
32874 var r = this._hash(buf)
32875 this.buffers = null
32876
32877 return r
32878 }
32879
32880 function Hash(hash) {
32881 Base.call(this, 'digest')
32882
32883 this._hash = hash
32884 }
32885
32886 inherits(Hash, Base)
32887
32888 Hash.prototype._update = function (data) {
32889 this._hash.update(data)
32890 }
32891
32892 Hash.prototype._final = function () {
32893 return this._hash.digest()
32894 }
32895
32896 module.exports = function createHash (alg) {
32897 alg = alg.toLowerCase()
32898 if ('md5' === alg) return new HashNoConstructor(md5)
32899 if ('rmd160' === alg || 'ripemd160' === alg) return new HashNoConstructor(rmd160)
32900
32901 return new Hash(sha(alg))
32902 }
32903
32904 }).call(this,require("buffer").Buffer)
32905 },{"./md5":38,"buffer":5,"cipher-base":35,"inherits":63,"ripemd160":71,"sha.js":80}],37:[function(require,module,exports){
32906 (function (Buffer){
32907 'use strict';
32908 var intSize = 4;
32909 var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0);
32910 var chrsz = 8;
32911
32912 function toArray(buf, bigEndian) {
32913 if ((buf.length % intSize) !== 0) {
32914 var len = buf.length + (intSize - (buf.length % intSize));
32915 buf = Buffer.concat([buf, zeroBuffer], len);
32916 }
32917
32918 var arr = [];
32919 var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE;
32920 for (var i = 0; i < buf.length; i += intSize) {
32921 arr.push(fn.call(buf, i));
32922 }
32923 return arr;
32924 }
32925
32926 function toBuffer(arr, size, bigEndian) {
32927 var buf = new Buffer(size);
32928 var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE;
32929 for (var i = 0; i < arr.length; i++) {
32930 fn.call(buf, arr[i], i * 4, true);
32931 }
32932 return buf;
32933 }
32934
32935 function hash(buf, fn, hashSize, bigEndian) {
32936 if (!Buffer.isBuffer(buf)) buf = new Buffer(buf);
32937 var arr = fn(toArray(buf, bigEndian), buf.length * chrsz);
32938 return toBuffer(arr, hashSize, bigEndian);
32939 }
32940 exports.hash = hash;
32941 }).call(this,require("buffer").Buffer)
32942 },{"buffer":5}],38:[function(require,module,exports){
32943 'use strict';
32944 /*
32945 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
32946 * Digest Algorithm, as defined in RFC 1321.
32947 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
32948 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
32949 * Distributed under the BSD License
32950 * See http://pajhome.org.uk/crypt/md5 for more info.
32951 */
32952
32953 var helpers = require('./helpers');
32954
32955 /*
32956 * Calculate the MD5 of an array of little-endian words, and a bit length
32957 */
32958 function core_md5(x, len)
32959 {
32960 /* append padding */
32961 x[len >> 5] |= 0x80 << ((len) % 32);
32962 x[(((len + 64) >>> 9) << 4) + 14] = len;
32963
32964 var a = 1732584193;
32965 var b = -271733879;
32966 var c = -1732584194;
32967 var d = 271733878;
32968
32969 for(var i = 0; i < x.length; i += 16)
32970 {
32971 var olda = a;
32972 var oldb = b;
32973 var oldc = c;
32974 var oldd = d;
32975
32976 a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
32977 d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
32978 c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
32979 b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
32980 a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
32981 d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
32982 c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
32983 b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
32984 a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
32985 d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
32986 c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
32987 b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
32988 a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
32989 d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
32990 c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
32991 b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
32992
32993 a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
32994 d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
32995 c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
32996 b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
32997 a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
32998 d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
32999 c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
33000 b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
33001 a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
33002 d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
33003 c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
33004 b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
33005 a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
33006 d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
33007 c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
33008 b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
33009
33010 a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
33011 d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
33012 c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
33013 b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
33014 a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
33015 d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
33016 c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
33017 b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
33018 a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
33019 d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
33020 c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
33021 b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
33022 a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
33023 d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
33024 c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
33025 b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
33026
33027 a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
33028 d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
33029 c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
33030 b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
33031 a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
33032 d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
33033 c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
33034 b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
33035 a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
33036 d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
33037 c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
33038 b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
33039 a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
33040 d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
33041 c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
33042 b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
33043
33044 a = safe_add(a, olda);
33045 b = safe_add(b, oldb);
33046 c = safe_add(c, oldc);
33047 d = safe_add(d, oldd);
33048 }
33049 return Array(a, b, c, d);
33050
33051 }
33052
33053 /*
33054 * These functions implement the four basic operations the algorithm uses.
33055 */
33056 function md5_cmn(q, a, b, x, s, t)
33057 {
33058 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
33059 }
33060 function md5_ff(a, b, c, d, x, s, t)
33061 {
33062 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
33063 }
33064 function md5_gg(a, b, c, d, x, s, t)
33065 {
33066 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
33067 }
33068 function md5_hh(a, b, c, d, x, s, t)
33069 {
33070 return md5_cmn(b ^ c ^ d, a, b, x, s, t);
33071 }
33072 function md5_ii(a, b, c, d, x, s, t)
33073 {
33074 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
33075 }
33076
33077 /*
33078 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
33079 * to work around bugs in some JS interpreters.
33080 */
33081 function safe_add(x, y)
33082 {
33083 var lsw = (x & 0xFFFF) + (y & 0xFFFF);
33084 var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
33085 return (msw << 16) | (lsw & 0xFFFF);
33086 }
33087
33088 /*
33089 * Bitwise rotate a 32-bit number to the left.
33090 */
33091 function bit_rol(num, cnt)
33092 {
33093 return (num << cnt) | (num >>> (32 - cnt));
33094 }
33095
33096 module.exports = function md5(buf) {
33097 return helpers.hash(buf, core_md5, 16);
33098 };
33099 },{"./helpers":37}],39:[function(require,module,exports){
33100 'use strict';
33101
33102 var elliptic = exports;
33103
33104 elliptic.version = require('../package.json').version;
33105 elliptic.utils = require('./elliptic/utils');
33106 elliptic.rand = require('brorand');
33107 elliptic.hmacDRBG = require('./elliptic/hmac-drbg');
33108 elliptic.curve = require('./elliptic/curve');
33109 elliptic.curves = require('./elliptic/curves');
33110
33111 // Protocols
33112 elliptic.ec = require('./elliptic/ec');
33113 elliptic.eddsa = require('./elliptic/eddsa');
33114
33115 },{"../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){
33116 'use strict';
33117
33118 var BN = require('bn.js');
33119 var elliptic = require('../../elliptic');
33120 var utils = elliptic.utils;
33121 var getNAF = utils.getNAF;
33122 var getJSF = utils.getJSF;
33123 var assert = utils.assert;
33124
33125 function BaseCurve(type, conf) {
33126 this.type = type;
33127 this.p = new BN(conf.p, 16);
33128
33129 // Use Montgomery, when there is no fast reduction for the prime
33130 this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);
33131
33132 // Useful for many curves
33133 this.zero = new BN(0).toRed(this.red);
33134 this.one = new BN(1).toRed(this.red);
33135 this.two = new BN(2).toRed(this.red);
33136
33137 // Curve configuration, optional
33138 this.n = conf.n && new BN(conf.n, 16);
33139 this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);
33140
33141 // Temporary arrays
33142 this._wnafT1 = new Array(4);
33143 this._wnafT2 = new Array(4);
33144 this._wnafT3 = new Array(4);
33145 this._wnafT4 = new Array(4);
33146
33147 // Generalized Greg Maxwell's trick
33148 var adjustCount = this.n && this.p.div(this.n);
33149 if (!adjustCount || adjustCount.cmpn(100) > 0) {
33150 this.redN = null;
33151 } else {
33152 this._maxwellTrick = true;
33153 this.redN = this.n.toRed(this.red);
33154 }
33155 }
33156 module.exports = BaseCurve;
33157
33158 BaseCurve.prototype.point = function point() {
33159 throw new Error('Not implemented');
33160 };
33161
33162 BaseCurve.prototype.validate = function validate() {
33163 throw new Error('Not implemented');
33164 };
33165
33166 BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {
33167 assert(p.precomputed);
33168 var doubles = p._getDoubles();
33169
33170 var naf = getNAF(k, 1);
33171 var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);
33172 I /= 3;
33173
33174 // Translate into more windowed form
33175 var repr = [];
33176 for (var j = 0; j < naf.length; j += doubles.step) {
33177 var nafW = 0;
33178 for (var k = j + doubles.step - 1; k >= j; k--)
33179 nafW = (nafW << 1) + naf[k];
33180 repr.push(nafW);
33181 }
33182
33183 var a = this.jpoint(null, null, null);
33184 var b = this.jpoint(null, null, null);
33185 for (var i = I; i > 0; i--) {
33186 for (var j = 0; j < repr.length; j++) {
33187 var nafW = repr[j];
33188 if (nafW === i)
33189 b = b.mixedAdd(doubles.points[j]);
33190 else if (nafW === -i)
33191 b = b.mixedAdd(doubles.points[j].neg());
33192 }
33193 a = a.add(b);
33194 }
33195 return a.toP();
33196 };
33197
33198 BaseCurve.prototype._wnafMul = function _wnafMul(p, k) {
33199 var w = 4;
33200
33201 // Precompute window
33202 var nafPoints = p._getNAFPoints(w);
33203 w = nafPoints.wnd;
33204 var wnd = nafPoints.points;
33205
33206 // Get NAF form
33207 var naf = getNAF(k, w);
33208
33209 // Add `this`*(N+1) for every w-NAF index
33210 var acc = this.jpoint(null, null, null);
33211 for (var i = naf.length - 1; i >= 0; i--) {
33212 // Count zeroes
33213 for (var k = 0; i >= 0 && naf[i] === 0; i--)
33214 k++;
33215 if (i >= 0)
33216 k++;
33217 acc = acc.dblp(k);
33218
33219 if (i < 0)
33220 break;
33221 var z = naf[i];
33222 assert(z !== 0);
33223 if (p.type === 'affine') {
33224 // J +- P
33225 if (z > 0)
33226 acc = acc.mixedAdd(wnd[(z - 1) >> 1]);
33227 else
33228 acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());
33229 } else {
33230 // J +- J
33231 if (z > 0)
33232 acc = acc.add(wnd[(z - 1) >> 1]);
33233 else
33234 acc = acc.add(wnd[(-z - 1) >> 1].neg());
33235 }
33236 }
33237 return p.type === 'affine' ? acc.toP() : acc;
33238 };
33239
33240 BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,
33241 points,
33242 coeffs,
33243 len,
33244 jacobianResult) {
33245 var wndWidth = this._wnafT1;
33246 var wnd = this._wnafT2;
33247 var naf = this._wnafT3;
33248
33249 // Fill all arrays
33250 var max = 0;
33251 for (var i = 0; i < len; i++) {
33252 var p = points[i];
33253 var nafPoints = p._getNAFPoints(defW);
33254 wndWidth[i] = nafPoints.wnd;
33255 wnd[i] = nafPoints.points;
33256 }
33257
33258 // Comb small window NAFs
33259 for (var i = len - 1; i >= 1; i -= 2) {
33260 var a = i - 1;
33261 var b = i;
33262 if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {
33263 naf[a] = getNAF(coeffs[a], wndWidth[a]);
33264 naf[b] = getNAF(coeffs[b], wndWidth[b]);
33265 max = Math.max(naf[a].length, max);
33266 max = Math.max(naf[b].length, max);
33267 continue;
33268 }
33269
33270 var comb = [
33271 points[a], /* 1 */
33272 null, /* 3 */
33273 null, /* 5 */
33274 points[b] /* 7 */
33275 ];
33276
33277 // Try to avoid Projective points, if possible
33278 if (points[a].y.cmp(points[b].y) === 0) {
33279 comb[1] = points[a].add(points[b]);
33280 comb[2] = points[a].toJ().mixedAdd(points[b].neg());
33281 } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {
33282 comb[1] = points[a].toJ().mixedAdd(points[b]);
33283 comb[2] = points[a].add(points[b].neg());
33284 } else {
33285 comb[1] = points[a].toJ().mixedAdd(points[b]);
33286 comb[2] = points[a].toJ().mixedAdd(points[b].neg());
33287 }
33288
33289 var index = [
33290 -3, /* -1 -1 */
33291 -1, /* -1 0 */
33292 -5, /* -1 1 */
33293 -7, /* 0 -1 */
33294 0, /* 0 0 */
33295 7, /* 0 1 */
33296 5, /* 1 -1 */
33297 1, /* 1 0 */
33298 3 /* 1 1 */
33299 ];
33300
33301 var jsf = getJSF(coeffs[a], coeffs[b]);
33302 max = Math.max(jsf[0].length, max);
33303 naf[a] = new Array(max);
33304 naf[b] = new Array(max);
33305 for (var j = 0; j < max; j++) {
33306 var ja = jsf[0][j] | 0;
33307 var jb = jsf[1][j] | 0;
33308
33309 naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];
33310 naf[b][j] = 0;
33311 wnd[a] = comb;
33312 }
33313 }
33314
33315 var acc = this.jpoint(null, null, null);
33316 var tmp = this._wnafT4;
33317 for (var i = max; i >= 0; i--) {
33318 var k = 0;
33319
33320 while (i >= 0) {
33321 var zero = true;
33322 for (var j = 0; j < len; j++) {
33323 tmp[j] = naf[j][i] | 0;
33324 if (tmp[j] !== 0)
33325 zero = false;
33326 }
33327 if (!zero)
33328 break;
33329 k++;
33330 i--;
33331 }
33332 if (i >= 0)
33333 k++;
33334 acc = acc.dblp(k);
33335 if (i < 0)
33336 break;
33337
33338 for (var j = 0; j < len; j++) {
33339 var z = tmp[j];
33340 var p;
33341 if (z === 0)
33342 continue;
33343 else if (z > 0)
33344 p = wnd[j][(z - 1) >> 1];
33345 else if (z < 0)
33346 p = wnd[j][(-z - 1) >> 1].neg();
33347
33348 if (p.type === 'affine')
33349 acc = acc.mixedAdd(p);
33350 else
33351 acc = acc.add(p);
33352 }
33353 }
33354 // Zeroify references
33355 for (var i = 0; i < len; i++)
33356 wnd[i] = null;
33357
33358 if (jacobianResult)
33359 return acc;
33360 else
33361 return acc.toP();
33362 };
33363
33364 function BasePoint(curve, type) {
33365 this.curve = curve;
33366 this.type = type;
33367 this.precomputed = null;
33368 }
33369 BaseCurve.BasePoint = BasePoint;
33370
33371 BasePoint.prototype.eq = function eq(/*other*/) {
33372 throw new Error('Not implemented');
33373 };
33374
33375 BasePoint.prototype.validate = function validate() {
33376 return this.curve.validate(this);
33377 };
33378
33379 BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
33380 bytes = utils.toArray(bytes, enc);
33381
33382 var len = this.p.byteLength();
33383
33384 // uncompressed, hybrid-odd, hybrid-even
33385 if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&
33386 bytes.length - 1 === 2 * len) {
33387 if (bytes[0] === 0x06)
33388 assert(bytes[bytes.length - 1] % 2 === 0);
33389 else if (bytes[0] === 0x07)
33390 assert(bytes[bytes.length - 1] % 2 === 1);
33391
33392 var res = this.point(bytes.slice(1, 1 + len),
33393 bytes.slice(1 + len, 1 + 2 * len));
33394
33395 return res;
33396 } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&
33397 bytes.length - 1 === len) {
33398 return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);
33399 }
33400 throw new Error('Unknown point format');
33401 };
33402
33403 BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {
33404 return this.encode(enc, true);
33405 };
33406
33407 BasePoint.prototype._encode = function _encode(compact) {
33408 var len = this.curve.p.byteLength();
33409 var x = this.getX().toArray('be', len);
33410
33411 if (compact)
33412 return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);
33413
33414 return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ;
33415 };
33416
33417 BasePoint.prototype.encode = function encode(enc, compact) {
33418 return utils.encode(this._encode(compact), enc);
33419 };
33420
33421 BasePoint.prototype.precompute = function precompute(power) {
33422 if (this.precomputed)
33423 return this;
33424
33425 var precomputed = {
33426 doubles: null,
33427 naf: null,
33428 beta: null
33429 };
33430 precomputed.naf = this._getNAFPoints(8);
33431 precomputed.doubles = this._getDoubles(4, power);
33432 precomputed.beta = this._getBeta();
33433 this.precomputed = precomputed;
33434
33435 return this;
33436 };
33437
33438 BasePoint.prototype._hasDoubles = function _hasDoubles(k) {
33439 if (!this.precomputed)
33440 return false;
33441
33442 var doubles = this.precomputed.doubles;
33443 if (!doubles)
33444 return false;
33445
33446 return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);
33447 };
33448
33449 BasePoint.prototype._getDoubles = function _getDoubles(step, power) {
33450 if (this.precomputed && this.precomputed.doubles)
33451 return this.precomputed.doubles;
33452
33453 var doubles = [ this ];
33454 var acc = this;
33455 for (var i = 0; i < power; i += step) {
33456 for (var j = 0; j < step; j++)
33457 acc = acc.dbl();
33458 doubles.push(acc);
33459 }
33460 return {
33461 step: step,
33462 points: doubles
33463 };
33464 };
33465
33466 BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {
33467 if (this.precomputed && this.precomputed.naf)
33468 return this.precomputed.naf;
33469
33470 var res = [ this ];
33471 var max = (1 << wnd) - 1;
33472 var dbl = max === 1 ? null : this.dbl();
33473 for (var i = 1; i < max; i++)
33474 res[i] = res[i - 1].add(dbl);
33475 return {
33476 wnd: wnd,
33477 points: res
33478 };
33479 };
33480
33481 BasePoint.prototype._getBeta = function _getBeta() {
33482 return null;
33483 };
33484
33485 BasePoint.prototype.dblp = function dblp(k) {
33486 var r = this;
33487 for (var i = 0; i < k; i++)
33488 r = r.dbl();
33489 return r;
33490 };
33491
33492 },{"../../elliptic":39,"bn.js":33}],41:[function(require,module,exports){
33493 'use strict';
33494
33495 var curve = require('../curve');
33496 var elliptic = require('../../elliptic');
33497 var BN = require('bn.js');
33498 var inherits = require('inherits');
33499 var Base = curve.base;
33500
33501 var assert = elliptic.utils.assert;
33502
33503 function EdwardsCurve(conf) {
33504 // NOTE: Important as we are creating point in Base.call()
33505 this.twisted = (conf.a | 0) !== 1;
33506 this.mOneA = this.twisted && (conf.a | 0) === -1;
33507 this.extended = this.mOneA;
33508
33509 Base.call(this, 'edwards', conf);
33510
33511 this.a = new BN(conf.a, 16).umod(this.red.m);
33512 this.a = this.a.toRed(this.red);
33513 this.c = new BN(conf.c, 16).toRed(this.red);
33514 this.c2 = this.c.redSqr();
33515 this.d = new BN(conf.d, 16).toRed(this.red);
33516 this.dd = this.d.redAdd(this.d);
33517
33518 assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);
33519 this.oneC = (conf.c | 0) === 1;
33520 }
33521 inherits(EdwardsCurve, Base);
33522 module.exports = EdwardsCurve;
33523
33524 EdwardsCurve.prototype._mulA = function _mulA(num) {
33525 if (this.mOneA)
33526 return num.redNeg();
33527 else
33528 return this.a.redMul(num);
33529 };
33530
33531 EdwardsCurve.prototype._mulC = function _mulC(num) {
33532 if (this.oneC)
33533 return num;
33534 else
33535 return this.c.redMul(num);
33536 };
33537
33538 // Just for compatibility with Short curve
33539 EdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {
33540 return this.point(x, y, z, t);
33541 };
33542
33543 EdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {
33544 x = new BN(x, 16);
33545 if (!x.red)
33546 x = x.toRed(this.red);
33547
33548 var x2 = x.redSqr();
33549 var rhs = this.c2.redSub(this.a.redMul(x2));
33550 var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));
33551
33552 var y2 = rhs.redMul(lhs.redInvm());
33553 var y = y2.redSqrt();
33554 if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
33555 throw new Error('invalid point');
33556
33557 var isOdd = y.fromRed().isOdd();
33558 if (odd && !isOdd || !odd && isOdd)
33559 y = y.redNeg();
33560
33561 return this.point(x, y);
33562 };
33563
33564 EdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {
33565 y = new BN(y, 16);
33566 if (!y.red)
33567 y = y.toRed(this.red);
33568
33569 // x^2 = (y^2 - 1) / (d y^2 + 1)
33570 var y2 = y.redSqr();
33571 var lhs = y2.redSub(this.one);
33572 var rhs = y2.redMul(this.d).redAdd(this.one);
33573 var x2 = lhs.redMul(rhs.redInvm());
33574
33575 if (x2.cmp(this.zero) === 0) {
33576 if (odd)
33577 throw new Error('invalid point');
33578 else
33579 return this.point(this.zero, y);
33580 }
33581
33582 var x = x2.redSqrt();
33583 if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)
33584 throw new Error('invalid point');
33585
33586 if (x.isOdd() !== odd)
33587 x = x.redNeg();
33588
33589 return this.point(x, y);
33590 };
33591
33592 EdwardsCurve.prototype.validate = function validate(point) {
33593 if (point.isInfinity())
33594 return true;
33595
33596 // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)
33597 point.normalize();
33598
33599 var x2 = point.x.redSqr();
33600 var y2 = point.y.redSqr();
33601 var lhs = x2.redMul(this.a).redAdd(y2);
33602 var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));
33603
33604 return lhs.cmp(rhs) === 0;
33605 };
33606
33607 function Point(curve, x, y, z, t) {
33608 Base.BasePoint.call(this, curve, 'projective');
33609 if (x === null && y === null && z === null) {
33610 this.x = this.curve.zero;
33611 this.y = this.curve.one;
33612 this.z = this.curve.one;
33613 this.t = this.curve.zero;
33614 this.zOne = true;
33615 } else {
33616 this.x = new BN(x, 16);
33617 this.y = new BN(y, 16);
33618 this.z = z ? new BN(z, 16) : this.curve.one;
33619 this.t = t && new BN(t, 16);
33620 if (!this.x.red)
33621 this.x = this.x.toRed(this.curve.red);
33622 if (!this.y.red)
33623 this.y = this.y.toRed(this.curve.red);
33624 if (!this.z.red)
33625 this.z = this.z.toRed(this.curve.red);
33626 if (this.t && !this.t.red)
33627 this.t = this.t.toRed(this.curve.red);
33628 this.zOne = this.z === this.curve.one;
33629
33630 // Use extended coordinates
33631 if (this.curve.extended && !this.t) {
33632 this.t = this.x.redMul(this.y);
33633 if (!this.zOne)
33634 this.t = this.t.redMul(this.z.redInvm());
33635 }
33636 }
33637 }
33638 inherits(Point, Base.BasePoint);
33639
33640 EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
33641 return Point.fromJSON(this, obj);
33642 };
33643
33644 EdwardsCurve.prototype.point = function point(x, y, z, t) {
33645 return new Point(this, x, y, z, t);
33646 };
33647
33648 Point.fromJSON = function fromJSON(curve, obj) {
33649 return new Point(curve, obj[0], obj[1], obj[2]);
33650 };
33651
33652 Point.prototype.inspect = function inspect() {
33653 if (this.isInfinity())
33654 return '<EC Point Infinity>';
33655 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
33656 ' y: ' + this.y.fromRed().toString(16, 2) +
33657 ' z: ' + this.z.fromRed().toString(16, 2) + '>';
33658 };
33659
33660 Point.prototype.isInfinity = function isInfinity() {
33661 // XXX This code assumes that zero is always zero in red
33662 return this.x.cmpn(0) === 0 &&
33663 this.y.cmp(this.z) === 0;
33664 };
33665
33666 Point.prototype._extDbl = function _extDbl() {
33667 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
33668 // #doubling-dbl-2008-hwcd
33669 // 4M + 4S
33670
33671 // A = X1^2
33672 var a = this.x.redSqr();
33673 // B = Y1^2
33674 var b = this.y.redSqr();
33675 // C = 2 * Z1^2
33676 var c = this.z.redSqr();
33677 c = c.redIAdd(c);
33678 // D = a * A
33679 var d = this.curve._mulA(a);
33680 // E = (X1 + Y1)^2 - A - B
33681 var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);
33682 // G = D + B
33683 var g = d.redAdd(b);
33684 // F = G - C
33685 var f = g.redSub(c);
33686 // H = D - B
33687 var h = d.redSub(b);
33688 // X3 = E * F
33689 var nx = e.redMul(f);
33690 // Y3 = G * H
33691 var ny = g.redMul(h);
33692 // T3 = E * H
33693 var nt = e.redMul(h);
33694 // Z3 = F * G
33695 var nz = f.redMul(g);
33696 return this.curve.point(nx, ny, nz, nt);
33697 };
33698
33699 Point.prototype._projDbl = function _projDbl() {
33700 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
33701 // #doubling-dbl-2008-bbjlp
33702 // #doubling-dbl-2007-bl
33703 // and others
33704 // Generally 3M + 4S or 2M + 4S
33705
33706 // B = (X1 + Y1)^2
33707 var b = this.x.redAdd(this.y).redSqr();
33708 // C = X1^2
33709 var c = this.x.redSqr();
33710 // D = Y1^2
33711 var d = this.y.redSqr();
33712
33713 var nx;
33714 var ny;
33715 var nz;
33716 if (this.curve.twisted) {
33717 // E = a * C
33718 var e = this.curve._mulA(c);
33719 // F = E + D
33720 var f = e.redAdd(d);
33721 if (this.zOne) {
33722 // X3 = (B - C - D) * (F - 2)
33723 nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));
33724 // Y3 = F * (E - D)
33725 ny = f.redMul(e.redSub(d));
33726 // Z3 = F^2 - 2 * F
33727 nz = f.redSqr().redSub(f).redSub(f);
33728 } else {
33729 // H = Z1^2
33730 var h = this.z.redSqr();
33731 // J = F - 2 * H
33732 var j = f.redSub(h).redISub(h);
33733 // X3 = (B-C-D)*J
33734 nx = b.redSub(c).redISub(d).redMul(j);
33735 // Y3 = F * (E - D)
33736 ny = f.redMul(e.redSub(d));
33737 // Z3 = F * J
33738 nz = f.redMul(j);
33739 }
33740 } else {
33741 // E = C + D
33742 var e = c.redAdd(d);
33743 // H = (c * Z1)^2
33744 var h = this.curve._mulC(this.c.redMul(this.z)).redSqr();
33745 // J = E - 2 * H
33746 var j = e.redSub(h).redSub(h);
33747 // X3 = c * (B - E) * J
33748 nx = this.curve._mulC(b.redISub(e)).redMul(j);
33749 // Y3 = c * E * (C - D)
33750 ny = this.curve._mulC(e).redMul(c.redISub(d));
33751 // Z3 = E * J
33752 nz = e.redMul(j);
33753 }
33754 return this.curve.point(nx, ny, nz);
33755 };
33756
33757 Point.prototype.dbl = function dbl() {
33758 if (this.isInfinity())
33759 return this;
33760
33761 // Double in extended coordinates
33762 if (this.curve.extended)
33763 return this._extDbl();
33764 else
33765 return this._projDbl();
33766 };
33767
33768 Point.prototype._extAdd = function _extAdd(p) {
33769 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
33770 // #addition-add-2008-hwcd-3
33771 // 8M
33772
33773 // A = (Y1 - X1) * (Y2 - X2)
33774 var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));
33775 // B = (Y1 + X1) * (Y2 + X2)
33776 var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));
33777 // C = T1 * k * T2
33778 var c = this.t.redMul(this.curve.dd).redMul(p.t);
33779 // D = Z1 * 2 * Z2
33780 var d = this.z.redMul(p.z.redAdd(p.z));
33781 // E = B - A
33782 var e = b.redSub(a);
33783 // F = D - C
33784 var f = d.redSub(c);
33785 // G = D + C
33786 var g = d.redAdd(c);
33787 // H = B + A
33788 var h = b.redAdd(a);
33789 // X3 = E * F
33790 var nx = e.redMul(f);
33791 // Y3 = G * H
33792 var ny = g.redMul(h);
33793 // T3 = E * H
33794 var nt = e.redMul(h);
33795 // Z3 = F * G
33796 var nz = f.redMul(g);
33797 return this.curve.point(nx, ny, nz, nt);
33798 };
33799
33800 Point.prototype._projAdd = function _projAdd(p) {
33801 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
33802 // #addition-add-2008-bbjlp
33803 // #addition-add-2007-bl
33804 // 10M + 1S
33805
33806 // A = Z1 * Z2
33807 var a = this.z.redMul(p.z);
33808 // B = A^2
33809 var b = a.redSqr();
33810 // C = X1 * X2
33811 var c = this.x.redMul(p.x);
33812 // D = Y1 * Y2
33813 var d = this.y.redMul(p.y);
33814 // E = d * C * D
33815 var e = this.curve.d.redMul(c).redMul(d);
33816 // F = B - E
33817 var f = b.redSub(e);
33818 // G = B + E
33819 var g = b.redAdd(e);
33820 // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)
33821 var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);
33822 var nx = a.redMul(f).redMul(tmp);
33823 var ny;
33824 var nz;
33825 if (this.curve.twisted) {
33826 // Y3 = A * G * (D - a * C)
33827 ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));
33828 // Z3 = F * G
33829 nz = f.redMul(g);
33830 } else {
33831 // Y3 = A * G * (D - C)
33832 ny = a.redMul(g).redMul(d.redSub(c));
33833 // Z3 = c * F * G
33834 nz = this.curve._mulC(f).redMul(g);
33835 }
33836 return this.curve.point(nx, ny, nz);
33837 };
33838
33839 Point.prototype.add = function add(p) {
33840 if (this.isInfinity())
33841 return p;
33842 if (p.isInfinity())
33843 return this;
33844
33845 if (this.curve.extended)
33846 return this._extAdd(p);
33847 else
33848 return this._projAdd(p);
33849 };
33850
33851 Point.prototype.mul = function mul(k) {
33852 if (this._hasDoubles(k))
33853 return this.curve._fixedNafMul(this, k);
33854 else
33855 return this.curve._wnafMul(this, k);
33856 };
33857
33858 Point.prototype.mulAdd = function mulAdd(k1, p, k2) {
33859 return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);
33860 };
33861
33862 Point.prototype.jmulAdd = function jmulAdd(k1, p, k2) {
33863 return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);
33864 };
33865
33866 Point.prototype.normalize = function normalize() {
33867 if (this.zOne)
33868 return this;
33869
33870 // Normalize coordinates
33871 var zi = this.z.redInvm();
33872 this.x = this.x.redMul(zi);
33873 this.y = this.y.redMul(zi);
33874 if (this.t)
33875 this.t = this.t.redMul(zi);
33876 this.z = this.curve.one;
33877 this.zOne = true;
33878 return this;
33879 };
33880
33881 Point.prototype.neg = function neg() {
33882 return this.curve.point(this.x.redNeg(),
33883 this.y,
33884 this.z,
33885 this.t && this.t.redNeg());
33886 };
33887
33888 Point.prototype.getX = function getX() {
33889 this.normalize();
33890 return this.x.fromRed();
33891 };
33892
33893 Point.prototype.getY = function getY() {
33894 this.normalize();
33895 return this.y.fromRed();
33896 };
33897
33898 Point.prototype.eq = function eq(other) {
33899 return this === other ||
33900 this.getX().cmp(other.getX()) === 0 &&
33901 this.getY().cmp(other.getY()) === 0;
33902 };
33903
33904 Point.prototype.eqXToP = function eqXToP(x) {
33905 var rx = x.toRed(this.curve.red).redMul(this.z);
33906 if (this.x.cmp(rx) === 0)
33907 return true;
33908
33909 var xc = x.clone();
33910 var t = this.curve.redN.redMul(this.z);
33911 for (;;) {
33912 xc.iadd(this.curve.n);
33913 if (xc.cmp(this.curve.p) >= 0)
33914 return false;
33915
33916 rx.redIAdd(t);
33917 if (this.x.cmp(rx) === 0)
33918 return true;
33919 }
33920 return false;
33921 };
33922
33923 // Compatibility with BaseCurve
33924 Point.prototype.toP = Point.prototype.normalize;
33925 Point.prototype.mixedAdd = Point.prototype.add;
33926
33927 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],42:[function(require,module,exports){
33928 'use strict';
33929
33930 var curve = exports;
33931
33932 curve.base = require('./base');
33933 curve.short = require('./short');
33934 curve.mont = require('./mont');
33935 curve.edwards = require('./edwards');
33936
33937 },{"./base":40,"./edwards":41,"./mont":43,"./short":44}],43:[function(require,module,exports){
33938 'use strict';
33939
33940 var curve = require('../curve');
33941 var BN = require('bn.js');
33942 var inherits = require('inherits');
33943 var Base = curve.base;
33944
33945 var elliptic = require('../../elliptic');
33946 var utils = elliptic.utils;
33947
33948 function MontCurve(conf) {
33949 Base.call(this, 'mont', conf);
33950
33951 this.a = new BN(conf.a, 16).toRed(this.red);
33952 this.b = new BN(conf.b, 16).toRed(this.red);
33953 this.i4 = new BN(4).toRed(this.red).redInvm();
33954 this.two = new BN(2).toRed(this.red);
33955 this.a24 = this.i4.redMul(this.a.redAdd(this.two));
33956 }
33957 inherits(MontCurve, Base);
33958 module.exports = MontCurve;
33959
33960 MontCurve.prototype.validate = function validate(point) {
33961 var x = point.normalize().x;
33962 var x2 = x.redSqr();
33963 var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);
33964 var y = rhs.redSqrt();
33965
33966 return y.redSqr().cmp(rhs) === 0;
33967 };
33968
33969 function Point(curve, x, z) {
33970 Base.BasePoint.call(this, curve, 'projective');
33971 if (x === null && z === null) {
33972 this.x = this.curve.one;
33973 this.z = this.curve.zero;
33974 } else {
33975 this.x = new BN(x, 16);
33976 this.z = new BN(z, 16);
33977 if (!this.x.red)
33978 this.x = this.x.toRed(this.curve.red);
33979 if (!this.z.red)
33980 this.z = this.z.toRed(this.curve.red);
33981 }
33982 }
33983 inherits(Point, Base.BasePoint);
33984
33985 MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
33986 return this.point(utils.toArray(bytes, enc), 1);
33987 };
33988
33989 MontCurve.prototype.point = function point(x, z) {
33990 return new Point(this, x, z);
33991 };
33992
33993 MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
33994 return Point.fromJSON(this, obj);
33995 };
33996
33997 Point.prototype.precompute = function precompute() {
33998 // No-op
33999 };
34000
34001 Point.prototype._encode = function _encode() {
34002 return this.getX().toArray('be', this.curve.p.byteLength());
34003 };
34004
34005 Point.fromJSON = function fromJSON(curve, obj) {
34006 return new Point(curve, obj[0], obj[1] || curve.one);
34007 };
34008
34009 Point.prototype.inspect = function inspect() {
34010 if (this.isInfinity())
34011 return '<EC Point Infinity>';
34012 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
34013 ' z: ' + this.z.fromRed().toString(16, 2) + '>';
34014 };
34015
34016 Point.prototype.isInfinity = function isInfinity() {
34017 // XXX This code assumes that zero is always zero in red
34018 return this.z.cmpn(0) === 0;
34019 };
34020
34021 Point.prototype.dbl = function dbl() {
34022 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3
34023 // 2M + 2S + 4A
34024
34025 // A = X1 + Z1
34026 var a = this.x.redAdd(this.z);
34027 // AA = A^2
34028 var aa = a.redSqr();
34029 // B = X1 - Z1
34030 var b = this.x.redSub(this.z);
34031 // BB = B^2
34032 var bb = b.redSqr();
34033 // C = AA - BB
34034 var c = aa.redSub(bb);
34035 // X3 = AA * BB
34036 var nx = aa.redMul(bb);
34037 // Z3 = C * (BB + A24 * C)
34038 var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));
34039 return this.curve.point(nx, nz);
34040 };
34041
34042 Point.prototype.add = function add() {
34043 throw new Error('Not supported on Montgomery curve');
34044 };
34045
34046 Point.prototype.diffAdd = function diffAdd(p, diff) {
34047 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3
34048 // 4M + 2S + 6A
34049
34050 // A = X2 + Z2
34051 var a = this.x.redAdd(this.z);
34052 // B = X2 - Z2
34053 var b = this.x.redSub(this.z);
34054 // C = X3 + Z3
34055 var c = p.x.redAdd(p.z);
34056 // D = X3 - Z3
34057 var d = p.x.redSub(p.z);
34058 // DA = D * A
34059 var da = d.redMul(a);
34060 // CB = C * B
34061 var cb = c.redMul(b);
34062 // X5 = Z1 * (DA + CB)^2
34063 var nx = diff.z.redMul(da.redAdd(cb).redSqr());
34064 // Z5 = X1 * (DA - CB)^2
34065 var nz = diff.x.redMul(da.redISub(cb).redSqr());
34066 return this.curve.point(nx, nz);
34067 };
34068
34069 Point.prototype.mul = function mul(k) {
34070 var t = k.clone();
34071 var a = this; // (N / 2) * Q + Q
34072 var b = this.curve.point(null, null); // (N / 2) * Q
34073 var c = this; // Q
34074
34075 for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))
34076 bits.push(t.andln(1));
34077
34078 for (var i = bits.length - 1; i >= 0; i--) {
34079 if (bits[i] === 0) {
34080 // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q
34081 a = a.diffAdd(b, c);
34082 // N * Q = 2 * ((N / 2) * Q + Q))
34083 b = b.dbl();
34084 } else {
34085 // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)
34086 b = a.diffAdd(b, c);
34087 // N * Q + Q = 2 * ((N / 2) * Q + Q)
34088 a = a.dbl();
34089 }
34090 }
34091 return b;
34092 };
34093
34094 Point.prototype.mulAdd = function mulAdd() {
34095 throw new Error('Not supported on Montgomery curve');
34096 };
34097
34098 Point.prototype.jumlAdd = function jumlAdd() {
34099 throw new Error('Not supported on Montgomery curve');
34100 };
34101
34102 Point.prototype.eq = function eq(other) {
34103 return this.getX().cmp(other.getX()) === 0;
34104 };
34105
34106 Point.prototype.normalize = function normalize() {
34107 this.x = this.x.redMul(this.z.redInvm());
34108 this.z = this.curve.one;
34109 return this;
34110 };
34111
34112 Point.prototype.getX = function getX() {
34113 // Normalize coordinates
34114 this.normalize();
34115
34116 return this.x.fromRed();
34117 };
34118
34119 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],44:[function(require,module,exports){
34120 'use strict';
34121
34122 var curve = require('../curve');
34123 var elliptic = require('../../elliptic');
34124 var BN = require('bn.js');
34125 var inherits = require('inherits');
34126 var Base = curve.base;
34127
34128 var assert = elliptic.utils.assert;
34129
34130 function ShortCurve(conf) {
34131 Base.call(this, 'short', conf);
34132
34133 this.a = new BN(conf.a, 16).toRed(this.red);
34134 this.b = new BN(conf.b, 16).toRed(this.red);
34135 this.tinv = this.two.redInvm();
34136
34137 this.zeroA = this.a.fromRed().cmpn(0) === 0;
34138 this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;
34139
34140 // If the curve is endomorphic, precalculate beta and lambda
34141 this.endo = this._getEndomorphism(conf);
34142 this._endoWnafT1 = new Array(4);
34143 this._endoWnafT2 = new Array(4);
34144 }
34145 inherits(ShortCurve, Base);
34146 module.exports = ShortCurve;
34147
34148 ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {
34149 // No efficient endomorphism
34150 if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)
34151 return;
34152
34153 // Compute beta and lambda, that lambda * P = (beta * Px; Py)
34154 var beta;
34155 var lambda;
34156 if (conf.beta) {
34157 beta = new BN(conf.beta, 16).toRed(this.red);
34158 } else {
34159 var betas = this._getEndoRoots(this.p);
34160 // Choose the smallest beta
34161 beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];
34162 beta = beta.toRed(this.red);
34163 }
34164 if (conf.lambda) {
34165 lambda = new BN(conf.lambda, 16);
34166 } else {
34167 // Choose the lambda that is matching selected beta
34168 var lambdas = this._getEndoRoots(this.n);
34169 if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {
34170 lambda = lambdas[0];
34171 } else {
34172 lambda = lambdas[1];
34173 assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);
34174 }
34175 }
34176
34177 // Get basis vectors, used for balanced length-two representation
34178 var basis;
34179 if (conf.basis) {
34180 basis = conf.basis.map(function(vec) {
34181 return {
34182 a: new BN(vec.a, 16),
34183 b: new BN(vec.b, 16)
34184 };
34185 });
34186 } else {
34187 basis = this._getEndoBasis(lambda);
34188 }
34189
34190 return {
34191 beta: beta,
34192 lambda: lambda,
34193 basis: basis
34194 };
34195 };
34196
34197 ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {
34198 // Find roots of for x^2 + x + 1 in F
34199 // Root = (-1 +- Sqrt(-3)) / 2
34200 //
34201 var red = num === this.p ? this.red : BN.mont(num);
34202 var tinv = new BN(2).toRed(red).redInvm();
34203 var ntinv = tinv.redNeg();
34204
34205 var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);
34206
34207 var l1 = ntinv.redAdd(s).fromRed();
34208 var l2 = ntinv.redSub(s).fromRed();
34209 return [ l1, l2 ];
34210 };
34211
34212 ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {
34213 // aprxSqrt >= sqrt(this.n)
34214 var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));
34215
34216 // 3.74
34217 // Run EGCD, until r(L + 1) < aprxSqrt
34218 var u = lambda;
34219 var v = this.n.clone();
34220 var x1 = new BN(1);
34221 var y1 = new BN(0);
34222 var x2 = new BN(0);
34223 var y2 = new BN(1);
34224
34225 // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)
34226 var a0;
34227 var b0;
34228 // First vector
34229 var a1;
34230 var b1;
34231 // Second vector
34232 var a2;
34233 var b2;
34234
34235 var prevR;
34236 var i = 0;
34237 var r;
34238 var x;
34239 while (u.cmpn(0) !== 0) {
34240 var q = v.div(u);
34241 r = v.sub(q.mul(u));
34242 x = x2.sub(q.mul(x1));
34243 var y = y2.sub(q.mul(y1));
34244
34245 if (!a1 && r.cmp(aprxSqrt) < 0) {
34246 a0 = prevR.neg();
34247 b0 = x1;
34248 a1 = r.neg();
34249 b1 = x;
34250 } else if (a1 && ++i === 2) {
34251 break;
34252 }
34253 prevR = r;
34254
34255 v = u;
34256 u = r;
34257 x2 = x1;
34258 x1 = x;
34259 y2 = y1;
34260 y1 = y;
34261 }
34262 a2 = r.neg();
34263 b2 = x;
34264
34265 var len1 = a1.sqr().add(b1.sqr());
34266 var len2 = a2.sqr().add(b2.sqr());
34267 if (len2.cmp(len1) >= 0) {
34268 a2 = a0;
34269 b2 = b0;
34270 }
34271
34272 // Normalize signs
34273 if (a1.negative) {
34274 a1 = a1.neg();
34275 b1 = b1.neg();
34276 }
34277 if (a2.negative) {
34278 a2 = a2.neg();
34279 b2 = b2.neg();
34280 }
34281
34282 return [
34283 { a: a1, b: b1 },
34284 { a: a2, b: b2 }
34285 ];
34286 };
34287
34288 ShortCurve.prototype._endoSplit = function _endoSplit(k) {
34289 var basis = this.endo.basis;
34290 var v1 = basis[0];
34291 var v2 = basis[1];
34292
34293 var c1 = v2.b.mul(k).divRound(this.n);
34294 var c2 = v1.b.neg().mul(k).divRound(this.n);
34295
34296 var p1 = c1.mul(v1.a);
34297 var p2 = c2.mul(v2.a);
34298 var q1 = c1.mul(v1.b);
34299 var q2 = c2.mul(v2.b);
34300
34301 // Calculate answer
34302 var k1 = k.sub(p1).sub(p2);
34303 var k2 = q1.add(q2).neg();
34304 return { k1: k1, k2: k2 };
34305 };
34306
34307 ShortCurve.prototype.pointFromX = function pointFromX(x, odd) {
34308 x = new BN(x, 16);
34309 if (!x.red)
34310 x = x.toRed(this.red);
34311
34312 var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);
34313 var y = y2.redSqrt();
34314 if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
34315 throw new Error('invalid point');
34316
34317 // XXX Is there any way to tell if the number is odd without converting it
34318 // to non-red form?
34319 var isOdd = y.fromRed().isOdd();
34320 if (odd && !isOdd || !odd && isOdd)
34321 y = y.redNeg();
34322
34323 return this.point(x, y);
34324 };
34325
34326 ShortCurve.prototype.validate = function validate(point) {
34327 if (point.inf)
34328 return true;
34329
34330 var x = point.x;
34331 var y = point.y;
34332
34333 var ax = this.a.redMul(x);
34334 var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);
34335 return y.redSqr().redISub(rhs).cmpn(0) === 0;
34336 };
34337
34338 ShortCurve.prototype._endoWnafMulAdd =
34339 function _endoWnafMulAdd(points, coeffs, jacobianResult) {
34340 var npoints = this._endoWnafT1;
34341 var ncoeffs = this._endoWnafT2;
34342 for (var i = 0; i < points.length; i++) {
34343 var split = this._endoSplit(coeffs[i]);
34344 var p = points[i];
34345 var beta = p._getBeta();
34346
34347 if (split.k1.negative) {
34348 split.k1.ineg();
34349 p = p.neg(true);
34350 }
34351 if (split.k2.negative) {
34352 split.k2.ineg();
34353 beta = beta.neg(true);
34354 }
34355
34356 npoints[i * 2] = p;
34357 npoints[i * 2 + 1] = beta;
34358 ncoeffs[i * 2] = split.k1;
34359 ncoeffs[i * 2 + 1] = split.k2;
34360 }
34361 var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);
34362
34363 // Clean-up references to points and coefficients
34364 for (var j = 0; j < i * 2; j++) {
34365 npoints[j] = null;
34366 ncoeffs[j] = null;
34367 }
34368 return res;
34369 };
34370
34371 function Point(curve, x, y, isRed) {
34372 Base.BasePoint.call(this, curve, 'affine');
34373 if (x === null && y === null) {
34374 this.x = null;
34375 this.y = null;
34376 this.inf = true;
34377 } else {
34378 this.x = new BN(x, 16);
34379 this.y = new BN(y, 16);
34380 // Force redgomery representation when loading from JSON
34381 if (isRed) {
34382 this.x.forceRed(this.curve.red);
34383 this.y.forceRed(this.curve.red);
34384 }
34385 if (!this.x.red)
34386 this.x = this.x.toRed(this.curve.red);
34387 if (!this.y.red)
34388 this.y = this.y.toRed(this.curve.red);
34389 this.inf = false;
34390 }
34391 }
34392 inherits(Point, Base.BasePoint);
34393
34394 ShortCurve.prototype.point = function point(x, y, isRed) {
34395 return new Point(this, x, y, isRed);
34396 };
34397
34398 ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {
34399 return Point.fromJSON(this, obj, red);
34400 };
34401
34402 Point.prototype._getBeta = function _getBeta() {
34403 if (!this.curve.endo)
34404 return;
34405
34406 var pre = this.precomputed;
34407 if (pre && pre.beta)
34408 return pre.beta;
34409
34410 var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);
34411 if (pre) {
34412 var curve = this.curve;
34413 var endoMul = function(p) {
34414 return curve.point(p.x.redMul(curve.endo.beta), p.y);
34415 };
34416 pre.beta = beta;
34417 beta.precomputed = {
34418 beta: null,
34419 naf: pre.naf && {
34420 wnd: pre.naf.wnd,
34421 points: pre.naf.points.map(endoMul)
34422 },
34423 doubles: pre.doubles && {
34424 step: pre.doubles.step,
34425 points: pre.doubles.points.map(endoMul)
34426 }
34427 };
34428 }
34429 return beta;
34430 };
34431
34432 Point.prototype.toJSON = function toJSON() {
34433 if (!this.precomputed)
34434 return [ this.x, this.y ];
34435
34436 return [ this.x, this.y, this.precomputed && {
34437 doubles: this.precomputed.doubles && {
34438 step: this.precomputed.doubles.step,
34439 points: this.precomputed.doubles.points.slice(1)
34440 },
34441 naf: this.precomputed.naf && {
34442 wnd: this.precomputed.naf.wnd,
34443 points: this.precomputed.naf.points.slice(1)
34444 }
34445 } ];
34446 };
34447
34448 Point.fromJSON = function fromJSON(curve, obj, red) {
34449 if (typeof obj === 'string')
34450 obj = JSON.parse(obj);
34451 var res = curve.point(obj[0], obj[1], red);
34452 if (!obj[2])
34453 return res;
34454
34455 function obj2point(obj) {
34456 return curve.point(obj[0], obj[1], red);
34457 }
34458
34459 var pre = obj[2];
34460 res.precomputed = {
34461 beta: null,
34462 doubles: pre.doubles && {
34463 step: pre.doubles.step,
34464 points: [ res ].concat(pre.doubles.points.map(obj2point))
34465 },
34466 naf: pre.naf && {
34467 wnd: pre.naf.wnd,
34468 points: [ res ].concat(pre.naf.points.map(obj2point))
34469 }
34470 };
34471 return res;
34472 };
34473
34474 Point.prototype.inspect = function inspect() {
34475 if (this.isInfinity())
34476 return '<EC Point Infinity>';
34477 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
34478 ' y: ' + this.y.fromRed().toString(16, 2) + '>';
34479 };
34480
34481 Point.prototype.isInfinity = function isInfinity() {
34482 return this.inf;
34483 };
34484
34485 Point.prototype.add = function add(p) {
34486 // O + P = P
34487 if (this.inf)
34488 return p;
34489
34490 // P + O = P
34491 if (p.inf)
34492 return this;
34493
34494 // P + P = 2P
34495 if (this.eq(p))
34496 return this.dbl();
34497
34498 // P + (-P) = O
34499 if (this.neg().eq(p))
34500 return this.curve.point(null, null);
34501
34502 // P + Q = O
34503 if (this.x.cmp(p.x) === 0)
34504 return this.curve.point(null, null);
34505
34506 var c = this.y.redSub(p.y);
34507 if (c.cmpn(0) !== 0)
34508 c = c.redMul(this.x.redSub(p.x).redInvm());
34509 var nx = c.redSqr().redISub(this.x).redISub(p.x);
34510 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
34511 return this.curve.point(nx, ny);
34512 };
34513
34514 Point.prototype.dbl = function dbl() {
34515 if (this.inf)
34516 return this;
34517
34518 // 2P = O
34519 var ys1 = this.y.redAdd(this.y);
34520 if (ys1.cmpn(0) === 0)
34521 return this.curve.point(null, null);
34522
34523 var a = this.curve.a;
34524
34525 var x2 = this.x.redSqr();
34526 var dyinv = ys1.redInvm();
34527 var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);
34528
34529 var nx = c.redSqr().redISub(this.x.redAdd(this.x));
34530 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
34531 return this.curve.point(nx, ny);
34532 };
34533
34534 Point.prototype.getX = function getX() {
34535 return this.x.fromRed();
34536 };
34537
34538 Point.prototype.getY = function getY() {
34539 return this.y.fromRed();
34540 };
34541
34542 Point.prototype.mul = function mul(k) {
34543 k = new BN(k, 16);
34544
34545 if (this._hasDoubles(k))
34546 return this.curve._fixedNafMul(this, k);
34547 else if (this.curve.endo)
34548 return this.curve._endoWnafMulAdd([ this ], [ k ]);
34549 else
34550 return this.curve._wnafMul(this, k);
34551 };
34552
34553 Point.prototype.mulAdd = function mulAdd(k1, p2, k2) {
34554 var points = [ this, p2 ];
34555 var coeffs = [ k1, k2 ];
34556 if (this.curve.endo)
34557 return this.curve._endoWnafMulAdd(points, coeffs);
34558 else
34559 return this.curve._wnafMulAdd(1, points, coeffs, 2);
34560 };
34561
34562 Point.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {
34563 var points = [ this, p2 ];
34564 var coeffs = [ k1, k2 ];
34565 if (this.curve.endo)
34566 return this.curve._endoWnafMulAdd(points, coeffs, true);
34567 else
34568 return this.curve._wnafMulAdd(1, points, coeffs, 2, true);
34569 };
34570
34571 Point.prototype.eq = function eq(p) {
34572 return this === p ||
34573 this.inf === p.inf &&
34574 (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);
34575 };
34576
34577 Point.prototype.neg = function neg(_precompute) {
34578 if (this.inf)
34579 return this;
34580
34581 var res = this.curve.point(this.x, this.y.redNeg());
34582 if (_precompute && this.precomputed) {
34583 var pre = this.precomputed;
34584 var negate = function(p) {
34585 return p.neg();
34586 };
34587 res.precomputed = {
34588 naf: pre.naf && {
34589 wnd: pre.naf.wnd,
34590 points: pre.naf.points.map(negate)
34591 },
34592 doubles: pre.doubles && {
34593 step: pre.doubles.step,
34594 points: pre.doubles.points.map(negate)
34595 }
34596 };
34597 }
34598 return res;
34599 };
34600
34601 Point.prototype.toJ = function toJ() {
34602 if (this.inf)
34603 return this.curve.jpoint(null, null, null);
34604
34605 var res = this.curve.jpoint(this.x, this.y, this.curve.one);
34606 return res;
34607 };
34608
34609 function JPoint(curve, x, y, z) {
34610 Base.BasePoint.call(this, curve, 'jacobian');
34611 if (x === null && y === null && z === null) {
34612 this.x = this.curve.one;
34613 this.y = this.curve.one;
34614 this.z = new BN(0);
34615 } else {
34616 this.x = new BN(x, 16);
34617 this.y = new BN(y, 16);
34618 this.z = new BN(z, 16);
34619 }
34620 if (!this.x.red)
34621 this.x = this.x.toRed(this.curve.red);
34622 if (!this.y.red)
34623 this.y = this.y.toRed(this.curve.red);
34624 if (!this.z.red)
34625 this.z = this.z.toRed(this.curve.red);
34626
34627 this.zOne = this.z === this.curve.one;
34628 }
34629 inherits(JPoint, Base.BasePoint);
34630
34631 ShortCurve.prototype.jpoint = function jpoint(x, y, z) {
34632 return new JPoint(this, x, y, z);
34633 };
34634
34635 JPoint.prototype.toP = function toP() {
34636 if (this.isInfinity())
34637 return this.curve.point(null, null);
34638
34639 var zinv = this.z.redInvm();
34640 var zinv2 = zinv.redSqr();
34641 var ax = this.x.redMul(zinv2);
34642 var ay = this.y.redMul(zinv2).redMul(zinv);
34643
34644 return this.curve.point(ax, ay);
34645 };
34646
34647 JPoint.prototype.neg = function neg() {
34648 return this.curve.jpoint(this.x, this.y.redNeg(), this.z);
34649 };
34650
34651 JPoint.prototype.add = function add(p) {
34652 // O + P = P
34653 if (this.isInfinity())
34654 return p;
34655
34656 // P + O = P
34657 if (p.isInfinity())
34658 return this;
34659
34660 // 12M + 4S + 7A
34661 var pz2 = p.z.redSqr();
34662 var z2 = this.z.redSqr();
34663 var u1 = this.x.redMul(pz2);
34664 var u2 = p.x.redMul(z2);
34665 var s1 = this.y.redMul(pz2.redMul(p.z));
34666 var s2 = p.y.redMul(z2.redMul(this.z));
34667
34668 var h = u1.redSub(u2);
34669 var r = s1.redSub(s2);
34670 if (h.cmpn(0) === 0) {
34671 if (r.cmpn(0) !== 0)
34672 return this.curve.jpoint(null, null, null);
34673 else
34674 return this.dbl();
34675 }
34676
34677 var h2 = h.redSqr();
34678 var h3 = h2.redMul(h);
34679 var v = u1.redMul(h2);
34680
34681 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
34682 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
34683 var nz = this.z.redMul(p.z).redMul(h);
34684
34685 return this.curve.jpoint(nx, ny, nz);
34686 };
34687
34688 JPoint.prototype.mixedAdd = function mixedAdd(p) {
34689 // O + P = P
34690 if (this.isInfinity())
34691 return p.toJ();
34692
34693 // P + O = P
34694 if (p.isInfinity())
34695 return this;
34696
34697 // 8M + 3S + 7A
34698 var z2 = this.z.redSqr();
34699 var u1 = this.x;
34700 var u2 = p.x.redMul(z2);
34701 var s1 = this.y;
34702 var s2 = p.y.redMul(z2).redMul(this.z);
34703
34704 var h = u1.redSub(u2);
34705 var r = s1.redSub(s2);
34706 if (h.cmpn(0) === 0) {
34707 if (r.cmpn(0) !== 0)
34708 return this.curve.jpoint(null, null, null);
34709 else
34710 return this.dbl();
34711 }
34712
34713 var h2 = h.redSqr();
34714 var h3 = h2.redMul(h);
34715 var v = u1.redMul(h2);
34716
34717 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
34718 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
34719 var nz = this.z.redMul(h);
34720
34721 return this.curve.jpoint(nx, ny, nz);
34722 };
34723
34724 JPoint.prototype.dblp = function dblp(pow) {
34725 if (pow === 0)
34726 return this;
34727 if (this.isInfinity())
34728 return this;
34729 if (!pow)
34730 return this.dbl();
34731
34732 if (this.curve.zeroA || this.curve.threeA) {
34733 var r = this;
34734 for (var i = 0; i < pow; i++)
34735 r = r.dbl();
34736 return r;
34737 }
34738
34739 // 1M + 2S + 1A + N * (4S + 5M + 8A)
34740 // N = 1 => 6M + 6S + 9A
34741 var a = this.curve.a;
34742 var tinv = this.curve.tinv;
34743
34744 var jx = this.x;
34745 var jy = this.y;
34746 var jz = this.z;
34747 var jz4 = jz.redSqr().redSqr();
34748
34749 // Reuse results
34750 var jyd = jy.redAdd(jy);
34751 for (var i = 0; i < pow; i++) {
34752 var jx2 = jx.redSqr();
34753 var jyd2 = jyd.redSqr();
34754 var jyd4 = jyd2.redSqr();
34755 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
34756
34757 var t1 = jx.redMul(jyd2);
34758 var nx = c.redSqr().redISub(t1.redAdd(t1));
34759 var t2 = t1.redISub(nx);
34760 var dny = c.redMul(t2);
34761 dny = dny.redIAdd(dny).redISub(jyd4);
34762 var nz = jyd.redMul(jz);
34763 if (i + 1 < pow)
34764 jz4 = jz4.redMul(jyd4);
34765
34766 jx = nx;
34767 jz = nz;
34768 jyd = dny;
34769 }
34770
34771 return this.curve.jpoint(jx, jyd.redMul(tinv), jz);
34772 };
34773
34774 JPoint.prototype.dbl = function dbl() {
34775 if (this.isInfinity())
34776 return this;
34777
34778 if (this.curve.zeroA)
34779 return this._zeroDbl();
34780 else if (this.curve.threeA)
34781 return this._threeDbl();
34782 else
34783 return this._dbl();
34784 };
34785
34786 JPoint.prototype._zeroDbl = function _zeroDbl() {
34787 var nx;
34788 var ny;
34789 var nz;
34790 // Z = 1
34791 if (this.zOne) {
34792 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
34793 // #doubling-mdbl-2007-bl
34794 // 1M + 5S + 14A
34795
34796 // XX = X1^2
34797 var xx = this.x.redSqr();
34798 // YY = Y1^2
34799 var yy = this.y.redSqr();
34800 // YYYY = YY^2
34801 var yyyy = yy.redSqr();
34802 // S = 2 * ((X1 + YY)^2 - XX - YYYY)
34803 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
34804 s = s.redIAdd(s);
34805 // M = 3 * XX + a; a = 0
34806 var m = xx.redAdd(xx).redIAdd(xx);
34807 // T = M ^ 2 - 2*S
34808 var t = m.redSqr().redISub(s).redISub(s);
34809
34810 // 8 * YYYY
34811 var yyyy8 = yyyy.redIAdd(yyyy);
34812 yyyy8 = yyyy8.redIAdd(yyyy8);
34813 yyyy8 = yyyy8.redIAdd(yyyy8);
34814
34815 // X3 = T
34816 nx = t;
34817 // Y3 = M * (S - T) - 8 * YYYY
34818 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
34819 // Z3 = 2*Y1
34820 nz = this.y.redAdd(this.y);
34821 } else {
34822 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
34823 // #doubling-dbl-2009-l
34824 // 2M + 5S + 13A
34825
34826 // A = X1^2
34827 var a = this.x.redSqr();
34828 // B = Y1^2
34829 var b = this.y.redSqr();
34830 // C = B^2
34831 var c = b.redSqr();
34832 // D = 2 * ((X1 + B)^2 - A - C)
34833 var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);
34834 d = d.redIAdd(d);
34835 // E = 3 * A
34836 var e = a.redAdd(a).redIAdd(a);
34837 // F = E^2
34838 var f = e.redSqr();
34839
34840 // 8 * C
34841 var c8 = c.redIAdd(c);
34842 c8 = c8.redIAdd(c8);
34843 c8 = c8.redIAdd(c8);
34844
34845 // X3 = F - 2 * D
34846 nx = f.redISub(d).redISub(d);
34847 // Y3 = E * (D - X3) - 8 * C
34848 ny = e.redMul(d.redISub(nx)).redISub(c8);
34849 // Z3 = 2 * Y1 * Z1
34850 nz = this.y.redMul(this.z);
34851 nz = nz.redIAdd(nz);
34852 }
34853
34854 return this.curve.jpoint(nx, ny, nz);
34855 };
34856
34857 JPoint.prototype._threeDbl = function _threeDbl() {
34858 var nx;
34859 var ny;
34860 var nz;
34861 // Z = 1
34862 if (this.zOne) {
34863 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html
34864 // #doubling-mdbl-2007-bl
34865 // 1M + 5S + 15A
34866
34867 // XX = X1^2
34868 var xx = this.x.redSqr();
34869 // YY = Y1^2
34870 var yy = this.y.redSqr();
34871 // YYYY = YY^2
34872 var yyyy = yy.redSqr();
34873 // S = 2 * ((X1 + YY)^2 - XX - YYYY)
34874 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
34875 s = s.redIAdd(s);
34876 // M = 3 * XX + a
34877 var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);
34878 // T = M^2 - 2 * S
34879 var t = m.redSqr().redISub(s).redISub(s);
34880 // X3 = T
34881 nx = t;
34882 // Y3 = M * (S - T) - 8 * YYYY
34883 var yyyy8 = yyyy.redIAdd(yyyy);
34884 yyyy8 = yyyy8.redIAdd(yyyy8);
34885 yyyy8 = yyyy8.redIAdd(yyyy8);
34886 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
34887 // Z3 = 2 * Y1
34888 nz = this.y.redAdd(this.y);
34889 } else {
34890 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b
34891 // 3M + 5S
34892
34893 // delta = Z1^2
34894 var delta = this.z.redSqr();
34895 // gamma = Y1^2
34896 var gamma = this.y.redSqr();
34897 // beta = X1 * gamma
34898 var beta = this.x.redMul(gamma);
34899 // alpha = 3 * (X1 - delta) * (X1 + delta)
34900 var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));
34901 alpha = alpha.redAdd(alpha).redIAdd(alpha);
34902 // X3 = alpha^2 - 8 * beta
34903 var beta4 = beta.redIAdd(beta);
34904 beta4 = beta4.redIAdd(beta4);
34905 var beta8 = beta4.redAdd(beta4);
34906 nx = alpha.redSqr().redISub(beta8);
34907 // Z3 = (Y1 + Z1)^2 - gamma - delta
34908 nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);
34909 // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2
34910 var ggamma8 = gamma.redSqr();
34911 ggamma8 = ggamma8.redIAdd(ggamma8);
34912 ggamma8 = ggamma8.redIAdd(ggamma8);
34913 ggamma8 = ggamma8.redIAdd(ggamma8);
34914 ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);
34915 }
34916
34917 return this.curve.jpoint(nx, ny, nz);
34918 };
34919
34920 JPoint.prototype._dbl = function _dbl() {
34921 var a = this.curve.a;
34922
34923 // 4M + 6S + 10A
34924 var jx = this.x;
34925 var jy = this.y;
34926 var jz = this.z;
34927 var jz4 = jz.redSqr().redSqr();
34928
34929 var jx2 = jx.redSqr();
34930 var jy2 = jy.redSqr();
34931
34932 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
34933
34934 var jxd4 = jx.redAdd(jx);
34935 jxd4 = jxd4.redIAdd(jxd4);
34936 var t1 = jxd4.redMul(jy2);
34937 var nx = c.redSqr().redISub(t1.redAdd(t1));
34938 var t2 = t1.redISub(nx);
34939
34940 var jyd8 = jy2.redSqr();
34941 jyd8 = jyd8.redIAdd(jyd8);
34942 jyd8 = jyd8.redIAdd(jyd8);
34943 jyd8 = jyd8.redIAdd(jyd8);
34944 var ny = c.redMul(t2).redISub(jyd8);
34945 var nz = jy.redAdd(jy).redMul(jz);
34946
34947 return this.curve.jpoint(nx, ny, nz);
34948 };
34949
34950 JPoint.prototype.trpl = function trpl() {
34951 if (!this.curve.zeroA)
34952 return this.dbl().add(this);
34953
34954 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl
34955 // 5M + 10S + ...
34956
34957 // XX = X1^2
34958 var xx = this.x.redSqr();
34959 // YY = Y1^2
34960 var yy = this.y.redSqr();
34961 // ZZ = Z1^2
34962 var zz = this.z.redSqr();
34963 // YYYY = YY^2
34964 var yyyy = yy.redSqr();
34965 // M = 3 * XX + a * ZZ2; a = 0
34966 var m = xx.redAdd(xx).redIAdd(xx);
34967 // MM = M^2
34968 var mm = m.redSqr();
34969 // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM
34970 var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
34971 e = e.redIAdd(e);
34972 e = e.redAdd(e).redIAdd(e);
34973 e = e.redISub(mm);
34974 // EE = E^2
34975 var ee = e.redSqr();
34976 // T = 16*YYYY
34977 var t = yyyy.redIAdd(yyyy);
34978 t = t.redIAdd(t);
34979 t = t.redIAdd(t);
34980 t = t.redIAdd(t);
34981 // U = (M + E)^2 - MM - EE - T
34982 var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);
34983 // X3 = 4 * (X1 * EE - 4 * YY * U)
34984 var yyu4 = yy.redMul(u);
34985 yyu4 = yyu4.redIAdd(yyu4);
34986 yyu4 = yyu4.redIAdd(yyu4);
34987 var nx = this.x.redMul(ee).redISub(yyu4);
34988 nx = nx.redIAdd(nx);
34989 nx = nx.redIAdd(nx);
34990 // Y3 = 8 * Y1 * (U * (T - U) - E * EE)
34991 var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));
34992 ny = ny.redIAdd(ny);
34993 ny = ny.redIAdd(ny);
34994 ny = ny.redIAdd(ny);
34995 // Z3 = (Z1 + E)^2 - ZZ - EE
34996 var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);
34997
34998 return this.curve.jpoint(nx, ny, nz);
34999 };
35000
35001 JPoint.prototype.mul = function mul(k, kbase) {
35002 k = new BN(k, kbase);
35003
35004 return this.curve._wnafMul(this, k);
35005 };
35006
35007 JPoint.prototype.eq = function eq(p) {
35008 if (p.type === 'affine')
35009 return this.eq(p.toJ());
35010
35011 if (this === p)
35012 return true;
35013
35014 // x1 * z2^2 == x2 * z1^2
35015 var z2 = this.z.redSqr();
35016 var pz2 = p.z.redSqr();
35017 if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)
35018 return false;
35019
35020 // y1 * z2^3 == y2 * z1^3
35021 var z3 = z2.redMul(this.z);
35022 var pz3 = pz2.redMul(p.z);
35023 return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;
35024 };
35025
35026 JPoint.prototype.eqXToP = function eqXToP(x) {
35027 var zs = this.z.redSqr();
35028 var rx = x.toRed(this.curve.red).redMul(zs);
35029 if (this.x.cmp(rx) === 0)
35030 return true;
35031
35032 var xc = x.clone();
35033 var t = this.curve.redN.redMul(zs);
35034 for (;;) {
35035 xc.iadd(this.curve.n);
35036 if (xc.cmp(this.curve.p) >= 0)
35037 return false;
35038
35039 rx.redIAdd(t);
35040 if (this.x.cmp(rx) === 0)
35041 return true;
35042 }
35043 return false;
35044 };
35045
35046 JPoint.prototype.inspect = function inspect() {
35047 if (this.isInfinity())
35048 return '<EC JPoint Infinity>';
35049 return '<EC JPoint x: ' + this.x.toString(16, 2) +
35050 ' y: ' + this.y.toString(16, 2) +
35051 ' z: ' + this.z.toString(16, 2) + '>';
35052 };
35053
35054 JPoint.prototype.isInfinity = function isInfinity() {
35055 // XXX This code assumes that zero is always zero in red
35056 return this.z.cmpn(0) === 0;
35057 };
35058
35059 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],45:[function(require,module,exports){
35060 'use strict';
35061
35062 var curves = exports;
35063
35064 var hash = require('hash.js');
35065 var elliptic = require('../elliptic');
35066
35067 var assert = elliptic.utils.assert;
35068
35069 function PresetCurve(options) {
35070 if (options.type === 'short')
35071 this.curve = new elliptic.curve.short(options);
35072 else if (options.type === 'edwards')
35073 this.curve = new elliptic.curve.edwards(options);
35074 else
35075 this.curve = new elliptic.curve.mont(options);
35076 this.g = this.curve.g;
35077 this.n = this.curve.n;
35078 this.hash = options.hash;
35079
35080 assert(this.g.validate(), 'Invalid curve');
35081 assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');
35082 }
35083 curves.PresetCurve = PresetCurve;
35084
35085 function defineCurve(name, options) {
35086 Object.defineProperty(curves, name, {
35087 configurable: true,
35088 enumerable: true,
35089 get: function() {
35090 var curve = new PresetCurve(options);
35091 Object.defineProperty(curves, name, {
35092 configurable: true,
35093 enumerable: true,
35094 value: curve
35095 });
35096 return curve;
35097 }
35098 });
35099 }
35100
35101 defineCurve('p192', {
35102 type: 'short',
35103 prime: 'p192',
35104 p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',
35105 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',
35106 b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',
35107 n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',
35108 hash: hash.sha256,
35109 gRed: false,
35110 g: [
35111 '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',
35112 '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811'
35113 ]
35114 });
35115
35116 defineCurve('p224', {
35117 type: 'short',
35118 prime: 'p224',
35119 p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',
35120 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',
35121 b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',
35122 n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',
35123 hash: hash.sha256,
35124 gRed: false,
35125 g: [
35126 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',
35127 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34'
35128 ]
35129 });
35130
35131 defineCurve('p256', {
35132 type: 'short',
35133 prime: null,
35134 p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',
35135 a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',
35136 b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',
35137 n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',
35138 hash: hash.sha256,
35139 gRed: false,
35140 g: [
35141 '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',
35142 '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5'
35143 ]
35144 });
35145
35146 defineCurve('p384', {
35147 type: 'short',
35148 prime: null,
35149 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35150 'fffffffe ffffffff 00000000 00000000 ffffffff',
35151 a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35152 'fffffffe ffffffff 00000000 00000000 fffffffc',
35153 b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +
35154 '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',
35155 n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +
35156 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',
35157 hash: hash.sha384,
35158 gRed: false,
35159 g: [
35160 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +
35161 '5502f25d bf55296c 3a545e38 72760ab7',
35162 '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +
35163 '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'
35164 ]
35165 });
35166
35167 defineCurve('p521', {
35168 type: 'short',
35169 prime: null,
35170 p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35171 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35172 'ffffffff ffffffff ffffffff ffffffff ffffffff',
35173 a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35174 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35175 'ffffffff ffffffff ffffffff ffffffff fffffffc',
35176 b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +
35177 '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +
35178 '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',
35179 n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35180 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +
35181 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',
35182 hash: hash.sha512,
35183 gRed: false,
35184 g: [
35185 '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +
35186 '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +
35187 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',
35188 '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +
35189 '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +
35190 '3fad0761 353c7086 a272c240 88be9476 9fd16650'
35191 ]
35192 });
35193
35194 defineCurve('curve25519', {
35195 type: 'mont',
35196 prime: 'p25519',
35197 p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
35198 a: '76d06',
35199 b: '1',
35200 n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
35201 hash: hash.sha256,
35202 gRed: false,
35203 g: [
35204 '9'
35205 ]
35206 });
35207
35208 defineCurve('ed25519', {
35209 type: 'edwards',
35210 prime: 'p25519',
35211 p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
35212 a: '-1',
35213 c: '1',
35214 // -121665 * (121666^(-1)) (mod P)
35215 d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',
35216 n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
35217 hash: hash.sha256,
35218 gRed: false,
35219 g: [
35220 '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',
35221
35222 // 4/5
35223 '6666666666666666666666666666666666666666666666666666666666666658'
35224 ]
35225 });
35226
35227 var pre;
35228 try {
35229 pre = require('./precomputed/secp256k1');
35230 } catch (e) {
35231 pre = undefined;
35232 }
35233
35234 defineCurve('secp256k1', {
35235 type: 'short',
35236 prime: 'k256',
35237 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',
35238 a: '0',
35239 b: '7',
35240 n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',
35241 h: '1',
35242 hash: hash.sha256,
35243
35244 // Precomputed endomorphism
35245 beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',
35246 lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',
35247 basis: [
35248 {
35249 a: '3086d221a7d46bcde86c90e49284eb15',
35250 b: '-e4437ed6010e88286f547fa90abfe4c3'
35251 },
35252 {
35253 a: '114ca50f7a8e2f3f657c1108d9d44cfd8',
35254 b: '3086d221a7d46bcde86c90e49284eb15'
35255 }
35256 ],
35257
35258 gRed: false,
35259 g: [
35260 '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',
35261 '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',
35262 pre
35263 ]
35264 });
35265
35266 },{"../elliptic":39,"./precomputed/secp256k1":53,"hash.js":57}],46:[function(require,module,exports){
35267 'use strict';
35268
35269 var BN = require('bn.js');
35270 var elliptic = require('../../elliptic');
35271 var utils = elliptic.utils;
35272 var assert = utils.assert;
35273
35274 var KeyPair = require('./key');
35275 var Signature = require('./signature');
35276
35277 function EC(options) {
35278 if (!(this instanceof EC))
35279 return new EC(options);
35280
35281 // Shortcut `elliptic.ec(curve-name)`
35282 if (typeof options === 'string') {
35283 assert(elliptic.curves.hasOwnProperty(options), 'Unknown curve ' + options);
35284
35285 options = elliptic.curves[options];
35286 }
35287
35288 // Shortcut for `elliptic.ec(elliptic.curves.curveName)`
35289 if (options instanceof elliptic.curves.PresetCurve)
35290 options = { curve: options };
35291
35292 this.curve = options.curve.curve;
35293 this.n = this.curve.n;
35294 this.nh = this.n.ushrn(1);
35295 this.g = this.curve.g;
35296
35297 // Point on curve
35298 this.g = options.curve.g;
35299 this.g.precompute(options.curve.n.bitLength() + 1);
35300
35301 // Hash for function for DRBG
35302 this.hash = options.hash || options.curve.hash;
35303 }
35304 module.exports = EC;
35305
35306 EC.prototype.keyPair = function keyPair(options) {
35307 return new KeyPair(this, options);
35308 };
35309
35310 EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {
35311 return KeyPair.fromPrivate(this, priv, enc);
35312 };
35313
35314 EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {
35315 return KeyPair.fromPublic(this, pub, enc);
35316 };
35317
35318 EC.prototype.genKeyPair = function genKeyPair(options) {
35319 if (!options)
35320 options = {};
35321
35322 // Instantiate Hmac_DRBG
35323 var drbg = new elliptic.hmacDRBG({
35324 hash: this.hash,
35325 pers: options.pers,
35326 entropy: options.entropy || elliptic.rand(this.hash.hmacStrength),
35327 nonce: this.n.toArray()
35328 });
35329
35330 var bytes = this.n.byteLength();
35331 var ns2 = this.n.sub(new BN(2));
35332 do {
35333 var priv = new BN(drbg.generate(bytes));
35334 if (priv.cmp(ns2) > 0)
35335 continue;
35336
35337 priv.iaddn(1);
35338 return this.keyFromPrivate(priv);
35339 } while (true);
35340 };
35341
35342 EC.prototype._truncateToN = function truncateToN(msg, truncOnly) {
35343 var delta = msg.byteLength() * 8 - this.n.bitLength();
35344 if (delta > 0)
35345 msg = msg.ushrn(delta);
35346 if (!truncOnly && msg.cmp(this.n) >= 0)
35347 return msg.sub(this.n);
35348 else
35349 return msg;
35350 };
35351
35352 EC.prototype.sign = function sign(msg, key, enc, options) {
35353 if (typeof enc === 'object') {
35354 options = enc;
35355 enc = null;
35356 }
35357 if (!options)
35358 options = {};
35359
35360 key = this.keyFromPrivate(key, enc);
35361 msg = this._truncateToN(new BN(msg, 16));
35362
35363 // Zero-extend key to provide enough entropy
35364 var bytes = this.n.byteLength();
35365 var bkey = key.getPrivate().toArray('be', bytes);
35366
35367 // Zero-extend nonce to have the same byte size as N
35368 var nonce = msg.toArray('be', bytes);
35369
35370 // Instantiate Hmac_DRBG
35371 var drbg = new elliptic.hmacDRBG({
35372 hash: this.hash,
35373 entropy: bkey,
35374 nonce: nonce,
35375 pers: options.pers,
35376 persEnc: options.persEnc
35377 });
35378
35379 // Number of bytes to generate
35380 var ns1 = this.n.sub(new BN(1));
35381
35382 for (var iter = 0; true; iter++) {
35383 var k = options.k ?
35384 options.k(iter) :
35385 new BN(drbg.generate(this.n.byteLength()));
35386 k = this._truncateToN(k, true);
35387 if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)
35388 continue;
35389
35390 var kp = this.g.mul(k);
35391 if (kp.isInfinity())
35392 continue;
35393
35394 var kpX = kp.getX();
35395 var r = kpX.umod(this.n);
35396 if (r.cmpn(0) === 0)
35397 continue;
35398
35399 var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));
35400 s = s.umod(this.n);
35401 if (s.cmpn(0) === 0)
35402 continue;
35403
35404 var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |
35405 (kpX.cmp(r) !== 0 ? 2 : 0);
35406
35407 // Use complement of `s`, if it is > `n / 2`
35408 if (options.canonical && s.cmp(this.nh) > 0) {
35409 s = this.n.sub(s);
35410 recoveryParam ^= 1;
35411 }
35412
35413 return new Signature({ r: r, s: s, recoveryParam: recoveryParam });
35414 }
35415 };
35416
35417 EC.prototype.verify = function verify(msg, signature, key, enc) {
35418 msg = this._truncateToN(new BN(msg, 16));
35419 key = this.keyFromPublic(key, enc);
35420 signature = new Signature(signature, 'hex');
35421
35422 // Perform primitive values validation
35423 var r = signature.r;
35424 var s = signature.s;
35425 if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)
35426 return false;
35427 if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)
35428 return false;
35429
35430 // Validate signature
35431 var sinv = s.invm(this.n);
35432 var u1 = sinv.mul(msg).umod(this.n);
35433 var u2 = sinv.mul(r).umod(this.n);
35434
35435 if (!this.curve._maxwellTrick) {
35436 var p = this.g.mulAdd(u1, key.getPublic(), u2);
35437 if (p.isInfinity())
35438 return false;
35439
35440 return p.getX().umod(this.n).cmp(r) === 0;
35441 }
35442
35443 // NOTE: Greg Maxwell's trick, inspired by:
35444 // https://git.io/vad3K
35445
35446 var p = this.g.jmulAdd(u1, key.getPublic(), u2);
35447 if (p.isInfinity())
35448 return false;
35449
35450 // Compare `p.x` of Jacobian point with `r`,
35451 // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the
35452 // inverse of `p.z^2`
35453 return p.eqXToP(r);
35454 };
35455
35456 EC.prototype.recoverPubKey = function(msg, signature, j, enc) {
35457 assert((3 & j) === j, 'The recovery param is more than two bits');
35458 signature = new Signature(signature, enc);
35459
35460 var n = this.n;
35461 var e = new BN(msg);
35462 var r = signature.r;
35463 var s = signature.s;
35464
35465 // A set LSB signifies that the y-coordinate is odd
35466 var isYOdd = j & 1;
35467 var isSecondKey = j >> 1;
35468 if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)
35469 throw new Error('Unable to find sencond key candinate');
35470
35471 // 1.1. Let x = r + jn.
35472 if (isSecondKey)
35473 r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);
35474 else
35475 r = this.curve.pointFromX(r, isYOdd);
35476
35477 var rInv = signature.r.invm(n);
35478 var s1 = n.sub(e).mul(rInv).umod(n);
35479 var s2 = s.mul(rInv).umod(n);
35480
35481 // 1.6.1 Compute Q = r^-1 (sR - eG)
35482 // Q = r^-1 (sR + -eG)
35483 return this.g.mulAdd(s1, r, s2);
35484 };
35485
35486 EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {
35487 signature = new Signature(signature, enc);
35488 if (signature.recoveryParam !== null)
35489 return signature.recoveryParam;
35490
35491 for (var i = 0; i < 4; i++) {
35492 var Qprime;
35493 try {
35494 Qprime = this.recoverPubKey(e, signature, i);
35495 } catch (e) {
35496 continue;
35497 }
35498
35499 if (Qprime.eq(Q))
35500 return i;
35501 }
35502 throw new Error('Unable to find valid recovery factor');
35503 };
35504
35505 },{"../../elliptic":39,"./key":47,"./signature":48,"bn.js":33}],47:[function(require,module,exports){
35506 'use strict';
35507
35508 var BN = require('bn.js');
35509 var elliptic = require('../../elliptic');
35510 var utils = elliptic.utils;
35511 var assert = utils.assert;
35512
35513 function KeyPair(ec, options) {
35514 this.ec = ec;
35515 this.priv = null;
35516 this.pub = null;
35517
35518 // KeyPair(ec, { priv: ..., pub: ... })
35519 if (options.priv)
35520 this._importPrivate(options.priv, options.privEnc);
35521 if (options.pub)
35522 this._importPublic(options.pub, options.pubEnc);
35523 }
35524 module.exports = KeyPair;
35525
35526 KeyPair.fromPublic = function fromPublic(ec, pub, enc) {
35527 if (pub instanceof KeyPair)
35528 return pub;
35529
35530 return new KeyPair(ec, {
35531 pub: pub,
35532 pubEnc: enc
35533 });
35534 };
35535
35536 KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {
35537 if (priv instanceof KeyPair)
35538 return priv;
35539
35540 return new KeyPair(ec, {
35541 priv: priv,
35542 privEnc: enc
35543 });
35544 };
35545
35546 KeyPair.prototype.validate = function validate() {
35547 var pub = this.getPublic();
35548
35549 if (pub.isInfinity())
35550 return { result: false, reason: 'Invalid public key' };
35551 if (!pub.validate())
35552 return { result: false, reason: 'Public key is not a point' };
35553 if (!pub.mul(this.ec.curve.n).isInfinity())
35554 return { result: false, reason: 'Public key * N != O' };
35555
35556 return { result: true, reason: null };
35557 };
35558
35559 KeyPair.prototype.getPublic = function getPublic(compact, enc) {
35560 // compact is optional argument
35561 if (typeof compact === 'string') {
35562 enc = compact;
35563 compact = null;
35564 }
35565
35566 if (!this.pub)
35567 this.pub = this.ec.g.mul(this.priv);
35568
35569 if (!enc)
35570 return this.pub;
35571
35572 return this.pub.encode(enc, compact);
35573 };
35574
35575 KeyPair.prototype.getPrivate = function getPrivate(enc) {
35576 if (enc === 'hex')
35577 return this.priv.toString(16, 2);
35578 else
35579 return this.priv;
35580 };
35581
35582 KeyPair.prototype._importPrivate = function _importPrivate(key, enc) {
35583 this.priv = new BN(key, enc || 16);
35584
35585 // Ensure that the priv won't be bigger than n, otherwise we may fail
35586 // in fixed multiplication method
35587 this.priv = this.priv.umod(this.ec.curve.n);
35588 };
35589
35590 KeyPair.prototype._importPublic = function _importPublic(key, enc) {
35591 if (key.x || key.y) {
35592 // Montgomery points only have an `x` coordinate.
35593 // Weierstrass/Edwards points on the other hand have both `x` and
35594 // `y` coordinates.
35595 if (this.ec.curve.type === 'mont') {
35596 assert(key.x, 'Need x coordinate');
35597 } else if (this.ec.curve.type === 'short' ||
35598 this.ec.curve.type === 'edwards') {
35599 assert(key.x && key.y, 'Need both x and y coordinate');
35600 }
35601 this.pub = this.ec.curve.point(key.x, key.y);
35602 return;
35603 }
35604 this.pub = this.ec.curve.decodePoint(key, enc);
35605 };
35606
35607 // ECDH
35608 KeyPair.prototype.derive = function derive(pub) {
35609 return pub.mul(this.priv).getX();
35610 };
35611
35612 // ECDSA
35613 KeyPair.prototype.sign = function sign(msg, enc, options) {
35614 return this.ec.sign(msg, this, enc, options);
35615 };
35616
35617 KeyPair.prototype.verify = function verify(msg, signature) {
35618 return this.ec.verify(msg, signature, this);
35619 };
35620
35621 KeyPair.prototype.inspect = function inspect() {
35622 return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +
35623 ' pub: ' + (this.pub && this.pub.inspect()) + ' >';
35624 };
35625
35626 },{"../../elliptic":39,"bn.js":33}],48:[function(require,module,exports){
35627 'use strict';
35628
35629 var BN = require('bn.js');
35630
35631 var elliptic = require('../../elliptic');
35632 var utils = elliptic.utils;
35633 var assert = utils.assert;
35634
35635 function Signature(options, enc) {
35636 if (options instanceof Signature)
35637 return options;
35638
35639 if (this._importDER(options, enc))
35640 return;
35641
35642 assert(options.r && options.s, 'Signature without r or s');
35643 this.r = new BN(options.r, 16);
35644 this.s = new BN(options.s, 16);
35645 if (options.recoveryParam === undefined)
35646 this.recoveryParam = null;
35647 else
35648 this.recoveryParam = options.recoveryParam;
35649 }
35650 module.exports = Signature;
35651
35652 function Position() {
35653 this.place = 0;
35654 }
35655
35656 function getLength(buf, p) {
35657 var initial = buf[p.place++];
35658 if (!(initial & 0x80)) {
35659 return initial;
35660 }
35661 var octetLen = initial & 0xf;
35662 var val = 0;
35663 for (var i = 0, off = p.place; i < octetLen; i++, off++) {
35664 val <<= 8;
35665 val |= buf[off];
35666 }
35667 p.place = off;
35668 return val;
35669 }
35670
35671 function rmPadding(buf) {
35672 var i = 0;
35673 var len = buf.length - 1;
35674 while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {
35675 i++;
35676 }
35677 if (i === 0) {
35678 return buf;
35679 }
35680 return buf.slice(i);
35681 }
35682
35683 Signature.prototype._importDER = function _importDER(data, enc) {
35684 data = utils.toArray(data, enc);
35685 var p = new Position();
35686 if (data[p.place++] !== 0x30) {
35687 return false;
35688 }
35689 var len = getLength(data, p);
35690 if ((len + p.place) !== data.length) {
35691 return false;
35692 }
35693 if (data[p.place++] !== 0x02) {
35694 return false;
35695 }
35696 var rlen = getLength(data, p);
35697 var r = data.slice(p.place, rlen + p.place);
35698 p.place += rlen;
35699 if (data[p.place++] !== 0x02) {
35700 return false;
35701 }
35702 var slen = getLength(data, p);
35703 if (data.length !== slen + p.place) {
35704 return false;
35705 }
35706 var s = data.slice(p.place, slen + p.place);
35707 if (r[0] === 0 && (r[1] & 0x80)) {
35708 r = r.slice(1);
35709 }
35710 if (s[0] === 0 && (s[1] & 0x80)) {
35711 s = s.slice(1);
35712 }
35713
35714 this.r = new BN(r);
35715 this.s = new BN(s);
35716 this.recoveryParam = null;
35717
35718 return true;
35719 };
35720
35721 function constructLength(arr, len) {
35722 if (len < 0x80) {
35723 arr.push(len);
35724 return;
35725 }
35726 var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);
35727 arr.push(octets | 0x80);
35728 while (--octets) {
35729 arr.push((len >>> (octets << 3)) & 0xff);
35730 }
35731 arr.push(len);
35732 }
35733
35734 Signature.prototype.toDER = function toDER(enc) {
35735 var r = this.r.toArray();
35736 var s = this.s.toArray();
35737
35738 // Pad values
35739 if (r[0] & 0x80)
35740 r = [ 0 ].concat(r);
35741 // Pad values
35742 if (s[0] & 0x80)
35743 s = [ 0 ].concat(s);
35744
35745 r = rmPadding(r);
35746 s = rmPadding(s);
35747
35748 while (!s[0] && !(s[1] & 0x80)) {
35749 s = s.slice(1);
35750 }
35751 var arr = [ 0x02 ];
35752 constructLength(arr, r.length);
35753 arr = arr.concat(r);
35754 arr.push(0x02);
35755 constructLength(arr, s.length);
35756 var backHalf = arr.concat(s);
35757 var res = [ 0x30 ];
35758 constructLength(res, backHalf.length);
35759 res = res.concat(backHalf);
35760 return utils.encode(res, enc);
35761 };
35762
35763 },{"../../elliptic":39,"bn.js":33}],49:[function(require,module,exports){
35764 'use strict';
35765
35766 var hash = require('hash.js');
35767 var elliptic = require('../../elliptic');
35768 var utils = elliptic.utils;
35769 var assert = utils.assert;
35770 var parseBytes = utils.parseBytes;
35771 var KeyPair = require('./key');
35772 var Signature = require('./signature');
35773
35774 function EDDSA(curve) {
35775 assert(curve === 'ed25519', 'only tested with ed25519 so far');
35776
35777 if (!(this instanceof EDDSA))
35778 return new EDDSA(curve);
35779
35780 var curve = elliptic.curves[curve].curve;
35781 this.curve = curve;
35782 this.g = curve.g;
35783 this.g.precompute(curve.n.bitLength() + 1);
35784
35785 this.pointClass = curve.point().constructor;
35786 this.encodingLength = Math.ceil(curve.n.bitLength() / 8);
35787 this.hash = hash.sha512;
35788 }
35789
35790 module.exports = EDDSA;
35791
35792 /**
35793 * @param {Array|String} message - message bytes
35794 * @param {Array|String|KeyPair} secret - secret bytes or a keypair
35795 * @returns {Signature} - signature
35796 */
35797 EDDSA.prototype.sign = function sign(message, secret) {
35798 message = parseBytes(message);
35799 var key = this.keyFromSecret(secret);
35800 var r = this.hashInt(key.messagePrefix(), message);
35801 var R = this.g.mul(r);
35802 var Rencoded = this.encodePoint(R);
35803 var s_ = this.hashInt(Rencoded, key.pubBytes(), message)
35804 .mul(key.priv());
35805 var S = r.add(s_).umod(this.curve.n);
35806 return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });
35807 };
35808
35809 /**
35810 * @param {Array} message - message bytes
35811 * @param {Array|String|Signature} sig - sig bytes
35812 * @param {Array|String|Point|KeyPair} pub - public key
35813 * @returns {Boolean} - true if public key matches sig of message
35814 */
35815 EDDSA.prototype.verify = function verify(message, sig, pub) {
35816 message = parseBytes(message);
35817 sig = this.makeSignature(sig);
35818 var key = this.keyFromPublic(pub);
35819 var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);
35820 var SG = this.g.mul(sig.S());
35821 var RplusAh = sig.R().add(key.pub().mul(h));
35822 return RplusAh.eq(SG);
35823 };
35824
35825 EDDSA.prototype.hashInt = function hashInt() {
35826 var hash = this.hash();
35827 for (var i = 0; i < arguments.length; i++)
35828 hash.update(arguments[i]);
35829 return utils.intFromLE(hash.digest()).umod(this.curve.n);
35830 };
35831
35832 EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {
35833 return KeyPair.fromPublic(this, pub);
35834 };
35835
35836 EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {
35837 return KeyPair.fromSecret(this, secret);
35838 };
35839
35840 EDDSA.prototype.makeSignature = function makeSignature(sig) {
35841 if (sig instanceof Signature)
35842 return sig;
35843 return new Signature(this, sig);
35844 };
35845
35846 /**
35847 * * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2
35848 *
35849 * EDDSA defines methods for encoding and decoding points and integers. These are
35850 * helper convenience methods, that pass along to utility functions implied
35851 * parameters.
35852 *
35853 */
35854 EDDSA.prototype.encodePoint = function encodePoint(point) {
35855 var enc = point.getY().toArray('le', this.encodingLength);
35856 enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;
35857 return enc;
35858 };
35859
35860 EDDSA.prototype.decodePoint = function decodePoint(bytes) {
35861 bytes = utils.parseBytes(bytes);
35862
35863 var lastIx = bytes.length - 1;
35864 var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);
35865 var xIsOdd = (bytes[lastIx] & 0x80) !== 0;
35866
35867 var y = utils.intFromLE(normed);
35868 return this.curve.pointFromY(y, xIsOdd);
35869 };
35870
35871 EDDSA.prototype.encodeInt = function encodeInt(num) {
35872 return num.toArray('le', this.encodingLength);
35873 };
35874
35875 EDDSA.prototype.decodeInt = function decodeInt(bytes) {
35876 return utils.intFromLE(bytes);
35877 };
35878
35879 EDDSA.prototype.isPoint = function isPoint(val) {
35880 return val instanceof this.pointClass;
35881 };
35882
35883 },{"../../elliptic":39,"./key":50,"./signature":51,"hash.js":57}],50:[function(require,module,exports){
35884 'use strict';
35885
35886 var elliptic = require('../../elliptic');
35887 var utils = elliptic.utils;
35888 var assert = utils.assert;
35889 var parseBytes = utils.parseBytes;
35890 var cachedProperty = utils.cachedProperty;
35891
35892 /**
35893 * @param {EDDSA} eddsa - instance
35894 * @param {Object} params - public/private key parameters
35895 *
35896 * @param {Array<Byte>} [params.secret] - secret seed bytes
35897 * @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)
35898 * @param {Array<Byte>} [params.pub] - public key point encoded as bytes
35899 *
35900 */
35901 function KeyPair(eddsa, params) {
35902 this.eddsa = eddsa;
35903 this._secret = parseBytes(params.secret);
35904 if (eddsa.isPoint(params.pub))
35905 this._pub = params.pub;
35906 else
35907 this._pubBytes = parseBytes(params.pub);
35908 }
35909
35910 KeyPair.fromPublic = function fromPublic(eddsa, pub) {
35911 if (pub instanceof KeyPair)
35912 return pub;
35913 return new KeyPair(eddsa, { pub: pub });
35914 };
35915
35916 KeyPair.fromSecret = function fromSecret(eddsa, secret) {
35917 if (secret instanceof KeyPair)
35918 return secret;
35919 return new KeyPair(eddsa, { secret: secret });
35920 };
35921
35922 KeyPair.prototype.secret = function secret() {
35923 return this._secret;
35924 };
35925
35926 cachedProperty(KeyPair, 'pubBytes', function pubBytes() {
35927 return this.eddsa.encodePoint(this.pub());
35928 });
35929
35930 cachedProperty(KeyPair, 'pub', function pub() {
35931 if (this._pubBytes)
35932 return this.eddsa.decodePoint(this._pubBytes);
35933 return this.eddsa.g.mul(this.priv());
35934 });
35935
35936 cachedProperty(KeyPair, 'privBytes', function privBytes() {
35937 var eddsa = this.eddsa;
35938 var hash = this.hash();
35939 var lastIx = eddsa.encodingLength - 1;
35940
35941 var a = hash.slice(0, eddsa.encodingLength);
35942 a[0] &= 248;
35943 a[lastIx] &= 127;
35944 a[lastIx] |= 64;
35945
35946 return a;
35947 });
35948
35949 cachedProperty(KeyPair, 'priv', function priv() {
35950 return this.eddsa.decodeInt(this.privBytes());
35951 });
35952
35953 cachedProperty(KeyPair, 'hash', function hash() {
35954 return this.eddsa.hash().update(this.secret()).digest();
35955 });
35956
35957 cachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {
35958 return this.hash().slice(this.eddsa.encodingLength);
35959 });
35960
35961 KeyPair.prototype.sign = function sign(message) {
35962 assert(this._secret, 'KeyPair can only verify');
35963 return this.eddsa.sign(message, this);
35964 };
35965
35966 KeyPair.prototype.verify = function verify(message, sig) {
35967 return this.eddsa.verify(message, sig, this);
35968 };
35969
35970 KeyPair.prototype.getSecret = function getSecret(enc) {
35971 assert(this._secret, 'KeyPair is public only');
35972 return utils.encode(this.secret(), enc);
35973 };
35974
35975 KeyPair.prototype.getPublic = function getPublic(enc) {
35976 return utils.encode(this.pubBytes(), enc);
35977 };
35978
35979 module.exports = KeyPair;
35980
35981 },{"../../elliptic":39}],51:[function(require,module,exports){
35982 'use strict';
35983
35984 var BN = require('bn.js');
35985 var elliptic = require('../../elliptic');
35986 var utils = elliptic.utils;
35987 var assert = utils.assert;
35988 var cachedProperty = utils.cachedProperty;
35989 var parseBytes = utils.parseBytes;
35990
35991 /**
35992 * @param {EDDSA} eddsa - eddsa instance
35993 * @param {Array<Bytes>|Object} sig -
35994 * @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes
35995 * @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes
35996 * @param {Array<Bytes>} [sig.Rencoded] - R point encoded
35997 * @param {Array<Bytes>} [sig.Sencoded] - S scalar encoded
35998 */
35999 function Signature(eddsa, sig) {
36000 this.eddsa = eddsa;
36001
36002 if (typeof sig !== 'object')
36003 sig = parseBytes(sig);
36004
36005 if (Array.isArray(sig)) {
36006 sig = {
36007 R: sig.slice(0, eddsa.encodingLength),
36008 S: sig.slice(eddsa.encodingLength)
36009 };
36010 }
36011
36012 assert(sig.R && sig.S, 'Signature without R or S');
36013
36014 if (eddsa.isPoint(sig.R))
36015 this._R = sig.R;
36016 if (sig.S instanceof BN)
36017 this._S = sig.S;
36018
36019 this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;
36020 this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;
36021 }
36022
36023 cachedProperty(Signature, 'S', function S() {
36024 return this.eddsa.decodeInt(this.Sencoded());
36025 });
36026
36027 cachedProperty(Signature, 'R', function R() {
36028 return this.eddsa.decodePoint(this.Rencoded());
36029 });
36030
36031 cachedProperty(Signature, 'Rencoded', function Rencoded() {
36032 return this.eddsa.encodePoint(this.R());
36033 });
36034
36035 cachedProperty(Signature, 'Sencoded', function Sencoded() {
36036 return this.eddsa.encodeInt(this.S());
36037 });
36038
36039 Signature.prototype.toBytes = function toBytes() {
36040 return this.Rencoded().concat(this.Sencoded());
36041 };
36042
36043 Signature.prototype.toHex = function toHex() {
36044 return utils.encode(this.toBytes(), 'hex').toUpperCase();
36045 };
36046
36047 module.exports = Signature;
36048
36049 },{"../../elliptic":39,"bn.js":33}],52:[function(require,module,exports){
36050 'use strict';
36051
36052 var hash = require('hash.js');
36053 var elliptic = require('../elliptic');
36054 var utils = elliptic.utils;
36055 var assert = utils.assert;
36056
36057 function HmacDRBG(options) {
36058 if (!(this instanceof HmacDRBG))
36059 return new HmacDRBG(options);
36060 this.hash = options.hash;
36061 this.predResist = !!options.predResist;
36062
36063 this.outLen = this.hash.outSize;
36064 this.minEntropy = options.minEntropy || this.hash.hmacStrength;
36065
36066 this.reseed = null;
36067 this.reseedInterval = null;
36068 this.K = null;
36069 this.V = null;
36070
36071 var entropy = utils.toArray(options.entropy, options.entropyEnc);
36072 var nonce = utils.toArray(options.nonce, options.nonceEnc);
36073 var pers = utils.toArray(options.pers, options.persEnc);
36074 assert(entropy.length >= (this.minEntropy / 8),
36075 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
36076 this._init(entropy, nonce, pers);
36077 }
36078 module.exports = HmacDRBG;
36079
36080 HmacDRBG.prototype._init = function init(entropy, nonce, pers) {
36081 var seed = entropy.concat(nonce).concat(pers);
36082
36083 this.K = new Array(this.outLen / 8);
36084 this.V = new Array(this.outLen / 8);
36085 for (var i = 0; i < this.V.length; i++) {
36086 this.K[i] = 0x00;
36087 this.V[i] = 0x01;
36088 }
36089
36090 this._update(seed);
36091 this.reseed = 1;
36092 this.reseedInterval = 0x1000000000000; // 2^48
36093 };
36094
36095 HmacDRBG.prototype._hmac = function hmac() {
36096 return new hash.hmac(this.hash, this.K);
36097 };
36098
36099 HmacDRBG.prototype._update = function update(seed) {
36100 var kmac = this._hmac()
36101 .update(this.V)
36102 .update([ 0x00 ]);
36103 if (seed)
36104 kmac = kmac.update(seed);
36105 this.K = kmac.digest();
36106 this.V = this._hmac().update(this.V).digest();
36107 if (!seed)
36108 return;
36109
36110 this.K = this._hmac()
36111 .update(this.V)
36112 .update([ 0x01 ])
36113 .update(seed)
36114 .digest();
36115 this.V = this._hmac().update(this.V).digest();
36116 };
36117
36118 HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {
36119 // Optional entropy enc
36120 if (typeof entropyEnc !== 'string') {
36121 addEnc = add;
36122 add = entropyEnc;
36123 entropyEnc = null;
36124 }
36125
36126 entropy = utils.toBuffer(entropy, entropyEnc);
36127 add = utils.toBuffer(add, addEnc);
36128
36129 assert(entropy.length >= (this.minEntropy / 8),
36130 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
36131
36132 this._update(entropy.concat(add || []));
36133 this.reseed = 1;
36134 };
36135
36136 HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {
36137 if (this.reseed > this.reseedInterval)
36138 throw new Error('Reseed is required');
36139
36140 // Optional encoding
36141 if (typeof enc !== 'string') {
36142 addEnc = add;
36143 add = enc;
36144 enc = null;
36145 }
36146
36147 // Optional additional data
36148 if (add) {
36149 add = utils.toArray(add, addEnc);
36150 this._update(add);
36151 }
36152
36153 var temp = [];
36154 while (temp.length < len) {
36155 this.V = this._hmac().update(this.V).digest();
36156 temp = temp.concat(this.V);
36157 }
36158
36159 var res = temp.slice(0, len);
36160 this._update(add);
36161 this.reseed++;
36162 return utils.encode(res, enc);
36163 };
36164
36165 },{"../elliptic":39,"hash.js":57}],53:[function(require,module,exports){
36166 module.exports = {
36167 doubles: {
36168 step: 4,
36169 points: [
36170 [
36171 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',
36172 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'
36173 ],
36174 [
36175 '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',
36176 '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'
36177 ],
36178 [
36179 '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',
36180 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'
36181 ],
36182 [
36183 '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',
36184 '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'
36185 ],
36186 [
36187 '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',
36188 '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'
36189 ],
36190 [
36191 '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',
36192 '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'
36193 ],
36194 [
36195 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',
36196 '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'
36197 ],
36198 [
36199 '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',
36200 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'
36201 ],
36202 [
36203 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',
36204 '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'
36205 ],
36206 [
36207 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',
36208 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'
36209 ],
36210 [
36211 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',
36212 '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'
36213 ],
36214 [
36215 '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',
36216 '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'
36217 ],
36218 [
36219 '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',
36220 '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'
36221 ],
36222 [
36223 '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',
36224 '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'
36225 ],
36226 [
36227 '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',
36228 '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'
36229 ],
36230 [
36231 '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',
36232 '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'
36233 ],
36234 [
36235 '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',
36236 '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'
36237 ],
36238 [
36239 '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',
36240 '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'
36241 ],
36242 [
36243 '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',
36244 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'
36245 ],
36246 [
36247 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',
36248 '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'
36249 ],
36250 [
36251 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',
36252 '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'
36253 ],
36254 [
36255 '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',
36256 '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'
36257 ],
36258 [
36259 '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',
36260 '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'
36261 ],
36262 [
36263 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',
36264 '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'
36265 ],
36266 [
36267 '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',
36268 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'
36269 ],
36270 [
36271 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',
36272 '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'
36273 ],
36274 [
36275 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',
36276 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'
36277 ],
36278 [
36279 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',
36280 '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'
36281 ],
36282 [
36283 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',
36284 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'
36285 ],
36286 [
36287 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',
36288 '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'
36289 ],
36290 [
36291 '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',
36292 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'
36293 ],
36294 [
36295 '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',
36296 '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'
36297 ],
36298 [
36299 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',
36300 '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'
36301 ],
36302 [
36303 '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',
36304 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'
36305 ],
36306 [
36307 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',
36308 '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'
36309 ],
36310 [
36311 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',
36312 '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'
36313 ],
36314 [
36315 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',
36316 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'
36317 ],
36318 [
36319 '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',
36320 '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'
36321 ],
36322 [
36323 '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',
36324 '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'
36325 ],
36326 [
36327 '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',
36328 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'
36329 ],
36330 [
36331 '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',
36332 '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'
36333 ],
36334 [
36335 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',
36336 '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'
36337 ],
36338 [
36339 '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',
36340 '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'
36341 ],
36342 [
36343 '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',
36344 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'
36345 ],
36346 [
36347 '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',
36348 '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'
36349 ],
36350 [
36351 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',
36352 '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'
36353 ],
36354 [
36355 '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',
36356 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'
36357 ],
36358 [
36359 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',
36360 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'
36361 ],
36362 [
36363 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',
36364 '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'
36365 ],
36366 [
36367 '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',
36368 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'
36369 ],
36370 [
36371 '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',
36372 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'
36373 ],
36374 [
36375 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',
36376 '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'
36377 ],
36378 [
36379 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',
36380 '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'
36381 ],
36382 [
36383 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',
36384 '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'
36385 ],
36386 [
36387 '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',
36388 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'
36389 ],
36390 [
36391 '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',
36392 '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'
36393 ],
36394 [
36395 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',
36396 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'
36397 ],
36398 [
36399 '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',
36400 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'
36401 ],
36402 [
36403 '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',
36404 '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'
36405 ],
36406 [
36407 '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',
36408 '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'
36409 ],
36410 [
36411 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',
36412 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'
36413 ],
36414 [
36415 '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',
36416 '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'
36417 ],
36418 [
36419 '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',
36420 '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'
36421 ],
36422 [
36423 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',
36424 '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'
36425 ],
36426 [
36427 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',
36428 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82'
36429 ]
36430 ]
36431 },
36432 naf: {
36433 wnd: 7,
36434 points: [
36435 [
36436 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',
36437 '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'
36438 ],
36439 [
36440 '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',
36441 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'
36442 ],
36443 [
36444 '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',
36445 '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'
36446 ],
36447 [
36448 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',
36449 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'
36450 ],
36451 [
36452 '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',
36453 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'
36454 ],
36455 [
36456 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',
36457 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'
36458 ],
36459 [
36460 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',
36461 '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'
36462 ],
36463 [
36464 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',
36465 '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'
36466 ],
36467 [
36468 '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',
36469 '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'
36470 ],
36471 [
36472 '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',
36473 '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'
36474 ],
36475 [
36476 '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',
36477 '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'
36478 ],
36479 [
36480 '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',
36481 '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'
36482 ],
36483 [
36484 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',
36485 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'
36486 ],
36487 [
36488 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',
36489 '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'
36490 ],
36491 [
36492 '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',
36493 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'
36494 ],
36495 [
36496 '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',
36497 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'
36498 ],
36499 [
36500 '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',
36501 '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'
36502 ],
36503 [
36504 '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',
36505 '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'
36506 ],
36507 [
36508 '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',
36509 '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'
36510 ],
36511 [
36512 '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',
36513 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'
36514 ],
36515 [
36516 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',
36517 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'
36518 ],
36519 [
36520 '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',
36521 '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'
36522 ],
36523 [
36524 '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',
36525 '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'
36526 ],
36527 [
36528 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',
36529 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'
36530 ],
36531 [
36532 '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',
36533 '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'
36534 ],
36535 [
36536 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',
36537 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'
36538 ],
36539 [
36540 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',
36541 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'
36542 ],
36543 [
36544 '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',
36545 '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'
36546 ],
36547 [
36548 '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',
36549 '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'
36550 ],
36551 [
36552 '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',
36553 '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'
36554 ],
36555 [
36556 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',
36557 '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'
36558 ],
36559 [
36560 '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',
36561 '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'
36562 ],
36563 [
36564 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',
36565 '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'
36566 ],
36567 [
36568 '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',
36569 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'
36570 ],
36571 [
36572 '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',
36573 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'
36574 ],
36575 [
36576 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',
36577 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'
36578 ],
36579 [
36580 '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',
36581 '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'
36582 ],
36583 [
36584 '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',
36585 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'
36586 ],
36587 [
36588 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',
36589 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'
36590 ],
36591 [
36592 '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',
36593 '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'
36594 ],
36595 [
36596 '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',
36597 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'
36598 ],
36599 [
36600 '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',
36601 '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'
36602 ],
36603 [
36604 '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',
36605 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'
36606 ],
36607 [
36608 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',
36609 '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'
36610 ],
36611 [
36612 '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',
36613 '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'
36614 ],
36615 [
36616 '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',
36617 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'
36618 ],
36619 [
36620 '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',
36621 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'
36622 ],
36623 [
36624 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',
36625 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'
36626 ],
36627 [
36628 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',
36629 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'
36630 ],
36631 [
36632 '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',
36633 '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'
36634 ],
36635 [
36636 '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',
36637 '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'
36638 ],
36639 [
36640 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',
36641 '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'
36642 ],
36643 [
36644 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',
36645 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'
36646 ],
36647 [
36648 '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',
36649 '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'
36650 ],
36651 [
36652 '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',
36653 '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'
36654 ],
36655 [
36656 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',
36657 '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'
36658 ],
36659 [
36660 '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',
36661 '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'
36662 ],
36663 [
36664 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',
36665 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'
36666 ],
36667 [
36668 '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',
36669 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'
36670 ],
36671 [
36672 '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',
36673 '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'
36674 ],
36675 [
36676 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',
36677 '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'
36678 ],
36679 [
36680 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',
36681 '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'
36682 ],
36683 [
36684 '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',
36685 '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'
36686 ],
36687 [
36688 '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',
36689 '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'
36690 ],
36691 [
36692 '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',
36693 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'
36694 ],
36695 [
36696 '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',
36697 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'
36698 ],
36699 [
36700 '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',
36701 '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'
36702 ],
36703 [
36704 '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',
36705 '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'
36706 ],
36707 [
36708 '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',
36709 '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'
36710 ],
36711 [
36712 '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',
36713 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'
36714 ],
36715 [
36716 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',
36717 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'
36718 ],
36719 [
36720 '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',
36721 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'
36722 ],
36723 [
36724 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',
36725 '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'
36726 ],
36727 [
36728 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',
36729 '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'
36730 ],
36731 [
36732 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',
36733 '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'
36734 ],
36735 [
36736 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',
36737 '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'
36738 ],
36739 [
36740 '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',
36741 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'
36742 ],
36743 [
36744 '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',
36745 '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'
36746 ],
36747 [
36748 '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',
36749 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'
36750 ],
36751 [
36752 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',
36753 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'
36754 ],
36755 [
36756 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',
36757 '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'
36758 ],
36759 [
36760 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',
36761 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'
36762 ],
36763 [
36764 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',
36765 '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'
36766 ],
36767 [
36768 '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',
36769 '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'
36770 ],
36771 [
36772 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',
36773 '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'
36774 ],
36775 [
36776 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',
36777 '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'
36778 ],
36779 [
36780 '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',
36781 '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'
36782 ],
36783 [
36784 '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',
36785 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'
36786 ],
36787 [
36788 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',
36789 '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'
36790 ],
36791 [
36792 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',
36793 '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'
36794 ],
36795 [
36796 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',
36797 '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'
36798 ],
36799 [
36800 '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',
36801 '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'
36802 ],
36803 [
36804 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',
36805 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'
36806 ],
36807 [
36808 '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',
36809 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'
36810 ],
36811 [
36812 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',
36813 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'
36814 ],
36815 [
36816 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',
36817 '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'
36818 ],
36819 [
36820 '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',
36821 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'
36822 ],
36823 [
36824 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',
36825 '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'
36826 ],
36827 [
36828 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',
36829 '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'
36830 ],
36831 [
36832 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',
36833 '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'
36834 ],
36835 [
36836 '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',
36837 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'
36838 ],
36839 [
36840 '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',
36841 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'
36842 ],
36843 [
36844 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',
36845 '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'
36846 ],
36847 [
36848 '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',
36849 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'
36850 ],
36851 [
36852 '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',
36853 '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'
36854 ],
36855 [
36856 '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',
36857 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'
36858 ],
36859 [
36860 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',
36861 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'
36862 ],
36863 [
36864 '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',
36865 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'
36866 ],
36867 [
36868 '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',
36869 '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'
36870 ],
36871 [
36872 '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',
36873 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'
36874 ],
36875 [
36876 '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',
36877 '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'
36878 ],
36879 [
36880 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',
36881 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'
36882 ],
36883 [
36884 '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',
36885 '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'
36886 ],
36887 [
36888 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',
36889 '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'
36890 ],
36891 [
36892 '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',
36893 '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'
36894 ],
36895 [
36896 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',
36897 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'
36898 ],
36899 [
36900 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',
36901 '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'
36902 ],
36903 [
36904 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',
36905 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'
36906 ],
36907 [
36908 '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',
36909 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'
36910 ],
36911 [
36912 '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',
36913 '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'
36914 ],
36915 [
36916 '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',
36917 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'
36918 ],
36919 [
36920 '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',
36921 '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'
36922 ],
36923 [
36924 '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',
36925 '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'
36926 ],
36927 [
36928 '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',
36929 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'
36930 ],
36931 [
36932 '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',
36933 '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'
36934 ],
36935 [
36936 '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',
36937 '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'
36938 ],
36939 [
36940 '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',
36941 '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9'
36942 ]
36943 ]
36944 }
36945 };
36946
36947 },{}],54:[function(require,module,exports){
36948 'use strict';
36949
36950 var utils = exports;
36951 var BN = require('bn.js');
36952
36953 utils.assert = function assert(val, msg) {
36954 if (!val)
36955 throw new Error(msg || 'Assertion failed');
36956 };
36957
36958 function toArray(msg, enc) {
36959 if (Array.isArray(msg))
36960 return msg.slice();
36961 if (!msg)
36962 return [];
36963 var res = [];
36964 if (typeof msg !== 'string') {
36965 for (var i = 0; i < msg.length; i++)
36966 res[i] = msg[i] | 0;
36967 return res;
36968 }
36969 if (!enc) {
36970 for (var i = 0; i < msg.length; i++) {
36971 var c = msg.charCodeAt(i);
36972 var hi = c >> 8;
36973 var lo = c & 0xff;
36974 if (hi)
36975 res.push(hi, lo);
36976 else
36977 res.push(lo);
36978 }
36979 } else if (enc === 'hex') {
36980 msg = msg.replace(/[^a-z0-9]+/ig, '');
36981 if (msg.length % 2 !== 0)
36982 msg = '0' + msg;
36983 for (var i = 0; i < msg.length; i += 2)
36984 res.push(parseInt(msg[i] + msg[i + 1], 16));
36985 }
36986 return res;
36987 }
36988 utils.toArray = toArray;
36989
36990 function zero2(word) {
36991 if (word.length === 1)
36992 return '0' + word;
36993 else
36994 return word;
36995 }
36996 utils.zero2 = zero2;
36997
36998 function toHex(msg) {
36999 var res = '';
37000 for (var i = 0; i < msg.length; i++)
37001 res += zero2(msg[i].toString(16));
37002 return res;
37003 }
37004 utils.toHex = toHex;
37005
37006 utils.encode = function encode(arr, enc) {
37007 if (enc === 'hex')
37008 return toHex(arr);
37009 else
37010 return arr;
37011 };
37012
37013 // Represent num in a w-NAF form
37014 function getNAF(num, w) {
37015 var naf = [];
37016 var ws = 1 << (w + 1);
37017 var k = num.clone();
37018 while (k.cmpn(1) >= 0) {
37019 var z;
37020 if (k.isOdd()) {
37021 var mod = k.andln(ws - 1);
37022 if (mod > (ws >> 1) - 1)
37023 z = (ws >> 1) - mod;
37024 else
37025 z = mod;
37026 k.isubn(z);
37027 } else {
37028 z = 0;
37029 }
37030 naf.push(z);
37031
37032 // Optimization, shift by word if possible
37033 var shift = (k.cmpn(0) !== 0 && k.andln(ws - 1) === 0) ? (w + 1) : 1;
37034 for (var i = 1; i < shift; i++)
37035 naf.push(0);
37036 k.iushrn(shift);
37037 }
37038
37039 return naf;
37040 }
37041 utils.getNAF = getNAF;
37042
37043 // Represent k1, k2 in a Joint Sparse Form
37044 function getJSF(k1, k2) {
37045 var jsf = [
37046 [],
37047 []
37048 ];
37049
37050 k1 = k1.clone();
37051 k2 = k2.clone();
37052 var d1 = 0;
37053 var d2 = 0;
37054 while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {
37055
37056 // First phase
37057 var m14 = (k1.andln(3) + d1) & 3;
37058 var m24 = (k2.andln(3) + d2) & 3;
37059 if (m14 === 3)
37060 m14 = -1;
37061 if (m24 === 3)
37062 m24 = -1;
37063 var u1;
37064 if ((m14 & 1) === 0) {
37065 u1 = 0;
37066 } else {
37067 var m8 = (k1.andln(7) + d1) & 7;
37068 if ((m8 === 3 || m8 === 5) && m24 === 2)
37069 u1 = -m14;
37070 else
37071 u1 = m14;
37072 }
37073 jsf[0].push(u1);
37074
37075 var u2;
37076 if ((m24 & 1) === 0) {
37077 u2 = 0;
37078 } else {
37079 var m8 = (k2.andln(7) + d2) & 7;
37080 if ((m8 === 3 || m8 === 5) && m14 === 2)
37081 u2 = -m24;
37082 else
37083 u2 = m24;
37084 }
37085 jsf[1].push(u2);
37086
37087 // Second phase
37088 if (2 * d1 === u1 + 1)
37089 d1 = 1 - d1;
37090 if (2 * d2 === u2 + 1)
37091 d2 = 1 - d2;
37092 k1.iushrn(1);
37093 k2.iushrn(1);
37094 }
37095
37096 return jsf;
37097 }
37098 utils.getJSF = getJSF;
37099
37100 function cachedProperty(obj, name, computer) {
37101 var key = '_' + name;
37102 obj.prototype[name] = function cachedProperty() {
37103 return this[key] !== undefined ? this[key] :
37104 this[key] = computer.call(this);
37105 };
37106 }
37107 utils.cachedProperty = cachedProperty;
37108
37109 function parseBytes(bytes) {
37110 return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :
37111 bytes;
37112 }
37113 utils.parseBytes = parseBytes;
37114
37115 function intFromLE(bytes) {
37116 return new BN(bytes, 'hex', 'le');
37117 }
37118 utils.intFromLE = intFromLE;
37119
37120
37121 },{"bn.js":33}],55:[function(require,module,exports){
37122 module.exports={
37123 "_args": [
37124 [
37125 {
37126 "raw": "elliptic@^6.2.3",
37127 "scope": null,
37128 "escapedName": "elliptic",
37129 "name": "elliptic",
37130 "rawSpec": "^6.2.3",
37131 "spec": ">=6.2.3 <7.0.0",
37132 "type": "range"
37133 },
37134 "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1"
37135 ]
37136 ],
37137 "_from": "elliptic@>=6.2.3 <7.0.0",
37138 "_id": "elliptic@6.3.3",
37139 "_inCache": true,
37140 "_location": "/elliptic",
37141 "_nodeVersion": "7.0.0",
37142 "_npmOperationalInternal": {
37143 "host": "packages-18-east.internal.npmjs.com",
37144 "tmp": "tmp/elliptic-6.3.3.tgz_1486422837740_0.10658654430881143"
37145 },
37146 "_npmUser": {
37147 "name": "indutny",
37148 "email": "fedor@indutny.com"
37149 },
37150 "_npmVersion": "3.10.8",
37151 "_phantomChildren": {},
37152 "_requested": {
37153 "raw": "elliptic@^6.2.3",
37154 "scope": null,
37155 "escapedName": "elliptic",
37156 "name": "elliptic",
37157 "rawSpec": "^6.2.3",
37158 "spec": ">=6.2.3 <7.0.0",
37159 "type": "range"
37160 },
37161 "_requiredBy": [
37162 "/browserify-sign",
37163 "/create-ecdh",
37164 "/secp256k1"
37165 ],
37166 "_resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz",
37167 "_shasum": "5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
37168 "_shrinkwrap": null,
37169 "_spec": "elliptic@^6.2.3",
37170 "_where": "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1",
37171 "author": {
37172 "name": "Fedor Indutny",
37173 "email": "fedor@indutny.com"
37174 },
37175 "bugs": {
37176 "url": "https://github.com/indutny/elliptic/issues"
37177 },
37178 "dependencies": {
37179 "bn.js": "^4.4.0",
37180 "brorand": "^1.0.1",
37181 "hash.js": "^1.0.0",
37182 "inherits": "^2.0.1"
37183 },
37184 "description": "EC cryptography",
37185 "devDependencies": {
37186 "brfs": "^1.4.3",
37187 "coveralls": "^2.11.3",
37188 "grunt": "^0.4.5",
37189 "grunt-browserify": "^5.0.0",
37190 "grunt-cli": "^1.2.0",
37191 "grunt-contrib-connect": "^1.0.0",
37192 "grunt-contrib-copy": "^1.0.0",
37193 "grunt-contrib-uglify": "^1.0.1",
37194 "grunt-mocha-istanbul": "^3.0.1",
37195 "grunt-saucelabs": "^8.6.2",
37196 "istanbul": "^0.4.2",
37197 "jscs": "^2.9.0",
37198 "jshint": "^2.6.0",
37199 "mocha": "^2.1.0"
37200 },
37201 "directories": {},
37202 "dist": {
37203 "shasum": "5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
37204 "tarball": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz"
37205 },
37206 "files": [
37207 "lib"
37208 ],
37209 "gitHead": "63aee8d697e9b7fac37ece24222029117a890a7e",
37210 "homepage": "https://github.com/indutny/elliptic",
37211 "keywords": [
37212 "EC",
37213 "Elliptic",
37214 "curve",
37215 "Cryptography"
37216 ],
37217 "license": "MIT",
37218 "main": "lib/elliptic.js",
37219 "maintainers": [
37220 {
37221 "name": "indutny",
37222 "email": "fedor@indutny.com"
37223 }
37224 ],
37225 "name": "elliptic",
37226 "optionalDependencies": {},
37227 "readme": "ERROR: No README data found!",
37228 "repository": {
37229 "type": "git",
37230 "url": "git+ssh://git@github.com/indutny/elliptic.git"
37231 },
37232 "scripts": {
37233 "jscs": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
37234 "jshint": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
37235 "lint": "npm run jscs && npm run jshint",
37236 "test": "npm run lint && npm run unit",
37237 "unit": "istanbul test _mocha --reporter=spec test/index.js",
37238 "version": "grunt dist && git add dist/"
37239 },
37240 "version": "6.3.3"
37241 }
37242
37243 },{}],56:[function(require,module,exports){
37244 (function (Buffer){
37245 'use strict';
37246
37247 var isHexPrefixed = require('is-hex-prefixed');
37248 var stripHexPrefix = require('strip-hex-prefix');
37249
37250 /**
37251 * Pads a `String` to have an even length
37252 * @param {String} value
37253 * @return {String} output
37254 */
37255 function padToEven(value) {
37256 var a = value; // eslint-disable-line
37257
37258 if (typeof a !== 'string') {
37259 throw new Error('[ethjs-util] while padding to even, value must be string, is currently ' + typeof a + ', while padToEven.');
37260 }
37261
37262 if (a.length % 2) {
37263 a = '0' + a;
37264 }
37265
37266 return a;
37267 }
37268
37269 /**
37270 * Converts a `Number` into a hex `String`
37271 * @param {Number} i
37272 * @return {String}
37273 */
37274 function intToHex(i) {
37275 var hex = i.toString(16); // eslint-disable-line
37276
37277 return '0x' + padToEven(hex);
37278 }
37279
37280 /**
37281 * Converts an `Number` to a `Buffer`
37282 * @param {Number} i
37283 * @return {Buffer}
37284 */
37285 function intToBuffer(i) {
37286 var hex = intToHex(i);
37287
37288 return new Buffer(hex.slice(2), 'hex');
37289 }
37290
37291 /**
37292 * Get the binary size of a string
37293 * @param {String} str
37294 * @return {Number}
37295 */
37296 function getBinarySize(str) {
37297 if (typeof str !== 'string') {
37298 throw new Error('[ethjs-util] while getting binary size, method getBinarySize requires input \'str\' to be type String, got \'' + typeof str + '\'.');
37299 }
37300
37301 return Buffer.byteLength(str, 'utf8');
37302 }
37303
37304 /**
37305 * Returns TRUE if the first specified array contains all elements
37306 * from the second one. FALSE otherwise.
37307 *
37308 * @param {array} superset
37309 * @param {array} subset
37310 *
37311 * @returns {boolean}
37312 */
37313 function arrayContainsArray(superset, subset, some) {
37314 if (Array.isArray(superset) !== true) {
37315 throw new Error('[ethjs-util] method arrayContainsArray requires input \'superset\' to be an array got type \'' + typeof superset + '\'');
37316 }
37317 if (Array.isArray(subset) !== true) {
37318 throw new Error('[ethjs-util] method arrayContainsArray requires input \'subset\' to be an array got type \'' + typeof subset + '\'');
37319 }
37320
37321 return subset[Boolean(some) && 'some' || 'every'](function (value) {
37322 return superset.indexOf(value) >= 0;
37323 });
37324 }
37325
37326 /**
37327 * Should be called to get utf8 from it's hex representation
37328 *
37329 * @method toUtf8
37330 * @param {String} string in hex
37331 * @returns {String} ascii string representation of hex value
37332 */
37333 function toUtf8(hex) {
37334 var bufferValue = new Buffer(padToEven(stripHexPrefix(hex).replace(/^0+|0+$/g, '')), 'hex');
37335
37336 return bufferValue.toString('utf8');
37337 }
37338
37339 /**
37340 * Should be called to get ascii from it's hex representation
37341 *
37342 * @method toAscii
37343 * @param {String} string in hex
37344 * @returns {String} ascii string representation of hex value
37345 */
37346 function toAscii(hex) {
37347 var str = ''; // eslint-disable-line
37348 var i = 0,
37349 l = hex.length; // eslint-disable-line
37350
37351 if (hex.substring(0, 2) === '0x') {
37352 i = 2;
37353 }
37354
37355 for (; i < l; i += 2) {
37356 var code = parseInt(hex.substr(i, 2), 16);
37357 str += String.fromCharCode(code);
37358 }
37359
37360 return str;
37361 }
37362
37363 /**
37364 * Should be called to get hex representation (prefixed by 0x) of utf8 string
37365 *
37366 * @method fromUtf8
37367 * @param {String} string
37368 * @param {Number} optional padding
37369 * @returns {String} hex representation of input string
37370 */
37371 function fromUtf8(stringValue) {
37372 var str = new Buffer(stringValue, 'utf8');
37373
37374 return '0x' + padToEven(str.toString('hex')).replace(/^0+|0+$/g, '');
37375 }
37376
37377 /**
37378 * Should be called to get hex representation (prefixed by 0x) of ascii string
37379 *
37380 * @method fromAscii
37381 * @param {String} string
37382 * @param {Number} optional padding
37383 * @returns {String} hex representation of input string
37384 */
37385 function fromAscii(stringValue) {
37386 var hex = ''; // eslint-disable-line
37387 for (var i = 0; i < stringValue.length; i++) {
37388 // eslint-disable-line
37389 var code = stringValue.charCodeAt(i);
37390 var n = code.toString(16);
37391 hex += n.length < 2 ? '0' + n : n;
37392 }
37393
37394 return '0x' + hex;
37395 }
37396
37397 /**
37398 * getKeys([{a: 1, b: 2}, {a: 3, b: 4}], 'a') => [1, 3]
37399 *
37400 * @method getKeys get specific key from inner object array of objects
37401 * @param {String} params
37402 * @param {String} key
37403 * @param {Boolean} allowEmpty
37404 * @returns {Array} output just a simple array of output keys
37405 */
37406 function getKeys(params, key, allowEmpty) {
37407 if (!Array.isArray(params)) {
37408 throw new Error('[ethjs-util] method getKeys expecting type Array as \'params\' input, got \'' + typeof params + '\'');
37409 }
37410 if (typeof key !== 'string') {
37411 throw new Error('[ethjs-util] method getKeys expecting type String for input \'key\' got \'' + typeof key + '\'.');
37412 }
37413
37414 var result = []; // eslint-disable-line
37415
37416 for (var i = 0; i < params.length; i++) {
37417 // eslint-disable-line
37418 var value = params[i][key]; // eslint-disable-line
37419 if (allowEmpty && !value) {
37420 value = '';
37421 } else if (typeof value !== 'string') {
37422 throw new Error('invalid abi');
37423 }
37424 result.push(value);
37425 }
37426
37427 return result;
37428 }
37429
37430 /**
37431 * Is the string a hex string.
37432 *
37433 * @method check if string is hex string of specific length
37434 * @param {String} value
37435 * @param {Number} length
37436 * @returns {Boolean} output the string is a hex string
37437 */
37438 function isHexString(value, length) {
37439 if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) {
37440 return false;
37441 }
37442
37443 if (length && value.length !== 2 + 2 * length) {
37444 return false;
37445 }
37446
37447 return true;
37448 }
37449
37450 module.exports = {
37451 arrayContainsArray: arrayContainsArray,
37452 intToBuffer: intToBuffer,
37453 getBinarySize: getBinarySize,
37454 isHexPrefixed: isHexPrefixed,
37455 stripHexPrefix: stripHexPrefix,
37456 padToEven: padToEven,
37457 intToHex: intToHex,
37458 fromAscii: fromAscii,
37459 fromUtf8: fromUtf8,
37460 toAscii: toAscii,
37461 toUtf8: toUtf8,
37462 getKeys: getKeys,
37463 isHexString: isHexString
37464 };
37465 }).call(this,require("buffer").Buffer)
37466 },{"buffer":5,"is-hex-prefixed":64,"strip-hex-prefix":87}],57:[function(require,module,exports){
37467 var hash = exports;
37468
37469 hash.utils = require('./hash/utils');
37470 hash.common = require('./hash/common');
37471 hash.sha = require('./hash/sha');
37472 hash.ripemd = require('./hash/ripemd');
37473 hash.hmac = require('./hash/hmac');
37474
37475 // Proxy hash functions to the main object
37476 hash.sha1 = hash.sha.sha1;
37477 hash.sha256 = hash.sha.sha256;
37478 hash.sha224 = hash.sha.sha224;
37479 hash.sha384 = hash.sha.sha384;
37480 hash.sha512 = hash.sha.sha512;
37481 hash.ripemd160 = hash.ripemd.ripemd160;
37482
37483 },{"./hash/common":58,"./hash/hmac":59,"./hash/ripemd":60,"./hash/sha":61,"./hash/utils":62}],58:[function(require,module,exports){
37484 var hash = require('../hash');
37485 var utils = hash.utils;
37486 var assert = utils.assert;
37487
37488 function BlockHash() {
37489 this.pending = null;
37490 this.pendingTotal = 0;
37491 this.blockSize = this.constructor.blockSize;
37492 this.outSize = this.constructor.outSize;
37493 this.hmacStrength = this.constructor.hmacStrength;
37494 this.padLength = this.constructor.padLength / 8;
37495 this.endian = 'big';
37496
37497 this._delta8 = this.blockSize / 8;
37498 this._delta32 = this.blockSize / 32;
37499 }
37500 exports.BlockHash = BlockHash;
37501
37502 BlockHash.prototype.update = function update(msg, enc) {
37503 // Convert message to array, pad it, and join into 32bit blocks
37504 msg = utils.toArray(msg, enc);
37505 if (!this.pending)
37506 this.pending = msg;
37507 else
37508 this.pending = this.pending.concat(msg);
37509 this.pendingTotal += msg.length;
37510
37511 // Enough data, try updating
37512 if (this.pending.length >= this._delta8) {
37513 msg = this.pending;
37514
37515 // Process pending data in blocks
37516 var r = msg.length % this._delta8;
37517 this.pending = msg.slice(msg.length - r, msg.length);
37518 if (this.pending.length === 0)
37519 this.pending = null;
37520
37521 msg = utils.join32(msg, 0, msg.length - r, this.endian);
37522 for (var i = 0; i < msg.length; i += this._delta32)
37523 this._update(msg, i, i + this._delta32);
37524 }
37525
37526 return this;
37527 };
37528
37529 BlockHash.prototype.digest = function digest(enc) {
37530 this.update(this._pad());
37531 assert(this.pending === null);
37532
37533 return this._digest(enc);
37534 };
37535
37536 BlockHash.prototype._pad = function pad() {
37537 var len = this.pendingTotal;
37538 var bytes = this._delta8;
37539 var k = bytes - ((len + this.padLength) % bytes);
37540 var res = new Array(k + this.padLength);
37541 res[0] = 0x80;
37542 for (var i = 1; i < k; i++)
37543 res[i] = 0;
37544
37545 // Append length
37546 len <<= 3;
37547 if (this.endian === 'big') {
37548 for (var t = 8; t < this.padLength; t++)
37549 res[i++] = 0;
37550
37551 res[i++] = 0;
37552 res[i++] = 0;
37553 res[i++] = 0;
37554 res[i++] = 0;
37555 res[i++] = (len >>> 24) & 0xff;
37556 res[i++] = (len >>> 16) & 0xff;
37557 res[i++] = (len >>> 8) & 0xff;
37558 res[i++] = len & 0xff;
37559 } else {
37560 res[i++] = len & 0xff;
37561 res[i++] = (len >>> 8) & 0xff;
37562 res[i++] = (len >>> 16) & 0xff;
37563 res[i++] = (len >>> 24) & 0xff;
37564 res[i++] = 0;
37565 res[i++] = 0;
37566 res[i++] = 0;
37567 res[i++] = 0;
37568
37569 for (var t = 8; t < this.padLength; t++)
37570 res[i++] = 0;
37571 }
37572
37573 return res;
37574 };
37575
37576 },{"../hash":57}],59:[function(require,module,exports){
37577 var hmac = exports;
37578
37579 var hash = require('../hash');
37580 var utils = hash.utils;
37581 var assert = utils.assert;
37582
37583 function Hmac(hash, key, enc) {
37584 if (!(this instanceof Hmac))
37585 return new Hmac(hash, key, enc);
37586 this.Hash = hash;
37587 this.blockSize = hash.blockSize / 8;
37588 this.outSize = hash.outSize / 8;
37589 this.inner = null;
37590 this.outer = null;
37591
37592 this._init(utils.toArray(key, enc));
37593 }
37594 module.exports = Hmac;
37595
37596 Hmac.prototype._init = function init(key) {
37597 // Shorten key, if needed
37598 if (key.length > this.blockSize)
37599 key = new this.Hash().update(key).digest();
37600 assert(key.length <= this.blockSize);
37601
37602 // Add padding to key
37603 for (var i = key.length; i < this.blockSize; i++)
37604 key.push(0);
37605
37606 for (var i = 0; i < key.length; i++)
37607 key[i] ^= 0x36;
37608 this.inner = new this.Hash().update(key);
37609
37610 // 0x36 ^ 0x5c = 0x6a
37611 for (var i = 0; i < key.length; i++)
37612 key[i] ^= 0x6a;
37613 this.outer = new this.Hash().update(key);
37614 };
37615
37616 Hmac.prototype.update = function update(msg, enc) {
37617 this.inner.update(msg, enc);
37618 return this;
37619 };
37620
37621 Hmac.prototype.digest = function digest(enc) {
37622 this.outer.update(this.inner.digest());
37623 return this.outer.digest(enc);
37624 };
37625
37626 },{"../hash":57}],60:[function(require,module,exports){
37627 var hash = require('../hash');
37628 var utils = hash.utils;
37629
37630 var rotl32 = utils.rotl32;
37631 var sum32 = utils.sum32;
37632 var sum32_3 = utils.sum32_3;
37633 var sum32_4 = utils.sum32_4;
37634 var BlockHash = hash.common.BlockHash;
37635
37636 function RIPEMD160() {
37637 if (!(this instanceof RIPEMD160))
37638 return new RIPEMD160();
37639
37640 BlockHash.call(this);
37641
37642 this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];
37643 this.endian = 'little';
37644 }
37645 utils.inherits(RIPEMD160, BlockHash);
37646 exports.ripemd160 = RIPEMD160;
37647
37648 RIPEMD160.blockSize = 512;
37649 RIPEMD160.outSize = 160;
37650 RIPEMD160.hmacStrength = 192;
37651 RIPEMD160.padLength = 64;
37652
37653 RIPEMD160.prototype._update = function update(msg, start) {
37654 var A = this.h[0];
37655 var B = this.h[1];
37656 var C = this.h[2];
37657 var D = this.h[3];
37658 var E = this.h[4];
37659 var Ah = A;
37660 var Bh = B;
37661 var Ch = C;
37662 var Dh = D;
37663 var Eh = E;
37664 for (var j = 0; j < 80; j++) {
37665 var T = sum32(
37666 rotl32(
37667 sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),
37668 s[j]),
37669 E);
37670 A = E;
37671 E = D;
37672 D = rotl32(C, 10);
37673 C = B;
37674 B = T;
37675 T = sum32(
37676 rotl32(
37677 sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),
37678 sh[j]),
37679 Eh);
37680 Ah = Eh;
37681 Eh = Dh;
37682 Dh = rotl32(Ch, 10);
37683 Ch = Bh;
37684 Bh = T;
37685 }
37686 T = sum32_3(this.h[1], C, Dh);
37687 this.h[1] = sum32_3(this.h[2], D, Eh);
37688 this.h[2] = sum32_3(this.h[3], E, Ah);
37689 this.h[3] = sum32_3(this.h[4], A, Bh);
37690 this.h[4] = sum32_3(this.h[0], B, Ch);
37691 this.h[0] = T;
37692 };
37693
37694 RIPEMD160.prototype._digest = function digest(enc) {
37695 if (enc === 'hex')
37696 return utils.toHex32(this.h, 'little');
37697 else
37698 return utils.split32(this.h, 'little');
37699 };
37700
37701 function f(j, x, y, z) {
37702 if (j <= 15)
37703 return x ^ y ^ z;
37704 else if (j <= 31)
37705 return (x & y) | ((~x) & z);
37706 else if (j <= 47)
37707 return (x | (~y)) ^ z;
37708 else if (j <= 63)
37709 return (x & z) | (y & (~z));
37710 else
37711 return x ^ (y | (~z));
37712 }
37713
37714 function K(j) {
37715 if (j <= 15)
37716 return 0x00000000;
37717 else if (j <= 31)
37718 return 0x5a827999;
37719 else if (j <= 47)
37720 return 0x6ed9eba1;
37721 else if (j <= 63)
37722 return 0x8f1bbcdc;
37723 else
37724 return 0xa953fd4e;
37725 }
37726
37727 function Kh(j) {
37728 if (j <= 15)
37729 return 0x50a28be6;
37730 else if (j <= 31)
37731 return 0x5c4dd124;
37732 else if (j <= 47)
37733 return 0x6d703ef3;
37734 else if (j <= 63)
37735 return 0x7a6d76e9;
37736 else
37737 return 0x00000000;
37738 }
37739
37740 var r = [
37741 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
37742 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
37743 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
37744 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
37745 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
37746 ];
37747
37748 var rh = [
37749 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
37750 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
37751 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
37752 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
37753 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
37754 ];
37755
37756 var s = [
37757 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
37758 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
37759 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
37760 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
37761 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
37762 ];
37763
37764 var sh = [
37765 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
37766 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
37767 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
37768 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
37769 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
37770 ];
37771
37772 },{"../hash":57}],61:[function(require,module,exports){
37773 var hash = require('../hash');
37774 var utils = hash.utils;
37775 var assert = utils.assert;
37776
37777 var rotr32 = utils.rotr32;
37778 var rotl32 = utils.rotl32;
37779 var sum32 = utils.sum32;
37780 var sum32_4 = utils.sum32_4;
37781 var sum32_5 = utils.sum32_5;
37782 var rotr64_hi = utils.rotr64_hi;
37783 var rotr64_lo = utils.rotr64_lo;
37784 var shr64_hi = utils.shr64_hi;
37785 var shr64_lo = utils.shr64_lo;
37786 var sum64 = utils.sum64;
37787 var sum64_hi = utils.sum64_hi;
37788 var sum64_lo = utils.sum64_lo;
37789 var sum64_4_hi = utils.sum64_4_hi;
37790 var sum64_4_lo = utils.sum64_4_lo;
37791 var sum64_5_hi = utils.sum64_5_hi;
37792 var sum64_5_lo = utils.sum64_5_lo;
37793 var BlockHash = hash.common.BlockHash;
37794
37795 var sha256_K = [
37796 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
37797 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
37798 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
37799 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
37800 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
37801 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
37802 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
37803 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
37804 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
37805 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
37806 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
37807 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
37808 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
37809 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
37810 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
37811 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
37812 ];
37813
37814 var sha512_K = [
37815 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
37816 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
37817 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
37818 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
37819 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
37820 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
37821 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
37822 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
37823 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
37824 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
37825 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
37826 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
37827 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
37828 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
37829 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
37830 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
37831 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
37832 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
37833 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
37834 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
37835 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
37836 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
37837 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
37838 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
37839 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
37840 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
37841 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
37842 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
37843 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
37844 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
37845 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
37846 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
37847 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
37848 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
37849 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
37850 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
37851 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
37852 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
37853 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
37854 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
37855 ];
37856
37857 var sha1_K = [
37858 0x5A827999, 0x6ED9EBA1,
37859 0x8F1BBCDC, 0xCA62C1D6
37860 ];
37861
37862 function SHA256() {
37863 if (!(this instanceof SHA256))
37864 return new SHA256();
37865
37866 BlockHash.call(this);
37867 this.h = [ 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
37868 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 ];
37869 this.k = sha256_K;
37870 this.W = new Array(64);
37871 }
37872 utils.inherits(SHA256, BlockHash);
37873 exports.sha256 = SHA256;
37874
37875 SHA256.blockSize = 512;
37876 SHA256.outSize = 256;
37877 SHA256.hmacStrength = 192;
37878 SHA256.padLength = 64;
37879
37880 SHA256.prototype._update = function _update(msg, start) {
37881 var W = this.W;
37882
37883 for (var i = 0; i < 16; i++)
37884 W[i] = msg[start + i];
37885 for (; i < W.length; i++)
37886 W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);
37887
37888 var a = this.h[0];
37889 var b = this.h[1];
37890 var c = this.h[2];
37891 var d = this.h[3];
37892 var e = this.h[4];
37893 var f = this.h[5];
37894 var g = this.h[6];
37895 var h = this.h[7];
37896
37897 assert(this.k.length === W.length);
37898 for (var i = 0; i < W.length; i++) {
37899 var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);
37900 var T2 = sum32(s0_256(a), maj32(a, b, c));
37901 h = g;
37902 g = f;
37903 f = e;
37904 e = sum32(d, T1);
37905 d = c;
37906 c = b;
37907 b = a;
37908 a = sum32(T1, T2);
37909 }
37910
37911 this.h[0] = sum32(this.h[0], a);
37912 this.h[1] = sum32(this.h[1], b);
37913 this.h[2] = sum32(this.h[2], c);
37914 this.h[3] = sum32(this.h[3], d);
37915 this.h[4] = sum32(this.h[4], e);
37916 this.h[5] = sum32(this.h[5], f);
37917 this.h[6] = sum32(this.h[6], g);
37918 this.h[7] = sum32(this.h[7], h);
37919 };
37920
37921 SHA256.prototype._digest = function digest(enc) {
37922 if (enc === 'hex')
37923 return utils.toHex32(this.h, 'big');
37924 else
37925 return utils.split32(this.h, 'big');
37926 };
37927
37928 function SHA224() {
37929 if (!(this instanceof SHA224))
37930 return new SHA224();
37931
37932 SHA256.call(this);
37933 this.h = [ 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,
37934 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];
37935 }
37936 utils.inherits(SHA224, SHA256);
37937 exports.sha224 = SHA224;
37938
37939 SHA224.blockSize = 512;
37940 SHA224.outSize = 224;
37941 SHA224.hmacStrength = 192;
37942 SHA224.padLength = 64;
37943
37944 SHA224.prototype._digest = function digest(enc) {
37945 // Just truncate output
37946 if (enc === 'hex')
37947 return utils.toHex32(this.h.slice(0, 7), 'big');
37948 else
37949 return utils.split32(this.h.slice(0, 7), 'big');
37950 };
37951
37952 function SHA512() {
37953 if (!(this instanceof SHA512))
37954 return new SHA512();
37955
37956 BlockHash.call(this);
37957 this.h = [ 0x6a09e667, 0xf3bcc908,
37958 0xbb67ae85, 0x84caa73b,
37959 0x3c6ef372, 0xfe94f82b,
37960 0xa54ff53a, 0x5f1d36f1,
37961 0x510e527f, 0xade682d1,
37962 0x9b05688c, 0x2b3e6c1f,
37963 0x1f83d9ab, 0xfb41bd6b,
37964 0x5be0cd19, 0x137e2179 ];
37965 this.k = sha512_K;
37966 this.W = new Array(160);
37967 }
37968 utils.inherits(SHA512, BlockHash);
37969 exports.sha512 = SHA512;
37970
37971 SHA512.blockSize = 1024;
37972 SHA512.outSize = 512;
37973 SHA512.hmacStrength = 192;
37974 SHA512.padLength = 128;
37975
37976 SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {
37977 var W = this.W;
37978
37979 // 32 x 32bit words
37980 for (var i = 0; i < 32; i++)
37981 W[i] = msg[start + i];
37982 for (; i < W.length; i += 2) {
37983 var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2
37984 var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);
37985 var c1_hi = W[i - 14]; // i - 7
37986 var c1_lo = W[i - 13];
37987 var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15
37988 var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);
37989 var c3_hi = W[i - 32]; // i - 16
37990 var c3_lo = W[i - 31];
37991
37992 W[i] = sum64_4_hi(c0_hi, c0_lo,
37993 c1_hi, c1_lo,
37994 c2_hi, c2_lo,
37995 c3_hi, c3_lo);
37996 W[i + 1] = sum64_4_lo(c0_hi, c0_lo,
37997 c1_hi, c1_lo,
37998 c2_hi, c2_lo,
37999 c3_hi, c3_lo);
38000 }
38001 };
38002
38003 SHA512.prototype._update = function _update(msg, start) {
38004 this._prepareBlock(msg, start);
38005
38006 var W = this.W;
38007
38008 var ah = this.h[0];
38009 var al = this.h[1];
38010 var bh = this.h[2];
38011 var bl = this.h[3];
38012 var ch = this.h[4];
38013 var cl = this.h[5];
38014 var dh = this.h[6];
38015 var dl = this.h[7];
38016 var eh = this.h[8];
38017 var el = this.h[9];
38018 var fh = this.h[10];
38019 var fl = this.h[11];
38020 var gh = this.h[12];
38021 var gl = this.h[13];
38022 var hh = this.h[14];
38023 var hl = this.h[15];
38024
38025 assert(this.k.length === W.length);
38026 for (var i = 0; i < W.length; i += 2) {
38027 var c0_hi = hh;
38028 var c0_lo = hl;
38029 var c1_hi = s1_512_hi(eh, el);
38030 var c1_lo = s1_512_lo(eh, el);
38031 var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);
38032 var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);
38033 var c3_hi = this.k[i];
38034 var c3_lo = this.k[i + 1];
38035 var c4_hi = W[i];
38036 var c4_lo = W[i + 1];
38037
38038 var T1_hi = sum64_5_hi(c0_hi, c0_lo,
38039 c1_hi, c1_lo,
38040 c2_hi, c2_lo,
38041 c3_hi, c3_lo,
38042 c4_hi, c4_lo);
38043 var T1_lo = sum64_5_lo(c0_hi, c0_lo,
38044 c1_hi, c1_lo,
38045 c2_hi, c2_lo,
38046 c3_hi, c3_lo,
38047 c4_hi, c4_lo);
38048
38049 var c0_hi = s0_512_hi(ah, al);
38050 var c0_lo = s0_512_lo(ah, al);
38051 var c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);
38052 var c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);
38053
38054 var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);
38055 var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);
38056
38057 hh = gh;
38058 hl = gl;
38059
38060 gh = fh;
38061 gl = fl;
38062
38063 fh = eh;
38064 fl = el;
38065
38066 eh = sum64_hi(dh, dl, T1_hi, T1_lo);
38067 el = sum64_lo(dl, dl, T1_hi, T1_lo);
38068
38069 dh = ch;
38070 dl = cl;
38071
38072 ch = bh;
38073 cl = bl;
38074
38075 bh = ah;
38076 bl = al;
38077
38078 ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);
38079 al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);
38080 }
38081
38082 sum64(this.h, 0, ah, al);
38083 sum64(this.h, 2, bh, bl);
38084 sum64(this.h, 4, ch, cl);
38085 sum64(this.h, 6, dh, dl);
38086 sum64(this.h, 8, eh, el);
38087 sum64(this.h, 10, fh, fl);
38088 sum64(this.h, 12, gh, gl);
38089 sum64(this.h, 14, hh, hl);
38090 };
38091
38092 SHA512.prototype._digest = function digest(enc) {
38093 if (enc === 'hex')
38094 return utils.toHex32(this.h, 'big');
38095 else
38096 return utils.split32(this.h, 'big');
38097 };
38098
38099 function SHA384() {
38100 if (!(this instanceof SHA384))
38101 return new SHA384();
38102
38103 SHA512.call(this);
38104 this.h = [ 0xcbbb9d5d, 0xc1059ed8,
38105 0x629a292a, 0x367cd507,
38106 0x9159015a, 0x3070dd17,
38107 0x152fecd8, 0xf70e5939,
38108 0x67332667, 0xffc00b31,
38109 0x8eb44a87, 0x68581511,
38110 0xdb0c2e0d, 0x64f98fa7,
38111 0x47b5481d, 0xbefa4fa4 ];
38112 }
38113 utils.inherits(SHA384, SHA512);
38114 exports.sha384 = SHA384;
38115
38116 SHA384.blockSize = 1024;
38117 SHA384.outSize = 384;
38118 SHA384.hmacStrength = 192;
38119 SHA384.padLength = 128;
38120
38121 SHA384.prototype._digest = function digest(enc) {
38122 if (enc === 'hex')
38123 return utils.toHex32(this.h.slice(0, 12), 'big');
38124 else
38125 return utils.split32(this.h.slice(0, 12), 'big');
38126 };
38127
38128 function SHA1() {
38129 if (!(this instanceof SHA1))
38130 return new SHA1();
38131
38132 BlockHash.call(this);
38133 this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe,
38134 0x10325476, 0xc3d2e1f0 ];
38135 this.W = new Array(80);
38136 }
38137
38138 utils.inherits(SHA1, BlockHash);
38139 exports.sha1 = SHA1;
38140
38141 SHA1.blockSize = 512;
38142 SHA1.outSize = 160;
38143 SHA1.hmacStrength = 80;
38144 SHA1.padLength = 64;
38145
38146 SHA1.prototype._update = function _update(msg, start) {
38147 var W = this.W;
38148
38149 for (var i = 0; i < 16; i++)
38150 W[i] = msg[start + i];
38151
38152 for(; i < W.length; i++)
38153 W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);
38154
38155 var a = this.h[0];
38156 var b = this.h[1];
38157 var c = this.h[2];
38158 var d = this.h[3];
38159 var e = this.h[4];
38160
38161 for (var i = 0; i < W.length; i++) {
38162 var s = ~~(i / 20);
38163 var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);
38164 e = d;
38165 d = c;
38166 c = rotl32(b, 30);
38167 b = a;
38168 a = t;
38169 }
38170
38171 this.h[0] = sum32(this.h[0], a);
38172 this.h[1] = sum32(this.h[1], b);
38173 this.h[2] = sum32(this.h[2], c);
38174 this.h[3] = sum32(this.h[3], d);
38175 this.h[4] = sum32(this.h[4], e);
38176 };
38177
38178 SHA1.prototype._digest = function digest(enc) {
38179 if (enc === 'hex')
38180 return utils.toHex32(this.h, 'big');
38181 else
38182 return utils.split32(this.h, 'big');
38183 };
38184
38185 function ch32(x, y, z) {
38186 return (x & y) ^ ((~x) & z);
38187 }
38188
38189 function maj32(x, y, z) {
38190 return (x & y) ^ (x & z) ^ (y & z);
38191 }
38192
38193 function p32(x, y, z) {
38194 return x ^ y ^ z;
38195 }
38196
38197 function s0_256(x) {
38198 return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);
38199 }
38200
38201 function s1_256(x) {
38202 return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);
38203 }
38204
38205 function g0_256(x) {
38206 return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);
38207 }
38208
38209 function g1_256(x) {
38210 return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);
38211 }
38212
38213 function ft_1(s, x, y, z) {
38214 if (s === 0)
38215 return ch32(x, y, z);
38216 if (s === 1 || s === 3)
38217 return p32(x, y, z);
38218 if (s === 2)
38219 return maj32(x, y, z);
38220 }
38221
38222 function ch64_hi(xh, xl, yh, yl, zh, zl) {
38223 var r = (xh & yh) ^ ((~xh) & zh);
38224 if (r < 0)
38225 r += 0x100000000;
38226 return r;
38227 }
38228
38229 function ch64_lo(xh, xl, yh, yl, zh, zl) {
38230 var r = (xl & yl) ^ ((~xl) & zl);
38231 if (r < 0)
38232 r += 0x100000000;
38233 return r;
38234 }
38235
38236 function maj64_hi(xh, xl, yh, yl, zh, zl) {
38237 var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);
38238 if (r < 0)
38239 r += 0x100000000;
38240 return r;
38241 }
38242
38243 function maj64_lo(xh, xl, yh, yl, zh, zl) {
38244 var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);
38245 if (r < 0)
38246 r += 0x100000000;
38247 return r;
38248 }
38249
38250 function s0_512_hi(xh, xl) {
38251 var c0_hi = rotr64_hi(xh, xl, 28);
38252 var c1_hi = rotr64_hi(xl, xh, 2); // 34
38253 var c2_hi = rotr64_hi(xl, xh, 7); // 39
38254
38255 var r = c0_hi ^ c1_hi ^ c2_hi;
38256 if (r < 0)
38257 r += 0x100000000;
38258 return r;
38259 }
38260
38261 function s0_512_lo(xh, xl) {
38262 var c0_lo = rotr64_lo(xh, xl, 28);
38263 var c1_lo = rotr64_lo(xl, xh, 2); // 34
38264 var c2_lo = rotr64_lo(xl, xh, 7); // 39
38265
38266 var r = c0_lo ^ c1_lo ^ c2_lo;
38267 if (r < 0)
38268 r += 0x100000000;
38269 return r;
38270 }
38271
38272 function s1_512_hi(xh, xl) {
38273 var c0_hi = rotr64_hi(xh, xl, 14);
38274 var c1_hi = rotr64_hi(xh, xl, 18);
38275 var c2_hi = rotr64_hi(xl, xh, 9); // 41
38276
38277 var r = c0_hi ^ c1_hi ^ c2_hi;
38278 if (r < 0)
38279 r += 0x100000000;
38280 return r;
38281 }
38282
38283 function s1_512_lo(xh, xl) {
38284 var c0_lo = rotr64_lo(xh, xl, 14);
38285 var c1_lo = rotr64_lo(xh, xl, 18);
38286 var c2_lo = rotr64_lo(xl, xh, 9); // 41
38287
38288 var r = c0_lo ^ c1_lo ^ c2_lo;
38289 if (r < 0)
38290 r += 0x100000000;
38291 return r;
38292 }
38293
38294 function g0_512_hi(xh, xl) {
38295 var c0_hi = rotr64_hi(xh, xl, 1);
38296 var c1_hi = rotr64_hi(xh, xl, 8);
38297 var c2_hi = shr64_hi(xh, xl, 7);
38298
38299 var r = c0_hi ^ c1_hi ^ c2_hi;
38300 if (r < 0)
38301 r += 0x100000000;
38302 return r;
38303 }
38304
38305 function g0_512_lo(xh, xl) {
38306 var c0_lo = rotr64_lo(xh, xl, 1);
38307 var c1_lo = rotr64_lo(xh, xl, 8);
38308 var c2_lo = shr64_lo(xh, xl, 7);
38309
38310 var r = c0_lo ^ c1_lo ^ c2_lo;
38311 if (r < 0)
38312 r += 0x100000000;
38313 return r;
38314 }
38315
38316 function g1_512_hi(xh, xl) {
38317 var c0_hi = rotr64_hi(xh, xl, 19);
38318 var c1_hi = rotr64_hi(xl, xh, 29); // 61
38319 var c2_hi = shr64_hi(xh, xl, 6);
38320
38321 var r = c0_hi ^ c1_hi ^ c2_hi;
38322 if (r < 0)
38323 r += 0x100000000;
38324 return r;
38325 }
38326
38327 function g1_512_lo(xh, xl) {
38328 var c0_lo = rotr64_lo(xh, xl, 19);
38329 var c1_lo = rotr64_lo(xl, xh, 29); // 61
38330 var c2_lo = shr64_lo(xh, xl, 6);
38331
38332 var r = c0_lo ^ c1_lo ^ c2_lo;
38333 if (r < 0)
38334 r += 0x100000000;
38335 return r;
38336 }
38337
38338 },{"../hash":57}],62:[function(require,module,exports){
38339 var utils = exports;
38340 var inherits = require('inherits');
38341
38342 function toArray(msg, enc) {
38343 if (Array.isArray(msg))
38344 return msg.slice();
38345 if (!msg)
38346 return [];
38347 var res = [];
38348 if (typeof msg === 'string') {
38349 if (!enc) {
38350 for (var i = 0; i < msg.length; i++) {
38351 var c = msg.charCodeAt(i);
38352 var hi = c >> 8;
38353 var lo = c & 0xff;
38354 if (hi)
38355 res.push(hi, lo);
38356 else
38357 res.push(lo);
38358 }
38359 } else if (enc === 'hex') {
38360 msg = msg.replace(/[^a-z0-9]+/ig, '');
38361 if (msg.length % 2 !== 0)
38362 msg = '0' + msg;
38363 for (var i = 0; i < msg.length; i += 2)
38364 res.push(parseInt(msg[i] + msg[i + 1], 16));
38365 }
38366 } else {
38367 for (var i = 0; i < msg.length; i++)
38368 res[i] = msg[i] | 0;
38369 }
38370 return res;
38371 }
38372 utils.toArray = toArray;
38373
38374 function toHex(msg) {
38375 var res = '';
38376 for (var i = 0; i < msg.length; i++)
38377 res += zero2(msg[i].toString(16));
38378 return res;
38379 }
38380 utils.toHex = toHex;
38381
38382 function htonl(w) {
38383 var res = (w >>> 24) |
38384 ((w >>> 8) & 0xff00) |
38385 ((w << 8) & 0xff0000) |
38386 ((w & 0xff) << 24);
38387 return res >>> 0;
38388 }
38389 utils.htonl = htonl;
38390
38391 function toHex32(msg, endian) {
38392 var res = '';
38393 for (var i = 0; i < msg.length; i++) {
38394 var w = msg[i];
38395 if (endian === 'little')
38396 w = htonl(w);
38397 res += zero8(w.toString(16));
38398 }
38399 return res;
38400 }
38401 utils.toHex32 = toHex32;
38402
38403 function zero2(word) {
38404 if (word.length === 1)
38405 return '0' + word;
38406 else
38407 return word;
38408 }
38409 utils.zero2 = zero2;
38410
38411 function zero8(word) {
38412 if (word.length === 7)
38413 return '0' + word;
38414 else if (word.length === 6)
38415 return '00' + word;
38416 else if (word.length === 5)
38417 return '000' + word;
38418 else if (word.length === 4)
38419 return '0000' + word;
38420 else if (word.length === 3)
38421 return '00000' + word;
38422 else if (word.length === 2)
38423 return '000000' + word;
38424 else if (word.length === 1)
38425 return '0000000' + word;
38426 else
38427 return word;
38428 }
38429 utils.zero8 = zero8;
38430
38431 function join32(msg, start, end, endian) {
38432 var len = end - start;
38433 assert(len % 4 === 0);
38434 var res = new Array(len / 4);
38435 for (var i = 0, k = start; i < res.length; i++, k += 4) {
38436 var w;
38437 if (endian === 'big')
38438 w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];
38439 else
38440 w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];
38441 res[i] = w >>> 0;
38442 }
38443 return res;
38444 }
38445 utils.join32 = join32;
38446
38447 function split32(msg, endian) {
38448 var res = new Array(msg.length * 4);
38449 for (var i = 0, k = 0; i < msg.length; i++, k += 4) {
38450 var m = msg[i];
38451 if (endian === 'big') {
38452 res[k] = m >>> 24;
38453 res[k + 1] = (m >>> 16) & 0xff;
38454 res[k + 2] = (m >>> 8) & 0xff;
38455 res[k + 3] = m & 0xff;
38456 } else {
38457 res[k + 3] = m >>> 24;
38458 res[k + 2] = (m >>> 16) & 0xff;
38459 res[k + 1] = (m >>> 8) & 0xff;
38460 res[k] = m & 0xff;
38461 }
38462 }
38463 return res;
38464 }
38465 utils.split32 = split32;
38466
38467 function rotr32(w, b) {
38468 return (w >>> b) | (w << (32 - b));
38469 }
38470 utils.rotr32 = rotr32;
38471
38472 function rotl32(w, b) {
38473 return (w << b) | (w >>> (32 - b));
38474 }
38475 utils.rotl32 = rotl32;
38476
38477 function sum32(a, b) {
38478 return (a + b) >>> 0;
38479 }
38480 utils.sum32 = sum32;
38481
38482 function sum32_3(a, b, c) {
38483 return (a + b + c) >>> 0;
38484 }
38485 utils.sum32_3 = sum32_3;
38486
38487 function sum32_4(a, b, c, d) {
38488 return (a + b + c + d) >>> 0;
38489 }
38490 utils.sum32_4 = sum32_4;
38491
38492 function sum32_5(a, b, c, d, e) {
38493 return (a + b + c + d + e) >>> 0;
38494 }
38495 utils.sum32_5 = sum32_5;
38496
38497 function assert(cond, msg) {
38498 if (!cond)
38499 throw new Error(msg || 'Assertion failed');
38500 }
38501 utils.assert = assert;
38502
38503 utils.inherits = inherits;
38504
38505 function sum64(buf, pos, ah, al) {
38506 var bh = buf[pos];
38507 var bl = buf[pos + 1];
38508
38509 var lo = (al + bl) >>> 0;
38510 var hi = (lo < al ? 1 : 0) + ah + bh;
38511 buf[pos] = hi >>> 0;
38512 buf[pos + 1] = lo;
38513 }
38514 exports.sum64 = sum64;
38515
38516 function sum64_hi(ah, al, bh, bl) {
38517 var lo = (al + bl) >>> 0;
38518 var hi = (lo < al ? 1 : 0) + ah + bh;
38519 return hi >>> 0;
38520 };
38521 exports.sum64_hi = sum64_hi;
38522
38523 function sum64_lo(ah, al, bh, bl) {
38524 var lo = al + bl;
38525 return lo >>> 0;
38526 };
38527 exports.sum64_lo = sum64_lo;
38528
38529 function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {
38530 var carry = 0;
38531 var lo = al;
38532 lo = (lo + bl) >>> 0;
38533 carry += lo < al ? 1 : 0;
38534 lo = (lo + cl) >>> 0;
38535 carry += lo < cl ? 1 : 0;
38536 lo = (lo + dl) >>> 0;
38537 carry += lo < dl ? 1 : 0;
38538
38539 var hi = ah + bh + ch + dh + carry;
38540 return hi >>> 0;
38541 };
38542 exports.sum64_4_hi = sum64_4_hi;
38543
38544 function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {
38545 var lo = al + bl + cl + dl;
38546 return lo >>> 0;
38547 };
38548 exports.sum64_4_lo = sum64_4_lo;
38549
38550 function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
38551 var carry = 0;
38552 var lo = al;
38553 lo = (lo + bl) >>> 0;
38554 carry += lo < al ? 1 : 0;
38555 lo = (lo + cl) >>> 0;
38556 carry += lo < cl ? 1 : 0;
38557 lo = (lo + dl) >>> 0;
38558 carry += lo < dl ? 1 : 0;
38559 lo = (lo + el) >>> 0;
38560 carry += lo < el ? 1 : 0;
38561
38562 var hi = ah + bh + ch + dh + eh + carry;
38563 return hi >>> 0;
38564 };
38565 exports.sum64_5_hi = sum64_5_hi;
38566
38567 function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
38568 var lo = al + bl + cl + dl + el;
38569
38570 return lo >>> 0;
38571 };
38572 exports.sum64_5_lo = sum64_5_lo;
38573
38574 function rotr64_hi(ah, al, num) {
38575 var r = (al << (32 - num)) | (ah >>> num);
38576 return r >>> 0;
38577 };
38578 exports.rotr64_hi = rotr64_hi;
38579
38580 function rotr64_lo(ah, al, num) {
38581 var r = (ah << (32 - num)) | (al >>> num);
38582 return r >>> 0;
38583 };
38584 exports.rotr64_lo = rotr64_lo;
38585
38586 function shr64_hi(ah, al, num) {
38587 return ah >>> num;
38588 };
38589 exports.shr64_hi = shr64_hi;
38590
38591 function shr64_lo(ah, al, num) {
38592 var r = (ah << (32 - num)) | (al >>> num);
38593 return r >>> 0;
38594 };
38595 exports.shr64_lo = shr64_lo;
38596
38597 },{"inherits":63}],63:[function(require,module,exports){
38598 arguments[4][9][0].apply(exports,arguments)
38599 },{"dup":9}],64:[function(require,module,exports){
38600 /**
38601 * Returns a `Boolean` on whether or not the a `String` starts with '0x'
38602 * @param {String} str the string input value
38603 * @return {Boolean} a boolean if it is or is not hex prefixed
38604 * @throws if the str input is not a string
38605 */
38606 module.exports = function isHexPrefixed(str) {
38607 if (typeof str !== 'string') {
38608 throw new Error("[is-hex-prefixed] value must be type 'string', is currently type " + (typeof str) + ", while checking isHexPrefixed.");
38609 }
38610
38611 return str.slice(0, 2) === '0x';
38612 }
38613
38614 },{}],65:[function(require,module,exports){
38615 'use strict'
38616 module.exports = require('./lib/api')(require('./lib/keccak'))
38617
38618 },{"./lib/api":66,"./lib/keccak":70}],66:[function(require,module,exports){
38619 'use strict'
38620 var createKeccak = require('./keccak')
38621 var createShake = require('./shake')
38622
38623 module.exports = function (KeccakState) {
38624 var Keccak = createKeccak(KeccakState)
38625 var Shake = createShake(KeccakState)
38626
38627 return function (algorithm, options) {
38628 var hash = typeof algorithm === 'string' ? algorithm.toLowerCase() : algorithm
38629 switch (hash) {
38630 case 'keccak224': return new Keccak(1152, 448, null, 224, options)
38631 case 'keccak256': return new Keccak(1088, 512, null, 256, options)
38632 case 'keccak384': return new Keccak(832, 768, null, 384, options)
38633 case 'keccak512': return new Keccak(576, 1024, null, 512, options)
38634
38635 case 'sha3-224': return new Keccak(1152, 448, 0x06, 224, options)
38636 case 'sha3-256': return new Keccak(1088, 512, 0x06, 256, options)
38637 case 'sha3-384': return new Keccak(832, 768, 0x06, 384, options)
38638 case 'sha3-512': return new Keccak(576, 1024, 0x06, 512, options)
38639
38640 case 'shake128': return new Shake(1344, 256, 0x1f, options)
38641 case 'shake256': return new Shake(1088, 512, 0x1f, options)
38642
38643 default: throw new Error('Invald algorithm: ' + algorithm)
38644 }
38645 }
38646 }
38647
38648 },{"./keccak":67,"./shake":68}],67:[function(require,module,exports){
38649 (function (Buffer){
38650 'use strict'
38651 var Transform = require('stream').Transform
38652 var inherits = require('inherits')
38653
38654 module.exports = function (KeccakState) {
38655 function Keccak (rate, capacity, delimitedSuffix, hashBitLength, options) {
38656 Transform.call(this, options)
38657
38658 this._rate = rate
38659 this._capacity = capacity
38660 this._delimitedSuffix = delimitedSuffix
38661 this._hashBitLength = hashBitLength
38662 this._options = options
38663
38664 this._state = new KeccakState()
38665 this._state.initialize(rate, capacity)
38666 this._finalized = false
38667 }
38668
38669 inherits(Keccak, Transform)
38670
38671 Keccak.prototype._transform = function (chunk, encoding, callback) {
38672 var error = null
38673 try {
38674 this.update(chunk, encoding)
38675 } catch (err) {
38676 error = err
38677 }
38678
38679 callback(error)
38680 }
38681
38682 Keccak.prototype._flush = function (callback) {
38683 var error = null
38684 try {
38685 this.push(this.digest())
38686 } catch (err) {
38687 error = err
38688 }
38689
38690 callback(error)
38691 }
38692
38693 Keccak.prototype.update = function (data, encoding) {
38694 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
38695 if (this._finalized) throw new Error('Digest already called')
38696 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
38697
38698 this._state.absorb(data)
38699
38700 return this
38701 }
38702
38703 Keccak.prototype.digest = function (encoding) {
38704 if (this._finalized) throw new Error('Digest already called')
38705 this._finalized = true
38706
38707 if (this._delimitedSuffix) this._state.absorbLastFewBits(this._delimitedSuffix)
38708 var digest = this._state.squeeze(this._hashBitLength / 8)
38709 if (encoding !== undefined) digest = digest.toString(encoding)
38710
38711 this._resetState()
38712
38713 return digest
38714 }
38715
38716 // remove result from memory
38717 Keccak.prototype._resetState = function () {
38718 this._state.initialize(this._rate, this._capacity)
38719 return this
38720 }
38721
38722 // because sometimes we need hash right now and little later
38723 Keccak.prototype._clone = function () {
38724 var clone = new Keccak(this._rate, this._capacity, this._delimitedSuffix, this._hashBitLength, this._options)
38725 this._state.copy(clone._state)
38726 clone._finalized = this._finalized
38727
38728 return clone
38729 }
38730
38731 return Keccak
38732 }
38733
38734 }).call(this,require("buffer").Buffer)
38735 },{"buffer":5,"inherits":63,"stream":25}],68:[function(require,module,exports){
38736 (function (Buffer){
38737 'use strict'
38738 var Transform = require('stream').Transform
38739 var inherits = require('inherits')
38740
38741 module.exports = function (KeccakState) {
38742 function Shake (rate, capacity, delimitedSuffix, options) {
38743 Transform.call(this, options)
38744
38745 this._rate = rate
38746 this._capacity = capacity
38747 this._delimitedSuffix = delimitedSuffix
38748 this._options = options
38749
38750 this._state = new KeccakState()
38751 this._state.initialize(rate, capacity)
38752 this._finalized = false
38753 }
38754
38755 inherits(Shake, Transform)
38756
38757 Shake.prototype._transform = function (chunk, encoding, callback) {
38758 var error = null
38759 try {
38760 this.update(chunk, encoding)
38761 } catch (err) {
38762 error = err
38763 }
38764
38765 callback(error)
38766 }
38767
38768 Shake.prototype._flush = function () {}
38769
38770 Shake.prototype._read = function (size) {
38771 this.push(this.squeeze(size))
38772 }
38773
38774 Shake.prototype.update = function (data, encoding) {
38775 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
38776 if (this._finalized) throw new Error('Squeeze already called')
38777 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
38778
38779 this._state.absorb(data)
38780
38781 return this
38782 }
38783
38784 Shake.prototype.squeeze = function (dataByteLength, encoding) {
38785 if (!this._finalized) {
38786 this._finalized = true
38787 this._state.absorbLastFewBits(this._delimitedSuffix)
38788 }
38789
38790 var data = this._state.squeeze(dataByteLength)
38791 if (encoding !== undefined) data = data.toString(encoding)
38792
38793 return data
38794 }
38795
38796 Shake.prototype._resetState = function () {
38797 this._state.initialize(this._rate, this._capacity)
38798 return this
38799 }
38800
38801 Shake.prototype._clone = function () {
38802 var clone = new Shake(this._rate, this._capacity, this._delimitedSuffix, this._options)
38803 this._state.copy(clone._state)
38804 clone._finalized = this._finalized
38805
38806 return clone
38807 }
38808
38809 return Shake
38810 }
38811
38812 }).call(this,require("buffer").Buffer)
38813 },{"buffer":5,"inherits":63,"stream":25}],69:[function(require,module,exports){
38814 'use strict'
38815 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]
38816
38817 exports.p1600 = function (s) {
38818 for (var round = 0; round < 24; ++round) {
38819 // theta
38820 var lo0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40]
38821 var hi0 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41]
38822 var lo1 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42]
38823 var hi1 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43]
38824 var lo2 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44]
38825 var hi2 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45]
38826 var lo3 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46]
38827 var hi3 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47]
38828 var lo4 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48]
38829 var hi4 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49]
38830
38831 var lo = lo4 ^ (lo1 << 1 | hi1 >>> 31)
38832 var hi = hi4 ^ (hi1 << 1 | lo1 >>> 31)
38833 var t1slo0 = s[0] ^ lo
38834 var t1shi0 = s[1] ^ hi
38835 var t1slo5 = s[10] ^ lo
38836 var t1shi5 = s[11] ^ hi
38837 var t1slo10 = s[20] ^ lo
38838 var t1shi10 = s[21] ^ hi
38839 var t1slo15 = s[30] ^ lo
38840 var t1shi15 = s[31] ^ hi
38841 var t1slo20 = s[40] ^ lo
38842 var t1shi20 = s[41] ^ hi
38843 lo = lo0 ^ (lo2 << 1 | hi2 >>> 31)
38844 hi = hi0 ^ (hi2 << 1 | lo2 >>> 31)
38845 var t1slo1 = s[2] ^ lo
38846 var t1shi1 = s[3] ^ hi
38847 var t1slo6 = s[12] ^ lo
38848 var t1shi6 = s[13] ^ hi
38849 var t1slo11 = s[22] ^ lo
38850 var t1shi11 = s[23] ^ hi
38851 var t1slo16 = s[32] ^ lo
38852 var t1shi16 = s[33] ^ hi
38853 var t1slo21 = s[42] ^ lo
38854 var t1shi21 = s[43] ^ hi
38855 lo = lo1 ^ (lo3 << 1 | hi3 >>> 31)
38856 hi = hi1 ^ (hi3 << 1 | lo3 >>> 31)
38857 var t1slo2 = s[4] ^ lo
38858 var t1shi2 = s[5] ^ hi
38859 var t1slo7 = s[14] ^ lo
38860 var t1shi7 = s[15] ^ hi
38861 var t1slo12 = s[24] ^ lo
38862 var t1shi12 = s[25] ^ hi
38863 var t1slo17 = s[34] ^ lo
38864 var t1shi17 = s[35] ^ hi
38865 var t1slo22 = s[44] ^ lo
38866 var t1shi22 = s[45] ^ hi
38867 lo = lo2 ^ (lo4 << 1 | hi4 >>> 31)
38868 hi = hi2 ^ (hi4 << 1 | lo4 >>> 31)
38869 var t1slo3 = s[6] ^ lo
38870 var t1shi3 = s[7] ^ hi
38871 var t1slo8 = s[16] ^ lo
38872 var t1shi8 = s[17] ^ hi
38873 var t1slo13 = s[26] ^ lo
38874 var t1shi13 = s[27] ^ hi
38875 var t1slo18 = s[36] ^ lo
38876 var t1shi18 = s[37] ^ hi
38877 var t1slo23 = s[46] ^ lo
38878 var t1shi23 = s[47] ^ hi
38879 lo = lo3 ^ (lo0 << 1 | hi0 >>> 31)
38880 hi = hi3 ^ (hi0 << 1 | lo0 >>> 31)
38881 var t1slo4 = s[8] ^ lo
38882 var t1shi4 = s[9] ^ hi
38883 var t1slo9 = s[18] ^ lo
38884 var t1shi9 = s[19] ^ hi
38885 var t1slo14 = s[28] ^ lo
38886 var t1shi14 = s[29] ^ hi
38887 var t1slo19 = s[38] ^ lo
38888 var t1shi19 = s[39] ^ hi
38889 var t1slo24 = s[48] ^ lo
38890 var t1shi24 = s[49] ^ hi
38891
38892 // rho & pi
38893 var t2slo0 = t1slo0
38894 var t2shi0 = t1shi0
38895 var t2slo16 = (t1shi5 << 4 | t1slo5 >>> 28)
38896 var t2shi16 = (t1slo5 << 4 | t1shi5 >>> 28)
38897 var t2slo7 = (t1slo10 << 3 | t1shi10 >>> 29)
38898 var t2shi7 = (t1shi10 << 3 | t1slo10 >>> 29)
38899 var t2slo23 = (t1shi15 << 9 | t1slo15 >>> 23)
38900 var t2shi23 = (t1slo15 << 9 | t1shi15 >>> 23)
38901 var t2slo14 = (t1slo20 << 18 | t1shi20 >>> 14)
38902 var t2shi14 = (t1shi20 << 18 | t1slo20 >>> 14)
38903 var t2slo10 = (t1slo1 << 1 | t1shi1 >>> 31)
38904 var t2shi10 = (t1shi1 << 1 | t1slo1 >>> 31)
38905 var t2slo1 = (t1shi6 << 12 | t1slo6 >>> 20)
38906 var t2shi1 = (t1slo6 << 12 | t1shi6 >>> 20)
38907 var t2slo17 = (t1slo11 << 10 | t1shi11 >>> 22)
38908 var t2shi17 = (t1shi11 << 10 | t1slo11 >>> 22)
38909 var t2slo8 = (t1shi16 << 13 | t1slo16 >>> 19)
38910 var t2shi8 = (t1slo16 << 13 | t1shi16 >>> 19)
38911 var t2slo24 = (t1slo21 << 2 | t1shi21 >>> 30)
38912 var t2shi24 = (t1shi21 << 2 | t1slo21 >>> 30)
38913 var t2slo20 = (t1shi2 << 30 | t1slo2 >>> 2)
38914 var t2shi20 = (t1slo2 << 30 | t1shi2 >>> 2)
38915 var t2slo11 = (t1slo7 << 6 | t1shi7 >>> 26)
38916 var t2shi11 = (t1shi7 << 6 | t1slo7 >>> 26)
38917 var t2slo2 = (t1shi12 << 11 | t1slo12 >>> 21)
38918 var t2shi2 = (t1slo12 << 11 | t1shi12 >>> 21)
38919 var t2slo18 = (t1slo17 << 15 | t1shi17 >>> 17)
38920 var t2shi18 = (t1shi17 << 15 | t1slo17 >>> 17)
38921 var t2slo9 = (t1shi22 << 29 | t1slo22 >>> 3)
38922 var t2shi9 = (t1slo22 << 29 | t1shi22 >>> 3)
38923 var t2slo5 = (t1slo3 << 28 | t1shi3 >>> 4)
38924 var t2shi5 = (t1shi3 << 28 | t1slo3 >>> 4)
38925 var t2slo21 = (t1shi8 << 23 | t1slo8 >>> 9)
38926 var t2shi21 = (t1slo8 << 23 | t1shi8 >>> 9)
38927 var t2slo12 = (t1slo13 << 25 | t1shi13 >>> 7)
38928 var t2shi12 = (t1shi13 << 25 | t1slo13 >>> 7)
38929 var t2slo3 = (t1slo18 << 21 | t1shi18 >>> 11)
38930 var t2shi3 = (t1shi18 << 21 | t1slo18 >>> 11)
38931 var t2slo19 = (t1shi23 << 24 | t1slo23 >>> 8)
38932 var t2shi19 = (t1slo23 << 24 | t1shi23 >>> 8)
38933 var t2slo15 = (t1slo4 << 27 | t1shi4 >>> 5)
38934 var t2shi15 = (t1shi4 << 27 | t1slo4 >>> 5)
38935 var t2slo6 = (t1slo9 << 20 | t1shi9 >>> 12)
38936 var t2shi6 = (t1shi9 << 20 | t1slo9 >>> 12)
38937 var t2slo22 = (t1shi14 << 7 | t1slo14 >>> 25)
38938 var t2shi22 = (t1slo14 << 7 | t1shi14 >>> 25)
38939 var t2slo13 = (t1slo19 << 8 | t1shi19 >>> 24)
38940 var t2shi13 = (t1shi19 << 8 | t1slo19 >>> 24)
38941 var t2slo4 = (t1slo24 << 14 | t1shi24 >>> 18)
38942 var t2shi4 = (t1shi24 << 14 | t1slo24 >>> 18)
38943
38944 // chi
38945 s[0] = t2slo0 ^ (~t2slo1 & t2slo2)
38946 s[1] = t2shi0 ^ (~t2shi1 & t2shi2)
38947 s[10] = t2slo5 ^ (~t2slo6 & t2slo7)
38948 s[11] = t2shi5 ^ (~t2shi6 & t2shi7)
38949 s[20] = t2slo10 ^ (~t2slo11 & t2slo12)
38950 s[21] = t2shi10 ^ (~t2shi11 & t2shi12)
38951 s[30] = t2slo15 ^ (~t2slo16 & t2slo17)
38952 s[31] = t2shi15 ^ (~t2shi16 & t2shi17)
38953 s[40] = t2slo20 ^ (~t2slo21 & t2slo22)
38954 s[41] = t2shi20 ^ (~t2shi21 & t2shi22)
38955 s[2] = t2slo1 ^ (~t2slo2 & t2slo3)
38956 s[3] = t2shi1 ^ (~t2shi2 & t2shi3)
38957 s[12] = t2slo6 ^ (~t2slo7 & t2slo8)
38958 s[13] = t2shi6 ^ (~t2shi7 & t2shi8)
38959 s[22] = t2slo11 ^ (~t2slo12 & t2slo13)
38960 s[23] = t2shi11 ^ (~t2shi12 & t2shi13)
38961 s[32] = t2slo16 ^ (~t2slo17 & t2slo18)
38962 s[33] = t2shi16 ^ (~t2shi17 & t2shi18)
38963 s[42] = t2slo21 ^ (~t2slo22 & t2slo23)
38964 s[43] = t2shi21 ^ (~t2shi22 & t2shi23)
38965 s[4] = t2slo2 ^ (~t2slo3 & t2slo4)
38966 s[5] = t2shi2 ^ (~t2shi3 & t2shi4)
38967 s[14] = t2slo7 ^ (~t2slo8 & t2slo9)
38968 s[15] = t2shi7 ^ (~t2shi8 & t2shi9)
38969 s[24] = t2slo12 ^ (~t2slo13 & t2slo14)
38970 s[25] = t2shi12 ^ (~t2shi13 & t2shi14)
38971 s[34] = t2slo17 ^ (~t2slo18 & t2slo19)
38972 s[35] = t2shi17 ^ (~t2shi18 & t2shi19)
38973 s[44] = t2slo22 ^ (~t2slo23 & t2slo24)
38974 s[45] = t2shi22 ^ (~t2shi23 & t2shi24)
38975 s[6] = t2slo3 ^ (~t2slo4 & t2slo0)
38976 s[7] = t2shi3 ^ (~t2shi4 & t2shi0)
38977 s[16] = t2slo8 ^ (~t2slo9 & t2slo5)
38978 s[17] = t2shi8 ^ (~t2shi9 & t2shi5)
38979 s[26] = t2slo13 ^ (~t2slo14 & t2slo10)
38980 s[27] = t2shi13 ^ (~t2shi14 & t2shi10)
38981 s[36] = t2slo18 ^ (~t2slo19 & t2slo15)
38982 s[37] = t2shi18 ^ (~t2shi19 & t2shi15)
38983 s[46] = t2slo23 ^ (~t2slo24 & t2slo20)
38984 s[47] = t2shi23 ^ (~t2shi24 & t2shi20)
38985 s[8] = t2slo4 ^ (~t2slo0 & t2slo1)
38986 s[9] = t2shi4 ^ (~t2shi0 & t2shi1)
38987 s[18] = t2slo9 ^ (~t2slo5 & t2slo6)
38988 s[19] = t2shi9 ^ (~t2shi5 & t2shi6)
38989 s[28] = t2slo14 ^ (~t2slo10 & t2slo11)
38990 s[29] = t2shi14 ^ (~t2shi10 & t2shi11)
38991 s[38] = t2slo19 ^ (~t2slo15 & t2slo16)
38992 s[39] = t2shi19 ^ (~t2shi15 & t2shi16)
38993 s[48] = t2slo24 ^ (~t2slo20 & t2slo21)
38994 s[49] = t2shi24 ^ (~t2shi20 & t2shi21)
38995
38996 // iota
38997 s[0] ^= P1600_ROUND_CONSTANTS[round * 2]
38998 s[1] ^= P1600_ROUND_CONSTANTS[round * 2 + 1]
38999 }
39000 }
39001
39002 },{}],70:[function(require,module,exports){
39003 (function (Buffer){
39004 'use strict'
39005 var keccakState = require('./keccak-state-unroll')
39006
39007 function Keccak () {
39008 // much faster than `new Array(50)`
39009 this.state = [
39010 0, 0, 0, 0, 0,
39011 0, 0, 0, 0, 0,
39012 0, 0, 0, 0, 0,
39013 0, 0, 0, 0, 0,
39014 0, 0, 0, 0, 0
39015 ]
39016
39017 this.blockSize = null
39018 this.count = 0
39019 this.squeezing = false
39020 }
39021
39022 Keccak.prototype.initialize = function (rate, capacity) {
39023 for (var i = 0; i < 50; ++i) this.state[i] = 0
39024 this.blockSize = rate / 8
39025 this.count = 0
39026 this.squeezing = false
39027 }
39028
39029 Keccak.prototype.absorb = function (data) {
39030 for (var i = 0; i < data.length; ++i) {
39031 this.state[~~(this.count / 4)] ^= data[i] << (8 * (this.count % 4))
39032 this.count += 1
39033 if (this.count === this.blockSize) {
39034 keccakState.p1600(this.state)
39035 this.count = 0
39036 }
39037 }
39038 }
39039
39040 Keccak.prototype.absorbLastFewBits = function (bits) {
39041 this.state[~~(this.count / 4)] ^= bits << (8 * (this.count % 4))
39042 if ((bits & 0x80) !== 0 && this.count === (this.blockSize - 1)) keccakState.p1600(this.state)
39043 this.state[~~((this.blockSize - 1) / 4)] ^= 0x80 << (8 * ((this.blockSize - 1) % 4))
39044 keccakState.p1600(this.state)
39045 this.count = 0
39046 this.squeezing = true
39047 }
39048
39049 Keccak.prototype.squeeze = function (length) {
39050 if (!this.squeezing) this.absorbLastFewBits(0x01)
39051
39052 var output = Buffer.allocUnsafe(length)
39053 for (var i = 0; i < length; ++i) {
39054 output[i] = (this.state[~~(this.count / 4)] >>> (8 * (this.count % 4))) & 0xff
39055 this.count += 1
39056 if (this.count === this.blockSize) {
39057 keccakState.p1600(this.state)
39058 this.count = 0
39059 }
39060 }
39061
39062 return output
39063 }
39064
39065 Keccak.prototype.copy = function (dest) {
39066 for (var i = 0; i < 50; ++i) dest.state[i] = this.state[i]
39067 dest.blockSize = this.blockSize
39068 dest.count = this.count
39069 dest.squeezing = this.squeezing
39070 }
39071
39072 module.exports = Keccak
39073
39074 }).call(this,require("buffer").Buffer)
39075 },{"./keccak-state-unroll":69,"buffer":5}],71:[function(require,module,exports){
39076 (function (Buffer){
39077 /*
39078 CryptoJS v3.1.2
39079 code.google.com/p/crypto-js
39080 (c) 2009-2013 by Jeff Mott. All rights reserved.
39081 code.google.com/p/crypto-js/wiki/License
39082 */
39083 /** @preserve
39084 (c) 2012 by Cédric Mesnil. All rights reserved.
39085
39086 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
39087
39088 - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
39089 - 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.
39090
39091 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.
39092 */
39093
39094 // constants table
39095 var zl = [
39096 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
39097 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
39098 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
39099 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
39100 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
39101 ]
39102
39103 var zr = [
39104 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
39105 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
39106 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
39107 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
39108 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
39109 ]
39110
39111 var sl = [
39112 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
39113 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
39114 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
39115 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
39116 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
39117 ]
39118
39119 var sr = [
39120 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
39121 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
39122 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
39123 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
39124 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
39125 ]
39126
39127 var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]
39128 var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]
39129
39130 function bytesToWords (bytes) {
39131 var words = []
39132 for (var i = 0, b = 0; i < bytes.length; i++, b += 8) {
39133 words[b >>> 5] |= bytes[i] << (24 - b % 32)
39134 }
39135 return words
39136 }
39137
39138 function wordsToBytes (words) {
39139 var bytes = []
39140 for (var b = 0; b < words.length * 32; b += 8) {
39141 bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF)
39142 }
39143 return bytes
39144 }
39145
39146 function processBlock (H, M, offset) {
39147 // swap endian
39148 for (var i = 0; i < 16; i++) {
39149 var offset_i = offset + i
39150 var M_offset_i = M[offset_i]
39151
39152 // Swap
39153 M[offset_i] = (
39154 (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
39155 (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
39156 )
39157 }
39158
39159 // Working variables
39160 var al, bl, cl, dl, el
39161 var ar, br, cr, dr, er
39162
39163 ar = al = H[0]
39164 br = bl = H[1]
39165 cr = cl = H[2]
39166 dr = dl = H[3]
39167 er = el = H[4]
39168
39169 // computation
39170 var t
39171 for (i = 0; i < 80; i += 1) {
39172 t = (al + M[offset + zl[i]]) | 0
39173 if (i < 16) {
39174 t += f1(bl, cl, dl) + hl[0]
39175 } else if (i < 32) {
39176 t += f2(bl, cl, dl) + hl[1]
39177 } else if (i < 48) {
39178 t += f3(bl, cl, dl) + hl[2]
39179 } else if (i < 64) {
39180 t += f4(bl, cl, dl) + hl[3]
39181 } else {// if (i<80) {
39182 t += f5(bl, cl, dl) + hl[4]
39183 }
39184 t = t | 0
39185 t = rotl(t, sl[i])
39186 t = (t + el) | 0
39187 al = el
39188 el = dl
39189 dl = rotl(cl, 10)
39190 cl = bl
39191 bl = t
39192
39193 t = (ar + M[offset + zr[i]]) | 0
39194 if (i < 16) {
39195 t += f5(br, cr, dr) + hr[0]
39196 } else if (i < 32) {
39197 t += f4(br, cr, dr) + hr[1]
39198 } else if (i < 48) {
39199 t += f3(br, cr, dr) + hr[2]
39200 } else if (i < 64) {
39201 t += f2(br, cr, dr) + hr[3]
39202 } else {// if (i<80) {
39203 t += f1(br, cr, dr) + hr[4]
39204 }
39205
39206 t = t | 0
39207 t = rotl(t, sr[i])
39208 t = (t + er) | 0
39209 ar = er
39210 er = dr
39211 dr = rotl(cr, 10)
39212 cr = br
39213 br = t
39214 }
39215
39216 // intermediate hash value
39217 t = (H[1] + cl + dr) | 0
39218 H[1] = (H[2] + dl + er) | 0
39219 H[2] = (H[3] + el + ar) | 0
39220 H[3] = (H[4] + al + br) | 0
39221 H[4] = (H[0] + bl + cr) | 0
39222 H[0] = t
39223 }
39224
39225 function f1 (x, y, z) {
39226 return ((x) ^ (y) ^ (z))
39227 }
39228
39229 function f2 (x, y, z) {
39230 return (((x) & (y)) | ((~x) & (z)))
39231 }
39232
39233 function f3 (x, y, z) {
39234 return (((x) | (~(y))) ^ (z))
39235 }
39236
39237 function f4 (x, y, z) {
39238 return (((x) & (z)) | ((y) & (~(z))))
39239 }
39240
39241 function f5 (x, y, z) {
39242 return ((x) ^ ((y) | (~(z))))
39243 }
39244
39245 function rotl (x, n) {
39246 return (x << n) | (x >>> (32 - n))
39247 }
39248
39249 function ripemd160 (message) {
39250 var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]
39251
39252 if (typeof message === 'string') {
39253 message = new Buffer(message, 'utf8')
39254 }
39255
39256 var m = bytesToWords(message)
39257
39258 var nBitsLeft = message.length * 8
39259 var nBitsTotal = message.length * 8
39260
39261 // Add padding
39262 m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32)
39263 m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
39264 (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |
39265 (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)
39266 )
39267
39268 for (var i = 0; i < m.length; i += 16) {
39269 processBlock(H, m, i)
39270 }
39271
39272 // swap endian
39273 for (i = 0; i < 5; i++) {
39274 // shortcut
39275 var H_i = H[i]
39276
39277 // Swap
39278 H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
39279 (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00)
39280 }
39281
39282 var digestbytes = wordsToBytes(H)
39283 return new Buffer(digestbytes)
39284 }
39285
39286 module.exports = ripemd160
39287
39288 }).call(this,require("buffer").Buffer)
39289 },{"buffer":5}],72:[function(require,module,exports){
39290 (function (Buffer){
39291 const assert = require('assert')
39292 /**
39293 * RLP Encoding based on: https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP
39294 * This function takes in a data, convert it to buffer if not, and a length for recursion
39295 *
39296 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
39297 * @returns {Buffer} - returns buffer of encoded data
39298 **/
39299 exports.encode = function (input) {
39300 if (input instanceof Array) {
39301 var output = []
39302 for (var i = 0; i < input.length; i++) {
39303 output.push(exports.encode(input[i]))
39304 }
39305 var buf = Buffer.concat(output)
39306 return Buffer.concat([encodeLength(buf.length, 192), buf])
39307 } else {
39308 input = toBuffer(input)
39309 if (input.length === 1 && input[0] < 128) {
39310 return input
39311 } else {
39312 return Buffer.concat([encodeLength(input.length, 128), input])
39313 }
39314 }
39315 }
39316
39317 function safeParseInt (v, base) {
39318 if (v.slice(0, 2) === '00') {
39319 throw (new Error('invalid RLP: extra zeros'))
39320 }
39321
39322 return parseInt(v, base)
39323 }
39324
39325 function encodeLength (len, offset) {
39326 if (len < 56) {
39327 return new Buffer([len + offset])
39328 } else {
39329 var hexLength = intToHex(len)
39330 var lLength = hexLength.length / 2
39331 var firstByte = intToHex(offset + 55 + lLength)
39332 return new Buffer(firstByte + hexLength, 'hex')
39333 }
39334 }
39335
39336 /**
39337 * RLP Decoding based on: {@link https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP|RLP}
39338 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
39339 * @returns {Array} - returns decode Array of Buffers containg the original message
39340 **/
39341 exports.decode = function (input, stream) {
39342 if (!input || input.length === 0) {
39343 return new Buffer([])
39344 }
39345
39346 input = toBuffer(input)
39347 var decoded = _decode(input)
39348
39349 if (stream) {
39350 return decoded
39351 }
39352
39353 assert.equal(decoded.remainder.length, 0, 'invalid remainder')
39354 return decoded.data
39355 }
39356
39357 exports.getLength = function (input) {
39358 if (!input || input.length === 0) {
39359 return new Buffer([])
39360 }
39361
39362 input = toBuffer(input)
39363 var firstByte = input[0]
39364 if (firstByte <= 0x7f) {
39365 return input.length
39366 } else if (firstByte <= 0xb7) {
39367 return firstByte - 0x7f
39368 } else if (firstByte <= 0xbf) {
39369 return firstByte - 0xb6
39370 } else if (firstByte <= 0xf7) {
39371 // a list between 0-55 bytes long
39372 return firstByte - 0xbf
39373 } else {
39374 // a list over 55 bytes long
39375 var llength = firstByte - 0xf6
39376 var length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
39377 return llength + length
39378 }
39379 }
39380
39381 function _decode (input) {
39382 var length, llength, data, innerRemainder, d
39383 var decoded = []
39384 var firstByte = input[0]
39385
39386 if (firstByte <= 0x7f) {
39387 // a single byte whose value is in the [0x00, 0x7f] range, that byte is its own RLP encoding.
39388 return {
39389 data: input.slice(0, 1),
39390 remainder: input.slice(1)
39391 }
39392 } else if (firstByte <= 0xb7) {
39393 // string is 0-55 bytes long. A single byte with value 0x80 plus the length of the string followed by the string
39394 // The range of the first byte is [0x80, 0xb7]
39395 length = firstByte - 0x7f
39396
39397 // set 0x80 null to 0
39398 if (firstByte === 0x80) {
39399 data = new Buffer([])
39400 } else {
39401 data = input.slice(1, length)
39402 }
39403
39404 if (length === 2 && data[0] < 0x80) {
39405 throw new Error('invalid rlp encoding: byte must be less 0x80')
39406 }
39407
39408 return {
39409 data: data,
39410 remainder: input.slice(length)
39411 }
39412 } else if (firstByte <= 0xbf) {
39413 llength = firstByte - 0xb6
39414 length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
39415 data = input.slice(llength, length + llength)
39416 if (data.length < length) {
39417 throw (new Error('invalid RLP'))
39418 }
39419
39420 return {
39421 data: data,
39422 remainder: input.slice(length + llength)
39423 }
39424 } else if (firstByte <= 0xf7) {
39425 // a list between 0-55 bytes long
39426 length = firstByte - 0xbf
39427 innerRemainder = input.slice(1, length)
39428 while (innerRemainder.length) {
39429 d = _decode(innerRemainder)
39430 decoded.push(d.data)
39431 innerRemainder = d.remainder
39432 }
39433
39434 return {
39435 data: decoded,
39436 remainder: input.slice(length)
39437 }
39438 } else {
39439 // a list over 55 bytes long
39440 llength = firstByte - 0xf6
39441 length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
39442 var totalLength = llength + length
39443 if (totalLength > input.length) {
39444 throw new Error('invalid rlp: total length is larger than the data')
39445 }
39446
39447 innerRemainder = input.slice(llength, totalLength)
39448 if (innerRemainder.length === 0) {
39449 throw new Error('invalid rlp, List has a invalid length')
39450 }
39451
39452 while (innerRemainder.length) {
39453 d = _decode(innerRemainder)
39454 decoded.push(d.data)
39455 innerRemainder = d.remainder
39456 }
39457 return {
39458 data: decoded,
39459 remainder: input.slice(totalLength)
39460 }
39461 }
39462 }
39463
39464 function isHexPrefixed (str) {
39465 return str.slice(0, 2) === '0x'
39466 }
39467
39468 // Removes 0x from a given String
39469 function stripHexPrefix (str) {
39470 if (typeof str !== 'string') {
39471 return str
39472 }
39473 return isHexPrefixed(str) ? str.slice(2) : str
39474 }
39475
39476 function intToHex (i) {
39477 var hex = i.toString(16)
39478 if (hex.length % 2) {
39479 hex = '0' + hex
39480 }
39481
39482 return hex
39483 }
39484
39485 function padToEven (a) {
39486 if (a.length % 2) a = '0' + a
39487 return a
39488 }
39489
39490 function intToBuffer (i) {
39491 var hex = intToHex(i)
39492 return new Buffer(hex, 'hex')
39493 }
39494
39495 function toBuffer (v) {
39496 if (!Buffer.isBuffer(v)) {
39497 if (typeof v === 'string') {
39498 if (isHexPrefixed(v)) {
39499 v = new Buffer(padToEven(stripHexPrefix(v)), 'hex')
39500 } else {
39501 v = new Buffer(v)
39502 }
39503 } else if (typeof v === 'number') {
39504 if (!v) {
39505 v = new Buffer([])
39506 } else {
39507 v = intToBuffer(v)
39508 }
39509 } else if (v === null || v === undefined) {
39510 v = new Buffer([])
39511 } else if (v.toArray) {
39512 // converts a BN to a Buffer
39513 v = new Buffer(v.toArray())
39514 } else {
39515 throw new Error('invalid type')
39516 }
39517 }
39518 return v
39519 }
39520
39521 }).call(this,require("buffer").Buffer)
39522 },{"assert":1,"buffer":5}],73:[function(require,module,exports){
39523 'use strict'
39524 module.exports = require('./lib')(require('./lib/elliptic'))
39525
39526 },{"./lib":77,"./lib/elliptic":76}],74:[function(require,module,exports){
39527 (function (Buffer){
39528 'use strict'
39529 var toString = Object.prototype.toString
39530
39531 // TypeError
39532 exports.isArray = function (value, message) {
39533 if (!Array.isArray(value)) throw TypeError(message)
39534 }
39535
39536 exports.isBoolean = function (value, message) {
39537 if (toString.call(value) !== '[object Boolean]') throw TypeError(message)
39538 }
39539
39540 exports.isBuffer = function (value, message) {
39541 if (!Buffer.isBuffer(value)) throw TypeError(message)
39542 }
39543
39544 exports.isFunction = function (value, message) {
39545 if (toString.call(value) !== '[object Function]') throw TypeError(message)
39546 }
39547
39548 exports.isNumber = function (value, message) {
39549 if (toString.call(value) !== '[object Number]') throw TypeError(message)
39550 }
39551
39552 exports.isObject = function (value, message) {
39553 if (toString.call(value) !== '[object Object]') throw TypeError(message)
39554 }
39555
39556 // RangeError
39557 exports.isBufferLength = function (buffer, length, message) {
39558 if (buffer.length !== length) throw RangeError(message)
39559 }
39560
39561 exports.isBufferLength2 = function (buffer, length1, length2, message) {
39562 if (buffer.length !== length1 && buffer.length !== length2) throw RangeError(message)
39563 }
39564
39565 exports.isLengthGTZero = function (value, message) {
39566 if (value.length === 0) throw RangeError(message)
39567 }
39568
39569 exports.isNumberInInterval = function (number, x, y, message) {
39570 if (number <= x || number >= y) throw RangeError(message)
39571 }
39572
39573 }).call(this,{"isBuffer":require("../../../../../.nvm/versions/node/v7.5.0/lib/node_modules/browserify/node_modules/is-buffer/index.js")})
39574 },{"../../../../../.nvm/versions/node/v7.5.0/lib/node_modules/browserify/node_modules/is-buffer/index.js":10}],75:[function(require,module,exports){
39575 (function (Buffer){
39576 'use strict'
39577 var bip66 = require('bip66')
39578
39579 var EC_PRIVKEY_EXPORT_DER_COMPRESSED = new Buffer([
39580 // begin
39581 0x30, 0x81, 0xd3, 0x02, 0x01, 0x01, 0x04, 0x20,
39582 // private key
39583 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39584 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39585 // middle
39586 0xa0, 0x81, 0x85, 0x30, 0x81, 0x82, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,
39587 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39588 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39589 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,
39590 0x21, 0x02, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,
39591 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,
39592 0x17, 0x98, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39593 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,
39594 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x24, 0x03, 0x22, 0x00,
39595 // public key
39596 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39597 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39598 0x00
39599 ])
39600
39601 var EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED = new Buffer([
39602 // begin
39603 0x30, 0x82, 0x01, 0x13, 0x02, 0x01, 0x01, 0x04, 0x20,
39604 // private key
39605 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39606 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39607 // middle
39608 0xa0, 0x81, 0xa5, 0x30, 0x81, 0xa2, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,
39609 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39610 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39611 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,
39612 0x41, 0x04, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,
39613 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,
39614 0x17, 0x98, 0x48, 0x3a, 0xda, 0x77, 0x26, 0xa3, 0xc4, 0x65, 0x5d, 0xa4, 0xfb, 0xfc, 0x0E, 0x11,
39615 0x08, 0xa8, 0xfd, 0x17, 0xb4, 0x48, 0xa6, 0x85, 0x54, 0x19, 0x9c, 0x47, 0xd0, 0x8f, 0xfb, 0x10,
39616 0xd4, 0xb8, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39617 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,
39618 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x44, 0x03, 0x42, 0x00,
39619 // public key
39620 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39621 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39622 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39623 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39624 0x00
39625 ])
39626
39627 var ZERO_BUFFER_32 = new Buffer([
39628 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39629 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
39630 ])
39631
39632 exports.privateKeyExport = function (privateKey, publicKey, compressed) {
39633 var result = new Buffer(compressed ? EC_PRIVKEY_EXPORT_DER_COMPRESSED : EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED)
39634 privateKey.copy(result, compressed ? 8 : 9)
39635 publicKey.copy(result, compressed ? 181 : 214)
39636 return result
39637 }
39638
39639 exports.privateKeyImport = function (privateKey) {
39640 var length = privateKey.length
39641
39642 // sequence header
39643 var index = 0
39644 if (length < index + 1 || privateKey[index] !== 0x30) return
39645 index += 1
39646
39647 // sequence length constructor
39648 if (length < index + 1 || !(privateKey[index] & 0x80)) return
39649
39650 var lenb = privateKey[index] & 0x7f
39651 index += 1
39652 if (lenb < 1 || lenb > 2) return
39653 if (length < index + lenb) return
39654
39655 // sequence length
39656 var len = privateKey[index + lenb - 1] | (lenb > 1 ? privateKey[index + lenb - 2] << 8 : 0)
39657 index += lenb
39658 if (length < index + len) return
39659
39660 // sequence element 0: version number (=1)
39661 if (length < index + 3 ||
39662 privateKey[index] !== 0x02 ||
39663 privateKey[index + 1] !== 0x01 ||
39664 privateKey[index + 2] !== 0x01) {
39665 return
39666 }
39667 index += 3
39668
39669 // sequence element 1: octet string, up to 32 bytes
39670 if (length < index + 2 ||
39671 privateKey[index] !== 0x04 ||
39672 privateKey[index + 1] > 0x20 ||
39673 length < index + 2 + privateKey[index + 1]) {
39674 return
39675 }
39676
39677 return privateKey.slice(index + 2, index + 2 + privateKey[index + 1])
39678 }
39679
39680 exports.signatureExport = function (sigObj) {
39681 var r = Buffer.concat([new Buffer([0]), sigObj.r])
39682 for (var lenR = 33, posR = 0; lenR > 1 && r[posR] === 0x00 && !(r[posR + 1] & 0x80); --lenR, ++posR);
39683
39684 var s = Buffer.concat([new Buffer([0]), sigObj.s])
39685 for (var lenS = 33, posS = 0; lenS > 1 && s[posS] === 0x00 && !(s[posS + 1] & 0x80); --lenS, ++posS);
39686
39687 return bip66.encode(r.slice(posR), s.slice(posS))
39688 }
39689
39690 exports.signatureImport = function (sig) {
39691 var r = new Buffer(ZERO_BUFFER_32)
39692 var s = new Buffer(ZERO_BUFFER_32)
39693
39694 try {
39695 var sigObj = bip66.decode(sig)
39696 if (sigObj.r.length === 33 && sigObj.r[0] === 0x00) sigObj.r = sigObj.r.slice(1)
39697 if (sigObj.r.length > 32) throw new Error('R length is too long')
39698 if (sigObj.s.length === 33 && sigObj.s[0] === 0x00) sigObj.s = sigObj.s.slice(1)
39699 if (sigObj.s.length > 32) throw new Error('S length is too long')
39700 } catch (err) {
39701 return
39702 }
39703
39704 sigObj.r.copy(r, 32 - sigObj.r.length)
39705 sigObj.s.copy(s, 32 - sigObj.s.length)
39706
39707 return { r: r, s: s }
39708 }
39709
39710 exports.signatureImportLax = function (sig) {
39711 var r = new Buffer(ZERO_BUFFER_32)
39712 var s = new Buffer(ZERO_BUFFER_32)
39713
39714 var length = sig.length
39715 var index = 0
39716
39717 // sequence tag byte
39718 if (sig[index++] !== 0x30) return
39719
39720 // sequence length byte
39721 var lenbyte = sig[index++]
39722 if (lenbyte & 0x80) {
39723 index += lenbyte - 0x80
39724 if (index > length) return
39725 }
39726
39727 // sequence tag byte for r
39728 if (sig[index++] !== 0x02) return
39729
39730 // length for r
39731 var rlen = sig[index++]
39732 if (rlen & 0x80) {
39733 lenbyte = rlen - 0x80
39734 if (index + lenbyte > length) return
39735 for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);
39736 for (rlen = 0; lenbyte > 0; index += 1, lenbyte -= 1) rlen = (rlen << 8) + sig[index]
39737 }
39738 if (rlen > length - index) return
39739 var rindex = index
39740 index += rlen
39741
39742 // sequence tag byte for s
39743 if (sig[index++] !== 0x02) return
39744
39745 // length for s
39746 var slen = sig[index++]
39747 if (slen & 0x80) {
39748 lenbyte = slen - 0x80
39749 if (index + lenbyte > length) return
39750 for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);
39751 for (slen = 0; lenbyte > 0; index += 1, lenbyte -= 1) slen = (slen << 8) + sig[index]
39752 }
39753 if (slen > length - index) return
39754 var sindex = index
39755 index += slen
39756
39757 // ignore leading zeros in r
39758 for (; rlen > 0 && sig[rindex] === 0x00; rlen -= 1, rindex += 1);
39759 // copy r value
39760 if (rlen > 32) return
39761 var rvalue = sig.slice(rindex, rindex + rlen)
39762 rvalue.copy(r, 32 - rvalue.length)
39763
39764 // ignore leading zeros in s
39765 for (; slen > 0 && sig[sindex] === 0x00; slen -= 1, sindex += 1);
39766 // copy s value
39767 if (slen > 32) return
39768 var svalue = sig.slice(sindex, sindex + slen)
39769 svalue.copy(s, 32 - svalue.length)
39770
39771 return { r: r, s: s }
39772 }
39773
39774 }).call(this,require("buffer").Buffer)
39775 },{"bip66":32,"buffer":5}],76:[function(require,module,exports){
39776 (function (Buffer){
39777 'use strict'
39778 var createHash = require('create-hash')
39779 var BN = require('bn.js')
39780 var EC = require('elliptic').ec
39781
39782 var messages = require('../messages.json')
39783
39784 var ec = new EC('secp256k1')
39785 var ecparams = ec.curve
39786
39787 function loadCompressedPublicKey (first, xBuffer) {
39788 var x = new BN(xBuffer)
39789
39790 // overflow
39791 if (x.cmp(ecparams.p) >= 0) return null
39792 x = x.toRed(ecparams.red)
39793
39794 // compute corresponding Y
39795 var y = x.redSqr().redIMul(x).redIAdd(ecparams.b).redSqrt()
39796 if ((first === 0x03) !== y.isOdd()) y = y.redNeg()
39797
39798 return ec.keyPair({ pub: { x: x, y: y } })
39799 }
39800
39801 function loadUncompressedPublicKey (first, xBuffer, yBuffer) {
39802 var x = new BN(xBuffer)
39803 var y = new BN(yBuffer)
39804
39805 // overflow
39806 if (x.cmp(ecparams.p) >= 0 || y.cmp(ecparams.p) >= 0) return null
39807
39808 x = x.toRed(ecparams.red)
39809 y = y.toRed(ecparams.red)
39810
39811 // is odd flag
39812 if ((first === 0x06 || first === 0x07) && y.isOdd() !== (first === 0x07)) return null
39813
39814 // x*x*x + b = y*y
39815 var x3 = x.redSqr().redIMul(x)
39816 if (!y.redSqr().redISub(x3.redIAdd(ecparams.b)).isZero()) return null
39817
39818 return ec.keyPair({ pub: { x: x, y: y } })
39819 }
39820
39821 function loadPublicKey (publicKey) {
39822 var first = publicKey[0]
39823 switch (first) {
39824 case 0x02:
39825 case 0x03:
39826 if (publicKey.length !== 33) return null
39827 return loadCompressedPublicKey(first, publicKey.slice(1, 33))
39828 case 0x04:
39829 case 0x06:
39830 case 0x07:
39831 if (publicKey.length !== 65) return null
39832 return loadUncompressedPublicKey(first, publicKey.slice(1, 33), publicKey.slice(33, 65))
39833 default:
39834 return null
39835 }
39836 }
39837
39838 exports.privateKeyVerify = function (privateKey) {
39839 var bn = new BN(privateKey)
39840 return bn.cmp(ecparams.n) < 0 && !bn.isZero()
39841 }
39842
39843 exports.privateKeyExport = function (privateKey, compressed) {
39844 var d = new BN(privateKey)
39845 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PRIVATE_KEY_EXPORT_DER_FAIL)
39846
39847 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
39848 }
39849
39850 exports.privateKeyTweakAdd = function (privateKey, tweak) {
39851 var bn = new BN(tweak)
39852 if (bn.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
39853
39854 bn.iadd(new BN(privateKey))
39855 if (bn.cmp(ecparams.n) >= 0) bn.isub(ecparams.n)
39856 if (bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
39857
39858 return bn.toArrayLike(Buffer, 'be', 32)
39859 }
39860
39861 exports.privateKeyTweakMul = function (privateKey, tweak) {
39862 var bn = new BN(tweak)
39863 if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_MUL_FAIL)
39864
39865 bn.imul(new BN(privateKey))
39866 if (bn.cmp(ecparams.n)) bn = bn.umod(ecparams.n)
39867
39868 return bn.toArrayLike(Buffer, 'be', 32)
39869 }
39870
39871 exports.publicKeyCreate = function (privateKey, compressed) {
39872 var d = new BN(privateKey)
39873 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PUBLIC_KEY_CREATE_FAIL)
39874
39875 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
39876 }
39877
39878 exports.publicKeyConvert = function (publicKey, compressed) {
39879 var pair = loadPublicKey(publicKey)
39880 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
39881
39882 return new Buffer(pair.getPublic(compressed, true))
39883 }
39884
39885 exports.publicKeyVerify = function (publicKey) {
39886 return loadPublicKey(publicKey) !== null
39887 }
39888
39889 exports.publicKeyTweakAdd = function (publicKey, tweak, compressed) {
39890 var pair = loadPublicKey(publicKey)
39891 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
39892
39893 tweak = new BN(tweak)
39894 if (tweak.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_ADD_FAIL)
39895
39896 return new Buffer(ecparams.g.mul(tweak).add(pair.pub).encode(true, compressed))
39897 }
39898
39899 exports.publicKeyTweakMul = function (publicKey, tweak, compressed) {
39900 var pair = loadPublicKey(publicKey)
39901 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
39902
39903 tweak = new BN(tweak)
39904 if (tweak.cmp(ecparams.n) >= 0 || tweak.isZero()) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_MUL_FAIL)
39905
39906 return new Buffer(pair.pub.mul(tweak).encode(true, compressed))
39907 }
39908
39909 exports.publicKeyCombine = function (publicKeys, compressed) {
39910 var pairs = new Array(publicKeys.length)
39911 for (var i = 0; i < publicKeys.length; ++i) {
39912 pairs[i] = loadPublicKey(publicKeys[i])
39913 if (pairs[i] === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
39914 }
39915
39916 var point = pairs[0].pub
39917 for (var j = 1; j < pairs.length; ++j) point = point.add(pairs[j].pub)
39918 if (point.isInfinity()) throw new Error(messages.EC_PUBLIC_KEY_COMBINE_FAIL)
39919
39920 return new Buffer(point.encode(true, compressed))
39921 }
39922
39923 exports.signatureNormalize = function (signature) {
39924 var r = new BN(signature.slice(0, 32))
39925 var s = new BN(signature.slice(32, 64))
39926 if (r.cmp(ecparams.n) >= 0 || s.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
39927
39928 var result = new Buffer(signature)
39929 if (s.cmp(ec.nh) === 1) ecparams.n.sub(s).toArrayLike(Buffer, 'be', 32).copy(result, 32)
39930
39931 return result
39932 }
39933
39934 exports.signatureExport = function (signature) {
39935 var r = signature.slice(0, 32)
39936 var s = signature.slice(32, 64)
39937 if (new BN(r).cmp(ecparams.n) >= 0 || new BN(s).cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
39938
39939 return { r: r, s: s }
39940 }
39941
39942 exports.signatureImport = function (sigObj) {
39943 var r = new BN(sigObj.r)
39944 if (r.cmp(ecparams.n) >= 0) r = new BN(0)
39945
39946 var s = new BN(sigObj.s)
39947 if (s.cmp(ecparams.n) >= 0) s = new BN(0)
39948
39949 return Buffer.concat([
39950 r.toArrayLike(Buffer, 'be', 32),
39951 s.toArrayLike(Buffer, 'be', 32)
39952 ])
39953 }
39954
39955 exports.sign = function (message, privateKey, noncefn, data) {
39956 if (typeof noncefn === 'function') {
39957 var getNonce = noncefn
39958 noncefn = function (counter) {
39959 var nonce = getNonce(message, privateKey, null, data, counter)
39960 if (!Buffer.isBuffer(nonce) || nonce.length !== 32) throw new Error(messages.ECDSA_SIGN_FAIL)
39961
39962 return new BN(nonce)
39963 }
39964 }
39965
39966 var d = new BN(privateKey)
39967 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.ECDSA_SIGN_FAIL)
39968
39969 var result = ec.sign(message, privateKey, { canonical: true, k: noncefn, pers: data })
39970 return {
39971 signature: Buffer.concat([
39972 result.r.toArrayLike(Buffer, 'be', 32),
39973 result.s.toArrayLike(Buffer, 'be', 32)
39974 ]),
39975 recovery: result.recoveryParam
39976 }
39977 }
39978
39979 exports.verify = function (message, signature, publicKey) {
39980 var sigObj = {r: signature.slice(0, 32), s: signature.slice(32, 64)}
39981
39982 var sigr = new BN(sigObj.r)
39983 var sigs = new BN(sigObj.s)
39984 if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
39985 if (sigs.cmp(ec.nh) === 1 || sigr.isZero() || sigs.isZero()) return false
39986
39987 var pair = loadPublicKey(publicKey)
39988 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
39989
39990 return ec.verify(message, sigObj, {x: pair.pub.x, y: pair.pub.y})
39991 }
39992
39993 exports.recover = function (message, signature, recovery, compressed) {
39994 var sigObj = {r: signature.slice(0, 32), s: signature.slice(32, 64)}
39995
39996 var sigr = new BN(sigObj.r)
39997 var sigs = new BN(sigObj.s)
39998 if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
39999
40000 try {
40001 if (sigr.isZero() || sigs.isZero()) throw new Error()
40002
40003 var point = ec.recoverPubKey(message, sigObj, recovery)
40004 return new Buffer(point.encode(true, compressed))
40005 } catch (err) {
40006 throw new Error(messages.ECDSA_RECOVER_FAIL)
40007 }
40008 }
40009
40010 exports.ecdh = function (publicKey, privateKey) {
40011 var shared = exports.ecdhUnsafe(publicKey, privateKey, true)
40012 return createHash('sha256').update(shared).digest()
40013 }
40014
40015 exports.ecdhUnsafe = function (publicKey, privateKey, compressed) {
40016 var pair = loadPublicKey(publicKey)
40017 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
40018
40019 var scalar = new BN(privateKey)
40020 if (scalar.cmp(ecparams.n) >= 0 || scalar.isZero()) throw new Error(messages.ECDH_FAIL)
40021
40022 return new Buffer(pair.pub.mul(scalar).encode(true, compressed))
40023 }
40024
40025 }).call(this,require("buffer").Buffer)
40026 },{"../messages.json":78,"bn.js":33,"buffer":5,"create-hash":36,"elliptic":39}],77:[function(require,module,exports){
40027 'use strict'
40028 var assert = require('./assert')
40029 var der = require('./der')
40030 var messages = require('./messages.json')
40031
40032 function initCompressedValue (value, defaultValue) {
40033 if (value === undefined) return defaultValue
40034
40035 assert.isBoolean(value, messages.COMPRESSED_TYPE_INVALID)
40036 return value
40037 }
40038
40039 module.exports = function (secp256k1) {
40040 return {
40041 privateKeyVerify: function (privateKey) {
40042 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40043 return privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)
40044 },
40045
40046 privateKeyExport: function (privateKey, compressed) {
40047 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40048 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40049
40050 compressed = initCompressedValue(compressed, true)
40051 var publicKey = secp256k1.privateKeyExport(privateKey, compressed)
40052
40053 return der.privateKeyExport(privateKey, publicKey, compressed)
40054 },
40055
40056 privateKeyImport: function (privateKey) {
40057 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40058
40059 privateKey = der.privateKeyImport(privateKey)
40060 if (privateKey && privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)) return privateKey
40061
40062 throw new Error(messages.EC_PRIVATE_KEY_IMPORT_DER_FAIL)
40063 },
40064
40065 privateKeyTweakAdd: function (privateKey, tweak) {
40066 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40067 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40068
40069 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
40070 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
40071
40072 return secp256k1.privateKeyTweakAdd(privateKey, tweak)
40073 },
40074
40075 privateKeyTweakMul: function (privateKey, tweak) {
40076 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40077 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40078
40079 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
40080 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
40081
40082 return secp256k1.privateKeyTweakMul(privateKey, tweak)
40083 },
40084
40085 publicKeyCreate: function (privateKey, compressed) {
40086 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40087 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40088
40089 compressed = initCompressedValue(compressed, true)
40090
40091 return secp256k1.publicKeyCreate(privateKey, compressed)
40092 },
40093
40094 publicKeyConvert: function (publicKey, compressed) {
40095 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40096 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40097
40098 compressed = initCompressedValue(compressed, true)
40099
40100 return secp256k1.publicKeyConvert(publicKey, compressed)
40101 },
40102
40103 publicKeyVerify: function (publicKey) {
40104 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40105 return secp256k1.publicKeyVerify(publicKey)
40106 },
40107
40108 publicKeyTweakAdd: function (publicKey, tweak, compressed) {
40109 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40110 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40111
40112 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
40113 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
40114
40115 compressed = initCompressedValue(compressed, true)
40116
40117 return secp256k1.publicKeyTweakAdd(publicKey, tweak, compressed)
40118 },
40119
40120 publicKeyTweakMul: function (publicKey, tweak, compressed) {
40121 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40122 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40123
40124 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
40125 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
40126
40127 compressed = initCompressedValue(compressed, true)
40128
40129 return secp256k1.publicKeyTweakMul(publicKey, tweak, compressed)
40130 },
40131
40132 publicKeyCombine: function (publicKeys, compressed) {
40133 assert.isArray(publicKeys, messages.EC_PUBLIC_KEYS_TYPE_INVALID)
40134 assert.isLengthGTZero(publicKeys, messages.EC_PUBLIC_KEYS_LENGTH_INVALID)
40135 for (var i = 0; i < publicKeys.length; ++i) {
40136 assert.isBuffer(publicKeys[i], messages.EC_PUBLIC_KEY_TYPE_INVALID)
40137 assert.isBufferLength2(publicKeys[i], 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40138 }
40139
40140 compressed = initCompressedValue(compressed, true)
40141
40142 return secp256k1.publicKeyCombine(publicKeys, compressed)
40143 },
40144
40145 signatureNormalize: function (signature) {
40146 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40147 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40148
40149 return secp256k1.signatureNormalize(signature)
40150 },
40151
40152 signatureExport: function (signature) {
40153 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40154 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40155
40156 var sigObj = secp256k1.signatureExport(signature)
40157 return der.signatureExport(sigObj)
40158 },
40159
40160 signatureImport: function (sig) {
40161 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40162 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40163
40164 var sigObj = der.signatureImport(sig)
40165 if (sigObj) return secp256k1.signatureImport(sigObj)
40166
40167 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
40168 },
40169
40170 signatureImportLax: function (sig) {
40171 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40172 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40173
40174 var sigObj = der.signatureImportLax(sig)
40175 if (sigObj) return secp256k1.signatureImport(sigObj)
40176
40177 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
40178 },
40179
40180 sign: function (message, privateKey, options) {
40181 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
40182 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
40183
40184 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40185 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40186
40187 var data = null
40188 var noncefn = null
40189 if (options !== undefined) {
40190 assert.isObject(options, messages.OPTIONS_TYPE_INVALID)
40191
40192 if (options.data !== undefined) {
40193 assert.isBuffer(options.data, messages.OPTIONS_DATA_TYPE_INVALID)
40194 assert.isBufferLength(options.data, 32, messages.OPTIONS_DATA_LENGTH_INVALID)
40195 data = options.data
40196 }
40197
40198 if (options.noncefn !== undefined) {
40199 assert.isFunction(options.noncefn, messages.OPTIONS_NONCEFN_TYPE_INVALID)
40200 noncefn = options.noncefn
40201 }
40202 }
40203
40204 return secp256k1.sign(message, privateKey, noncefn, data)
40205 },
40206
40207 verify: function (message, signature, publicKey) {
40208 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
40209 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
40210
40211 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40212 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40213
40214 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40215 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40216
40217 return secp256k1.verify(message, signature, publicKey)
40218 },
40219
40220 recover: function (message, signature, recovery, compressed) {
40221 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
40222 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
40223
40224 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40225 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40226
40227 assert.isNumber(recovery, messages.RECOVERY_ID_TYPE_INVALID)
40228 assert.isNumberInInterval(recovery, -1, 4, messages.RECOVERY_ID_VALUE_INVALID)
40229
40230 compressed = initCompressedValue(compressed, true)
40231
40232 return secp256k1.recover(message, signature, recovery, compressed)
40233 },
40234
40235 ecdh: function (publicKey, privateKey) {
40236 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40237 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40238
40239 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40240 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40241
40242 return secp256k1.ecdh(publicKey, privateKey)
40243 },
40244
40245 ecdhUnsafe: function (publicKey, privateKey, compressed) {
40246 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40247 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40248
40249 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40250 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40251
40252 compressed = initCompressedValue(compressed, true)
40253
40254 return secp256k1.ecdhUnsafe(publicKey, privateKey, compressed)
40255 }
40256 }
40257 }
40258
40259 },{"./assert":74,"./der":75,"./messages.json":78}],78:[function(require,module,exports){
40260 module.exports={
40261 "COMPRESSED_TYPE_INVALID": "compressed should be a boolean",
40262 "EC_PRIVATE_KEY_TYPE_INVALID": "private key should be a Buffer",
40263 "EC_PRIVATE_KEY_LENGTH_INVALID": "private key length is invalid",
40264 "EC_PRIVATE_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting private key is invalid",
40265 "EC_PRIVATE_KEY_TWEAK_MUL_FAIL": "tweak out of range",
40266 "EC_PRIVATE_KEY_EXPORT_DER_FAIL": "couldn't export to DER format",
40267 "EC_PRIVATE_KEY_IMPORT_DER_FAIL": "couldn't import from DER format",
40268 "EC_PUBLIC_KEYS_TYPE_INVALID": "public keys should be an Array",
40269 "EC_PUBLIC_KEYS_LENGTH_INVALID": "public keys Array should have at least 1 element",
40270 "EC_PUBLIC_KEY_TYPE_INVALID": "public key should be a Buffer",
40271 "EC_PUBLIC_KEY_LENGTH_INVALID": "public key length is invalid",
40272 "EC_PUBLIC_KEY_PARSE_FAIL": "the public key could not be parsed or is invalid",
40273 "EC_PUBLIC_KEY_CREATE_FAIL": "private was invalid, try again",
40274 "EC_PUBLIC_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting public key is invalid",
40275 "EC_PUBLIC_KEY_TWEAK_MUL_FAIL": "tweak out of range",
40276 "EC_PUBLIC_KEY_COMBINE_FAIL": "the sum of the public keys is not valid",
40277 "ECDH_FAIL": "scalar was invalid (zero or overflow)",
40278 "ECDSA_SIGNATURE_TYPE_INVALID": "signature should be a Buffer",
40279 "ECDSA_SIGNATURE_LENGTH_INVALID": "signature length is invalid",
40280 "ECDSA_SIGNATURE_PARSE_FAIL": "couldn't parse signature",
40281 "ECDSA_SIGNATURE_PARSE_DER_FAIL": "couldn't parse DER signature",
40282 "ECDSA_SIGNATURE_SERIALIZE_DER_FAIL": "couldn't serialize signature to DER format",
40283 "ECDSA_SIGN_FAIL": "nonce generation function failed or private key is invalid",
40284 "ECDSA_RECOVER_FAIL": "couldn't recover public key from signature",
40285 "MSG32_TYPE_INVALID": "message should be a Buffer",
40286 "MSG32_LENGTH_INVALID": "message length is invalid",
40287 "OPTIONS_TYPE_INVALID": "options should be an Object",
40288 "OPTIONS_DATA_TYPE_INVALID": "options.data should be a Buffer",
40289 "OPTIONS_DATA_LENGTH_INVALID": "options.data length is invalid",
40290 "OPTIONS_NONCEFN_TYPE_INVALID": "options.noncefn should be a Function",
40291 "RECOVERY_ID_TYPE_INVALID": "recovery should be a Number",
40292 "RECOVERY_ID_VALUE_INVALID": "recovery should have value between -1 and 4",
40293 "TWEAK_TYPE_INVALID": "tweak should be a Buffer",
40294 "TWEAK_LENGTH_INVALID": "tweak length is invalid"
40295 }
40296
40297 },{}],79:[function(require,module,exports){
40298 (function (Buffer){
40299 // prototype class for hash functions
40300 function Hash (blockSize, finalSize) {
40301 this._block = new Buffer(blockSize)
40302 this._finalSize = finalSize
40303 this._blockSize = blockSize
40304 this._len = 0
40305 this._s = 0
40306 }
40307
40308 Hash.prototype.update = function (data, enc) {
40309 if (typeof data === 'string') {
40310 enc = enc || 'utf8'
40311 data = new Buffer(data, enc)
40312 }
40313
40314 var l = this._len += data.length
40315 var s = this._s || 0
40316 var f = 0
40317 var buffer = this._block
40318
40319 while (s < l) {
40320 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
40321 var ch = (t - f)
40322
40323 for (var i = 0; i < ch; i++) {
40324 buffer[(s % this._blockSize) + i] = data[i + f]
40325 }
40326
40327 s += ch
40328 f += ch
40329
40330 if ((s % this._blockSize) === 0) {
40331 this._update(buffer)
40332 }
40333 }
40334 this._s = s
40335
40336 return this
40337 }
40338
40339 Hash.prototype.digest = function (enc) {
40340 // Suppose the length of the message M, in bits, is l
40341 var l = this._len * 8
40342
40343 // Append the bit 1 to the end of the message
40344 this._block[this._len % this._blockSize] = 0x80
40345
40346 // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
40347 this._block.fill(0, this._len % this._blockSize + 1)
40348
40349 if (l % (this._blockSize * 8) >= this._finalSize * 8) {
40350 this._update(this._block)
40351 this._block.fill(0)
40352 }
40353
40354 // to this append the block which is equal to the number l written in binary
40355 // TODO: handle case where l is > Math.pow(2, 29)
40356 this._block.writeInt32BE(l, this._blockSize - 4)
40357
40358 var hash = this._update(this._block) || this._hash()
40359
40360 return enc ? hash.toString(enc) : hash
40361 }
40362
40363 Hash.prototype._update = function () {
40364 throw new Error('_update must be implemented by subclass')
40365 }
40366
40367 module.exports = Hash
40368
40369 }).call(this,require("buffer").Buffer)
40370 },{"buffer":5}],80:[function(require,module,exports){
40371 var exports = module.exports = function SHA (algorithm) {
40372 algorithm = algorithm.toLowerCase()
40373
40374 var Algorithm = exports[algorithm]
40375 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
40376
40377 return new Algorithm()
40378 }
40379
40380 exports.sha = require('./sha')
40381 exports.sha1 = require('./sha1')
40382 exports.sha224 = require('./sha224')
40383 exports.sha256 = require('./sha256')
40384 exports.sha384 = require('./sha384')
40385 exports.sha512 = require('./sha512')
40386
40387 },{"./sha":81,"./sha1":82,"./sha224":83,"./sha256":84,"./sha384":85,"./sha512":86}],81:[function(require,module,exports){
40388 (function (Buffer){
40389 /*
40390 * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
40391 * in FIPS PUB 180-1
40392 * This source code is derived from sha1.js of the same repository.
40393 * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
40394 * operation was added.
40395 */
40396
40397 var inherits = require('inherits')
40398 var Hash = require('./hash')
40399
40400 var K = [
40401 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
40402 ]
40403
40404 var W = new Array(80)
40405
40406 function Sha () {
40407 this.init()
40408 this._w = W
40409
40410 Hash.call(this, 64, 56)
40411 }
40412
40413 inherits(Sha, Hash)
40414
40415 Sha.prototype.init = function () {
40416 this._a = 0x67452301
40417 this._b = 0xefcdab89
40418 this._c = 0x98badcfe
40419 this._d = 0x10325476
40420 this._e = 0xc3d2e1f0
40421
40422 return this
40423 }
40424
40425 function rotl5 (num) {
40426 return (num << 5) | (num >>> 27)
40427 }
40428
40429 function rotl30 (num) {
40430 return (num << 30) | (num >>> 2)
40431 }
40432
40433 function ft (s, b, c, d) {
40434 if (s === 0) return (b & c) | ((~b) & d)
40435 if (s === 2) return (b & c) | (b & d) | (c & d)
40436 return b ^ c ^ d
40437 }
40438
40439 Sha.prototype._update = function (M) {
40440 var W = this._w
40441
40442 var a = this._a | 0
40443 var b = this._b | 0
40444 var c = this._c | 0
40445 var d = this._d | 0
40446 var e = this._e | 0
40447
40448 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
40449 for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]
40450
40451 for (var j = 0; j < 80; ++j) {
40452 var s = ~~(j / 20)
40453 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
40454
40455 e = d
40456 d = c
40457 c = rotl30(b)
40458 b = a
40459 a = t
40460 }
40461
40462 this._a = (a + this._a) | 0
40463 this._b = (b + this._b) | 0
40464 this._c = (c + this._c) | 0
40465 this._d = (d + this._d) | 0
40466 this._e = (e + this._e) | 0
40467 }
40468
40469 Sha.prototype._hash = function () {
40470 var H = new Buffer(20)
40471
40472 H.writeInt32BE(this._a | 0, 0)
40473 H.writeInt32BE(this._b | 0, 4)
40474 H.writeInt32BE(this._c | 0, 8)
40475 H.writeInt32BE(this._d | 0, 12)
40476 H.writeInt32BE(this._e | 0, 16)
40477
40478 return H
40479 }
40480
40481 module.exports = Sha
40482
40483 }).call(this,require("buffer").Buffer)
40484 },{"./hash":79,"buffer":5,"inherits":63}],82:[function(require,module,exports){
40485 (function (Buffer){
40486 /*
40487 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
40488 * in FIPS PUB 180-1
40489 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
40490 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
40491 * Distributed under the BSD License
40492 * See http://pajhome.org.uk/crypt/md5 for details.
40493 */
40494
40495 var inherits = require('inherits')
40496 var Hash = require('./hash')
40497
40498 var K = [
40499 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
40500 ]
40501
40502 var W = new Array(80)
40503
40504 function Sha1 () {
40505 this.init()
40506 this._w = W
40507
40508 Hash.call(this, 64, 56)
40509 }
40510
40511 inherits(Sha1, Hash)
40512
40513 Sha1.prototype.init = function () {
40514 this._a = 0x67452301
40515 this._b = 0xefcdab89
40516 this._c = 0x98badcfe
40517 this._d = 0x10325476
40518 this._e = 0xc3d2e1f0
40519
40520 return this
40521 }
40522
40523 function rotl1 (num) {
40524 return (num << 1) | (num >>> 31)
40525 }
40526
40527 function rotl5 (num) {
40528 return (num << 5) | (num >>> 27)
40529 }
40530
40531 function rotl30 (num) {
40532 return (num << 30) | (num >>> 2)
40533 }
40534
40535 function ft (s, b, c, d) {
40536 if (s === 0) return (b & c) | ((~b) & d)
40537 if (s === 2) return (b & c) | (b & d) | (c & d)
40538 return b ^ c ^ d
40539 }
40540
40541 Sha1.prototype._update = function (M) {
40542 var W = this._w
40543
40544 var a = this._a | 0
40545 var b = this._b | 0
40546 var c = this._c | 0
40547 var d = this._d | 0
40548 var e = this._e | 0
40549
40550 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
40551 for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])
40552
40553 for (var j = 0; j < 80; ++j) {
40554 var s = ~~(j / 20)
40555 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
40556
40557 e = d
40558 d = c
40559 c = rotl30(b)
40560 b = a
40561 a = t
40562 }
40563
40564 this._a = (a + this._a) | 0
40565 this._b = (b + this._b) | 0
40566 this._c = (c + this._c) | 0
40567 this._d = (d + this._d) | 0
40568 this._e = (e + this._e) | 0
40569 }
40570
40571 Sha1.prototype._hash = function () {
40572 var H = new Buffer(20)
40573
40574 H.writeInt32BE(this._a | 0, 0)
40575 H.writeInt32BE(this._b | 0, 4)
40576 H.writeInt32BE(this._c | 0, 8)
40577 H.writeInt32BE(this._d | 0, 12)
40578 H.writeInt32BE(this._e | 0, 16)
40579
40580 return H
40581 }
40582
40583 module.exports = Sha1
40584
40585 }).call(this,require("buffer").Buffer)
40586 },{"./hash":79,"buffer":5,"inherits":63}],83:[function(require,module,exports){
40587 (function (Buffer){
40588 /**
40589 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
40590 * in FIPS 180-2
40591 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
40592 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
40593 *
40594 */
40595
40596 var inherits = require('inherits')
40597 var Sha256 = require('./sha256')
40598 var Hash = require('./hash')
40599
40600 var W = new Array(64)
40601
40602 function Sha224 () {
40603 this.init()
40604
40605 this._w = W // new Array(64)
40606
40607 Hash.call(this, 64, 56)
40608 }
40609
40610 inherits(Sha224, Sha256)
40611
40612 Sha224.prototype.init = function () {
40613 this._a = 0xc1059ed8
40614 this._b = 0x367cd507
40615 this._c = 0x3070dd17
40616 this._d = 0xf70e5939
40617 this._e = 0xffc00b31
40618 this._f = 0x68581511
40619 this._g = 0x64f98fa7
40620 this._h = 0xbefa4fa4
40621
40622 return this
40623 }
40624
40625 Sha224.prototype._hash = function () {
40626 var H = new Buffer(28)
40627
40628 H.writeInt32BE(this._a, 0)
40629 H.writeInt32BE(this._b, 4)
40630 H.writeInt32BE(this._c, 8)
40631 H.writeInt32BE(this._d, 12)
40632 H.writeInt32BE(this._e, 16)
40633 H.writeInt32BE(this._f, 20)
40634 H.writeInt32BE(this._g, 24)
40635
40636 return H
40637 }
40638
40639 module.exports = Sha224
40640
40641 }).call(this,require("buffer").Buffer)
40642 },{"./hash":79,"./sha256":84,"buffer":5,"inherits":63}],84:[function(require,module,exports){
40643 (function (Buffer){
40644 /**
40645 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
40646 * in FIPS 180-2
40647 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
40648 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
40649 *
40650 */
40651
40652 var inherits = require('inherits')
40653 var Hash = require('./hash')
40654
40655 var K = [
40656 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
40657 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
40658 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
40659 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
40660 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
40661 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
40662 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
40663 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
40664 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
40665 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
40666 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
40667 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
40668 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
40669 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
40670 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
40671 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
40672 ]
40673
40674 var W = new Array(64)
40675
40676 function Sha256 () {
40677 this.init()
40678
40679 this._w = W // new Array(64)
40680
40681 Hash.call(this, 64, 56)
40682 }
40683
40684 inherits(Sha256, Hash)
40685
40686 Sha256.prototype.init = function () {
40687 this._a = 0x6a09e667
40688 this._b = 0xbb67ae85
40689 this._c = 0x3c6ef372
40690 this._d = 0xa54ff53a
40691 this._e = 0x510e527f
40692 this._f = 0x9b05688c
40693 this._g = 0x1f83d9ab
40694 this._h = 0x5be0cd19
40695
40696 return this
40697 }
40698
40699 function ch (x, y, z) {
40700 return z ^ (x & (y ^ z))
40701 }
40702
40703 function maj (x, y, z) {
40704 return (x & y) | (z & (x | y))
40705 }
40706
40707 function sigma0 (x) {
40708 return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)
40709 }
40710
40711 function sigma1 (x) {
40712 return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)
40713 }
40714
40715 function gamma0 (x) {
40716 return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)
40717 }
40718
40719 function gamma1 (x) {
40720 return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)
40721 }
40722
40723 Sha256.prototype._update = function (M) {
40724 var W = this._w
40725
40726 var a = this._a | 0
40727 var b = this._b | 0
40728 var c = this._c | 0
40729 var d = this._d | 0
40730 var e = this._e | 0
40731 var f = this._f | 0
40732 var g = this._g | 0
40733 var h = this._h | 0
40734
40735 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
40736 for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0
40737
40738 for (var j = 0; j < 64; ++j) {
40739 var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0
40740 var T2 = (sigma0(a) + maj(a, b, c)) | 0
40741
40742 h = g
40743 g = f
40744 f = e
40745 e = (d + T1) | 0
40746 d = c
40747 c = b
40748 b = a
40749 a = (T1 + T2) | 0
40750 }
40751
40752 this._a = (a + this._a) | 0
40753 this._b = (b + this._b) | 0
40754 this._c = (c + this._c) | 0
40755 this._d = (d + this._d) | 0
40756 this._e = (e + this._e) | 0
40757 this._f = (f + this._f) | 0
40758 this._g = (g + this._g) | 0
40759 this._h = (h + this._h) | 0
40760 }
40761
40762 Sha256.prototype._hash = function () {
40763 var H = new Buffer(32)
40764
40765 H.writeInt32BE(this._a, 0)
40766 H.writeInt32BE(this._b, 4)
40767 H.writeInt32BE(this._c, 8)
40768 H.writeInt32BE(this._d, 12)
40769 H.writeInt32BE(this._e, 16)
40770 H.writeInt32BE(this._f, 20)
40771 H.writeInt32BE(this._g, 24)
40772 H.writeInt32BE(this._h, 28)
40773
40774 return H
40775 }
40776
40777 module.exports = Sha256
40778
40779 }).call(this,require("buffer").Buffer)
40780 },{"./hash":79,"buffer":5,"inherits":63}],85:[function(require,module,exports){
40781 (function (Buffer){
40782 var inherits = require('inherits')
40783 var SHA512 = require('./sha512')
40784 var Hash = require('./hash')
40785
40786 var W = new Array(160)
40787
40788 function Sha384 () {
40789 this.init()
40790 this._w = W
40791
40792 Hash.call(this, 128, 112)
40793 }
40794
40795 inherits(Sha384, SHA512)
40796
40797 Sha384.prototype.init = function () {
40798 this._ah = 0xcbbb9d5d
40799 this._bh = 0x629a292a
40800 this._ch = 0x9159015a
40801 this._dh = 0x152fecd8
40802 this._eh = 0x67332667
40803 this._fh = 0x8eb44a87
40804 this._gh = 0xdb0c2e0d
40805 this._hh = 0x47b5481d
40806
40807 this._al = 0xc1059ed8
40808 this._bl = 0x367cd507
40809 this._cl = 0x3070dd17
40810 this._dl = 0xf70e5939
40811 this._el = 0xffc00b31
40812 this._fl = 0x68581511
40813 this._gl = 0x64f98fa7
40814 this._hl = 0xbefa4fa4
40815
40816 return this
40817 }
40818
40819 Sha384.prototype._hash = function () {
40820 var H = new Buffer(48)
40821
40822 function writeInt64BE (h, l, offset) {
40823 H.writeInt32BE(h, offset)
40824 H.writeInt32BE(l, offset + 4)
40825 }
40826
40827 writeInt64BE(this._ah, this._al, 0)
40828 writeInt64BE(this._bh, this._bl, 8)
40829 writeInt64BE(this._ch, this._cl, 16)
40830 writeInt64BE(this._dh, this._dl, 24)
40831 writeInt64BE(this._eh, this._el, 32)
40832 writeInt64BE(this._fh, this._fl, 40)
40833
40834 return H
40835 }
40836
40837 module.exports = Sha384
40838
40839 }).call(this,require("buffer").Buffer)
40840 },{"./hash":79,"./sha512":86,"buffer":5,"inherits":63}],86:[function(require,module,exports){
40841 (function (Buffer){
40842 var inherits = require('inherits')
40843 var Hash = require('./hash')
40844
40845 var K = [
40846 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
40847 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
40848 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
40849 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
40850 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
40851 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
40852 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
40853 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
40854 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
40855 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
40856 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
40857 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
40858 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
40859 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
40860 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
40861 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
40862 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
40863 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
40864 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
40865 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
40866 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
40867 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
40868 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
40869 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
40870 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
40871 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
40872 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
40873 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
40874 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
40875 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
40876 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
40877 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
40878 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
40879 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
40880 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
40881 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
40882 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
40883 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
40884 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
40885 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
40886 ]
40887
40888 var W = new Array(160)
40889
40890 function Sha512 () {
40891 this.init()
40892 this._w = W
40893
40894 Hash.call(this, 128, 112)
40895 }
40896
40897 inherits(Sha512, Hash)
40898
40899 Sha512.prototype.init = function () {
40900 this._ah = 0x6a09e667
40901 this._bh = 0xbb67ae85
40902 this._ch = 0x3c6ef372
40903 this._dh = 0xa54ff53a
40904 this._eh = 0x510e527f
40905 this._fh = 0x9b05688c
40906 this._gh = 0x1f83d9ab
40907 this._hh = 0x5be0cd19
40908
40909 this._al = 0xf3bcc908
40910 this._bl = 0x84caa73b
40911 this._cl = 0xfe94f82b
40912 this._dl = 0x5f1d36f1
40913 this._el = 0xade682d1
40914 this._fl = 0x2b3e6c1f
40915 this._gl = 0xfb41bd6b
40916 this._hl = 0x137e2179
40917
40918 return this
40919 }
40920
40921 function Ch (x, y, z) {
40922 return z ^ (x & (y ^ z))
40923 }
40924
40925 function maj (x, y, z) {
40926 return (x & y) | (z & (x | y))
40927 }
40928
40929 function sigma0 (x, xl) {
40930 return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)
40931 }
40932
40933 function sigma1 (x, xl) {
40934 return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)
40935 }
40936
40937 function Gamma0 (x, xl) {
40938 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)
40939 }
40940
40941 function Gamma0l (x, xl) {
40942 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)
40943 }
40944
40945 function Gamma1 (x, xl) {
40946 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)
40947 }
40948
40949 function Gamma1l (x, xl) {
40950 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)
40951 }
40952
40953 function getCarry (a, b) {
40954 return (a >>> 0) < (b >>> 0) ? 1 : 0
40955 }
40956
40957 Sha512.prototype._update = function (M) {
40958 var W = this._w
40959
40960 var ah = this._ah | 0
40961 var bh = this._bh | 0
40962 var ch = this._ch | 0
40963 var dh = this._dh | 0
40964 var eh = this._eh | 0
40965 var fh = this._fh | 0
40966 var gh = this._gh | 0
40967 var hh = this._hh | 0
40968
40969 var al = this._al | 0
40970 var bl = this._bl | 0
40971 var cl = this._cl | 0
40972 var dl = this._dl | 0
40973 var el = this._el | 0
40974 var fl = this._fl | 0
40975 var gl = this._gl | 0
40976 var hl = this._hl | 0
40977
40978 for (var i = 0; i < 32; i += 2) {
40979 W[i] = M.readInt32BE(i * 4)
40980 W[i + 1] = M.readInt32BE(i * 4 + 4)
40981 }
40982 for (; i < 160; i += 2) {
40983 var xh = W[i - 15 * 2]
40984 var xl = W[i - 15 * 2 + 1]
40985 var gamma0 = Gamma0(xh, xl)
40986 var gamma0l = Gamma0l(xl, xh)
40987
40988 xh = W[i - 2 * 2]
40989 xl = W[i - 2 * 2 + 1]
40990 var gamma1 = Gamma1(xh, xl)
40991 var gamma1l = Gamma1l(xl, xh)
40992
40993 // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
40994 var Wi7h = W[i - 7 * 2]
40995 var Wi7l = W[i - 7 * 2 + 1]
40996
40997 var Wi16h = W[i - 16 * 2]
40998 var Wi16l = W[i - 16 * 2 + 1]
40999
41000 var Wil = (gamma0l + Wi7l) | 0
41001 var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0
41002 Wil = (Wil + gamma1l) | 0
41003 Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0
41004 Wil = (Wil + Wi16l) | 0
41005 Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0
41006
41007 W[i] = Wih
41008 W[i + 1] = Wil
41009 }
41010
41011 for (var j = 0; j < 160; j += 2) {
41012 Wih = W[j]
41013 Wil = W[j + 1]
41014
41015 var majh = maj(ah, bh, ch)
41016 var majl = maj(al, bl, cl)
41017
41018 var sigma0h = sigma0(ah, al)
41019 var sigma0l = sigma0(al, ah)
41020 var sigma1h = sigma1(eh, el)
41021 var sigma1l = sigma1(el, eh)
41022
41023 // t1 = h + sigma1 + ch + K[j] + W[j]
41024 var Kih = K[j]
41025 var Kil = K[j + 1]
41026
41027 var chh = Ch(eh, fh, gh)
41028 var chl = Ch(el, fl, gl)
41029
41030 var t1l = (hl + sigma1l) | 0
41031 var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0
41032 t1l = (t1l + chl) | 0
41033 t1h = (t1h + chh + getCarry(t1l, chl)) | 0
41034 t1l = (t1l + Kil) | 0
41035 t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0
41036 t1l = (t1l + Wil) | 0
41037 t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0
41038
41039 // t2 = sigma0 + maj
41040 var t2l = (sigma0l + majl) | 0
41041 var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0
41042
41043 hh = gh
41044 hl = gl
41045 gh = fh
41046 gl = fl
41047 fh = eh
41048 fl = el
41049 el = (dl + t1l) | 0
41050 eh = (dh + t1h + getCarry(el, dl)) | 0
41051 dh = ch
41052 dl = cl
41053 ch = bh
41054 cl = bl
41055 bh = ah
41056 bl = al
41057 al = (t1l + t2l) | 0
41058 ah = (t1h + t2h + getCarry(al, t1l)) | 0
41059 }
41060
41061 this._al = (this._al + al) | 0
41062 this._bl = (this._bl + bl) | 0
41063 this._cl = (this._cl + cl) | 0
41064 this._dl = (this._dl + dl) | 0
41065 this._el = (this._el + el) | 0
41066 this._fl = (this._fl + fl) | 0
41067 this._gl = (this._gl + gl) | 0
41068 this._hl = (this._hl + hl) | 0
41069
41070 this._ah = (this._ah + ah + getCarry(this._al, al)) | 0
41071 this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0
41072 this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0
41073 this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0
41074 this._eh = (this._eh + eh + getCarry(this._el, el)) | 0
41075 this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0
41076 this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0
41077 this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0
41078 }
41079
41080 Sha512.prototype._hash = function () {
41081 var H = new Buffer(64)
41082
41083 function writeInt64BE (h, l, offset) {
41084 H.writeInt32BE(h, offset)
41085 H.writeInt32BE(l, offset + 4)
41086 }
41087
41088 writeInt64BE(this._ah, this._al, 0)
41089 writeInt64BE(this._bh, this._bl, 8)
41090 writeInt64BE(this._ch, this._cl, 16)
41091 writeInt64BE(this._dh, this._dl, 24)
41092 writeInt64BE(this._eh, this._el, 32)
41093 writeInt64BE(this._fh, this._fl, 40)
41094 writeInt64BE(this._gh, this._gl, 48)
41095 writeInt64BE(this._hh, this._hl, 56)
41096
41097 return H
41098 }
41099
41100 module.exports = Sha512
41101
41102 }).call(this,require("buffer").Buffer)
41103 },{"./hash":79,"buffer":5,"inherits":63}],87:[function(require,module,exports){
41104 var isHexPrefixed = require('is-hex-prefixed');
41105
41106 /**
41107 * Removes '0x' from a given `String` is present
41108 * @param {String} str the string value
41109 * @return {String|Optional} a string by pass if necessary
41110 */
41111 module.exports = function stripHexPrefix(str) {
41112 if (typeof str !== 'string') {
41113 return str;
41114 }
41115
41116 return isHexPrefixed(str) ? str.slice(2) : str;
41117 }
41118
41119 },{"is-hex-prefixed":64}]},{},[31])(31)
41120 });</script>
41121 <script>function convertRippleAdrr(address) {
41122 return window.basex('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz').encode(
41123 window.basex('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz').decode(address)
41124 )
41125 }
41126
41127 function convertRipplePriv(priv) {
41128 return window.basex('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz').decode(priv).toString("hex").slice(2,66)
41129 }
41130
41131 </script>
41132 <script>// Select components from sjcl to suit the crypto operations bip39 requires.
41133
41134 //// base.js
41135
41136 /** @fileOverview Javascript cryptography implementation.
41137 *
41138 * Crush to remove comments, shorten variable names and
41139 * generally reduce transmission size.
41140 *
41141 * @author Emily Stark
41142 * @author Mike Hamburg
41143 * @author Dan Boneh
41144 */
41145
41146 "use strict";
41147 /*jslint indent: 2, bitwise: false, nomen: false, plusplus: false, white: false, regexp: false */
41148 /*global document, window, escape, unescape, module, require, Uint32Array */
41149
41150 /** @namespace The Stanford Javascript Crypto Library, top-level namespace. */
41151 var sjcl = {
41152 /** @namespace Symmetric ciphers. */
41153 cipher: {},
41154
41155 /** @namespace Hash functions. Right now only SHA256 is implemented. */
41156 hash: {},
41157
41158 /** @namespace Key exchange functions. Right now only SRP is implemented. */
41159 keyexchange: {},
41160
41161 /** @namespace Block cipher modes of operation. */
41162 mode: {},
41163
41164 /** @namespace Miscellaneous. HMAC and PBKDF2. */
41165 misc: {},
41166
41167 /**
41168 * @namespace Bit array encoders and decoders.
41169 *
41170 * @description
41171 * The members of this namespace are functions which translate between
41172 * SJCL's bitArrays and other objects (usually strings). Because it
41173 * isn't always clear which direction is encoding and which is decoding,
41174 * the method names are "fromBits" and "toBits".
41175 */
41176 codec: {},
41177
41178 /** @namespace Exceptions. */
41179 exception: {
41180 /** @constructor Ciphertext is corrupt. */
41181 corrupt: function(message) {
41182 this.toString = function() { return "CORRUPT: "+this.message; };
41183 this.message = message;
41184 },
41185
41186 /** @constructor Invalid parameter. */
41187 invalid: function(message) {
41188 this.toString = function() { return "INVALID: "+this.message; };
41189 this.message = message;
41190 },
41191
41192 /** @constructor Bug or missing feature in SJCL. @constructor */
41193 bug: function(message) {
41194 this.toString = function() { return "BUG: "+this.message; };
41195 this.message = message;
41196 },
41197
41198 /** @constructor Something isn't ready. */
41199 notReady: function(message) {
41200 this.toString = function() { return "NOT READY: "+this.message; };
41201 this.message = message;
41202 }
41203 }
41204 };
41205
41206 if(typeof module !== 'undefined' && module.exports){
41207 module.exports = sjcl;
41208 }
41209 if (typeof define === "function") {
41210 define([], function () {
41211 return sjcl;
41212 });
41213 }
41214
41215
41216 //// bitArray.js
41217
41218 /** @fileOverview Arrays of bits, encoded as arrays of Numbers.
41219 *
41220 * @author Emily Stark
41221 * @author Mike Hamburg
41222 * @author Dan Boneh
41223 */
41224
41225 /** @namespace Arrays of bits, encoded as arrays of Numbers.
41226 *
41227 * @description
41228 * <p>
41229 * These objects are the currency accepted by SJCL's crypto functions.
41230 * </p>
41231 *
41232 * <p>
41233 * Most of our crypto primitives operate on arrays of 4-byte words internally,
41234 * but many of them can take arguments that are not a multiple of 4 bytes.
41235 * This library encodes arrays of bits (whose size need not be a multiple of 8
41236 * bits) as arrays of 32-bit words. The bits are packed, big-endian, into an
41237 * array of words, 32 bits at a time. Since the words are double-precision
41238 * floating point numbers, they fit some extra data. We use this (in a private,
41239 * possibly-changing manner) to encode the number of bits actually present
41240 * in the last word of the array.
41241 * </p>
41242 *
41243 * <p>
41244 * Because bitwise ops clear this out-of-band data, these arrays can be passed
41245 * to ciphers like AES which want arrays of words.
41246 * </p>
41247 */
41248 sjcl.bitArray = {
41249 /**
41250 * Array slices in units of bits.
41251 * @param {bitArray} a The array to slice.
41252 * @param {Number} bstart The offset to the start of the slice, in bits.
41253 * @param {Number} bend The offset to the end of the slice, in bits. If this is undefined,
41254 * slice until the end of the array.
41255 * @return {bitArray} The requested slice.
41256 */
41257 bitSlice: function (a, bstart, bend) {
41258 a = sjcl.bitArray._shiftRight(a.slice(bstart/32), 32 - (bstart & 31)).slice(1);
41259 return (bend === undefined) ? a : sjcl.bitArray.clamp(a, bend-bstart);
41260 },
41261
41262 /**
41263 * Extract a number packed into a bit array.
41264 * @param {bitArray} a The array to slice.
41265 * @param {Number} bstart The offset to the start of the slice, in bits.
41266 * @param {Number} length The length of the number to extract.
41267 * @return {Number} The requested slice.
41268 */
41269 extract: function(a, bstart, blength) {
41270 // FIXME: this Math.floor is not necessary at all, but for some reason
41271 // seems to suppress a bug in the Chromium JIT.
41272 var x, sh = Math.floor((-bstart-blength) & 31);
41273 if ((bstart + blength - 1 ^ bstart) & -32) {
41274 // it crosses a boundary
41275 x = (a[bstart/32|0] << (32 - sh)) ^ (a[bstart/32+1|0] >>> sh);
41276 } else {
41277 // within a single word
41278 x = a[bstart/32|0] >>> sh;
41279 }
41280 return x & ((1<<blength) - 1);
41281 },
41282
41283 /**
41284 * Concatenate two bit arrays.
41285 * @param {bitArray} a1 The first array.
41286 * @param {bitArray} a2 The second array.
41287 * @return {bitArray} The concatenation of a1 and a2.
41288 */
41289 concat: function (a1, a2) {
41290 if (a1.length === 0 || a2.length === 0) {
41291 return a1.concat(a2);
41292 }
41293
41294 var last = a1[a1.length-1], shift = sjcl.bitArray.getPartial(last);
41295 if (shift === 32) {
41296 return a1.concat(a2);
41297 } else {
41298 return sjcl.bitArray._shiftRight(a2, shift, last|0, a1.slice(0,a1.length-1));
41299 }
41300 },
41301
41302 /**
41303 * Find the length of an array of bits.
41304 * @param {bitArray} a The array.
41305 * @return {Number} The length of a, in bits.
41306 */
41307 bitLength: function (a) {
41308 var l = a.length, x;
41309 if (l === 0) { return 0; }
41310 x = a[l - 1];
41311 return (l-1) * 32 + sjcl.bitArray.getPartial(x);
41312 },
41313
41314 /**
41315 * Truncate an array.
41316 * @param {bitArray} a The array.
41317 * @param {Number} len The length to truncate to, in bits.
41318 * @return {bitArray} A new array, truncated to len bits.
41319 */
41320 clamp: function (a, len) {
41321 if (a.length * 32 < len) { return a; }
41322 a = a.slice(0, Math.ceil(len / 32));
41323 var l = a.length;
41324 len = len & 31;
41325 if (l > 0 && len) {
41326 a[l-1] = sjcl.bitArray.partial(len, a[l-1] & 0x80000000 >> (len-1), 1);
41327 }
41328 return a;
41329 },
41330
41331 /**
41332 * Make a partial word for a bit array.
41333 * @param {Number} len The number of bits in the word.
41334 * @param {Number} x The bits.
41335 * @param {Number} [0] _end Pass 1 if x has already been shifted to the high side.
41336 * @return {Number} The partial word.
41337 */
41338 partial: function (len, x, _end) {
41339 if (len === 32) { return x; }
41340 return (_end ? x|0 : x << (32-len)) + len * 0x10000000000;
41341 },
41342
41343 /**
41344 * Get the number of bits used by a partial word.
41345 * @param {Number} x The partial word.
41346 * @return {Number} The number of bits used by the partial word.
41347 */
41348 getPartial: function (x) {
41349 return Math.round(x/0x10000000000) || 32;
41350 },
41351
41352 /**
41353 * Compare two arrays for equality in a predictable amount of time.
41354 * @param {bitArray} a The first array.
41355 * @param {bitArray} b The second array.
41356 * @return {boolean} true if a == b; false otherwise.
41357 */
41358 equal: function (a, b) {
41359 if (sjcl.bitArray.bitLength(a) !== sjcl.bitArray.bitLength(b)) {
41360 return false;
41361 }
41362 var x = 0, i;
41363 for (i=0; i<a.length; i++) {
41364 x |= a[i]^b[i];
41365 }
41366 return (x === 0);
41367 },
41368
41369 /** Shift an array right.
41370 * @param {bitArray} a The array to shift.
41371 * @param {Number} shift The number of bits to shift.
41372 * @param {Number} [carry=0] A byte to carry in
41373 * @param {bitArray} [out=[]] An array to prepend to the output.
41374 * @private
41375 */
41376 _shiftRight: function (a, shift, carry, out) {
41377 var i, last2=0, shift2;
41378 if (out === undefined) { out = []; }
41379
41380 for (; shift >= 32; shift -= 32) {
41381 out.push(carry);
41382 carry = 0;
41383 }
41384 if (shift === 0) {
41385 return out.concat(a);
41386 }
41387
41388 for (i=0; i<a.length; i++) {
41389 out.push(carry | a[i]>>>shift);
41390 carry = a[i] << (32-shift);
41391 }
41392 last2 = a.length ? a[a.length-1] : 0;
41393 shift2 = sjcl.bitArray.getPartial(last2);
41394 out.push(sjcl.bitArray.partial(shift+shift2 & 31, (shift + shift2 > 32) ? carry : out.pop(),1));
41395 return out;
41396 },
41397
41398 /** xor a block of 4 words together.
41399 * @private
41400 */
41401 _xor4: function(x,y) {
41402 return [x[0]^y[0],x[1]^y[1],x[2]^y[2],x[3]^y[3]];
41403 },
41404
41405 /** byteswap a word array inplace.
41406 * (does not handle partial words)
41407 * @param {sjcl.bitArray} a word array
41408 * @return {sjcl.bitArray} byteswapped array
41409 */
41410 byteswapM: function(a) {
41411 var i, v, m = 0xff00;
41412 for (i = 0; i < a.length; ++i) {
41413 v = a[i];
41414 a[i] = (v >>> 24) | ((v >>> 8) & m) | ((v & m) << 8) | (v << 24);
41415 }
41416 return a;
41417 }
41418 };
41419
41420
41421 //// codecString.js
41422
41423 /** @fileOverview Bit array codec implementations.
41424 *
41425 * @author Emily Stark
41426 * @author Mike Hamburg
41427 * @author Dan Boneh
41428 */
41429
41430 /** @namespace UTF-8 strings */
41431 sjcl.codec.utf8String = {
41432 /** Convert from a bitArray to a UTF-8 string. */
41433 fromBits: function (arr) {
41434 var out = "", bl = sjcl.bitArray.bitLength(arr), i, tmp;
41435 for (i=0; i<bl/8; i++) {
41436 if ((i&3) === 0) {
41437 tmp = arr[i/4];
41438 }
41439 out += String.fromCharCode(tmp >>> 24);
41440 tmp <<= 8;
41441 }
41442 return decodeURIComponent(escape(out));
41443 },
41444
41445 /** Convert from a UTF-8 string to a bitArray. */
41446 toBits: function (str) {
41447 str = unescape(encodeURIComponent(str));
41448 var out = [], i, tmp=0;
41449 for (i=0; i<str.length; i++) {
41450 tmp = tmp << 8 | str.charCodeAt(i);
41451 if ((i&3) === 3) {
41452 out.push(tmp);
41453 tmp = 0;
41454 }
41455 }
41456 if (i&3) {
41457 out.push(sjcl.bitArray.partial(8*(i&3), tmp));
41458 }
41459 return out;
41460 }
41461 };
41462
41463
41464 //// codecHex.js
41465
41466 /** @fileOverview Bit array codec implementations.
41467 *
41468 * @author Emily Stark
41469 * @author Mike Hamburg
41470 * @author Dan Boneh
41471 */
41472
41473 /** @namespace Hexadecimal */
41474 sjcl.codec.hex = {
41475 /** Convert from a bitArray to a hex string. */
41476 fromBits: function (arr) {
41477 var out = "", i;
41478 for (i=0; i<arr.length; i++) {
41479 out += ((arr[i]|0)+0xF00000000000).toString(16).substr(4);
41480 }
41481 return out.substr(0, sjcl.bitArray.bitLength(arr)/4);//.replace(/(.{8})/g, "$1 ");
41482 },
41483 /** Convert from a hex string to a bitArray. */
41484 toBits: function (str) {
41485 var i, out=[], len;
41486 str = str.replace(/\s|0x/g, "");
41487 len = str.length;
41488 str = str + "00000000";
41489 for (i=0; i<str.length; i+=8) {
41490 out.push(parseInt(str.substr(i,8),16)^0);
41491 }
41492 return sjcl.bitArray.clamp(out, len*4);
41493 }
41494 };
41495
41496
41497 //// sha512.js
41498
41499 /** @fileOverview Javascript SHA-512 implementation.
41500 *
41501 * This implementation was written for CryptoJS by Jeff Mott and adapted for
41502 * SJCL by Stefan Thomas.
41503 *
41504 * CryptoJS (c) 20092012 by Jeff Mott. All rights reserved.
41505 * Released with New BSD License
41506 *
41507 * @author Emily Stark
41508 * @author Mike Hamburg
41509 * @author Dan Boneh
41510 * @author Jeff Mott
41511 * @author Stefan Thomas
41512 */
41513
41514 /**
41515 * Context for a SHA-512 operation in progress.
41516 * @constructor
41517 * @class Secure Hash Algorithm, 512 bits.
41518 */
41519 sjcl.hash.sha512 = function (hash) {
41520 if (!this._key[0]) { this._precompute(); }
41521 if (hash) {
41522 this._h = hash._h.slice(0);
41523 this._buffer = hash._buffer.slice(0);
41524 this._length = hash._length;
41525 } else {
41526 this.reset();
41527 }
41528 };
41529
41530 /**
41531 * Hash a string or an array of words.
41532 * @static
41533 * @param {bitArray|String} data the data to hash.
41534 * @return {bitArray} The hash value, an array of 16 big-endian words.
41535 */
41536 sjcl.hash.sha512.hash = function (data) {
41537 return (new sjcl.hash.sha512()).update(data).finalize();
41538 };
41539
41540 sjcl.hash.sha512.prototype = {
41541 /**
41542 * The hash's block size, in bits.
41543 * @constant
41544 */
41545 blockSize: 1024,
41546
41547 /**
41548 * Reset the hash state.
41549 * @return this
41550 */
41551 reset:function () {
41552 this._h = this._init.slice(0);
41553 this._buffer = [];
41554 this._length = 0;
41555 return this;
41556 },
41557
41558 /**
41559 * Input several words to the hash.
41560 * @param {bitArray|String} data the data to hash.
41561 * @return this
41562 */
41563 update: function (data) {
41564 if (typeof data === "string") {
41565 data = sjcl.codec.utf8String.toBits(data);
41566 }
41567 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
41568 ol = this._length,
41569 nl = this._length = ol + sjcl.bitArray.bitLength(data);
41570 for (i = 1024+ol & -1024; i <= nl; i+= 1024) {
41571 this._block(b.splice(0,32));
41572 }
41573 return this;
41574 },
41575
41576 /**
41577 * Complete hashing and output the hash value.
41578 * @return {bitArray} The hash value, an array of 16 big-endian words.
41579 */
41580 finalize:function () {
41581 var i, b = this._buffer, h = this._h;
41582
41583 // Round out and push the buffer
41584 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
41585
41586 // Round out the buffer to a multiple of 32 words, less the 4 length words.
41587 for (i = b.length + 4; i & 31; i++) {
41588 b.push(0);
41589 }
41590
41591 // append the length
41592 b.push(0);
41593 b.push(0);
41594 b.push(Math.floor(this._length / 0x100000000));
41595 b.push(this._length | 0);
41596
41597 while (b.length) {
41598 this._block(b.splice(0,32));
41599 }
41600
41601 this.reset();
41602 return h;
41603 },
41604
41605 /**
41606 * The SHA-512 initialization vector, to be precomputed.
41607 * @private
41608 */
41609 _init:[],
41610
41611 /**
41612 * Least significant 24 bits of SHA512 initialization values.
41613 *
41614 * Javascript only has 53 bits of precision, so we compute the 40 most
41615 * significant bits and add the remaining 24 bits as constants.
41616 *
41617 * @private
41618 */
41619 _initr: [ 0xbcc908, 0xcaa73b, 0x94f82b, 0x1d36f1, 0xe682d1, 0x3e6c1f, 0x41bd6b, 0x7e2179 ],
41620
41621 /*
41622 _init:
41623 [0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,
41624 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179],
41625 */
41626
41627 /**
41628 * The SHA-512 hash key, to be precomputed.
41629 * @private
41630 */
41631 _key:[],
41632
41633 /**
41634 * Least significant 24 bits of SHA512 key values.
41635 * @private
41636 */
41637 _keyr:
41638 [0x28ae22, 0xef65cd, 0x4d3b2f, 0x89dbbc, 0x48b538, 0x05d019, 0x194f9b, 0x6d8118,
41639 0x030242, 0x706fbe, 0xe4b28c, 0xffb4e2, 0x7b896f, 0x1696b1, 0xc71235, 0x692694,
41640 0xf14ad2, 0x4f25e3, 0x8cd5b5, 0xac9c65, 0x2b0275, 0xa6e483, 0x41fbd4, 0x1153b5,
41641 0x66dfab, 0xb43210, 0xfb213f, 0xef0ee4, 0xa88fc2, 0x0aa725, 0x03826f, 0x0e6e70,
41642 0xd22ffc, 0x26c926, 0xc42aed, 0x95b3df, 0xaf63de, 0x77b2a8, 0xedaee6, 0x82353b,
41643 0xf10364, 0x423001, 0xf89791, 0x54be30, 0xef5218, 0x65a910, 0x71202a, 0xbbd1b8,
41644 0xd2d0c8, 0x41ab53, 0x8eeb99, 0x9b48a8, 0xc95a63, 0x418acb, 0x63e373, 0xb2b8a3,
41645 0xefb2fc, 0x172f60, 0xf0ab72, 0x6439ec, 0x631e28, 0x82bde9, 0xc67915, 0x72532b,
41646 0x26619c, 0xc0c207, 0xe0eb1e, 0x6ed178, 0x176fba, 0xc898a6, 0xf90dae, 0x1c471b,
41647 0x047d84, 0xc72493, 0xc9bebc, 0x100d4c, 0x3e42b6, 0x657e2a, 0xd6faec, 0x475817],
41648
41649 /*
41650 _key:
41651 [0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
41652 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
41653 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
41654 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
41655 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
41656 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
41657 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
41658 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
41659 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
41660 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
41661 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
41662 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
41663 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
41664 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
41665 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
41666 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
41667 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
41668 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
41669 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
41670 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817],
41671 */
41672
41673 /**
41674 * Function to precompute _init and _key.
41675 * @private
41676 */
41677 _precompute: function () {
41678 // XXX: This code is for precomputing the SHA256 constants, change for
41679 // SHA512 and re-enable.
41680 var i = 0, prime = 2, factor;
41681
41682 function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
41683 function frac2(x) { return (x-Math.floor(x)) * 0x10000000000 & 0xff; }
41684
41685 outer: for (; i<80; prime++) {
41686 for (factor=2; factor*factor <= prime; factor++) {
41687 if (prime % factor === 0) {
41688 // not a prime
41689 continue outer;
41690 }
41691 }
41692
41693 if (i<8) {
41694 this._init[i*2] = frac(Math.pow(prime, 1/2));
41695 this._init[i*2+1] = (frac2(Math.pow(prime, 1/2)) << 24) | this._initr[i];
41696 }
41697 this._key[i*2] = frac(Math.pow(prime, 1/3));
41698 this._key[i*2+1] = (frac2(Math.pow(prime, 1/3)) << 24) | this._keyr[i];
41699 i++;
41700 }
41701 },
41702
41703 /**
41704 * Perform one cycle of SHA-512.
41705 * @param {bitArray} words one block of words.
41706 * @private
41707 */
41708 _block:function (words) {
41709 var i, wrh, wrl,
41710 w = words.slice(0),
41711 h = this._h,
41712 k = this._key,
41713 h0h = h[ 0], h0l = h[ 1], h1h = h[ 2], h1l = h[ 3],
41714 h2h = h[ 4], h2l = h[ 5], h3h = h[ 6], h3l = h[ 7],
41715 h4h = h[ 8], h4l = h[ 9], h5h = h[10], h5l = h[11],
41716 h6h = h[12], h6l = h[13], h7h = h[14], h7l = h[15];
41717
41718 // Working variables
41719 var ah = h0h, al = h0l, bh = h1h, bl = h1l,
41720 ch = h2h, cl = h2l, dh = h3h, dl = h3l,
41721 eh = h4h, el = h4l, fh = h5h, fl = h5l,
41722 gh = h6h, gl = h6l, hh = h7h, hl = h7l;
41723
41724 for (i=0; i<80; i++) {
41725 // load up the input word for this round
41726 if (i<16) {
41727 wrh = w[i * 2];
41728 wrl = w[i * 2 + 1];
41729 } else {
41730 // Gamma0
41731 var gamma0xh = w[(i-15) * 2];
41732 var gamma0xl = w[(i-15) * 2 + 1];
41733 var gamma0h =
41734 ((gamma0xl << 31) | (gamma0xh >>> 1)) ^
41735 ((gamma0xl << 24) | (gamma0xh >>> 8)) ^
41736 (gamma0xh >>> 7);
41737 var gamma0l =
41738 ((gamma0xh << 31) | (gamma0xl >>> 1)) ^
41739 ((gamma0xh << 24) | (gamma0xl >>> 8)) ^
41740 ((gamma0xh << 25) | (gamma0xl >>> 7));
41741
41742 // Gamma1
41743 var gamma1xh = w[(i-2) * 2];
41744 var gamma1xl = w[(i-2) * 2 + 1];
41745 var gamma1h =
41746 ((gamma1xl << 13) | (gamma1xh >>> 19)) ^
41747 ((gamma1xh << 3) | (gamma1xl >>> 29)) ^
41748 (gamma1xh >>> 6);
41749 var gamma1l =
41750 ((gamma1xh << 13) | (gamma1xl >>> 19)) ^
41751 ((gamma1xl << 3) | (gamma1xh >>> 29)) ^
41752 ((gamma1xh << 26) | (gamma1xl >>> 6));
41753
41754 // Shortcuts
41755 var wr7h = w[(i-7) * 2];
41756 var wr7l = w[(i-7) * 2 + 1];
41757
41758 var wr16h = w[(i-16) * 2];
41759 var wr16l = w[(i-16) * 2 + 1];
41760
41761 // W(round) = gamma0 + W(round - 7) + gamma1 + W(round - 16)
41762 wrl = gamma0l + wr7l;
41763 wrh = gamma0h + wr7h + ((wrl >>> 0) < (gamma0l >>> 0) ? 1 : 0);
41764 wrl += gamma1l;
41765 wrh += gamma1h + ((wrl >>> 0) < (gamma1l >>> 0) ? 1 : 0);
41766 wrl += wr16l;
41767 wrh += wr16h + ((wrl >>> 0) < (wr16l >>> 0) ? 1 : 0);
41768 }
41769
41770 w[i*2] = wrh |= 0;
41771 w[i*2 + 1] = wrl |= 0;
41772
41773 // Ch
41774 var chh = (eh & fh) ^ (~eh & gh);
41775 var chl = (el & fl) ^ (~el & gl);
41776
41777 // Maj
41778 var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);
41779 var majl = (al & bl) ^ (al & cl) ^ (bl & cl);
41780
41781 // Sigma0
41782 var sigma0h = ((al << 4) | (ah >>> 28)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));
41783 var sigma0l = ((ah << 4) | (al >>> 28)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));
41784
41785 // Sigma1
41786 var sigma1h = ((el << 18) | (eh >>> 14)) ^ ((el << 14) | (eh >>> 18)) ^ ((eh << 23) | (el >>> 9));
41787 var sigma1l = ((eh << 18) | (el >>> 14)) ^ ((eh << 14) | (el >>> 18)) ^ ((el << 23) | (eh >>> 9));
41788
41789 // K(round)
41790 var krh = k[i*2];
41791 var krl = k[i*2+1];
41792
41793 // t1 = h + sigma1 + ch + K(round) + W(round)
41794 var t1l = hl + sigma1l;
41795 var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);
41796 t1l += chl;
41797 t1h += chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);
41798 t1l += krl;
41799 t1h += krh + ((t1l >>> 0) < (krl >>> 0) ? 1 : 0);
41800 t1l = t1l + wrl|0; // FF32..FF34 perf issue https://bugzilla.mozilla.org/show_bug.cgi?id=1054972
41801 t1h += wrh + ((t1l >>> 0) < (wrl >>> 0) ? 1 : 0);
41802
41803 // t2 = sigma0 + maj
41804 var t2l = sigma0l + majl;
41805 var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);
41806
41807 // Update working variables
41808 hh = gh;
41809 hl = gl;
41810 gh = fh;
41811 gl = fl;
41812 fh = eh;
41813 fl = el;
41814 el = (dl + t1l) | 0;
41815 eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
41816 dh = ch;
41817 dl = cl;
41818 ch = bh;
41819 cl = bl;
41820 bh = ah;
41821 bl = al;
41822 al = (t1l + t2l) | 0;
41823 ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;
41824 }
41825
41826 // Intermediate hash
41827 h0l = h[1] = (h0l + al) | 0;
41828 h[0] = (h0h + ah + ((h0l >>> 0) < (al >>> 0) ? 1 : 0)) | 0;
41829 h1l = h[3] = (h1l + bl) | 0;
41830 h[2] = (h1h + bh + ((h1l >>> 0) < (bl >>> 0) ? 1 : 0)) | 0;
41831 h2l = h[5] = (h2l + cl) | 0;
41832 h[4] = (h2h + ch + ((h2l >>> 0) < (cl >>> 0) ? 1 : 0)) | 0;
41833 h3l = h[7] = (h3l + dl) | 0;
41834 h[6] = (h3h + dh + ((h3l >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
41835 h4l = h[9] = (h4l + el) | 0;
41836 h[8] = (h4h + eh + ((h4l >>> 0) < (el >>> 0) ? 1 : 0)) | 0;
41837 h5l = h[11] = (h5l + fl) | 0;
41838 h[10] = (h5h + fh + ((h5l >>> 0) < (fl >>> 0) ? 1 : 0)) | 0;
41839 h6l = h[13] = (h6l + gl) | 0;
41840 h[12] = (h6h + gh + ((h6l >>> 0) < (gl >>> 0) ? 1 : 0)) | 0;
41841 h7l = h[15] = (h7l + hl) | 0;
41842 h[14] = (h7h + hh + ((h7l >>> 0) < (hl >>> 0) ? 1 : 0)) | 0;
41843 }
41844 };
41845
41846
41847 //// hmac.js
41848
41849 /** @fileOverview HMAC implementation.
41850 *
41851 * @author Emily Stark
41852 * @author Mike Hamburg
41853 * @author Dan Boneh
41854 */
41855
41856 /** HMAC with the specified hash function.
41857 * @constructor
41858 * @param {bitArray} key the key for HMAC.
41859 * @param {Object} [hash=sjcl.hash.sha256] The hash function to use.
41860 */
41861 sjcl.misc.hmac = function (key, Hash) {
41862 this._hash = Hash = Hash || sjcl.hash.sha256;
41863 var exKey = [[],[]], i,
41864 bs = Hash.prototype.blockSize / 32;
41865 this._baseHash = [new Hash(), new Hash()];
41866
41867 if (key.length > bs) {
41868 key = Hash.hash(key);
41869 }
41870
41871 for (i=0; i<bs; i++) {
41872 exKey[0][i] = key[i]^0x36363636;
41873 exKey[1][i] = key[i]^0x5C5C5C5C;
41874 }
41875
41876 this._baseHash[0].update(exKey[0]);
41877 this._baseHash[1].update(exKey[1]);
41878 this._resultHash = new Hash(this._baseHash[0]);
41879 };
41880
41881 /** HMAC with the specified hash function. Also called encrypt since it's a prf.
41882 * @param {bitArray|String} data The data to mac.
41883 */
41884 sjcl.misc.hmac.prototype.encrypt = sjcl.misc.hmac.prototype.mac = function (data) {
41885 if (!this._updated) {
41886 this.update(data);
41887 return this.digest(data);
41888 } else {
41889 throw new sjcl.exception.invalid("encrypt on already updated hmac called!");
41890 }
41891 };
41892
41893 sjcl.misc.hmac.prototype.reset = function () {
41894 this._resultHash = new this._hash(this._baseHash[0]);
41895 this._updated = false;
41896 };
41897
41898 sjcl.misc.hmac.prototype.update = function (data) {
41899 this._updated = true;
41900 this._resultHash.update(data);
41901 };
41902
41903 sjcl.misc.hmac.prototype.digest = function () {
41904 var w = this._resultHash.finalize(), result = new (this._hash)(this._baseHash[1]).update(w).finalize();
41905
41906 this.reset();
41907
41908 return result;
41909 };
41910
41911
41912 //// pbkdf2.js
41913
41914
41915 /** @fileOverview Password-based key-derivation function, version 2.0.
41916 *
41917 * @author Emily Stark
41918 * @author Mike Hamburg
41919 * @author Dan Boneh
41920 */
41921
41922 /** Password-Based Key-Derivation Function, version 2.0.
41923 *
41924 * Generate keys from passwords using PBKDF2-HMAC-SHA256.
41925 *
41926 * This is the method specified by RSA's PKCS #5 standard.
41927 *
41928 * @param {bitArray|String} password The password.
41929 * @param {bitArray|String} salt The salt. Should have lots of entropy.
41930 * @param {Number} [count=1000] The number of iterations. Higher numbers make the function slower but more secure.
41931 * @param {Number} [length] The length of the derived key. Defaults to the
41932 output size of the hash function.
41933 * @param {Object} [Prff=sjcl.misc.hmac] The pseudorandom function family.
41934 * @return {bitArray} the derived key.
41935 */
41936 sjcl.misc.pbkdf2 = function (password, salt, count, length, Prff) {
41937 count = count || 1000;
41938
41939 if (length < 0 || count < 0) {
41940 throw sjcl.exception.invalid("invalid params to pbkdf2");
41941 }
41942
41943 if (typeof password === "string") {
41944 password = sjcl.codec.utf8String.toBits(password);
41945 }
41946
41947 if (typeof salt === "string") {
41948 salt = sjcl.codec.utf8String.toBits(salt);
41949 }
41950
41951 Prff = Prff || sjcl.misc.hmac;
41952
41953 var prf = new Prff(password),
41954 u, ui, i, j, k, out = [], b = sjcl.bitArray;
41955
41956 for (k = 1; 32 * out.length < (length || 1); k++) {
41957 u = ui = prf.encrypt(b.concat(salt,[k]));
41958
41959 for (i=1; i<count; i++) {
41960 ui = prf.encrypt(ui);
41961 for (j=0; j<ui.length; j++) {
41962 u[j] ^= ui[j];
41963 }
41964 }
41965
41966 out = out.concat(u);
41967 }
41968
41969 if (length) { out = b.clamp(out, length); }
41970
41971 return out;
41972 };
41973
41974
41975 //// sha256.js
41976
41977 /** @fileOverview Javascript SHA-256 implementation.
41978 *
41979 * An older version of this implementation is available in the public
41980 * domain, but this one is (c) Emily Stark, Mike Hamburg, Dan Boneh,
41981 * Stanford University 2008-2010 and BSD-licensed for liability
41982 * reasons.
41983 *
41984 * Special thanks to Aldo Cortesi for pointing out several bugs in
41985 * this code.
41986 *
41987 * @author Emily Stark
41988 * @author Mike Hamburg
41989 * @author Dan Boneh
41990 */
41991
41992 /**
41993 * Context for a SHA-256 operation in progress.
41994 * @constructor
41995 * @class Secure Hash Algorithm, 256 bits.
41996 */
41997 sjcl.hash.sha256 = function (hash) {
41998 if (!this._key[0]) { this._precompute(); }
41999 if (hash) {
42000 this._h = hash._h.slice(0);
42001 this._buffer = hash._buffer.slice(0);
42002 this._length = hash._length;
42003 } else {
42004 this.reset();
42005 }
42006 };
42007
42008 /**
42009 * Hash a string or an array of words.
42010 * @static
42011 * @param {bitArray|String} data the data to hash.
42012 * @return {bitArray} The hash value, an array of 16 big-endian words.
42013 */
42014 sjcl.hash.sha256.hash = function (data) {
42015 return (new sjcl.hash.sha256()).update(data).finalize();
42016 };
42017
42018 sjcl.hash.sha256.prototype = {
42019 /**
42020 * The hash's block size, in bits.
42021 * @constant
42022 */
42023 blockSize: 512,
42024
42025 /**
42026 * Reset the hash state.
42027 * @return this
42028 */
42029 reset:function () {
42030 this._h = this._init.slice(0);
42031 this._buffer = [];
42032 this._length = 0;
42033 return this;
42034 },
42035
42036 /**
42037 * Input several words to the hash.
42038 * @param {bitArray|String} data the data to hash.
42039 * @return this
42040 */
42041 update: function (data) {
42042 if (typeof data === "string") {
42043 data = sjcl.codec.utf8String.toBits(data);
42044 }
42045 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
42046 ol = this._length,
42047 nl = this._length = ol + sjcl.bitArray.bitLength(data);
42048 for (i = 512+ol & -512; i <= nl; i+= 512) {
42049 this._block(b.splice(0,16));
42050 }
42051 return this;
42052 },
42053
42054 /**
42055 * Complete hashing and output the hash value.
42056 * @return {bitArray} The hash value, an array of 8 big-endian words.
42057 */
42058 finalize:function () {
42059 var i, b = this._buffer, h = this._h;
42060
42061 // Round out and push the buffer
42062 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
42063
42064 // Round out the buffer to a multiple of 16 words, less the 2 length words.
42065 for (i = b.length + 2; i & 15; i++) {
42066 b.push(0);
42067 }
42068
42069 // append the length
42070 b.push(Math.floor(this._length / 0x100000000));
42071 b.push(this._length | 0);
42072
42073 while (b.length) {
42074 this._block(b.splice(0,16));
42075 }
42076
42077 this.reset();
42078 return h;
42079 },
42080
42081 /**
42082 * The SHA-256 initialization vector, to be precomputed.
42083 * @private
42084 */
42085 _init:[],
42086 /*
42087 _init:[0x6a09e667,0xbb67ae85,0x3c6ef372,0xa54ff53a,0x510e527f,0x9b05688c,0x1f83d9ab,0x5be0cd19],
42088 */
42089
42090 /**
42091 * The SHA-256 hash key, to be precomputed.
42092 * @private
42093 */
42094 _key:[],
42095 /*
42096 _key:
42097 [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
42098 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
42099 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
42100 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
42101 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
42102 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
42103 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
42104 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2],
42105 */
42106
42107
42108 /**
42109 * Function to precompute _init and _key.
42110 * @private
42111 */
42112 _precompute: function () {
42113 var i = 0, prime = 2, factor;
42114
42115 function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
42116
42117 outer: for (; i<64; prime++) {
42118 for (factor=2; factor*factor <= prime; factor++) {
42119 if (prime % factor === 0) {
42120 // not a prime
42121 continue outer;
42122 }
42123 }
42124
42125 if (i<8) {
42126 this._init[i] = frac(Math.pow(prime, 1/2));
42127 }
42128 this._key[i] = frac(Math.pow(prime, 1/3));
42129 i++;
42130 }
42131 },
42132
42133 /**
42134 * Perform one cycle of SHA-256.
42135 * @param {bitArray} words one block of words.
42136 * @private
42137 */
42138 _block:function (words) {
42139 var i, tmp, a, b,
42140 w = words.slice(0),
42141 h = this._h,
42142 k = this._key,
42143 h0 = h[0], h1 = h[1], h2 = h[2], h3 = h[3],
42144 h4 = h[4], h5 = h[5], h6 = h[6], h7 = h[7];
42145
42146 /* Rationale for placement of |0 :
42147 * If a value can overflow is original 32 bits by a factor of more than a few
42148 * million (2^23 ish), there is a possibility that it might overflow the
42149 * 53-bit mantissa and lose precision.
42150 *
42151 * To avoid this, we clamp back to 32 bits by |'ing with 0 on any value that
42152 * propagates around the loop, and on the hash state h[]. I don't believe
42153 * that the clamps on h4 and on h0 are strictly necessary, but it's close
42154 * (for h4 anyway), and better safe than sorry.
42155 *
42156 * The clamps on h[] are necessary for the output to be correct even in the
42157 * common case and for short inputs.
42158 */
42159 for (i=0; i<64; i++) {
42160 // load up the input word for this round
42161 if (i<16) {
42162 tmp = w[i];
42163 } else {
42164 a = w[(i+1 ) & 15];
42165 b = w[(i+14) & 15];
42166 tmp = w[i&15] = ((a>>>7 ^ a>>>18 ^ a>>>3 ^ a<<25 ^ a<<14) +
42167 (b>>>17 ^ b>>>19 ^ b>>>10 ^ b<<15 ^ b<<13) +
42168 w[i&15] + w[(i+9) & 15]) | 0;
42169 }
42170
42171 tmp = (tmp + h7 + (h4>>>6 ^ h4>>>11 ^ h4>>>25 ^ h4<<26 ^ h4<<21 ^ h4<<7) + (h6 ^ h4&(h5^h6)) + k[i]); // | 0;
42172
42173 // shift register
42174 h7 = h6; h6 = h5; h5 = h4;
42175 h4 = h3 + tmp | 0;
42176 h3 = h2; h2 = h1; h1 = h0;
42177
42178 h0 = (tmp + ((h1&h2) ^ (h3&(h1^h2))) + (h1>>>2 ^ h1>>>13 ^ h1>>>22 ^ h1<<30 ^ h1<<19 ^ h1<<10)) | 0;
42179 }
42180
42181 h[0] = h[0]+h0 | 0;
42182 h[1] = h[1]+h1 | 0;
42183 h[2] = h[2]+h2 | 0;
42184 h[3] = h[3]+h3 | 0;
42185 h[4] = h[4]+h4 | 0;
42186 h[5] = h[5]+h5 | 0;
42187 h[6] = h[6]+h6 | 0;
42188 h[7] = h[7]+h7 | 0;
42189 }
42190 };
42191 </script>
42192 <script>// An extremely basic translation library
42193 //
42194 // Example usage:
42195 //
42196 // Set some html to be translated. Do this using the 'data-translate' attribute:
42197 //
42198 // <div data-translate>Test</div>
42199 // <div data-translate-html><em>keep em tag</em></div>
42200 // <input data-translate-placeholder placeholder="Example placeholder">
42201 // <span data-translate-title title="Example title"></span>
42202 //
42203 // Obtain all the phrases to be translated via js debug console:
42204 //
42205 // Translate.phrasesAsJson();
42206 //
42207 // Use that template to translate the phrases into another language.
42208 // Leave the key the same. Change the value to the new language.
42209 //
42210 // Create a js file to load the new phrases. In this example for Spanish,
42211 // es.js will contain the following code:
42212 //
42213 // Translate.loadForeignPhrases("es", {
42214 // "Test": "Test in Spanish",
42215 // "<em>keep em tag</em>": "<em>keep em tag in Spanish</em>",
42216 // "Example placeholder": "Example placeholder in Spanish"
42217 // "Example title": "Example title in Spanish"
42218 // });
42219 //
42220 // In your UI put a listener for clicking on the Spanish button:
42221 //
42222 // mySpanishButton.addEventListener("click", function() {
42223 // Translate.setLanguage("es");
42224 // });
42225 // myEnglishButton.addEventListener("click", function() {
42226 // Translate.setLanguage("en");
42227 // });
42228
42229 Translate = new (function() {
42230
42231 var defaultLanguage = "en";
42232
42233 var allPhrases = {};
42234 allPhrases[defaultLanguage] = {};
42235
42236 // Node types
42237
42238 var text = {
42239 selector: "[data-translate]",
42240 getKey: function() {
42241 return this.textContent.trim().replace(/\s+/g, " ");
42242 },
42243 setPhrase: function(p) {
42244 this.textContent = p;
42245 },
42246 }
42247
42248 var html = {
42249 selector: "[data-translate-html]",
42250 getKey: function() {
42251 return this.innerHTML.trim().replace(/\s+/g, " ");
42252 },
42253 setPhrase: function(p) {
42254 this.innerHTML = p;
42255 },
42256 }
42257
42258 var placeholder = {
42259 selector: "[data-translate-placeholder]",
42260 getKey: function() {
42261 return this.getAttribute("placeholder").trim().replace(/\s+/g, " ");
42262 },
42263 setPhrase: function(p) {
42264 this.setAttribute("placeholder", p);
42265 },
42266 }
42267
42268 var title = {
42269 selector: "[data-translate-title]",
42270 getKey: function() {
42271 return this.getAttribute("title").trim().replace(/\s+/g, " ");
42272 },
42273 setPhrase: function(p) {
42274 this.setAttribute("title", p);
42275 },
42276 }
42277
42278 // Get elements to be translated
42279 var allEls = getEls(text)
42280 .concat(getEls(html))
42281 .concat(getEls(placeholder))
42282 .concat(getEls(title));
42283
42284 // Provides access to phrases from a non-default language.
42285 // See phrases_en.js for example usage.
42286 this.loadForeignPhrases = function(language, phrases) {
42287 allPhrases[language] = phrases;
42288 }
42289
42290 // Displays a different language, eg "en" or "fr"
42291 this.setLanguage = function(language) {
42292 for (var i=0; i<allEls.length; i++) {
42293 var el = allEls[i];
42294 var key = el.key;
42295 if (!(language in allPhrases)) {
42296 console.log(language + " not in allPhrases");
42297 return;
42298 }
42299 if (!(key in allPhrases[language])) {
42300 console.log(language + " does not contain phrase: " + key);
42301 return;
42302 }
42303 var phrase = allPhrases[language][key];
42304 el.setPhrase(phrase);
42305 }
42306 }
42307
42308 // Converts the phrases to a key-pair json file.
42309 // This is a good way to export phrases for use in translation tools.
42310 this.phrasesAsJson = function(language) {
42311 var keys = [];
42312 for (var i=0; i<allEls.length; i++) {
42313 var el = allEls[i];
42314 var key = el.key;
42315 keys.push(key);
42316 }
42317 keys.sort();
42318 var output = {};
42319 for (var i=0; i<keys.length; i++) {
42320 var key = keys[i];
42321 var translated = "";
42322 if (language in allPhrases && key in allPhrases[language]) {
42323 translated = allPhrases[language][key];
42324 }
42325 output[key] = translated;
42326 }
42327 return JSON.stringify(output, null, 2);
42328 }
42329
42330 function getEls(nodeType) {
42331 var nodes = document.querySelectorAll(nodeType.selector);
42332 var els = [];
42333 for (var i=0; i<nodes.length; i++) {
42334 var node = nodes[i];
42335 node.getKey = nodeType.getKey;
42336 node.setPhrase = nodeType.setPhrase;
42337 node.key = node.getKey();
42338 allPhrases[defaultLanguage][node.key] = node.key;
42339 els.push(node);
42340 }
42341 return els;
42342 }
42343
42344 })();
42345 </script>
42346 <script>Translate.loadForeignPhrases("en",
42347 {
42348 "<code>m/44'/0'/0'/0</code> generates public addresses": "<code>m/44'/0'/0'/0</code> generates public addresses",
42349 "<code>m/44'/0'/0'/1</code> generates change addresses": "<code>m/44'/0'/0'/1</code> generates change addresses",
42350 "<code>m/44'/0'/0'</code> generates extended keys for import / export": "<code>m/44'/0'/0'</code> generates extended keys for import / export",
42351 "<code>m/44'/0'/1'</code> for the next account. Continue incrementing for more accounts (most use a single account).": "<code>m/44'/0'/1'</code> for the next account. Continue incrementing for more accounts (most use a single account).",
42352 "Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards": "Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards",
42353 "Account": "Account",
42354 "Address": "Address",
42355 "Alternatively, download the file from the repository": "Alternatively, download the file from the repository",
42356 "BIP32 Derivation Path": "BIP32 Derivation Path",
42357 "BIP32 Extended Key": "BIP32 Extended Key",
42358 "BIP32 Extended Key (addresses only)": "BIP32 Extended Key (addresses only)",
42359 "BIP32 Root Key": "BIP32 Root Key",
42360 "BIP39 Mnemonic": "BIP39 Mnemonic",
42361 "BIP39 Passphrase (optional)": "BIP39 Passphrase (optional)",
42362 "BIP39 Seed": "BIP39 Seed",
42363 "Base 10": "Base 10",
42364 "Base 6": "Base 6",
42365 "Be careful - it can be easy to make mistakes if you don't know what you're doing.": "Be careful - it can be easy to make mistakes if you don't know what you're doing.",
42366 "Binary": "Binary",
42367 "Bitcoin Core": "Bitcoin Core",
42368 "Bits Per Event": "Bits Per Event",
42369 "Block Explorers": "Block Explorers",
42370 "Can be used with": "Can be used with",
42371 "Card": "Card",
42372 "Coin": "Coin",
42373 "Dice": "Dice",
42374 "Do <strong>NOT</strong> use phrases from books, lyrics from songs, your birthday or steet address, keyboard mashing, or anything you <i>think</i> is random, because chances are overwhelming it isn't random enough for the needs of this tool.": "Do <strong>NOT</strong> use phrases from books, lyrics from songs, your birthday or steet address, keyboard mashing, or anything you <i>think</i> is random, because chances are overwhelming it isn't random enough for the needs of this tool.",
42375 "Double-click that file to open it in a browser on any offline computer.": "Double-click that file to open it in a browser on any offline computer.",
42376 "Entropy": "Entropy",
42377 "Entropy Type": "Entropy Type",
42378 "Entropy is an advanced feature. Your mnemonic may be insecure if this feature is used incorrectly.": "Entropy is an advanced feature. Your mnemonic may be insecure if this feature is used incorrectly.",
42379 "Entropy values must be sourced from a <a href=\"https://en.wikipedia.org/wiki/Random_number_generation\" target=\"_blank\">strong source of randomness</a>.": "Entropy values must be sourced from a <a href=\"https://en.wikipedia.org/wiki/Random_number_generation\" target=\"_blank\">strong source of randomness</a>.",
42380 "Event Count": "Event Count",
42381 "External / Internal": "External / Internal",
42382 "Filtered Entropy": "Filtered Entropy",
42383 "For more info see the <a href=\"http://www.mycelium.com/\" target=\"_blank\">Mycelium Wallet homepage</a>": "For more info see the <a href=\"http://www.mycelium.com/\" target=\"_blank\">Mycelium Wallet homepage</a>",
42384 "For more info see the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\" target=\"_blank\">BIP39 spec</a>.": "For more info see the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\" target=\"_blank\">BIP39 spec</a>.",
42385 "For more info see the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki\" target=\"_blank\">BIP44 spec</a>.": "For more info see the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki\" target=\"_blank\">BIP44 spec</a>.",
42386 "For more info see the <a href=\"https://github.com/bitcoin/bitcoin/pull/8035\" target=\"_blank\">Bitcoin Core BIP32 implementation</a>": "For more info see the <a href=\"https://github.com/bitcoin/bitcoin/pull/8035\" target=\"_blank\">Bitcoin Core BIP32 implementation</a>",
42387 "For more info see the BIP32 spec": "For more info see the BIP32 spec",
42388 "From entropy length (3 words per 32 bits)": "From entropy length (3 words per 32 bits)",
42389 "Generate a random mnemonic, or enter your own below": "Generate a random mnemonic, or enter your own below",
42390 "Get the source code from the repository": "Get the source code from the repository",
42391 "Hex": "Hex",
42392 "Hierarchical Deterministic Wallets": "Hierarchical Deterministic Wallets",
42393 "If cryptographic randomness isn't available in your browser, this page will show a warning and the generate button will not work.": "If cryptographic randomness isn't available in your browser, this page will show a warning and the generate button will not work.",
42394 "In that case you might choose to use your own source of entropy.": "In that case you might choose to use your own source of entropy.",
42395 "In your browser, select file save-as, and save this page as a file.": "In your browser, select file save-as, and save this page as a file.",
42396 "Libraries": "Libraries",
42397 "Mnemonic Language": "Mnemonic Language",
42398 "Mnemonic Length": "Mnemonic Length",
42399 "Mnemonic code for generating deterministic keys": "Mnemonic code for generating deterministic keys",
42400 "More info": "More info",
42401 "Multi-Account Hierarchy for Deterministic Wallets": "Multi-Account Hierarchy for Deterministic Wallets",
42402 "Mycelium Wallet": "Mycelium Wallet",
42403 "Note these addreses are derived from the BIP32 Extended Key": "Note these addreses are derived from the BIP32 Extended Key",
42404 "Offline Usage": "Offline Usage",
42405 "Only enter the <code>xpub</code> extended key into block explorer search fields, never the <code>xprv</code> key.": "Only enter the <code>xpub</code> extended key into block explorer search fields, never the <code>xprv</code> key.",
42406 "Path": "Path",
42407 "Private Key": "Private Key",
42408 "Private Keys": "Private Keys",
42409 "Public Key": "Public Key",
42410 "Purpose": "Purpose",
42411 "Raw Binary": "Raw Binary",
42412 "Read more": "Read more",
42413 "Read more at the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki\" target=\"_blank\">official BIP32 spec</a>": "Read more at the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki\" target=\"_blank\">official BIP32 spec</a>",
42414 "Read more at the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\">official BIP39 spec</a>": "Read more at the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\">official BIP39 spec</a>",
42415 "Read more at the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki\" target=\"_blank\">official BIP44 spec</a>": "Read more at the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki\" target=\"_blank\">official BIP44 spec</a>",
42416 "See the demo at <a href=\"http://bip32.org/\" target=\"_blank\">bip32.org</a>": "See the demo at <a href=\"http://bip32.org/\" target=\"_blank\">bip32.org</a>",
42417 "Show": "Show",
42418 "Show more rows": "Show more rows",
42419 "Strength": "Strength",
42420 "Supply my own source of entropy": "Supply my own source of entropy",
42421 "The built in random generator can generally be trusted more than your own intuition about randomness.": "The built in random generator can generally be trusted more than your own intuition about randomness.",
42422 "The random mnemonic generator on this page uses a <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues\" target=\"_blank\">cryptographically secure random number generator</a>.": "The random mnemonic generator on this page uses a <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues\" target=\"_blank\">cryptographically secure random number generator</a>.",
42423 "This means flipping a fair coin, rolling a fair dice, noise measurements etc.": "This means flipping a fair coin, rolling a fair dice, noise measurements etc.",
42424 "This project is 100% open-source code": "This project is 100% open-source code",
42425 "Toggle": "Toggle",
42426 "Total Bits": "Total Bits",
42427 "Use hardened addresses": "Use hardened addresses",
42428 "Use path <code>m/0'/0'</code> with hardened addresses.": "Use path <code>m/0'/0'</code> with hardened addresses.",
42429 "Use path <code>m/44'/0'/0'</code>.": "Use path <code>m/44'/0'/0'</code>.",
42430 "Use private keys at <a href=\"https://web.archive.org/web/20150707020924/https://brainwallet.org/\" target=\"_blank\">brainwallet.org</a>.": "Use private keys at <a href=\"https://web.archive.org/web/20150707020924/https://brainwallet.org/\" target=\"_blank\">brainwallet.org</a>.",
42431 "Valid entropy values include:": "Valid entropy values include:",
42432 "Warning": "Warning",
42433 "Word Count": "Word Count",
42434 "You are not a good source of entropy.": "You are not a good source of entropy.",
42435 "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).": "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).",
42436 "You can use this tool without having to be online.": "You can use this tool without having to be online.",
42437 "words": "words"
42438 }
42439 );
42440 </script>
42441 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
42442 WORDLISTS["english"] = [
42443 "abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse",
42444 "access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act",
42445 "action","actor","actress","actual","adapt","add","addict","address","adjust","admit",
42446 "adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent",
42447 "agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert",
42448 "alien","all","alley","allow","almost","alone","alpha","already","also","alter",
42449 "always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger",
42450 "angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique",
42451 "anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic",
42452 "area","arena","argue","arm","armed","armor","army","around","arrange","arrest",
42453 "arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset",
42454 "assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction",
42455 "audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake",
42456 "aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge",
42457 "bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain",
42458 "barrel","base","basic","basket","battle","beach","bean","beauty","because","become",
42459 "beef","before","begin","behave","behind","believe","below","belt","bench","benefit",
42460 "best","betray","better","between","beyond","bicycle","bid","bike","bind","biology",
42461 "bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless",
42462 "blind","blood","blossom","blouse","blue","blur","blush","board","boat","body",
42463 "boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss",
42464 "bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread",
42465 "breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze",
42466 "broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb",
42467 "bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy",
42468 "butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call",
42469 "calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas",
42470 "canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry",
42471 "cart","case","cash","casino","castle","casual","cat","catalog","catch","category",
42472 "cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century",
42473 "cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase",
42474 "chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child",
42475 "chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle",
42476 "citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk",
42477 "clever","click","client","cliff","climb","clinic","clip","clock","clog","close",
42478 "cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut",
42479 "code","coffee","coil","coin","collect","color","column","combine","come","comfort",
42480 "comic","common","company","concert","conduct","confirm","congress","connect","consider","control",
42481 "convince","cook","cool","copper","copy","coral","core","corn","correct","cost",
42482 "cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle",
42483 "craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek",
42484 "crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial",
42485 "cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup",
42486 "cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad",
42487 "damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal",
42488 "debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense",
42489 "define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny",
42490 "depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk",
42491 "despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond",
42492 "diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur",
42493 "direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance",
42494 "divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain",
42495 "donate","donkey","donor","door","dose","double","dove","draft","dragon","drama",
42496 "drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop",
42497 "drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf",
42498 "dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo",
42499 "ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow",
42500 "elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody",
42501 "embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless",
42502 "endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough",
42503 "enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip",
42504 "era","erase","erode","erosion","error","erupt","escape","essay","essence","estate",
42505 "eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange",
42506 "excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit",
42507 "exotic","expand","expect","expire","explain","expose","express","extend","extra","eye",
42508 "eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame",
42509 "family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father",
42510 "fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female",
42511 "fence","festival","fetch","fever","few","fiber","fiction","field","figure","file",
42512 "film","filter","final","find","fine","finger","finish","fire","firm","first",
42513 "fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor",
42514 "flee","flight","flip","float","flock","floor","flower","fluid","flush","fly",
42515 "foam","focus","fog","foil","fold","follow","food","foot","force","forest",
42516 "forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile",
42517 "frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen",
42518 "fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy",
42519 "gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp",
42520 "gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture",
42521 "ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance",
42522 "glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue",
42523 "goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown",
42524 "grab","grace","grain","grant","grape","grass","gravity","great","green","grid",
42525 "grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt",
42526 "guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy",
42527 "harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health",
42528 "heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden",
42529 "high","hill","hint","hip","hire","history","hobby","hockey","hold","hole",
42530 "holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital",
42531 "host","hotel","hour","hover","hub","huge","human","humble","humor","hundred",
42532 "hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea",
42533 "identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune",
42534 "impact","impose","improve","impulse","inch","include","income","increase","index","indicate",
42535 "indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury",
42536 "inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install",
42537 "intact","interest","into","invest","invite","involve","iron","island","isolate","issue",
42538 "item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel",
42539 "job","join","joke","journey","joy","judge","juice","jump","jungle","junior",
42540 "junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney",
42541 "kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife",
42542 "knock","know","lab","label","labor","ladder","lady","lake","lamp","language",
42543 "laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit",
42544 "layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal",
42545 "legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level",
42546 "liar","liberty","library","license","life","lift","light","like","limb","limit",
42547 "link","lion","liquid","list","little","live","lizard","load","loan","lobster",
42548 "local","lock","logic","lonely","long","loop","lottery","loud","lounge","love",
42549 "loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad",
42550 "magic","magnet","maid","mail","main","major","make","mammal","man","manage",
42551 "mandate","mango","mansion","manual","maple","marble","march","margin","marine","market",
42552 "marriage","mask","mass","master","match","material","math","matrix","matter","maximum",
42553 "maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt",
42554 "member","memory","mention","menu","mercy","merge","merit","merry","mesh","message",
42555 "metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor",
42556 "minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile",
42557 "model","modify","mom","moment","monitor","monkey","monster","month","moon","moral",
42558 "more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie",
42559 "much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual",
42560 "myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature",
42561 "near","neck","need","negative","neglect","neither","nephew","nerve","nest","net",
42562 "network","neutral","never","news","next","nice","night","noble","noise","nominee",
42563 "noodle","normal","north","nose","notable","note","nothing","notice","novel","now",
42564 "nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe",
42565 "obtain","obvious","occur","ocean","october","odor","off","offer","office","often",
42566 "oil","okay","old","olive","olympic","omit","once","one","onion","online",
42567 "only","open","opera","opinion","oppose","option","orange","orbit","orchard","order",
42568 "ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output",
42569 "outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact",
42570 "paddle","page","pair","palace","palm","panda","panel","panic","panther","paper",
42571 "parade","parent","park","parrot","party","pass","patch","path","patient","patrol",
42572 "pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen",
42573 "penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo",
42574 "phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot",
42575 "pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate",
42576 "play","please","pledge","pluck","plug","plunge","poem","poet","point","polar",
42577 "pole","police","pond","pony","pool","popular","portion","position","possible","post",
42578 "potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare",
42579 "present","pretty","prevent","price","pride","primary","print","priority","prison","private",
42580 "prize","problem","process","produce","profit","program","project","promote","proof","property",
42581 "prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin",
42582 "punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle",
42583 "pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit",
42584 "raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp",
42585 "ranch","random","range","rapid","rare","rate","rather","raven","raw","razor",
42586 "ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle",
42587 "reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release",
42588 "relief","rely","remain","remember","remind","remove","render","renew","rent","reopen",
42589 "repair","repeat","replace","report","require","rescue","resemble","resist","resource","response",
42590 "result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib",
42591 "ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot",
42592 "ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket",
42593 "romance","roof","rookie","room","rose","rotate","rough","round","route","royal",
42594 "rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness",
42595 "safe","sail","salad","salmon","salon","salt","salute","same","sample","sand",
42596 "satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter",
42597 "scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script",
42598 "scrub","sea","search","season","seat","second","secret","section","security","seed",
42599 "seek","segment","select","sell","seminar","senior","sense","sentence","series","service",
42600 "session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell",
42601 "sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop",
42602 "short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side",
42603 "siege","sight","sign","silent","silk","silly","silver","similar","simple","since",
42604 "sing","siren","sister","situate","six","size","skate","sketch","ski","skill",
42605 "skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight",
42606 "slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth",
42607 "snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda",
42608 "soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry",
42609 "sort","soul","sound","soup","source","south","space","spare","spatial","spawn",
42610 "speak","special","speed","spell","spend","sphere","spice","spider","spike","spin",
42611 "spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring",
42612 "spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp",
42613 "stand","start","state","stay","steak","steel","stem","step","stereo","stick",
42614 "still","sting","stock","stomach","stone","stool","story","stove","strategy","street",
42615 "strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway",
42616 "success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny",
42617 "sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey",
42618 "suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim",
42619 "swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag",
42620 "tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi",
42621 "teach","team","tell","ten","tenant","tennis","tent","term","test","text",
42622 "thank","that","theme","then","theory","there","they","thing","this","thought",
42623 "three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber",
42624 "time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler",
42625 "toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool",
42626 "tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist",
42627 "toward","tower","town","toy","track","trade","traffic","tragic","train","transfer",
42628 "trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick",
42629 "trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust",
42630 "truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle",
42631 "twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella",
42632 "unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform",
42633 "unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade",
42634 "uphold","upon","upper","upset","urban","urge","usage","use","used","useful",
42635 "useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van",
42636 "vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue",
42637 "verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory",
42638 "video","view","village","vintage","violin","virtual","virus","visa","visit","visual",
42639 "vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage",
42640 "wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash",
42641 "wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather",
42642 "web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat",
42643 "wheel","when","where","whip","whisper","wide","width","wife","wild","will",
42644 "win","window","wine","wing","wink","winner","winter","wire","wisdom","wise",
42645 "wish","witness","wolf","woman","wonder","wood","wool","word","work","world",
42646 "worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year",
42647 "yellow","you","young","youth","zebra","zero","zone","zoo"]
42648 </script>
42649 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
42650 WORDLISTS["japanese"] = [
42651 "あいこくしん", "あいさつ", "あいだ", "あおぞら", "あかちゃん", "あきる", "あけがた", "あける", "あこがれる", "あさい",
42652 "あさひ", "あしあと", "あじわう", "あずかる", "あずき", "あそぶ", "あたえる", "あたためる", "あたりまえ", "あたる",
42653 "あつい", "あつかう", "あっしゅく", "あつまり", "あつめる", "あてな", "あてはまる", "あひる", "あぶら", "あぶる",
42654 "あふれる", "あまい", "あまど", "あまやかす", "あまり", "あみもの", "あめりか", "あやまる", "あゆむ", "あらいぐま",
42655 "あらし", "あらすじ", "あらためる", "あらゆる", "あらわす", "ありがとう", "あわせる", "あわてる", "あんい", "あんがい",
42656 "あんこ", "あんぜん", "あんてい", "あんない", "あんまり", "いいだす", "いおん", "いがい", "いがく", "いきおい",
42657 "いきなり", "いきもの", "いきる", "いくじ", "いくぶん", "いけばな", "いけん", "いこう", "いこく", "いこつ",
42658 "いさましい", "いさん", "いしき", "いじゅう", "いじょう", "いじわる", "いずみ", "いずれ", "いせい", "いせえび",
42659 "いせかい", "いせき", "いぜん", "いそうろう", "いそがしい", "いだい", "いだく", "いたずら", "いたみ", "いたりあ",
42660 "いちおう", "いちじ", "いちど", "いちば", "いちぶ", "いちりゅう", "いつか", "いっしゅん", "いっせい", "いっそう",
42661 "いったん", "いっち", "いってい", "いっぽう", "いてざ", "いてん", "いどう", "いとこ", "いない", "いなか",
42662 "いねむり", "いのち", "いのる", "いはつ", "いばる", "いはん", "いびき", "いひん", "いふく", "いへん",
42663 "いほう", "いみん", "いもうと", "いもたれ", "いもり", "いやがる", "いやす", "いよかん", "いよく", "いらい",
42664 "いらすと", "いりぐち", "いりょう", "いれい", "いれもの", "いれる", "いろえんぴつ", "いわい", "いわう", "いわかん",
42665 "いわば", "いわゆる", "いんげんまめ", "いんさつ", "いんしょう", "いんよう", "うえき", "うえる", "うおざ", "うがい",
42666 "うかぶ", "うかべる", "うきわ", "うくらいな", "うくれれ", "うけたまわる", "うけつけ", "うけとる", "うけもつ", "うける",
42667 "うごかす", "うごく", "うこん", "うさぎ", "うしなう", "うしろがみ", "うすい", "うすぎ", "うすぐらい", "うすめる",
42668 "うせつ", "うちあわせ", "うちがわ", "うちき", "うちゅう", "うっかり", "うつくしい", "うったえる", "うつる", "うどん",
42669 "うなぎ", "うなじ", "うなずく", "うなる", "うねる", "うのう", "うぶげ", "うぶごえ", "うまれる", "うめる",
42670 "うもう", "うやまう", "うよく", "うらがえす", "うらぐち", "うらない", "うりあげ", "うりきれ", "うるさい", "うれしい",
42671 "うれゆき", "うれる", "うろこ", "うわき", "うわさ", "うんこう", "うんちん", "うんてん", "うんどう", "えいえん",
42672 "えいが", "えいきょう", "えいご", "えいせい", "えいぶん", "えいよう", "えいわ", "えおり", "えがお", "えがく",
42673 "えきたい", "えくせる", "えしゃく", "えすて", "えつらん", "えのぐ", "えほうまき", "えほん", "えまき", "えもじ",
42674 "えもの", "えらい", "えらぶ", "えりあ", "えんえん", "えんかい", "えんぎ", "えんげき", "えんしゅう", "えんぜつ",
42675 "えんそく", "えんちょう", "えんとつ", "おいかける", "おいこす", "おいしい", "おいつく", "おうえん", "おうさま", "おうじ",
42676 "おうせつ", "おうたい", "おうふく", "おうべい", "おうよう", "おえる", "おおい", "おおう", "おおどおり", "おおや",
42677 "おおよそ", "おかえり", "おかず", "おがむ", "おかわり", "おぎなう", "おきる", "おくさま", "おくじょう", "おくりがな",
42678 "おくる", "おくれる", "おこす", "おこなう", "おこる", "おさえる", "おさない", "おさめる", "おしいれ", "おしえる",
42679 "おじぎ", "おじさん", "おしゃれ", "おそらく", "おそわる", "おたがい", "おたく", "おだやか", "おちつく", "おっと",
42680 "おつり", "おでかけ", "おとしもの", "おとなしい", "おどり", "おどろかす", "おばさん", "おまいり", "おめでとう", "おもいで",
42681 "おもう", "おもたい", "おもちゃ", "おやつ", "おやゆび", "およぼす", "おらんだ", "おろす", "おんがく", "おんけい",
42682 "おんしゃ", "おんせん", "おんだん", "おんちゅう", "おんどけい", "かあつ", "かいが", "がいき", "がいけん", "がいこう",
42683 "かいさつ", "かいしゃ", "かいすいよく", "かいぜん", "かいぞうど", "かいつう", "かいてん", "かいとう", "かいふく", "がいへき",
42684 "かいほう", "かいよう", "がいらい", "かいわ", "かえる", "かおり", "かかえる", "かがく", "かがし", "かがみ",
42685 "かくご", "かくとく", "かざる", "がぞう", "かたい", "かたち", "がちょう", "がっきゅう", "がっこう", "がっさん",
42686 "がっしょう", "かなざわし", "かのう", "がはく", "かぶか", "かほう", "かほご", "かまう", "かまぼこ", "かめれおん",
42687 "かゆい", "かようび", "からい", "かるい", "かろう", "かわく", "かわら", "がんか", "かんけい", "かんこう",
42688 "かんしゃ", "かんそう", "かんたん", "かんち", "がんばる", "きあい", "きあつ", "きいろ", "ぎいん", "きうい",
42689 "きうん", "きえる", "きおう", "きおく", "きおち", "きおん", "きかい", "きかく", "きかんしゃ", "ききて",
42690 "きくばり", "きくらげ", "きけんせい", "きこう", "きこえる", "きこく", "きさい", "きさく", "きさま", "きさらぎ",
42691 "ぎじかがく", "ぎしき", "ぎじたいけん", "ぎじにってい", "ぎじゅつしゃ", "きすう", "きせい", "きせき", "きせつ", "きそう",
42692 "きぞく", "きぞん", "きたえる", "きちょう", "きつえん", "ぎっちり", "きつつき", "きつね", "きてい", "きどう",
42693 "きどく", "きない", "きなが", "きなこ", "きぬごし", "きねん", "きのう", "きのした", "きはく", "きびしい",
42694 "きひん", "きふく", "きぶん", "きぼう", "きほん", "きまる", "きみつ", "きむずかしい", "きめる", "きもだめし",
42695 "きもち", "きもの", "きゃく", "きやく", "ぎゅうにく", "きよう", "きょうりゅう", "きらい", "きらく", "きりん",
42696 "きれい", "きれつ", "きろく", "ぎろん", "きわめる", "ぎんいろ", "きんかくじ", "きんじょ", "きんようび", "ぐあい",
42697 "くいず", "くうかん", "くうき", "くうぐん", "くうこう", "ぐうせい", "くうそう", "ぐうたら", "くうふく", "くうぼ",
42698 "くかん", "くきょう", "くげん", "ぐこう", "くさい", "くさき", "くさばな", "くさる", "くしゃみ", "くしょう",
42699 "くすのき", "くすりゆび", "くせげ", "くせん", "ぐたいてき", "くださる", "くたびれる", "くちこみ", "くちさき", "くつした",
42700 "ぐっすり", "くつろぐ", "くとうてん", "くどく", "くなん", "くねくね", "くのう", "くふう", "くみあわせ", "くみたてる",
42701 "くめる", "くやくしょ", "くらす", "くらべる", "くるま", "くれる", "くろう", "くわしい", "ぐんかん", "ぐんしょく",
42702 "ぐんたい", "ぐんて", "けあな", "けいかく", "けいけん", "けいこ", "けいさつ", "げいじゅつ", "けいたい", "げいのうじん",
42703 "けいれき", "けいろ", "けおとす", "けおりもの", "げきか", "げきげん", "げきだん", "げきちん", "げきとつ", "げきは",
42704 "げきやく", "げこう", "げこくじょう", "げざい", "けさき", "げざん", "けしき", "けしごむ", "けしょう", "げすと",
42705 "けたば", "けちゃっぷ", "けちらす", "けつあつ", "けつい", "けつえき", "けっこん", "けつじょ", "けっせき", "けってい",
42706 "けつまつ", "げつようび", "げつれい", "けつろん", "げどく", "けとばす", "けとる", "けなげ", "けなす", "けなみ",
42707 "けぬき", "げねつ", "けねん", "けはい", "げひん", "けぶかい", "げぼく", "けまり", "けみかる", "けむし",
42708 "けむり", "けもの", "けらい", "けろけろ", "けわしい", "けんい", "けんえつ", "けんお", "けんか", "げんき",
42709 "けんげん", "けんこう", "けんさく", "けんしゅう", "けんすう", "げんそう", "けんちく", "けんてい", "けんとう", "けんない",
42710 "けんにん", "げんぶつ", "けんま", "けんみん", "けんめい", "けんらん", "けんり", "こあくま", "こいぬ", "こいびと",
42711 "ごうい", "こうえん", "こうおん", "こうかん", "ごうきゅう", "ごうけい", "こうこう", "こうさい", "こうじ", "こうすい",
42712 "ごうせい", "こうそく", "こうたい", "こうちゃ", "こうつう", "こうてい", "こうどう", "こうない", "こうはい", "ごうほう",
42713 "ごうまん", "こうもく", "こうりつ", "こえる", "こおり", "ごかい", "ごがつ", "ごかん", "こくご", "こくさい",
42714 "こくとう", "こくない", "こくはく", "こぐま", "こけい", "こける", "ここのか", "こころ", "こさめ", "こしつ",
42715 "こすう", "こせい", "こせき", "こぜん", "こそだて", "こたい", "こたえる", "こたつ", "こちょう", "こっか",
42716 "こつこつ", "こつばん", "こつぶ", "こてい", "こてん", "ことがら", "ことし", "ことば", "ことり", "こなごな",
42717 "こねこね", "このまま", "このみ", "このよ", "ごはん", "こひつじ", "こふう", "こふん", "こぼれる", "ごまあぶら",
42718 "こまかい", "ごますり", "こまつな", "こまる", "こむぎこ", "こもじ", "こもち", "こもの", "こもん", "こやく",
42719 "こやま", "こゆう", "こゆび", "こよい", "こよう", "こりる", "これくしょん", "ころっけ", "こわもて", "こわれる",
42720 "こんいん", "こんかい", "こんき", "こんしゅう", "こんすい", "こんだて", "こんとん", "こんなん", "こんびに", "こんぽん",
42721 "こんまけ", "こんや", "こんれい", "こんわく", "ざいえき", "さいかい", "さいきん", "ざいげん", "ざいこ", "さいしょ",
42722 "さいせい", "ざいたく", "ざいちゅう", "さいてき", "ざいりょう", "さうな", "さかいし", "さがす", "さかな", "さかみち",
42723 "さがる", "さぎょう", "さくし", "さくひん", "さくら", "さこく", "さこつ", "さずかる", "ざせき", "さたん",
42724 "さつえい", "ざつおん", "ざっか", "ざつがく", "さっきょく", "ざっし", "さつじん", "ざっそう", "さつたば", "さつまいも",
42725 "さてい", "さといも", "さとう", "さとおや", "さとし", "さとる", "さのう", "さばく", "さびしい", "さべつ",
42726 "さほう", "さほど", "さます", "さみしい", "さみだれ", "さむけ", "さめる", "さやえんどう", "さゆう", "さよう",
42727 "さよく", "さらだ", "ざるそば", "さわやか", "さわる", "さんいん", "さんか", "さんきゃく", "さんこう", "さんさい",
42728 "ざんしょ", "さんすう", "さんせい", "さんそ", "さんち", "さんま", "さんみ", "さんらん", "しあい", "しあげ",
42729 "しあさって", "しあわせ", "しいく", "しいん", "しうち", "しえい", "しおけ", "しかい", "しかく", "じかん",
42730 "しごと", "しすう", "じだい", "したうけ", "したぎ", "したて", "したみ", "しちょう", "しちりん", "しっかり",
42731 "しつじ", "しつもん", "してい", "してき", "してつ", "じてん", "じどう", "しなぎれ", "しなもの", "しなん",
42732 "しねま", "しねん", "しのぐ", "しのぶ", "しはい", "しばかり", "しはつ", "しはらい", "しはん", "しひょう",
42733 "しふく", "じぶん", "しへい", "しほう", "しほん", "しまう", "しまる", "しみん", "しむける", "じむしょ",
42734 "しめい", "しめる", "しもん", "しゃいん", "しゃうん", "しゃおん", "じゃがいも", "しやくしょ", "しゃくほう", "しゃけん",
42735 "しゃこ", "しゃざい", "しゃしん", "しゃせん", "しゃそう", "しゃたい", "しゃちょう", "しゃっきん", "じゃま", "しゃりん",
42736 "しゃれい", "じゆう", "じゅうしょ", "しゅくはく", "じゅしん", "しゅっせき", "しゅみ", "しゅらば", "じゅんばん", "しょうかい",
42737 "しょくたく", "しょっけん", "しょどう", "しょもつ", "しらせる", "しらべる", "しんか", "しんこう", "じんじゃ", "しんせいじ",
42738 "しんちく", "しんりん", "すあげ", "すあし", "すあな", "ずあん", "すいえい", "すいか", "すいとう", "ずいぶん",
42739 "すいようび", "すうがく", "すうじつ", "すうせん", "すおどり", "すきま", "すくう", "すくない", "すける", "すごい",
42740 "すこし", "ずさん", "すずしい", "すすむ", "すすめる", "すっかり", "ずっしり", "ずっと", "すてき", "すてる",
42741 "すねる", "すのこ", "すはだ", "すばらしい", "ずひょう", "ずぶぬれ", "すぶり", "すふれ", "すべて", "すべる",
42742 "ずほう", "すぼん", "すまい", "すめし", "すもう", "すやき", "すらすら", "するめ", "すれちがう", "すろっと",
42743 "すわる", "すんぜん", "すんぽう", "せあぶら", "せいかつ", "せいげん", "せいじ", "せいよう", "せおう", "せかいかん",
42744 "せきにん", "せきむ", "せきゆ", "せきらんうん", "せけん", "せこう", "せすじ", "せたい", "せたけ", "せっかく",
42745 "せっきゃく", "ぜっく", "せっけん", "せっこつ", "せっさたくま", "せつぞく", "せつだん", "せつでん", "せっぱん", "せつび",
42746 "せつぶん", "せつめい", "せつりつ", "せなか", "せのび", "せはば", "せびろ", "せぼね", "せまい", "せまる",
42747 "せめる", "せもたれ", "せりふ", "ぜんあく", "せんい", "せんえい", "せんか", "せんきょ", "せんく", "せんげん",
42748 "ぜんご", "せんさい", "せんしゅ", "せんすい", "せんせい", "せんぞ", "せんたく", "せんちょう", "せんてい", "せんとう",
42749 "せんぬき", "せんねん", "せんぱい", "ぜんぶ", "ぜんぽう", "せんむ", "せんめんじょ", "せんもん", "せんやく", "せんゆう",
42750 "せんよう", "ぜんら", "ぜんりゃく", "せんれい", "せんろ", "そあく", "そいとげる", "そいね", "そうがんきょう", "そうき",
42751 "そうご", "そうしん", "そうだん", "そうなん", "そうび", "そうめん", "そうり", "そえもの", "そえん", "そがい",
42752 "そげき", "そこう", "そこそこ", "そざい", "そしな", "そせい", "そせん", "そそぐ", "そだてる", "そつう",
42753 "そつえん", "そっかん", "そつぎょう", "そっけつ", "そっこう", "そっせん", "そっと", "そとがわ", "そとづら", "そなえる",
42754 "そなた", "そふぼ", "そぼく", "そぼろ", "そまつ", "そまる", "そむく", "そむりえ", "そめる", "そもそも",
42755 "そよかぜ", "そらまめ", "そろう", "そんかい", "そんけい", "そんざい", "そんしつ", "そんぞく", "そんちょう", "ぞんび",
42756 "ぞんぶん", "そんみん", "たあい", "たいいん", "たいうん", "たいえき", "たいおう", "だいがく", "たいき", "たいぐう",
42757 "たいけん", "たいこ", "たいざい", "だいじょうぶ", "だいすき", "たいせつ", "たいそう", "だいたい", "たいちょう", "たいてい",
42758 "だいどころ", "たいない", "たいねつ", "たいのう", "たいはん", "だいひょう", "たいふう", "たいへん", "たいほ", "たいまつばな",
42759 "たいみんぐ", "たいむ", "たいめん", "たいやき", "たいよう", "たいら", "たいりょく", "たいる", "たいわん", "たうえ",
42760 "たえる", "たおす", "たおる", "たおれる", "たかい", "たかね", "たきび", "たくさん", "たこく", "たこやき",
42761 "たさい", "たしざん", "だじゃれ", "たすける", "たずさわる", "たそがれ", "たたかう", "たたく", "ただしい", "たたみ",
42762 "たちばな", "だっかい", "だっきゃく", "だっこ", "だっしゅつ", "だったい", "たてる", "たとえる", "たなばた", "たにん",
42763 "たぬき", "たのしみ", "たはつ", "たぶん", "たべる", "たぼう", "たまご", "たまる", "だむる", "ためいき",
42764 "ためす", "ためる", "たもつ", "たやすい", "たよる", "たらす", "たりきほんがん", "たりょう", "たりる", "たると",
42765 "たれる", "たれんと", "たろっと", "たわむれる", "だんあつ", "たんい", "たんおん", "たんか", "たんき", "たんけん",
42766 "たんご", "たんさん", "たんじょうび", "だんせい", "たんそく", "たんたい", "だんち", "たんてい", "たんとう", "だんな",
42767 "たんにん", "だんねつ", "たんのう", "たんぴん", "だんぼう", "たんまつ", "たんめい", "だんれつ", "だんろ", "だんわ",
42768 "ちあい", "ちあん", "ちいき", "ちいさい", "ちえん", "ちかい", "ちから", "ちきゅう", "ちきん", "ちけいず",
42769 "ちけん", "ちこく", "ちさい", "ちしき", "ちしりょう", "ちせい", "ちそう", "ちたい", "ちたん", "ちちおや",
42770 "ちつじょ", "ちてき", "ちてん", "ちぬき", "ちぬり", "ちのう", "ちひょう", "ちへいせん", "ちほう", "ちまた",
42771 "ちみつ", "ちみどろ", "ちめいど", "ちゃんこなべ", "ちゅうい", "ちゆりょく", "ちょうし", "ちょさくけん", "ちらし", "ちらみ",
42772 "ちりがみ", "ちりょう", "ちるど", "ちわわ", "ちんたい", "ちんもく", "ついか", "ついたち", "つうか", "つうじょう",
42773 "つうはん", "つうわ", "つかう", "つかれる", "つくね", "つくる", "つけね", "つける", "つごう", "つたえる",
42774 "つづく", "つつじ", "つつむ", "つとめる", "つながる", "つなみ", "つねづね", "つのる", "つぶす", "つまらない",
42775 "つまる", "つみき", "つめたい", "つもり", "つもる", "つよい", "つるぼ", "つるみく", "つわもの", "つわり",
42776 "てあし", "てあて", "てあみ", "ていおん", "ていか", "ていき", "ていけい", "ていこく", "ていさつ", "ていし",
42777 "ていせい", "ていたい", "ていど", "ていねい", "ていひょう", "ていへん", "ていぼう", "てうち", "ておくれ", "てきとう",
42778 "てくび", "でこぼこ", "てさぎょう", "てさげ", "てすり", "てそう", "てちがい", "てちょう", "てつがく", "てつづき",
42779 "でっぱ", "てつぼう", "てつや", "でぬかえ", "てぬき", "てぬぐい", "てのひら", "てはい", "てぶくろ", "てふだ",
42780 "てほどき", "てほん", "てまえ", "てまきずし", "てみじか", "てみやげ", "てらす", "てれび", "てわけ", "てわたし",
42781 "でんあつ", "てんいん", "てんかい", "てんき", "てんぐ", "てんけん", "てんごく", "てんさい", "てんし", "てんすう",
42782 "でんち", "てんてき", "てんとう", "てんない", "てんぷら", "てんぼうだい", "てんめつ", "てんらんかい", "でんりょく", "でんわ",
42783 "どあい", "といれ", "どうかん", "とうきゅう", "どうぐ", "とうし", "とうむぎ", "とおい", "とおか", "とおく",
42784 "とおす", "とおる", "とかい", "とかす", "ときおり", "ときどき", "とくい", "とくしゅう", "とくてん", "とくに",
42785 "とくべつ", "とけい", "とける", "とこや", "とさか", "としょかん", "とそう", "とたん", "とちゅう", "とっきゅう",
42786 "とっくん", "とつぜん", "とつにゅう", "とどける", "ととのえる", "とない", "となえる", "となり", "とのさま", "とばす",
42787 "どぶがわ", "とほう", "とまる", "とめる", "ともだち", "ともる", "どようび", "とらえる", "とんかつ", "どんぶり",
42788 "ないかく", "ないこう", "ないしょ", "ないす", "ないせん", "ないそう", "なおす", "ながい", "なくす", "なげる",
42789 "なこうど", "なさけ", "なたでここ", "なっとう", "なつやすみ", "ななおし", "なにごと", "なにもの", "なにわ", "なのか",
42790 "なふだ", "なまいき", "なまえ", "なまみ", "なみだ", "なめらか", "なめる", "なやむ", "ならう", "ならび",
42791 "ならぶ", "なれる", "なわとび", "なわばり", "にあう", "にいがた", "にうけ", "におい", "にかい", "にがて",
42792 "にきび", "にくしみ", "にくまん", "にげる", "にさんかたんそ", "にしき", "にせもの", "にちじょう", "にちようび", "にっか",
42793 "にっき", "にっけい", "にっこう", "にっさん", "にっしょく", "にっすう", "にっせき", "にってい", "になう", "にほん",
42794 "にまめ", "にもつ", "にやり", "にゅういん", "にりんしゃ", "にわとり", "にんい", "にんか", "にんき", "にんげん",
42795 "にんしき", "にんずう", "にんそう", "にんたい", "にんち", "にんてい", "にんにく", "にんぷ", "にんまり", "にんむ",
42796 "にんめい", "にんよう", "ぬいくぎ", "ぬかす", "ぬぐいとる", "ぬぐう", "ぬくもり", "ぬすむ", "ぬまえび", "ぬめり",
42797 "ぬらす", "ぬんちゃく", "ねあげ", "ねいき", "ねいる", "ねいろ", "ねぐせ", "ねくたい", "ねくら", "ねこぜ",
42798 "ねこむ", "ねさげ", "ねすごす", "ねそべる", "ねだん", "ねつい", "ねっしん", "ねつぞう", "ねったいぎょ", "ねぶそく",
42799 "ねふだ", "ねぼう", "ねほりはほり", "ねまき", "ねまわし", "ねみみ", "ねむい", "ねむたい", "ねもと", "ねらう",
42800 "ねわざ", "ねんいり", "ねんおし", "ねんかん", "ねんきん", "ねんぐ", "ねんざ", "ねんし", "ねんちゃく", "ねんど",
42801 "ねんぴ", "ねんぶつ", "ねんまつ", "ねんりょう", "ねんれい", "のいず", "のおづま", "のがす", "のきなみ", "のこぎり",
42802 "のこす", "のこる", "のせる", "のぞく", "のぞむ", "のたまう", "のちほど", "のっく", "のばす", "のはら",
42803 "のべる", "のぼる", "のみもの", "のやま", "のらいぬ", "のらねこ", "のりもの", "のりゆき", "のれん", "のんき",
42804 "ばあい", "はあく", "ばあさん", "ばいか", "ばいく", "はいけん", "はいご", "はいしん", "はいすい", "はいせん",
42805 "はいそう", "はいち", "ばいばい", "はいれつ", "はえる", "はおる", "はかい", "ばかり", "はかる", "はくしゅ",
42806 "はけん", "はこぶ", "はさみ", "はさん", "はしご", "ばしょ", "はしる", "はせる", "ぱそこん", "はそん",
42807 "はたん", "はちみつ", "はつおん", "はっかく", "はづき", "はっきり", "はっくつ", "はっけん", "はっこう", "はっさん",
42808 "はっしん", "はったつ", "はっちゅう", "はってん", "はっぴょう", "はっぽう", "はなす", "はなび", "はにかむ", "はぶらし",
42809 "はみがき", "はむかう", "はめつ", "はやい", "はやし", "はらう", "はろうぃん", "はわい", "はんい", "はんえい",
42810 "はんおん", "はんかく", "はんきょう", "ばんぐみ", "はんこ", "はんしゃ", "はんすう", "はんだん", "ぱんち", "ぱんつ",
42811 "はんてい", "はんとし", "はんのう", "はんぱ", "はんぶん", "はんぺん", "はんぼうき", "はんめい", "はんらん", "はんろん",
42812 "ひいき", "ひうん", "ひえる", "ひかく", "ひかり", "ひかる", "ひかん", "ひくい", "ひけつ", "ひこうき",
42813 "ひこく", "ひさい", "ひさしぶり", "ひさん", "びじゅつかん", "ひしょ", "ひそか", "ひそむ", "ひたむき", "ひだり",
42814 "ひたる", "ひつぎ", "ひっこし", "ひっし", "ひつじゅひん", "ひっす", "ひつぜん", "ぴったり", "ぴっちり", "ひつよう",
42815 "ひてい", "ひとごみ", "ひなまつり", "ひなん", "ひねる", "ひはん", "ひびく", "ひひょう", "ひほう", "ひまわり",
42816 "ひまん", "ひみつ", "ひめい", "ひめじし", "ひやけ", "ひやす", "ひよう", "びょうき", "ひらがな", "ひらく",
42817 "ひりつ", "ひりょう", "ひるま", "ひるやすみ", "ひれい", "ひろい", "ひろう", "ひろき", "ひろゆき", "ひんかく",
42818 "ひんけつ", "ひんこん", "ひんしゅ", "ひんそう", "ぴんち", "ひんぱん", "びんぼう", "ふあん", "ふいうち", "ふうけい",
42819 "ふうせん", "ぷうたろう", "ふうとう", "ふうふ", "ふえる", "ふおん", "ふかい", "ふきん", "ふくざつ", "ふくぶくろ",
42820 "ふこう", "ふさい", "ふしぎ", "ふじみ", "ふすま", "ふせい", "ふせぐ", "ふそく", "ぶたにく", "ふたん",
42821 "ふちょう", "ふつう", "ふつか", "ふっかつ", "ふっき", "ふっこく", "ぶどう", "ふとる", "ふとん", "ふのう",
42822 "ふはい", "ふひょう", "ふへん", "ふまん", "ふみん", "ふめつ", "ふめん", "ふよう", "ふりこ", "ふりる",
42823 "ふるい", "ふんいき", "ぶんがく", "ぶんぐ", "ふんしつ", "ぶんせき", "ふんそう", "ぶんぽう", "へいあん", "へいおん",
42824 "へいがい", "へいき", "へいげん", "へいこう", "へいさ", "へいしゃ", "へいせつ", "へいそ", "へいたく", "へいてん",
42825 "へいねつ", "へいわ", "へきが", "へこむ", "べにいろ", "べにしょうが", "へらす", "へんかん", "べんきょう", "べんごし",
42826 "へんさい", "へんたい", "べんり", "ほあん", "ほいく", "ぼうぎょ", "ほうこく", "ほうそう", "ほうほう", "ほうもん",
42827 "ほうりつ", "ほえる", "ほおん", "ほかん", "ほきょう", "ぼきん", "ほくろ", "ほけつ", "ほけん", "ほこう",
42828 "ほこる", "ほしい", "ほしつ", "ほしゅ", "ほしょう", "ほせい", "ほそい", "ほそく", "ほたて", "ほたる",
42829 "ぽちぶくろ", "ほっきょく", "ほっさ", "ほったん", "ほとんど", "ほめる", "ほんい", "ほんき", "ほんけ", "ほんしつ",
42830 "ほんやく", "まいにち", "まかい", "まかせる", "まがる", "まける", "まこと", "まさつ", "まじめ", "ますく",
42831 "まぜる", "まつり", "まとめ", "まなぶ", "まぬけ", "まねく", "まほう", "まもる", "まゆげ", "まよう",
42832 "まろやか", "まわす", "まわり", "まわる", "まんが", "まんきつ", "まんぞく", "まんなか", "みいら", "みうち",
42833 "みえる", "みがく", "みかた", "みかん", "みけん", "みこん", "みじかい", "みすい", "みすえる", "みせる",
42834 "みっか", "みつかる", "みつける", "みてい", "みとめる", "みなと", "みなみかさい", "みねらる", "みのう", "みのがす",
42835 "みほん", "みもと", "みやげ", "みらい", "みりょく", "みわく", "みんか", "みんぞく", "むいか", "むえき",
42836 "むえん", "むかい", "むかう", "むかえ", "むかし", "むぎちゃ", "むける", "むげん", "むさぼる", "むしあつい",
42837 "むしば", "むじゅん", "むしろ", "むすう", "むすこ", "むすぶ", "むすめ", "むせる", "むせん", "むちゅう",
42838 "むなしい", "むのう", "むやみ", "むよう", "むらさき", "むりょう", "むろん", "めいあん", "めいうん", "めいえん",
42839 "めいかく", "めいきょく", "めいさい", "めいし", "めいそう", "めいぶつ", "めいれい", "めいわく", "めぐまれる", "めざす",
42840 "めした", "めずらしい", "めだつ", "めまい", "めやす", "めんきょ", "めんせき", "めんどう", "もうしあげる", "もうどうけん",
42841 "もえる", "もくし", "もくてき", "もくようび", "もちろん", "もどる", "もらう", "もんく", "もんだい", "やおや",
42842 "やける", "やさい", "やさしい", "やすい", "やすたろう", "やすみ", "やせる", "やそう", "やたい", "やちん",
42843 "やっと", "やっぱり", "やぶる", "やめる", "ややこしい", "やよい", "やわらかい", "ゆうき", "ゆうびんきょく", "ゆうべ",
42844 "ゆうめい", "ゆけつ", "ゆしゅつ", "ゆせん", "ゆそう", "ゆたか", "ゆちゃく", "ゆでる", "ゆにゅう", "ゆびわ",
42845 "ゆらい", "ゆれる", "ようい", "ようか", "ようきゅう", "ようじ", "ようす", "ようちえん", "よかぜ", "よかん",
42846 "よきん", "よくせい", "よくぼう", "よけい", "よごれる", "よさん", "よしゅう", "よそう", "よそく", "よっか",
42847 "よてい", "よどがわく", "よねつ", "よやく", "よゆう", "よろこぶ", "よろしい", "らいう", "らくがき", "らくご",
42848 "らくさつ", "らくだ", "らしんばん", "らせん", "らぞく", "らたい", "らっか", "られつ", "りえき", "りかい",
42849 "りきさく", "りきせつ", "りくぐん", "りくつ", "りけん", "りこう", "りせい", "りそう", "りそく", "りてん",
42850 "りねん", "りゆう", "りゅうがく", "りよう", "りょうり", "りょかん", "りょくちゃ", "りょこう", "りりく", "りれき",
42851 "りろん", "りんご", "るいけい", "るいさい", "るいじ", "るいせき", "るすばん", "るりがわら", "れいかん", "れいぎ",
42852 "れいせい", "れいぞうこ", "れいとう", "れいぼう", "れきし", "れきだい", "れんあい", "れんけい", "れんこん", "れんさい",
42853 "れんしゅう", "れんぞく", "れんらく", "ろうか", "ろうご", "ろうじん", "ろうそく", "ろくが", "ろこつ", "ろじうら",
42854 "ろしゅつ", "ろせん", "ろてん", "ろめん", "ろれつ", "ろんぎ", "ろんぱ", "ろんぶん", "ろんり", "わかす",
42855 "わかめ", "わかやま", "わかれる", "わしつ", "わじまし", "わすれもの", "わらう", "われる"]
42856 </script>
42857 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
42858 WORDLISTS["spanish"] = [
42859 "ábaco", "abdomen", "abeja", "abierto", "abogado", "abono", "aborto", "abrazo", "abrir", "abuelo",
42860 "abuso", "acabar", "academia", "acceso", "acción", "aceite", "acelga", "acento", "aceptar", "ácido",
42861 "aclarar", "acné", "acoger", "acoso", "activo", "acto", "actriz", "actuar", "acudir", "acuerdo",
42862 "acusar", "adicto", "admitir", "adoptar", "adorno", "aduana", "adulto", "aéreo", "afectar", "afición",
42863 "afinar", "afirmar", "ágil", "agitar", "agonía", "agosto", "agotar", "agregar", "agrio", "agua",
42864 "agudo", "águila", "aguja", "ahogo", "ahorro", "aire", "aislar", "ajedrez", "ajeno", "ajuste",
42865 "alacrán", "alambre", "alarma", "alba", "álbum", "alcalde", "aldea", "alegre", "alejar", "alerta",
42866 "aleta", "alfiler", "alga", "algodón", "aliado", "aliento", "alivio", "alma", "almeja", "almíbar",
42867 "altar", "alteza", "altivo", "alto", "altura", "alumno", "alzar", "amable", "amante", "amapola",
42868 "amargo", "amasar", "ámbar", "ámbito", "ameno", "amigo", "amistad", "amor", "amparo", "amplio",
42869 "ancho", "anciano", "ancla", "andar", "andén", "anemia", "ángulo", "anillo", "ánimo", "anís",
42870 "anotar", "antena", "antiguo", "antojo", "anual", "anular", "anuncio", "añadir", "añejo", "año",
42871 "apagar", "aparato", "apetito", "apio", "aplicar", "apodo", "aporte", "apoyo", "aprender", "aprobar",
42872 "apuesta", "apuro", "arado", "araña", "arar", "árbitro", "árbol", "arbusto", "archivo", "arco",
42873 "arder", "ardilla", "arduo", "área", "árido", "aries", "armonía", "arnés", "aroma", "arpa",
42874 "arpón", "arreglo", "arroz", "arruga", "arte", "artista", "asa", "asado", "asalto", "ascenso",
42875 "asegurar", "aseo", "asesor", "asiento", "asilo", "asistir", "asno", "asombro", "áspero", "astilla",
42876 "astro", "astuto", "asumir", "asunto", "atajo", "ataque", "atar", "atento", "ateo", "ático",
42877 "atleta", "átomo", "atraer", "atroz", "atún", "audaz", "audio", "auge", "aula", "aumento",
42878 "ausente", "autor", "aval", "avance", "avaro", "ave", "avellana", "avena", "avestruz", "avión",
42879 "aviso", "ayer", "ayuda", "ayuno", "azafrán", "azar", "azote", "azúcar", "azufre", "azul",
42880 "baba", "babor", "bache", "bahía", "baile", "bajar", "balanza", "balcón", "balde", "bambú",
42881 "banco", "banda", "baño", "barba", "barco", "barniz", "barro", "báscula", "bastón", "basura",
42882 "batalla", "batería", "batir", "batuta", "baúl", "bazar", "bebé", "bebida", "bello", "besar",
42883 "beso", "bestia", "bicho", "bien", "bingo", "blanco", "bloque", "blusa", "boa", "bobina",
42884 "bobo", "boca", "bocina", "boda", "bodega", "boina", "bola", "bolero", "bolsa", "bomba",
42885 "bondad", "bonito", "bono", "bonsái", "borde", "borrar", "bosque", "bote", "botín", "bóveda",
42886 "bozal", "bravo", "brazo", "brecha", "breve", "brillo", "brinco", "brisa", "broca", "broma",
42887 "bronce", "brote", "bruja", "brusco", "bruto", "buceo", "bucle", "bueno", "buey", "bufanda",
42888 "bufón", "búho", "buitre", "bulto", "burbuja", "burla", "burro", "buscar", "butaca", "buzón",
42889 "caballo", "cabeza", "cabina", "cabra", "cacao", "cadáver", "cadena", "caer", "café", "caída",
42890 "caimán", "caja", "cajón", "cal", "calamar", "calcio", "caldo", "calidad", "calle", "calma",
42891 "calor", "calvo", "cama", "cambio", "camello", "camino", "campo", "cáncer", "candil", "canela",
42892 "canguro", "canica", "canto", "caña", "cañón", "caoba", "caos", "capaz", "capitán", "capote",
42893 "captar", "capucha", "cara", "carbón", "cárcel", "careta", "carga", "cariño", "carne", "carpeta",
42894 "carro", "carta", "casa", "casco", "casero", "caspa", "castor", "catorce", "catre", "caudal",
42895 "causa", "cazo", "cebolla", "ceder", "cedro", "celda", "célebre", "celoso", "célula", "cemento",
42896 "ceniza", "centro", "cerca", "cerdo", "cereza", "cero", "cerrar", "certeza", "césped", "cetro",
42897 "chacal", "chaleco", "champú", "chancla", "chapa", "charla", "chico", "chiste", "chivo", "choque",
42898 "choza", "chuleta", "chupar", "ciclón", "ciego", "cielo", "cien", "cierto", "cifra", "cigarro",
42899 "cima", "cinco", "cine", "cinta", "ciprés", "circo", "ciruela", "cisne", "cita", "ciudad",
42900 "clamor", "clan", "claro", "clase", "clave", "cliente", "clima", "clínica", "cobre", "cocción",
42901 "cochino", "cocina", "coco", "código", "codo", "cofre", "coger", "cohete", "cojín", "cojo",
42902 "cola", "colcha", "colegio", "colgar", "colina", "collar", "colmo", "columna", "combate", "comer",
42903 "comida", "cómodo", "compra", "conde", "conejo", "conga", "conocer", "consejo", "contar", "copa",
42904 "copia", "corazón", "corbata", "corcho", "cordón", "corona", "correr", "coser", "cosmos", "costa",
42905 "cráneo", "cráter", "crear", "crecer", "creído", "crema", "cría", "crimen", "cripta", "crisis",
42906 "cromo", "crónica", "croqueta", "crudo", "cruz", "cuadro", "cuarto", "cuatro", "cubo", "cubrir",
42907 "cuchara", "cuello", "cuento", "cuerda", "cuesta", "cueva", "cuidar", "culebra", "culpa", "culto",
42908 "cumbre", "cumplir", "cuna", "cuneta", "cuota", "cupón", "cúpula", "curar", "curioso", "curso",
42909 "curva", "cutis", "dama", "danza", "dar", "dardo", "dátil", "deber", "débil", "década",
42910 "decir", "dedo", "defensa", "definir", "dejar", "delfín", "delgado", "delito", "demora", "denso",
42911 "dental", "deporte", "derecho", "derrota", "desayuno", "deseo", "desfile", "desnudo", "destino", "desvío",
42912 "detalle", "detener", "deuda", "día", "diablo", "diadema", "diamante", "diana", "diario", "dibujo",
42913 "dictar", "diente", "dieta", "diez", "difícil", "digno", "dilema", "diluir", "dinero", "directo",
42914 "dirigir", "disco", "diseño", "disfraz", "diva", "divino", "doble", "doce", "dolor", "domingo",
42915 "don", "donar", "dorado", "dormir", "dorso", "dos", "dosis", "dragón", "droga", "ducha",
42916 "duda", "duelo", "dueño", "dulce", "dúo", "duque", "durar", "dureza", "duro", "ébano",
42917 "ebrio", "echar", "eco", "ecuador", "edad", "edición", "edificio", "editor", "educar", "efecto",
42918 "eficaz", "eje", "ejemplo", "elefante", "elegir", "elemento", "elevar", "elipse", "élite", "elixir",
42919 "elogio", "eludir", "embudo", "emitir", "emoción", "empate", "empeño", "empleo", "empresa", "enano",
42920 "encargo", "enchufe", "encía", "enemigo", "enero", "enfado", "enfermo", "engaño", "enigma", "enlace",
42921 "enorme", "enredo", "ensayo", "enseñar", "entero", "entrar", "envase", "envío", "época", "equipo",
42922 "erizo", "escala", "escena", "escolar", "escribir", "escudo", "esencia", "esfera", "esfuerzo", "espada",
42923 "espejo", "espía", "esposa", "espuma", "esquí", "estar", "este", "estilo", "estufa", "etapa",
42924 "eterno", "ética", "etnia", "evadir", "evaluar", "evento", "evitar", "exacto", "examen", "exceso",
42925 "excusa", "exento", "exigir", "exilio", "existir", "éxito", "experto", "explicar", "exponer", "extremo",
42926 "fábrica", "fábula", "fachada", "fácil", "factor", "faena", "faja", "falda", "fallo", "falso",
42927 "faltar", "fama", "familia", "famoso", "faraón", "farmacia", "farol", "farsa", "fase", "fatiga",
42928 "fauna", "favor", "fax", "febrero", "fecha", "feliz", "feo", "feria", "feroz", "fértil",
42929 "fervor", "festín", "fiable", "fianza", "fiar", "fibra", "ficción", "ficha", "fideo", "fiebre",
42930 "fiel", "fiera", "fiesta", "figura", "fijar", "fijo", "fila", "filete", "filial", "filtro",
42931 "fin", "finca", "fingir", "finito", "firma", "flaco", "flauta", "flecha", "flor", "flota",
42932 "fluir", "flujo", "flúor", "fobia", "foca", "fogata", "fogón", "folio", "folleto", "fondo",
42933 "forma", "forro", "fortuna", "forzar", "fosa", "foto", "fracaso", "frágil", "franja", "frase",
42934 "fraude", "freír", "freno", "fresa", "frío", "frito", "fruta", "fuego", "fuente", "fuerza",
42935 "fuga", "fumar", "función", "funda", "furgón", "furia", "fusil", "fútbol", "futuro", "gacela",
42936 "gafas", "gaita", "gajo", "gala", "galería", "gallo", "gamba", "ganar", "gancho", "ganga",
42937 "ganso", "garaje", "garza", "gasolina", "gastar", "gato", "gavilán", "gemelo", "gemir", "gen",
42938 "género", "genio", "gente", "geranio", "gerente", "germen", "gesto", "gigante", "gimnasio", "girar",
42939 "giro", "glaciar", "globo", "gloria", "gol", "golfo", "goloso", "golpe", "goma", "gordo",
42940 "gorila", "gorra", "gota", "goteo", "gozar", "grada", "gráfico", "grano", "grasa", "gratis",
42941 "grave", "grieta", "grillo", "gripe", "gris", "grito", "grosor", "grúa", "grueso", "grumo",
42942 "grupo", "guante", "guapo", "guardia", "guerra", "guía", "guiño", "guion", "guiso", "guitarra",
42943 "gusano", "gustar", "haber", "hábil", "hablar", "hacer", "hacha", "hada", "hallar", "hamaca",
42944 "harina", "haz", "hazaña", "hebilla", "hebra", "hecho", "helado", "helio", "hembra", "herir",
42945 "hermano", "héroe", "hervir", "hielo", "hierro", "hígado", "higiene", "hijo", "himno", "historia",
42946 "hocico", "hogar", "hoguera", "hoja", "hombre", "hongo", "honor", "honra", "hora", "hormiga",
42947 "horno", "hostil", "hoyo", "hueco", "huelga", "huerta", "hueso", "huevo", "huida", "huir",
42948 "humano", "húmedo", "humilde", "humo", "hundir", "huracán", "hurto", "icono", "ideal", "idioma",
42949 "ídolo", "iglesia", "iglú", "igual", "ilegal", "ilusión", "imagen", "imán", "imitar", "impar",
42950 "imperio", "imponer", "impulso", "incapaz", "índice", "inerte", "infiel", "informe", "ingenio", "inicio",
42951 "inmenso", "inmune", "innato", "insecto", "instante", "interés", "íntimo", "intuir", "inútil", "invierno",
42952 "ira", "iris", "ironía", "isla", "islote", "jabalí", "jabón", "jamón", "jarabe", "jardín",
42953 "jarra", "jaula", "jazmín", "jefe", "jeringa", "jinete", "jornada", "joroba", "joven", "joya",
42954 "juerga", "jueves", "juez", "jugador", "jugo", "juguete", "juicio", "junco", "jungla", "junio",
42955 "juntar", "júpiter", "jurar", "justo", "juvenil", "juzgar", "kilo", "koala", "labio", "lacio",
42956 "lacra", "lado", "ladrón", "lagarto", "lágrima", "laguna", "laico", "lamer", "lámina", "lámpara",
42957 "lana", "lancha", "langosta", "lanza", "lápiz", "largo", "larva", "lástima", "lata", "látex",
42958 "latir", "laurel", "lavar", "lazo", "leal", "lección", "leche", "lector", "leer", "legión",
42959 "legumbre", "lejano", "lengua", "lento", "leña", "león", "leopardo", "lesión", "letal", "letra",
42960 "leve", "leyenda", "libertad", "libro", "licor", "líder", "lidiar", "lienzo", "liga", "ligero",
42961 "lima", "límite", "limón", "limpio", "lince", "lindo", "línea", "lingote", "lino", "linterna",
42962 "líquido", "liso", "lista", "litera", "litio", "litro", "llaga", "llama", "llanto", "llave",
42963 "llegar", "llenar", "llevar", "llorar", "llover", "lluvia", "lobo", "loción", "loco", "locura",
42964 "lógica", "logro", "lombriz", "lomo", "lonja", "lote", "lucha", "lucir", "lugar", "lujo",
42965 "luna", "lunes", "lupa", "lustro", "luto", "luz", "maceta", "macho", "madera", "madre",
42966 "maduro", "maestro", "mafia", "magia", "mago", "maíz", "maldad", "maleta", "malla", "malo",
42967 "mamá", "mambo", "mamut", "manco", "mando", "manejar", "manga", "maniquí", "manjar", "mano",
42968 "manso", "manta", "mañana", "mapa", "máquina", "mar", "marco", "marea", "marfil", "margen",
42969 "marido", "mármol", "marrón", "martes", "marzo", "masa", "máscara", "masivo", "matar", "materia",
42970 "matiz", "matriz", "máximo", "mayor", "mazorca", "mecha", "medalla", "medio", "médula", "mejilla",
42971 "mejor", "melena", "melón", "memoria", "menor", "mensaje", "mente", "menú", "mercado", "merengue",
42972 "mérito", "mes", "mesón", "meta", "meter", "método", "metro", "mezcla", "miedo", "miel",
42973 "miembro", "miga", "mil", "milagro", "militar", "millón", "mimo", "mina", "minero", "mínimo",
42974 "minuto", "miope", "mirar", "misa", "miseria", "misil", "mismo", "mitad", "mito", "mochila",
42975 "moción", "moda", "modelo", "moho", "mojar", "molde", "moler", "molino", "momento", "momia",
42976 "monarca", "moneda", "monja", "monto", "moño", "morada", "morder", "moreno", "morir", "morro",
42977 "morsa", "mortal", "mosca", "mostrar", "motivo", "mover", "móvil", "mozo", "mucho", "mudar",
42978 "mueble", "muela", "muerte", "muestra", "mugre", "mujer", "mula", "muleta", "multa", "mundo",
42979 "muñeca", "mural", "muro", "músculo", "museo", "musgo", "música", "muslo", "nácar", "nación",
42980 "nadar", "naipe", "naranja", "nariz", "narrar", "nasal", "natal", "nativo", "natural", "náusea",
42981 "naval", "nave", "navidad", "necio", "néctar", "negar", "negocio", "negro", "neón", "nervio",
42982 "neto", "neutro", "nevar", "nevera", "nicho", "nido", "niebla", "nieto", "niñez", "niño",
42983 "nítido", "nivel", "nobleza", "noche", "nómina", "noria", "norma", "norte", "nota", "noticia",
42984 "novato", "novela", "novio", "nube", "nuca", "núcleo", "nudillo", "nudo", "nuera", "nueve",
42985 "nuez", "nulo", "número", "nutria", "oasis", "obeso", "obispo", "objeto", "obra", "obrero",
42986 "observar", "obtener", "obvio", "oca", "ocaso", "océano", "ochenta", "ocho", "ocio", "ocre",
42987 "octavo", "octubre", "oculto", "ocupar", "ocurrir", "odiar", "odio", "odisea", "oeste", "ofensa",
42988 "oferta", "oficio", "ofrecer", "ogro", "oído", "oír", "ojo", "ola", "oleada", "olfato",
42989 "olivo", "olla", "olmo", "olor", "olvido", "ombligo", "onda", "onza", "opaco", "opción",
42990 "ópera", "opinar", "oponer", "optar", "óptica", "opuesto", "oración", "orador", "oral", "órbita",
42991 "orca", "orden", "oreja", "órgano", "orgía", "orgullo", "oriente", "origen", "orilla", "oro",
42992 "orquesta", "oruga", "osadía", "oscuro", "osezno", "oso", "ostra", "otoño", "otro", "oveja",
42993 "óvulo", "óxido", "oxígeno", "oyente", "ozono", "pacto", "padre", "paella", "página", "pago",
42994 "país", "pájaro", "palabra", "palco", "paleta", "pálido", "palma", "paloma", "palpar", "pan",
42995 "panal", "pánico", "pantera", "pañuelo", "papá", "papel", "papilla", "paquete", "parar", "parcela",
42996 "pared", "parir", "paro", "párpado", "parque", "párrafo", "parte", "pasar", "paseo", "pasión",
42997 "paso", "pasta", "pata", "patio", "patria", "pausa", "pauta", "pavo", "payaso", "peatón",
42998 "pecado", "pecera", "pecho", "pedal", "pedir", "pegar", "peine", "pelar", "peldaño", "pelea",
42999 "peligro", "pellejo", "pelo", "peluca", "pena", "pensar", "peñón", "peón", "peor", "pepino",
43000 "pequeño", "pera", "percha", "perder", "pereza", "perfil", "perico", "perla", "permiso", "perro",
43001 "persona", "pesa", "pesca", "pésimo", "pestaña", "pétalo", "petróleo", "pez", "pezuña", "picar",
43002 "pichón", "pie", "piedra", "pierna", "pieza", "pijama", "pilar", "piloto", "pimienta", "pino",
43003 "pintor", "pinza", "piña", "piojo", "pipa", "pirata", "pisar", "piscina", "piso", "pista",
43004 "pitón", "pizca", "placa", "plan", "plata", "playa", "plaza", "pleito", "pleno", "plomo",
43005 "pluma", "plural", "pobre", "poco", "poder", "podio", "poema", "poesía", "poeta", "polen",
43006 "policía", "pollo", "polvo", "pomada", "pomelo", "pomo", "pompa", "poner", "porción", "portal",
43007 "posada", "poseer", "posible", "poste", "potencia", "potro", "pozo", "prado", "precoz", "pregunta",
43008 "premio", "prensa", "preso", "previo", "primo", "príncipe", "prisión", "privar", "proa", "probar",
43009 "proceso", "producto", "proeza", "profesor", "programa", "prole", "promesa", "pronto", "propio", "próximo",
43010 "prueba", "público", "puchero", "pudor", "pueblo", "puerta", "puesto", "pulga", "pulir", "pulmón",
43011 "pulpo", "pulso", "puma", "punto", "puñal", "puño", "pupa", "pupila", "puré", "quedar",
43012 "queja", "quemar", "querer", "queso", "quieto", "química", "quince", "quitar", "rábano", "rabia",
43013 "rabo", "ración", "radical", "raíz", "rama", "rampa", "rancho", "rango", "rapaz", "rápido",
43014 "rapto", "rasgo", "raspa", "rato", "rayo", "raza", "razón", "reacción", "realidad", "rebaño",
43015 "rebote", "recaer", "receta", "rechazo", "recoger", "recreo", "recto", "recurso", "red", "redondo",
43016 "reducir", "reflejo", "reforma", "refrán", "refugio", "regalo", "regir", "regla", "regreso", "rehén",
43017 "reino", "reír", "reja", "relato", "relevo", "relieve", "relleno", "reloj", "remar", "remedio",
43018 "remo", "rencor", "rendir", "renta", "reparto", "repetir", "reposo", "reptil", "res", "rescate",
43019 "resina", "respeto", "resto", "resumen", "retiro", "retorno", "retrato", "reunir", "revés", "revista",
43020 "rey", "rezar", "rico", "riego", "rienda", "riesgo", "rifa", "rígido", "rigor", "rincón",
43021 "riñón", "río", "riqueza", "risa", "ritmo", "rito", "rizo", "roble", "roce", "rociar",
43022 "rodar", "rodeo", "rodilla", "roer", "rojizo", "rojo", "romero", "romper", "ron", "ronco",
43023 "ronda", "ropa", "ropero", "rosa", "rosca", "rostro", "rotar", "rubí", "rubor", "rudo",
43024 "rueda", "rugir", "ruido", "ruina", "ruleta", "rulo", "rumbo", "rumor", "ruptura", "ruta",
43025 "rutina", "sábado", "saber", "sabio", "sable", "sacar", "sagaz", "sagrado", "sala", "saldo",
43026 "salero", "salir", "salmón", "salón", "salsa", "salto", "salud", "salvar", "samba", "sanción",
43027 "sandía", "sanear", "sangre", "sanidad", "sano", "santo", "sapo", "saque", "sardina", "sartén",
43028 "sastre", "satán", "sauna", "saxofón", "sección", "seco", "secreto", "secta", "sed", "seguir",
43029 "seis", "sello", "selva", "semana", "semilla", "senda", "sensor", "señal", "señor", "separar",
43030 "sepia", "sequía", "ser", "serie", "sermón", "servir", "sesenta", "sesión", "seta", "setenta",
43031 "severo", "sexo", "sexto", "sidra", "siesta", "siete", "siglo", "signo", "sílaba", "silbar",
43032 "silencio", "silla", "símbolo", "simio", "sirena", "sistema", "sitio", "situar", "sobre", "socio",
43033 "sodio", "sol", "solapa", "soldado", "soledad", "sólido", "soltar", "solución", "sombra", "sondeo",
43034 "sonido", "sonoro", "sonrisa", "sopa", "soplar", "soporte", "sordo", "sorpresa", "sorteo", "sostén",
43035 "sótano", "suave", "subir", "suceso", "sudor", "suegra", "suelo", "sueño", "suerte", "sufrir",
43036 "sujeto", "sultán", "sumar", "superar", "suplir", "suponer", "supremo", "sur", "surco", "sureño",
43037 "surgir", "susto", "sutil", "tabaco", "tabique", "tabla", "tabú", "taco", "tacto", "tajo",
43038 "talar", "talco", "talento", "talla", "talón", "tamaño", "tambor", "tango", "tanque", "tapa",
43039 "tapete", "tapia", "tapón", "taquilla", "tarde", "tarea", "tarifa", "tarjeta", "tarot", "tarro",
43040 "tarta", "tatuaje", "tauro", "taza", "tazón", "teatro", "techo", "tecla", "técnica", "tejado",
43041 "tejer", "tejido", "tela", "teléfono", "tema", "temor", "templo", "tenaz", "tender", "tener",
43042 "tenis", "tenso", "teoría", "terapia", "terco", "término", "ternura", "terror", "tesis", "tesoro",
43043 "testigo", "tetera", "texto", "tez", "tibio", "tiburón", "tiempo", "tienda", "tierra", "tieso",
43044 "tigre", "tijera", "tilde", "timbre", "tímido", "timo", "tinta", "tío", "típico", "tipo",
43045 "tira", "tirón", "titán", "títere", "título", "tiza", "toalla", "tobillo", "tocar", "tocino",
43046 "todo", "toga", "toldo", "tomar", "tono", "tonto", "topar", "tope", "toque", "tórax",
43047 "torero", "tormenta", "torneo", "toro", "torpedo", "torre", "torso", "tortuga", "tos", "tosco",
43048 "toser", "tóxico", "trabajo", "tractor", "traer", "tráfico", "trago", "traje", "tramo", "trance",
43049 "trato", "trauma", "trazar", "trébol", "tregua", "treinta", "tren", "trepar", "tres", "tribu",
43050 "trigo", "tripa", "triste", "triunfo", "trofeo", "trompa", "tronco", "tropa", "trote", "trozo",
43051 "truco", "trueno", "trufa", "tubería", "tubo", "tuerto", "tumba", "tumor", "túnel", "túnica",
43052 "turbina", "turismo", "turno", "tutor", "ubicar", "úlcera", "umbral", "unidad", "unir", "universo",
43053 "uno", "untar", "uña", "urbano", "urbe", "urgente", "urna", "usar", "usuario", "útil",
43054 "utopía", "uva", "vaca", "vacío", "vacuna", "vagar", "vago", "vaina", "vajilla", "vale",
43055 "válido", "valle", "valor", "válvula", "vampiro", "vara", "variar", "varón", "vaso", "vecino",
43056 "vector", "vehículo", "veinte", "vejez", "vela", "velero", "veloz", "vena", "vencer", "venda",
43057 "veneno", "vengar", "venir", "venta", "venus", "ver", "verano", "verbo", "verde", "vereda",
43058 "verja", "verso", "verter", "vía", "viaje", "vibrar", "vicio", "víctima", "vida", "vídeo",
43059 "vidrio", "viejo", "viernes", "vigor", "vil", "villa", "vinagre", "vino", "viñedo", "violín",
43060 "viral", "virgo", "virtud", "visor", "víspera", "vista", "vitamina", "viudo", "vivaz", "vivero",
43061 "vivir", "vivo", "volcán", "volumen", "volver", "voraz", "votar", "voto", "voz", "vuelo",
43062 "vulgar", "yacer", "yate", "yegua", "yema", "yerno", "yeso", "yodo", "yoga", "yogur",
43063 "zafiro", "zanja", "zapato", "zarza", "zona", "zorro", "zumo", "zurdo"]
43064 </script>
43065 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
43066 WORDLISTS["chinese_simplified"] = [
43067 "的", "一", "是", "在", "不", "了", "有", "和", "人", "这",
43068 "中", "大", "为", "上", "个", "国", "我", "以", "要", "他",
43069 "时", "来", "用", "们", "生", "到", "作", "地", "于", "出",
43070 "就", "分", "对", "成", "会", "可", "主", "发", "年", "动",
43071 "同", "工", "也", "能", "下", "过", "子", "说", "产", "种",
43072 "面", "而", "方", "后", "多", "定", "行", "学", "法", "所",
43073 "民", "得", "经", "十", "三", "之", "进", "着", "等", "部",
43074 "度", "家", "电", "力", "里", "如", "水", "化", "高", "自",
43075 "二", "理", "起", "小", "物", "现", "实", "加", "量", "都",
43076 "两", "体", "制", "机", "当", "使", "点", "从", "业", "本",
43077 "去", "把", "性", "好", "应", "开", "它", "合", "还", "因",
43078 "由", "其", "些", "然", "前", "外", "天", "政", "四", "日",
43079 "那", "社", "义", "事", "平", "形", "相", "全", "表", "间",
43080 "样", "与", "关", "各", "重", "新", "线", "内", "数", "正",
43081 "心", "反", "你", "明", "看", "原", "又", "么", "利", "比",
43082 "或", "但", "质", "气", "第", "向", "道", "命", "此", "变",
43083 "条", "只", "没", "结", "解", "问", "意", "建", "月", "公",
43084 "无", "系", "军", "很", "情", "者", "最", "立", "代", "想",
43085 "已", "通", "并", "提", "直", "题", "党", "程", "展", "五",
43086 "果", "料", "象", "员", "革", "位", "入", "常", "文", "总",
43087 "次", "品", "式", "活", "设", "及", "管", "特", "件", "长",
43088 "求", "老", "头", "基", "资", "边", "流", "路", "级", "少",
43089 "图", "山", "统", "接", "知", "较", "将", "组", "见", "计",
43090 "别", "她", "手", "角", "期", "根", "论", "运", "农", "指",
43091 "几", "九", "区", "强", "放", "决", "西", "被", "干", "做",
43092 "必", "战", "先", "回", "则", "任", "取", "据", "处", "队",
43093 "南", "给", "色", "光", "门", "即", "保", "治", "北", "造",
43094 "百", "规", "热", "领", "七", "海", "口", "东", "导", "器",
43095 "压", "志", "世", "金", "增", "争", "济", "阶", "油", "思",
43096 "术", "极", "交", "受", "联", "什", "认", "六", "共", "权",
43097 "收", "证", "改", "清", "美", "再", "采", "转", "更", "单",
43098 "风", "切", "打", "白", "教", "速", "花", "带", "安", "场",
43099 "身", "车", "例", "真", "务", "具", "万", "每", "目", "至",
43100 "达", "走", "积", "示", "议", "声", "报", "斗", "完", "类",
43101 "八", "离", "华", "名", "确", "才", "科", "张", "信", "马",
43102 "节", "话", "米", "整", "空", "元", "况", "今", "集", "温",
43103 "传", "土", "许", "步", "群", "广", "石", "记", "需", "段",
43104 "研", "界", "拉", "林", "律", "叫", "且", "究", "观", "越",
43105 "织", "装", "影", "算", "低", "持", "音", "众", "书", "布",
43106 "复", "容", "儿", "须", "际", "商", "非", "验", "连", "断",
43107 "深", "难", "近", "矿", "千", "周", "委", "素", "技", "备",
43108 "半", "办", "青", "省", "列", "习", "响", "约", "支", "般",
43109 "史", "感", "劳", "便", "团", "往", "酸", "历", "市", "克",
43110 "何", "除", "消", "构", "府", "称", "太", "准", "精", "值",
43111 "号", "率", "族", "维", "划", "选", "标", "写", "存", "候",
43112 "毛", "亲", "快", "效", "斯", "院", "查", "江", "型", "眼",
43113 "王", "按", "格", "养", "易", "置", "派", "层", "片", "始",
43114 "却", "专", "状", "育", "厂", "京", "识", "适", "属", "圆",
43115 "包", "火", "住", "调", "满", "县", "局", "照", "参", "红",
43116 "细", "引", "听", "该", "铁", "价", "严", "首", "底", "液",
43117 "官", "德", "随", "病", "苏", "失", "尔", "死", "讲", "配",
43118 "女", "黄", "推", "显", "谈", "罪", "神", "艺", "呢", "席",
43119 "含", "企", "望", "密", "批", "营", "项", "防", "举", "球",
43120 "英", "氧", "势", "告", "李", "台", "落", "木", "帮", "轮",
43121 "破", "亚", "师", "围", "注", "远", "字", "材", "排", "供",
43122 "河", "态", "封", "另", "施", "减", "树", "溶", "怎", "止",
43123 "案", "言", "士", "均", "武", "固", "叶", "鱼", "波", "视",
43124 "仅", "费", "紧", "爱", "左", "章", "早", "朝", "害", "续",
43125 "轻", "服", "试", "食", "充", "兵", "源", "判", "护", "司",
43126 "足", "某", "练", "差", "致", "板", "田", "降", "黑", "犯",
43127 "负", "击", "范", "继", "兴", "似", "余", "坚", "曲", "输",
43128 "修", "故", "城", "夫", "够", "送", "笔", "船", "占", "右",
43129 "财", "吃", "富", "春", "职", "觉", "汉", "画", "功", "巴",
43130 "跟", "虽", "杂", "飞", "检", "吸", "助", "升", "阳", "互",
43131 "初", "创", "抗", "考", "投", "坏", "策", "古", "径", "换",
43132 "未", "跑", "留", "钢", "曾", "端", "责", "站", "简", "述",
43133 "钱", "副", "尽", "帝", "射", "草", "冲", "承", "独", "令",
43134 "限", "阿", "宣", "环", "双", "请", "超", "微", "让", "控",
43135 "州", "良", "轴", "找", "否", "纪", "益", "依", "优", "顶",
43136 "础", "载", "倒", "房", "突", "坐", "粉", "敌", "略", "客",
43137 "袁", "冷", "胜", "绝", "析", "块", "剂", "测", "丝", "协",
43138 "诉", "念", "陈", "仍", "罗", "盐", "友", "洋", "错", "苦",
43139 "夜", "刑", "移", "频", "逐", "靠", "混", "母", "短", "皮",
43140 "终", "聚", "汽", "村", "云", "哪", "既", "距", "卫", "停",
43141 "烈", "央", "察", "烧", "迅", "境", "若", "印", "洲", "刻",
43142 "括", "激", "孔", "搞", "甚", "室", "待", "核", "校", "散",
43143 "侵", "吧", "甲", "游", "久", "菜", "味", "旧", "模", "湖",
43144 "货", "损", "预", "阻", "毫", "普", "稳", "乙", "妈", "植",
43145 "息", "扩", "银", "语", "挥", "酒", "守", "拿", "序", "纸",
43146 "医", "缺", "雨", "吗", "针", "刘", "啊", "急", "唱", "误",
43147 "训", "愿", "审", "附", "获", "茶", "鲜", "粮", "斤", "孩",
43148 "脱", "硫", "肥", "善", "龙", "演", "父", "渐", "血", "欢",
43149 "械", "掌", "歌", "沙", "刚", "攻", "谓", "盾", "讨", "晚",
43150 "粒", "乱", "燃", "矛", "乎", "杀", "药", "宁", "鲁", "贵",
43151 "钟", "煤", "读", "班", "伯", "香", "介", "迫", "句", "丰",
43152 "培", "握", "兰", "担", "弦", "蛋", "沉", "假", "穿", "执",
43153 "答", "乐", "谁", "顺", "烟", "缩", "征", "脸", "喜", "松",
43154 "脚", "困", "异", "免", "背", "星", "福", "买", "染", "井",
43155 "概", "慢", "怕", "磁", "倍", "祖", "皇", "促", "静", "补",
43156 "评", "翻", "肉", "践", "尼", "衣", "宽", "扬", "棉", "希",
43157 "伤", "操", "垂", "秋", "宜", "氢", "套", "督", "振", "架",
43158 "亮", "末", "宪", "庆", "编", "牛", "触", "映", "雷", "销",
43159 "诗", "座", "居", "抓", "裂", "胞", "呼", "娘", "景", "威",
43160 "绿", "晶", "厚", "盟", "衡", "鸡", "孙", "延", "危", "胶",
43161 "屋", "乡", "临", "陆", "顾", "掉", "呀", "灯", "岁", "措",
43162 "束", "耐", "剧", "玉", "赵", "跳", "哥", "季", "课", "凯",
43163 "胡", "额", "款", "绍", "卷", "齐", "伟", "蒸", "殖", "永",
43164 "宗", "苗", "川", "炉", "岩", "弱", "零", "杨", "奏", "沿",
43165 "露", "杆", "探", "滑", "镇", "饭", "浓", "航", "怀", "赶",
43166 "库", "夺", "伊", "灵", "税", "途", "灭", "赛", "归", "召",
43167 "鼓", "播", "盘", "裁", "险", "康", "唯", "录", "菌", "纯",
43168 "借", "糖", "盖", "横", "符", "私", "努", "堂", "域", "枪",
43169 "润", "幅", "哈", "竟", "熟", "虫", "泽", "脑", "壤", "碳",
43170 "欧", "遍", "侧", "寨", "敢", "彻", "虑", "斜", "薄", "庭",
43171 "纳", "弹", "饲", "伸", "折", "麦", "湿", "暗", "荷", "瓦",
43172 "塞", "床", "筑", "恶", "户", "访", "塔", "奇", "透", "梁",
43173 "刀", "旋", "迹", "卡", "氯", "遇", "份", "毒", "泥", "退",
43174 "洗", "摆", "灰", "彩", "卖", "耗", "夏", "择", "忙", "铜",
43175 "献", "硬", "予", "繁", "圈", "雪", "函", "亦", "抽", "篇",
43176 "阵", "阴", "丁", "尺", "追", "堆", "雄", "迎", "泛", "爸",
43177 "楼", "避", "谋", "吨", "野", "猪", "旗", "累", "偏", "典",
43178 "馆", "索", "秦", "脂", "潮", "爷", "豆", "忽", "托", "惊",
43179 "塑", "遗", "愈", "朱", "替", "纤", "粗", "倾", "尚", "痛",
43180 "楚", "谢", "奋", "购", "磨", "君", "池", "旁", "碎", "骨",
43181 "监", "捕", "弟", "暴", "割", "贯", "殊", "释", "词", "亡",
43182 "壁", "顿", "宝", "午", "尘", "闻", "揭", "炮", "残", "冬",
43183 "桥", "妇", "警", "综", "招", "吴", "付", "浮", "遭", "徐",
43184 "您", "摇", "谷", "赞", "箱", "隔", "订", "男", "吹", "园",
43185 "纷", "唐", "败", "宋", "玻", "巨", "耕", "坦", "荣", "闭",
43186 "湾", "键", "凡", "驻", "锅", "救", "恩", "剥", "凝", "碱",
43187 "齿", "截", "炼", "麻", "纺", "禁", "废", "盛", "版", "缓",
43188 "净", "睛", "昌", "婚", "涉", "筒", "嘴", "插", "岸", "朗",
43189 "庄", "街", "藏", "姑", "贸", "腐", "奴", "啦", "惯", "乘",
43190 "伙", "恢", "匀", "纱", "扎", "辩", "耳", "彪", "臣", "亿",
43191 "璃", "抵", "脉", "秀", "萨", "俄", "网", "舞", "店", "喷",
43192 "纵", "寸", "汗", "挂", "洪", "贺", "闪", "柬", "爆", "烯",
43193 "津", "稻", "墙", "软", "勇", "像", "滚", "厘", "蒙", "芳",
43194 "肯", "坡", "柱", "荡", "腿", "仪", "旅", "尾", "轧", "冰",
43195 "贡", "登", "黎", "削", "钻", "勒", "逃", "障", "氨", "郭",
43196 "峰", "币", "港", "伏", "轨", "亩", "毕", "擦", "莫", "刺",
43197 "浪", "秘", "援", "株", "健", "售", "股", "岛", "甘", "泡",
43198 "睡", "童", "铸", "汤", "阀", "休", "汇", "舍", "牧", "绕",
43199 "炸", "哲", "磷", "绩", "朋", "淡", "尖", "启", "陷", "柴",
43200 "呈", "徒", "颜", "泪", "稍", "忘", "泵", "蓝", "拖", "洞",
43201 "授", "镜", "辛", "壮", "锋", "贫", "虚", "弯", "摩", "泰",
43202 "幼", "廷", "尊", "窗", "纲", "弄", "隶", "疑", "氏", "宫",
43203 "姐", "震", "瑞", "怪", "尤", "琴", "循", "描", "膜", "违",
43204 "夹", "腰", "缘", "珠", "穷", "森", "枝", "竹", "沟", "催",
43205 "绳", "忆", "邦", "剩", "幸", "浆", "栏", "拥", "牙", "贮",
43206 "礼", "滤", "钠", "纹", "罢", "拍", "咱", "喊", "袖", "埃",
43207 "勤", "罚", "焦", "潜", "伍", "墨", "欲", "缝", "姓", "刊",
43208 "饱", "仿", "奖", "铝", "鬼", "丽", "跨", "默", "挖", "链",
43209 "扫", "喝", "袋", "炭", "污", "幕", "诸", "弧", "励", "梅",
43210 "奶", "洁", "灾", "舟", "鉴", "苯", "讼", "抱", "毁", "懂",
43211 "寒", "智", "埔", "寄", "届", "跃", "渡", "挑", "丹", "艰",
43212 "贝", "碰", "拔", "爹", "戴", "码", "梦", "芽", "熔", "赤",
43213 "渔", "哭", "敬", "颗", "奔", "铅", "仲", "虎", "稀", "妹",
43214 "乏", "珍", "申", "桌", "遵", "允", "隆", "螺", "仓", "魏",
43215 "锐", "晓", "氮", "兼", "隐", "碍", "赫", "拨", "忠", "肃",
43216 "缸", "牵", "抢", "博", "巧", "壳", "兄", "杜", "讯", "诚",
43217 "碧", "祥", "柯", "页", "巡", "矩", "悲", "灌", "龄", "伦",
43218 "票", "寻", "桂", "铺", "圣", "恐", "恰", "郑", "趣", "抬",
43219 "荒", "腾", "贴", "柔", "滴", "猛", "阔", "辆", "妻", "填",
43220 "撤", "储", "签", "闹", "扰", "紫", "砂", "递", "戏", "吊",
43221 "陶", "伐", "喂", "疗", "瓶", "婆", "抚", "臂", "摸", "忍",
43222 "虾", "蜡", "邻", "胸", "巩", "挤", "偶", "弃", "槽", "劲",
43223 "乳", "邓", "吉", "仁", "烂", "砖", "租", "乌", "舰", "伴",
43224 "瓜", "浅", "丙", "暂", "燥", "橡", "柳", "迷", "暖", "牌",
43225 "秧", "胆", "详", "簧", "踏", "瓷", "谱", "呆", "宾", "糊",
43226 "洛", "辉", "愤", "竞", "隙", "怒", "粘", "乃", "绪", "肩",
43227 "籍", "敏", "涂", "熙", "皆", "侦", "悬", "掘", "享", "纠",
43228 "醒", "狂", "锁", "淀", "恨", "牲", "霸", "爬", "赏", "逆",
43229 "玩", "陵", "祝", "秒", "浙", "貌", "役", "彼", "悉", "鸭",
43230 "趋", "凤", "晨", "畜", "辈", "秩", "卵", "署", "梯", "炎",
43231 "滩", "棋", "驱", "筛", "峡", "冒", "啥", "寿", "译", "浸",
43232 "泉", "帽", "迟", "硅", "疆", "贷", "漏", "稿", "冠", "嫩",
43233 "胁", "芯", "牢", "叛", "蚀", "奥", "鸣", "岭", "羊", "凭",
43234 "串", "塘", "绘", "酵", "融", "盆", "锡", "庙", "筹", "冻",
43235 "辅", "摄", "袭", "筋", "拒", "僚", "旱", "钾", "鸟", "漆",
43236 "沈", "眉", "疏", "添", "棒", "穗", "硝", "韩", "逼", "扭",
43237 "侨", "凉", "挺", "碗", "栽", "炒", "杯", "患", "馏", "劝",
43238 "豪", "辽", "勃", "鸿", "旦", "吏", "拜", "狗", "埋", "辊",
43239 "掩", "饮", "搬", "骂", "辞", "勾", "扣", "估", "蒋", "绒",
43240 "雾", "丈", "朵", "姆", "拟", "宇", "辑", "陕", "雕", "偿",
43241 "蓄", "崇", "剪", "倡", "厅", "咬", "驶", "薯", "刷", "斥",
43242 "番", "赋", "奉", "佛", "浇", "漫", "曼", "扇", "钙", "桃",
43243 "扶", "仔", "返", "俗", "亏", "腔", "鞋", "棱", "覆", "框",
43244 "悄", "叔", "撞", "骗", "勘", "旺", "沸", "孤", "吐", "孟",
43245 "渠", "屈", "疾", "妙", "惜", "仰", "狠", "胀", "谐", "抛",
43246 "霉", "桑", "岗", "嘛", "衰", "盗", "渗", "脏", "赖", "涌",
43247 "甜", "曹", "阅", "肌", "哩", "厉", "烃", "纬", "毅", "昨",
43248 "伪", "症", "煮", "叹", "钉", "搭", "茎", "笼", "酷", "偷",
43249 "弓", "锥", "恒", "杰", "坑", "鼻", "翼", "纶", "叙", "狱",
43250 "逮", "罐", "络", "棚", "抑", "膨", "蔬", "寺", "骤", "穆",
43251 "冶", "枯", "册", "尸", "凸", "绅", "坯", "牺", "焰", "轰",
43252 "欣", "晋", "瘦", "御", "锭", "锦", "丧", "旬", "锻", "垄",
43253 "搜", "扑", "邀", "亭", "酯", "迈", "舒", "脆", "酶", "闲",
43254 "忧", "酚", "顽", "羽", "涨", "卸", "仗", "陪", "辟", "惩",
43255 "杭", "姚", "肚", "捉", "飘", "漂", "昆", "欺", "吾", "郎",
43256 "烷", "汁", "呵", "饰", "萧", "雅", "邮", "迁", "燕", "撒",
43257 "姻", "赴", "宴", "烦", "债", "帐", "斑", "铃", "旨", "醇",
43258 "董", "饼", "雏", "姿", "拌", "傅", "腹", "妥", "揉", "贤",
43259 "拆", "歪", "葡", "胺", "丢", "浩", "徽", "昂", "垫", "挡",
43260 "览", "贪", "慰", "缴", "汪", "慌", "冯", "诺", "姜", "谊",
43261 "凶", "劣", "诬", "耀", "昏", "躺", "盈", "骑", "乔", "溪",
43262 "丛", "卢", "抹", "闷", "咨", "刮", "驾", "缆", "悟", "摘",
43263 "铒", "掷", "颇", "幻", "柄", "惠", "惨", "佳", "仇", "腊",
43264 "窝", "涤", "剑", "瞧", "堡", "泼", "葱", "罩", "霍", "捞",
43265 "胎", "苍", "滨", "俩", "捅", "湘", "砍", "霞", "邵", "萄",
43266 "疯", "淮", "遂", "熊", "粪", "烘", "宿", "档", "戈", "驳",
43267 "嫂", "裕", "徙", "箭", "捐", "肠", "撑", "晒", "辨", "殿",
43268 "莲", "摊", "搅", "酱", "屏", "疫", "哀", "蔡", "堵", "沫",
43269 "皱", "畅", "叠", "阁", "莱", "敲", "辖", "钩", "痕", "坝",
43270 "巷", "饿", "祸", "丘", "玄", "溜", "曰", "逻", "彭", "尝",
43271 "卿", "妨", "艇", "吞", "韦", "怨", "矮", "歇" ]
43272 </script>
43273 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
43274 WORDLISTS["chinese_traditional"] = [
43275 "的", "一", "是", "在", "不", "了", "有", "和", "人", "這",
43276 "中", "大", "為", "上", "個", "國", "我", "以", "要", "他",
43277 "時", "來", "用", "們", "生", "到", "作", "地", "於", "出",
43278 "就", "分", "對", "成", "會", "可", "主", "發", "年", "動",
43279 "同", "工", "也", "能", "下", "過", "子", "說", "產", "種",
43280 "面", "而", "方", "後", "多", "定", "行", "學", "法", "所",
43281 "民", "得", "經", "十", "三", "之", "進", "著", "等", "部",
43282 "度", "家", "電", "力", "裡", "如", "水", "化", "高", "自",
43283 "二", "理", "起", "小", "物", "現", "實", "加", "量", "都",
43284 "兩", "體", "制", "機", "當", "使", "點", "從", "業", "本",
43285 "去", "把", "性", "好", "應", "開", "它", "合", "還", "因",
43286 "由", "其", "些", "然", "前", "外", "天", "政", "四", "日",
43287 "那", "社", "義", "事", "平", "形", "相", "全", "表", "間",
43288 "樣", "與", "關", "各", "重", "新", "線", "內", "數", "正",
43289 "心", "反", "你", "明", "看", "原", "又", "麼", "利", "比",
43290 "或", "但", "質", "氣", "第", "向", "道", "命", "此", "變",
43291 "條", "只", "沒", "結", "解", "問", "意", "建", "月", "公",
43292 "無", "系", "軍", "很", "情", "者", "最", "立", "代", "想",
43293 "已", "通", "並", "提", "直", "題", "黨", "程", "展", "五",
43294 "果", "料", "象", "員", "革", "位", "入", "常", "文", "總",
43295 "次", "品", "式", "活", "設", "及", "管", "特", "件", "長",
43296 "求", "老", "頭", "基", "資", "邊", "流", "路", "級", "少",
43297 "圖", "山", "統", "接", "知", "較", "將", "組", "見", "計",
43298 "別", "她", "手", "角", "期", "根", "論", "運", "農", "指",
43299 "幾", "九", "區", "強", "放", "決", "西", "被", "幹", "做",
43300 "必", "戰", "先", "回", "則", "任", "取", "據", "處", "隊",
43301 "南", "給", "色", "光", "門", "即", "保", "治", "北", "造",
43302 "百", "規", "熱", "領", "七", "海", "口", "東", "導", "器",
43303 "壓", "志", "世", "金", "增", "爭", "濟", "階", "油", "思",
43304 "術", "極", "交", "受", "聯", "什", "認", "六", "共", "權",
43305 "收", "證", "改", "清", "美", "再", "採", "轉", "更", "單",
43306 "風", "切", "打", "白", "教", "速", "花", "帶", "安", "場",
43307 "身", "車", "例", "真", "務", "具", "萬", "每", "目", "至",
43308 "達", "走", "積", "示", "議", "聲", "報", "鬥", "完", "類",
43309 "八", "離", "華", "名", "確", "才", "科", "張", "信", "馬",
43310 "節", "話", "米", "整", "空", "元", "況", "今", "集", "溫",
43311 "傳", "土", "許", "步", "群", "廣", "石", "記", "需", "段",
43312 "研", "界", "拉", "林", "律", "叫", "且", "究", "觀", "越",
43313 "織", "裝", "影", "算", "低", "持", "音", "眾", "書", "布",
43314 "复", "容", "兒", "須", "際", "商", "非", "驗", "連", "斷",
43315 "深", "難", "近", "礦", "千", "週", "委", "素", "技", "備",
43316 "半", "辦", "青", "省", "列", "習", "響", "約", "支", "般",
43317 "史", "感", "勞", "便", "團", "往", "酸", "歷", "市", "克",
43318 "何", "除", "消", "構", "府", "稱", "太", "準", "精", "值",
43319 "號", "率", "族", "維", "劃", "選", "標", "寫", "存", "候",
43320 "毛", "親", "快", "效", "斯", "院", "查", "江", "型", "眼",
43321 "王", "按", "格", "養", "易", "置", "派", "層", "片", "始",
43322 "卻", "專", "狀", "育", "廠", "京", "識", "適", "屬", "圓",
43323 "包", "火", "住", "調", "滿", "縣", "局", "照", "參", "紅",
43324 "細", "引", "聽", "該", "鐵", "價", "嚴", "首", "底", "液",
43325 "官", "德", "隨", "病", "蘇", "失", "爾", "死", "講", "配",
43326 "女", "黃", "推", "顯", "談", "罪", "神", "藝", "呢", "席",
43327 "含", "企", "望", "密", "批", "營", "項", "防", "舉", "球",
43328 "英", "氧", "勢", "告", "李", "台", "落", "木", "幫", "輪",
43329 "破", "亞", "師", "圍", "注", "遠", "字", "材", "排", "供",
43330 "河", "態", "封", "另", "施", "減", "樹", "溶", "怎", "止",
43331 "案", "言", "士", "均", "武", "固", "葉", "魚", "波", "視",
43332 "僅", "費", "緊", "愛", "左", "章", "早", "朝", "害", "續",
43333 "輕", "服", "試", "食", "充", "兵", "源", "判", "護", "司",
43334 "足", "某", "練", "差", "致", "板", "田", "降", "黑", "犯",
43335 "負", "擊", "范", "繼", "興", "似", "餘", "堅", "曲", "輸",
43336 "修", "故", "城", "夫", "夠", "送", "筆", "船", "佔", "右",
43337 "財", "吃", "富", "春", "職", "覺", "漢", "畫", "功", "巴",
43338 "跟", "雖", "雜", "飛", "檢", "吸", "助", "昇", "陽", "互",
43339 "初", "創", "抗", "考", "投", "壞", "策", "古", "徑", "換",
43340 "未", "跑", "留", "鋼", "曾", "端", "責", "站", "簡", "述",
43341 "錢", "副", "盡", "帝", "射", "草", "衝", "承", "獨", "令",
43342 "限", "阿", "宣", "環", "雙", "請", "超", "微", "讓", "控",
43343 "州", "良", "軸", "找", "否", "紀", "益", "依", "優", "頂",
43344 "礎", "載", "倒", "房", "突", "坐", "粉", "敵", "略", "客",
43345 "袁", "冷", "勝", "絕", "析", "塊", "劑", "測", "絲", "協",
43346 "訴", "念", "陳", "仍", "羅", "鹽", "友", "洋", "錯", "苦",
43347 "夜", "刑", "移", "頻", "逐", "靠", "混", "母", "短", "皮",
43348 "終", "聚", "汽", "村", "雲", "哪", "既", "距", "衛", "停",
43349 "烈", "央", "察", "燒", "迅", "境", "若", "印", "洲", "刻",
43350 "括", "激", "孔", "搞", "甚", "室", "待", "核", "校", "散",
43351 "侵", "吧", "甲", "遊", "久", "菜", "味", "舊", "模", "湖",
43352 "貨", "損", "預", "阻", "毫", "普", "穩", "乙", "媽", "植",
43353 "息", "擴", "銀", "語", "揮", "酒", "守", "拿", "序", "紙",
43354 "醫", "缺", "雨", "嗎", "針", "劉", "啊", "急", "唱", "誤",
43355 "訓", "願", "審", "附", "獲", "茶", "鮮", "糧", "斤", "孩",
43356 "脫", "硫", "肥", "善", "龍", "演", "父", "漸", "血", "歡",
43357 "械", "掌", "歌", "沙", "剛", "攻", "謂", "盾", "討", "晚",
43358 "粒", "亂", "燃", "矛", "乎", "殺", "藥", "寧", "魯", "貴",
43359 "鐘", "煤", "讀", "班", "伯", "香", "介", "迫", "句", "豐",
43360 "培", "握", "蘭", "擔", "弦", "蛋", "沉", "假", "穿", "執",
43361 "答", "樂", "誰", "順", "煙", "縮", "徵", "臉", "喜", "松",
43362 "腳", "困", "異", "免", "背", "星", "福", "買", "染", "井",
43363 "概", "慢", "怕", "磁", "倍", "祖", "皇", "促", "靜", "補",
43364 "評", "翻", "肉", "踐", "尼", "衣", "寬", "揚", "棉", "希",
43365 "傷", "操", "垂", "秋", "宜", "氫", "套", "督", "振", "架",
43366 "亮", "末", "憲", "慶", "編", "牛", "觸", "映", "雷", "銷",
43367 "詩", "座", "居", "抓", "裂", "胞", "呼", "娘", "景", "威",
43368 "綠", "晶", "厚", "盟", "衡", "雞", "孫", "延", "危", "膠",
43369 "屋", "鄉", "臨", "陸", "顧", "掉", "呀", "燈", "歲", "措",
43370 "束", "耐", "劇", "玉", "趙", "跳", "哥", "季", "課", "凱",
43371 "胡", "額", "款", "紹", "卷", "齊", "偉", "蒸", "殖", "永",
43372 "宗", "苗", "川", "爐", "岩", "弱", "零", "楊", "奏", "沿",
43373 "露", "桿", "探", "滑", "鎮", "飯", "濃", "航", "懷", "趕",
43374 "庫", "奪", "伊", "靈", "稅", "途", "滅", "賽", "歸", "召",
43375 "鼓", "播", "盤", "裁", "險", "康", "唯", "錄", "菌", "純",
43376 "借", "糖", "蓋", "橫", "符", "私", "努", "堂", "域", "槍",
43377 "潤", "幅", "哈", "竟", "熟", "蟲", "澤", "腦", "壤", "碳",
43378 "歐", "遍", "側", "寨", "敢", "徹", "慮", "斜", "薄", "庭",
43379 "納", "彈", "飼", "伸", "折", "麥", "濕", "暗", "荷", "瓦",
43380 "塞", "床", "築", "惡", "戶", "訪", "塔", "奇", "透", "梁",
43381 "刀", "旋", "跡", "卡", "氯", "遇", "份", "毒", "泥", "退",
43382 "洗", "擺", "灰", "彩", "賣", "耗", "夏", "擇", "忙", "銅",
43383 "獻", "硬", "予", "繁", "圈", "雪", "函", "亦", "抽", "篇",
43384 "陣", "陰", "丁", "尺", "追", "堆", "雄", "迎", "泛", "爸",
43385 "樓", "避", "謀", "噸", "野", "豬", "旗", "累", "偏", "典",
43386 "館", "索", "秦", "脂", "潮", "爺", "豆", "忽", "托", "驚",
43387 "塑", "遺", "愈", "朱", "替", "纖", "粗", "傾", "尚", "痛",
43388 "楚", "謝", "奮", "購", "磨", "君", "池", "旁", "碎", "骨",
43389 "監", "捕", "弟", "暴", "割", "貫", "殊", "釋", "詞", "亡",
43390 "壁", "頓", "寶", "午", "塵", "聞", "揭", "炮", "殘", "冬",
43391 "橋", "婦", "警", "綜", "招", "吳", "付", "浮", "遭", "徐",
43392 "您", "搖", "谷", "贊", "箱", "隔", "訂", "男", "吹", "園",
43393 "紛", "唐", "敗", "宋", "玻", "巨", "耕", "坦", "榮", "閉",
43394 "灣", "鍵", "凡", "駐", "鍋", "救", "恩", "剝", "凝", "鹼",
43395 "齒", "截", "煉", "麻", "紡", "禁", "廢", "盛", "版", "緩",
43396 "淨", "睛", "昌", "婚", "涉", "筒", "嘴", "插", "岸", "朗",
43397 "莊", "街", "藏", "姑", "貿", "腐", "奴", "啦", "慣", "乘",
43398 "夥", "恢", "勻", "紗", "扎", "辯", "耳", "彪", "臣", "億",
43399 "璃", "抵", "脈", "秀", "薩", "俄", "網", "舞", "店", "噴",
43400 "縱", "寸", "汗", "掛", "洪", "賀", "閃", "柬", "爆", "烯",
43401 "津", "稻", "牆", "軟", "勇", "像", "滾", "厘", "蒙", "芳",
43402 "肯", "坡", "柱", "盪", "腿", "儀", "旅", "尾", "軋", "冰",
43403 "貢", "登", "黎", "削", "鑽", "勒", "逃", "障", "氨", "郭",
43404 "峰", "幣", "港", "伏", "軌", "畝", "畢", "擦", "莫", "刺",
43405 "浪", "秘", "援", "株", "健", "售", "股", "島", "甘", "泡",
43406 "睡", "童", "鑄", "湯", "閥", "休", "匯", "舍", "牧", "繞",
43407 "炸", "哲", "磷", "績", "朋", "淡", "尖", "啟", "陷", "柴",
43408 "呈", "徒", "顏", "淚", "稍", "忘", "泵", "藍", "拖", "洞",
43409 "授", "鏡", "辛", "壯", "鋒", "貧", "虛", "彎", "摩", "泰",
43410 "幼", "廷", "尊", "窗", "綱", "弄", "隸", "疑", "氏", "宮",
43411 "姐", "震", "瑞", "怪", "尤", "琴", "循", "描", "膜", "違",
43412 "夾", "腰", "緣", "珠", "窮", "森", "枝", "竹", "溝", "催",
43413 "繩", "憶", "邦", "剩", "幸", "漿", "欄", "擁", "牙", "貯",
43414 "禮", "濾", "鈉", "紋", "罷", "拍", "咱", "喊", "袖", "埃",
43415 "勤", "罰", "焦", "潛", "伍", "墨", "欲", "縫", "姓", "刊",
43416 "飽", "仿", "獎", "鋁", "鬼", "麗", "跨", "默", "挖", "鏈",
43417 "掃", "喝", "袋", "炭", "污", "幕", "諸", "弧", "勵", "梅",
43418 "奶", "潔", "災", "舟", "鑑", "苯", "訟", "抱", "毀", "懂",
43419 "寒", "智", "埔", "寄", "屆", "躍", "渡", "挑", "丹", "艱",
43420 "貝", "碰", "拔", "爹", "戴", "碼", "夢", "芽", "熔", "赤",
43421 "漁", "哭", "敬", "顆", "奔", "鉛", "仲", "虎", "稀", "妹",
43422 "乏", "珍", "申", "桌", "遵", "允", "隆", "螺", "倉", "魏",
43423 "銳", "曉", "氮", "兼", "隱", "礙", "赫", "撥", "忠", "肅",
43424 "缸", "牽", "搶", "博", "巧", "殼", "兄", "杜", "訊", "誠",
43425 "碧", "祥", "柯", "頁", "巡", "矩", "悲", "灌", "齡", "倫",
43426 "票", "尋", "桂", "鋪", "聖", "恐", "恰", "鄭", "趣", "抬",
43427 "荒", "騰", "貼", "柔", "滴", "猛", "闊", "輛", "妻", "填",
43428 "撤", "儲", "簽", "鬧", "擾", "紫", "砂", "遞", "戲", "吊",
43429 "陶", "伐", "餵", "療", "瓶", "婆", "撫", "臂", "摸", "忍",
43430 "蝦", "蠟", "鄰", "胸", "鞏", "擠", "偶", "棄", "槽", "勁",
43431 "乳", "鄧", "吉", "仁", "爛", "磚", "租", "烏", "艦", "伴",
43432 "瓜", "淺", "丙", "暫", "燥", "橡", "柳", "迷", "暖", "牌",
43433 "秧", "膽", "詳", "簧", "踏", "瓷", "譜", "呆", "賓", "糊",
43434 "洛", "輝", "憤", "競", "隙", "怒", "粘", "乃", "緒", "肩",
43435 "籍", "敏", "塗", "熙", "皆", "偵", "懸", "掘", "享", "糾",
43436 "醒", "狂", "鎖", "淀", "恨", "牲", "霸", "爬", "賞", "逆",
43437 "玩", "陵", "祝", "秒", "浙", "貌", "役", "彼", "悉", "鴨",
43438 "趨", "鳳", "晨", "畜", "輩", "秩", "卵", "署", "梯", "炎",
43439 "灘", "棋", "驅", "篩", "峽", "冒", "啥", "壽", "譯", "浸",
43440 "泉", "帽", "遲", "矽", "疆", "貸", "漏", "稿", "冠", "嫩",
43441 "脅", "芯", "牢", "叛", "蝕", "奧", "鳴", "嶺", "羊", "憑",
43442 "串", "塘", "繪", "酵", "融", "盆", "錫", "廟", "籌", "凍",
43443 "輔", "攝", "襲", "筋", "拒", "僚", "旱", "鉀", "鳥", "漆",
43444 "沈", "眉", "疏", "添", "棒", "穗", "硝", "韓", "逼", "扭",
43445 "僑", "涼", "挺", "碗", "栽", "炒", "杯", "患", "餾", "勸",
43446 "豪", "遼", "勃", "鴻", "旦", "吏", "拜", "狗", "埋", "輥",
43447 "掩", "飲", "搬", "罵", "辭", "勾", "扣", "估", "蔣", "絨",
43448 "霧", "丈", "朵", "姆", "擬", "宇", "輯", "陝", "雕", "償",
43449 "蓄", "崇", "剪", "倡", "廳", "咬", "駛", "薯", "刷", "斥",
43450 "番", "賦", "奉", "佛", "澆", "漫", "曼", "扇", "鈣", "桃",
43451 "扶", "仔", "返", "俗", "虧", "腔", "鞋", "棱", "覆", "框",
43452 "悄", "叔", "撞", "騙", "勘", "旺", "沸", "孤", "吐", "孟",
43453 "渠", "屈", "疾", "妙", "惜", "仰", "狠", "脹", "諧", "拋",
43454 "黴", "桑", "崗", "嘛", "衰", "盜", "滲", "臟", "賴", "湧",
43455 "甜", "曹", "閱", "肌", "哩", "厲", "烴", "緯", "毅", "昨",
43456 "偽", "症", "煮", "嘆", "釘", "搭", "莖", "籠", "酷", "偷",
43457 "弓", "錐", "恆", "傑", "坑", "鼻", "翼", "綸", "敘", "獄",
43458 "逮", "罐", "絡", "棚", "抑", "膨", "蔬", "寺", "驟", "穆",
43459 "冶", "枯", "冊", "屍", "凸", "紳", "坯", "犧", "焰", "轟",
43460 "欣", "晉", "瘦", "禦", "錠", "錦", "喪", "旬", "鍛", "壟",
43461 "搜", "撲", "邀", "亭", "酯", "邁", "舒", "脆", "酶", "閒",
43462 "憂", "酚", "頑", "羽", "漲", "卸", "仗", "陪", "闢", "懲",
43463 "杭", "姚", "肚", "捉", "飄", "漂", "昆", "欺", "吾", "郎",
43464 "烷", "汁", "呵", "飾", "蕭", "雅", "郵", "遷", "燕", "撒",
43465 "姻", "赴", "宴", "煩", "債", "帳", "斑", "鈴", "旨", "醇",
43466 "董", "餅", "雛", "姿", "拌", "傅", "腹", "妥", "揉", "賢",
43467 "拆", "歪", "葡", "胺", "丟", "浩", "徽", "昂", "墊", "擋",
43468 "覽", "貪", "慰", "繳", "汪", "慌", "馮", "諾", "姜", "誼",
43469 "兇", "劣", "誣", "耀", "昏", "躺", "盈", "騎", "喬", "溪",
43470 "叢", "盧", "抹", "悶", "諮", "刮", "駕", "纜", "悟", "摘",
43471 "鉺", "擲", "頗", "幻", "柄", "惠", "慘", "佳", "仇", "臘",
43472 "窩", "滌", "劍", "瞧", "堡", "潑", "蔥", "罩", "霍", "撈",
43473 "胎", "蒼", "濱", "倆", "捅", "湘", "砍", "霞", "邵", "萄",
43474 "瘋", "淮", "遂", "熊", "糞", "烘", "宿", "檔", "戈", "駁",
43475 "嫂", "裕", "徙", "箭", "捐", "腸", "撐", "曬", "辨", "殿",
43476 "蓮", "攤", "攪", "醬", "屏", "疫", "哀", "蔡", "堵", "沫",
43477 "皺", "暢", "疊", "閣", "萊", "敲", "轄", "鉤", "痕", "壩",
43478 "巷", "餓", "禍", "丘", "玄", "溜", "曰", "邏", "彭", "嘗",
43479 "卿", "妨", "艇", "吞", "韋", "怨", "矮", "歇" ]
43480 </script>
43481 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
43482 WORDLISTS["french"] = [
43483 "abaisser", "abandon", "abdiquer", "abeille", "abolir", "aborder", "aboutir", "aboyer", "abrasif", "abreuver",
43484 "abriter", "abroger", "abrupt", "absence", "absolu", "absurde", "abusif", "abyssal", "académie", "acajou",
43485 "acarien", "accabler", "accepter", "acclamer", "accolade", "accroche", "accuser", "acerbe", "achat", "acheter",
43486 "aciduler", "acier", "acompte", "acquérir", "acronyme", "acteur", "actif", "actuel", "adepte", "adéquat",
43487 "adhésif", "adjectif", "adjuger", "admettre", "admirer", "adopter", "adorer", "adoucir", "adresse", "adroit",
43488 "adulte", "adverbe", "aérer", "aéronef", "affaire", "affecter", "affiche", "affreux", "affubler", "agacer",
43489 "agencer", "agile", "agiter", "agrafer", "agréable", "agrume", "aider", "aiguille", "ailier", "aimable",
43490 "aisance", "ajouter", "ajuster", "alarmer", "alchimie", "alerte", "algèbre", "algue", "aliéner", "aliment",
43491 "alléger", "alliage", "allouer", "allumer", "alourdir", "alpaga", "altesse", "alvéole", "amateur", "ambigu",
43492 "ambre", "aménager", "amertume", "amidon", "amiral", "amorcer", "amour", "amovible", "amphibie", "ampleur",
43493 "amusant", "analyse", "anaphore", "anarchie", "anatomie", "ancien", "anéantir", "angle", "angoisse", "anguleux",
43494 "animal", "annexer", "annonce", "annuel", "anodin", "anomalie", "anonyme", "anormal", "antenne", "antidote",
43495 "anxieux", "apaiser", "apéritif", "aplanir", "apologie", "appareil", "appeler", "apporter", "appuyer", "aquarium",
43496 "aqueduc", "arbitre", "arbuste", "ardeur", "ardoise", "argent", "arlequin", "armature", "armement", "armoire",
43497 "armure", "arpenter", "arracher", "arriver", "arroser", "arsenic", "artériel", "article", "aspect", "asphalte",
43498 "aspirer", "assaut", "asservir", "assiette", "associer", "assurer", "asticot", "astre", "astuce", "atelier",
43499 "atome", "atrium", "atroce", "attaque", "attentif", "attirer", "attraper", "aubaine", "auberge", "audace",
43500 "audible", "augurer", "aurore", "automne", "autruche", "avaler", "avancer", "avarice", "avenir", "averse",
43501 "aveugle", "aviateur", "avide", "avion", "aviser", "avoine", "avouer", "avril", "axial", "axiome",
43502 "badge", "bafouer", "bagage", "baguette", "baignade", "balancer", "balcon", "baleine", "balisage", "bambin",
43503 "bancaire", "bandage", "banlieue", "bannière", "banquier", "barbier", "baril", "baron", "barque", "barrage",
43504 "bassin", "bastion", "bataille", "bateau", "batterie", "baudrier", "bavarder", "belette", "bélier", "belote",
43505 "bénéfice", "berceau", "berger", "berline", "bermuda", "besace", "besogne", "bétail", "beurre", "biberon",
43506 "bicycle", "bidule", "bijou", "bilan", "bilingue", "billard", "binaire", "biologie", "biopsie", "biotype",
43507 "biscuit", "bison", "bistouri", "bitume", "bizarre", "blafard", "blague", "blanchir", "blessant", "blinder",
43508 "blond", "bloquer", "blouson", "bobard", "bobine", "boire", "boiser", "bolide", "bonbon", "bondir",
43509 "bonheur", "bonifier", "bonus", "bordure", "borne", "botte", "boucle", "boueux", "bougie", "boulon",
43510 "bouquin", "bourse", "boussole", "boutique", "boxeur", "branche", "brasier", "brave", "brebis", "brèche",
43511 "breuvage", "bricoler", "brigade", "brillant", "brioche", "brique", "brochure", "broder", "bronzer", "brousse",
43512 "broyeur", "brume", "brusque", "brutal", "bruyant", "buffle", "buisson", "bulletin", "bureau", "burin",
43513 "bustier", "butiner", "butoir", "buvable", "buvette", "cabanon", "cabine", "cachette", "cadeau", "cadre",
43514 "caféine", "caillou", "caisson", "calculer", "calepin", "calibre", "calmer", "calomnie", "calvaire", "camarade",
43515 "caméra", "camion", "campagne", "canal", "caneton", "canon", "cantine", "canular", "capable", "caporal",
43516 "caprice", "capsule", "capter", "capuche", "carabine", "carbone", "caresser", "caribou", "carnage", "carotte",
43517 "carreau", "carton", "cascade", "casier", "casque", "cassure", "causer", "caution", "cavalier", "caverne",
43518 "caviar", "cédille", "ceinture", "céleste", "cellule", "cendrier", "censurer", "central", "cercle", "cérébral",
43519 "cerise", "cerner", "cerveau", "cesser", "chagrin", "chaise", "chaleur", "chambre", "chance", "chapitre",
43520 "charbon", "chasseur", "chaton", "chausson", "chavirer", "chemise", "chenille", "chéquier", "chercher", "cheval",
43521 "chien", "chiffre", "chignon", "chimère", "chiot", "chlorure", "chocolat", "choisir", "chose", "chouette",
43522 "chrome", "chute", "cigare", "cigogne", "cimenter", "cinéma", "cintrer", "circuler", "cirer", "cirque",
43523 "citerne", "citoyen", "citron", "civil", "clairon", "clameur", "claquer", "classe", "clavier", "client",
43524 "cligner", "climat", "clivage", "cloche", "clonage", "cloporte", "cobalt", "cobra", "cocasse", "cocotier",
43525 "coder", "codifier", "coffre", "cogner", "cohésion", "coiffer", "coincer", "colère", "colibri", "colline",
43526 "colmater", "colonel", "combat", "comédie", "commande", "compact", "concert", "conduire", "confier", "congeler",
43527 "connoter", "consonne", "contact", "convexe", "copain", "copie", "corail", "corbeau", "cordage", "corniche",
43528 "corpus", "correct", "cortège", "cosmique", "costume", "coton", "coude", "coupure", "courage", "couteau",
43529 "couvrir", "coyote", "crabe", "crainte", "cravate", "crayon", "créature", "créditer", "crémeux", "creuser",
43530 "crevette", "cribler", "crier", "cristal", "critère", "croire", "croquer", "crotale", "crucial", "cruel",
43531 "crypter", "cubique", "cueillir", "cuillère", "cuisine", "cuivre", "culminer", "cultiver", "cumuler", "cupide",
43532 "curatif", "curseur", "cyanure", "cycle", "cylindre", "cynique", "daigner", "damier", "danger", "danseur",
43533 "dauphin", "débattre", "débiter", "déborder", "débrider", "débutant", "décaler", "décembre", "déchirer", "décider",
43534 "déclarer", "décorer", "décrire", "décupler", "dédale", "déductif", "déesse", "défensif", "défiler", "défrayer",
43535 "dégager", "dégivrer", "déglutir", "dégrafer", "déjeuner", "délice", "déloger", "demander", "demeurer", "démolir",
43536 "dénicher", "dénouer", "dentelle", "dénuder", "départ", "dépenser", "déphaser", "déplacer", "déposer", "déranger",
43537 "dérober", "désastre", "descente", "désert", "désigner", "désobéir", "dessiner", "destrier", "détacher", "détester",
43538 "détourer", "détresse", "devancer", "devenir", "deviner", "devoir", "diable", "dialogue", "diamant", "dicter",
43539 "différer", "digérer", "digital", "digne", "diluer", "dimanche", "diminuer", "dioxyde", "directif", "diriger",
43540 "discuter", "disposer", "dissiper", "distance", "divertir", "diviser", "docile", "docteur", "dogme", "doigt",
43541 "domaine", "domicile", "dompter", "donateur", "donjon", "donner", "dopamine", "dortoir", "dorure", "dosage",
43542 "doseur", "dossier", "dotation", "douanier", "double", "douceur", "douter", "doyen", "dragon", "draper",
43543 "dresser", "dribbler", "droiture", "duperie", "duplexe", "durable", "durcir", "dynastie", "éblouir", "écarter",
43544 "écharpe", "échelle", "éclairer", "éclipse", "éclore", "écluse", "école", "économie", "écorce", "écouter",
43545 "écraser", "écrémer", "écrivain", "écrou", "écume", "écureuil", "édifier", "éduquer", "effacer", "effectif",
43546 "effigie", "effort", "effrayer", "effusion", "égaliser", "égarer", "éjecter", "élaborer", "élargir", "électron",
43547 "élégant", "éléphant", "élève", "éligible", "élitisme", "éloge", "élucider", "éluder", "emballer", "embellir",
43548 "embryon", "émeraude", "émission", "emmener", "émotion", "émouvoir", "empereur", "employer", "emporter", "emprise",
43549 "émulsion", "encadrer", "enchère", "enclave", "encoche", "endiguer", "endosser", "endroit", "enduire", "énergie",
43550 "enfance", "enfermer", "enfouir", "engager", "engin", "englober", "énigme", "enjamber", "enjeu", "enlever",
43551 "ennemi", "ennuyeux", "enrichir", "enrobage", "enseigne", "entasser", "entendre", "entier", "entourer", "entraver",
43552 "énumérer", "envahir", "enviable", "envoyer", "enzyme", "éolien", "épaissir", "épargne", "épatant", "épaule",
43553 "épicerie", "épidémie", "épier", "épilogue", "épine", "épisode", "épitaphe", "époque", "épreuve", "éprouver",
43554 "épuisant", "équerre", "équipe", "ériger", "érosion", "erreur", "éruption", "escalier", "espadon", "espèce",
43555 "espiègle", "espoir", "esprit", "esquiver", "essayer", "essence", "essieu", "essorer", "estime", "estomac",
43556 "estrade", "étagère", "étaler", "étanche", "étatique", "éteindre", "étendoir", "éternel", "éthanol", "éthique",
43557 "ethnie", "étirer", "étoffer", "étoile", "étonnant", "étourdir", "étrange", "étroit", "étude", "euphorie",
43558 "évaluer", "évasion", "éventail", "évidence", "éviter", "évolutif", "évoquer", "exact", "exagérer", "exaucer",
43559 "exceller", "excitant", "exclusif", "excuse", "exécuter", "exemple", "exercer", "exhaler", "exhorter", "exigence",
43560 "exiler", "exister", "exotique", "expédier", "explorer", "exposer", "exprimer", "exquis", "extensif", "extraire",
43561 "exulter", "fable", "fabuleux", "facette", "facile", "facture", "faiblir", "falaise", "fameux", "famille",
43562 "farceur", "farfelu", "farine", "farouche", "fasciner", "fatal", "fatigue", "faucon", "fautif", "faveur",
43563 "favori", "fébrile", "féconder", "fédérer", "félin", "femme", "fémur", "fendoir", "féodal", "fermer",
43564 "féroce", "ferveur", "festival", "feuille", "feutre", "février", "fiasco", "ficeler", "fictif", "fidèle",
43565 "figure", "filature", "filetage", "filière", "filleul", "filmer", "filou", "filtrer", "financer", "finir",
43566 "fiole", "firme", "fissure", "fixer", "flairer", "flamme", "flasque", "flatteur", "fléau", "flèche",
43567 "fleur", "flexion", "flocon", "flore", "fluctuer", "fluide", "fluvial", "folie", "fonderie", "fongible",
43568 "fontaine", "forcer", "forgeron", "formuler", "fortune", "fossile", "foudre", "fougère", "fouiller", "foulure",
43569 "fourmi", "fragile", "fraise", "franchir", "frapper", "frayeur", "frégate", "freiner", "frelon", "frémir",
43570 "frénésie", "frère", "friable", "friction", "frisson", "frivole", "froid", "fromage", "frontal", "frotter",
43571 "fruit", "fugitif", "fuite", "fureur", "furieux", "furtif", "fusion", "futur", "gagner", "galaxie",
43572 "galerie", "gambader", "garantir", "gardien", "garnir", "garrigue", "gazelle", "gazon", "géant", "gélatine",
43573 "gélule", "gendarme", "général", "génie", "genou", "gentil", "géologie", "géomètre", "géranium", "germe",
43574 "gestuel", "geyser", "gibier", "gicler", "girafe", "givre", "glace", "glaive", "glisser", "globe",
43575 "gloire", "glorieux", "golfeur", "gomme", "gonfler", "gorge", "gorille", "goudron", "gouffre", "goulot",
43576 "goupille", "gourmand", "goutte", "graduel", "graffiti", "graine", "grand", "grappin", "gratuit", "gravir",
43577 "grenat", "griffure", "griller", "grimper", "grogner", "gronder", "grotte", "groupe", "gruger", "grutier",
43578 "gruyère", "guépard", "guerrier", "guide", "guimauve", "guitare", "gustatif", "gymnaste", "gyrostat", "habitude",
43579 "hachoir", "halte", "hameau", "hangar", "hanneton", "haricot", "harmonie", "harpon", "hasard", "hélium",
43580 "hématome", "herbe", "hérisson", "hermine", "héron", "hésiter", "heureux", "hiberner", "hibou", "hilarant",
43581 "histoire", "hiver", "homard", "hommage", "homogène", "honneur", "honorer", "honteux", "horde", "horizon",
43582 "horloge", "hormone", "horrible", "houleux", "housse", "hublot", "huileux", "humain", "humble", "humide",
43583 "humour", "hurler", "hydromel", "hygiène", "hymne", "hypnose", "idylle", "ignorer", "iguane", "illicite",
43584 "illusion", "image", "imbiber", "imiter", "immense", "immobile", "immuable", "impact", "impérial", "implorer",
43585 "imposer", "imprimer", "imputer", "incarner", "incendie", "incident", "incliner", "incolore", "indexer", "indice",
43586 "inductif", "inédit", "ineptie", "inexact", "infini", "infliger", "informer", "infusion", "ingérer", "inhaler",
43587 "inhiber", "injecter", "injure", "innocent", "inoculer", "inonder", "inscrire", "insecte", "insigne", "insolite",
43588 "inspirer", "instinct", "insulter", "intact", "intense", "intime", "intrigue", "intuitif", "inutile", "invasion",
43589 "inventer", "inviter", "invoquer", "ironique", "irradier", "irréel", "irriter", "isoler", "ivoire", "ivresse",
43590 "jaguar", "jaillir", "jambe", "janvier", "jardin", "jauger", "jaune", "javelot", "jetable", "jeton",
43591 "jeudi", "jeunesse", "joindre", "joncher", "jongler", "joueur", "jouissif", "journal", "jovial", "joyau",
43592 "joyeux", "jubiler", "jugement", "junior", "jupon", "juriste", "justice", "juteux", "juvénile", "kayak",
43593 "kimono", "kiosque", "label", "labial", "labourer", "lacérer", "lactose", "lagune", "laine", "laisser",
43594 "laitier", "lambeau", "lamelle", "lampe", "lanceur", "langage", "lanterne", "lapin", "largeur", "larme",
43595 "laurier", "lavabo", "lavoir", "lecture", "légal", "léger", "légume", "lessive", "lettre", "levier",
43596 "lexique", "lézard", "liasse", "libérer", "libre", "licence", "licorne", "liège", "lièvre", "ligature",
43597 "ligoter", "ligue", "limer", "limite", "limonade", "limpide", "linéaire", "lingot", "lionceau", "liquide",
43598 "lisière", "lister", "lithium", "litige", "littoral", "livreur", "logique", "lointain", "loisir", "lombric",
43599 "loterie", "louer", "lourd", "loutre", "louve", "loyal", "lubie", "lucide", "lucratif", "lueur",
43600 "lugubre", "luisant", "lumière", "lunaire", "lundi", "luron", "lutter", "luxueux", "machine", "magasin",
43601 "magenta", "magique", "maigre", "maillon", "maintien", "mairie", "maison", "majorer", "malaxer", "maléfice",
43602 "malheur", "malice", "mallette", "mammouth", "mandater", "maniable", "manquant", "manteau", "manuel", "marathon",
43603 "marbre", "marchand", "mardi", "maritime", "marqueur", "marron", "marteler", "mascotte", "massif", "matériel",
43604 "matière", "matraque", "maudire", "maussade", "mauve", "maximal", "méchant", "méconnu", "médaille", "médecin",
43605 "méditer", "méduse", "meilleur", "mélange", "mélodie", "membre", "mémoire", "menacer", "mener", "menhir",
43606 "mensonge", "mentor", "mercredi", "mérite", "merle", "messager", "mesure", "métal", "météore", "méthode",
43607 "métier", "meuble", "miauler", "microbe", "miette", "mignon", "migrer", "milieu", "million", "mimique",
43608 "mince", "minéral", "minimal", "minorer", "minute", "miracle", "miroiter", "missile", "mixte", "mobile",
43609 "moderne", "moelleux", "mondial", "moniteur", "monnaie", "monotone", "monstre", "montagne", "monument", "moqueur",
43610 "morceau", "morsure", "mortier", "moteur", "motif", "mouche", "moufle", "moulin", "mousson", "mouton",
43611 "mouvant", "multiple", "munition", "muraille", "murène", "murmure", "muscle", "muséum", "musicien", "mutation",
43612 "muter", "mutuel", "myriade", "myrtille", "mystère", "mythique", "nageur", "nappe", "narquois", "narrer",
43613 "natation", "nation", "nature", "naufrage", "nautique", "navire", "nébuleux", "nectar", "néfaste", "négation",
43614 "négliger", "négocier", "neige", "nerveux", "nettoyer", "neurone", "neutron", "neveu", "niche", "nickel",
43615 "nitrate", "niveau", "noble", "nocif", "nocturne", "noirceur", "noisette", "nomade", "nombreux", "nommer",
43616 "normatif", "notable", "notifier", "notoire", "nourrir", "nouveau", "novateur", "novembre", "novice", "nuage",
43617 "nuancer", "nuire", "nuisible", "numéro", "nuptial", "nuque", "nutritif", "obéir", "objectif", "obliger",
43618 "obscur", "observer", "obstacle", "obtenir", "obturer", "occasion", "occuper", "océan", "octobre", "octroyer",
43619 "octupler", "oculaire", "odeur", "odorant", "offenser", "officier", "offrir", "ogive", "oiseau", "oisillon",
43620 "olfactif", "olivier", "ombrage", "omettre", "onctueux", "onduler", "onéreux", "onirique", "opale", "opaque",
43621 "opérer", "opinion", "opportun", "opprimer", "opter", "optique", "orageux", "orange", "orbite", "ordonner",
43622 "oreille", "organe", "orgueil", "orifice", "ornement", "orque", "ortie", "osciller", "osmose", "ossature",
43623 "otarie", "ouragan", "ourson", "outil", "outrager", "ouvrage", "ovation", "oxyde", "oxygène", "ozone",
43624 "paisible", "palace", "palmarès", "palourde", "palper", "panache", "panda", "pangolin", "paniquer", "panneau",
43625 "panorama", "pantalon", "papaye", "papier", "papoter", "papyrus", "paradoxe", "parcelle", "paresse", "parfumer",
43626 "parler", "parole", "parrain", "parsemer", "partager", "parure", "parvenir", "passion", "pastèque", "paternel",
43627 "patience", "patron", "pavillon", "pavoiser", "payer", "paysage", "peigne", "peintre", "pelage", "pélican",
43628 "pelle", "pelouse", "peluche", "pendule", "pénétrer", "pénible", "pensif", "pénurie", "pépite", "péplum",
43629 "perdrix", "perforer", "période", "permuter", "perplexe", "persil", "perte", "peser", "pétale", "petit",
43630 "pétrir", "peuple", "pharaon", "phobie", "phoque", "photon", "phrase", "physique", "piano", "pictural",
43631 "pièce", "pierre", "pieuvre", "pilote", "pinceau", "pipette", "piquer", "pirogue", "piscine", "piston",
43632 "pivoter", "pixel", "pizza", "placard", "plafond", "plaisir", "planer", "plaque", "plastron", "plateau",
43633 "pleurer", "plexus", "pliage", "plomb", "plonger", "pluie", "plumage", "pochette", "poésie", "poète",
43634 "pointe", "poirier", "poisson", "poivre", "polaire", "policier", "pollen", "polygone", "pommade", "pompier",
43635 "ponctuel", "pondérer", "poney", "portique", "position", "posséder", "posture", "potager", "poteau", "potion",
43636 "pouce", "poulain", "poumon", "pourpre", "poussin", "pouvoir", "prairie", "pratique", "précieux", "prédire",
43637 "préfixe", "prélude", "prénom", "présence", "prétexte", "prévoir", "primitif", "prince", "prison", "priver",
43638 "problème", "procéder", "prodige", "profond", "progrès", "proie", "projeter", "prologue", "promener", "propre",
43639 "prospère", "protéger", "prouesse", "proverbe", "prudence", "pruneau", "psychose", "public", "puceron", "puiser",
43640 "pulpe", "pulsar", "punaise", "punitif", "pupitre", "purifier", "puzzle", "pyramide", "quasar", "querelle",
43641 "question", "quiétude", "quitter", "quotient", "racine", "raconter", "radieux", "ragondin", "raideur", "raisin",
43642 "ralentir", "rallonge", "ramasser", "rapide", "rasage", "ratisser", "ravager", "ravin", "rayonner", "réactif",
43643 "réagir", "réaliser", "réanimer", "recevoir", "réciter", "réclamer", "récolter", "recruter", "reculer", "recycler",
43644 "rédiger", "redouter", "refaire", "réflexe", "réformer", "refrain", "refuge", "régalien", "région", "réglage",
43645 "régulier", "réitérer", "rejeter", "rejouer", "relatif", "relever", "relief", "remarque", "remède", "remise",
43646 "remonter", "remplir", "remuer", "renard", "renfort", "renifler", "renoncer", "rentrer", "renvoi", "replier",
43647 "reporter", "reprise", "reptile", "requin", "réserve", "résineux", "résoudre", "respect", "rester", "résultat",
43648 "rétablir", "retenir", "réticule", "retomber", "retracer", "réunion", "réussir", "revanche", "revivre", "révolte",
43649 "révulsif", "richesse", "rideau", "rieur", "rigide", "rigoler", "rincer", "riposter", "risible", "risque",
43650 "rituel", "rival", "rivière", "rocheux", "romance", "rompre", "ronce", "rondin", "roseau", "rosier",
43651 "rotatif", "rotor", "rotule", "rouge", "rouille", "rouleau", "routine", "royaume", "ruban", "rubis",
43652 "ruche", "ruelle", "rugueux", "ruiner", "ruisseau", "ruser", "rustique", "rythme", "sabler", "saboter",
43653 "sabre", "sacoche", "safari", "sagesse", "saisir", "salade", "salive", "salon", "saluer", "samedi",
43654 "sanction", "sanglier", "sarcasme", "sardine", "saturer", "saugrenu", "saumon", "sauter", "sauvage", "savant",
43655 "savonner", "scalpel", "scandale", "scélérat", "scénario", "sceptre", "schéma", "science", "scinder", "score",
43656 "scrutin", "sculpter", "séance", "sécable", "sécher", "secouer", "sécréter", "sédatif", "séduire", "seigneur",
43657 "séjour", "sélectif", "semaine", "sembler", "semence", "séminal", "sénateur", "sensible", "sentence", "séparer",
43658 "séquence", "serein", "sergent", "sérieux", "serrure", "sérum", "service", "sésame", "sévir", "sevrage",
43659 "sextuple", "sidéral", "siècle", "siéger", "siffler", "sigle", "signal", "silence", "silicium", "simple",
43660 "sincère", "sinistre", "siphon", "sirop", "sismique", "situer", "skier", "social", "socle", "sodium",
43661 "soigneux", "soldat", "soleil", "solitude", "soluble", "sombre", "sommeil", "somnoler", "sonde", "songeur",
43662 "sonnette", "sonore", "sorcier", "sortir", "sosie", "sottise", "soucieux", "soudure", "souffle", "soulever",
43663 "soupape", "source", "soutirer", "souvenir", "spacieux", "spatial", "spécial", "sphère", "spiral", "stable",
43664 "station", "sternum", "stimulus", "stipuler", "strict", "studieux", "stupeur", "styliste", "sublime", "substrat",
43665 "subtil", "subvenir", "succès", "sucre", "suffixe", "suggérer", "suiveur", "sulfate", "superbe", "supplier",
43666 "surface", "suricate", "surmener", "surprise", "sursaut", "survie", "suspect", "syllabe", "symbole", "symétrie",
43667 "synapse", "syntaxe", "système", "tabac", "tablier", "tactile", "tailler", "talent", "talisman", "talonner",
43668 "tambour", "tamiser", "tangible", "tapis", "taquiner", "tarder", "tarif", "tartine", "tasse", "tatami",
43669 "tatouage", "taupe", "taureau", "taxer", "témoin", "temporel", "tenaille", "tendre", "teneur", "tenir",
43670 "tension", "terminer", "terne", "terrible", "tétine", "texte", "thème", "théorie", "thérapie", "thorax",
43671 "tibia", "tiède", "timide", "tirelire", "tiroir", "tissu", "titane", "titre", "tituber", "toboggan",
43672 "tolérant", "tomate", "tonique", "tonneau", "toponyme", "torche", "tordre", "tornade", "torpille", "torrent",
43673 "torse", "tortue", "totem", "toucher", "tournage", "tousser", "toxine", "traction", "trafic", "tragique",
43674 "trahir", "train", "trancher", "travail", "trèfle", "tremper", "trésor", "treuil", "triage", "tribunal",
43675 "tricoter", "trilogie", "triomphe", "tripler", "triturer", "trivial", "trombone", "tronc", "tropical", "troupeau",
43676 "tuile", "tulipe", "tumulte", "tunnel", "turbine", "tuteur", "tutoyer", "tuyau", "tympan", "typhon",
43677 "typique", "tyran", "ubuesque", "ultime", "ultrason", "unanime", "unifier", "union", "unique", "unitaire",
43678 "univers", "uranium", "urbain", "urticant", "usage", "usine", "usuel", "usure", "utile", "utopie",
43679 "vacarme", "vaccin", "vagabond", "vague", "vaillant", "vaincre", "vaisseau", "valable", "valise", "vallon",
43680 "valve", "vampire", "vanille", "vapeur", "varier", "vaseux", "vassal", "vaste", "vecteur", "vedette",
43681 "végétal", "véhicule", "veinard", "véloce", "vendredi", "vénérer", "venger", "venimeux", "ventouse", "verdure",
43682 "vérin", "vernir", "verrou", "verser", "vertu", "veston", "vétéran", "vétuste", "vexant", "vexer",
43683 "viaduc", "viande", "victoire", "vidange", "vidéo", "vignette", "vigueur", "vilain", "village", "vinaigre",
43684 "violon", "vipère", "virement", "virtuose", "virus", "visage", "viseur", "vision", "visqueux", "visuel",
43685 "vital", "vitesse", "viticole", "vitrine", "vivace", "vivipare", "vocation", "voguer", "voile", "voisin",
43686 "voiture", "volaille", "volcan", "voltiger", "volume", "vorace", "vortex", "voter", "vouloir", "voyage",
43687 "voyelle", "wagon", "xénon", "yacht", "zèbre", "zénith", "zeste", "zoologie"]
43688 </script>
43689 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
43690 WORDLISTS["italian"] = [
43691 "abaco", "abbaglio", "abbinato", "abete", "abisso", "abolire", "abrasivo", "abrogato", "accadere", "accenno",
43692 "accusato", "acetone", "achille", "acido", "acqua", "acre", "acrilico", "acrobata", "acuto", "adagio",
43693 "addebito", "addome", "adeguato", "aderire", "adipe", "adottare", "adulare", "affabile", "affetto", "affisso",
43694 "affranto", "aforisma", "afoso", "africano", "agave", "agente", "agevole", "aggancio", "agire", "agitare",
43695 "agonismo", "agricolo", "agrumeto", "aguzzo", "alabarda", "alato", "albatro", "alberato", "albo", "albume",
43696 "alce", "alcolico", "alettone", "alfa", "algebra", "aliante", "alibi", "alimento", "allagato", "allegro",
43697 "allievo", "allodola", "allusivo", "almeno", "alogeno", "alpaca", "alpestre", "altalena", "alterno", "alticcio",
43698 "altrove", "alunno", "alveolo", "alzare", "amalgama", "amanita", "amarena", "ambito", "ambrato", "ameba",
43699 "america", "ametista", "amico", "ammasso", "ammenda", "ammirare", "ammonito", "amore", "ampio", "ampliare",
43700 "amuleto", "anacardo", "anagrafe", "analista", "anarchia", "anatra", "anca", "ancella", "ancora", "andare",
43701 "andrea", "anello", "angelo", "angolare", "angusto", "anima", "annegare", "annidato", "anno", "annuncio",
43702 "anonimo", "anticipo", "anzi", "apatico", "apertura", "apode", "apparire", "appetito", "appoggio", "approdo",
43703 "appunto", "aprile", "arabica", "arachide", "aragosta", "araldica", "arancio", "aratura", "arazzo", "arbitro",
43704 "archivio", "ardito", "arenile", "argento", "argine", "arguto", "aria", "armonia", "arnese", "arredato",
43705 "arringa", "arrosto", "arsenico", "arso", "artefice", "arzillo", "asciutto", "ascolto", "asepsi", "asettico",
43706 "asfalto", "asino", "asola", "aspirato", "aspro", "assaggio", "asse", "assoluto", "assurdo", "asta",
43707 "astenuto", "astice", "astratto", "atavico", "ateismo", "atomico", "atono", "attesa", "attivare", "attorno",
43708 "attrito", "attuale", "ausilio", "austria", "autista", "autonomo", "autunno", "avanzato", "avere", "avvenire",
43709 "avviso", "avvolgere", "azione", "azoto", "azzimo", "azzurro", "babele", "baccano", "bacino", "baco",
43710 "badessa", "badilata", "bagnato", "baita", "balcone", "baldo", "balena", "ballata", "balzano", "bambino",
43711 "bandire", "baraonda", "barbaro", "barca", "baritono", "barlume", "barocco", "basilico", "basso", "batosta",
43712 "battuto", "baule", "bava", "bavosa", "becco", "beffa", "belgio", "belva", "benda", "benevole",
43713 "benigno", "benzina", "bere", "berlina", "beta", "bibita", "bici", "bidone", "bifido", "biga",
43714 "bilancia", "bimbo", "binocolo", "biologo", "bipede", "bipolare", "birbante", "birra", "biscotto", "bisesto",
43715 "bisnonno", "bisonte", "bisturi", "bizzarro", "blando", "blatta", "bollito", "bonifico", "bordo", "bosco",
43716 "botanico", "bottino", "bozzolo", "braccio", "bradipo", "brama", "branca", "bravura", "bretella", "brevetto",
43717 "brezza", "briglia", "brillante", "brindare", "broccolo", "brodo", "bronzina", "brullo", "bruno", "bubbone",
43718 "buca", "budino", "buffone", "buio", "bulbo", "buono", "burlone", "burrasca", "bussola", "busta",
43719 "cadetto", "caduco", "calamaro", "calcolo", "calesse", "calibro", "calmo", "caloria", "cambusa", "camerata",
43720 "camicia", "cammino", "camola", "campale", "canapa", "candela", "cane", "canino", "canotto", "cantina",
43721 "capace", "capello", "capitolo", "capogiro", "cappero", "capra", "capsula", "carapace", "carcassa", "cardo",
43722 "carisma", "carovana", "carretto", "cartolina", "casaccio", "cascata", "caserma", "caso", "cassone", "castello",
43723 "casuale", "catasta", "catena", "catrame", "cauto", "cavillo", "cedibile", "cedrata", "cefalo", "celebre",
43724 "cellulare", "cena", "cenone", "centesimo", "ceramica", "cercare", "certo", "cerume", "cervello", "cesoia",
43725 "cespo", "ceto", "chela", "chiaro", "chicca", "chiedere", "chimera", "china", "chirurgo", "chitarra",
43726 "ciao", "ciclismo", "cifrare", "cigno", "cilindro", "ciottolo", "circa", "cirrosi", "citrico", "cittadino",
43727 "ciuffo", "civetta", "civile", "classico", "clinica", "cloro", "cocco", "codardo", "codice", "coerente",
43728 "cognome", "collare", "colmato", "colore", "colposo", "coltivato", "colza", "coma", "cometa", "commando",
43729 "comodo", "computer", "comune", "conciso", "condurre", "conferma", "congelare", "coniuge", "connesso", "conoscere",
43730 "consumo", "continuo", "convegno", "coperto", "copione", "coppia", "copricapo", "corazza", "cordata", "coricato",
43731 "cornice", "corolla", "corpo", "corredo", "corsia", "cortese", "cosmico", "costante", "cottura", "covato",
43732 "cratere", "cravatta", "creato", "credere", "cremoso", "crescita", "creta", "criceto", "crinale", "crisi",
43733 "critico", "croce", "cronaca", "crostata", "cruciale", "crusca", "cucire", "cuculo", "cugino", "cullato",
43734 "cupola", "curatore", "cursore", "curvo", "cuscino", "custode", "dado", "daino", "dalmata", "damerino",
43735 "daniela", "dannoso", "danzare", "datato", "davanti", "davvero", "debutto", "decennio", "deciso", "declino",
43736 "decollo", "decreto", "dedicato", "definito", "deforme", "degno", "delegare", "delfino", "delirio", "delta",
43737 "demenza", "denotato", "dentro", "deposito", "derapata", "derivare", "deroga", "descritto", "deserto", "desiderio",
43738 "desumere", "detersivo", "devoto", "diametro", "dicembre", "diedro", "difeso", "diffuso", "digerire", "digitale",
43739 "diluvio", "dinamico", "dinnanzi", "dipinto", "diploma", "dipolo", "diradare", "dire", "dirotto", "dirupo",
43740 "disagio", "discreto", "disfare", "disgelo", "disposto", "distanza", "disumano", "dito", "divano", "divelto",
43741 "dividere", "divorato", "doblone", "docente", "doganale", "dogma", "dolce", "domato", "domenica", "dominare",
43742 "dondolo", "dono", "dormire", "dote", "dottore", "dovuto", "dozzina", "drago", "druido", "dubbio",
43743 "dubitare", "ducale", "duna", "duomo", "duplice", "duraturo", "ebano", "eccesso", "ecco", "eclissi",
43744 "economia", "edera", "edicola", "edile", "editoria", "educare", "egemonia", "egli", "egoismo", "egregio",
43745 "elaborato", "elargire", "elegante", "elencato", "eletto", "elevare", "elfico", "elica", "elmo", "elsa",
43746 "eluso", "emanato", "emblema", "emesso", "emiro", "emotivo", "emozione", "empirico", "emulo", "endemico",
43747 "enduro", "energia", "enfasi", "enoteca", "entrare", "enzima", "epatite", "epilogo", "episodio", "epocale",
43748 "eppure", "equatore", "erario", "erba", "erboso", "erede", "eremita", "erigere", "ermetico", "eroe",
43749 "erosivo", "errante", "esagono", "esame", "esanime", "esaudire", "esca", "esempio", "esercito", "esibito",
43750 "esigente", "esistere", "esito", "esofago", "esortato", "esoso", "espanso", "espresso", "essenza", "esso",
43751 "esteso", "estimare", "estonia", "estroso", "esultare", "etilico", "etnico", "etrusco", "etto", "euclideo",
43752 "europa", "evaso", "evidenza", "evitato", "evoluto", "evviva", "fabbrica", "faccenda", "fachiro", "falco",
43753 "famiglia", "fanale", "fanfara", "fango", "fantasma", "fare", "farfalla", "farinoso", "farmaco", "fascia",
43754 "fastoso", "fasullo", "faticare", "fato", "favoloso", "febbre", "fecola", "fede", "fegato", "felpa",
43755 "feltro", "femmina", "fendere", "fenomeno", "fermento", "ferro", "fertile", "fessura", "festivo", "fetta",
43756 "feudo", "fiaba", "fiducia", "fifa", "figurato", "filo", "finanza", "finestra", "finire", "fiore",
43757 "fiscale", "fisico", "fiume", "flacone", "flamenco", "flebo", "flemma", "florido", "fluente", "fluoro",
43758 "fobico", "focaccia", "focoso", "foderato", "foglio", "folata", "folclore", "folgore", "fondente", "fonetico",
43759 "fonia", "fontana", "forbito", "forchetta", "foresta", "formica", "fornaio", "foro", "fortezza", "forzare",
43760 "fosfato", "fosso", "fracasso", "frana", "frassino", "fratello", "freccetta", "frenata", "fresco", "frigo",
43761 "frollino", "fronde", "frugale", "frutta", "fucilata", "fucsia", "fuggente", "fulmine", "fulvo", "fumante",
43762 "fumetto", "fumoso", "fune", "funzione", "fuoco", "furbo", "furgone", "furore", "fuso", "futile",
43763 "gabbiano", "gaffe", "galateo", "gallina", "galoppo", "gambero", "gamma", "garanzia", "garbo", "garofano",
43764 "garzone", "gasdotto", "gasolio", "gastrico", "gatto", "gaudio", "gazebo", "gazzella", "geco", "gelatina",
43765 "gelso", "gemello", "gemmato", "gene", "genitore", "gennaio", "genotipo", "gergo", "ghepardo", "ghiaccio",
43766 "ghisa", "giallo", "gilda", "ginepro", "giocare", "gioiello", "giorno", "giove", "girato", "girone",
43767 "gittata", "giudizio", "giurato", "giusto", "globulo", "glutine", "gnomo", "gobba", "golf", "gomito",
43768 "gommone", "gonfio", "gonna", "governo", "gracile", "grado", "grafico", "grammo", "grande", "grattare",
43769 "gravoso", "grazia", "greca", "gregge", "grifone", "grigio", "grinza", "grotta", "gruppo", "guadagno",
43770 "guaio", "guanto", "guardare", "gufo", "guidare", "ibernato", "icona", "identico", "idillio", "idolo",
43771 "idra", "idrico", "idrogeno", "igiene", "ignaro", "ignorato", "ilare", "illeso", "illogico", "illudere",
43772 "imballo", "imbevuto", "imbocco", "imbuto", "immane", "immerso", "immolato", "impacco", "impeto", "impiego",
43773 "importo", "impronta", "inalare", "inarcare", "inattivo", "incanto", "incendio", "inchino", "incisivo", "incluso",
43774 "incontro", "incrocio", "incubo", "indagine", "india", "indole", "inedito", "infatti", "infilare", "inflitto",
43775 "ingaggio", "ingegno", "inglese", "ingordo", "ingrosso", "innesco", "inodore", "inoltrare", "inondato", "insano",
43776 "insetto", "insieme", "insonnia", "insulina", "intasato", "intero", "intonaco", "intuito", "inumidire", "invalido",
43777 "invece", "invito", "iperbole", "ipnotico", "ipotesi", "ippica", "iride", "irlanda", "ironico", "irrigato",
43778 "irrorare", "isolato", "isotopo", "isterico", "istituto", "istrice", "italia", "iterare", "labbro", "labirinto",
43779 "lacca", "lacerato", "lacrima", "lacuna", "laddove", "lago", "lampo", "lancetta", "lanterna", "lardoso",
43780 "larga", "laringe", "lastra", "latenza", "latino", "lattuga", "lavagna", "lavoro", "legale", "leggero",
43781 "lembo", "lentezza", "lenza", "leone", "lepre", "lesivo", "lessato", "lesto", "letterale", "leva",
43782 "levigato", "libero", "lido", "lievito", "lilla", "limatura", "limitare", "limpido", "lineare", "lingua",
43783 "liquido", "lira", "lirica", "lisca", "lite", "litigio", "livrea", "locanda", "lode", "logica",
43784 "lombare", "londra", "longevo", "loquace", "lorenzo", "loto", "lotteria", "luce", "lucidato", "lumaca",
43785 "luminoso", "lungo", "lupo", "luppolo", "lusinga", "lusso", "lutto", "macabro", "macchina", "macero",
43786 "macinato", "madama", "magico", "maglia", "magnete", "magro", "maiolica", "malafede", "malgrado", "malinteso",
43787 "malsano", "malto", "malumore", "mana", "mancia", "mandorla", "mangiare", "manifesto", "mannaro", "manovra",
43788 "mansarda", "mantide", "manubrio", "mappa", "maratona", "marcire", "maretta", "marmo", "marsupio", "maschera",
43789 "massaia", "mastino", "materasso", "matricola", "mattone", "maturo", "mazurca", "meandro", "meccanico", "mecenate",
43790 "medesimo", "meditare", "mega", "melassa", "melis", "melodia", "meninge", "meno", "mensola", "mercurio",
43791 "merenda", "merlo", "meschino", "mese", "messere", "mestolo", "metallo", "metodo", "mettere", "miagolare",
43792 "mica", "micelio", "michele", "microbo", "midollo", "miele", "migliore", "milano", "milite", "mimosa",
43793 "minerale", "mini", "minore", "mirino", "mirtillo", "miscela", "missiva", "misto", "misurare", "mitezza",
43794 "mitigare", "mitra", "mittente", "mnemonico", "modello", "modifica", "modulo", "mogano", "mogio", "mole",
43795 "molosso", "monastero", "monco", "mondina", "monetario", "monile", "monotono", "monsone", "montato", "monviso",
43796 "mora", "mordere", "morsicato", "mostro", "motivato", "motosega", "motto", "movenza", "movimento", "mozzo",
43797 "mucca", "mucosa", "muffa", "mughetto", "mugnaio", "mulatto", "mulinello", "multiplo", "mummia", "munto",
43798 "muovere", "murale", "musa", "muscolo", "musica", "mutevole", "muto", "nababbo", "nafta", "nanometro",
43799 "narciso", "narice", "narrato", "nascere", "nastrare", "naturale", "nautica", "naviglio", "nebulosa", "necrosi",
43800 "negativo", "negozio", "nemmeno", "neofita", "neretto", "nervo", "nessuno", "nettuno", "neutrale", "neve",
43801 "nevrotico", "nicchia", "ninfa", "nitido", "nobile", "nocivo", "nodo", "nome", "nomina", "nordico",
43802 "normale", "norvegese", "nostrano", "notare", "notizia", "notturno", "novella", "nucleo", "nulla", "numero",
43803 "nuovo", "nutrire", "nuvola", "nuziale", "oasi", "obbedire", "obbligo", "obelisco", "oblio", "obolo",
43804 "obsoleto", "occasione", "occhio", "occidente", "occorrere", "occultare", "ocra", "oculato", "odierno", "odorare",
43805 "offerta", "offrire", "offuscato", "oggetto", "oggi", "ognuno", "olandese", "olfatto", "oliato", "oliva",
43806 "ologramma", "oltre", "omaggio", "ombelico", "ombra", "omega", "omissione", "ondoso", "onere", "onice",
43807 "onnivoro", "onorevole", "onta", "operato", "opinione", "opposto", "oracolo", "orafo", "ordine", "orecchino",
43808 "orefice", "orfano", "organico", "origine", "orizzonte", "orma", "ormeggio", "ornativo", "orologio", "orrendo",
43809 "orribile", "ortensia", "ortica", "orzata", "orzo", "osare", "oscurare", "osmosi", "ospedale", "ospite",
43810 "ossa", "ossidare", "ostacolo", "oste", "otite", "otre", "ottagono", "ottimo", "ottobre", "ovale",
43811 "ovest", "ovino", "oviparo", "ovocito", "ovunque", "ovviare", "ozio", "pacchetto", "pace", "pacifico",
43812 "padella", "padrone", "paese", "paga", "pagina", "palazzina", "palesare", "pallido", "palo", "palude",
43813 "pandoro", "pannello", "paolo", "paonazzo", "paprica", "parabola", "parcella", "parere", "pargolo", "pari",
43814 "parlato", "parola", "partire", "parvenza", "parziale", "passivo", "pasticca", "patacca", "patologia", "pattume",
43815 "pavone", "peccato", "pedalare", "pedonale", "peggio", "peloso", "penare", "pendice", "penisola", "pennuto",
43816 "penombra", "pensare", "pentola", "pepe", "pepita", "perbene", "percorso", "perdonato", "perforare", "pergamena",
43817 "periodo", "permesso", "perno", "perplesso", "persuaso", "pertugio", "pervaso", "pesatore", "pesista", "peso",
43818 "pestifero", "petalo", "pettine", "petulante", "pezzo", "piacere", "pianta", "piattino", "piccino", "picozza",
43819 "piega", "pietra", "piffero", "pigiama", "pigolio", "pigro", "pila", "pilifero", "pillola", "pilota",
43820 "pimpante", "pineta", "pinna", "pinolo", "pioggia", "piombo", "piramide", "piretico", "pirite", "pirolisi",
43821 "pitone", "pizzico", "placebo", "planare", "plasma", "platano", "plenario", "pochezza", "poderoso", "podismo",
43822 "poesia", "poggiare", "polenta", "poligono", "pollice", "polmonite", "polpetta", "polso", "poltrona", "polvere",
43823 "pomice", "pomodoro", "ponte", "popoloso", "porfido", "poroso", "porpora", "porre", "portata", "posa",
43824 "positivo", "possesso", "postulato", "potassio", "potere", "pranzo", "prassi", "pratica", "precluso", "predica",
43825 "prefisso", "pregiato", "prelievo", "premere", "prenotare", "preparato", "presenza", "pretesto", "prevalso", "prima",
43826 "principe", "privato", "problema", "procura", "produrre", "profumo", "progetto", "prolunga", "promessa", "pronome",
43827 "proposta", "proroga", "proteso", "prova", "prudente", "prugna", "prurito", "psiche", "pubblico", "pudica",
43828 "pugilato", "pugno", "pulce", "pulito", "pulsante", "puntare", "pupazzo", "pupilla", "puro", "quadro",
43829 "qualcosa", "quasi", "querela", "quota", "raccolto", "raddoppio", "radicale", "radunato", "raffica", "ragazzo",
43830 "ragione", "ragno", "ramarro", "ramingo", "ramo", "randagio", "rantolare", "rapato", "rapina", "rappreso",
43831 "rasatura", "raschiato", "rasente", "rassegna", "rastrello", "rata", "ravveduto", "reale", "recepire", "recinto",
43832 "recluta", "recondito", "recupero", "reddito", "redimere", "regalato", "registro", "regola", "regresso", "relazione",
43833 "remare", "remoto", "renna", "replica", "reprimere", "reputare", "resa", "residente", "responso", "restauro",
43834 "rete", "retina", "retorica", "rettifica", "revocato", "riassunto", "ribadire", "ribelle", "ribrezzo", "ricarica",
43835 "ricco", "ricevere", "riciclato", "ricordo", "ricreduto", "ridicolo", "ridurre", "rifasare", "riflesso", "riforma",
43836 "rifugio", "rigare", "rigettato", "righello", "rilassato", "rilevato", "rimanere", "rimbalzo", "rimedio", "rimorchio",
43837 "rinascita", "rincaro", "rinforzo", "rinnovo", "rinomato", "rinsavito", "rintocco", "rinuncia", "rinvenire", "riparato",
43838 "ripetuto", "ripieno", "riportare", "ripresa", "ripulire", "risata", "rischio", "riserva", "risibile", "riso",
43839 "rispetto", "ristoro", "risultato", "risvolto", "ritardo", "ritegno", "ritmico", "ritrovo", "riunione", "riva",
43840 "riverso", "rivincita", "rivolto", "rizoma", "roba", "robotico", "robusto", "roccia", "roco", "rodaggio",
43841 "rodere", "roditore", "rogito", "rollio", "romantico", "rompere", "ronzio", "rosolare", "rospo", "rotante",
43842 "rotondo", "rotula", "rovescio", "rubizzo", "rubrica", "ruga", "rullino", "rumine", "rumoroso", "ruolo",
43843 "rupe", "russare", "rustico", "sabato", "sabbiare", "sabotato", "sagoma", "salasso", "saldatura", "salgemma",
43844 "salivare", "salmone", "salone", "saltare", "saluto", "salvo", "sapere", "sapido", "saporito", "saraceno",
43845 "sarcasmo", "sarto", "sassoso", "satellite", "satira", "satollo", "saturno", "savana", "savio", "saziato",
43846 "sbadiglio", "sbalzo", "sbancato", "sbarra", "sbattere", "sbavare", "sbendare", "sbirciare", "sbloccato", "sbocciato",
43847 "sbrinare", "sbruffone", "sbuffare", "scabroso", "scadenza", "scala", "scambiare", "scandalo", "scapola", "scarso",
43848 "scatenare", "scavato", "scelto", "scenico", "scettro", "scheda", "schiena", "sciarpa", "scienza", "scindere",
43849 "scippo", "sciroppo", "scivolo", "sclerare", "scodella", "scolpito", "scomparto", "sconforto", "scoprire", "scorta",
43850 "scossone", "scozzese", "scriba", "scrollare", "scrutinio", "scuderia", "scultore", "scuola", "scuro", "scusare",
43851 "sdebitare", "sdoganare", "seccatura", "secondo", "sedano", "seggiola", "segnalato", "segregato", "seguito", "selciato",
43852 "selettivo", "sella", "selvaggio", "semaforo", "sembrare", "seme", "seminato", "sempre", "senso", "sentire",
43853 "sepolto", "sequenza", "serata", "serbato", "sereno", "serio", "serpente", "serraglio", "servire", "sestina",
43854 "setola", "settimana", "sfacelo", "sfaldare", "sfamato", "sfarzoso", "sfaticato", "sfera", "sfida", "sfilato",
43855 "sfinge", "sfocato", "sfoderare", "sfogo", "sfoltire", "sforzato", "sfratto", "sfruttato", "sfuggito", "sfumare",
43856 "sfuso", "sgabello", "sgarbato", "sgonfiare", "sgorbio", "sgrassato", "sguardo", "sibilo", "siccome", "sierra",
43857 "sigla", "signore", "silenzio", "sillaba", "simbolo", "simpatico", "simulato", "sinfonia", "singolo", "sinistro",
43858 "sino", "sintesi", "sinusoide", "sipario", "sisma", "sistole", "situato", "slitta", "slogatura", "sloveno",
43859 "smarrito", "smemorato", "smentito", "smeraldo", "smilzo", "smontare", "smottato", "smussato", "snellire", "snervato",
43860 "snodo", "sobbalzo", "sobrio", "soccorso", "sociale", "sodale", "soffitto", "sogno", "soldato", "solenne",
43861 "solido", "sollazzo", "solo", "solubile", "solvente", "somatico", "somma", "sonda", "sonetto", "sonnifero",
43862 "sopire", "soppeso", "sopra", "sorgere", "sorpasso", "sorriso", "sorso", "sorteggio", "sorvolato", "sospiro",
43863 "sosta", "sottile", "spada", "spalla", "spargere", "spatola", "spavento", "spazzola", "specie", "spedire",
43864 "spegnere", "spelatura", "speranza", "spessore", "spettrale", "spezzato", "spia", "spigoloso", "spillato", "spinoso",
43865 "spirale", "splendido", "sportivo", "sposo", "spranga", "sprecare", "spronato", "spruzzo", "spuntino", "squillo",
43866 "sradicare", "srotolato", "stabile", "stacco", "staffa", "stagnare", "stampato", "stantio", "starnuto", "stasera",
43867 "statuto", "stelo", "steppa", "sterzo", "stiletto", "stima", "stirpe", "stivale", "stizzoso", "stonato",
43868 "storico", "strappo", "stregato", "stridulo", "strozzare", "strutto", "stuccare", "stufo", "stupendo", "subentro",
43869 "succoso", "sudore", "suggerito", "sugo", "sultano", "suonare", "superbo", "supporto", "surgelato", "surrogato",
43870 "sussurro", "sutura", "svagare", "svedese", "sveglio", "svelare", "svenuto", "svezia", "sviluppo", "svista",
43871 "svizzera", "svolta", "svuotare", "tabacco", "tabulato", "tacciare", "taciturno", "tale", "talismano", "tampone",
43872 "tannino", "tara", "tardivo", "targato", "tariffa", "tarpare", "tartaruga", "tasto", "tattico", "taverna",
43873 "tavolata", "tazza", "teca", "tecnico", "telefono", "temerario", "tempo", "temuto", "tendone", "tenero",
43874 "tensione", "tentacolo", "teorema", "terme", "terrazzo", "terzetto", "tesi", "tesserato", "testato", "tetro",
43875 "tettoia", "tifare", "tigella", "timbro", "tinto", "tipico", "tipografo", "tiraggio", "tiro", "titanio",
43876 "titolo", "titubante", "tizio", "tizzone", "toccare", "tollerare", "tolto", "tombola", "tomo", "tonfo",
43877 "tonsilla", "topazio", "topologia", "toppa", "torba", "tornare", "torrone", "tortora", "toscano", "tossire",
43878 "tostatura", "totano", "trabocco", "trachea", "trafila", "tragedia", "tralcio", "tramonto", "transito", "trapano",
43879 "trarre", "trasloco", "trattato", "trave", "treccia", "tremolio", "trespolo", "tributo", "tricheco", "trifoglio",
43880 "trillo", "trincea", "trio", "tristezza", "triturato", "trivella", "tromba", "trono", "troppo", "trottola",
43881 "trovare", "truccato", "tubatura", "tuffato", "tulipano", "tumulto", "tunisia", "turbare", "turchino", "tuta",
43882 "tutela", "ubicato", "uccello", "uccisore", "udire", "uditivo", "uffa", "ufficio", "uguale", "ulisse",
43883 "ultimato", "umano", "umile", "umorismo", "uncinetto", "ungere", "ungherese", "unicorno", "unificato", "unisono",
43884 "unitario", "unte", "uovo", "upupa", "uragano", "urgenza", "urlo", "usanza", "usato", "uscito",
43885 "usignolo", "usuraio", "utensile", "utilizzo", "utopia", "vacante", "vaccinato", "vagabondo", "vagliato", "valanga",
43886 "valgo", "valico", "valletta", "valoroso", "valutare", "valvola", "vampata", "vangare", "vanitoso", "vano",
43887 "vantaggio", "vanvera", "vapore", "varano", "varcato", "variante", "vasca", "vedetta", "vedova", "veduto",
43888 "vegetale", "veicolo", "velcro", "velina", "velluto", "veloce", "venato", "vendemmia", "vento", "verace",
43889 "verbale", "vergogna", "verifica", "vero", "verruca", "verticale", "vescica", "vessillo", "vestale", "veterano",
43890 "vetrina", "vetusto", "viandante", "vibrante", "vicenda", "vichingo", "vicinanza", "vidimare", "vigilia", "vigneto",
43891 "vigore", "vile", "villano", "vimini", "vincitore", "viola", "vipera", "virgola", "virologo", "virulento",
43892 "viscoso", "visione", "vispo", "vissuto", "visura", "vita", "vitello", "vittima", "vivanda", "vivido",
43893 "viziare", "voce", "voga", "volatile", "volere", "volpe", "voragine", "vulcano", "zampogna", "zanna",
43894 "zappato", "zattera", "zavorra", "zefiro", "zelante", "zelo", "zenzero", "zerbino", "zibetto", "zinco",
43895 "zircone", "zitto", "zolla", "zotico", "zucchero", "zufolo", "zulu", "zuppa"]
43896 </script>
43897 <script>/*
43898 * Copyright (c) 2013 Pavol Rusnak
43899 *
43900 * Permission is hereby granted, free of charge, to any person obtaining a copy of
43901 * this software and associated documentation files (the "Software"), to deal in
43902 * the Software without restriction, including without limitation the rights to
43903 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
43904 * of the Software, and to permit persons to whom the Software is furnished to do
43905 * so, subject to the following conditions:
43906 *
43907 * The above copyright notice and this permission notice shall be included in all
43908 * copies or substantial portions of the Software.
43909 *
43910 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
43911 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
43912 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
43913 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
43914 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
43915 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
43916 */
43917
43918 /*
43919 * Javascript port from python by Ian Coleman
43920 *
43921 * Requires code from sjcl
43922 * https://github.com/bitwiseshiftleft/sjcl
43923 */
43924
43925 var Mnemonic = function(language) {
43926
43927 var PBKDF2_ROUNDS = 2048;
43928 var RADIX = 2048;
43929
43930 var self = this;
43931 var wordlist = [];
43932
43933 var hmacSHA512 = function(key) {
43934 var hasher = new sjcl.misc.hmac(key, sjcl.hash.sha512);
43935 this.encrypt = function() {
43936 return hasher.encrypt.apply(hasher, arguments);
43937 };
43938 };
43939
43940 function init() {
43941 wordlist = WORDLISTS[language];
43942 if (wordlist.length != RADIX) {
43943 err = 'Wordlist should contain ' + RADIX + ' words, but it contains ' + wordlist.length + ' words.';
43944 throw err;
43945 }
43946 }
43947
43948 self.generate = function(strength) {
43949 strength = strength || 128;
43950 var r = strength % 32;
43951 if (r > 0) {
43952 throw 'Strength should be divisible by 32, but it is not (' + r + ').';
43953 }
43954 var hasStrongCrypto = 'crypto' in window && window['crypto'] !== null;
43955 if (!hasStrongCrypto) {
43956 throw 'Mnemonic should be generated with strong randomness, but crypto.getRandomValues is unavailable';
43957 }
43958 var buffer = new Uint8Array(strength / 8);
43959 var data = crypto.getRandomValues(buffer);
43960 return self.toMnemonic(data);
43961 }
43962
43963 self.toMnemonic = function(byteArray) {
43964 if (byteArray.length % 4 > 0) {
43965 throw 'Data length in bits should be divisible by 32, but it is not (' + byteArray.length + ' bytes = ' + byteArray.length*8 + ' bits).'
43966 }
43967
43968 //h = hashlib.sha256(data).hexdigest()
43969 var data = byteArrayToWordArray(byteArray);
43970 var hash = sjcl.hash.sha256.hash(data);
43971 var h = sjcl.codec.hex.fromBits(hash);
43972
43973 // b is a binary string, eg '00111010101100...'
43974 //b = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8) + \
43975 // bin(int(h, 16))[2:].zfill(256)[:len(data) * 8 / 32]
43976 //
43977 // a = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8)
43978 // c = bin(int(h, 16))[2:].zfill(256)
43979 // d = c[:len(data) * 8 / 32]
43980 var a = byteArrayToBinaryString(byteArray);
43981 var c = zfill(hexStringToBinaryString(h), 256);
43982 var d = c.substring(0, byteArray.length * 8 / 32);
43983 // b = line1 + line2
43984 var b = a + d;
43985
43986 var result = [];
43987 var blen = b.length / 11;
43988 for (var i=0; i<blen; i++) {
43989 var idx = parseInt(b.substring(i * 11, (i + 1) * 11), 2);
43990 result.push(wordlist[idx]);
43991 }
43992 return self.joinWords(result);
43993 }
43994
43995 self.check = function(mnemonic) {
43996 var mnemonic = self.splitWords(mnemonic);
43997 if (mnemonic.length == 0 || mnemonic.length % 3 > 0) {
43998 return false
43999 }
44000 // idx = map(lambda x: bin(self.wordlist.index(x))[2:].zfill(11), mnemonic)
44001 var idx = [];
44002 for (var i=0; i<mnemonic.length; i++) {
44003 var word = mnemonic[i];
44004 var wordIndex = wordlist.indexOf(word);
44005 if (wordIndex == -1) {
44006 return false;
44007 }
44008 var binaryIndex = zfill(wordIndex.toString(2), 11);
44009 idx.push(binaryIndex);
44010 }
44011 var b = idx.join('');
44012 var l = b.length;
44013 //d = b[:l / 33 * 32]
44014 //h = b[-l / 33:]
44015 var d = b.substring(0, l / 33 * 32);
44016 var h = b.substring(l - l / 33, l);
44017 //nd = binascii.unhexlify(hex(int(d, 2))[2:].rstrip('L').zfill(l / 33 * 8))
44018 var nd = binaryStringToWordArray(d);
44019 //nh = bin(int(hashlib.sha256(nd).hexdigest(), 16))[2:].zfill(256)[:l / 33]
44020 var ndHash = sjcl.hash.sha256.hash(nd);
44021 var ndHex = sjcl.codec.hex.fromBits(ndHash);
44022 var ndBstr = zfill(hexStringToBinaryString(ndHex), 256);
44023 var nh = ndBstr.substring(0,l/33);
44024 return h == nh;
44025 }
44026
44027 self.toSeed = function(mnemonic, passphrase) {
44028 passphrase = passphrase || '';
44029 mnemonic = self.joinWords(self.splitWords(mnemonic)); // removes duplicate blanks
44030 var mnemonicNormalized = self.normalizeString(mnemonic);
44031 passphrase = self.normalizeString(passphrase)
44032 passphrase = "mnemonic" + passphrase;
44033 var mnemonicBits = sjcl.codec.utf8String.toBits(mnemonicNormalized);
44034 var passphraseBits = sjcl.codec.utf8String.toBits(passphrase);
44035 var result = sjcl.misc.pbkdf2(mnemonicBits, passphraseBits, PBKDF2_ROUNDS, 512, hmacSHA512);
44036 var hashHex = sjcl.codec.hex.fromBits(result);
44037 return hashHex;
44038 }
44039
44040 self.splitWords = function(mnemonic) {
44041 return mnemonic.split(/\s/g).filter(function(x) { return x.length; });
44042 }
44043
44044 self.joinWords = function(words) {
44045 // Set space correctly depending on the language
44046 // see https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md#japanese
44047 var space = " ";
44048 if (language == "japanese") {
44049 space = "\u3000"; // ideographic space
44050 }
44051 return words.join(space);
44052 }
44053
44054 self.normalizeString = function(str) {
44055 if (typeof str.normalize == "function") {
44056 return str.normalize("NFKD");
44057 }
44058 else {
44059 // TODO decide how to handle this in the future.
44060 // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize
44061 return str;
44062 }
44063 }
44064
44065 function byteArrayToWordArray(data) {
44066 var a = [];
44067 for (var i=0; i<data.length/4; i++) {
44068 v = 0;
44069 v += data[i*4 + 0] << 8 * 3;
44070 v += data[i*4 + 1] << 8 * 2;
44071 v += data[i*4 + 2] << 8 * 1;
44072 v += data[i*4 + 3] << 8 * 0;
44073 a.push(v);
44074 }
44075 return a;
44076 }
44077
44078 function byteArrayToBinaryString(data) {
44079 var bin = "";
44080 for (var i=0; i<data.length; i++) {
44081 bin += zfill(data[i].toString(2), 8);
44082 }
44083 return bin;
44084 }
44085
44086 function hexStringToBinaryString(hexString) {
44087 binaryString = "";
44088 for (var i=0; i<hexString.length; i++) {
44089 binaryString += zfill(parseInt(hexString[i], 16).toString(2),4);
44090 }
44091 return binaryString;
44092 }
44093
44094 function binaryStringToWordArray(binary) {
44095 var aLen = binary.length / 32;
44096 var a = [];
44097 for (var i=0; i<aLen; i++) {
44098 var valueStr = binary.substring(0,32);
44099 var value = parseInt(valueStr, 2);
44100 a.push(value);
44101 binary = binary.slice(32);
44102 }
44103 return a;
44104 }
44105
44106 // Pad a numeric string on the left with zero digits until the given width
44107 // is reached.
44108 // Note this differs to the python implementation because it does not
44109 // handle numbers starting with a sign.
44110 function zfill(source, length) {
44111 source = source.toString();
44112 while (source.length < length) {
44113 source = '0' + source;
44114 }
44115 return source;
44116 }
44117
44118 init();
44119
44120 }
44121 </script>
44122 <script>/*
44123 JavaScript BigInteger library version 0.9.1
44124 http://silentmatt.com/biginteger/
44125
44126 Copyright (c) 2009 Matthew Crumley <email@matthewcrumley.com>
44127 Copyright (c) 2010,2011 by John Tobey <John.Tobey@gmail.com>
44128 Licensed under the MIT license.
44129
44130 Support for arbitrary internal representation base was added by
44131 Vitaly Magerya.
44132 */
44133
44134 /*
44135 File: biginteger.js
44136
44137 Exports:
44138
44139 <BigInteger>
44140 */
44141 (function(exports) {
44142 "use strict";
44143 /*
44144 Class: BigInteger
44145 An arbitrarily-large integer.
44146
44147 <BigInteger> objects should be considered immutable. None of the "built-in"
44148 methods modify *this* or their arguments. All properties should be
44149 considered private.
44150
44151 All the methods of <BigInteger> instances can be called "statically". The
44152 static versions are convenient if you don't already have a <BigInteger>
44153 object.
44154
44155 As an example, these calls are equivalent.
44156
44157 > BigInteger(4).multiply(5); // returns BigInteger(20);
44158 > BigInteger.multiply(4, 5); // returns BigInteger(20);
44159
44160 > var a = 42;
44161 > var a = BigInteger.toJSValue("0b101010"); // Not completely useless...
44162 */
44163
44164 var CONSTRUCT = {}; // Unique token to call "private" version of constructor
44165
44166 /*
44167 Constructor: BigInteger()
44168 Convert a value to a <BigInteger>.
44169
44170 Although <BigInteger()> is the constructor for <BigInteger> objects, it is
44171 best not to call it as a constructor. If *n* is a <BigInteger> object, it is
44172 simply returned as-is. Otherwise, <BigInteger()> is equivalent to <parse>
44173 without a radix argument.
44174
44175 > var n0 = BigInteger(); // Same as <BigInteger.ZERO>
44176 > var n1 = BigInteger("123"); // Create a new <BigInteger> with value 123
44177 > var n2 = BigInteger(123); // Create a new <BigInteger> with value 123
44178 > var n3 = BigInteger(n2); // Return n2, unchanged
44179
44180 The constructor form only takes an array and a sign. *n* must be an
44181 array of numbers in little-endian order, where each digit is between 0
44182 and BigInteger.base. The second parameter sets the sign: -1 for
44183 negative, +1 for positive, or 0 for zero. The array is *not copied and
44184 may be modified*. If the array contains only zeros, the sign parameter
44185 is ignored and is forced to zero.
44186
44187 > new BigInteger([5], -1): create a new BigInteger with value -5
44188
44189 Parameters:
44190
44191 n - Value to convert to a <BigInteger>.
44192
44193 Returns:
44194
44195 A <BigInteger> value.
44196
44197 See Also:
44198
44199 <parse>, <BigInteger>
44200 */
44201 function BigInteger(n, s, token) {
44202 if (token !== CONSTRUCT) {
44203 if (n instanceof BigInteger) {
44204 return n;
44205 }
44206 else if (typeof n === "undefined") {
44207 return ZERO;
44208 }
44209 return BigInteger.parse(n);
44210 }
44211
44212 n = n || []; // Provide the nullary constructor for subclasses.
44213 while (n.length && !n[n.length - 1]) {
44214 --n.length;
44215 }
44216 this._d = n;
44217 this._s = n.length ? (s || 1) : 0;
44218 }
44219
44220 BigInteger._construct = function(n, s) {
44221 return new BigInteger(n, s, CONSTRUCT);
44222 };
44223
44224 // Base-10 speedup hacks in parse, toString, exp10 and log functions
44225 // require base to be a power of 10. 10^7 is the largest such power
44226 // that won't cause a precision loss when digits are multiplied.
44227 var BigInteger_base = 10000000;
44228 var BigInteger_base_log10 = 7;
44229
44230 BigInteger.base = BigInteger_base;
44231 BigInteger.base_log10 = BigInteger_base_log10;
44232
44233 var ZERO = new BigInteger([], 0, CONSTRUCT);
44234 // Constant: ZERO
44235 // <BigInteger> 0.
44236 BigInteger.ZERO = ZERO;
44237
44238 var ONE = new BigInteger([1], 1, CONSTRUCT);
44239 // Constant: ONE
44240 // <BigInteger> 1.
44241 BigInteger.ONE = ONE;
44242
44243 var M_ONE = new BigInteger(ONE._d, -1, CONSTRUCT);
44244 // Constant: M_ONE
44245 // <BigInteger> -1.
44246 BigInteger.M_ONE = M_ONE;
44247
44248 // Constant: _0
44249 // Shortcut for <ZERO>.
44250 BigInteger._0 = ZERO;
44251
44252 // Constant: _1
44253 // Shortcut for <ONE>.
44254 BigInteger._1 = ONE;
44255
44256 /*
44257 Constant: small
44258 Array of <BigIntegers> from 0 to 36.
44259
44260 These are used internally for parsing, but useful when you need a "small"
44261 <BigInteger>.
44262
44263 See Also:
44264
44265 <ZERO>, <ONE>, <_0>, <_1>
44266 */
44267 BigInteger.small = [
44268 ZERO,
44269 ONE,
44270 /* Assuming BigInteger_base > 36 */
44271 new BigInteger( [2], 1, CONSTRUCT),
44272 new BigInteger( [3], 1, CONSTRUCT),
44273 new BigInteger( [4], 1, CONSTRUCT),
44274 new BigInteger( [5], 1, CONSTRUCT),
44275 new BigInteger( [6], 1, CONSTRUCT),
44276 new BigInteger( [7], 1, CONSTRUCT),
44277 new BigInteger( [8], 1, CONSTRUCT),
44278 new BigInteger( [9], 1, CONSTRUCT),
44279 new BigInteger([10], 1, CONSTRUCT),
44280 new BigInteger([11], 1, CONSTRUCT),
44281 new BigInteger([12], 1, CONSTRUCT),
44282 new BigInteger([13], 1, CONSTRUCT),
44283 new BigInteger([14], 1, CONSTRUCT),
44284 new BigInteger([15], 1, CONSTRUCT),
44285 new BigInteger([16], 1, CONSTRUCT),
44286 new BigInteger([17], 1, CONSTRUCT),
44287 new BigInteger([18], 1, CONSTRUCT),
44288 new BigInteger([19], 1, CONSTRUCT),
44289 new BigInteger([20], 1, CONSTRUCT),
44290 new BigInteger([21], 1, CONSTRUCT),
44291 new BigInteger([22], 1, CONSTRUCT),
44292 new BigInteger([23], 1, CONSTRUCT),
44293 new BigInteger([24], 1, CONSTRUCT),
44294 new BigInteger([25], 1, CONSTRUCT),
44295 new BigInteger([26], 1, CONSTRUCT),
44296 new BigInteger([27], 1, CONSTRUCT),
44297 new BigInteger([28], 1, CONSTRUCT),
44298 new BigInteger([29], 1, CONSTRUCT),
44299 new BigInteger([30], 1, CONSTRUCT),
44300 new BigInteger([31], 1, CONSTRUCT),
44301 new BigInteger([32], 1, CONSTRUCT),
44302 new BigInteger([33], 1, CONSTRUCT),
44303 new BigInteger([34], 1, CONSTRUCT),
44304 new BigInteger([35], 1, CONSTRUCT),
44305 new BigInteger([36], 1, CONSTRUCT)
44306 ];
44307
44308 // Used for parsing/radix conversion
44309 BigInteger.digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
44310
44311 /*
44312 Method: toString
44313 Convert a <BigInteger> to a string.
44314
44315 When *base* is greater than 10, letters are upper case.
44316
44317 Parameters:
44318
44319 base - Optional base to represent the number in (default is base 10).
44320 Must be between 2 and 36 inclusive, or an Error will be thrown.
44321
44322 Returns:
44323
44324 The string representation of the <BigInteger>.
44325 */
44326 BigInteger.prototype.toString = function(base) {
44327 base = +base || 10;
44328 if (base < 2 || base > 36) {
44329 throw new Error("illegal radix " + base + ".");
44330 }
44331 if (this._s === 0) {
44332 return "0";
44333 }
44334 if (base === 10) {
44335 var str = this._s < 0 ? "-" : "";
44336 str += this._d[this._d.length - 1].toString();
44337 for (var i = this._d.length - 2; i >= 0; i--) {
44338 var group = this._d[i].toString();
44339 while (group.length < BigInteger_base_log10) group = '0' + group;
44340 str += group;
44341 }
44342 return str;
44343 }
44344 else {
44345 var numerals = BigInteger.digits;
44346 base = BigInteger.small[base];
44347 var sign = this._s;
44348
44349 var n = this.abs();
44350 var digits = [];
44351 var digit;
44352
44353 while (n._s !== 0) {
44354 var divmod = n.divRem(base);
44355 n = divmod[0];
44356 digit = divmod[1];
44357 // TODO: This could be changed to unshift instead of reversing at the end.
44358 // Benchmark both to compare speeds.
44359 digits.push(numerals[digit.valueOf()]);
44360 }
44361 return (sign < 0 ? "-" : "") + digits.reverse().join("");
44362 }
44363 };
44364
44365 // Verify strings for parsing
44366 BigInteger.radixRegex = [
44367 /^$/,
44368 /^$/,
44369 /^[01]*$/,
44370 /^[012]*$/,
44371 /^[0-3]*$/,
44372 /^[0-4]*$/,
44373 /^[0-5]*$/,
44374 /^[0-6]*$/,
44375 /^[0-7]*$/,
44376 /^[0-8]*$/,
44377 /^[0-9]*$/,
44378 /^[0-9aA]*$/,
44379 /^[0-9abAB]*$/,
44380 /^[0-9abcABC]*$/,
44381 /^[0-9a-dA-D]*$/,
44382 /^[0-9a-eA-E]*$/,
44383 /^[0-9a-fA-F]*$/,
44384 /^[0-9a-gA-G]*$/,
44385 /^[0-9a-hA-H]*$/,
44386 /^[0-9a-iA-I]*$/,
44387 /^[0-9a-jA-J]*$/,
44388 /^[0-9a-kA-K]*$/,
44389 /^[0-9a-lA-L]*$/,
44390 /^[0-9a-mA-M]*$/,
44391 /^[0-9a-nA-N]*$/,
44392 /^[0-9a-oA-O]*$/,
44393 /^[0-9a-pA-P]*$/,
44394 /^[0-9a-qA-Q]*$/,
44395 /^[0-9a-rA-R]*$/,
44396 /^[0-9a-sA-S]*$/,
44397 /^[0-9a-tA-T]*$/,
44398 /^[0-9a-uA-U]*$/,
44399 /^[0-9a-vA-V]*$/,
44400 /^[0-9a-wA-W]*$/,
44401 /^[0-9a-xA-X]*$/,
44402 /^[0-9a-yA-Y]*$/,
44403 /^[0-9a-zA-Z]*$/
44404 ];
44405
44406 /*
44407 Function: parse
44408 Parse a string into a <BigInteger>.
44409
44410 *base* is optional but, if provided, must be from 2 to 36 inclusive. If
44411 *base* is not provided, it will be guessed based on the leading characters
44412 of *s* as follows:
44413
44414 - "0x" or "0X": *base* = 16
44415 - "0c" or "0C": *base* = 8
44416 - "0b" or "0B": *base* = 2
44417 - else: *base* = 10
44418
44419 If no base is provided, or *base* is 10, the number can be in exponential
44420 form. For example, these are all valid:
44421
44422 > BigInteger.parse("1e9"); // Same as "1000000000"
44423 > BigInteger.parse("1.234*10^3"); // Same as 1234
44424 > BigInteger.parse("56789 * 10 ** -2"); // Same as 567
44425
44426 If any characters fall outside the range defined by the radix, an exception
44427 will be thrown.
44428
44429 Parameters:
44430
44431 s - The string to parse.
44432 base - Optional radix (default is to guess based on *s*).
44433
44434 Returns:
44435
44436 a <BigInteger> instance.
44437 */
44438 BigInteger.parse = function(s, base) {
44439 // Expands a number in exponential form to decimal form.
44440 // expandExponential("-13.441*10^5") === "1344100";
44441 // expandExponential("1.12300e-1") === "0.112300";
44442 // expandExponential(1000000000000000000000000000000) === "1000000000000000000000000000000";
44443 function expandExponential(str) {
44444 str = str.replace(/\s*[*xX]\s*10\s*(\^|\*\*)\s*/, "e");
44445
44446 return str.replace(/^([+\-])?(\d+)\.?(\d*)[eE]([+\-]?\d+)$/, function(x, s, n, f, c) {
44447 c = +c;
44448 var l = c < 0;
44449 var i = n.length + c;
44450 x = (l ? n : f).length;
44451 c = ((c = Math.abs(c)) >= x ? c - x + l : 0);
44452 var z = (new Array(c + 1)).join("0");
44453 var r = n + f;
44454 return (s || "") + (l ? r = z + r : r += z).substr(0, i += l ? z.length : 0) + (i < r.length ? "." + r.substr(i) : "");
44455 });
44456 }
44457
44458 s = s.toString();
44459 if (typeof base === "undefined" || +base === 10) {
44460 s = expandExponential(s);
44461 }
44462
44463 var prefixRE;
44464 if (typeof base === "undefined") {
44465 prefixRE = '0[xcb]';
44466 }
44467 else if (base == 16) {
44468 prefixRE = '0x';
44469 }
44470 else if (base == 8) {
44471 prefixRE = '0c';
44472 }
44473 else if (base == 2) {
44474 prefixRE = '0b';
44475 }
44476 else {
44477 prefixRE = '';
44478 }
44479 var parts = new RegExp('^([+\\-]?)(' + prefixRE + ')?([0-9a-z]*)(?:\\.\\d*)?$', 'i').exec(s);
44480 if (parts) {
44481 var sign = parts[1] || "+";
44482 var baseSection = parts[2] || "";
44483 var digits = parts[3] || "";
44484
44485 if (typeof base === "undefined") {
44486 // Guess base
44487 if (baseSection === "0x" || baseSection === "0X") { // Hex
44488 base = 16;
44489 }
44490 else if (baseSection === "0c" || baseSection === "0C") { // Octal
44491 base = 8;
44492 }
44493 else if (baseSection === "0b" || baseSection === "0B") { // Binary
44494 base = 2;
44495 }
44496 else {
44497 base = 10;
44498 }
44499 }
44500 else if (base < 2 || base > 36) {
44501 throw new Error("Illegal radix " + base + ".");
44502 }
44503
44504 base = +base;
44505
44506 // Check for digits outside the range
44507 if (!(BigInteger.radixRegex[base].test(digits))) {
44508 throw new Error("Bad digit for radix " + base);
44509 }
44510
44511 // Strip leading zeros, and convert to array
44512 digits = digits.replace(/^0+/, "").split("");
44513 if (digits.length === 0) {
44514 return ZERO;
44515 }
44516
44517 // Get the sign (we know it's not zero)
44518 sign = (sign === "-") ? -1 : 1;
44519
44520 // Optimize 10
44521 if (base == 10) {
44522 var d = [];
44523 while (digits.length >= BigInteger_base_log10) {
44524 d.push(parseInt(digits.splice(digits.length-BigInteger.base_log10, BigInteger.base_log10).join(''), 10));
44525 }
44526 d.push(parseInt(digits.join(''), 10));
44527 return new BigInteger(d, sign, CONSTRUCT);
44528 }
44529
44530 // Do the conversion
44531 var d = ZERO;
44532 base = BigInteger.small[base];
44533 var small = BigInteger.small;
44534 for (var i = 0; i < digits.length; i++) {
44535 d = d.multiply(base).add(small[parseInt(digits[i], 36)]);
44536 }
44537 return new BigInteger(d._d, sign, CONSTRUCT);
44538 }
44539 else {
44540 throw new Error("Invalid BigInteger format: " + s);
44541 }
44542 };
44543
44544 /*
44545 Function: add
44546 Add two <BigIntegers>.
44547
44548 Parameters:
44549
44550 n - The number to add to *this*. Will be converted to a <BigInteger>.
44551
44552 Returns:
44553
44554 The numbers added together.
44555
44556 See Also:
44557
44558 <subtract>, <multiply>, <quotient>, <next>
44559 */
44560 BigInteger.prototype.add = function(n) {
44561 if (this._s === 0) {
44562 return BigInteger(n);
44563 }
44564
44565 n = BigInteger(n);
44566 if (n._s === 0) {
44567 return this;
44568 }
44569 if (this._s !== n._s) {
44570 n = n.negate();
44571 return this.subtract(n);
44572 }
44573
44574 var a = this._d;
44575 var b = n._d;
44576 var al = a.length;
44577 var bl = b.length;
44578 var sum = new Array(Math.max(al, bl) + 1);
44579 var size = Math.min(al, bl);
44580 var carry = 0;
44581 var digit;
44582
44583 for (var i = 0; i < size; i++) {
44584 digit = a[i] + b[i] + carry;
44585 sum[i] = digit % BigInteger_base;
44586 carry = (digit / BigInteger_base) | 0;
44587 }
44588 if (bl > al) {
44589 a = b;
44590 al = bl;
44591 }
44592 for (i = size; carry && i < al; i++) {
44593 digit = a[i] + carry;
44594 sum[i] = digit % BigInteger_base;
44595 carry = (digit / BigInteger_base) | 0;
44596 }
44597 if (carry) {
44598 sum[i] = carry;
44599 }
44600
44601 for ( ; i < al; i++) {
44602 sum[i] = a[i];
44603 }
44604
44605 return new BigInteger(sum, this._s, CONSTRUCT);
44606 };
44607
44608 /*
44609 Function: negate
44610 Get the additive inverse of a <BigInteger>.
44611
44612 Returns:
44613
44614 A <BigInteger> with the same magnatude, but with the opposite sign.
44615
44616 See Also:
44617
44618 <abs>
44619 */
44620 BigInteger.prototype.negate = function() {
44621 return new BigInteger(this._d, (-this._s) | 0, CONSTRUCT);
44622 };
44623
44624 /*
44625 Function: abs
44626 Get the absolute value of a <BigInteger>.
44627
44628 Returns:
44629
44630 A <BigInteger> with the same magnatude, but always positive (or zero).
44631
44632 See Also:
44633
44634 <negate>
44635 */
44636 BigInteger.prototype.abs = function() {
44637 return (this._s < 0) ? this.negate() : this;
44638 };
44639
44640 /*
44641 Function: subtract
44642 Subtract two <BigIntegers>.
44643
44644 Parameters:
44645
44646 n - The number to subtract from *this*. Will be converted to a <BigInteger>.
44647
44648 Returns:
44649
44650 The *n* subtracted from *this*.
44651
44652 See Also:
44653
44654 <add>, <multiply>, <quotient>, <prev>
44655 */
44656 BigInteger.prototype.subtract = function(n) {
44657 if (this._s === 0) {
44658 return BigInteger(n).negate();
44659 }
44660
44661 n = BigInteger(n);
44662 if (n._s === 0) {
44663 return this;
44664 }
44665 if (this._s !== n._s) {
44666 n = n.negate();
44667 return this.add(n);
44668 }
44669
44670 var m = this;
44671 // negative - negative => -|a| - -|b| => -|a| + |b| => |b| - |a|
44672 if (this._s < 0) {
44673 m = new BigInteger(n._d, 1, CONSTRUCT);
44674 n = new BigInteger(this._d, 1, CONSTRUCT);
44675 }
44676
44677 // Both are positive => a - b
44678 var sign = m.compareAbs(n);
44679 if (sign === 0) {
44680 return ZERO;
44681 }
44682 else if (sign < 0) {
44683 // swap m and n
44684 var t = n;
44685 n = m;
44686 m = t;
44687 }
44688
44689 // a > b
44690 var a = m._d;
44691 var b = n._d;
44692 var al = a.length;
44693 var bl = b.length;
44694 var diff = new Array(al); // al >= bl since a > b
44695 var borrow = 0;
44696 var i;
44697 var digit;
44698
44699 for (i = 0; i < bl; i++) {
44700 digit = a[i] - borrow - b[i];
44701 if (digit < 0) {
44702 digit += BigInteger_base;
44703 borrow = 1;
44704 }
44705 else {
44706 borrow = 0;
44707 }
44708 diff[i] = digit;
44709 }
44710 for (i = bl; i < al; i++) {
44711 digit = a[i] - borrow;
44712 if (digit < 0) {
44713 digit += BigInteger_base;
44714 }
44715 else {
44716 diff[i++] = digit;
44717 break;
44718 }
44719 diff[i] = digit;
44720 }
44721 for ( ; i < al; i++) {
44722 diff[i] = a[i];
44723 }
44724
44725 return new BigInteger(diff, sign, CONSTRUCT);
44726 };
44727
44728 (function() {
44729 function addOne(n, sign) {
44730 var a = n._d;
44731 var sum = a.slice();
44732 var carry = true;
44733 var i = 0;
44734
44735 while (true) {
44736 var digit = (a[i] || 0) + 1;
44737 sum[i] = digit % BigInteger_base;
44738 if (digit <= BigInteger_base - 1) {
44739 break;
44740 }
44741 ++i;
44742 }
44743
44744 return new BigInteger(sum, sign, CONSTRUCT);
44745 }
44746
44747 function subtractOne(n, sign) {
44748 var a = n._d;
44749 var sum = a.slice();
44750 var borrow = true;
44751 var i = 0;
44752
44753 while (true) {
44754 var digit = (a[i] || 0) - 1;
44755 if (digit < 0) {
44756 sum[i] = digit + BigInteger_base;
44757 }
44758 else {
44759 sum[i] = digit;
44760 break;
44761 }
44762 ++i;
44763 }
44764
44765 return new BigInteger(sum, sign, CONSTRUCT);
44766 }
44767
44768 /*
44769 Function: next
44770 Get the next <BigInteger> (add one).
44771
44772 Returns:
44773
44774 *this* + 1.
44775
44776 See Also:
44777
44778 <add>, <prev>
44779 */
44780 BigInteger.prototype.next = function() {
44781 switch (this._s) {
44782 case 0:
44783 return ONE;
44784 case -1:
44785 return subtractOne(this, -1);
44786 // case 1:
44787 default:
44788 return addOne(this, 1);
44789 }
44790 };
44791
44792 /*
44793 Function: prev
44794 Get the previous <BigInteger> (subtract one).
44795
44796 Returns:
44797
44798 *this* - 1.
44799
44800 See Also:
44801
44802 <next>, <subtract>
44803 */
44804 BigInteger.prototype.prev = function() {
44805 switch (this._s) {
44806 case 0:
44807 return M_ONE;
44808 case -1:
44809 return addOne(this, -1);
44810 // case 1:
44811 default:
44812 return subtractOne(this, 1);
44813 }
44814 };
44815 })();
44816
44817 /*
44818 Function: compareAbs
44819 Compare the absolute value of two <BigIntegers>.
44820
44821 Calling <compareAbs> is faster than calling <abs> twice, then <compare>.
44822
44823 Parameters:
44824
44825 n - The number to compare to *this*. Will be converted to a <BigInteger>.
44826
44827 Returns:
44828
44829 -1, 0, or +1 if *|this|* is less than, equal to, or greater than *|n|*.
44830
44831 See Also:
44832
44833 <compare>, <abs>
44834 */
44835 BigInteger.prototype.compareAbs = function(n) {
44836 if (this === n) {
44837 return 0;
44838 }
44839
44840 if (!(n instanceof BigInteger)) {
44841 if (!isFinite(n)) {
44842 return(isNaN(n) ? n : -1);
44843 }
44844 n = BigInteger(n);
44845 }
44846
44847 if (this._s === 0) {
44848 return (n._s !== 0) ? -1 : 0;
44849 }
44850 if (n._s === 0) {
44851 return 1;
44852 }
44853
44854 var l = this._d.length;
44855 var nl = n._d.length;
44856 if (l < nl) {
44857 return -1;
44858 }
44859 else if (l > nl) {
44860 return 1;
44861 }
44862
44863 var a = this._d;
44864 var b = n._d;
44865 for (var i = l-1; i >= 0; i--) {
44866 if (a[i] !== b[i]) {
44867 return a[i] < b[i] ? -1 : 1;
44868 }
44869 }
44870
44871 return 0;
44872 };
44873
44874 /*
44875 Function: compare
44876 Compare two <BigIntegers>.
44877
44878 Parameters:
44879
44880 n - The number to compare to *this*. Will be converted to a <BigInteger>.
44881
44882 Returns:
44883
44884 -1, 0, or +1 if *this* is less than, equal to, or greater than *n*.
44885
44886 See Also:
44887
44888 <compareAbs>, <isPositive>, <isNegative>, <isUnit>
44889 */
44890 BigInteger.prototype.compare = function(n) {
44891 if (this === n) {
44892 return 0;
44893 }
44894
44895 n = BigInteger(n);
44896
44897 if (this._s === 0) {
44898 return -n._s;
44899 }
44900
44901 if (this._s === n._s) { // both positive or both negative
44902 var cmp = this.compareAbs(n);
44903 return cmp * this._s;
44904 }
44905 else {
44906 return this._s;
44907 }
44908 };
44909
44910 /*
44911 Function: isUnit
44912 Return true iff *this* is either 1 or -1.
44913
44914 Returns:
44915
44916 true if *this* compares equal to <BigInteger.ONE> or <BigInteger.M_ONE>.
44917
44918 See Also:
44919
44920 <isZero>, <isNegative>, <isPositive>, <compareAbs>, <compare>,
44921 <BigInteger.ONE>, <BigInteger.M_ONE>
44922 */
44923 BigInteger.prototype.isUnit = function() {
44924 return this === ONE ||
44925 this === M_ONE ||
44926 (this._d.length === 1 && this._d[0] === 1);
44927 };
44928
44929 /*
44930 Function: multiply
44931 Multiply two <BigIntegers>.
44932
44933 Parameters:
44934
44935 n - The number to multiply *this* by. Will be converted to a
44936 <BigInteger>.
44937
44938 Returns:
44939
44940 The numbers multiplied together.
44941
44942 See Also:
44943
44944 <add>, <subtract>, <quotient>, <square>
44945 */
44946 BigInteger.prototype.multiply = function(n) {
44947 // TODO: Consider adding Karatsuba multiplication for large numbers
44948 if (this._s === 0) {
44949 return ZERO;
44950 }
44951
44952 n = BigInteger(n);
44953 if (n._s === 0) {
44954 return ZERO;
44955 }
44956 if (this.isUnit()) {
44957 if (this._s < 0) {
44958 return n.negate();
44959 }
44960 return n;
44961 }
44962 if (n.isUnit()) {
44963 if (n._s < 0) {
44964 return this.negate();
44965 }
44966 return this;
44967 }
44968 if (this === n) {
44969 return this.square();
44970 }
44971
44972 var r = (this._d.length >= n._d.length);
44973 var a = (r ? this : n)._d; // a will be longer than b
44974 var b = (r ? n : this)._d;
44975 var al = a.length;
44976 var bl = b.length;
44977
44978 var pl = al + bl;
44979 var partial = new Array(pl);
44980 var i;
44981 for (i = 0; i < pl; i++) {
44982 partial[i] = 0;
44983 }
44984
44985 for (i = 0; i < bl; i++) {
44986 var carry = 0;
44987 var bi = b[i];
44988 var jlimit = al + i;
44989 var digit;
44990 for (var j = i; j < jlimit; j++) {
44991 digit = partial[j] + bi * a[j - i] + carry;
44992 carry = (digit / BigInteger_base) | 0;
44993 partial[j] = (digit % BigInteger_base) | 0;
44994 }
44995 if (carry) {
44996 digit = partial[j] + carry;
44997 carry = (digit / BigInteger_base) | 0;
44998 partial[j] = digit % BigInteger_base;
44999 }
45000 }
45001 return new BigInteger(partial, this._s * n._s, CONSTRUCT);
45002 };
45003
45004 // Multiply a BigInteger by a single-digit native number
45005 // Assumes that this and n are >= 0
45006 // This is not really intended to be used outside the library itself
45007 BigInteger.prototype.multiplySingleDigit = function(n) {
45008 if (n === 0 || this._s === 0) {
45009 return ZERO;
45010 }
45011 if (n === 1) {
45012 return this;
45013 }
45014
45015 var digit;
45016 if (this._d.length === 1) {
45017 digit = this._d[0] * n;
45018 if (digit >= BigInteger_base) {
45019 return new BigInteger([(digit % BigInteger_base)|0,
45020 (digit / BigInteger_base)|0], 1, CONSTRUCT);
45021 }
45022 return new BigInteger([digit], 1, CONSTRUCT);
45023 }
45024
45025 if (n === 2) {
45026 return this.add(this);
45027 }
45028 if (this.isUnit()) {
45029 return new BigInteger([n], 1, CONSTRUCT);
45030 }
45031
45032 var a = this._d;
45033 var al = a.length;
45034
45035 var pl = al + 1;
45036 var partial = new Array(pl);
45037 for (var i = 0; i < pl; i++) {
45038 partial[i] = 0;
45039 }
45040
45041 var carry = 0;
45042 for (var j = 0; j < al; j++) {
45043 digit = n * a[j] + carry;
45044 carry = (digit / BigInteger_base) | 0;
45045 partial[j] = (digit % BigInteger_base) | 0;
45046 }
45047 if (carry) {
45048 partial[j] = carry;
45049 }
45050
45051 return new BigInteger(partial, 1, CONSTRUCT);
45052 };
45053
45054 /*
45055 Function: square
45056 Multiply a <BigInteger> by itself.
45057
45058 This is slightly faster than regular multiplication, since it removes the
45059 duplicated multiplcations.
45060
45061 Returns:
45062
45063 > this.multiply(this)
45064
45065 See Also:
45066 <multiply>
45067 */
45068 BigInteger.prototype.square = function() {
45069 // Normally, squaring a 10-digit number would take 100 multiplications.
45070 // Of these 10 are unique diagonals, of the remaining 90 (100-10), 45 are repeated.
45071 // This procedure saves (N*(N-1))/2 multiplications, (e.g., 45 of 100 multiplies).
45072 // Based on code by Gary Darby, Intellitech Systems Inc., www.DelphiForFun.org
45073
45074 if (this._s === 0) {
45075 return ZERO;
45076 }
45077 if (this.isUnit()) {
45078 return ONE;
45079 }
45080
45081 var digits = this._d;
45082 var length = digits.length;
45083 var imult1 = new Array(length + length + 1);
45084 var product, carry, k;
45085 var i;
45086
45087 // Calculate diagonal
45088 for (i = 0; i < length; i++) {
45089 k = i * 2;
45090 product = digits[i] * digits[i];
45091 carry = (product / BigInteger_base) | 0;
45092 imult1[k] = product % BigInteger_base;
45093 imult1[k + 1] = carry;
45094 }
45095
45096 // Calculate repeating part
45097 for (i = 0; i < length; i++) {
45098 carry = 0;
45099 k = i * 2 + 1;
45100 for (var j = i + 1; j < length; j++, k++) {
45101 product = digits[j] * digits[i] * 2 + imult1[k] + carry;
45102 carry = (product / BigInteger_base) | 0;
45103 imult1[k] = product % BigInteger_base;
45104 }
45105 k = length + i;
45106 var digit = carry + imult1[k];
45107 carry = (digit / BigInteger_base) | 0;
45108 imult1[k] = digit % BigInteger_base;
45109 imult1[k + 1] += carry;
45110 }
45111
45112 return new BigInteger(imult1, 1, CONSTRUCT);
45113 };
45114
45115 /*
45116 Function: quotient
45117 Divide two <BigIntegers> and truncate towards zero.
45118
45119 <quotient> throws an exception if *n* is zero.
45120
45121 Parameters:
45122
45123 n - The number to divide *this* by. Will be converted to a <BigInteger>.
45124
45125 Returns:
45126
45127 The *this* / *n*, truncated to an integer.
45128
45129 See Also:
45130
45131 <add>, <subtract>, <multiply>, <divRem>, <remainder>
45132 */
45133 BigInteger.prototype.quotient = function(n) {
45134 return this.divRem(n)[0];
45135 };
45136
45137 /*
45138 Function: divide
45139 Deprecated synonym for <quotient>.
45140 */
45141 BigInteger.prototype.divide = BigInteger.prototype.quotient;
45142
45143 /*
45144 Function: remainder
45145 Calculate the remainder of two <BigIntegers>.
45146
45147 <remainder> throws an exception if *n* is zero.
45148
45149 Parameters:
45150
45151 n - The remainder after *this* is divided *this* by *n*. Will be
45152 converted to a <BigInteger>.
45153
45154 Returns:
45155
45156 *this* % *n*.
45157
45158 See Also:
45159
45160 <divRem>, <quotient>
45161 */
45162 BigInteger.prototype.remainder = function(n) {
45163 return this.divRem(n)[1];
45164 };
45165
45166 /*
45167 Function: divRem
45168 Calculate the integer quotient and remainder of two <BigIntegers>.
45169
45170 <divRem> throws an exception if *n* is zero.
45171
45172 Parameters:
45173
45174 n - The number to divide *this* by. Will be converted to a <BigInteger>.
45175
45176 Returns:
45177
45178 A two-element array containing the quotient and the remainder.
45179
45180 > a.divRem(b)
45181
45182 is exactly equivalent to
45183
45184 > [a.quotient(b), a.remainder(b)]
45185
45186 except it is faster, because they are calculated at the same time.
45187
45188 See Also:
45189
45190 <quotient>, <remainder>
45191 */
45192 BigInteger.prototype.divRem = function(n) {
45193 n = BigInteger(n);
45194 if (n._s === 0) {
45195 throw new Error("Divide by zero");
45196 }
45197 if (this._s === 0) {
45198 return [ZERO, ZERO];
45199 }
45200 if (n._d.length === 1) {
45201 return this.divRemSmall(n._s * n._d[0]);
45202 }
45203
45204 // Test for easy cases -- |n1| <= |n2|
45205 switch (this.compareAbs(n)) {
45206 case 0: // n1 == n2
45207 return [this._s === n._s ? ONE : M_ONE, ZERO];
45208 case -1: // |n1| < |n2|
45209 return [ZERO, this];
45210 }
45211
45212 var sign = this._s * n._s;
45213 var a = n.abs();
45214 var b_digits = this._d;
45215 var b_index = b_digits.length;
45216 var digits = n._d.length;
45217 var quot = [];
45218 var guess;
45219
45220 var part = new BigInteger([], 0, CONSTRUCT);
45221
45222 while (b_index) {
45223 part._d.unshift(b_digits[--b_index]);
45224 part = new BigInteger(part._d, 1, CONSTRUCT);
45225
45226 if (part.compareAbs(n) < 0) {
45227 quot.push(0);
45228 continue;
45229 }
45230 if (part._s === 0) {
45231 guess = 0;
45232 }
45233 else {
45234 var xlen = part._d.length, ylen = a._d.length;
45235 var highx = part._d[xlen-1]*BigInteger_base + part._d[xlen-2];
45236 var highy = a._d[ylen-1]*BigInteger_base + a._d[ylen-2];
45237 if (part._d.length > a._d.length) {
45238 // The length of part._d can either match a._d length,
45239 // or exceed it by one.
45240 highx = (highx+1)*BigInteger_base;
45241 }
45242 guess = Math.ceil(highx/highy);
45243 }
45244 do {
45245 var check = a.multiplySingleDigit(guess);
45246 if (check.compareAbs(part) <= 0) {
45247 break;
45248 }
45249 guess--;
45250 } while (guess);
45251
45252 quot.push(guess);
45253 if (!guess) {
45254 continue;
45255 }
45256 var diff = part.subtract(check);
45257 part._d = diff._d.slice();
45258 }
45259
45260 return [new BigInteger(quot.reverse(), sign, CONSTRUCT),
45261 new BigInteger(part._d, this._s, CONSTRUCT)];
45262 };
45263
45264 // Throws an exception if n is outside of (-BigInteger.base, -1] or
45265 // [1, BigInteger.base). It's not necessary to call this, since the
45266 // other division functions will call it if they are able to.
45267 BigInteger.prototype.divRemSmall = function(n) {
45268 var r;
45269 n = +n;
45270 if (n === 0) {
45271 throw new Error("Divide by zero");
45272 }
45273
45274 var n_s = n < 0 ? -1 : 1;
45275 var sign = this._s * n_s;
45276 n = Math.abs(n);
45277
45278 if (n < 1 || n >= BigInteger_base) {
45279 throw new Error("Argument out of range");
45280 }
45281
45282 if (this._s === 0) {
45283 return [ZERO, ZERO];
45284 }
45285
45286 if (n === 1 || n === -1) {
45287 return [(sign === 1) ? this.abs() : new BigInteger(this._d, sign, CONSTRUCT), ZERO];
45288 }
45289
45290 // 2 <= n < BigInteger_base
45291
45292 // divide a single digit by a single digit
45293 if (this._d.length === 1) {
45294 var q = new BigInteger([(this._d[0] / n) | 0], 1, CONSTRUCT);
45295 r = new BigInteger([(this._d[0] % n) | 0], 1, CONSTRUCT);
45296 if (sign < 0) {
45297 q = q.negate();
45298 }
45299 if (this._s < 0) {
45300 r = r.negate();
45301 }
45302 return [q, r];
45303 }
45304
45305 var digits = this._d.slice();
45306 var quot = new Array(digits.length);
45307 var part = 0;
45308 var diff = 0;
45309 var i = 0;
45310 var guess;
45311
45312 while (digits.length) {
45313 part = part * BigInteger_base + digits[digits.length - 1];
45314 if (part < n) {
45315 quot[i++] = 0;
45316 digits.pop();
45317 diff = BigInteger_base * diff + part;
45318 continue;
45319 }
45320 if (part === 0) {
45321 guess = 0;
45322 }
45323 else {
45324 guess = (part / n) | 0;
45325 }
45326
45327 var check = n * guess;
45328 diff = part - check;
45329 quot[i++] = guess;
45330 if (!guess) {
45331 digits.pop();
45332 continue;
45333 }
45334
45335 digits.pop();
45336 part = diff;
45337 }
45338
45339 r = new BigInteger([diff], 1, CONSTRUCT);
45340 if (this._s < 0) {
45341 r = r.negate();
45342 }
45343 return [new BigInteger(quot.reverse(), sign, CONSTRUCT), r];
45344 };
45345
45346 /*
45347 Function: isEven
45348 Return true iff *this* is divisible by two.
45349
45350 Note that <BigInteger.ZERO> is even.
45351
45352 Returns:
45353
45354 true if *this* is even, false otherwise.
45355
45356 See Also:
45357
45358 <isOdd>
45359 */
45360 BigInteger.prototype.isEven = function() {
45361 var digits = this._d;
45362 return this._s === 0 || digits.length === 0 || (digits[0] % 2) === 0;
45363 };
45364
45365 /*
45366 Function: isOdd
45367 Return true iff *this* is not divisible by two.
45368
45369 Returns:
45370
45371 true if *this* is odd, false otherwise.
45372
45373 See Also:
45374
45375 <isEven>
45376 */
45377 BigInteger.prototype.isOdd = function() {
45378 return !this.isEven();
45379 };
45380
45381 /*
45382 Function: sign
45383 Get the sign of a <BigInteger>.
45384
45385 Returns:
45386
45387 * -1 if *this* < 0
45388 * 0 if *this* == 0
45389 * +1 if *this* > 0
45390
45391 See Also:
45392
45393 <isZero>, <isPositive>, <isNegative>, <compare>, <BigInteger.ZERO>
45394 */
45395 BigInteger.prototype.sign = function() {
45396 return this._s;
45397 };
45398
45399 /*
45400 Function: isPositive
45401 Return true iff *this* > 0.
45402
45403 Returns:
45404
45405 true if *this*.compare(<BigInteger.ZERO>) == 1.
45406
45407 See Also:
45408
45409 <sign>, <isZero>, <isNegative>, <isUnit>, <compare>, <BigInteger.ZERO>
45410 */
45411 BigInteger.prototype.isPositive = function() {
45412 return this._s > 0;
45413 };
45414
45415 /*
45416 Function: isNegative
45417 Return true iff *this* < 0.
45418
45419 Returns:
45420
45421 true if *this*.compare(<BigInteger.ZERO>) == -1.
45422
45423 See Also:
45424
45425 <sign>, <isPositive>, <isZero>, <isUnit>, <compare>, <BigInteger.ZERO>
45426 */
45427 BigInteger.prototype.isNegative = function() {
45428 return this._s < 0;
45429 };
45430
45431 /*
45432 Function: isZero
45433 Return true iff *this* == 0.
45434
45435 Returns:
45436
45437 true if *this*.compare(<BigInteger.ZERO>) == 0.
45438
45439 See Also:
45440
45441 <sign>, <isPositive>, <isNegative>, <isUnit>, <BigInteger.ZERO>
45442 */
45443 BigInteger.prototype.isZero = function() {
45444 return this._s === 0;
45445 };
45446
45447 /*
45448 Function: exp10
45449 Multiply a <BigInteger> by a power of 10.
45450
45451 This is equivalent to, but faster than
45452
45453 > if (n >= 0) {
45454 > return this.multiply(BigInteger("1e" + n));
45455 > }
45456 > else { // n <= 0
45457 > return this.quotient(BigInteger("1e" + -n));
45458 > }
45459
45460 Parameters:
45461
45462 n - The power of 10 to multiply *this* by. *n* is converted to a
45463 javascipt number and must be no greater than <BigInteger.MAX_EXP>
45464 (0x7FFFFFFF), or an exception will be thrown.
45465
45466 Returns:
45467
45468 *this* * (10 ** *n*), truncated to an integer if necessary.
45469
45470 See Also:
45471
45472 <pow>, <multiply>
45473 */
45474 BigInteger.prototype.exp10 = function(n) {
45475 n = +n;
45476 if (n === 0) {
45477 return this;
45478 }
45479 if (Math.abs(n) > Number(MAX_EXP)) {
45480 throw new Error("exponent too large in BigInteger.exp10");
45481 }
45482 // Optimization for this == 0. This also keeps us from having to trim zeros in the positive n case
45483 if (this._s === 0) {
45484 return ZERO;
45485 }
45486 if (n > 0) {
45487 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
45488
45489 for (; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
45490 k._d.unshift(0);
45491 }
45492 if (n == 0)
45493 return k;
45494 k._s = 1;
45495 k = k.multiplySingleDigit(Math.pow(10, n));
45496 return (this._s < 0 ? k.negate() : k);
45497 } else if (-n >= this._d.length*BigInteger_base_log10) {
45498 return ZERO;
45499 } else {
45500 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
45501
45502 for (n = -n; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
45503 k._d.shift();
45504 }
45505 return (n == 0) ? k : k.divRemSmall(Math.pow(10, n))[0];
45506 }
45507 };
45508
45509 /*
45510 Function: pow
45511 Raise a <BigInteger> to a power.
45512
45513 In this implementation, 0**0 is 1.
45514
45515 Parameters:
45516
45517 n - The exponent to raise *this* by. *n* must be no greater than
45518 <BigInteger.MAX_EXP> (0x7FFFFFFF), or an exception will be thrown.
45519
45520 Returns:
45521
45522 *this* raised to the *nth* power.
45523
45524 See Also:
45525
45526 <modPow>
45527 */
45528 BigInteger.prototype.pow = function(n) {
45529 if (this.isUnit()) {
45530 if (this._s > 0) {
45531 return this;
45532 }
45533 else {
45534 return BigInteger(n).isOdd() ? this : this.negate();
45535 }
45536 }
45537
45538 n = BigInteger(n);
45539 if (n._s === 0) {
45540 return ONE;
45541 }
45542 else if (n._s < 0) {
45543 if (this._s === 0) {
45544 throw new Error("Divide by zero");
45545 }
45546 else {
45547 return ZERO;
45548 }
45549 }
45550 if (this._s === 0) {
45551 return ZERO;
45552 }
45553 if (n.isUnit()) {
45554 return this;
45555 }
45556
45557 if (n.compareAbs(MAX_EXP) > 0) {
45558 throw new Error("exponent too large in BigInteger.pow");
45559 }
45560 var x = this;
45561 var aux = ONE;
45562 var two = BigInteger.small[2];
45563
45564 while (n.isPositive()) {
45565 if (n.isOdd()) {
45566 aux = aux.multiply(x);
45567 if (n.isUnit()) {
45568 return aux;
45569 }
45570 }
45571 x = x.square();
45572 n = n.quotient(two);
45573 }
45574
45575 return aux;
45576 };
45577
45578 /*
45579 Function: modPow
45580 Raise a <BigInteger> to a power (mod m).
45581
45582 Because it is reduced by a modulus, <modPow> is not limited by
45583 <BigInteger.MAX_EXP> like <pow>.
45584
45585 Parameters:
45586
45587 exponent - The exponent to raise *this* by. Must be positive.
45588 modulus - The modulus.
45589
45590 Returns:
45591
45592 *this* ^ *exponent* (mod *modulus*).
45593
45594 See Also:
45595
45596 <pow>, <mod>
45597 */
45598 BigInteger.prototype.modPow = function(exponent, modulus) {
45599 var result = ONE;
45600 var base = this;
45601
45602 while (exponent.isPositive()) {
45603 if (exponent.isOdd()) {
45604 result = result.multiply(base).remainder(modulus);
45605 }
45606
45607 exponent = exponent.quotient(BigInteger.small[2]);
45608 if (exponent.isPositive()) {
45609 base = base.square().remainder(modulus);
45610 }
45611 }
45612
45613 return result;
45614 };
45615
45616 /*
45617 Function: log
45618 Get the natural logarithm of a <BigInteger> as a native JavaScript number.
45619
45620 This is equivalent to
45621
45622 > Math.log(this.toJSValue())
45623
45624 but handles values outside of the native number range.
45625
45626 Returns:
45627
45628 log( *this* )
45629
45630 See Also:
45631
45632 <toJSValue>
45633 */
45634 BigInteger.prototype.log = function() {
45635 switch (this._s) {
45636 case 0: return -Infinity;
45637 case -1: return NaN;
45638 default: // Fall through.
45639 }
45640
45641 var l = this._d.length;
45642
45643 if (l*BigInteger_base_log10 < 30) {
45644 return Math.log(this.valueOf());
45645 }
45646
45647 var N = Math.ceil(30/BigInteger_base_log10);
45648 var firstNdigits = this._d.slice(l - N);
45649 return Math.log((new BigInteger(firstNdigits, 1, CONSTRUCT)).valueOf()) + (l - N) * Math.log(BigInteger_base);
45650 };
45651
45652 /*
45653 Function: valueOf
45654 Convert a <BigInteger> to a native JavaScript integer.
45655
45656 This is called automatically by JavaScipt to convert a <BigInteger> to a
45657 native value.
45658
45659 Returns:
45660
45661 > parseInt(this.toString(), 10)
45662
45663 See Also:
45664
45665 <toString>, <toJSValue>
45666 */
45667 BigInteger.prototype.valueOf = function() {
45668 return parseInt(this.toString(), 10);
45669 };
45670
45671 /*
45672 Function: toJSValue
45673 Convert a <BigInteger> to a native JavaScript integer.
45674
45675 This is the same as valueOf, but more explicitly named.
45676
45677 Returns:
45678
45679 > parseInt(this.toString(), 10)
45680
45681 See Also:
45682
45683 <toString>, <valueOf>
45684 */
45685 BigInteger.prototype.toJSValue = function() {
45686 return parseInt(this.toString(), 10);
45687 };
45688
45689 var MAX_EXP = BigInteger(0x7FFFFFFF);
45690 // Constant: MAX_EXP
45691 // The largest exponent allowed in <pow> and <exp10> (0x7FFFFFFF or 2147483647).
45692 BigInteger.MAX_EXP = MAX_EXP;
45693
45694 (function() {
45695 function makeUnary(fn) {
45696 return function(a) {
45697 return fn.call(BigInteger(a));
45698 };
45699 }
45700
45701 function makeBinary(fn) {
45702 return function(a, b) {
45703 return fn.call(BigInteger(a), BigInteger(b));
45704 };
45705 }
45706
45707 function makeTrinary(fn) {
45708 return function(a, b, c) {
45709 return fn.call(BigInteger(a), BigInteger(b), BigInteger(c));
45710 };
45711 }
45712
45713 (function() {
45714 var i, fn;
45715 var unary = "toJSValue,isEven,isOdd,sign,isZero,isNegative,abs,isUnit,square,negate,isPositive,toString,next,prev,log".split(",");
45716 var binary = "compare,remainder,divRem,subtract,add,quotient,divide,multiply,pow,compareAbs".split(",");
45717 var trinary = ["modPow"];
45718
45719 for (i = 0; i < unary.length; i++) {
45720 fn = unary[i];
45721 BigInteger[fn] = makeUnary(BigInteger.prototype[fn]);
45722 }
45723
45724 for (i = 0; i < binary.length; i++) {
45725 fn = binary[i];
45726 BigInteger[fn] = makeBinary(BigInteger.prototype[fn]);
45727 }
45728
45729 for (i = 0; i < trinary.length; i++) {
45730 fn = trinary[i];
45731 BigInteger[fn] = makeTrinary(BigInteger.prototype[fn]);
45732 }
45733
45734 BigInteger.exp10 = function(x, n) {
45735 return BigInteger(x).exp10(n);
45736 };
45737 })();
45738 })();
45739
45740 exports.BigInteger = BigInteger;
45741 })(typeof exports !== 'undefined' ? exports : this);
45742 </script>
45743 <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){
45744 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;
45745
45746 },{}],2:[function(require,module,exports){
45747 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;
45748
45749 },{"./scoring":6}],3:[function(require,module,exports){
45750 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,7ugd5hip2j,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,6uldv8,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,1um83z,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,7u8i9o0p,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,123lol123,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(","),
45751 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(","),
45752 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(","),
45753 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(","),
45754 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;
45755
45756 },{}],4:[function(require,module,exports){
45757 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;
45758
45759 },{"./feedback":2,"./matching":5,"./scoring":6,"./time_estimates":7}],5:[function(require,module,exports){
45760 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;
45761
45762 },{"./adjacency_graphs":1,"./frequency_lists":3,"./scoring":6}],6:[function(require,module,exports){
45763 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;
45764
45765 },{"./adjacency_graphs":1}],7:[function(require,module,exports){
45766 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;
45767
45768 },{}]},{},[4])(4)
45769 });
45770 //# sourceMappingURL=zxcvbn.js.map
45771 </script>
45772 <script>/*
45773 * Detects entropy from a string.
45774 *
45775 * Formats include:
45776 * binary [0-1]
45777 * base 6 [0-5]
45778 * dice 6 [1-6]
45779 * decimal [0-9]
45780 * hexadecimal [0-9A-F]
45781 * card [A2-9TJQK][CDHS]
45782 *
45783 * Automatically uses lowest entropy to avoid issues such as interpretting 0101
45784 * as hexadecimal which would be 16 bits when really it's only 4 bits of binary
45785 * entropy.
45786 */
45787
45788 window.Entropy = new (function() {
45789
45790 var TWO = new BigInteger(2);
45791
45792 // matchers returns an array of the matched events for each type of entropy.
45793 // eg
45794 // matchers.binary("010") returns ["0", "1", "0"]
45795 // matchers.binary("a10") returns ["1", "0"]
45796 // matchers.hex("a10") returns ["a", "1", "0"]
45797 var matchers = {
45798 binary: function(str) {
45799 return str.match(/[0-1]/gi) || [];
45800 },
45801 base6: function(str) {
45802 return str.match(/[0-5]/gi) || [];
45803 },
45804 dice: function(str) {
45805 return str.match(/[1-6]/gi) || []; // ie dice numbers
45806 },
45807 base10: function(str) {
45808 return str.match(/[0-9]/gi) || [];
45809 },
45810 hex: function(str) {
45811 return str.match(/[0-9A-F]/gi) || [];
45812 },
45813 card: function(str) {
45814 // Format is NumberSuit, eg
45815 // AH ace of hearts
45816 // 8C eight of clubs
45817 // TD ten of diamonds
45818 // JS jack of spades
45819 // QH queen of hearts
45820 // KC king of clubs
45821 return str.match(/([A2-9TJQK][CDHS])/gi) || [];
45822 }
45823 }
45824
45825 // Convert array of cards from ["ac", "4d", "ks"]
45826 // to numbers between 0 and 51 [0, 16, 51]
45827 function convertCardsToInts(cards) {
45828 var ints = [];
45829 var values = "a23456789tjqk";
45830 var suits = "cdhs";
45831 for (var i=0; i<cards.length; i++) {
45832 var card = cards[i].toLowerCase();
45833 var value = card[0];
45834 var suit = card[1];
45835 var asInt = 13 * suits.indexOf(suit) + values.indexOf(value);
45836 ints.push(asInt);
45837 }
45838 return ints;
45839 }
45840
45841 this.fromString = function(rawEntropyStr) {
45842 // Find type of entropy being used (binary, hex, dice etc)
45843 var base = getBase(rawEntropyStr);
45844 // Convert dice to base6 entropy (ie 1-6 to 0-5)
45845 // This is done by changing all 6s to 0s
45846 if (base.str == "dice") {
45847 var newParts = [];
45848 var newInts = [];
45849 for (var i=0; i<base.parts.length; i++) {
45850 var c = base.parts[i];
45851 if ("12345".indexOf(c) > -1) {
45852 newParts[i] = base.parts[i];
45853 newInts[i] = base.ints[i];
45854 }
45855 else {
45856 newParts[i] = "0";
45857 newInts[i] = 0;
45858 }
45859 }
45860 base.str = "base 6 (dice)";
45861 base.ints = newInts;
45862 base.parts = newParts;
45863 base.matcher = matchers.base6;
45864 }
45865 // Detect empty entropy
45866 if (base.parts.length == 0) {
45867 return {
45868 binaryStr: "",
45869 cleanStr: "",
45870 cleanHtml: "",
45871 base: base,
45872 };
45873 }
45874 // Convert base.ints to BigInteger.
45875 // Due to using unusual bases, eg cards of base52, this is not as simple as
45876 // using BigInteger.parse()
45877 var entropyInt = BigInteger.ZERO;
45878 for (var i=base.ints.length-1; i>=0; i--) {
45879 var thisInt = BigInteger.parse(base.ints[i]);
45880 var power = (base.ints.length - 1) - i;
45881 var additionalEntropy = BigInteger.parse(base.asInt).pow(power).multiply(thisInt);
45882 entropyInt = entropyInt.add(additionalEntropy);
45883 }
45884 // Convert entropy to binary
45885 var entropyBin = entropyInt.toString(2);
45886 // If the first integer is small, it must be padded with zeros.
45887 // Otherwise the chance of the first bit being 1 is 100%, which is
45888 // obviously incorrect.
45889 // This is not perfect for non-2^n bases.
45890 var expectedBits = Math.floor(base.parts.length * Math.log2(base.asInt));
45891 while (entropyBin.length < expectedBits) {
45892 entropyBin = "0" + entropyBin;
45893 }
45894 // Calculate the number of bits per event
45895 var bitsPerEvent = Math.log2(base.asInt);
45896 // Cards binary must be handled differently, since they're not replaced
45897 if (base.asInt == 52) {
45898 var cardEntropy = processCardEntropy(base.parts);
45899 entropyBin = cardEntropy.binaryStr;
45900 bitsPerEvent = cardEntropy.bitsPerEvent;
45901 }
45902 // Supply a 'filtered' entropy string for display purposes
45903 var entropyClean = base.parts.join("");
45904 var entropyHtml = base.parts.join("");
45905 if (base.asInt == 52) {
45906 entropyClean = base.parts.join(" ").toUpperCase();
45907 entropyClean = entropyClean.replace(/C/g, "\u2663");
45908 entropyClean = entropyClean.replace(/D/g, "\u2666");
45909 entropyClean = entropyClean.replace(/H/g, "\u2665");
45910 entropyClean = entropyClean.replace(/S/g, "\u2660");
45911 entropyHtml = base.parts.join(" ").toUpperCase();
45912 entropyHtml = entropyHtml.replace(/C/g, "<span class='card-suit club'>\u2663</span>");
45913 entropyHtml = entropyHtml.replace(/D/g, "<span class='card-suit diamond'>\u2666</span>");
45914 entropyHtml = entropyHtml.replace(/H/g, "<span class='card-suit heart'>\u2665</span>");
45915 entropyHtml = entropyHtml.replace(/S/g, "<span class='card-suit spade'>\u2660</span>");
45916 }
45917 // Return the result
45918 var e = {
45919 binaryStr: entropyBin,
45920 cleanStr: entropyClean,
45921 cleanHtml: entropyHtml,
45922 bitsPerEvent: bitsPerEvent,
45923 base: base,
45924 }
45925 return e;
45926 }
45927
45928 function getSortedDeck() {
45929 var s = [];
45930 var suits = "CDHS";
45931 var values = "A23456789TJQK";
45932 for (var i=0; i<suits.length; i++) {
45933 for (var j=0; j<values.length; j++) {
45934 s.push(values[j]+suits[i]);
45935 }
45936 }
45937 return s;
45938 }
45939
45940 function getBase(str) {
45941 // Need to get the lowest base for the supplied entropy.
45942 // This prevents interpreting, say, dice rolls as hexadecimal.
45943 var binaryMatches = matchers.binary(str);
45944 var hexMatches = matchers.hex(str);
45945 // Find the lowest base that can be used, whilst ignoring any irrelevant chars
45946 if (binaryMatches.length == hexMatches.length && hexMatches.length > 0) {
45947 var ints = binaryMatches.map(function(i) { return parseInt(i, 2) });
45948 return {
45949 ints: ints,
45950 parts: binaryMatches,
45951 matcher: matchers.binary,
45952 asInt: 2,
45953 str: "binary",
45954 }
45955 }
45956 var cardMatches = matchers.card(str);
45957 if (cardMatches.length >= hexMatches.length / 2) {
45958 var ints = convertCardsToInts(cardMatches);
45959 return {
45960 ints: ints,
45961 parts: cardMatches,
45962 matcher: matchers.card,
45963 asInt: 52,
45964 str: "card",
45965 }
45966 }
45967 var diceMatches = matchers.dice(str);
45968 if (diceMatches.length == hexMatches.length && hexMatches.length > 0) {
45969 var ints = diceMatches.map(function(i) { return parseInt(i) });
45970 return {
45971 ints: ints,
45972 parts: diceMatches,
45973 matcher: matchers.dice,
45974 asInt: 6,
45975 str: "dice",
45976 }
45977 }
45978 var base6Matches = matchers.base6(str);
45979 if (base6Matches.length == hexMatches.length && hexMatches.length > 0) {
45980 var ints = base6Matches.map(function(i) { return parseInt(i) });
45981 return {
45982 ints: ints,
45983 parts: base6Matches,
45984 matcher: matchers.base6,
45985 asInt: 6,
45986 str: "base 6",
45987 }
45988 }
45989 var base10Matches = matchers.base10(str);
45990 if (base10Matches.length == hexMatches.length && hexMatches.length > 0) {
45991 var ints = base10Matches.map(function(i) { return parseInt(i) });
45992 return {
45993 ints: ints,
45994 parts: base10Matches,
45995 matcher: matchers.base10,
45996 asInt: 10,
45997 str: "base 10",
45998 }
45999 }
46000 var ints = hexMatches.map(function(i) { return parseInt(i, 16) });
46001 return {
46002 ints: ints,
46003 parts: hexMatches,
46004 matcher: matchers.hex,
46005 asInt: 16,
46006 str: "hexadecimal",
46007 }
46008 }
46009
46010 // Assume cards are NOT replaced.
46011 // Additional entropy decreases as more cards are used. This means
46012 // total possible entropy is measured using n!, not base^n.
46013 // eg the second last card can be only one of two, not one of fifty two
46014 // so the added entropy for that card is only one bit at most
46015 function processCardEntropy(cards) {
46016 // Track how many instances of each card have been used, and thus
46017 // how many decks are in use.
46018 var cardCounts = {};
46019 var numberOfDecks = 0;
46020 // Work out number of decks by max(duplicates)
46021 for (var i=0; i<cards.length; i++) {
46022 // Get the card that was drawn
46023 var cardLower = cards[i];
46024 var card = cardLower.toUpperCase();
46025 // Initialize the count for this card if needed
46026 if (!(card in cardCounts)) {
46027 cardCounts[card] = 0;
46028 }
46029 cardCounts[card] += 1;
46030 // See if this is max(duplicates)
46031 if (cardCounts[card] > numberOfDecks) {
46032 numberOfDecks = cardCounts[card];
46033 }
46034 }
46035 // Work out the total number of bits for this many decks
46036 // See http://crypto.stackexchange.com/q/41886
46037 var gainedBits = 0;
46038 // Equivalent of Math.log2(factorial(52*numberOfDecks))
46039 // which becomes infinity for numberOfDecks > 4
46040 for (var i=1; i<=52*numberOfDecks; i++) {
46041 gainedBits = gainedBits + Math.log2(i);
46042 }
46043 var lostBits = 52 * Math.log2(factorial(numberOfDecks));
46044 var maxBits = gainedBits - lostBits;
46045 // Convert the drawn cards to a binary representation.
46046 // The exact technique for doing this is unclear.
46047 // See
46048 // http://crypto.stackexchange.com/a/41896
46049 // "I even doubt that this is well defined (only the average entropy
46050 // is, I believe)."
46051 // See
46052 // https://github.com/iancoleman/bip39/issues/33#issuecomment-263021856
46053 // "The binary representation can be the first log(permutations,2) bits
46054 // of the sha-2 hash of the normalized deck string."
46055 //
46056 // In this specific implementation, the first N bits of the hash of the
46057 // normalized cards string is being used. Uppercase, no spaces; eg
46058 // sha256("AH8DQSTC2H")
46059 var totalCards = numberOfDecks * 52;
46060 var percentUsed = cards.length / totalCards;
46061 // Calculate the average number of bits of entropy for the number of
46062 // cards drawn.
46063 var numberOfBits = Math.floor(maxBits * percentUsed);
46064 // Create a normalized string of the selected cards
46065 var normalizedCards = cards.join("").toUpperCase();
46066 // Convert to binary using the SHA256 hash of the normalized cards.
46067 // If the number of bits is more than 256, multiple hashes
46068 // are used until the required number of bits is reached.
46069 var entropyBin = "";
46070 var iterations = 0;
46071 while (entropyBin.length < numberOfBits) {
46072 var hashedCards = sjcl.hash.sha256.hash(normalizedCards + ":" + iterations);
46073 var hashHex = sjcl.codec.hex.fromBits(hashedCards);
46074 for (var i=0; i<hashHex.length; i++) {
46075 var decimal = parseInt(hashHex[i], 16);
46076 var binary = decimal.toString(2);
46077 while (binary.length < 4) {
46078 binary = "0" + binary;
46079 }
46080 entropyBin = entropyBin + binary;
46081 }
46082 iterations = iterations + 1;
46083 }
46084 // Truncate to the appropriate number of bits.
46085 entropyBin = entropyBin.substring(0, numberOfBits);
46086 // Get the number of bits per event
46087 bitsPerEvent = maxBits / totalCards;
46088 return {
46089 binaryStr: entropyBin,
46090 bitsPerEvent: bitsPerEvent,
46091 }
46092 }
46093
46094 // Polyfill for Math.log2
46095 // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log2#Polyfill
46096 Math.log2 = Math.log2 || function(x) {
46097 // The polyfill isn't good enough because of the poor accuracy of
46098 // Math.LOG2E
46099 // log2(8) gave 2.9999999999999996 which when floored causes issues.
46100 // So instead use the BigInteger library to get it right.
46101 return BigInteger.log(x) / BigInteger.log(2);
46102 };
46103
46104 // Depends on BigInteger
46105 function factorial(n) {
46106 if (n == 0) {
46107 return 1;
46108 }
46109 f = BigInteger.ONE;
46110 for (var i=1; i<=n; i++) {
46111 f = f.multiply(new BigInteger(i));
46112 }
46113 return f;
46114 }
46115
46116 })();
46117 </script>
46118 <script>(function() {
46119
46120 // mnemonics is populated as required by getLanguage
46121 var mnemonics = { "english": new Mnemonic("english") };
46122 var mnemonic = mnemonics["english"];
46123 var seed = null;
46124 var bip32RootKey = null;
46125 var bip32ExtendedKey = null;
46126 var network = bitcoinjs.bitcoin.networks.bitcoin;
46127 var addressRowTemplate = $("#address-row-template");
46128
46129 var showIndex = true;
46130 var showAddress = true;
46131 var showPubKey = true;
46132 var showPrivKey = true;
46133 var showQr = false;
46134 var litecoinUseLtub = false;
46135
46136 var entropyChangeTimeoutEvent = null;
46137 var phraseChangeTimeoutEvent = null;
46138 var rootKeyChangedTimeoutEvent = null;
46139
46140 var generationProcesses = [];
46141
46142 var DOM = {};
46143 DOM.network = $(".network");
46144 DOM.bip32Client = $("#bip32-client");
46145 DOM.phraseNetwork = $("#network-phrase");
46146 DOM.useEntropy = $(".use-entropy");
46147 DOM.entropyContainer = $(".entropy-container");
46148 DOM.entropy = $(".entropy");
46149 DOM.entropyFiltered = DOM.entropyContainer.find(".filtered");
46150 DOM.entropyType = DOM.entropyContainer.find(".type");
46151 DOM.entropyCrackTime = DOM.entropyContainer.find(".crack-time");
46152 DOM.entropyEventCount = DOM.entropyContainer.find(".event-count");
46153 DOM.entropyBits = DOM.entropyContainer.find(".bits");
46154 DOM.entropyBitsPerEvent = DOM.entropyContainer.find(".bits-per-event");
46155 DOM.entropyWordCount = DOM.entropyContainer.find(".word-count");
46156 DOM.entropyBinary = DOM.entropyContainer.find(".binary");
46157 DOM.entropyMnemonicLength = DOM.entropyContainer.find(".mnemonic-length");
46158 DOM.phrase = $(".phrase");
46159 DOM.passphrase = $(".passphrase");
46160 DOM.generateContainer = $(".generate-container");
46161 DOM.generate = $(".generate");
46162 DOM.seed = $(".seed");
46163 DOM.rootKey = $(".root-key");
46164 DOM.litecoinLtubContainer = $(".litecoin-ltub-container");
46165 DOM.litecoinUseLtub = $(".litecoin-use-ltub");
46166 DOM.extendedPrivKey = $(".extended-priv-key");
46167 DOM.extendedPubKey = $(".extended-pub-key");
46168 DOM.bip32tab = $("#bip32-tab");
46169 DOM.bip44tab = $("#bip44-tab");
46170 DOM.bip49tab = $("#bip49-tab");
46171 DOM.bip32panel = $("#bip32");
46172 DOM.bip44panel = $("#bip44");
46173 DOM.bip49panel = $("#bip49");
46174 DOM.bip32path = $("#bip32-path");
46175 DOM.bip44path = $("#bip44-path");
46176 DOM.bip44purpose = $("#bip44 .purpose");
46177 DOM.bip44coin = $("#bip44 .coin");
46178 DOM.bip44account = $("#bip44 .account");
46179 DOM.bip44accountXprv = $("#bip44 .account-xprv");
46180 DOM.bip44accountXpub = $("#bip44 .account-xpub");
46181 DOM.bip44change = $("#bip44 .change");
46182 DOM.bip49unavailable = $("#bip49 .unavailable");
46183 DOM.bip49available = $("#bip49 .available");
46184 DOM.bip49path = $("#bip49-path");
46185 DOM.bip49purpose = $("#bip49 .purpose");
46186 DOM.bip49coin = $("#bip49 .coin");
46187 DOM.bip49account = $("#bip49 .account");
46188 DOM.bip49accountXprv = $("#bip49 .account-xprv");
46189 DOM.bip49accountXpub = $("#bip49 .account-xpub");
46190 DOM.bip49change = $("#bip49 .change");
46191 DOM.generatedStrength = $(".generate-container .strength");
46192 DOM.hardenedAddresses = $(".hardened-addresses");
46193 DOM.addresses = $(".addresses");
46194 DOM.rowsToAdd = $(".rows-to-add");
46195 DOM.more = $(".more");
46196 DOM.feedback = $(".feedback");
46197 DOM.tab = $(".derivation-type a");
46198 DOM.indexToggle = $(".index-toggle");
46199 DOM.addressToggle = $(".address-toggle");
46200 DOM.publicKeyToggle = $(".public-key-toggle");
46201 DOM.privateKeyToggle = $(".private-key-toggle");
46202 DOM.languages = $(".languages a");
46203 DOM.qrContainer = $(".qr-container");
46204 DOM.qrHider = DOM.qrContainer.find(".qr-hider");
46205 DOM.qrImage = DOM.qrContainer.find(".qr-image");
46206 DOM.qrHint = DOM.qrContainer.find(".qr-hint");
46207 DOM.showQrEls = $("[data-show-qr]");
46208
46209 function init() {
46210 // Events
46211 DOM.network.on("change", networkChanged);
46212 DOM.bip32Client.on("change", bip32ClientChanged);
46213 DOM.useEntropy.on("change", setEntropyVisibility);
46214 DOM.entropy.on("input", delayedEntropyChanged);
46215 DOM.entropyMnemonicLength.on("change", entropyChanged);
46216 DOM.phrase.on("input", delayedPhraseChanged);
46217 DOM.passphrase.on("input", delayedPhraseChanged);
46218 DOM.generate.on("click", generateClicked);
46219 DOM.more.on("click", showMore);
46220 DOM.rootKey.on("input", delayedRootKeyChanged);
46221 DOM.litecoinUseLtub.on("change", litecoinUseLtubChanged);
46222 DOM.bip32path.on("input", calcForDerivationPath);
46223 DOM.bip44account.on("input", calcForDerivationPath);
46224 DOM.bip44change.on("input", calcForDerivationPath);
46225 DOM.bip49account.on("input", calcForDerivationPath);
46226 DOM.bip49change.on("input", calcForDerivationPath);
46227 DOM.tab.on("shown.bs.tab", calcForDerivationPath);
46228 DOM.hardenedAddresses.on("change", calcForDerivationPath);
46229 DOM.indexToggle.on("click", toggleIndexes);
46230 DOM.addressToggle.on("click", toggleAddresses);
46231 DOM.publicKeyToggle.on("click", togglePublicKeys);
46232 DOM.privateKeyToggle.on("click", togglePrivateKeys);
46233 DOM.languages.on("click", languageChanged);
46234 setQrEvents(DOM.showQrEls);
46235 disableForms();
46236 hidePending();
46237 hideValidationError();
46238 populateNetworkSelect();
46239 populateClientSelect();
46240 }
46241
46242 // Event handlers
46243
46244 function networkChanged(e) {
46245 clearDerivedKeys();
46246 clearAddressesList();
46247 DOM.litecoinLtubContainer.addClass("hidden");
46248 var networkIndex = e.target.value;
46249 var network = networks[networkIndex];
46250 network.onSelect();
46251 if (network.bip49available) {
46252 showBip49();
46253 }
46254 else {
46255 hideBip49();
46256 }
46257 if (seed != null) {
46258 phraseChanged();
46259 }
46260 else {
46261 rootKeyChanged();
46262 }
46263 }
46264
46265 function bip32ClientChanged(e) {
46266 var clientIndex = DOM.bip32Client.val();
46267 if (clientIndex == "custom") {
46268 DOM.bip32path.prop("readonly", false);
46269 }
46270 else {
46271 DOM.bip32path.prop("readonly", true);
46272 clients[clientIndex].onSelect();
46273 if (seed != null) {
46274 phraseChanged();
46275 }
46276 else {
46277 rootKeyChanged();
46278 }
46279 }
46280 }
46281
46282 function setEntropyVisibility() {
46283 if (isUsingOwnEntropy()) {
46284 DOM.entropyContainer.removeClass("hidden");
46285 DOM.generateContainer.addClass("hidden");
46286 DOM.phrase.prop("readonly", true);
46287 DOM.entropy.focus();
46288 entropyChanged();
46289 }
46290 else {
46291 DOM.entropyContainer.addClass("hidden");
46292 DOM.generateContainer.removeClass("hidden");
46293 DOM.phrase.prop("readonly", false);
46294 hidePending();
46295 }
46296 }
46297
46298 function delayedPhraseChanged() {
46299 hideValidationError();
46300 seed = null;
46301 bip32RootKey = null;
46302 bip32ExtendedKey = null;
46303 clearAddressesList();
46304 showPending();
46305 if (phraseChangeTimeoutEvent != null) {
46306 clearTimeout(phraseChangeTimeoutEvent);
46307 }
46308 phraseChangeTimeoutEvent = setTimeout(phraseChanged, 400);
46309 }
46310
46311 function phraseChanged() {
46312 showPending();
46313 setMnemonicLanguage();
46314 // Get the mnemonic phrase
46315 var phrase = DOM.phrase.val();
46316 var errorText = findPhraseErrors(phrase);
46317 if (errorText) {
46318 showValidationError(errorText);
46319 return;
46320 }
46321 // Calculate and display
46322 var passphrase = DOM.passphrase.val();
46323 calcBip32RootKeyFromSeed(phrase, passphrase);
46324 calcForDerivationPath();
46325 }
46326
46327 function delayedEntropyChanged() {
46328 hideValidationError();
46329 showPending();
46330 if (entropyChangeTimeoutEvent != null) {
46331 clearTimeout(entropyChangeTimeoutEvent);
46332 }
46333 entropyChangeTimeoutEvent = setTimeout(entropyChanged, 400);
46334 }
46335
46336 function entropyChanged() {
46337 // If blank entropy, clear mnemonic, addresses, errors
46338 if (DOM.entropy.val().trim().length == 0) {
46339 clearDisplay();
46340 clearEntropyFeedback();
46341 DOM.phrase.val("");
46342 showValidationError("Blank entropy");
46343 return;
46344 }
46345 // Get the current phrase to detect changes
46346 var phrase = DOM.phrase.val();
46347 // Set the phrase from the entropy
46348 setMnemonicFromEntropy();
46349 // Recalc addresses if the phrase has changed
46350 var newPhrase = DOM.phrase.val();
46351 if (newPhrase != phrase) {
46352 if (newPhrase.length == 0) {
46353 clearDisplay();
46354 }
46355 else {
46356 phraseChanged();
46357 }
46358 }
46359 else {
46360 hidePending();
46361 }
46362 }
46363
46364 function delayedRootKeyChanged() {
46365 // Warn if there is an existing mnemonic or passphrase.
46366 if (DOM.phrase.val().length > 0 || DOM.passphrase.val().length > 0) {
46367 if (!confirm("This will clear existing mnemonic and passphrase")) {
46368 DOM.rootKey.val(bip32RootKey);
46369 return
46370 }
46371 }
46372 hideValidationError();
46373 showPending();
46374 // Clear existing mnemonic and passphrase
46375 DOM.phrase.val("");
46376 DOM.passphrase.val("");
46377 seed = null;
46378 if (rootKeyChangedTimeoutEvent != null) {
46379 clearTimeout(rootKeyChangedTimeoutEvent);
46380 }
46381 rootKeyChangedTimeoutEvent = setTimeout(rootKeyChanged, 400);
46382 }
46383
46384 function rootKeyChanged() {
46385 showPending();
46386 hideValidationError();
46387 // Validate the root key TODO
46388 var rootKeyBase58 = DOM.rootKey.val();
46389 var errorText = validateRootKey(rootKeyBase58);
46390 if (errorText) {
46391 showValidationError(errorText);
46392 return;
46393 }
46394 // Calculate and display
46395 calcBip32RootKeyFromBase58(rootKeyBase58);
46396 calcForDerivationPath();
46397 }
46398
46399 function litecoinUseLtubChanged() {
46400 litecoinUseLtub = DOM.litecoinUseLtub.prop("checked");
46401 if (litecoinUseLtub) {
46402 network = bitcoinjs.bitcoin.networks.litecoinLtub;
46403 }
46404 else {
46405 network = bitcoinjs.bitcoin.networks.litecoin;
46406 }
46407 phraseChanged();
46408 }
46409
46410 function calcForDerivationPath() {
46411 clearDerivedKeys();
46412 clearAddressesList();
46413 showPending();
46414 // Don't show bip49 if it's selected but network doesn't support it
46415 if (bip49TabSelected() && !networkHasBip49()) {
46416 return;
46417 }
46418 // Get the derivation path
46419 var derivationPath = getDerivationPath();
46420 var errorText = findDerivationPathErrors(derivationPath);
46421 if (errorText) {
46422 showValidationError(errorText);
46423 return;
46424 }
46425 bip32ExtendedKey = calcBip32ExtendedKey(derivationPath);
46426 if (bip44TabSelected()) {
46427 displayBip44Info();
46428 }
46429 if (bip49TabSelected()) {
46430 displayBip49Info();
46431 }
46432 displayBip32Info();
46433 }
46434
46435 function generateClicked() {
46436 if (isUsingOwnEntropy()) {
46437 return;
46438 }
46439 clearDisplay();
46440 showPending();
46441 setTimeout(function() {
46442 setMnemonicLanguage();
46443 var phrase = generateRandomPhrase();
46444 if (!phrase) {
46445 return;
46446 }
46447 phraseChanged();
46448 }, 50);
46449 }
46450
46451 function languageChanged() {
46452 setTimeout(function() {
46453 setMnemonicLanguage();
46454 if (DOM.phrase.val().length > 0) {
46455 var newPhrase = convertPhraseToNewLanguage();
46456 DOM.phrase.val(newPhrase);
46457 phraseChanged();
46458 }
46459 else {
46460 DOM.generate.trigger("click");
46461 }
46462 }, 50);
46463 }
46464
46465 function toggleIndexes() {
46466 showIndex = !showIndex;
46467 $("td.index span").toggleClass("invisible");
46468 }
46469
46470 function toggleAddresses() {
46471 showAddress = !showAddress;
46472 $("td.address span").toggleClass("invisible");
46473 }
46474
46475 function togglePublicKeys() {
46476 showPubKey = !showPubKey;
46477 $("td.pubkey span").toggleClass("invisible");
46478 }
46479
46480 function togglePrivateKeys() {
46481 showPrivKey = !showPrivKey;
46482 $("td.privkey span").toggleClass("invisible");
46483 }
46484
46485 // Private methods
46486
46487 function generateRandomPhrase() {
46488 if (!hasStrongRandom()) {
46489 var errorText = "This browser does not support strong randomness";
46490 showValidationError(errorText);
46491 return;
46492 }
46493 var numWords = parseInt(DOM.generatedStrength.val());
46494 var strength = numWords / 3 * 32;
46495 var words = mnemonic.generate(strength);
46496 DOM.phrase.val(words);
46497 return words;
46498 }
46499
46500 function calcBip32RootKeyFromSeed(phrase, passphrase) {
46501 seed = mnemonic.toSeed(phrase, passphrase);
46502 bip32RootKey = bitcoinjs.bitcoin.HDNode.fromSeedHex(seed, network);
46503 }
46504
46505 function calcBip32RootKeyFromBase58(rootKeyBase58) {
46506 bip32RootKey = bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58, network);
46507 }
46508
46509 function calcBip32ExtendedKey(path) {
46510 // Check there's a root key to derive from
46511 if (!bip32RootKey) {
46512 return bip32RootKey;
46513 }
46514 var extendedKey = bip32RootKey;
46515 // Derive the key from the path
46516 var pathBits = path.split("/");
46517 for (var i=0; i<pathBits.length; i++) {
46518 var bit = pathBits[i];
46519 var index = parseInt(bit);
46520 if (isNaN(index)) {
46521 continue;
46522 }
46523 var hardened = bit[bit.length-1] == "'";
46524 var isPriv = !(extendedKey.isNeutered());
46525 var invalidDerivationPath = hardened && !isPriv;
46526 if (invalidDerivationPath) {
46527 extendedKey = null;
46528 }
46529 else if (hardened) {
46530 extendedKey = extendedKey.deriveHardened(index);
46531 }
46532 else {
46533 extendedKey = extendedKey.derive(index);
46534 }
46535 }
46536 return extendedKey
46537 }
46538
46539 function showValidationError(errorText) {
46540 DOM.feedback
46541 .text(errorText)
46542 .show();
46543 }
46544
46545 function hideValidationError() {
46546 DOM.feedback
46547 .text("")
46548 .hide();
46549 }
46550
46551 function findPhraseErrors(phrase) {
46552 // Preprocess the words
46553 phrase = mnemonic.normalizeString(phrase);
46554 var words = phraseToWordArray(phrase);
46555 // Detect blank phrase
46556 if (words.length == 0) {
46557 return "Blank mnemonic";
46558 }
46559 // Check each word
46560 for (var i=0; i<words.length; i++) {
46561 var word = words[i];
46562 var language = getLanguage();
46563 if (WORDLISTS[language].indexOf(word) == -1) {
46564 console.log("Finding closest match to " + word);
46565 var nearestWord = findNearestWord(word);
46566 return word + " not in wordlist, did you mean " + nearestWord + "?";
46567 }
46568 }
46569 // Check the words are valid
46570 var properPhrase = wordArrayToPhrase(words);
46571 var isValid = mnemonic.check(properPhrase);
46572 if (!isValid) {
46573 return "Invalid mnemonic";
46574 }
46575 return false;
46576 }
46577
46578 function validateRootKey(rootKeyBase58) {
46579 try {
46580 bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58);
46581 }
46582 catch (e) {
46583 return "Invalid root key";
46584 }
46585 return "";
46586 }
46587
46588 function getDerivationPath() {
46589 if (bip44TabSelected()) {
46590 var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
46591 var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
46592 var account = parseIntNoNaN(DOM.bip44account.val(), 0);
46593 var change = parseIntNoNaN(DOM.bip44change.val(), 0);
46594 var path = "m/";
46595 path += purpose + "'/";
46596 path += coin + "'/";
46597 path += account + "'/";
46598 path += change;
46599 DOM.bip44path.val(path);
46600 var derivationPath = DOM.bip44path.val();
46601 console.log("Using derivation path from BIP44 tab: " + derivationPath);
46602 return derivationPath;
46603 }
46604 if (bip49TabSelected()) {
46605 var purpose = parseIntNoNaN(DOM.bip49purpose.val(), 49);
46606 var coin = parseIntNoNaN(DOM.bip49coin.val(), 0);
46607 var account = parseIntNoNaN(DOM.bip49account.val(), 0);
46608 var change = parseIntNoNaN(DOM.bip49change.val(), 0);
46609 var path = "m/";
46610 path += purpose + "'/";
46611 path += coin + "'/";
46612 path += account + "'/";
46613 path += change;
46614 DOM.bip49path.val(path);
46615 var derivationPath = DOM.bip49path.val();
46616 console.log("Using derivation path from BIP49 tab: " + derivationPath);
46617 return derivationPath;
46618 }
46619 else if (bip32TabSelected()) {
46620 var derivationPath = DOM.bip32path.val();
46621 console.log("Using derivation path from BIP32 tab: " + derivationPath);
46622 return derivationPath;
46623 }
46624 else {
46625 console.log("Unknown derivation path");
46626 }
46627 }
46628
46629 function findDerivationPathErrors(path) {
46630 // TODO is not perfect but is better than nothing
46631 // Inspired by
46632 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#test-vectors
46633 // and
46634 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#extended-keys
46635 var maxDepth = 255; // TODO verify this!!
46636 var maxIndexValue = Math.pow(2, 31); // TODO verify this!!
46637 if (path[0] != "m") {
46638 return "First character must be 'm'";
46639 }
46640 if (path.length > 1) {
46641 if (path[1] != "/") {
46642 return "Separator must be '/'";
46643 }
46644 var indexes = path.split("/");
46645 if (indexes.length > maxDepth) {
46646 return "Derivation depth is " + indexes.length + ", must be less than " + maxDepth;
46647 }
46648 for (var depth = 1; depth<indexes.length; depth++) {
46649 var index = indexes[depth];
46650 var invalidChars = index.replace(/^[0-9]+'?$/g, "")
46651 if (invalidChars.length > 0) {
46652 return "Invalid characters " + invalidChars + " found at depth " + depth;
46653 }
46654 var indexValue = parseInt(index.replace("'", ""));
46655 if (isNaN(depth)) {
46656 return "Invalid number at depth " + depth;
46657 }
46658 if (indexValue > maxIndexValue) {
46659 return "Value of " + indexValue + " at depth " + depth + " must be less than " + maxIndexValue;
46660 }
46661 }
46662 }
46663 // Check root key exists or else derivation path is useless!
46664 if (!bip32RootKey) {
46665 return "No root key";
46666 }
46667 // Check no hardened derivation path when using xpub keys
46668 var hardenedPath = path.indexOf("'") > -1;
46669 var hardenedAddresses = bip32TabSelected() && DOM.hardenedAddresses.prop("checked");
46670 var hardened = hardenedPath || hardenedAddresses;
46671 var isXpubkey = bip32RootKey.isNeutered();
46672 if (hardened && isXpubkey) {
46673 return "Hardened derivation path is invalid with xpub key";
46674 }
46675 return false;
46676 }
46677
46678 function displayBip44Info() {
46679 // Get the derivation path for the account
46680 var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
46681 var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
46682 var account = parseIntNoNaN(DOM.bip44account.val(), 0);
46683 var path = "m/";
46684 path += purpose + "'/";
46685 path += coin + "'/";
46686 path += account + "'/";
46687 // Calculate the account extended keys
46688 var accountExtendedKey = calcBip32ExtendedKey(path);
46689 var accountXprv = accountExtendedKey.toBase58();
46690 var accountXpub = accountExtendedKey.neutered().toBase58();
46691 // Display the extended keys
46692 DOM.bip44accountXprv.val(accountXprv);
46693 DOM.bip44accountXpub.val(accountXpub);
46694 }
46695
46696 function displayBip49Info() {
46697 // Get the derivation path for the account
46698 var purpose = parseIntNoNaN(DOM.bip49purpose.val(), 49);
46699 var coin = parseIntNoNaN(DOM.bip49coin.val(), 0);
46700 var account = parseIntNoNaN(DOM.bip49account.val(), 0);
46701 var path = "m/";
46702 path += purpose + "'/";
46703 path += coin + "'/";
46704 path += account + "'/";
46705 // Calculate the account extended keys
46706 var accountExtendedKey = calcBip32ExtendedKey(path);
46707 var accountXprv = accountExtendedKey.toBase58();
46708 var accountXpub = accountExtendedKey.neutered().toBase58();
46709 // Display the extended keys
46710 DOM.bip49accountXprv.val(accountXprv);
46711 DOM.bip49accountXpub.val(accountXpub);
46712 }
46713
46714 function displayBip32Info() {
46715 // Display the key
46716 DOM.seed.val(seed);
46717 var rootKey = bip32RootKey.toBase58();
46718 DOM.rootKey.val(rootKey);
46719 var xprvkeyB58 = "NA";
46720 if (!bip32ExtendedKey.isNeutered()) {
46721 xprvkeyB58 = bip32ExtendedKey.toBase58();
46722 }
46723 var extendedPrivKey = xprvkeyB58;
46724 DOM.extendedPrivKey.val(extendedPrivKey);
46725 var extendedPubKey = bip32ExtendedKey.neutered().toBase58();
46726 DOM.extendedPubKey.val(extendedPubKey);
46727 // Display the addresses and privkeys
46728 clearAddressesList();
46729 displayAddresses(0, 20);
46730 }
46731
46732 function displayAddresses(start, total) {
46733 generationProcesses.push(new (function() {
46734
46735 var rows = [];
46736
46737 this.stop = function() {
46738 for (var i=0; i<rows.length; i++) {
46739 rows[i].shouldGenerate = false;
46740 }
46741 hidePending();
46742 }
46743
46744 for (var i=0; i<total; i++) {
46745 var index = i + start;
46746 var isLast = i == total - 1;
46747 rows.push(new TableRow(index, isLast));
46748 }
46749
46750 })());
46751 }
46752
46753 function TableRow(index, isLast) {
46754
46755 var self = this;
46756 this.shouldGenerate = true;
46757 var useHardenedAddresses = DOM.hardenedAddresses.prop("checked");
46758 var isBip49 = bip49TabSelected();
46759 var bip49available = networkHasBip49();
46760
46761 function init() {
46762 calculateValues();
46763 }
46764
46765 function calculateValues() {
46766 setTimeout(function() {
46767 if (!self.shouldGenerate) {
46768 return;
46769 }
46770 var key = "NA";
46771 if (useHardenedAddresses) {
46772 key = bip32ExtendedKey.deriveHardened(index);
46773 }
46774 else {
46775 key = bip32ExtendedKey.derive(index);
46776 }
46777 var address = key.getAddress().toString();
46778 var privkey = "NA";
46779 if (!key.isNeutered()) {
46780 privkey = key.keyPair.toWIF(network);
46781 }
46782 var pubkey = key.getPublicKeyBuffer().toString('hex');
46783 var indexText = getDerivationPath() + "/" + index;
46784 if (useHardenedAddresses) {
46785 indexText = indexText + "'";
46786 }
46787 // Ethereum values are different
46788 if (networks[DOM.network.val()].name == "ETH - Ethereum") {
46789 var privKeyBuffer = key.keyPair.d.toBuffer();
46790 privkey = privKeyBuffer.toString('hex');
46791 var addressBuffer = ethUtil.privateToAddress(privKeyBuffer);
46792 var hexAddress = addressBuffer.toString('hex');
46793 var checksumAddress = ethUtil.toChecksumAddress(hexAddress);
46794 address = ethUtil.addHexPrefix(checksumAddress);
46795 privkey = ethUtil.addHexPrefix(privkey);
46796 pubkey = ethUtil.addHexPrefix(pubkey);
46797 }
46798 // Ripple values are different
46799 if (networks[DOM.network.val()].name == "XRP - Ripple") {
46800 privkey = convertRipplePriv(privkey);
46801 address = convertRippleAdrr(address);
46802 }
46803 // BIP49 addresses are different
46804 if (isBip49) {
46805 if (!bip49available) {
46806 return;
46807 }
46808 var keyhash = bitcoinjs.bitcoin.crypto.hash160(key.getPublicKeyBuffer());
46809 var scriptsig = bitcoinjs.bitcoin.script.witnessPubKeyHash.output.encode(keyhash);
46810 var addressbytes = bitcoinjs.bitcoin.crypto.hash160(scriptsig);
46811 var scriptpubkey = bitcoinjs.bitcoin.script.scriptHash.output.encode(addressbytes);
46812 address = bitcoinjs.bitcoin.address.fromOutputScript(scriptpubkey, network)
46813 }
46814 addAddressToList(indexText, address, pubkey, privkey);
46815 if (isLast) {
46816 hidePending();
46817 }
46818 }, 50)
46819 }
46820
46821 init();
46822
46823 }
46824
46825 function showMore() {
46826 var start = DOM.addresses.children().length;
46827 var rowsToAdd = parseInt(DOM.rowsToAdd.val());
46828 if (isNaN(rowsToAdd)) {
46829 rowsToAdd = 20;
46830 DOM.rowsToAdd.val("20");
46831 }
46832 if (rowsToAdd > 200) {
46833 var msg = "Generating " + rowsToAdd + " rows could take a while. ";
46834 msg += "Do you want to continue?";
46835 if (!confirm(msg)) {
46836 return;
46837 }
46838 }
46839 displayAddresses(start, rowsToAdd);
46840 }
46841
46842 function clearDisplay() {
46843 clearAddressesList();
46844 clearKeys();
46845 hideValidationError();
46846 }
46847
46848 function clearAddressesList() {
46849 DOM.addresses.empty();
46850 stopGenerating();
46851 }
46852
46853 function stopGenerating() {
46854 while (generationProcesses.length > 0) {
46855 var generation = generationProcesses.shift();
46856 generation.stop();
46857 }
46858 }
46859
46860 function clearKeys() {
46861 clearRootKey();
46862 clearDerivedKeys();
46863 }
46864
46865 function clearRootKey() {
46866 DOM.rootKey.val("");
46867 }
46868
46869 function clearDerivedKeys() {
46870 DOM.extendedPrivKey.val("");
46871 DOM.extendedPubKey.val("");
46872 DOM.bip44accountXprv.val("");
46873 DOM.bip44accountXpub.val("");
46874 }
46875
46876 function addAddressToList(indexText, address, pubkey, privkey) {
46877 var row = $(addressRowTemplate.html());
46878 // Elements
46879 var indexCell = row.find(".index span");
46880 var addressCell = row.find(".address span");
46881 var pubkeyCell = row.find(".pubkey span");
46882 var privkeyCell = row.find(".privkey span");
46883 // Content
46884 indexCell.text(indexText);
46885 addressCell.text(address);
46886 pubkeyCell.text(pubkey);
46887 privkeyCell.text(privkey);
46888 // Visibility
46889 if (!showIndex) {
46890 indexCell.addClass("invisible");
46891 }
46892 if (!showAddress) {
46893 addressCell.addClass("invisible");
46894 }
46895 if (!showPubKey) {
46896 pubkeyCell.addClass("invisible");
46897 }
46898 if (!showPrivKey) {
46899 privkeyCell.addClass("invisible");
46900 }
46901 DOM.addresses.append(row);
46902 var rowShowQrEls = row.find("[data-show-qr]");
46903 setQrEvents(rowShowQrEls);
46904 }
46905
46906 function hasStrongRandom() {
46907 return 'crypto' in window && window['crypto'] !== null;
46908 }
46909
46910 function disableForms() {
46911 $("form").on("submit", function(e) {
46912 e.preventDefault();
46913 });
46914 }
46915
46916 function parseIntNoNaN(val, defaultVal) {
46917 var v = parseInt(val);
46918 if (isNaN(v)) {
46919 return defaultVal;
46920 }
46921 return v;
46922 }
46923
46924 function showPending() {
46925 DOM.feedback
46926 .text("Calculating...")
46927 .show();
46928 }
46929
46930 function findNearestWord(word) {
46931 var language = getLanguage();
46932 var words = WORDLISTS[language];
46933 var minDistance = 99;
46934 var closestWord = words[0];
46935 for (var i=0; i<words.length; i++) {
46936 var comparedTo = words[i];
46937 if (comparedTo.indexOf(word) == 0) {
46938 return comparedTo;
46939 }
46940 var distance = Levenshtein.get(word, comparedTo);
46941 if (distance < minDistance) {
46942 closestWord = comparedTo;
46943 minDistance = distance;
46944 }
46945 }
46946 return closestWord;
46947 }
46948
46949 function hidePending() {
46950 DOM.feedback
46951 .text("")
46952 .hide();
46953 }
46954
46955 function populateNetworkSelect() {
46956 for (var i=0; i<networks.length; i++) {
46957 var network = networks[i];
46958 var option = $("<option>");
46959 option.attr("value", i);
46960 option.text(network.name);
46961 if (network.name == "BTC - Bitcoin") {
46962 option.prop("selected", true);
46963 }
46964 DOM.phraseNetwork.append(option);
46965 }
46966 }
46967
46968 function populateClientSelect() {
46969 for (var i=0; i<clients.length; i++) {
46970 var client = clients[i];
46971 var option = $("<option>");
46972 option.attr("value", i);
46973 option.text(client.name);
46974 DOM.bip32Client.append(option);
46975 }
46976 }
46977
46978 function getLanguage() {
46979 var defaultLanguage = "english";
46980 // Try to get from existing phrase
46981 var language = getLanguageFromPhrase();
46982 // Try to get from url if not from phrase
46983 if (language.length == 0) {
46984 language = getLanguageFromUrl();
46985 }
46986 // Default to English if no other option
46987 if (language.length == 0) {
46988 language = defaultLanguage;
46989 }
46990 return language;
46991 }
46992
46993 function getLanguageFromPhrase(phrase) {
46994 // Check if how many words from existing phrase match a language.
46995 var language = "";
46996 if (!phrase) {
46997 phrase = DOM.phrase.val();
46998 }
46999 if (phrase.length > 0) {
47000 var words = phraseToWordArray(phrase);
47001 var languageMatches = {};
47002 for (l in WORDLISTS) {
47003 // Track how many words match in this language
47004 languageMatches[l] = 0;
47005 for (var i=0; i<words.length; i++) {
47006 var wordInLanguage = WORDLISTS[l].indexOf(words[i]) > -1;
47007 if (wordInLanguage) {
47008 languageMatches[l]++;
47009 }
47010 }
47011 // Find languages with most word matches.
47012 // This is made difficult due to commonalities between Chinese
47013 // simplified vs traditional.
47014 var mostMatches = 0;
47015 var mostMatchedLanguages = [];
47016 for (var l in languageMatches) {
47017 var numMatches = languageMatches[l];
47018 if (numMatches > mostMatches) {
47019 mostMatches = numMatches;
47020 mostMatchedLanguages = [l];
47021 }
47022 else if (numMatches == mostMatches) {
47023 mostMatchedLanguages.push(l);
47024 }
47025 }
47026 }
47027 if (mostMatchedLanguages.length > 0) {
47028 // Use first language and warn if multiple detected
47029 language = mostMatchedLanguages[0];
47030 if (mostMatchedLanguages.length > 1) {
47031 console.warn("Multiple possible languages");
47032 console.warn(mostMatchedLanguages);
47033 }
47034 }
47035 }
47036 return language;
47037 }
47038
47039 function getLanguageFromUrl() {
47040 for (var language in WORDLISTS) {
47041 if (window.location.hash.indexOf(language) > -1) {
47042 return language;
47043 }
47044 }
47045 return "";
47046 }
47047
47048 function setMnemonicLanguage() {
47049 var language = getLanguage();
47050 // Load the bip39 mnemonic generator for this language if required
47051 if (!(language in mnemonics)) {
47052 mnemonics[language] = new Mnemonic(language);
47053 }
47054 mnemonic = mnemonics[language];
47055 }
47056
47057 function convertPhraseToNewLanguage() {
47058 var oldLanguage = getLanguageFromPhrase();
47059 var newLanguage = getLanguageFromUrl();
47060 var oldPhrase = DOM.phrase.val();
47061 var oldWords = phraseToWordArray(oldPhrase);
47062 var newWords = [];
47063 for (var i=0; i<oldWords.length; i++) {
47064 var oldWord = oldWords[i];
47065 var index = WORDLISTS[oldLanguage].indexOf(oldWord);
47066 var newWord = WORDLISTS[newLanguage][index];
47067 newWords.push(newWord);
47068 }
47069 newPhrase = wordArrayToPhrase(newWords);
47070 return newPhrase;
47071 }
47072
47073 // TODO look at jsbip39 - mnemonic.splitWords
47074 function phraseToWordArray(phrase) {
47075 var words = phrase.split(/\s/g);
47076 var noBlanks = [];
47077 for (var i=0; i<words.length; i++) {
47078 var word = words[i];
47079 if (word.length > 0) {
47080 noBlanks.push(word);
47081 }
47082 }
47083 return noBlanks;
47084 }
47085
47086 // TODO look at jsbip39 - mnemonic.joinWords
47087 function wordArrayToPhrase(words) {
47088 var phrase = words.join(" ");
47089 var language = getLanguageFromPhrase(phrase);
47090 if (language == "japanese") {
47091 phrase = words.join("\u3000");
47092 }
47093 return phrase;
47094 }
47095
47096 function isUsingOwnEntropy() {
47097 return DOM.useEntropy.prop("checked");
47098 }
47099
47100 function setMnemonicFromEntropy() {
47101 clearEntropyFeedback();
47102 // Get entropy value
47103 var entropyStr = DOM.entropy.val();
47104 // Work out minimum base for entropy
47105 var entropy = Entropy.fromString(entropyStr);
47106 if (entropy.binaryStr.length == 0) {
47107 return;
47108 }
47109 // Show entropy details
47110 showEntropyFeedback(entropy);
47111 // Use entropy hash if not using raw entropy
47112 var bits = entropy.binaryStr;
47113 var mnemonicLength = DOM.entropyMnemonicLength.val();
47114 if (mnemonicLength != "raw") {
47115 // Get bits by hashing entropy with SHA256
47116 var hash = sjcl.hash.sha256.hash(entropy.cleanStr);
47117 var hex = sjcl.codec.hex.fromBits(hash);
47118 bits = BigInteger.parse(hex, 16).toString(2);
47119 while (bits.length % 256 != 0) {
47120 bits = "0" + bits;
47121 }
47122 // Truncate hash to suit number of words
47123 mnemonicLength = parseInt(mnemonicLength);
47124 var numberOfBits = 32 * mnemonicLength / 3;
47125 bits = bits.substring(0, numberOfBits);
47126 }
47127 // Discard trailing entropy
47128 var bitsToUse = Math.floor(bits.length / 32) * 32;
47129 var start = bits.length - bitsToUse;
47130 var binaryStr = bits.substring(start);
47131 // Convert entropy string to numeric array
47132 var entropyArr = [];
47133 for (var i=0; i<binaryStr.length / 8; i++) {
47134 var byteAsBits = binaryStr.substring(i*8, i*8+8);
47135 var entropyByte = parseInt(byteAsBits, 2);
47136 entropyArr.push(entropyByte)
47137 }
47138 // Convert entropy array to mnemonic
47139 var phrase = mnemonic.toMnemonic(entropyArr);
47140 // Set the mnemonic in the UI
47141 DOM.phrase.val(phrase);
47142 }
47143
47144 function clearEntropyFeedback() {
47145 DOM.entropyCrackTime.text("...");
47146 DOM.entropyType.text("");
47147 DOM.entropyWordCount.text("0");
47148 DOM.entropyEventCount.text("0");
47149 DOM.entropyBitsPerEvent.text("0");
47150 DOM.entropyBits.text("0");
47151 DOM.entropyFiltered.html("&nbsp;");
47152 DOM.entropyBinary.html("&nbsp;");
47153 }
47154
47155 function showEntropyFeedback(entropy) {
47156 var numberOfBits = entropy.binaryStr.length;
47157 var timeToCrack = "unknown";
47158 try {
47159 var z = zxcvbn(entropy.base.parts.join(""));
47160 timeToCrack = z.crack_times_display.offline_fast_hashing_1e10_per_second;
47161 if (z.feedback.warning != "") {
47162 timeToCrack = timeToCrack + " - " + z.feedback.warning;
47163 };
47164 }
47165 catch (e) {
47166 console.log("Error detecting entropy strength with zxcvbn:");
47167 console.log(e);
47168 }
47169 var entropyTypeStr = getEntropyTypeStr(entropy);
47170 var wordCount = Math.floor(numberOfBits / 32) * 3;
47171 var bitsPerEvent = entropy.bitsPerEvent.toFixed(2);
47172 DOM.entropyFiltered.html(entropy.cleanHtml);
47173 DOM.entropyType.text(entropyTypeStr);
47174 DOM.entropyCrackTime.text(timeToCrack);
47175 DOM.entropyEventCount.text(entropy.base.ints.length);
47176 DOM.entropyBits.text(numberOfBits);
47177 DOM.entropyWordCount.text(wordCount);
47178 DOM.entropyBinary.text(entropy.binaryStr);
47179 DOM.entropyBitsPerEvent.text(bitsPerEvent);
47180 }
47181
47182 function getEntropyTypeStr(entropy) {
47183 var typeStr = entropy.base.str;
47184 // Add some detail if these are cards
47185 if (entropy.base.asInt == 52) {
47186 var cardDetail = []; // array of message strings
47187 // Detect duplicates
47188 var dupes = [];
47189 var dupeTracker = {};
47190 for (var i=0; i<entropy.base.parts.length; i++) {
47191 var card = entropy.base.parts[i];
47192 var cardUpper = card.toUpperCase();
47193 if (cardUpper in dupeTracker) {
47194 dupes.push(card);
47195 }
47196 dupeTracker[cardUpper] = true;
47197 }
47198 if (dupes.length > 0) {
47199 var dupeWord = "duplicates";
47200 if (dupes.length == 1) {
47201 dupeWord = "duplicate";
47202 }
47203 var msg = dupes.length + " " + dupeWord + ": " + dupes.slice(0,3).join(" ");
47204 if (dupes.length > 3) {
47205 msg += "...";
47206 }
47207 cardDetail.push(msg);
47208 }
47209 // Detect full deck
47210 var uniqueCards = [];
47211 for (var uniqueCard in dupeTracker) {
47212 uniqueCards.push(uniqueCard);
47213 }
47214 if (uniqueCards.length == 52) {
47215 cardDetail.unshift("full deck");
47216 }
47217 // Detect missing cards
47218 var values = "A23456789TJQK";
47219 var suits = "CDHS";
47220 var missingCards = [];
47221 for (var i=0; i<suits.length; i++) {
47222 for (var j=0; j<values.length; j++) {
47223 var card = values[j] + suits[i];
47224 if (!(card in dupeTracker)) {
47225 missingCards.push(card);
47226 }
47227 }
47228 }
47229 // Display missing cards if six or less, ie clearly going for full deck
47230 if (missingCards.length > 0 && missingCards.length <= 6) {
47231 var msg = missingCards.length + " missing: " + missingCards.slice(0,3).join(" ");
47232 if (missingCards.length > 3) {
47233 msg += "...";
47234 }
47235 cardDetail.push(msg);
47236 }
47237 // Add card details to typeStr
47238 if (cardDetail.length > 0) {
47239 typeStr += " (" + cardDetail.join(", ") + ")";
47240 }
47241 }
47242 return typeStr;
47243 }
47244
47245 function setQrEvents(els) {
47246 els.on("mouseenter", createQr);
47247 els.on("mouseleave", destroyQr);
47248 els.on("click", toggleQr);
47249 }
47250
47251 function createQr(e) {
47252 var content = e.target.textContent || e.target.value;
47253 if (content) {
47254 var size = 130;
47255 DOM.qrImage.qrcode({width: size, height: size, text: content});
47256 if (!showQr) {
47257 DOM.qrHider.addClass("hidden");
47258 }
47259 else {
47260 DOM.qrHider.removeClass("hidden");
47261 }
47262 DOM.qrContainer.removeClass("hidden");
47263 }
47264 }
47265
47266 function destroyQr() {
47267 DOM.qrImage.text("");
47268 DOM.qrContainer.addClass("hidden");
47269 }
47270
47271 function toggleQr() {
47272 showQr = !showQr;
47273 DOM.qrHider.toggleClass("hidden");
47274 DOM.qrHint.toggleClass("hidden");
47275 }
47276
47277 function bip44TabSelected() {
47278 return DOM.bip44tab.hasClass("active");
47279 }
47280
47281 function bip32TabSelected() {
47282 return DOM.bip32tab.hasClass("active");
47283 }
47284
47285 function networkHasBip49() {
47286 return networks[DOM.network.val()].bip49available;
47287 }
47288
47289 function bip49TabSelected() {
47290 return DOM.bip49tab.hasClass("active");
47291 }
47292
47293 function setHdCoin(coinValue) {
47294 DOM.bip44coin.val(coinValue);
47295 DOM.bip49coin.val(coinValue);
47296 }
47297
47298 function showBip49() {
47299 DOM.bip49unavailable.addClass("hidden");
47300 DOM.bip49available.removeClass("hidden");
47301 }
47302
47303 function hideBip49() {
47304 DOM.bip49available.addClass("hidden");
47305 DOM.bip49unavailable.removeClass("hidden");
47306 }
47307
47308 var networks = [
47309 {
47310 name: "BCH - Bitcoin Cash",
47311 bip49available: false,
47312 onSelect: function() {
47313 network = bitcoinjs.bitcoin.networks.bitcoin;
47314 setHdCoin(145);
47315 },
47316 },
47317 {
47318 name: "BTC - Bitcoin",
47319 bip49available: true,
47320 onSelect: function() {
47321 network = bitcoinjs.bitcoin.networks.bitcoin;
47322 setHdCoin(0);
47323 },
47324 },
47325 {
47326 name: "BTC - Bitcoin Testnet",
47327 bip49available: true,
47328 onSelect: function() {
47329 network = bitcoinjs.bitcoin.networks.testnet;
47330 setHdCoin(1);
47331 },
47332 },
47333 {
47334 name: "CLAM - Clams",
47335 bip49available: false,
47336 onSelect: function() {
47337 network = bitcoinjs.bitcoin.networks.clam;
47338 setHdCoin(23);
47339 },
47340 },
47341 {
47342 name: "CRW - Crown",
47343 bip49available: false,
47344 onSelect: function() {
47345 network = bitcoinjs.bitcoin.networks.crown;
47346 setHdCoin(72);
47347 },
47348 },
47349 {
47350 name: "DASH - Dash",
47351 bip49available: false,
47352 onSelect: function() {
47353 network = bitcoinjs.bitcoin.networks.dash;
47354 setHdCoin(5);
47355 },
47356 },
47357 {
47358 name: "DASH - Dash Testnet",
47359 bip49available: false,
47360 onSelect: function() {
47361 network = bitcoinjs.bitcoin.networks.dashtn;
47362 setHdCoin(1);
47363 },
47364 },
47365 {
47366 name: "DOGE - Dogecoin",
47367 bip49available: false,
47368 onSelect: function() {
47369 network = bitcoinjs.bitcoin.networks.dogecoin;
47370 setHdCoin(3);
47371 },
47372 },
47373 {
47374 name: "ETH - Ethereum",
47375 bip49available: false,
47376 onSelect: function() {
47377 network = bitcoinjs.bitcoin.networks.bitcoin;
47378 setHdCoin(60);
47379 },
47380 },
47381 {
47382 name: "GAME - GameCredits",
47383 bip49available: false,
47384 onSelect: function() {
47385 network = bitcoinjs.bitcoin.networks.game;
47386 setHdCoin(101);
47387 },
47388 },
47389 {
47390 name: "JBS - Jumbucks",
47391 bip49available: false,
47392 onSelect: function() {
47393 network = bitcoinjs.bitcoin.networks.jumbucks;
47394 setHdCoin(26);
47395 },
47396 },
47397 {
47398 name: "LTC - Litecoin",
47399 bip49available: false,
47400 onSelect: function() {
47401 network = bitcoinjs.bitcoin.networks.litecoin;
47402 setHdCoin(2);
47403 DOM.litecoinLtubContainer.removeClass("hidden");
47404 },
47405 },
47406 {
47407 name: "MAZA - Maza",
47408 bip49available: false,
47409 onSelect: function() {
47410 network = bitcoinjs.bitcoin.networks.maza;
47411 setHdCoin(13);
47412 },
47413 },
47414
47415 {
47416 name: "NMC - Namecoin",
47417 bip49available: false,
47418 onSelect: function() {
47419 network = bitcoinjs.bitcoin.networks.namecoin;
47420 setHdCoin(7);
47421 },
47422 },
47423 {
47424 name: "PIVX - PIVX",
47425 bip49available: false,
47426 onSelect: function() {
47427 network = bitcoinjs.bitcoin.networks.pivx;
47428 setHdCoin(119);
47429 },
47430 },
47431 {
47432 name: "PIVX - PIVX Testnet",
47433 bip49available: false,
47434 onSelect: function() {
47435 network = bitcoinjs.bitcoin.networks.pivxtestnet;
47436 setHdCoin(1);
47437 },
47438 },
47439 {
47440 name: "PPC - Peercoin",
47441 bip49available: false,
47442 onSelect: function() {
47443 network = bitcoinjs.bitcoin.networks.peercoin;
47444 setHdCoin(6);
47445 },
47446 },
47447 {
47448 name: "SDC - ShadowCash",
47449 bip49available: false,
47450 onSelect: function() {
47451 network = bitcoinjs.bitcoin.networks.shadow;
47452 setHdCoin(35);
47453 },
47454 },
47455 {
47456 name: "SDC - ShadowCash Testnet",
47457 bip49available: false,
47458 onSelect: function() {
47459 network = bitcoinjs.bitcoin.networks.shadowtn;
47460 setHdCoin(1);
47461 },
47462 },
47463 {
47464 name: "SLM - Slimcoin",
47465 bip49available: false,
47466 onSelect: function() {
47467 network = bitcoinjs.bitcoin.networks.slimcoin;
47468 setHdCoin(63);
47469 },
47470 },
47471 {
47472 name: "SLM - Slimcoin Testnet",
47473 bip49available: false,
47474 onSelect: function() {
47475 network = bitcoinjs.bitcoin.networks.slimcointn;
47476 setHdCoin(111);
47477 },
47478 },
47479 {
47480 name: "VIA - Viacoin",
47481 bip49available: false,
47482 onSelect: function() {
47483 network = bitcoinjs.bitcoin.networks.viacoin;
47484 setHdCoin(14);
47485 },
47486 },
47487 {
47488 name: "VIA - Viacoin Testnet",
47489 bip49available: false,
47490 onSelect: function() {
47491 network = bitcoinjs.bitcoin.networks.viacointestnet;
47492 setHdCoin(1);
47493 },
47494 },
47495 {
47496 name: "XMY - Myriadcoin",
47497 bip49available: false,
47498 onSelect: function() {
47499 network = bitcoinjs.bitcoin.networks.myriadcoin;
47500 setHdCoin(90);
47501 },
47502 },
47503 {
47504 name: "XRP - Ripple",
47505 bip49available: false,
47506 onSelect: function() {
47507 network = bitcoinjs.bitcoin.networks.bitcoin;
47508 setHdCoin(144);
47509 },
47510 }
47511 ]
47512
47513 var clients = [
47514 {
47515 name: "Bitcoin Core",
47516 onSelect: function() {
47517 DOM.bip32path.val("m/0'/0'");
47518 DOM.hardenedAddresses.prop('checked', true);
47519 },
47520 },
47521 {
47522 name: "blockchain.info",
47523 onSelect: function() {
47524 DOM.bip32path.val("m/44'/0'/0'");
47525 DOM.hardenedAddresses.prop('checked', false);
47526 },
47527 },
47528 {
47529 name: "MultiBit HD",
47530 onSelect: function() {
47531 DOM.bip32path.val("m/0'/0");
47532 DOM.hardenedAddresses.prop('checked', false);
47533 },
47534 }
47535 ]
47536
47537 init();
47538
47539 })();
47540 </script>
47541 </body>
47542 </html>