diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..00a178e --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +.DS_STORE +.idea +*.obj +*.ply +*.mp4 +part_hier_templates +partnet_videos +dump.sql diff --git a/README.md b/README.md new file mode 100644 index 0000000..4551fab --- /dev/null +++ b/README.md @@ -0,0 +1,44 @@ +# PartNet: A Large-scale Benchmark for Fine-grained and Hierarchical Part-level 3D Object Understanding + +![Annotation System Overview](https://github.com/daerduoCarey/partnet_anno_system/blob/master/images/gui.png) + +**Figure 1. The PartNet Annotation System Overview.** + +## Annotation System + +This repo contains the web-based part segmentation annotation interface for PartNet. + +Our 3D web-based GUI is build upon Node.js, Express.js and Three.js frameworks. Please check the README in `client` and `server` folders for setup instructions. + + +## Paper and Dataset + +PartNet is accepted to CVPR 2019. See you at Long Beach, LA. + +Our team: [Kaichun Mo](https://cs.stanford.edu/~kaichun), [Shilin Zhu](http://cseweb.ucsd.edu/~shz338/), [Angel X. Chang](https://angelxuanchang.github.io/), [Li Yi](https://cs.stanford.edu/~ericyi/), [Subarna Tripathi](https://subarnatripathi.github.io/), [Leonidas J. Guibas](https://geometry.stanford.edu/member/guibas/) and [Hao Su](http://cseweb.ucsd.edu/~haosu/) from Stanford, UCSD, SFU and Intel AI Lab. + +Arxiv Version: https://arxiv.org/abs/1812.02713 + +Project Page: https://cs.stanford.edu/~kaichun/partnet/ + +Video: https://youtu.be/7pEuoxmb-MI + +Please refer to [this repo](https://github.com/daerduocarey/partnet_dataset) for the PartNet dataset utilities and [this repo](https://github.com/daerduocarey/partnet_seg_exps) for the segmentation experiments (Section 5) in the paper. + +## Citations + + @article{mo2018partnet, + title={{PartNet}: A Large-scale Benchmark for Fine-grained and Hierarchical Part-level {3D} Object Understanding}, + author={Mo, Kaichun and Zhu, Shilin and Chang, Angel and Yi, Li and Tripathi, Subarna and Guibas, Leonidas and Su, Hao}, + booktitle={Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR)}, + year={2019} + } + +## License + +MIT Licence + +## Updates + +* [April 18, 2019] PartNet Annotation System v1.0 release. + diff --git a/client/.gitignore b/client/.gitignore new file mode 100644 index 0000000..dd87e2d --- /dev/null +++ b/client/.gitignore @@ -0,0 +1,2 @@ +node_modules +build diff --git a/client/README.md b/client/README.md new file mode 100644 index 0000000..58aef54 --- /dev/null +++ b/client/README.md @@ -0,0 +1,57 @@ +## Client-side Code + +### Installation + +The client side use `node.js` and `browserify`. + +First, install `node.js` and `browserify` as follows. + + curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.1/install.sh | bash + source ~/.bashrc + nvm install node + npm install -g browserify + +The part hier visualization uses [Bootstrap Tree View](https://github.com/jonmiles/bootstrap-treeview). Please install + + npm install -g bower + npm install bootstrap-treeview + +Next, install `node.js` dependent modules as defined in `package.json`. + + npm install + +Finally, compile the client-side javascript dependencies using `browserify` by running the following. + + ./build.sh + +This will generate a `build/ShapeNetPP.bundle.js` that includes all node-js modules defined by `require`. + + +### Usage + +Set up config files, + + cp config/backend.js.template config/backend.js + [fill in the information in this file] + +To run the system, please go to server-side code, set up server-side and run + + cd ../server + # read README for the server side to install + npm start + +Open browser, and go to + + http://localhost:3000 + + +### Interface Descriptions + +There are three main webpages that construct the system: login page, viewer page, and annotator page. + +* The login page provides you functions to register yourself as a worker and log in to annotate. +* The viewer page lists all annotations that have been done and provides functions to label new shapes. Each worker can see the models annotated by himself or herself only. We reserve a special username *admin* that can manage all annotations from all workers. Admin account also has the privilege to download the annotations. +* The annotator page is the main page where annotation for a model happens. It provides many utilities to view the 3D model, view part templates, annotate a part in the template, click-and-group parts, and split parts by cutting. Please click *help* on the top-left corner on the webpage for keyboard shortcuts. + +We strongly recommend you to refer to [the paper](https://arxiv.org/abs/1812.02713) and [the Youtube annotation video](https://youtu.be/7pEuoxmb-MI) for mode detailed demonstrations. + diff --git a/client/admin_list_viewer.js b/client/admin_list_viewer.js new file mode 100644 index 0000000..22fd50c --- /dev/null +++ b/client/admin_list_viewer.js @@ -0,0 +1,121 @@ +window.load_cat_names = function() { + console.log('[load_cat_names] start!'); + + var keys = ['Bag', 'Bed', 'Bottle', 'Bowl', 'Chair', 'Clock', 'Dishwasher', 'Display', 'Door', 'Earphone', + 'Faucet', 'Hat', 'Keyboard', 'Knife', 'Lamp', 'Laptop', 'Microwave', 'Mug', 'Refrigerator', 'Scissors', + 'StorageFurniture', 'Table', 'TrashCan', 'Vase']; + + keys.forEach(function(item) { + var option = document.createElement('option'); + option.value = item; + option.text = item; + $('#select_cat_name').append(option); + }); +}; + +window.post = function(path, params, method) { + method = method || "post"; // Set method to post by default if not specified. + + // The rest of this code assumes you are not using a library. + // It can be made less wordy if you use one. + var form = document.createElement("form"); + form.setAttribute("method", method); + form.setAttribute("action", path); + form.setAttribute("target", "_blank"); + + for (var key in params) { + if (params.hasOwnProperty(key)) { + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("type", "hidden"); + hiddenField.setAttribute("name", key); + hiddenField.setAttribute("value", params[key]); + + form.appendChild(hiddenField); + } + } + + document.body.appendChild(form); + form.submit(); +}; + +window.gen_visu_list = function() { + var table = document.getElementById("myTable").getElementsByTagName('tbody')[0]; + var cat_name = document.getElementById('select_cat_name').value; + + if ($.fn.DataTable.isDataTable("#myTable")) { + $('#myTable').DataTable().clear().destroy(); + } + + table.innerHTML = ''; + + $.getJSON('annotation/get_all_annotations_admin/'+cat_name, function(data) { + for (let item of data.anno_list) { + var anno_id = item.anno_id; + var model_id = item.model_id; + var anno_version = item.version; + var user_id = item.user_id; + + var row = table.insertRow(-1); + + row.insertCell(0).innerHTML = anno_id; + row.insertCell(1).innerHTML = anno_version; + + row.insertCell(2).innerHTML = model_id; + + var img_html = ''; + row.insertCell(3).innerHTML = img_html; + + var view_html = ''; + row.insertCell(4).innerHTML = view_html; + + var modify_html = ''; + row.insertCell(5).innerHTML = modify_html; + + var delete_html = ''; + row.insertCell(6).innerHTML = delete_html; + + var download_html = ''; + row.insertCell(7).innerHTML = download_html; + } + + $('#myTable').DataTable({ + createdRow: function( row, data, dataIndex ) { + if ( data[2] == "0" ) { + $(row).addClass('highlightRow'); + } + } + }); + }); +}; + +window.view_model = function(anno_id) { + post('/part_annotator', {anno_id: anno_id, allow_edit: false, load_parent_anno: true}); +}; + +window.modify_model = function(anno_id) { + post('/part_annotator', {anno_id: anno_id, allow_edit: true, load_parent_anno: true}); +}; + +window.delete_model = function(anno_id) { + var prompt_str, alert_str; + prompt_str = 'Are you sure to delete this annotation? All related information will be removed.'; + alert_str = 'Deleted! The webpage will refresh automatically.'; + if (confirm(prompt_str)) { + var xmlhttp = new XMLHttpRequest(); + xmlhttp.onreadystatechange = function () { + if (this.readyState === 4 && this.status === 200) { + console.log('anno deleted: ' + anno_id); + alert(alert_str); + gen_visu_list(); + } + }; + xmlhttp.open("GET", 'annotation/delete/' + anno_id, true); + xmlhttp.send(); + } +}; + +window.view_template = function() { + console.log('View template'); + var cat_name = document.getElementById('select_cat_name').value; + window.open('/template_viewer/'+cat_name); +}; diff --git a/client/build.sh b/client/build.sh new file mode 100755 index 0000000..36d2ae0 --- /dev/null +++ b/client/build.sh @@ -0,0 +1 @@ +rm -rf build && mkdir build && browserify admin_list_viewer.js template_viewer.js part_hier_annotator.js > build/ShapeNetPP.bundle.js diff --git a/client/config/.gitignore b/client/config/.gitignore new file mode 100644 index 0000000..62a0949 --- /dev/null +++ b/client/config/.gitignore @@ -0,0 +1 @@ +backend.js diff --git a/client/config/backend.js.template b/client/config/backend.js.template new file mode 100644 index 0000000..d02aa7d --- /dev/null +++ b/client/config/backend.js.template @@ -0,0 +1,32 @@ +var be_config = exports; + +// Host and Port Information (SET UP HERE!) +be_config.remoteHost = '[TODO: e.g. http://localhost]'; +be_config.remotePort = '[TODO]'; + +// get annotation info (Don't Change!) +be_config.get_anno_info = '/annotation/get_info'; +be_config.save_anno_json = '/annotation/save_json'; +be_config.get_anno_json = '/annotation/get_json'; +be_config.save_anno_snapshot = '/annotation/save_snapshot'; +be_config.update_anno_version = '/annotation/update_version'; +be_config.get_anno_obj_list = '/annotation/get_obj_list'; +be_config.save_anno_obj_list = '/annotation/save_obj_list'; +be_config.get_qa_data = '/annotation/get_qa'; +be_config.save_qa_data = '/annotation/save_qa'; + +// get files (Don't Change!) +be_config.get_original_part = '/file/original-part'; +be_config.get_remesh_part = '/file/remesh-part'; +be_config.get_new_part = '/file/new-part'; +be_config.get_original_scene_graph = '/file/original-scene-graph'; +be_config.get_remesh_cut_json = '/file/remesh-cut-output-json'; +be_config.get_model_screenshot = '/file/model-sceneshot'; + +// remesh related (Don't Change!) +be_config.request_remesh = '/remesh'; +be_config.submit_remesh = '/submit_remesh_cut'; + +// user anno list viewer (Don't Change!) +be_config.anno_list_viewer = '/part_anno_list_viewer'; + diff --git a/client/config/colors.js b/client/config/colors.js new file mode 100644 index 0000000..ed9dc71 --- /dev/null +++ b/client/config/colors.js @@ -0,0 +1,10 @@ +var colors = exports; +colors.colors = [ 0xff0000, 0x00ffff, 0x00ff00, + 0x0000ff, 0xffff00, 0xff00ff, + 0x800080, 0xadd8e6, 0x0000a0, + 0xa52a2a, 0x0000a0, 0x808000, + 0xd1c69e, 0x670000, 0x4d0000, + 0xdcf5e9, 0xaa93e2, 0x008080, + 0xf9d3d3, 0xffc0cb, 0xd95e40, + 0xb59265 +]; \ No newline at end of file diff --git a/client/css/Treant.css b/client/css/Treant.css new file mode 100644 index 0000000..3ef3675 --- /dev/null +++ b/client/css/Treant.css @@ -0,0 +1,11 @@ +/* required LIB STYLES */ +/* .Treant se automatski dodaje na svaki chart conatiner */ +.Treant { position: relative; overflow: hidden; padding: 0 !important; } +.Treant > .node, +.Treant > .pseudo { position: absolute; display: block; visibility: hidden; } +.Treant.Treant-loaded .node, +.Treant.Treant-loaded .pseudo { visibility: visible; } +.Treant > .pseudo { width: 0; height: 0; border: none; padding: 0; } +.Treant .collapse-switch { width: 3px; height: 3px; display: block; border: 1px solid black; position: absolute; top: 1px; right: 1px; cursor: pointer; } +.Treant .collapsed .collapse-switch { background-color: #868DEE; } +.Treant > .node img { border: none; float: left; } \ No newline at end of file diff --git a/client/css/custom-color-plus-scrollbar.css b/client/css/custom-color-plus-scrollbar.css new file mode 100644 index 0000000..b5596de --- /dev/null +++ b/client/css/custom-color-plus-scrollbar.css @@ -0,0 +1,44 @@ +body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td { margin:0; padding:0; } +table { border-collapse:collapse; border-spacing:0; } +fieldset,img { border:0; } +address,caption,cite,code,dfn,em,strong,th,var { font-style:normal; font-weight:normal; } +caption,th { text-align:left; } +h1,h2,h3,h4,h5,h6 { font-size:100%; font-weight:normal; } +q:before,q:after { content:''; } +abbr,acronym { border:0; } + +body { background: #fff; } +/* optional Container STYLES */ +.chart { height: 200px; margin: 5px; width: 1000px; margin: 5px auto; border: 3px solid #DDD; border-radius: 3px; } +.Treant > .node { } +.Treant > p { font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; font-weight: bold; font-size: 12px; } +.node-name { font-weight: bold;} + +.nodeExample1 { + padding: 2px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + background-color: #262626; + border: 1px solid #000; + width: 200px; + font-family: Tahoma; + font-size: 12px; + color: #ffffff; +} + +.nodeExample1 img { + margin-right: 10px; +} + +.Treant > a:link { + color: #ffffff; +} + +.Treant > a:visited { + color: #ffffff; +} + +.Treant > a:link:hover { + color: #636363; +} \ No newline at end of file diff --git a/client/css/font-awesome.min.css b/client/css/font-awesome.min.css new file mode 100644 index 0000000..540440c --- /dev/null +++ b/client/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/client/css/perfect-scrollbar.css b/client/css/perfect-scrollbar.css new file mode 100644 index 0000000..cb75a90 --- /dev/null +++ b/client/css/perfect-scrollbar.css @@ -0,0 +1,61 @@ +.ps-container .ps-scrollbar-x { + position: absolute; /* please don't change 'position' */ + bottom: 3px; /* there must be 'bottom' for ps-scrollbar-x */ + height: 8px; + background-color: #aaa; + border-radius: 4px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + opacity: 0; + filter: alpha(opacity = 0); + -webkit-transition: opacity.2s linear; + -moz-transition: opacity .2s linear; + transition: opacity .2s linear; +} + +.ps-container:hover .ps-scrollbar-x { + opacity: 0.6; + filter: alpha(opacity = 60); +} + +.ps-container .ps-scrollbar-x:hover { + opacity: 0.9; + filter: alpha(opacity = 90); + cursor:default; +} + +.ps-container .ps-scrollbar-x.in-scrolling { + opacity: 0.9; + filter: alpha(opacity = 90); +} + +.ps-container .ps-scrollbar-y { + position: absolute; /* please don't change 'position' */ + right: 3px; /* there must be 'right' for ps-scrollbar-y */ + width: 8px; + background-color: #aaa; + border-radius: 4px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + opacity: 0; + filter: alpha(opacity = 0); + -webkit-transition: opacity.2s linear; + -moz-transition: opacity .2s linear; + transition: opacity .2s linear; +} + +.ps-container:hover .ps-scrollbar-y { + opacity: 0.6; + filter: alpha(opacity = 60); +} + +.ps-container .ps-scrollbar-y:hover { + opacity: 0.9; + filter: alpha(opacity = 90); + cursor: default; +} + +.ps-container .ps-scrollbar-y.in-scrolling { + opacity: 0.9; + filter: alpha(opacity = 90); +} diff --git a/client/css/please-wait.css b/client/css/please-wait.css new file mode 100644 index 0000000..4399a2a --- /dev/null +++ b/client/css/please-wait.css @@ -0,0 +1,161 @@ +/* line 17, ../src/please-wait.scss */ +body.pg-loading { + overflow: hidden; +} + +/* line 21, ../src/please-wait.scss */ +.pg-loading-screen { + position: fixed; + bottom: 0; + left: 0; + right: 0; + top: 0; + z-index: 1000000; + opacity: 1; + background-color: #FFF; + -webkit-transition: background-color 0.4s ease-in-out 0s; + -moz-transition: background-color 0.4s ease-in-out 0s; + -ms-transition: background-color 0.4s ease-in-out 0s; + -o-transition: background-color 0.4s ease-in-out 0s; + transition: background-color 0.4s ease-in-out 0s; +} +/* line 32, ../src/please-wait.scss */ +.pg-loading-screen.pg-loaded { + opacity: 0; + -webkit-animation: pgAnimLoaded 0.5s cubic-bezier(0.7, 0, 0.3, 1) both; + -moz-animation: pgAnimLoaded 0.5s cubic-bezier(0.7, 0, 0.3, 1) both; + -ms-animation: pgAnimLoaded 0.5s cubic-bezier(0.7, 0, 0.3, 1) both; + -o-animation: pgAnimLoaded 0.5s cubic-bezier(0.7, 0, 0.3, 1) both; + animation: pgAnimLoaded 0.5s cubic-bezier(0.7, 0, 0.3, 1) both; +} +/* line 38, ../src/please-wait.scss */ +.pg-loading-screen.pg-loading .pg-loading-logo-header, .pg-loading-screen.pg-loading .pg-loading-html { + opacity: 1; +} +/* line 42, ../src/please-wait.scss */ +.pg-loading-screen.pg-loading .pg-loading-logo-header, .pg-loading-screen.pg-loading .pg-loading-html:not(.pg-loaded) { + -webkit-animation: pgAnimLoading 1s cubic-bezier(0.7, 0, 0.3, 1) both; + -moz-animation: pgAnimLoading 1s cubic-bezier(0.7, 0, 0.3, 1) both; + -ms-animation: pgAnimLoading 1s cubic-bezier(0.7, 0, 0.3, 1) both; + -o-animation: pgAnimLoading 1s cubic-bezier(0.7, 0, 0.3, 1) both; + animation: pgAnimLoading 1s cubic-bezier(0.7, 0, 0.3, 1) both; +} +/* line 46, ../src/please-wait.scss */ +.pg-loading-screen.pg-loading .pg-loading-html:not(.pg-loaded) { + -webkit-animation-delay: 0.3s; + -moz-animation-delay: 0.3s; + -ms-animation-delay: 0.3s; + -o-animation-delay: 0.3s; + animation-delay: 0.3s; +} +/* line 51, ../src/please-wait.scss */ +.pg-loading-screen .pg-loading-inner { + height: 100%; + width: 100%; + margin: 0; + padding: 0; + position: static; +} +/* line 59, ../src/please-wait.scss */ +.pg-loading-screen .pg-loading-center-outer { + width: 100%; + padding: 0; + display: table !important; + height: 100%; + position: absolute; + top: 0; + left: 0; + margin: 0; +} +/* line 70, ../src/please-wait.scss */ +.pg-loading-screen .pg-loading-center-middle { + padding: 0; + vertical-align: middle; + display: table-cell !important; + margin: 0; + text-align: center; +} +/* line 78, ../src/please-wait.scss */ +.pg-loading-screen .pg-loading-logo-header, .pg-loading-screen .pg-loading-html { + width: 100%; + opacity: 0; +} +/* line 83, ../src/please-wait.scss */ +.pg-loading-screen .pg-loading-logo-header { + text-align: center; +} +/* line 86, ../src/please-wait.scss */ +.pg-loading-screen .pg-loading-logo-header img { + display: inline-block !important; +} +/* line 91, ../src/please-wait.scss */ +.pg-loading-screen .pg-loading-html { + margin-top: 90px; +} +/* line 94, ../src/please-wait.scss */ +.pg-loading-screen .pg-loading-html.pg-loaded { + -webkit-transition: opacity 0.5s cubic-bezier(0.7, 0, 0.3, 1); + -moz-transition: opacity 0.5s cubic-bezier(0.7, 0, 0.3, 1); + -ms-transition: opacity 0.5s cubic-bezier(0.7, 0, 0.3, 1); + -o-transition: opacity 0.5s cubic-bezier(0.7, 0, 0.3, 1); + transition: opacity 0.5s cubic-bezier(0.7, 0, 0.3, 1); +} +/* line 97, ../src/please-wait.scss */ +.pg-loading-screen .pg-loading-html.pg-loaded.pg-removing { + opacity: 0; +} +/* line 101, ../src/please-wait.scss */ +.pg-loading-screen .pg-loading-html.pg-loaded.pg-loading { + opacity: 1; +} + +@-webkit-keyframes pgAnimLoading { + from { + opacity: 0; + } +} +@-moz-keyframes pgAnimLoading { + from { + opacity: 0; + } +} +@-o-keyframes pgAnimLoading { + from { + opacity: 0; + } +} +@-ms-keyframes pgAnimLoading { + from { + opacity: 0; + } +} +@keyframes pgAnimLoading { + from { + opacity: 0; + } +} +@-webkit-keyframes pgAnimLoaded { + from { + opacity: 1; + } +} +@-moz-keyframes pgAnimLoaded { + from { + opacity: 1; + } +} +@-o-keyframes pgAnimLoaded { + from { + opacity: 1; + } +} +@-ms-keyframes pgAnimLoaded { + from { + opacity: 1; + } +} +@keyframes pgAnimLoaded { + from { + opacity: 1; + } +} diff --git a/client/css/star-rating.css b/client/css/star-rating.css new file mode 100644 index 0000000..95c1900 --- /dev/null +++ b/client/css/star-rating.css @@ -0,0 +1,189 @@ +/*! + * bootstrap-star-rating v4.0.3 + * http://plugins.krajee.com/star-rating + * + * Author: Kartik Visweswaran + * Copyright: 2013 - 2017, Kartik Visweswaran, Krajee.com + * + * Licensed under the BSD 3-Clause + * https://github.com/kartik-v/bootstrap-star-rating/blob/master/LICENSE.md + */ +.rating-loading { + width: 25px; + height: 25px; + font-size: 0; + color: #fff; + background: transparent url('../img/loading.gif') top left no-repeat; + border: none; +} + +/* + * Stars & Input + */ +.rating-container .rating-stars { + position: relative; + cursor: pointer; + vertical-align: middle; + display: inline-block; + overflow: hidden; + white-space: nowrap; +} + +.rating-container .rating-input { + position: absolute; + cursor: pointer; + width: 100%; + height: 1px; + bottom: 0; + left: 0; + font-size: 1px; + border: none; + background: none; + padding: 0; + margin: 0; +} + +.rating-disabled .rating-input, .rating-disabled .rating-stars { + cursor: not-allowed; +} + +.rating-container .star { + display: inline-block; + margin: 0 3px; + text-align: center; +} + +.rating-container .empty-stars { + color: #aaa; +} + +.rating-container .filled-stars { + position: absolute; + left: 0; + top: 0; + margin: auto; + color: #fde16d; + white-space: nowrap; + overflow: hidden; + -webkit-text-stroke: 1px #777; + text-shadow: 1px 1px #999; +} + +.rating-rtl { + float: right; +} + +.rating-animate .filled-stars { + transition: width 0.25s ease; + -o-transition: width 0.25s ease; + -moz-transition: width 0.25s ease; + -webkit-transition: width 0.25s ease; +} + +.rating-rtl .filled-stars { + left: auto; + right: 0; + -moz-transform: matrix(-1, 0, 0, 1, 0, 0) translate3d(0, 0, 0); + -webkit-transform: matrix(-1, 0, 0, 1, 0, 0) translate3d(0, 0, 0); + -o-transform: matrix(-1, 0, 0, 1, 0, 0) translate3d(0, 0, 0); + transform: matrix(-1, 0, 0, 1, 0, 0) translate3d(0, 0, 0); +} + +.rating-rtl.is-star .filled-stars { + right: 0.06em; +} + +.rating-rtl.is-heart .empty-stars { + margin-right: 0.07em; +} + +/** + * Sizes + */ +.rating-xl { + font-size: 4.89em; +} + +.rating-lg { + font-size: 3.91em; +} + +.rating-md { + font-size: 3.13em; +} + +.rating-sm { + font-size: 2.5em; +} + +.rating-xs { + font-size: 2em; +} + +.rating-xl { + font-size: 4.89em; +} + +/** + * Clear + */ +.rating-container .clear-rating { + color: #aaa; + cursor: not-allowed; + display: inline-block; + vertical-align: middle; + font-size: 60%; +} + +.clear-rating-active { + cursor: pointer !important; +} + +.clear-rating-active:hover { + color: #843534; +} + +.rating-container .clear-rating { + padding-right: 5px; +} + +/** + * Caption + */ + +/* extend support to BS4 */ +.rating-container .caption .label { + display: inline-block; + padding: .25em .4em; + line-height: 1; + text-align: center; + vertical-align: baseline; + border-radius: .25rem; +} + +.rating-container .caption { + color: #999; + display: inline-block; + vertical-align: middle; + font-size: 60%; + margin-top: -0.6em; +} + +.rating-container .caption { + margin-left: 5px; + margin-right: 0; +} + +.rating-rtl .caption { + margin-right: 5px; + margin-left: 0; +} + +/** + * Print + */ +@media print { + .rating-container .clear-rating { + display: none; + } +} \ No newline at end of file diff --git a/client/css/star-rating.min.css b/client/css/star-rating.min.css new file mode 100644 index 0000000..e8f1c5b --- /dev/null +++ b/client/css/star-rating.min.css @@ -0,0 +1,10 @@ +/*! + * bootstrap-star-rating v4.0.3 + * http://plugins.krajee.com/star-rating + * + * Author: Kartik Visweswaran + * Copyright: 2013 - 2017, Kartik Visweswaran, Krajee.com + * + * Licensed under the BSD 3-Clause + * https://github.com/kartik-v/bootstrap-star-rating/blob/master/LICENSE.md + */.rating-loading{width:25px;height:25px;font-size:0;color:#fff;background:url(../img/loading.gif) top left no-repeat;border:none}.rating-container .rating-stars{position:relative;cursor:pointer;vertical-align:middle;display:inline-block;overflow:hidden;white-space:nowrap}.rating-container .rating-input{position:absolute;cursor:pointer;width:100%;height:1px;bottom:0;left:0;font-size:1px;border:none;background:0 0;padding:0;margin:0}.rating-disabled .rating-input,.rating-disabled .rating-stars{cursor:not-allowed}.rating-container .star{display:inline-block;margin:0 3px;text-align:center}.rating-container .empty-stars{color:#aaa}.rating-container .filled-stars{position:absolute;left:0;top:0;margin:auto;color:#fde16d;white-space:nowrap;overflow:hidden;-webkit-text-stroke:1px #777;text-shadow:1px 1px #999}.rating-rtl{float:right}.rating-animate .filled-stars{transition:width .25s ease;-o-transition:width .25s ease;-moz-transition:width .25s ease;-webkit-transition:width .25s ease}.rating-rtl .filled-stars{left:auto;right:0;-moz-transform:matrix(-1,0,0,1,0,0) translate3d(0,0,0);-webkit-transform:matrix(-1,0,0,1,0,0) translate3d(0,0,0);-o-transform:matrix(-1,0,0,1,0,0) translate3d(0,0,0);transform:matrix(-1,0,0,1,0,0) translate3d(0,0,0)}.rating-rtl.is-star .filled-stars{right:.06em}.rating-rtl.is-heart .empty-stars{margin-right:.07em}.rating-lg{font-size:3.91em}.rating-md{font-size:3.13em}.rating-sm{font-size:2.5em}.rating-xs{font-size:2em}.rating-xl{font-size:4.89em}.rating-container .clear-rating{color:#aaa;cursor:not-allowed;display:inline-block;vertical-align:middle;font-size:60%;padding-right:5px}.clear-rating-active{cursor:pointer!important}.clear-rating-active:hover{color:#843534}.rating-container .caption .label{display:inline-block;padding:.25em .4em;line-height:1;text-align:center;vertical-align:baseline;border-radius:.25rem}.rating-container .caption{color:#999;display:inline-block;vertical-align:middle;font-size:60%;margin-top:-.6em;margin-left:5px;margin-right:0}.rating-rtl .caption{margin-right:5px;margin-left:0}@media print{.rating-container .clear-rating{display:none}} \ No newline at end of file diff --git a/client/css/template_viewer.css b/client/css/template_viewer.css new file mode 100644 index 0000000..214ed87 --- /dev/null +++ b/client/css/template_viewer.css @@ -0,0 +1,69 @@ +@import url(https://fonts.googleapis.com/css?family=Work+Sans:300,600); + +html,body{ + font-size: 20px; + font-family: 'Work Sans', sans-serif; + height:100%; + width:100%; + display: block; + overflow: hidden; +} +h3{ + margin: 0px; + font-size: 20px; + color: red; +} + +.main_row { + width: 100%; + height:100%; +} + +.main_hier { + float: left; + width: 30%; + border-style: solid; + height: 100%; + overflow: scroll; +} + +.main_qa { + float: left; + width: 70%; + border-style: solid; + height: 100%; + overflow: scroll; +} + +#part_definition { + display: block; position: relative; +} + +#tree_instance { + clear: both; + float: bottom; + height:80%; + display: block; position: relative; +} + +/* optional Container STYLES */ +.chart { height: 600px; margin: 5px; width: 900px; } +.Treant > .node { } +.Treant > p { font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; font-weight: bold; font-size: 12px; } +.node-name { font-weight: bold;} + +.nodeExample1 { + padding: 2px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + background-color: #ffffff; + border: 1px solid #000; + width: 200px; + font-family: Tahoma; + font-size: 12px; +} + +.nodeExample1 img { + margin-right: 10px; +} diff --git a/client/css/ui.css b/client/css/ui.css new file mode 100644 index 0000000..20dd761 --- /dev/null +++ b/client/css/ui.css @@ -0,0 +1,122 @@ +@import url(https://fonts.googleapis.com/css?family=Work+Sans:300,600); + +html,body{ + font-size: 20px; + font-family: 'Work Sans', sans-serif; + height:100%; + width:100%; + display: block; + overflow: hidden; +} +h3{ + margin: 0px; + font-size: 20px; + color: red; +} + +.main_row { + width: 100%; + height:100%; +} + +.main_hier { + float: left; + width: 30%; + border-style: solid; + height: 100%; + overflow: scroll; +} + +.main_qa { + float: left; + width: 30%; + border-style: solid; + height: 100%; + overflow: scroll; +} + +.main_3d { + float: left; + width: 40%; + border-style: solid; + height: 100%; + overflow:hidden; +} + +textarea +{ + width:100%; + height:100px; +} + +#main_3d_canvas { + width: 100%; + height: 70vh; + border-bottom: 3px solid #000; +} + +#model_screenshots { + width: 100%; + padding-top: 40px; + height: 30vh; + overflow-x: auto; + overflow-y: hidden; + white-space: nowrap; +} + +.txt_alert { + color: #ff0000; +} + +.txt_define { + color: #0000ff; +} + +#button_nav { + display: block; + position: relative; +} + +#annotation_quiz { + clear: both; + opacity: 1; + transition: opacity 0.5s; + display: block; + position: relative; + border-bottom:3px solid #000; +} + +#part_definition { + display: block; position: relative; +} + +#tree_instance { + clear: both; + float: bottom; + height:80%; + display: block; position: relative; +} + +.question{ + font-size: 20px; + margin-bottom: 10px; +} +.answers { + margin-bottom: 20px; + text-align: left; + display: inline-block; +} +.answers label{ + float: none; + display: inline-block; + vertical-align: middle; +} + +input[type='number'] { + -moz-appearance:textfield; +} + +input::-webkit-outer-spin-button, +input::-webkit-inner-spin-button { + -webkit-appearance: none; +} diff --git a/client/js/OBJLoader.js b/client/js/OBJLoader.js new file mode 100644 index 0000000..609d151 --- /dev/null +++ b/client/js/OBJLoader.js @@ -0,0 +1,720 @@ +/** + * @author mrdoob / http://mrdoob.com/ + */ + +THREE.OBJLoader = ( function () { + + // o object_name | g group_name + var object_pattern = /^[og]\s*(.+)?/; + // mtllib file_reference + var material_library_pattern = /^mtllib /; + // usemtl material_name + var material_use_pattern = /^usemtl /; + + function ParserState() { + + var state = { + objects: [], + object: {}, + + vertices: [], + normals: [], + colors: [], + uvs: [], + + materialLibraries: [], + + startObject: function ( name, fromDeclaration ) { + + // If the current object (initial from reset) is not from a g/o declaration in the parsed + // file. We need to use it for the first parsed g/o to keep things in sync. + if ( this.object && this.object.fromDeclaration === false ) { + + this.object.name = name; + this.object.fromDeclaration = ( fromDeclaration !== false ); + return; + + } + + var previousMaterial = ( this.object && typeof this.object.currentMaterial === 'function' ? this.object.currentMaterial() : undefined ); + + if ( this.object && typeof this.object._finalize === 'function' ) { + + this.object._finalize( true ); + + } + + this.object = { + name: name || '', + fromDeclaration: ( fromDeclaration !== false ), + + geometry: { + vertices: [], + normals: [], + colors: [], + uvs: [] + }, + materials: [], + smooth: true, + + startMaterial: function ( name, libraries ) { + + var previous = this._finalize( false ); + + // New usemtl declaration overwrites an inherited material, except if faces were declared + // after the material, then it must be preserved for proper MultiMaterial continuation. + if ( previous && ( previous.inherited || previous.groupCount <= 0 ) ) { + + this.materials.splice( previous.index, 1 ); + + } + + var material = { + index: this.materials.length, + name: name || '', + mtllib: ( Array.isArray( libraries ) && libraries.length > 0 ? libraries[ libraries.length - 1 ] : '' ), + smooth: ( previous !== undefined ? previous.smooth : this.smooth ), + groupStart: ( previous !== undefined ? previous.groupEnd : 0 ), + groupEnd: - 1, + groupCount: - 1, + inherited: false, + + clone: function ( index ) { + + var cloned = { + index: ( typeof index === 'number' ? index : this.index ), + name: this.name, + mtllib: this.mtllib, + smooth: this.smooth, + groupStart: 0, + groupEnd: - 1, + groupCount: - 1, + inherited: false + }; + cloned.clone = this.clone.bind( cloned ); + return cloned; + + } + }; + + this.materials.push( material ); + + return material; + + }, + + currentMaterial: function () { + + if ( this.materials.length > 0 ) { + + return this.materials[ this.materials.length - 1 ]; + + } + + return undefined; + + }, + + _finalize: function ( end ) { + + var lastMultiMaterial = this.currentMaterial(); + if ( lastMultiMaterial && lastMultiMaterial.groupEnd === - 1 ) { + + lastMultiMaterial.groupEnd = this.geometry.vertices.length / 3; + lastMultiMaterial.groupCount = lastMultiMaterial.groupEnd - lastMultiMaterial.groupStart; + lastMultiMaterial.inherited = false; + + } + + // Ignore objects tail materials if no face declarations followed them before a new o/g started. + if ( end && this.materials.length > 1 ) { + + for ( var mi = this.materials.length - 1; mi >= 0; mi -- ) { + + if ( this.materials[ mi ].groupCount <= 0 ) { + + this.materials.splice( mi, 1 ); + + } + + } + + } + + // Guarantee at least one empty material, this makes the creation later more straight forward. + if ( end && this.materials.length === 0 ) { + + this.materials.push( { + name: '', + smooth: this.smooth + } ); + + } + + return lastMultiMaterial; + + } + }; + + // Inherit previous objects material. + // Spec tells us that a declared material must be set to all objects until a new material is declared. + // If a usemtl declaration is encountered while this new object is being parsed, it will + // overwrite the inherited material. Exception being that there was already face declarations + // to the inherited material, then it will be preserved for proper MultiMaterial continuation. + + if ( previousMaterial && previousMaterial.name && typeof previousMaterial.clone === 'function' ) { + + var declared = previousMaterial.clone( 0 ); + declared.inherited = true; + this.object.materials.push( declared ); + + } + + this.objects.push( this.object ); + + }, + + finalize: function () { + + if ( this.object && typeof this.object._finalize === 'function' ) { + + this.object._finalize( true ); + + } + + }, + + parseVertexIndex: function ( value, len ) { + + var index = parseInt( value, 10 ); + return ( index >= 0 ? index - 1 : index + len / 3 ) * 3; + + }, + + parseNormalIndex: function ( value, len ) { + + var index = parseInt( value, 10 ); + return ( index >= 0 ? index - 1 : index + len / 3 ) * 3; + + }, + + parseUVIndex: function ( value, len ) { + + var index = parseInt( value, 10 ); + return ( index >= 0 ? index - 1 : index + len / 2 ) * 2; + + }, + + addVertex: function ( a, b, c ) { + + var src = this.vertices; + var dst = this.object.geometry.vertices; + + dst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] ); + dst.push( src[ b + 0 ], src[ b + 1 ], src[ b + 2 ] ); + dst.push( src[ c + 0 ], src[ c + 1 ], src[ c + 2 ] ); + + }, + + addVertexLine: function ( a ) { + + var src = this.vertices; + var dst = this.object.geometry.vertices; + + dst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] ); + + }, + + addNormal: function ( a, b, c ) { + + var src = this.normals; + var dst = this.object.geometry.normals; + + dst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] ); + dst.push( src[ b + 0 ], src[ b + 1 ], src[ b + 2 ] ); + dst.push( src[ c + 0 ], src[ c + 1 ], src[ c + 2 ] ); + + }, + + addColor: function ( a, b, c ) { + + var src = this.colors; + var dst = this.object.geometry.colors; + + dst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] ); + dst.push( src[ b + 0 ], src[ b + 1 ], src[ b + 2 ] ); + dst.push( src[ c + 0 ], src[ c + 1 ], src[ c + 2 ] ); + + }, + + addUV: function ( a, b, c ) { + + var src = this.uvs; + var dst = this.object.geometry.uvs; + + dst.push( src[ a + 0 ], src[ a + 1 ] ); + dst.push( src[ b + 0 ], src[ b + 1 ] ); + dst.push( src[ c + 0 ], src[ c + 1 ] ); + + }, + + addUVLine: function ( a ) { + + var src = this.uvs; + var dst = this.object.geometry.uvs; + + dst.push( src[ a + 0 ], src[ a + 1 ] ); + + }, + + addFace: function ( a, b, c, ua, ub, uc, na, nb, nc ) { + + var vLen = this.vertices.length; + + var ia = this.parseVertexIndex( a, vLen ); + var ib = this.parseVertexIndex( b, vLen ); + var ic = this.parseVertexIndex( c, vLen ); + + this.addVertex( ia, ib, ic ); + + if ( ua !== undefined ) { + + var uvLen = this.uvs.length; + + ia = this.parseUVIndex( ua, uvLen ); + ib = this.parseUVIndex( ub, uvLen ); + ic = this.parseUVIndex( uc, uvLen ); + + this.addUV( ia, ib, ic ); + + } + + if ( na !== undefined ) { + + // Normals are many times the same. If so, skip function call and parseInt. + var nLen = this.normals.length; + ia = this.parseNormalIndex( na, nLen ); + + ib = na === nb ? ia : this.parseNormalIndex( nb, nLen ); + ic = na === nc ? ia : this.parseNormalIndex( nc, nLen ); + + this.addNormal( ia, ib, ic ); + + } + + if ( this.colors.length > 0 ) { + + this.addColor( ia, ib, ic ); + + } + + }, + + addLineGeometry: function ( vertices, uvs ) { + + this.object.geometry.type = 'Line'; + + var vLen = this.vertices.length; + var uvLen = this.uvs.length; + + for ( var vi = 0, l = vertices.length; vi < l; vi ++ ) { + + this.addVertexLine( this.parseVertexIndex( vertices[ vi ], vLen ) ); + + } + + for ( var uvi = 0, l = uvs.length; uvi < l; uvi ++ ) { + + this.addUVLine( this.parseUVIndex( uvs[ uvi ], uvLen ) ); + + } + + } + + }; + + state.startObject( '', false ); + + return state; + + } + + // + + function OBJLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager; + + this.materials = null; + + } + + OBJLoader.prototype = { + + constructor: OBJLoader, + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var loader = new THREE.FileLoader( scope.manager ); + loader.setPath( this.path ); + loader.load( url, function ( text ) { + onLoad( scope.parse( text ) ); + + }, onProgress, onError ); + + }, + + load_from_server: function(url, onLoad, onProgress, onError){ + var scope = this; + + onLoad(scope.parse(url)); + }, + + setPath: function ( value ) { + + this.path = value; + + }, + + setMaterials: function ( materials ) { + + this.materials = materials; + + return this; + + }, + + parse: function ( text ) { + + console.time( 'OBJLoader' ); + + var state = new ParserState(); + + if ( text.indexOf( '\r\n' ) !== - 1 ) { + + // This is faster than String.split with regex that splits on both + text = text.replace( /\r\n/g, '\n' ); + + } + + if ( text.indexOf( '\\\n' ) !== - 1 ) { + + // join lines separated by a line continuation character (\) + text = text.replace( /\\\n/g, '' ); + + } + + var lines = text.split( '\n' ); + var line = '', lineFirstChar = ''; + var lineLength = 0; + var result = []; + + // Faster to just trim left side of the line. Use if available. + var trimLeft = ( typeof ''.trimLeft === 'function' ); + + for ( var i = 0, l = lines.length; i < l; i ++ ) { + + line = lines[ i ]; + + line = trimLeft ? line.trimLeft() : line.trim(); + + lineLength = line.length; + + if ( lineLength === 0 ) continue; + + lineFirstChar = line.charAt( 0 ); + + // @todo invoke passed in handler if any + if ( lineFirstChar === '#' ) continue; + + if ( lineFirstChar === 'v' ) { + + var data = line.split( /\s+/ ); + + switch ( data[ 0 ] ) { + + case 'v': + state.vertices.push( + parseFloat( data[ 1 ] ), + parseFloat( data[ 2 ] ), + parseFloat( data[ 3 ] ) + ); + if ( data.length === 8 ) { + + state.colors.push( + parseFloat( data[ 4 ] ), + parseFloat( data[ 5 ] ), + parseFloat( data[ 6 ] ) + + ); + + } + break; + case 'vn': + state.normals.push( + parseFloat( data[ 1 ] ), + parseFloat( data[ 2 ] ), + parseFloat( data[ 3 ] ) + ); + break; + case 'vt': + state.uvs.push( + parseFloat( data[ 1 ] ), + parseFloat( data[ 2 ] ) + ); + break; + + } + + } else if ( lineFirstChar === 'f' ) { + + var lineData = line.substr( 1 ).trim(); + var vertexData = lineData.split( /\s+/ ); + var faceVertices = []; + + // Parse the face vertex data into an easy to work with format + + for ( var j = 0, jl = vertexData.length; j < jl; j ++ ) { + + var vertex = vertexData[ j ]; + + if ( vertex.length > 0 ) { + + var vertexParts = vertex.split( '/' ); + faceVertices.push( vertexParts ); + + } + + } + + // Draw an edge between the first vertex and all subsequent vertices to form an n-gon + + var v1 = faceVertices[ 0 ]; + + for ( var j = 1, jl = faceVertices.length - 1; j < jl; j ++ ) { + + var v2 = faceVertices[ j ]; + var v3 = faceVertices[ j + 1 ]; + + state.addFace( + v1[ 0 ], v2[ 0 ], v3[ 0 ], + v1[ 1 ], v2[ 1 ], v3[ 1 ], + v1[ 2 ], v2[ 2 ], v3[ 2 ] + ); + + } + + } else if ( lineFirstChar === 'l' ) { + + var lineParts = line.substring( 1 ).trim().split( " " ); + var lineVertices = [], lineUVs = []; + + if ( line.indexOf( "/" ) === - 1 ) { + + lineVertices = lineParts; + + } else { + + for ( var li = 0, llen = lineParts.length; li < llen; li ++ ) { + + var parts = lineParts[ li ].split( "/" ); + + if ( parts[ 0 ] !== "" ) lineVertices.push( parts[ 0 ] ); + if ( parts[ 1 ] !== "" ) lineUVs.push( parts[ 1 ] ); + + } + + } + state.addLineGeometry( lineVertices, lineUVs ); + + } else if ( ( result = object_pattern.exec( line ) ) !== null ) { + + // o object_name + // or + // g group_name + + // WORKAROUND: https://bugs.chromium.org/p/v8/issues/detail?id=2869 + // var name = result[ 0 ].substr( 1 ).trim(); + var name = ( " " + result[ 0 ].substr( 1 ).trim() ).substr( 1 ); + + state.startObject( name ); + + } else if ( material_use_pattern.test( line ) ) { + + // material + + state.object.startMaterial( line.substring( 7 ).trim(), state.materialLibraries ); + + } else if ( material_library_pattern.test( line ) ) { + + // mtl file + + state.materialLibraries.push( line.substring( 7 ).trim() ); + + } else if ( lineFirstChar === 's' ) { + + result = line.split( ' ' ); + + // smooth shading + + // @todo Handle files that have varying smooth values for a set of faces inside one geometry, + // but does not define a usemtl for each face set. + // This should be detected and a dummy material created (later MultiMaterial and geometry groups). + // This requires some care to not create extra material on each smooth value for "normal" obj files. + // where explicit usemtl defines geometry groups. + // Example asset: examples/models/obj/cerberus/Cerberus.obj + + /* + * http://paulbourke.net/dataformats/obj/ + * or + * http://www.cs.utah.edu/~boulos/cs3505/obj_spec.pdf + * + * From chapter "Grouping" Syntax explanation "s group_number": + * "group_number is the smoothing group number. To turn off smoothing groups, use a value of 0 or off. + * Polygonal elements use group numbers to put elements in different smoothing groups. For free-form + * surfaces, smoothing groups are either turned on or off; there is no difference between values greater + * than 0." + */ + if ( result.length > 1 ) { + + var value = result[ 1 ].trim().toLowerCase(); + state.object.smooth = ( value !== '0' && value !== 'off' ); + + } else { + + // ZBrush can produce "s" lines #11707 + state.object.smooth = true; + + } + var material = state.object.currentMaterial(); + if ( material ) material.smooth = state.object.smooth; + + } else { + + // Handle null terminated files without exception + if ( line === '\0' ) continue; + + throw new Error( 'THREE.OBJLoader: Unexpected line: "' + line + '"' ); + + } + + } + + state.finalize(); + + var container = new THREE.Group(); + container.materialLibraries = [].concat( state.materialLibraries ); + + for ( var i = 0, l = state.objects.length; i < l; i ++ ) { + + var object = state.objects[ i ]; + var geometry = object.geometry; + var materials = object.materials; + var isLine = ( geometry.type === 'Line' ); + + // Skip o/g line declarations that did not follow with any faces + if ( geometry.vertices.length === 0 ) continue; + + var buffergeometry = new THREE.BufferGeometry(); + + buffergeometry.addAttribute( 'position', new THREE.Float32BufferAttribute( geometry.vertices, 3 ) ); + + if ( geometry.normals.length > 0 ) { + + buffergeometry.addAttribute( 'normal', new THREE.Float32BufferAttribute( geometry.normals, 3 ) ); + + } else { + + buffergeometry.computeVertexNormals(); + + } + + if ( geometry.colors.length > 0 ) { + + buffergeometry.addAttribute( 'color', new THREE.Float32BufferAttribute( geometry.colors, 3 ) ); + + } + + if ( geometry.uvs.length > 0 ) { + + buffergeometry.addAttribute( 'uv', new THREE.Float32BufferAttribute( geometry.uvs, 2 ) ); + + } + + // Create materials + + var createdMaterials = []; + + for ( var mi = 0, miLen = materials.length; mi < miLen; mi ++ ) { + + var sourceMaterial = materials[ mi ]; + var material = undefined; + + if ( this.materials !== null ) { + + material = this.materials.create( sourceMaterial.name ); + + // mtl etc. loaders probably can't create line materials correctly, copy properties to a line material. + if ( isLine && material && ! ( material instanceof THREE.LineBasicMaterial ) ) { + + var materialLine = new THREE.LineBasicMaterial(); + materialLine.copy( material ); + material = materialLine; + + } + + } + + if ( ! material ) { + + material = ( ! isLine ? new THREE.MeshPhongMaterial() : new THREE.LineBasicMaterial() ); + material.name = sourceMaterial.name; + + } + + material.flatShading = sourceMaterial.smooth ? false : true; + + createdMaterials.push( material ); + + } + + // Create mesh + + var mesh; + + if ( createdMaterials.length > 1 ) { + + for ( var mi = 0, miLen = materials.length; mi < miLen; mi ++ ) { + + var sourceMaterial = materials[ mi ]; + buffergeometry.addGroup( sourceMaterial.groupStart, sourceMaterial.groupCount, mi ); + + } + + mesh = ( ! isLine ? new THREE.Mesh( buffergeometry, createdMaterials ) : new THREE.LineSegments( buffergeometry, createdMaterials ) ); + + } else { + + mesh = ( ! isLine ? new THREE.Mesh( buffergeometry, createdMaterials[ 0 ] ) : new THREE.LineSegments( buffergeometry, createdMaterials[ 0 ] ) ); + + } + + mesh.name = object.name; + + container.add( mesh ); + + } + + console.timeEnd( 'OBJLoader' ); + + return container; + + } + + }; + + return OBJLoader; + +} )(); diff --git a/client/js/Object3DUtil.js b/client/js/Object3DUtil.js new file mode 100644 index 0000000..355bade --- /dev/null +++ b/client/js/Object3DUtil.js @@ -0,0 +1,3250 @@ +'use strict'; + +var base = require('base'); +var BBox = require('geo/BBox'); +var Colors = require('util/Colors'); +var Constants = require('Constants'); +var GeometryUtil = require('geo/GeometryUtil'); +var Materials = require('materials/Materials'); +var RNG = require('math/RNG'); +var _ = require('util'); + +var Object3DUtil = {}; +Object3DUtil.MaterialsAll = 1; +Object3DUtil.MaterialsCompatible = 2; +Object3DUtil.MaterialsAllNonRecursive = 3; + +Object3DUtil.OutNormals = Object.freeze([ + new THREE.Vector3(-1, 0, 0), + new THREE.Vector3(+1, 0, 0), + new THREE.Vector3(0, -1, 0), + new THREE.Vector3(0, +1, 0), + new THREE.Vector3(0, 0, -1), + new THREE.Vector3(0, 0, +1) +]); +Object3DUtil.InNormals = Object.freeze([ + new THREE.Vector3(+1, 0, 0), + new THREE.Vector3(-1, 0, 0), + new THREE.Vector3(0, +1, 0), + new THREE.Vector3(0, -1, 0), + new THREE.Vector3(0, 0, +1), + new THREE.Vector3(0, 0, -1) +]); +Object3DUtil.FaceCenters01 = Object.freeze([ + new THREE.Vector3(0.0, 0.5, 0.5), + new THREE.Vector3(1.0, 0.5, 0.5), + new THREE.Vector3(0.5, 0.0, 0.5), + new THREE.Vector3(0.5, 1.0, 0.5), + new THREE.Vector3(0.5, 0.5, 0.0), + new THREE.Vector3(0.5, 0.5, 1.0) +]); +Object3DUtil.OppositeFaces = Object.freeze([1,0,3,2,5,4]); +// Rotation +Object3DUtil.PlaneToFaceRotationParams = Object.freeze([ + { axis: new THREE.Vector3(0, 1, 0), angle: Math.PI / 2 }, + { axis: new THREE.Vector3(0, 1, 0), angle: Math.PI / 2 }, + { axis: new THREE.Vector3(1, 0, 0), angle: Math.PI / 2 }, + { axis: new THREE.Vector3(1, 0, 0), angle: Math.PI / 2 }, + null, // { axis: new THREE.Vector3(0,0,1), angle: 0 }, + null //{ axis: new THREE.Vector3(0,0,1), angle: 0 } +]); + +// Set the node material, keeping multimaterial +function setNodeMaterial(node, material, materialIndex) { + if (!node.userData.origMaterial) { + node.userData.origMaterial = node.material; + } + if (node.material instanceof THREE.MultiMaterial) { + node.material = node.material.clone(); + if (materialIndex !== undefined) { + var i = materialIndex; + if (i < 0 || i >= node.material.materials.length) { + console.warn('Invalid materialIndex ' + materialIndex + ' for node'); + console.log(node); + return false; + } + node.material.materials[i] = material; + } else { + for (var i = 0; i < node.material.materials.length; i++) { + node.material.materials[i] = material; + } + } + } else { + node.material = material; + } + return true; +} + +Object3DUtil.setMaterial = function (object3D, materialOrMaterialFn, materialsToSet, saveOldMaterial, filterMeshFn) { + if (!materialsToSet) { + materialsToSet = Object3DUtil.MaterialsCompatible; + } + var skippedMeshes = 0; + var totalMeshes = 0; + var nonrecursive = materialsToSet === Object3DUtil.MaterialsAllNonRecursive; + Object3DUtil.traverseMeshes(object3D, + nonrecursive, + function (node) { + var material = (typeof materialOrMaterialFn === 'function')? + materialOrMaterialFn(node) : materialOrMaterialFn; + var applyMaterial = !!material; + if (filterMeshFn) { + applyMaterial = filterMeshFn(node, material); + } + if (applyMaterial && materialsToSet === Object3DUtil.MaterialsCompatible) { + if (material.map) { + if (!node.material.map) { + applyMaterial = false; + } + } + } + if (applyMaterial) { + if (saveOldMaterial) { + if (node.origMaterials) { + node.origMaterials.push(node.material); + } else { + node.origMaterials = [node.material]; + } + } + // node.material = material; + if (material instanceof THREE.Color) { + // copy material and just set color + var m = node.material.clone(); + m.color = material; + node.material = m; + } else { + node.material = material; + } + } else { + skippedMeshes++; + } + totalMeshes++; + }); + if (skippedMeshes) { + // console.log('Material not applied to all meshes: skipped ' + skippedMeshes + '/' + totalMeshes); + // console.log('material', materialOrMaterialFn, materialsToSet); + // console.log('node', object3D); + } + return { total: totalMeshes, skipped: skippedMeshes }; +}; + +Object3DUtil.revertMaterials = function (object3D, nonrecursive, fullRevert) { + var skippedMeshes = 0; + var totalMeshes = 0; + Object3DUtil.traverseMeshes(object3D, + nonrecursive, + function (node) { + if (node.origMaterials && node.origMaterials.length > 0) { + node.material = node.origMaterials.pop(); + if (fullRevert) { + while (node.origMaterials.length > 0) { + node.material = node.origMaterials.pop(); + } + } + } else { + skippedMeshes++; + } + totalMeshes++; + }); + return { total: totalMeshes, skipped: skippedMeshes }; +}; + +Object3DUtil.setTransparency = function (object3D, transparency) { + object3D.traverse(function (node) { + if (node instanceof THREE.Mesh) { + if (node.material) { + Object3DUtil.setMaterialOpacity(node.material, 1.0 - transparency); + } + } + }); +}; + +Object3DUtil.setDoubleSided = function (object3D) { + object3D.traverse(function (node) { + if (node.material) { + node.material.side = THREE.DoubleSide; + if (node.material.materials) { + for (var iMat = 0; iMat < node.material.materials.length; iMat++) { + node.material.materials[iMat].side = THREE.DoubleSide; + } + } + } + }); +}; + +Object3DUtil.countMirroringTransforms = function (object3D) { + var numFlips = 0; + object3D.traverseAncestors(function (node) { + var s = node.scale; + if (s.x * s.y * s.z < 0) { numFlips++; } + }); + return numFlips; +}; + +// Flip normals/face vertices for mirrored geometry +Object3DUtil.flipForMirroring = function (object3D) { + // console.time('flipNormals'); + object3D.traverse(function (node) { + if (node instanceof THREE.Mesh) { + if (node.geometry) { + var geo = node.geometry; + GeometryUtil.flipForMirroring(geo); + } + } + }); + // console.timeEnd('flipNormals'); +}; + +Object3DUtil.setMaterialOpacity = function (material, opacity) { + Materials.setMaterialOpacity(material, opacity); +}; + +Object3DUtil.setDepthWrite = function (object3D, flag) { + Object3DUtil.processMaterial(object3D, function (material) { + material.depthWrite = flag; + }); +}; + +Object3DUtil.processMaterial = function (object3D, callback) { + if (object3D instanceof THREE.Object3D) { + object3D.traverse(function (node) { + if (node instanceof THREE.Mesh) { + if (node.material) { + Object3DUtil.processMaterial(node.material, callback); + } + } + }); + } else if (object3D instanceof THREE.MultiMaterial) { + var material = object3D; + for (var i = 0; i < material.materials.length; i++) { + Object3DUtil.processMaterial(material.materials[i], callback); + } + } else if (object3D instanceof THREE.Material) { + callback(object3D); + } +}; + +Object3DUtil.createMaterial = function (params) { + return Materials.createMaterial(params); +}; + +Object3DUtil.applyMaterialMappings = function (object3D, materialMappings) { + console.log(materialMappings); + var materials = {}; + for (var id in materialMappings.materials) { + if (materialMappings.materials.hasOwnProperty(id)) { + var mat = materialMappings.materials[id]; + if (!mat.replaced) { + materials[id] = Object3DUtil.createMaterial(mat.material); + } + } + } + var meshes = {}; + for (var id in materialMappings.meshes) { + if (materialMappings.meshes.hasOwnProperty(id)) { + var mesh = materialMappings.meshes[id]; + meshes[mesh.name] = materials[mesh.materialId]; + } + } + var skippedMeshes = 0; + var totalMeshes = 0; + object3D.traverse(function (node) { + if (node instanceof THREE.Mesh) { + if (node.name) { + var material = meshes[node.name]; + if (!material) { + // hack to see if we replace the node specific name, we can get a match + var newname = node.name.replace(/.*-/, 'mesh'); + material = meshes[newname]; + } + if (material) { + node.material = material; + } else { + skippedMeshes++; + } + } + totalMeshes++; + } + }); + if (skippedMeshes) { + console.log('Material not applied to all meshes: skipped ' + skippedMeshes + '/' + totalMeshes); + } + return { total: totalMeshes, skipped: skippedMeshes }; +}; + +Object3DUtil.applyRandomMaterials = function (object3D, nonrecursive) { + var id = 0; + return Object3DUtil.applyMaterials(object3D, + function (mesh) { + return Object3DUtil.getSimpleFalseColorMaterial(id++); + }, + nonrecursive); +}; + +Object3DUtil.applyIndexedMaterials = function (object3D, nonrecursive) { + return Object3DUtil.applyMaterials(object3D, + function (mesh) { + var id = mesh.userData.index; + return Object3DUtil.getSimpleFalseColorMaterial(id); + }, + nonrecursive); +}; + +Object3DUtil.highlightMeshes = function (object3D, meshIndices, material, useIndexedMaterial) { + function getMaterial(i) { + if (material) { + return material; + } else if (useIndexedMaterial) { + return Object3DUtil.getSimpleFalseColorMaterial(i); + } else { + return Object3DUtil.getSimpleFalseColorMaterial(0); + } + } + + return Object3DUtil.applyMaterials(object3D, + function (mesh) { + if (meshIndices.length) { + for (var j = 0; j < meshIndices.length; j++) { + if (mesh.userData.index === meshIndices[j]) { + return getMaterial(mesh.userData.index); + } + } + return Object3DUtil.ClearMat; + } else if (mesh.userData.index === meshIndices) { + return getMaterial(mesh.userData.index); + } else { + return Object3DUtil.ClearMat; + } + }, + true); +}; + +Object3DUtil.applyPartMaterial = function (part, material, nonrecursive, keepMultiMaterial) { + if (part instanceof THREE.Object3D) { + Object3DUtil.applyMaterial(part, material, nonrecursive, keepMultiMaterial); + } else if (part instanceof Array) { + for (var i = 0; i < part.length; i++) { + Object3DUtil.applyPartMaterial(part[i], material, nonrecursive, keepMultiMaterial); + } + } else { + var node = part['node']; + var materialIndex = part['materialIndex']; + var materialApplied = true; + if (node) { + if (materialIndex !== undefined) { + if (node instanceof THREE.Mesh) { + materialApplied = setNodeMaterial(node, material, materialIndex); + } + } else { + Object3DUtil.applyPartMaterial(node, material, nonrecursive, keepMultiMaterial); + materialApplied = true; + } + } + if (!materialApplied) { + console.warn('Cannot apply material to part'); + console.log(part); + } + } +}; + +Object3DUtil.applyMaterial = function (object3D, material, nonrecursive, keepMultiMaterial) { + return Object3DUtil.applyMaterials(object3D, + function (mesh) { + return material; + }, + nonrecursive, keepMultiMaterial); +}; + +Object3DUtil.applyMaterials = function (object3D, getMaterialCallback, nonrecursive, keepMultiMaterial) { + var skippedMeshes = 0; + var totalMeshes = 0; + Object3DUtil.traverseMeshes(object3D, + nonrecursive, + function (node) { + var material = getMaterialCallback(node); + if (material) { + if (keepMultiMaterial) { + setNodeMaterial(node, material); + } else { + node.material = material; + } + } else { + skippedMeshes++; + } + totalMeshes++; + }); + if (skippedMeshes) { + console.log('Material not applied to all meshes: skipped ' + skippedMeshes + '/' + totalMeshes); + } + return {total: totalMeshes, skipped: skippedMeshes}; +}; + +Object3DUtil.detachFromParent = function (object3D, scene) { + // Detach from parent while keeping same world transform + if (object3D.parent) { + Object3DUtil.clearCache(object3D.parent); + object3D.parent.updateMatrixWorld(); + if (scene) { + scene.updateMatrixWorld(); + } + + var objWorldTransform = new THREE.Matrix4(); + objWorldTransform.copy(object3D.matrixWorld); + object3D.parent.remove(object3D); + + var objMinv = new THREE.Matrix4(); + objMinv.getInverse(object3D.matrix); + var matrix = new THREE.Matrix4(); + matrix.multiplyMatrices(objWorldTransform, objMinv); + + // Add to scene... + if (scene) { + var sceneMinv = new THREE.Matrix4(); + sceneMinv.getInverse(scene.matrixWorld); + matrix.multiplyMatrices(sceneMinv, matrix); + object3D.applyMatrix(matrix); + object3D.matrixWorldNeedsUpdate = true; + scene.add(object3D); + } + } +}; + +Object3DUtil.attachToParent = function (object3D, parent, scene) { + // Attach to parent while keeping same world transform + if (object3D.parent === parent) return; + if (parent) { + parent.updateMatrixWorld(); + object3D.updateMatrixWorld(); + + var objWorldTransform = new THREE.Matrix4(); + objWorldTransform.copy(object3D.matrixWorld); + var parentMinv = new THREE.Matrix4(); + parentMinv.getInverse(parent.matrixWorld); + var objMinv = new THREE.Matrix4(); + objMinv.getInverse(object3D.matrix); + + var matrix = new THREE.Matrix4(); + matrix.multiplyMatrices(parentMinv, objWorldTransform); + matrix.multiplyMatrices(matrix, objMinv); + object3D.applyMatrix(matrix); + object3D.matrixWorldNeedsUpdate = true; + + parent.add(object3D); + Object3DUtil.clearCache(parent); + } else { + Object3DUtil.detachFromParent(object3D, scene); + } +}; + +Object3DUtil.setCastShadow = function (object3D, flag) { + object3D.traverse(function (node) { + if (node.castShadow != undefined) { + //console.log('castShadow'); + node.castShadow = flag; + } + }); +}; + +Object3DUtil.setReceiveShadow = function (object3D, flag) { + object3D.traverse(function (node) { + if (node.receiveShadow != undefined) { + //console.log('receiveShadow'); + node.receiveShadow = flag; + } + }); +}; + +Object3DUtil.computeVertexMeanLocal = function (root, transform) { + root.updateMatrixWorld(); + var modelInverse = new THREE.Matrix4(); + modelInverse.getInverse(root.matrixWorld); + if (transform) { + var m = new THREE.Matrix4(); + m.multiplyMatrices(transform, modelInverse); + return Object3DUtil.computeVertexMean(root, m); + } else { + return Object3DUtil.computeVertexMean(root, modelInverse); + } +}; + +Object3DUtil.computeVertexMean = function (root, transform) { + var agg = new THREE.Vector3(); + var n = 0; + Object3DUtil.traverseMeshes(root, false, function(mesh) { + GeometryUtil.forFaceVerticesWithTransform(mesh.geometry, transform, function(v) { + agg.add(v); + n++; + }); + }); + if (n > 0) { + agg.multiplyScalar(1/n); + } + console.log('Computed mean vertex: ' + JSON.stringify(agg) + ', nvertices: ' + n); + return agg; +}; + +Object3DUtil.getBoundingBox = function (objects, force) { + if (Array.isArray(objects)) { + var bbox = new BBox(); + for (var i = 0; i < objects.length; i++) { + bbox.includeBBox(Object3DUtil.__getBoundingBox(objects[i], force)); + } + return bbox; + } else { + return Object3DUtil.__getBoundingBox(objects, force); + } +}; + +Object3DUtil.__getBoundingBox = function (root, force) { + // Have cached world bounding box + //var modelInstance = Object3DUtil.getModelInstance(root); + if (!root.cached) { + root.cached = {}; + } + if (!root.cached.worldBoundingBox || force/* || !modelInstance */) { + root.cached.worldBoundingBox = Object3DUtil.computeBoundingBox(root); + //console.log(root.cached.worldBoundingBox); + } else { + //console.log("Recompute not needed"); + } + return root.cached.worldBoundingBox; +}; + +Object3DUtil.computeBoundingBoxLocal = function (root, transform) { + root.updateMatrixWorld(); + var modelInverse = new THREE.Matrix4(); + modelInverse.getInverse(root.matrixWorld); + if (transform) { + var m = new THREE.Matrix4(); + m.multiplyMatrices(transform, modelInverse); + return Object3DUtil.computeBoundingBox(root, m); + } else { + return Object3DUtil.computeBoundingBox(root, modelInverse); + } +}; + +Object3DUtil.computeBoundingBox = function (root, transform, filter) { + var bbox = new BBox(); + //console.time("computeBoundingBox"); + //var start = Date.now(); + bbox.includeObject3D(root, transform, filter); + //var end = Date.now(); + //console.log("Get bounding box took " + (end-start) + " ms"); + //console.timeEnd("computeBoundingBox"); + return bbox; +}; + +Object3DUtil.getBoundingBoxDims = function (model, bb) { + if (!bb) bb = Object3DUtil.getBoundingBox(model); + var bbSize = new THREE.Vector3(); + bbSize.subVectors(bb.max, bb.min); + return bbSize; +}; + +Object3DUtil.getSizeByOptions = function () { + return ['height', 'length', 'width', 'max', 'volumeCubeRoot', 'diagonal']; +}; + +Object3DUtil.convertBbDimsToSize = function (bbDims, sizeBy) { + var size; + if (bbDims instanceof THREE.Vector3) { + } else if (bbDims instanceof Array) { + bbDims = new THREE.Vector3(bbDims[0], bbDims[1], bbDims[2]); + } else { + console.error('Unsupported bbDims type'); + return undefined; + } + switch (sizeBy) { + case 'height': + size = bbDims.z; + break; + case 'length': + size = bbDims.y; + break; + case 'width': + size = bbDims.x; + break; + case 'max': + size = Math.max(bbDims.x, bbDims.y, bbDims.z); + break; + case 'diagonal': + size = bbDims.length(); + break; + case 'volumeCubeRoot': + size = bbDims.x * bbDims.y * bbDims.z; + size = Math.pow(size, 1 / 3); + break; + default: + console.error('Unknown sizeBy ' + size); + } + return size; +}; + +Object3DUtil.getObjectStats = function(object3D, includeChildModelInstance) { + var nverts = 0; + var nfaces = 0; + var nmeshes = 0; + Object3DUtil.traverseMeshes(object3D, !includeChildModelInstance, function(mesh) { + nverts += GeometryUtil.getGeometryVertexCount(mesh.geometry); + nfaces += GeometryUtil.getGeometryFaceCount(mesh.geometry); + nmeshes += 1; + }); + return { nverts: nverts, nfaces: nfaces, nmeshes: nmeshes }; +}; + +Object3DUtil.getSurfaceArea = function(object3D, opts) { + opts = opts || {}; + var includeChildModelInstance = opts.includeChildModelInstance; + var transform = opts.transform; + var meshFilter = opts.meshFilter; + var triFilter = opts.triFilter; + object3D.updateMatrixWorld(); + var area = 0; + Object3DUtil.traverseMeshes(object3D, !includeChildModelInstance, function(mesh) { + if (!meshFilter || meshFilter(mesh)) { + var t = mesh.matrixWorld; + if (transform) { + t = transform.clone(); + t.multiply(mesh.matrixWorld); + } + area += GeometryUtil.getSurfaceAreaFiltered(mesh.geometry, t, triFilter); + } + }); + return area; +}; + +/** + * Takes an object3D and rotates so that its two vectors front and up align with targetUp and targetFront. + * Assumptions: objectUp perpendicular to objectFront, targetUp perpendicular to targetFront. + * @param object3D Object to align + * @param objectUp Object's semantic up vector + * @param objectFront Object's semantic front vector + * @param targetUp Target up vector + * @param targetFront Target front vector + */ +Object3DUtil.alignToUpFrontAxes = function (object3D, objectUp, objectFront, targetUp, targetFront) { + Object3DUtil.alignAxes(object3D, objectUp, objectFront, targetUp, targetFront); +}; + +/** + * Takes an object3D and rotates so that its two vectors u and v align with u and v. + * Assumptions: both sets of u and v are perpendicular. + * @param object3D Object to align + * @param objU Object's first vector + * @param objV Object's second vector + * @param tgtU Target first vector + * @param tgtV Target second vector + */ +Object3DUtil.alignAxes = function (object3D, objU, objV, tgtU, tgtV) { + // Unapply existing rotations (does this work? does object position end up not quite what we want...?) + object3D.rotation.set(0, 0, 0); + object3D.updateMatrix(); + var transform = Object3DUtil.getAlignmentMatrix(objU, objV, tgtU, tgtV); + // Apply this transform to matrix + object3D.applyMatrix(transform); + object3D.matrixWorldNeedsUpdate = true; // make sure matrixWorldNeedsUpdate is set + Object3DUtil.clearCache(object3D); +}; + +/** + * Returns matrix to align from objectUp/objectFront to targetUp/targetFront + * Assumptions: objectUp perpendicular to objectFront, targetUp perpendicular to targetFront. + * @param objectUp Object's semantic up vector + * @param objectFront Object's semantic front vector + * @param targetUp Target up vector + * @param targetFront Target front vector + */ +Object3DUtil.getAlignmentMatrix = function (objectUp, objectFront, targetUp, targetFront) { + // Figure out what transform to apply to matrix + var objM = Object3DUtil.axisPairToOrthoMatrix(objectUp, objectFront); + var targetM = Object3DUtil.axisPairToOrthoMatrix(targetUp, targetFront); + var transform = new THREE.Matrix4(); + var objMinv = new THREE.Matrix4(); + objMinv.getInverse(objM); + transform.multiplyMatrices(targetM, objMinv); + return transform; +}; + +/** + * Returns matrix to align from objectUp/objectFront to targetUp/targetFront + * Assumptions: objectUp perpendicular to objectFront, targetUp perpendicular to targetFront. + * @param objectUp Object's semantic up vector + * @param objectFront Object's semantic front vector + * @param targetUp Target up vector + * @param targetFront Target front vector + */ +Object3DUtil.getAlignmentQuaternion = function (objectUp, objectFront, targetUp, targetFront) { + var m = Object3DUtil.getAlignmentMatrix(objectUp, objectFront, targetUp, targetFront); + var position = new THREE.Vector3(); + var scale = new THREE.Vector3(); + var quaternion = new THREE.Quaternion(); + m.decompose( position, quaternion, scale ); + return quaternion; +}; + +Object3DUtil.axisPairToOrthoMatrix = function (_v1, _v2) { + // Let's make a copy so we don't change the incoming vectors + var v1 = new THREE.Vector3(); + v1.copy(_v1); + v1.normalize(); + var v2 = new THREE.Vector3(); + v2.copy(_v2); + v2.normalize(); + var v3 = new THREE.Vector3(); + v3.crossVectors(v1, v2); + + var m = new THREE.Matrix4(); + + m.set( + v1.x, v2.x, v3.x, 0, + v1.y, v2.y, v3.y, 0, + v1.z, v2.z, v3.z, 0, + 0, 0, 0, 1 + ); + + return m; +}; + +/** + * Takes the rotation for a rotated object3D that is aligned with targetUp and targetFront and returns the + * objectUp and objectFront that is needed to achieve that alignment + * Assumptions: targetUp perpendicular to targetFront. + * @param rotation Rotation of aligned object + * @param targetUp Target up vector + * @param targetFront Target front vector + * @param epsilon Epsilon to use to snap to integers + * @return "up": Object's semantic up vector + * @return "front": Object's semantic front vector + */ +Object3DUtil.getObjUpFrontAxes = function (rotation, targetUp, targetFront, epsilon) { + var targetM = Object3DUtil.axisPairToOrthoMatrix(targetUp, targetFront); + var m = new THREE.Matrix4(); + if (rotation instanceof THREE.Vector3) { + m.makeRotationFromEuler(new THREE.Euler(rotation.x, rotation.y, rotation.z)); + } else if (rotation instanceof THREE.Quaternion) { + m.makeRotationFromQuaternion(rotation); + } + var mInv = new THREE.Matrix4(); + mInv.getInverse(m); + var objM = new THREE.Matrix4(); + objM.multiplyMatrices(mInv, targetM); + var up = new THREE.Vector3(); + up.setFromMatrixColumn(objM, 0); + up = Object3DUtil.snapToInteger(up, epsilon); + var front = new THREE.Vector3(); + front.setFromMatrixColumn(objM, 1); + front = Object3DUtil.snapToInteger(front, epsilon); + return { 'up': up, 'front': front }; +}; + +Object3DUtil.getRotationForOrientingBBFace = function (unorientedBbFaceIndex, targetBbfaceIndex) { + // Get rotation matrix that takes the unorientedBbFaceIndex to be oriented in world space as the bbfaceIndex + var r = new THREE.Matrix3(); + if (unorientedBbFaceIndex !== targetBbfaceIndex) { + if (unorientedBbFaceIndex >= 0 && targetBbfaceIndex >= 0) { + console.debug('Need to orient ' + unorientedBbFaceIndex + ' to ' + targetBbfaceIndex); + if (targetBbfaceIndex !== Constants.BBoxFaces.BOTTOM && targetBbfaceIndex !== Constants.BBoxFaces.TOP && + unorientedBbFaceIndex !== Constants.BBoxFaces.BOTTOM && unorientedBbFaceIndex !== Constants.BBoxFaces.TOP) { + r = Object3DUtil.getAlignmentMatrix( + Object3DUtil.OutNormals[Constants.BBoxFaces.TOP], + Object3DUtil.OutNormals[unorientedBbFaceIndex], + Object3DUtil.OutNormals[Constants.BBoxFaces.TOP], + Object3DUtil.OutNormals[targetBbfaceIndex] + ); + } else { + r = Object3DUtil.getAlignmentMatrix( + Object3DUtil.OutNormals[unorientedBbFaceIndex], + Object3DUtil.OutNormals[(unorientedBbFaceIndex + 2) % 6], + Object3DUtil.OutNormals[targetBbfaceIndex], + Object3DUtil.OutNormals[(targetBbfaceIndex + 2) % 6] + ); + } + } else { + if (unorientedBbFaceIndex < 0) { + console.warn('Invalid unorientedBbFaceIndex: ' + unorientedBbFaceIndex); + } + if (targetBbfaceIndex < 0) { + console.warn('Invalid targetBbfaceIndex: ' + targetBbfaceIndex); + } + } + } + return r; +}; + +Object3DUtil.clearTransform = function(object3D) { + object3D.rotation.set(0, 0, 0); + object3D.scale.set(1, 1, 1); + object3D.position.set(0, 0, 0); + object3D.updateMatrix(); + Object3DUtil.clearCache(object3D); +}; + +Object3DUtil.normalize = function (object3D, alignmentMatrix, scaleVector) { + // Unapply existing rotations (does this work? does object position end up not quite what we want...?) + object3D.rotation.set(0, 0, 0); + object3D.scale.set(1, 1, 1); + object3D.position.set(0, 0, 0); + object3D.updateMatrix(); + var transform = alignmentMatrix; + // Apply this transform to matrix + object3D.applyMatrix(transform); + object3D.updateMatrix(); + object3D.matrixWorldNeedsUpdate = true; + + // Get bounding box... + var parentMatrixWorldInv; + if (object3D.parent) { + object3D.parent.updateMatrixWorld(); + parentMatrixWorldInv = new THREE.Matrix4(); + parentMatrixWorldInv.getInverse(object3D.parent.matrixWorld); + } + + if (scaleVector) { + object3D.scale.copy(scaleVector); + } + var bb = Object3DUtil.computeBoundingBox(object3D, parentMatrixWorldInv); + // Scale to be unit? +// var dims = bb.dimensions(); +// var maxDim = Math.max( dims.x, dims.y, dims.z ); +// object3D.scale.multiplyScalar(1.0/maxDim); +// bb = Object3DUtil.computeBoundingBox(object3D, parentMatrixWorldInv); + + var shift = new THREE.Vector3(); + shift.addVectors(bb.min, bb.max); + shift.multiplyScalar(-0.5); + + // Place object in center + object3D.position.copy(shift); + + object3D.updateMatrix(); + Object3DUtil.clearCache(object3D); +}; + +Object3DUtil.setChildAttachmentPoint = function (parent, child, p, pointCoordFrame) { + // Note: We want T1 * T2 = T1' T2' = T3 + // So T1' = T1 * T2 * (T2')^-1 + // For other child transforms: + // Want T1 * Tc = T1' * Tc' + // => = T1 * T2 * (T2')^-1 * Tc' + // => Tc' = T2' * (T2)^-1 * Tc + var oldModelBaseMatrixInv = new THREE.Matrix4(); + oldModelBaseMatrixInv.getInverse(child.matrix); + + var matrix = new THREE.Matrix4(); + matrix.multiplyMatrices(parent.matrix, child.matrix); + + // TODO: Should we be clearing the transform of the child here? + if (pointCoordFrame === 'worldBB') { + var worldBB = Object3DUtil.computeBoundingBox(child); + var wp = worldBB.getWorldPosition(p); + var pm = new THREE.Matrix4(); + pm.getInverse(child.matrixWorld); + var cp = wp.applyMatrix4(pm); + + Object3DUtil.clearTransform(child); + child.position.set(-cp.x, -cp.y, -cp.z); + child.updateMatrix(); + } else if (pointCoordFrame === 'parentBB') { + // NOTE: Unchecked logic!!! + var rot = new THREE.Matrix4(); + rot.makeRotationFromQuaternion(parent.quaternion); + var modelBB = Object3DUtil.computeBoundingBoxLocal(child, rot); + var cp = modelBB.getWorldPosition(p); + + Object3DUtil.clearTransform(child); + child.quaternion.copy(parent.quaternion); + child.position.set(-cp.x, -cp.y, -cp.z); + child.updateMatrix(); + } else if (pointCoordFrame === 'childBB') { + var modelBB = Object3DUtil.computeBoundingBoxLocal(child); + var cp = modelBB.getWorldPosition(p); + + Object3DUtil.clearTransform(child); + child.position.set(-cp.x, -cp.y, -cp.z); + child.updateMatrix(); + } else { + // Assume world coordinate frame + if (pointCoordFrame !== 'child') { + console.error('setChildAttachmentPoint invalid coord frame: ' + pointCoordFrame + ', using child'); + pointCoordFrame = 'child'; + } + var wp = p.clone(); + + child.position.set(-wp.x, -wp.y, -wp.z); + child.updateMatrix(); + } + + // Convert this.modelBaseObject3D to use the specified attachmentPoint + var modelBaseObject3DInv = new THREE.Matrix4(); + modelBaseObject3DInv.getInverse(child.matrix); + matrix.multiply(modelBaseObject3DInv); + + Object3DUtil.setMatrix(parent, matrix); + child.userData['attachmentPoint'] = p; + child.userData['attachmentPointCoordFrame'] = pointCoordFrame; + + // Adjust other children of object3D + matrix.multiplyMatrices(child.matrix, oldModelBaseMatrixInv); + for (var i = 0; i < parent.children.length; i++) { + var c = parent.children[i]; + if (child !== c) { + c.applyMatrix(matrix); + c.matrixWorldNeedsUpdate = true; + } + } + //parent.updateMatrix(); + //parent.updateMatrixWorld(); +}; + +Object3DUtil.setMatrix = function (obj, matrix) { + obj.matrix = matrix; + obj.matrix.decompose(obj.position, obj.quaternion, obj.scale); + obj.matrixWorldNeedsUpdate = true; // make sure matrixWorldNeedsUpdate is set + Object3DUtil.clearCache(obj); +}; + +Object3DUtil.snapToInteger = function (v, epsilon) { + if (epsilon) { + if (v instanceof THREE.Vector3) { + return new THREE.Vector3( + Object3DUtil.snapToInteger(v.x, epsilon), + Object3DUtil.snapToInteger(v.y, epsilon), + Object3DUtil.snapToInteger(v.z, epsilon) + ); + } else if (typeof v === 'number') { + var rounded = Math.round(v); + return (Math.abs(rounded - v) < epsilon) ? rounded : v; + } + } + return v; +}; + +// Helper functions for rotating objects +Object3DUtil.rotateObject3DEuler = function (obj, delta, order, stationaryBbBoxPoint) { + obj.updateMatrixWorld(); + var bb = Object3DUtil.getBoundingBox(obj); + var base = bb.getWorldPosition(stationaryBbBoxPoint); + Object3DUtil.placeObject3D(obj, new THREE.Vector3(), stationaryBbBoxPoint); + + var q = new THREE.Quaternion(); + q.setFromEuler(new THREE.Euler(delta.x, delta.y, delta.z, order), true); + obj.quaternion.multiply(q); + obj.updateMatrix(); + + Object3DUtil.clearCache(obj); + Object3DUtil.placeObject3D(obj, base, stationaryBbBoxPoint); +}; + +Object3DUtil.rotateObject3DAboutAxis = function (obj, axis, delta, stationaryBbBoxPoint) { + //console.time('rotateObject3DAboutAxis'); + obj.updateMatrixWorld(); + var bb = Object3DUtil.getBoundingBox(obj); + var base = bb.getWorldPosition(stationaryBbBoxPoint); + Object3DUtil.placeObject3D(obj, new THREE.Vector3(), stationaryBbBoxPoint); + + var qwi = obj.getWorldQuaternion().inverse(); + var localAxis = axis.clone().applyQuaternion(qwi); + var q = new THREE.Quaternion(); + q.setFromAxisAngle(localAxis, delta); + obj.quaternion.multiply(q); + obj.updateMatrix(); + + Object3DUtil.clearCache(obj); + Object3DUtil.placeObject3D(obj, base, stationaryBbBoxPoint); + //console.timeEnd('rotateObject3DAboutAxis'); +}; + +Object3DUtil.rotateObject3DWrtBBFace = function (obj, axis, delta, bbface) { + if (bbface === undefined) { + bbface = Constants.BBoxFaceCenters.BOTTOM; + } + var stationaryBbBoxPoint = Object3DUtil.FaceCenters01[bbface]; + Object3DUtil.rotateObject3DAboutAxis(obj, axis, delta, stationaryBbBoxPoint); +}; + +Object3DUtil.rotateObject3DAboutAxisSimple = function (obj, axis, delta, isWorld) { + //console.time('rotateObject3DAboutAxisSimple'); + var localAxis = axis; + if (isWorld) { + var qwi = obj.getWorldQuaternion().inverse(); + localAxis = axis.clone().applyQuaternion(qwi); + } + + var q = new THREE.Quaternion(); + q.setFromAxisAngle(localAxis, delta); + obj.quaternion.multiplyQuaternions(obj.quaternion, q); + obj.updateMatrix(); + Object3DUtil.clearCache(obj); + //console.timeEnd('rotateObject3DAboutAxisSimple'); +}; + +// Helper functions for rotating objects +Object3DUtil.applyAlignment = function (obj, alignment, stationaryBbBoxPoint) { + obj.updateMatrixWorld(); + var bb = Object3DUtil.getBoundingBox(obj); + var base = bb.getWorldPosition(stationaryBbBoxPoint); + Object3DUtil.placeObject3D(obj, new THREE.Vector3(), stationaryBbBoxPoint); + + var transform = alignment; + // Apply this transform to matrix + obj.applyMatrix(transform); + obj.matrixWorldNeedsUpdate = true; // make sure matrixWorldNeedsUpdate is set + Object3DUtil.clearCache(obj); + + Object3DUtil.placeObject3D(obj, base, stationaryBbBoxPoint); +}; + +// Helper functions for centering and rescaling object3ds +Object3DUtil.centerAndRescaleObject3DToWorld = function (obj, targetSize, centerTo, bbBoxPointToCenter) { + targetSize = targetSize || 80; + var bb = Object3DUtil.getBoundingBox(obj); + var bbSize = bb.dimensions(); + var scale = targetSize / bbSize.length(); + obj.scale.x = obj.scale.y = obj.scale.z = scale; + obj.updateMatrix(); + centerTo = centerTo || new THREE.Vector3(); + Object3DUtil.clearCache(obj); + Object3DUtil.placeObject3D(obj, centerTo, bbBoxPointToCenter); +}; + + +/* placeObject3D takes a THREE.Object3D, a target position (THREE.Vector3), and relative position + (THREE.Vector3 in the object3D's world bbox coordinate frame with min = [0,0,0] and max = [1,1,1]) to position. + The function places the object such that the bbBoxPointToPosition when transformed to world coordinates + matches the specified position */ +Object3DUtil.placeObject3D = function (obj, targetWorldPosition, bbBoxPointToPosition) { + if (!targetWorldPosition) { + targetWorldPosition = new THREE.Vector3(0, 0, 0); + } + if (!bbBoxPointToPosition) { + bbBoxPointToPosition = new THREE.Vector3(0.5, 0.5, 0.5); + } + + var bb = Object3DUtil.getBoundingBox(obj); + var currentWorldPosition = bb.getWorldPosition(bbBoxPointToPosition); + + var shift; + if (obj.parent) { + obj.parent.updateMatrixWorld(); + var current = obj.parent.worldToLocal(currentWorldPosition.clone()); + var target = obj.parent.worldToLocal(targetWorldPosition.clone()); + shift = target.clone(); + shift.sub(current); + } else { + shift = targetWorldPosition.clone(); + shift.sub(currentWorldPosition); + } + obj.position.add(shift); + obj.updateMatrix(); + Object3DUtil.clearCache(obj); +}; + +Object3DUtil.placeObject3DByOrigin = function (obj, targetWorldPosition) { + var shift; + var currentWorldPosition = obj.localToWorld(new THREE.Vector3()); + if (obj.parent) { + obj.parent.updateMatrixWorld(); + var current = obj.parent.worldToLocal(currentWorldPosition.clone()); + var target = obj.parent.worldToLocal(targetWorldPosition.clone()); + shift = target.clone(); + shift.sub(current); + } else { + shift = targetWorldPosition.clone(); + shift.sub(currentWorldPosition); + } + obj.position.add(shift); + obj.updateMatrix(); + Object3DUtil.clearCache(obj); +}; + +/* placeObject3DByBBFaceCenter takes a THREE.Object3D, a THREE.Vector3, and an int + demarking the face of which the center will be used as a reference point for placement. + Appropriate values can be found in the Constants.BBoxFaceCenters enum. The function + places the object such that the center of the chosen face is at the given location */ +Object3DUtil.placeObject3DByBBFaceCenter = function (obj, targetWorldPosition, bboxFaceCenterIndex) { + var bbBoxPointToPosition = Object3DUtil.FaceCenters01[bboxFaceCenterIndex]; + Object3DUtil.placeObject3D(obj, targetWorldPosition, bbBoxPointToPosition); +}; + +Object3DUtil.getBBoxFaceCenter = function (obj, bboxFaceCenterIndex) { + // Clone center so it's okay in case it gets mutated. + var centers = Object3DUtil.getBoundingBox(obj).getFaceCenters(); + return centers[bboxFaceCenterIndex].clone(); +}; + +Object3DUtil.tumble = function (obj, bboxFaceCenterIndex) { + if (!obj.userData) { + obj.userData = {}; + } + var tumbleIndex = (obj.userData['tumbleIndex'] + 1) % 3; + var transform = Object3DUtil.getAlignmentMatrix( + new THREE.Vector3(1, 0, 0), new THREE.Vector3(0, 1, 0), + new THREE.Vector3(0, 1, 0), new THREE.Vector3(0, 0, 1)); + var bboxFaceCenter; + if (bboxFaceCenterIndex !== undefined) { + bboxFaceCenter = Object3DUtil.FaceCenters01[bboxFaceCenterIndex]; + } else { + // TODO: Should we have this as the default? + bboxFaceCenter = Object3DUtil.FaceCenters01[Constants.BBoxFaceCenters.BOTTOM]; + } + Object3DUtil.applyAlignment(obj, transform, bboxFaceCenter); + obj.userData['tumbleIndex'] = tumbleIndex; +}; + +Object3DUtil.rescaleObject3D = function (obj, scale) { + obj.scale.x = obj.scale.y = obj.scale.z = scale; + obj.updateMatrix(); + Object3DUtil.clearCache(obj); +}; + +Object3DUtil.rescaleObject3DToFit = function (obj, dim) { + var bbSize = Object3DUtil.getBoundingBoxDims(obj); + var scale; + if ((typeof dim) === 'number') { + scale = dim / bbSize.length(); + } else { + var scaleV = new THREE.Vector3(); + scaleV.copy(dim); + scaleV.divide(bbSize); + scale = Math.min(scaleV.x, scaleV.y, scaleV.z); + } + obj.scale.multiplyScalar(scale); + //obj.scale.x = obj.scale.y = obj.scale.z = scale; + obj.updateMatrix(); + Object3DUtil.clearCache(obj); +}; + +Object3DUtil.makeSymmetryPlane = function (bb, planeType, normal, dist, planeColor, transparency) { + var c = (planeColor !== undefined) ? planeColor : 0x0000A0; + var faceMat = new THREE.MeshPhongMaterial({ + color: c, + specular: c, + //ambient: c, + emissive: c, + side: THREE.DoubleSide, + opacity: 1 + }); + if (transparency === undefined) { + transparency = 0.6; + } + if (transparency > 0.0) { + faceMat.opacity = 1 - transparency; + faceMat.transparent = true; + } + var dims = bb.dimensions(); + var width, height, u, v; + switch (planeType) { + case 'X': + width = dims.y; + height = dims.z; + v = new THREE.Vector3(0, 0, 1); + u = new THREE.Vector3(1, 0, 0); + break; + case 'Y': + width = dims.x; + height = dims.z; + v = new THREE.Vector3(0, 0, 1); + u = new THREE.Vector3(0, 1, 0); + break; + case 'Z': + width = dims.x; + height = dims.y; + v = new THREE.Vector3(0, 1, 0); + u = new THREE.Vector3(0, 0, 1); + break; + case 'nd': + // TODO(MS): Unhack + width = 10 * dims.x; + height = 10 * dims.y; + var w = normal.clone(); + // Get random perpendicular to normal + var rand = new THREE.Vector3(RNG.global.random(), RNG.global.random(), RNG.global.random()); + rand = rand.normalize(); + var randLengthInNormalDir = rand.dot(normal); + var randPartInNormalDir = w.multiplyScalar(randLengthInNormalDir); + u = normal; + v = rand.clone(); + v.sub(randPartInNormalDir); + v.normalize(); + //v = new THREE.Vector3(); + //v = v.crossVectors(normal, u); + //console.log(normal); + //console.log(u); + //console.log(v); + break; + default: + return null; + } + + var planeU = new THREE.Vector3(0, 0, 1); + var planeV = new THREE.Vector3(0, 1, 0); + var geometryPlane = new THREE.PlaneGeometry(width, height, 1, 1); + var meshPlane = new THREE.Mesh(geometryPlane, faceMat); + Object3DUtil.alignToUpFrontAxes(meshPlane, planeU, planeV, u, v); + Object3DUtil.placeObject3D(meshPlane, bb.centroid()); + return meshPlane; +}; + +Object3DUtil.makeGrid = function (width, height, numHGridLines, numVGridLines, faceColor) { + + var c = faceColor; + if (!c) c = 0xdadada; + + var MAX_X = width / 2; + var MIN_X = 0 - (width / 2); + var MAX_Y = height / 2; + var MIN_Y = 0 - (height / 2); + + var blockSizeH = height / numHGridLines; + var blockSizeV = width / numVGridLines; + + var epsilon = 2; + + var geometryH = new THREE.Geometry(); + geometryH.vertices.push(new THREE.Vector3(MIN_X, MAX_Y, epsilon)); + geometryH.vertices.push(new THREE.Vector3(MAX_X, MAX_Y, epsilon)); + + var geometryV = new THREE.Geometry(); + geometryV.vertices.push(new THREE.Vector3(MIN_X, MIN_Y, epsilon)); + geometryV.vertices.push(new THREE.Vector3(MIN_X, MAX_Y, epsilon)); + + var lineMat = new THREE.LineBasicMaterial({ + color: 0xa0a0a0, + opacity: 1 + }); + + var faceMat = new THREE.MeshBasicMaterial({ + color: c, //0x575145, + opacity: 1 + }); + var geometryPlane = new THREE.PlaneBufferGeometry(width, height, 1, 1); + var meshPlane = new THREE.Mesh(geometryPlane, faceMat); + + var object3D = new THREE.Object3D(); + + for (var iy = 0; iy <= numHGridLines; iy++) { + var lineX = new THREE.Line(geometryH, lineMat); + lineX.position.y = -iy * blockSizeH; + object3D.add(lineX); + } + for (var ix = 0; ix <= numVGridLines; ix++) { + var lineY = new THREE.Line(geometryV, lineMat); + lineY.position.x = ix * blockSizeV; + object3D.add(lineY); + } + + object3D.add(meshPlane); + object3D.name = 'Grid'; + object3D.userData.totalWidth = width; + object3D.userData.totalHeight = height; + object3D.userData.gridWidth = blockSizeV; + object3D.userData.gridHeight = blockSizeH; + object3D.userData.gridColor = faceColor; + + return object3D; +}; + +Object3DUtil.makeAxes = function (axisLength) { + + if (!axisLength) axisLength = 1*Constants.metersToVirtualUnit; + + var axes = new THREE.Object3D(); + + //Shorten the vertex function + function v(x, y, z) { + return new THREE.Vector3(x, y, z); + } + + //Create axis (point1, point2, colour) + function createAxis(p1, p2, color) { + var line, lineGeometry = new THREE.Geometry(), + lineMat = new THREE.LineBasicMaterial({color: color, linewidth: 10}); + lineGeometry.vertices.push(p1, p2); + line = new THREE.Line(lineGeometry, lineMat); + axes.add(line); + } + + createAxis(v(0, 0, 0), v(axisLength, 0, 0), 0xFF0000); + createAxis(v(0, 0, 0), v(0, axisLength, 0), 0x00FF00); + createAxis(v(0, 0, 0), v(0, 0, axisLength), 0x0000FF); + + return axes; +}; + +Object3DUtil.makeGround = function (width, height, color) { + var geometry = new THREE.PlaneBufferGeometry(width, height); + //geometry.verticesArray = geometry.attributes['position'].array; + geometry.computeFaceNormals(); + var planeMaterial = new THREE.MeshBasicMaterial({ color: color || 0xffffff }); + //planeMaterial.ambient = planeMaterial.color; + //planeMaterial.side = THREE.DoubleSide; + var ground = new THREE.Mesh(geometry, planeMaterial); + ground.castShadow = false; + ground.receiveShadow = true; + + var object3D = new THREE.Object3D(); + object3D.add(ground); + + Object3DUtil.alignToUpFrontAxes(object3D, new THREE.Vector3(0, 0, 1), new THREE.Vector3(1, 0, 0), Constants.worldUp, Constants.worldFront); + + return object3D; +}; + +Object3DUtil.makePickingPlane = function (width, height) { + var geometry = new THREE.PlaneBufferGeometry(width, height); + geometry.computeFaceNormals(); + var planeMaterial = new THREE.MeshBasicMaterial({ color: 0x000000, side: THREE.DoubleSide, visible: false }); + var ground = new THREE.Mesh(geometry, planeMaterial); + ground.name = 'PickingPlane'; + ground.userData.width = width; + ground.userData.heigth = height; + Object3DUtil.alignToUpFrontAxes(ground, new THREE.Vector3(0, 0, 1), new THREE.Vector3(1, 0, 0), Constants.worldUp, Constants.worldFront); + return ground; +}; + +Object3DUtil.createGroundAndFog = function (scene) { + var geometry = new THREE.PlaneBufferGeometry(100, 100); + var planeMaterial = new THREE.MeshPhongMaterial({color: 0xffdd99}); + planeMaterial.color.offsetHSL(0, 0, 0.9); + //planeMaterial.ambient = planeMaterial.color; + var ground = new THREE.Mesh(geometry, planeMaterial); + ground.scale.set(100, 100, 100); + ground.castShadow = false; + ground.receiveShadow = true; + scene.add(ground); + + scene.fog = new THREE.Fog(0xffaa55, 1000, 3000); + scene.fog.color.offsetHSL(0.02, -0.15, -0.65); +}; + +Object3DUtil.getBBoxForModelInstanceArray = function (models) { + var r = new BBox(); + for (var i = 0; i < models.length; i++) { + r.includeObject3D(models[i].model.object3D); + } + r.bboxDims = r.dimensions(); + r.width = r.bboxDims.x; + r.height = r.bboxDims.z; + r.depth = r.bboxDims.y; + + return r; +}; + +Object3DUtil.getColor = function (value) { + return Colors.toColor(value); +}; + +Object3DUtil.createColor = function (id, palette) { + return Colors.createColor(id, palette || Constants.defaultPalette); +}; + +Object3DUtil.getBasicMaterial = function (color, alpha) { + return Materials.getBasicMaterial(color, alpha); +}; + +Object3DUtil.getMaterial = function (mat) { + return Materials.toMaterial(mat); +}; + +Object3DUtil.getStandardMaterial = function (color, alpha) { + return Materials.getStandardMaterial(color, alpha); +}; + +Object3DUtil.getSimpleFalseColorMaterial = function (id, color, palette) { + return Materials.getSimpleFalseColorMaterial(id, color, palette); +}; + +Object3DUtil.addSimple2LightSetup = function (scene, position, doShadowMap) { + position = position || new THREE.Vector3(-100, 100, 100); + var ambient = new THREE.AmbientLight(0x050505); + + var light0 = new THREE.PointLight(0xdadacd, 0.85); + var p0 = new THREE.Vector3(); + p0.copy(position); + light0.position.copy(p0); + var light1 = new THREE.PointLight(0x030309, 0.03); + var p1 = new THREE.Vector3(); + p1.copy(position); + p1.negate(); + light1.position.copy(p1); + + if (doShadowMap) { + var light = Object3DUtil.createSpotLightShadowMapped(1000); + light.position.copy(light0.position); + light.onlyShadow = true; + scene.add(light); + } + + scene.add(ambient); + scene.add(light0); + scene.add(light1); +}; + +Object3DUtil.createSpotLightShadowMapped = function (lightBoxSize) { + var light = new THREE.SpotLight(0xffffff, 1, 0, Math.PI, 1); + light.target.position.set(0, 0, 0); + + light.castShadow = true; + + light.shadowCameraNear = 1; + light.shadowCameraFar = lightBoxSize; + light.shadowCameraRight = lightBoxSize; + light.shadowCameraLeft = -lightBoxSize; + light.shadowCameraTop = lightBoxSize; + light.shadowCameraBottom = -lightBoxSize; + light.shadowCameraFov = 50; + + light.shadowBias = 0.0001; + light.shadowDarkness = 0.5; + + light.shadowMapWidth = 2048; + light.shadowMapHeight = 2048; + + light.shadowCameraVisible = true; + + return light; +}; + +Object3DUtil.getTotalDims = function (models) { + + var total = new THREE.Vector3(0, 0, 0); + + for (var k = 0; k < models.length; k++) { + var dims = models[k].getBBox().dimensions(); + total.add(dims); + } + + return total; +}; + +Object3DUtil.getSortedModels = function (models, sizeBy) { + if (!sizeBy) sizeBy = 'height'; + + var sizes = []; + for (var k = 0; k < models.length; k++) { + var dims = models[k].getBBox().dimensions(); + sizes[k] = Object3DUtil.convertBbDimsToSize(dims, sizeBy); + } + var sortedIndices = _.sortWithIndices(sizes).sortedIndices; + var sortedModels = []; + for (var i = 0; i < sortedIndices.length; i++) { + sortedModels[i] = models[sortedIndices[i]]; + } + return sortedModels; +}; + +Object3DUtil.lineup = function (models, params) { + params = params || {}; + var y = params.y || 0; + // Spacing between objects + var objectSpacing = params.objectSpacing || 0.00; + // Ratio for computing spacing between objects (as parameter of total width) + var objectSpacingRatio = params.objectSpacingRatio || 0.05; + + // Initialize + var l = {}; + l.nModels = models.length; + var bbBoxRefPoint = new THREE.Vector3(0.5, 0.5, 0); + l.widths = []; + l.heights = []; + l.depths = []; + l.maxDepth = 0; + l.medianHeight = -1; + l.sumWidth = 0; + l.sumWidthWithGaps = 0; + + // Sort models by height + var sizes = []; + for (var k = 0; k < models.length; k++) { + var dims = models[k].getBBox().dimensions(); + sizes[k] = dims.z; + } + l.sortedIndices = _.sortWithIndices(sizes).sortedIndices; + + // Loop over models and save dims + for (var i = 0; i < l.nModels; i++) { + var bbox = models[l.sortedIndices[i]].getBBox(); + var w = bbox.dimensions().x; + var d = bbox.dimensions().y; + var h = bbox.dimensions().z; + l.widths[i] = w; + l.heights[i] = h; + l.depths[i] = d; + if (d > l.maxDepth) l.maxDepth = d; + l.sumWidth += w; + } + + l.medianHeight = _.sortWithIndices(l.heights)[Math.round(models.length / 2)]; + var gapx = Math.max( l.sumWidth*objectSpacingRatio, objectSpacing ); + var sumWidthWithGaps = l.sumWidth + (l.nModels - 1)*gapx; + var epsilon = l.sumWidth * 0.01; + var startX = -sumWidthWithGaps / 2; + var currCenter = new THREE.Vector3(startX, y + l.maxDepth / 2, 0); + + // Lineup in order from left to right + for (var j = 0; j < l.nModels; j++) { + var model = models[l.sortedIndices[j]]; + var halfWidthPlus = (l.widths[j] + epsilon) / 2; + currCenter.x += halfWidthPlus; + Object3DUtil.placeObject3D(model.object3D, currCenter, bbBoxRefPoint); + currCenter.x += halfWidthPlus; + } + + return l; +}; + +Object3DUtil.matrix4ToProto = function (m) { + var array = []; + for (var j = 0; j < 16; j++) { + array.push(m.elements[j]); + } + var transform = { + rows: 4, + cols: 4, + data: array + }; + return transform; +}; + +Object3DUtil.vectorToString = function (v) { + return v.x + ',' + v.y + ',' + v.z; +}; + +Object3DUtil.quaternionToString = function (v) { + return v.x + ',' + v.y + ',' + v.z + "," + v.w; +}; + +Object3DUtil.toVector2 = function (v) { + if (v) { + if (v instanceof THREE.Vector2) { + return v; + } else if (typeof v === 'string') { + // parse 0,0 into two pieces + v = v.trim(); + if (v) { + if ((v.startsWith('[') && v.endsWith(']')) || (v.startsWith('(') && v.endsWith(')'))) { + v = v.substring(1, v.length - 1); + } + v = _.replaceAll(v, '\\,', ','); + var p = v.split(/\s*,\s*/, 2).map( function(x) { return parseFloat(x); }); + if (p.length === 2) { + return new THREE.Vector2(p[0], p[1]); + } else { + console.error('Cannot convert object to Vector2', v); + return null; + } + } + } else if (v.x != undefined && v.y != undefined) { + return new THREE.Vector2(v.x, v.y); + } else if (v.count || v.length) { + return new THREE.Vector2(v[0], v[1]); + } else { + console.error('Cannot convert object to Vector2', v); + return null; + } + } +}; + +Object3DUtil.toVector3 = function (v) { + if (v) { + if (v instanceof THREE.Vector3) { + return v; + } else if (typeof v === 'string') { + // parse 0,0,0 into three pieces + v = v.trim(); + if (v) { + if ((v.startsWith('[') && v.endsWith(']')) || (v.startsWith('(') && v.endsWith(')'))) { + v = v.substring(1, v.length - 1); + } + v = _.replaceAll(v, '\\,', ','); + var p = v.split(/\s*,\s*/, 3).map( function(x) { return parseFloat(x); }); + if (p.length === 3) { + return new THREE.Vector3(p[0], p[1], p[2]); + } else { + console.error('Cannot convert object to Vector3', v); + return null; + } + } + } else if (v.x != undefined && v.y != undefined && v.z != undefined) { + return new THREE.Vector3(v.x, v.y, v.z); + } else if (v.count || v.length) { + return new THREE.Vector3(v[0], v[1], v[2]); + } else { + console.error('Cannot convert object to Vector3', v); + return null; + } + } +}; + +Object3DUtil.toQuaternion = function (v) { + if (v) { + if (v instanceof THREE.Quaternion) { + return v; + } else if (typeof v === 'string') { + // parse 0,0,0,0 into four pieces + v = v.trim(); + if (v) { + if ((v.startsWith('[') && v.endsWith(']')) || (v.startsWith('(') && v.endsWith(')'))) { + v = v.substring(1, v.length - 1); + } + v = _.replaceAll(v, '\\,', ','); + var p = v.split(/\s*,\s*/, 4).map( function(x) { return parseFloat(x); }); + if (p.length === 3) { + return new THREE.Quaternion(p[0], p[1], p[2], p[3]); + } else { + console.error('Cannot convert object to Quaternion', v); + return null; + } + } + } else if (v.x != undefined && v.y != undefined && v.z != undefined && v.w != undefined) { + return new THREE.Quaternion(v.x, v.y, v.z, v.w); + } else if (v.count || v.length) { + return new THREE.Quaternion(v[0], v[1], v[2], v[3]); + } else { + console.error('Cannot convert object to Quaternion', v); + return null; + } + } +}; + +Object3DUtil.toBBox = function(b) { + if (b) { + if (b instanceof BBox) { + return b; + } else if (b.min && b.max) { + return new BBox(Object3DUtil.toVector3(b.min), Object3DUtil.toVector3(b.max)); + } else { + console.error('Cannot convert object to BBox', b); + return null; + } + } +} + +Object3DUtil.toBox2 = function(b) { + if (b) { + if (b instanceof THREE.Box2) { + return b; + } else if (b.min && b.max) { + return new BBox(Object3DUtil.toVector3(b.min), Object3DUtil.toVector3(b.max)); + } else { + console.error('Cannot convert object to Box2', b); + return null; + } + } +} + + +Object3DUtil.toBox3 = function(b) { + if (b) { + if (b instanceof THREE.Box3) { + return b; + } else if (b.min && b.max) { + return new BBox(Object3DUtil.toVector2(b.min), Object3DUtil.toVector2(b.max)); + } else { + console.error('Cannot convert object to Box3', b); + return null; + } + } +} + +Object3DUtil.arrayToMatrix4 = function(m, isRowMajor) { + var matrix = new THREE.Matrix4(); + if (m.length === 16) { + if (isRowMajor) { + matrix.set( + m[0], m[1], m[2], m[3], + m[4], m[5], m[6], m[7], + m[8], m[9], m[10], m[11], + m[12], m[13], m[14], m[15]); + } else { + matrix.set( + m[0], m[4], m[8], m[12], + m[1], m[5], m[9], m[13], + m[2], m[6], m[10], m[14], + m[3], m[7], m[11], m[15]); + } + } else if (m.length === 9) { + if (isRowMajor) { + matrix.set( + m[0], m[1], m[2], 0, + m[3], m[4], m[5], 0, + m[6], m[7], m[8], 0, + 0, 0, 0, 1); + } else { + matrix.set( + m[0], m[3], m[6], 0, + m[1], m[4], m[7], 0, + m[2], m[5], m[8], 0, + 0, 0, 0, 1); + } + } else { + console.warn('Invalid array length: ' + m.length); + } + return matrix; +}; + +Object3DUtil.isColinearVec2 = function(p1,p2,p3) { + var a = Math.abs((p1.y - p2.y) * (p1.x - p3.x) - (p1.y - p3.y) * (p1.x - p2.x)); + return (a < 0.00000001); +}; + +Object3DUtil.isColinearVec3 = function(p1,p2,p3) { + // Check if cross product is 0 + var v12 = new THREE.Vector3(); + v12.subVectors(p1, p2); + var v13 = new THREE.Vector3(); + v13.subVectors(p1, p3); + var z = new THREE.Vector3(); + z.crossVectors(v12, v13); + return (z.lengthSq() < 0.00000001); +}; + +Object3DUtil.stringifyReplacer = function (key, value) { + if (value instanceof THREE.Material) { + return Materials.getMaterialParams(value); + } else if (value instanceof THREE.Texture) { + return Materials.getTextureParams(value); + } else if (value instanceof THREE.Color) { + return value.getHex().toString(16); + } else { + return value; + } +}; + +Object3DUtil.toObjStr = function (prefix, v) { + var p = prefix; + if (v instanceof THREE.Vector3) { + return p + ' ' + v.x + ' ' + v.y + ' ' + v.z; + } else if (v instanceof Array) { + return p + ' ' + v.join(' '); + } else { + return null; + } +}; + + +Object3DUtil.loadTexture = function (url, mapping, onLoad, onError) { + return Materials.loadTexture({ url: url, mapping: mapping, onLoad: onLoad, onError: onError }); +}; + +// DFS traversal of node +// callback1 is applied before children are visited (children are visited only if callback1 returns true) +// callback2 is applied after children are visited +Object3DUtil.traverse = function (node, callback1, callback2) { + var processChildren = callback1(node); + if (processChildren) { + for (var i = 0, l = node.children.length; i < l; i++) { + Object3DUtil.traverse(node.children[i], callback1, callback2); + } + } + if (callback2) { + callback2(node); + } +}; + +Object3DUtil.traverseMeshes = function (object3D, nonrecursive, callback) { + Object3DUtil.traverse( + object3D, + function (node) { + if (node instanceof THREE.Mesh) { + callback(node); + return true; + } else if (node instanceof THREE.Object3D) { + if (object3D === node) return true; + else if (nonrecursive) { + // Skip if has modelInstance + if ((node.metadata && node.metadata.modelInstance) || (node.userData && node.userData.hasOwnProperty('objectIndex'))) { + return false; + } + } + } + return true; + }); +}; + +Object3DUtil.traverseVisibleMeshes = function (object3D, nonrecursive, callback) { + Object3DUtil.traverse( + object3D, + function (node) { + if (node instanceof THREE.Mesh) { + if (node.visible) { + callback(node); + return true; + } + } else if (node instanceof THREE.Object3D) { + if (object3D === node) return node.visible; + else if (nonrecursive) { + // Skip if has modelInstance + if ((node.metadata && node.metadata.modelInstance) || (node.userData && node.userData.hasOwnProperty('objectIndex'))) { + return false; + } + } + } + return node.visible; + }); +}; + +Object3DUtil.existsMesh = function (object3D, nonrecursive, callback) { + var exists = false; + Object3DUtil.traverse( + object3D, + function (node) { + if (node instanceof THREE.Mesh) { + exists = callback(node); + return !exists; + } else if (node instanceof THREE.Object3D) { + if (object3D === node) return true; + else if (nonrecursive) { + // Skip if has modelInstance + if ((node.metadata && node.metadata.modelInstance) || (node.userData && node.userData.hasOwnProperty('objectIndex'))) { + return false; + } + } + } + return !exists; + }); + return exists; +}; + +Object3DUtil.getIndexedObject3Ds = function (object3D) { + var objects = []; + Object3DUtil.traverse( + object3D, + function (node) { + if (node instanceof THREE.Object3D) { + if (node.userData && node.userData.hasOwnProperty('objectIndex')) { + objects[node.userData['objectIndex']] = node; + } + } + return true; + }); + return objects; +}; + +Object3DUtil.traverseModelInstances = function (modelInstance, callback) { + Object3DUtil.traverse( + modelInstance.object3D, + function (node) { + if (node instanceof THREE.Object3D) { + if (modelInstance.object3D === node) return true; + if (node.metadata && node.metadata.modelInstance) { + callback(node.metadata.modelInstance); + } + } + return true; + }); +}; + +Object3DUtil.isDescendantOf = function (candidate, object3D) { + var isDesc = false; + if (object3D instanceof Array) { + for (var i = 0; i < object3D.length; i++) { + isDesc = Object3DUtil.isDescendantOf(candidate, object3D[i]); + if (isDesc) { + break; + } + } + } else { + Object3DUtil.traverse( + object3D, + function (node) { + if (candidate === node) { + isDesc = true; + return false; + } else { + return true; + } + } + ); + } + return isDesc; +}; + +Object3DUtil.deepClone = function(object3D) { + // Deep clone that makes a copy of the geometry as well + var clone = object3D.clone(); + clone.traverse(function (node) { + if (node instanceof THREE.Mesh) { + var newGeom = GeometryUtil.clone(node.geometry); + node.geometry = newGeom; + } + }); + return clone; +}; + +Object3DUtil.copyObjectWithModelInstances = function (origObject, modelInstances, keepOldIndices, indexField) { + indexField = indexField || 'objectIndex'; + // Clone object + Object3DUtil.revertMaterials(origObject); + origObject.updateMatrixWorld(); + var clonedObject = origObject.clone(); + + // we want the cloned object to be detached, so set its matrix transform to its matrixWorld + // and update position, quaternion and scale so the matrix is retained. + clonedObject.matrix = clonedObject.matrixWorld.clone(); + clonedObject.matrix.decompose(clonedObject.position, clonedObject.quaternion, clonedObject.scale); + clonedObject.updateMatrixWorld(); + + // Make sure attached model instance information is properly copied as well + var clonedModelInstances = []; + Object3DUtil.traverse(clonedObject, function (node) { + if (node.userData.type === 'ModelInstance') { + var objectIndex = node.userData[indexField]; + var modelInstance = modelInstances[objectIndex].clone(node); + node.metadata = {modelInstance: modelInstance}; + + var nextIndex = (keepOldIndices)? objectIndex : clonedModelInstances.length; + modelInstance.index = nextIndex; + node.index = nextIndex; + node.userData[indexField] = nextIndex; + clonedModelInstances[nextIndex] = modelInstance; + } + return true; + }); + + return { + object: clonedObject, + modelInstances: clonedModelInstances + }; +}; + +Object3DUtil.findModelInstances = function (object3D, modelInstances, indexField) { + modelInstances = modelInstances || []; + + Object3DUtil.traverse(object3D, function (node) { + if (node.userData.type === 'ModelInstance') { + if (indexField) { + node.userData[indexField] = modelInstances.length; + } + modelInstances.push(node.metadata.modelInstance); + } + return true; + }); + + return modelInstances; +}; + +Object3DUtil.detachModelInstances = function (modelInstance, detachAll, scene) { + var modelInstances = Object3DUtil.findModelInstances(modelInstance.object3D); + var detached = []; + for (var i = 0; i < modelInstances.length; i++) { + var mi = modelInstances[i]; + if (mi.index !== modelInstance.index) { + var parent = mi.object3D.parent; + var parentInstance = Object3DUtil.getModelInstance(parent); + var detach = detachAll || parentInstance.index === mi.index; + if (detach) { + Object3DUtil.detachFromParent(mi.object3D, scene); + detached.push(mi); + } + } + } + return detached; +}; + + +Object3DUtil.clearCache = function (object3D) { + Object3DUtil.traverse( + object3D, + function (node) { + delete node.cached; + return true; + }); +}; + +Object3DUtil.dispose = function(parentObject) { + parentObject.traverse(function (node) { + if (node instanceof THREE.Mesh) { + if (node.geometry) { + node.geometry.dispose(); + } + + if (node.material) { + + if (node.material instanceof THREE.MultiMaterial) { + node.material.materials.forEach(function (mtrl, idx) { + if (mtrl.map) mtrl.map.dispose(); + if (mtrl.lightMap) mtrl.lightMap.dispose(); + if (mtrl.bumpMap) mtrl.bumpMap.dispose(); + if (mtrl.normalMap) mtrl.normalMap.dispose(); + if (mtrl.specularMap) mtrl.specularMap.dispose(); + if (mtrl.envMap) mtrl.envMap.dispose(); + + mtrl.dispose(); // disposes any programs associated with the material + }); + } + else { + if (node.material.map) node.material.map.dispose(); + if (node.material.lightMap) node.material.lightMap.dispose(); + if (node.material.bumpMap) node.material.bumpMap.dispose(); + if (node.material.normalMap) node.material.normalMap.dispose(); + if (node.material.specularMap) node.material.specularMap.dispose(); + if (node.material.envMap) node.material.envMap.dispose(); + + node.material.dispose(); // disposes any programs associated with the material + } + } + } + }); +}; + +Object3DUtil.getModelInstance = function (object3D, searchAncestors) { + if (!object3D) return; + if (object3D.metadata && object3D.metadata.modelInstance) { + return object3D.metadata.modelInstance; + } + if (searchAncestors) { + var modelInstance = undefined; + Object3DUtil.traverseAncestors(object3D, function(obj) { + if (obj.metadata && obj.metadata.modelInstance) { + modelInstance = obj.metadata.modelInstance; + return false; + } else { + return true; + } + }); + return modelInstance; + } +}; + +Object3DUtil.traverseAncestors = function(object3D, callback) { + var parent = object3D.parent; + if ( parent != null ) { + var continueTraversal = callback( parent ); + if (continueTraversal) { + Object3DUtil.traverseAncestors(parent, callback); + } + } +}; + +// Find nodes that returns true for the given filter +Object3DUtil.findNodes = function(object3D, filter) { + var nodes = []; + Object3DUtil.traverse( + object3D, + function (node) { + if (filter(node)) { + nodes.push(node); + } + return true; + }); + return nodes; +}; + +Object3DUtil.removeNodes = function(node, filter) { + var matches = Object3DUtil.findNodes(node, filter); + for (var i = 0; i < matches.length; i++) { + var match = matches[i]; + match.parent.remove(match); + } + return matches; +}; + + +// Return object with minimum distance +Object3DUtil.getMinDistanceToObjectBBoxes = function(object3Ds, points, opt) { + var minDist = Infinity; + var index = null; + //console.log('length', object3Ds.length); + for (var i = 0; i < object3Ds.length; i++) { + var o = object3Ds[i]; + var bbox = Object3DUtil.getBoundingBox(o); + var dists = _.map(points, function(point) { return bbox.distanceToPoint(point, opt); }); + //console.log('dists', dists); + var dist = _.min(dists); + if (dist < minDist) { + //console.log('dist ', dist, o.userData); + minDist = dist; + index = i; + } + } + return { dist: minDist, index: i }; +}; + +Object3DUtil.removeAllChildren = function (object3D) { + while (object3D.children.length > 0) { + object3D.remove(object3D.children[0]); + } +}; + +Object3DUtil.setVisible = function (object, visible, recursive) { + if (object) { + object.visible = visible; + if (recursive) { + object.traverse(function(x) { + x.visible = visible; + }); + } + } +}; + +Object3DUtil.setChildrenVisible = function (object, isVisible) { + if (object) { + for (var i = 0; i < object.children.length; i++) { + var c = object.children[i]; + c.visible = isVisible(c); + } + } +}; + +Object3DUtil.setState = function (object, field, value, filter) { + if (object) { + Object3DUtil.traverse(object, function (node) { + if (!filter || filter(node)) { + node.userData[field] = value; + return true; + } + }); + } +}; + +Object3DUtil.getMeshList = function (object, recursive, meshes) { + meshes = meshes || []; + Object3DUtil.traverseMeshes( + object, + !recursive, + function (mesh) { + meshes.push(mesh); + } + ); + return meshes; +}; + +Object3DUtil.getVisibleMeshList = function (object, recursive, meshes) { + meshes = meshes || []; + Object3DUtil.traverseVisibleMeshes( + object, + !recursive, + function (mesh) { + meshes.push(mesh); + } + ); + return meshes; +}; + +// Be careful when using function below.... +Object3DUtil.getMeshes = function (object, recursive) { + var meshes = { + list: [], + map: {} + }; + Object3DUtil.traverseMeshes( + object, + !recursive, + function (mesh) { + if (mesh.userData && mesh.userData.hasOwnProperty('index')) { + meshes.list[mesh.userData.index] = mesh; + } else { + meshes.list.push(mesh); + } + meshes.map[mesh.id] = mesh; + } + ); + return meshes; +}; + +Object3DUtil.findClosestBBFaceByOutNormal = function (outNorm, threshold) { + if (threshold === undefined) { + threshold = 0.99; + } + for (var i = 0; i < Object3DUtil.OutNormals.length; i++) { + var norm = Object3DUtil.OutNormals[i]; + if (outNorm.dot(norm) >= threshold) { + return i; + } + } + return -1; +}; + +Object3DUtil.findClosestBBFaceByInNormal = function (inNorm, threshold) { + if (threshold === undefined) { + threshold = 0.99; + } + for (var i = 0; i < Object3DUtil.InNormals.length; i++) { + var norm = Object3DUtil.InNormals[i]; + if (inNorm.dot(norm) >= threshold) { + return i; + } + } + return -1; +}; + +// segments is a array of segments +// Each segment can have one of the following formats: +// a. array of meshTri: [...] +// b. object with field meshTri: { meshTri: array of meshTri } +// c. object with meshTri fields: {meshIndex: x, triIndex: [...] } +// Each meshTri has following fields: {meshIndex: x, triIndex: [...] } +Object3DUtil.remeshObject = function (object, segments, material) { + // Get remesh of the object + var origMeshes = Object3DUtil.getMeshes(object); + origMeshes = origMeshes.list; + + // Clone the relevant mesh + var remeshedObj = new THREE.Object3D(); + remeshedObj.name = object.name + '-remeshed'; + for (var i = 0; i < segments.length; i++) { + var segment = segments[i]; + var meshTris = [segment]; // Default to case c) + if (segment.hasOwnProperty('meshTri')) { + // Case b + meshTris = segment['meshTri']; + } else if (segment.length) { + // Case a + meshTris = segment; + } + var componentMeshes = []; + + for (var j = 0; j < meshTris.length; j++) { + var meshTri = meshTris[j]; + var meshIndex = meshTri.meshIndex; + var origMesh = (meshTri.mesh) ? meshTri.mesh : origMeshes[meshIndex]; + + var componentMesh; + if (meshTri.triIndex) { + // Remesh with specific triangles + componentMesh = GeometryUtil.extractMesh(origMesh, meshTri.triIndex); + } else { + // Just my mesh + componentMesh = origMesh.clone(); + } + + // Get world transform from our parent + // TODO: if there is a scene transform, it needs to be undone by the viewer... + var parent = origMesh.parent; + if (parent) { + componentMesh.applyMatrix(parent.matrixWorld); + componentMesh.matrixWorldNeedsUpdate = true; + } + if (material) { + componentMesh.material = material; + } + componentMeshes.push(componentMesh); + } + + var myMesh = GeometryUtil.mergeMeshes(componentMeshes); + myMesh.name = (segment.id != undefined)? segment.id : object.name + '-remeshed-' + i; + myMesh.userData = { + id: (segment.id != undefined)? segment.id : 'mesh' + i, + index: i + }; + remeshedObj.add(myMesh); + } + // Clear out any __bufferGeometry + for (var i = 0; i < origMeshes.length; i++) { + delete origMeshes[i].__bufferGeometry; + } + return remeshedObj; +}; + +Object3DUtil.assignMultiMaterialToSegments = function (object, segments, createMaterialFn) { + if (!createMaterialFn) { + createMaterialFn = function(index, segment) { + var material = Object3DUtil.getSimpleFalseColorMaterial(index); + return material; + }; + } + // Get remesh of the object + var origMeshes = Object3DUtil.getMeshes(object); + + // Clone the original meshes + var materials = []; + var multiMaterial = new THREE.MultiMaterial(materials); + var remeshedObj = new THREE.Object3D(); + remeshedObj.name = object.name + '-remeshed'; + var clonedMeshes = _.map(origMeshes.list, function(x) { + x.updateMatrixWorld(); + var cloned = x.clone(); + cloned.geometry = GeometryUtil.toGeometry(cloned.geometry); + cloned.material = multiMaterial; + cloned.matrix.copy(x.matrixWorld); + cloned.matrixWorldNeedsUpdate = true; + remeshedObj.add(cloned); + return cloned; + }); + + for (var i = 0; i < segments.length; i++) { + var segment = segments[i]; + materials[i] = createMaterialFn(i, segment); + var meshTris = [segment]; // Default to case c) + if (segment.hasOwnProperty('meshTri')) { + // Case b + meshTris = segment['meshTri']; + } else if (segment.length) { + // Case a + meshTris = segment; + } + + for (var j = 0; j < meshTris.length; j++) { + var meshTri = meshTris[j]; + var meshIndex = meshTri.meshIndex; + var clonedMesh = (meshTri.mesh) ? meshTri.mesh : clonedMeshes[meshIndex]; + + // TODO: Try to handle Buffer Geometry too + var faces = clonedMesh.geometry.faces; + if (meshTri.triIndex) { + var triIndices = meshTri.triIndex; + for (var ti in triIndices) { + if (triIndices.hasOwnProperty(ti)) { + faces[ti].materialIndex = i; + } + } + } else { + for (var k = 0; k < faces.length; k++) { + faces[k].materialIndex = i; + } + } + } + + } + return remeshedObj; +}; + +// segmentGroups is a array of segment groups +// Each segmentGroup is a object with id, label, objectId, obb, and segments (optional) +// vertToSegIndices is a mapping of vertex to segment index +Object3DUtil.remeshObjectUsingSegmentGroups = function (object, segmentGroups, vertToSegIndices, quiet) { + // Go over segment groups + var origMeshes = Object3DUtil.getMeshes(object); + // Assumes just one mesh + var origMesh = origMeshes.list[0]; + var segToTriIndices = GeometryUtil.segVertIndicesToSegTriIndices(origMesh, vertToSegIndices); + // Convert to buffered geometry since extractMeshVertIndices works faster with buffered geometry + var origMeshBuffered = origMesh.clone(); + origMeshBuffered.geometry = GeometryUtil.toBufferGeometry(origMesh.geometry); + var remeshedObj = new THREE.Object3D(); + remeshedObj.name = object.name + '-remeshed'; + var noIndices = []; + for (var i = 0; i < segmentGroups.length; i++) { + var segGroup = segmentGroups[i]; + if (segGroup.segments && segGroup.segments.length > 0) { + //console.time('triIndices'); + var segs = segGroup.segments; + var triIndices = []; + for (var si = 0; si < segs.length; si++) { + var vis = segToTriIndices[segs[si]]; + if (vis) { + for (var j = 0; j < vis.length; j++) { + triIndices.push(vis[j]); + } + //Array.prototype.push.apply(triIndices, vis); + } else { + noIndices.push(segs[si]); + } + } + //console.time('triIndicesUniq'); + triIndices = _.uniq(triIndices); + //console.timeEnd('triIndicesUniq'); + //console.timeEnd('triIndices'); + var myMesh = GeometryUtil.extractMesh(origMeshBuffered, triIndices); + var parent = origMesh.parent; + if (parent) { + myMesh.applyMatrix(parent.matrixWorld); + myMesh.matrixWorldNeedsUpdate = true; + } + myMesh.name = object.name + '-remeshed-' + i; + myMesh.userData = segGroup; + segGroup['index'] = i; + remeshedObj.add(myMesh); + } + } + if (!quiet && noIndices.length > 0) { + console.error('No indices for ' + noIndices.length + ' segments', noIndices); + } + return remeshedObj; +}; + +// vertToSegIndices is a mapping of vertex index to a mapped segment index, negative segment indices are not used +Object3DUtil.copyAndRecolorVertices = function (object, vertToSegIndices, color) { + // Go over segment groups + var meshes = Object3DUtil.getMeshes(object); + // Assumes just one mesh + var mesh = meshes.list[0]; + var geometry = mesh.geometry.clone(); + var gray = new THREE.Color(0.5, 0.5, 0.5); + var colors = []; + function getColor(vi) { + var si = vertToSegIndices[vi]; + if (si == undefined) { + return gray; + } else { + if (!colors[si]) { + if (color) { + colors[si] = color.clone(); + } else { + colors[si] = (si >= 0) ? Object3DUtil.createColor(Math.abs(si)) : gray.clone(); + } + } + return colors[si]; + } + } + if (geometry.faces) { + // Maintain array of colors for vertex (for easy update) + // TODO: Do we need this in memory? + // geometry.colors = []; + // var nVertices = GeometryUtil.getGeometryVertexCount(geometry); + // for (var i = 0; i < nVertices; i++) { + // geometry.colors.push(getColor(i)); + // } + // Update face vertex + for (var i = 0; i < geometry.faces.length; i++) { + geometry.faces[i].vertexColors = [ + getColor(geometry.faces[i].a), + getColor(geometry.faces[i].b), + getColor(geometry.faces[i].c) + ]; + } + geometry.colorsNeedUpdate = true; + geometry.elementsNeedUpdate = true; + } else { + var attributes = geometry.attributes; + if ( attributes.position ) { + var positions = attributes.position.array; + if (attributes.color === undefined) { + geometry.addAttribute('color', new THREE.BufferAttribute(new Float32Array(positions.length), 3)); + } + // Update vertex colors + var vcolors = attributes.color.array; + for (var i = 0; i < vcolors.length; i+=3) { + var vi = i / 3; + var c = getColor(vi); + vcolors[i] = c.r; + vcolors[i+1] = c.g; + vcolors[i+2] = c.b; + } + } + } + geometry.computeFaceNormals(); + geometry.computeVertexNormals(); + var material = new THREE.MeshPhongMaterial({ vertexColors: THREE.VertexColors }); + var recolored = new THREE.Mesh(geometry, material); + recolored.name = object.name + '-recolored'; + recolored.userData.segColors = colors; + Object3DUtil.setMatrix(recolored, mesh.matrixWorld); + return recolored; +}; + +Object3DUtil.getMeshMaterials = function(object3D) { + // Returns a list of materials with mesh and material index; + var materials = []; + Object3DUtil.traverseMeshes(object3D, true, function (node) { + if (node instanceof THREE.Mesh && node.material) { + if (node.material instanceof THREE.MultiMaterial) { + // Actual material definition is embedded in geometry... + var mats = node.material.materials; + for (var j = 0; j < mats.length; j++) { + var m = mats[j]; + materials.push({ mesh: node, material: m, index: j }); + } + } else { + materials.push({ mesh: node, material: node.material, index: node.material.index }); + } + } + }); + return materials; +}; + +Object3DUtil.getMaterials = function (object3D) { + // each entry of materials holds + // name: name of material + // material: actual material + // meshes: meshes with which the material is associated + var materials = {}; + var count = 0; + var allMeshes = []; + var allMeshesWithTexture = []; + var allMaterials = []; + var allMaterialsWithTexture = []; + + function addMaterial(mesh, material) { + var id = material.id; + var name = material.name; + if (id === undefined) { + //noinspection JSUnresolvedVariable + if (THREE.MaterialCount === undefined) { + THREE.MaterialCount = 0; + } + id = THREE.MaterialCount++; + material.id = id; + console.log('Material without id (assigned id ' + id + ')'); + } + if (name === undefined) { + name = 'mat' + count; + material.name = name; + console.log('Material ' + id + ' without name (assigned name ' + name + ')'); + } + var old = materials[id]; + if (old) { + old.meshes.push(mesh); + } else { + materials[id] = { + id: id, + name: name, + material: material, + meshes: [mesh], + type: 'material' + }; + } + allMaterials.push(id); + allMeshes.push(mesh); + if (material.map) { + allMeshesWithTexture.push(mesh); + allMaterialsWithTexture.push(id); + } + count++; + } + + object3D.traverse(function (node) { + if (node instanceof THREE.Mesh && node.material) { + if (node.material instanceof THREE.MultiMaterial) { + // Actual material definition is embedded in geometry... + var meshFaceMaterial = node.material; + var meshFaces = []; + // Break down materials into individual faces... + // TODO: Same as geometryGroups/geometryGroupsList in geometry? + // If so, just use materialIndex instead of tracking the faceIndices... + if (node.geometry.faces) { + for (var j = 0; j < node.geometry.faces.length; j++) { + var face = node.geometry.faces[j]; + var materialIndex = face.materialIndex; + if (!meshFaces[materialIndex]) { + meshFaces[materialIndex] = [j]; + } else { + meshFaces[materialIndex].push(j); + } + } + } else { + var nFaces = GeometryUtil.getGeometryFaceCount(node.geometry); + for (var j = 0; j < nFaces; j++) { + var group = _.find(node.geometry.groups, function (g) { + return (j >= g.start) && (j < g.start + g.count); + }); + var materialIndex = group? group.materialIndex : 0; + if (!meshFaces[materialIndex]) { + meshFaces[materialIndex] = [j]; + } else { + meshFaces[materialIndex].push(j); + } + } + } + for (var i = 0; i < meshFaceMaterial.materials.length; i++) { + if (meshFaces.length > 0) { + addMaterial({mesh: node, faceIndices: meshFaces[i], materialIndex: i}, meshFaceMaterial.materials[i]); + } + } + } else { + addMaterial(node, node.material); + } + } + }); + materials['all'] = { + id: 'all', name: 'All', type: 'material_set', + meshes: allMeshes, materials: allMaterials + }; + materials['textured'] = { + id: 'textured', name: 'Textured', type: 'material_set', + meshes: allMeshesWithTexture, materials: allMaterialsWithTexture + }; + return materials; +}; + +Object3DUtil.getSceneGraphPath = function (node, parentRoot) { + // Follow up to parents + var path = []; + var parent = node; + var child; + while (parent && parent !== parentRoot) { + var name = parent.id; + if (parent['userData']) { + var userdata = parent.userData; + if (userdata.hasOwnProperty('id')) { + name = userdata['id']; + } + } + if (child) { + name = name + '[' + parent.children.indexOf(child) + ']'; + } + path.push(name); + // Go up + child = parent; + parent = parent.parent; + } + path.reverse(); + if (path.length > 0) { + return '/' + path.join('/'); + } else { + return ''; + } +}; + +Object3DUtil.getNodeFromSceneGraphPath = function (parentRoot, path) { + if (typeof (path) === 'string') { + path = path.split('/'); + } + if (path[0] === '') { + path.shift(); + } + var parent = parentRoot.children[0]; + var regex = /^(.*)\[(\d+)\]$/; + for (var i = 0; i < path.length; i++) { + var userdata = parent.userData; + var name = ''; + if (userdata.hasOwnProperty('id')) { + name = userdata['id']; + } + var matched = regex.exec(path[i]); + if (matched) { + var ci = matched[2]; + var child = parent.children[ci]; + if (!child) { + console.warn('Cannot find child ' + path[i]); + break; + } + if (matched[1] !== name) { + console.warn('Name does not match: expected ' + matched[1] + ', actual ' + name); + } + parent = child; + } else { + if (i < path.length - 1) { + console.warn('Exiting search for ' + path); + } + break; + } + } + if (i >= path.length - 1) { + return parent; + } else { + return null; + } +}; + +Object3DUtil.findMaterials = function(object3D, nonrecursive, materialFilter) { + var materials = []; + Object3DUtil.traverseMeshes(object3D, nonrecursive, function(mesh) { + //console.log('traverse', mesh); + var material = mesh.material; + if (material instanceof THREE.MultiMaterial) { + for (var i = 0; i < material.materials.length; i++) { + var mat = material.materials[i]; + if (materialFilter(mat)) { + materials.push({ + mesh: mesh, + material: mat, + setMaterial: function(index, newMat) { + material.materials[index] = newMat; + }.bind(mesh, i) + }); + } + } + } else { + if (materialFilter(material)) { + materials.push({ + mesh: mesh, + material: material, + setMaterial: function(newMat) { + mesh.material = newMat; + }.bind(mesh) + }); + } + } + }); + return materials; +}; + +Object3DUtil.addMirrors = function(object3D, opts) { + var mirrors = []; + Object3DUtil.traverseMeshes(object3D, false, function(mesh) { + //console.log('Check for mirror material', object3D); + // Find materials with mirror + var mirrorMatName = opts.mirrorMaterialName || 'mirror'; + var mirrorMats = Object3DUtil.findMaterials(mesh, true, opts.filterMaterial || function (m) { + //console.log('check ' + m.name, m); + return m.name === mirrorMatName && !m.map; + }); + + // Check if it has material with name video + var hasMirror = mirrorMats.length > 0; + if (hasMirror) { + var Mirror = require('capabilities/Mirror'); + _.each(mirrorMats, function(mat) { + mesh.mirror = new Mirror(_.defaults({object3D: mesh, mirrorMaterials: [mat], color: mat.material.color}, opts)); + mirrors.push(mesh.mirror); + }); + } + }); + return mirrors; +}; + +Object3DUtil.addVideoPlayer = function(object3D, opts) { + //console.log('Check for video capability', object3D); + // Find materials with video + var videoMatName = opts.videoMaterialName || 'video'; + var videoMats = Object3DUtil.findMaterials(object3D, true, opts.filterMaterial || function(m) { + //console.log('check ' + m.name, m); + return m.name === videoMatName; + }); + + // Check if it has material with name video + var hasVideo = videoMats.length > 0; + if (hasVideo) { + var VideoPlayer = require('capabilities/VideoPlayer'); + object3D.videoPlayer = new VideoPlayer({ + object3D: object3D, + videoMaterials: videoMats, + assetManager: opts.assetManager + }); + } + return object3D.videoPlayer; +}; + +// TODO(MS): Experimental function to push transform to leaf-like nodes +Object3DUtil.pushWorldTransformToMeshes = function (object3D) { + Object3DUtil.traverse(object3D, function (node) { + if (node instanceof THREE.Mesh || node instanceof THREE.Light) { + Object3DUtil.setMatrix(node, node.matrixWorld); + return false; + } + return true; + }, function (node) { + var isStop = node instanceof THREE.Mesh || node instanceof THREE.Light; + if (!isStop) { + Object3DUtil.setMatrix(node, new THREE.Matrix4()); + } + }); +}; + +Object3DUtil.findLights = function(object3D) { + return Object3DUtil.findNodes(object3D, function (node) { + return node instanceof THREE.Light; + }); +}; + +Object3DUtil.setLights = function (object3D, flag) { + var lights = Object3DUtil.findLights(object3D); + for (var i = 0; i < lights.length; ++i) { + var l = lights[i]; + l.userData.isOn = flag; + if (l.userData.isOn) { + l.intensity = l.userData.intensity; + } else { + l.intensity = 0; + } + } + return lights.length; +}; + +Object3DUtil.setMaterialState = function (object3D, matOverrides, flag) { + if (!matOverrides) { return; } + // overrides for emissive surfaces and shade transparency + function setMatState(meshMaterial, matIndex) { + //console.log(matIndex); + if (matOverrides.emissive && matOverrides.emissive.indexOf(matIndex) >= 0) { + //console.log('emissive', matIndex); + if (flag) { + meshMaterial.emissive.set(0xFFFF00); + meshMaterial.emissiveIntensity = 5; + } else { + meshMaterial.emissive.set(0x000000); + meshMaterial.emissiveIntensity = 0; + } + } + if (matOverrides.shade && matOverrides.shade.indexOf(matIndex) >= 0) { + if (!meshMaterial.defaults) { + meshMaterial.defaults = { + opacity: meshMaterial.opacity, transparent: meshMaterial.transparent + }; + } + if (flag) { + meshMaterial.transparent = true; + meshMaterial.opacity = 0.9; + } else { + meshMaterial.transparent = meshMaterial.defaults.transparent; + meshMaterial.opacity = meshMaterial.defaults.opacity; + } + } + } + + Object3DUtil.traverseMeshes(object3D, true, function (mesh) { + if (mesh.material instanceof THREE.MultiMaterial) { + for (var i = 0, l = mesh.material.materials.length; i < l; i++) { + var meshMaterial = mesh.material.materials[i]; + setMatState(meshMaterial, i); + } + } else if (mesh.material.index != undefined) { + setMatState(mesh.material, mesh.material.index); + } + }); +}; + +Object3DUtil.setCapability = function(object3D, name, flag) { + if (!object3D.userData.capabilities) { + object3D.userData.capabilities = {}; + } + object3D.userData.capabilities[name] = flag; +}; + +Object3DUtil.getCapability = function(object3D, name, defaultValue) { + var v; + if (object3D.userData.capabilities) { + v = object3D.userData.capabilities[name]; + if (v != undefined) { + return v; + } + } + if (defaultValue != undefined) { + if (typeof defaultValue === "function") { + v = defaultValue(); + } else { + v = defaultValue; + } + Object3DUtil.setCapability(object3D, name, v || false); + return v; + } +}; + +Object3DUtil.getCapabilities = function(object3D) { + return object3D.userData.capabilities; +}; + +Object3DUtil.addSphere = function (scene, centerTo, size, materialOrColor) { + size = size || 10; + var sphereGeo = new THREE.SphereGeometry(size); + var material = Object3DUtil.getMaterial(materialOrColor); + var mesh = new THREE.Mesh(sphereGeo, material); + mesh.position.copy(centerTo); + scene.add(mesh); +}; + +Object3DUtil.setCylinderDirection = function (obj, dir) { + // Assumes dir is normalized + if (dir.y > 0.99999) { + obj.quaternion.set(0, 0, 0, 1); + } else if (dir.y < -0.99999) { + obj.quaternion.set(1, 0, 0, 0); + } else { + var axis = new THREE.Vector3(); + axis.set(dir.z, 0, -dir.x).normalize(); + var radians = Math.acos(dir.y); + obj.quaternion.setFromAxisAngle(axis, radians); + } +}; + +Object3DUtil.makeColumn = function (basePoint, columnDir, height, width, materialOrColor) { + width = width || 10; + var cylinderGeo = new THREE.CylinderGeometry(width, width, height); + var material = Object3DUtil.getMaterial(materialOrColor); + var mesh = new THREE.Mesh(cylinderGeo, material); + mesh.name = 'Column'; + var centerTo = basePoint.clone().add(columnDir.clone().multiplyScalar(height / 2)); + Object3DUtil.setCylinderDirection(mesh, columnDir); + mesh.position.copy(centerTo); + return mesh; +}; + +Object3DUtil.addColumn = function (scene, basePoint, columnDir, height, width, materialOrColor) { + var column = Object3DUtil.makeColumn(basePoint, columnDir, height, width, materialOrColor); + scene.add(column); +}; + +Object3DUtil.makeCylinder = function (start, end, width, materialOrColor) { + var columnDir = end.clone().sub(start).normalize(); + var height = start.distanceTo(end); + var cylinderGeo = new THREE.CylinderGeometry(width, width, height); + var material = Object3DUtil.getMaterial(materialOrColor); + var mesh = new THREE.Mesh(cylinderGeo, material); + mesh.name = 'Cylinder'; + var centerTo = start.clone().add(end).multiplyScalar(0.5); + Object3DUtil.setCylinderDirection(mesh, columnDir); + mesh.position.copy(centerTo); + return mesh; +}; + +Object3DUtil.makeBall = function (origin, radius, materialOrColor) { + var ballGeo = new THREE.SphereBufferGeometry(radius); + var material = Object3DUtil.getMaterial(materialOrColor); + var mesh = new THREE.Mesh(ballGeo, material); + mesh.name = 'Ball'; + mesh.position.copy(origin); + return mesh; +}; + +Object3DUtil.makeBalls = function (points, radius, materialOrColor, name, group) { + name = name || 'Ball'; + group = group || new THREE.Group(); + for (var i = 0; i < points.length; i++) { + var ball = Object3DUtil.makeBall(points[i], radius, materialOrColor); + ball.name = name + i; + group.add(ball); + } + return group; +}; + +Object3DUtil.makeBoxFromToOrientation = function (from, to, orientation, size, materialOrColor) { + var dist = to.distanceTo(from); // * 0.5; + var center = from.clone().add(to).multiplyScalar(0.5); + + var boxGeo = new THREE.BoxGeometry(dist, size, size); + var material = Object3DUtil.getMaterial(materialOrColor); + var mesh = new THREE.Mesh(boxGeo, material); + mesh.setRotationFromQuaternion(orientation); + mesh.position.copy(center); + return mesh; +}; + +Object3DUtil.makeWall = function (baseStart, baseEnd, wallUpDir, height, depth, materialOrColor) { + depth = depth || 10; + var width = baseEnd.distanceTo(baseStart); + // x = width, y = height, z = depth + // Build box geo + var boxGeo = new THREE.BoxGeometry(width, height, depth); + var material = Object3DUtil.getMaterial(materialOrColor); + var mesh = new THREE.Mesh(boxGeo, material); + mesh.name = 'Wall'; + + // Take start --> end to be right, front to be normal + var startToEnd = baseEnd.clone().sub(baseStart).normalize(); + var wallFrontDir = new THREE.Vector3(); + wallFrontDir.crossVectors(startToEnd, wallUpDir).normalize(); + var alignMatrix = Object3DUtil.getAlignmentMatrix(new THREE.Vector3(0,1,0), new THREE.Vector3(0,0,1), + wallUpDir, wallFrontDir); + + var centerTo = baseStart.clone().add(baseEnd).multiplyScalar(0.5); + centerTo.add(wallUpDir.clone().multiplyScalar(height / 2)); + alignMatrix.setPosition(centerTo); + + Object3DUtil.setMatrix(mesh, alignMatrix); + return mesh; +}; + +// Make geometry for one pieces of a wall +Object3DUtil.__makeWallWithHolesGeometry = function(opts) { + var holes = opts.holes; + var height = opts.height; + var depth = opts.depth; + var width = opts.width; + + var initialHeight = opts.initialHeight; + var initialWidth = opts.initialWidth; + + var wdelta = (width - initialWidth) / 2; + + // Assume holes are disjoint + // Split holes into outside (on border) and inside holes (inside wall) + var outsideHoles = []; + var leftHoles = [], rightHoles = [], topHoles = [], bottomHoles = []; + var insideHoles = []; + if (holes) { + for (var iHole = 0; iHole < holes.length; iHole++) { + var hole = holes[iHole]; + if (hole.min.x <= 0 && hole.max.x < initialWidth) { + leftHoles.push(hole); + outsideHoles.push(hole); + } else if (hole.min.x > 0 && hole.max.x >= initialWidth) { + rightHoles.push(hole); + outsideHoles.push(hole); + } else if (hole.min.y <= 0 && hole.max.y < initialHeight) { + bottomHoles.push(hole); + outsideHoles.push(hole); + } else if (hole.min.y > 0 && hole.max.y >= initialHeight) { + topHoles.push(hole); + outsideHoles.push(hole); + } else { + insideHoles.push(hole); + } + } + } + + var wallShape = new THREE.Shape(); + if (outsideHoles.length > 0) { + //console.log('processing outside holes', bottomHoles, rightHoles, topHoles, leftHoles); + bottomHoles = _.sortBy(bottomHoles, function(hole) { return hole.min.x; }); + rightHoles = _.sortBy(rightHoles, function(hole) { return hole.max.y; }); + topHoles = _.sortBy(topHoles, function(hole) { return -hole.max.x; }); + leftHoles = _.sortBy(leftHoles, function(hole) { return -hole.max.y; }); + + // Start at lower left + wallShape.moveTo(0, 0); + + // Process bottom holes + for (var i = 0; i < bottomHoles.length; i++) { + var hole = bottomHoles[i]; + wallShape.lineTo(wdelta + hole.min.x, 0); + wallShape.lineTo(wdelta + hole.min.x, hole.max.y); + wallShape.lineTo(wdelta + hole.max.x, hole.max.y); + wallShape.lineTo(wdelta + hole.max.x, 0); + } + wallShape.lineTo(width, 0); + + // Process right holes + for (var i = 0; i < rightHoles.length; i++) { + var hole = rightHoles[i]; + wallShape.lineTo(width, hole.min.y); + wallShape.lineTo(wdelta + hole.min.x, hole.min.y); + wallShape.lineTo(wdelta + hole.min.x, hole.max.y); + wallShape.lineTo(width, hole.max.y); + } + // Go to top + if (!hole || hole.max.y < height) { + wallShape.lineTo(width, height); + } + + // Process top holes + for (var i = 0; i < topHoles.length; i++) { + var hole = topHoles[i]; + wallShape.lineTo(wdelta + hole.max.x, height); + wallShape.lineTo(wdelta + hole.max.x, hole.min.y); + wallShape.lineTo(wdelta + hole.min.x, hole.min.y); + wallShape.lineTo(wdelta + hole.min.x, height); + } + wallShape.lineTo(0, height); + + // Process left holes + for (var i = 0; i < leftHoles.length; i++) { + var hole = leftHoles[i]; + wallShape.lineTo(0, hole.max.y); + wallShape.lineTo(wdelta + hole.max.x, hole.max.y); + wallShape.lineTo(wdelta + hole.max.x, hole.min.y); + wallShape.lineTo(0, hole.min.y); + } + + if (!hole || hole.min.y > 0) { + wallShape.lineTo(0, 0); + } + } else { + wallShape.moveTo(0, 0); + wallShape.lineTo(width, 0); + wallShape.lineTo(width, height); + wallShape.lineTo(0, height); + wallShape.lineTo(0, 0); + } + + if (insideHoles.length) { + for (var iHole = 0; iHole < insideHoles.length; iHole++) { + var hole = insideHoles[iHole]; + var holePath = new THREE.Path(); + // Make sure holes are inside wall... + var minx = Math.max(wdelta + hole.min.x, 0.000); + var maxx = Math.min(wdelta + hole.max.x, width - 0.000); + var miny = Math.max(hole.min.y, 0.000); + var maxy = Math.min(hole.max.y, height - 0.000); + + holePath.moveTo(minx, miny); + holePath.lineTo(maxx, miny); + holePath.lineTo(maxx, maxy); + holePath.lineTo(minx, maxy); + holePath.lineTo(minx, miny); + wallShape.holes.push(holePath); + } + } + + var extrudeSettings = { amount: depth / 2, bevelEnabled: false }; + var geo = new THREE.ExtrudeGeometry(wallShape, extrudeSettings); + return geo; +}; + +Object3DUtil.makeWallWithHoles = function (baseStart, baseEnd, wallUpDir, wallHeight, extraHeight, + depth, holes, materials) { + depth = depth || 10; + var height = wallHeight + extraHeight; + var wallDir = baseEnd.clone().sub(baseStart).normalize(); + var wallFrontDir = new THREE.Vector3(); + wallFrontDir.crossVectors(wallDir, wallUpDir).normalize(); + var wallEndOffset = wallDir.clone().multiplyScalar(depth / 2 - depth / 10); + + var p0 = baseStart.clone().sub(wallEndOffset); + var p1 = baseEnd.clone().add(wallEndOffset); + var width = p1.distanceTo(p0); + + // Account for slight difference in original width and extended width + var initialWidth = baseStart.distanceTo(baseEnd); + + var geo = Object3DUtil.__makeWallWithHolesGeometry({ + holes: holes, + height: height, + depth: depth, + width: width, + initialWidth: initialWidth, + initialHeight: wallHeight + }); + + var materialBetween = Object3DUtil.getBasicMaterial('gray'); + var materialIn = new THREE.MultiMaterial([materials[0], materialBetween]); + var materialOut = new THREE.MultiMaterial([materials[1], materialBetween]); + var meshIn = new THREE.Mesh(geo, materialIn); + var meshOut = new THREE.Mesh(geo, materialOut); + meshIn.name = 'WallInside'; + meshOut.name = 'WallOutside'; + + var alignMatrix = Object3DUtil.getAlignmentMatrix( + new THREE.Vector3(0,1,0), new THREE.Vector3(0,0,1), + wallUpDir, wallFrontDir); + alignMatrix.setPosition(p0); + Object3DUtil.setMatrix(meshIn, alignMatrix); + + var offset = wallFrontDir.clone().multiplyScalar(-depth / 2 + depth / 19); // NOTE: d/19 offset to avoid z-fighting + alignMatrix.setPosition(p0.clone().add(offset)); + Object3DUtil.setMatrix(meshOut, alignMatrix); + + var merged = new THREE.Object3D('DoubleSidedWall'); + merged.add(meshIn); + merged.add(meshOut); + merged.name = 'DoubleSidedWall'; + + return merged; +}; + +Object3DUtil.addWall = function (scene, baseStart, baseEnd, wallUpDir, height, depth, color) { + var wall = Object3DUtil.makeWall(baseStart, baseEnd, wallUpDir, height, depth, color); + scene.add(wall); +}; + +function mergeHoles(holeBBoxes) { + var mergedHoleIndices = []; + var finalHoleBoxes = []; + for (var i = 0; i < holeBBoxes.length; i++) { + if (mergedHoleIndices.indexOf(i) >= 0) { + continue; + } + var iHoleBBox = holeBBoxes[i]; + for (var j = i + 1; j < holeBBoxes.length; j++) { + var jHoleBBox = holeBBoxes[j]; + if (iHoleBBox.intersects(jHoleBBox)) { + mergedHoleIndices.push(j); + //console.log('Merging ' + jHoleBBox.toString() + ' to ' + iHoleBBox.toString()); + iHoleBBox.includeBBox(jHoleBBox); + //console.log('Got ' + iHoleBBox.toString()); + } + } + finalHoleBoxes.push(iHoleBBox); + } + return { holeBBoxes: finalHoleBoxes, mergedHoleIndices: mergedHoleIndices }; +} + +function repeatedMergeHoles(holeBBoxes) { + var m = mergeHoles(holeBBoxes); + while (m.mergedHoleIndices.length > 0) { + m = mergeHoles(m.holeBBoxes); + } + return m.holeBBoxes; +} + +Object3DUtil.mergeHoles = repeatedMergeHoles; + +Object3DUtil.getVisibleWidthHeight = function (camera, dist) { + var vFOV = camera.fov * Math.PI / 180; // convert vertical fov to radians + var height = 2 * Math.tan(vFOV / 2) * dist; // visible height + var width = height * camera.aspect; + return new THREE.Vector2(width, height); +}; + +Object3DUtil.makeCameraFrustum = function (origCamera) { + var camera = origCamera.clone(); + camera.near = 50; + camera.far = 100; + camera.updateProjectionMatrix(); + camera.updateMatrixWorld(); + return new THREE.CameraHelper(camera); +}; + +Object3DUtil.decomposeMatrix4 = function(matrix) { + var scale = new THREE.Vector3(); + var position = new THREE.Vector3(); + var orientation = new THREE.Quaternion(); + matrix.decompose(position, orientation, scale); + return { + position: position, + orientation: orientation, + scale: scale + }; +}; + +Object3DUtil.transferFaceAttributeToVertexColor = function(object3D, attribute, convertAttrFn) { + var color = new THREE.Color(); + Object3DUtil.colorVerticesUsingFaceAttribute(object3D, attribute, function(x) { + var v = convertAttrFn? convertAttrFn(x) : x; + color.setHex(v); + return color; + }); +}; + +Object3DUtil.colorVerticesUsingFaceAttribute = function(object3D, attribute, colorIndexOrFn) { + var colorFn = null; + if (colorIndexOrFn) { + if (_.isFunction(colorIndexOrFn)) { + colorFn = colorIndexOrFn; + } else { + colorFn = function(x) { return colorIndexOrFn[x]; }; + } + } + Object3DUtil.traverseMeshes(object3D, false, function(mesh) { + var geometry = mesh.geometry; + if (geometry.customFaceAttributes) { + var faceAttributes = geometry.customFaceAttributes[attribute]; + var vertexColorBuffer = geometry.attributes['color'].array; + console.log('got faceAttributes ' + attribute + ': ' + faceAttributes.length /*, _.min(faceAttributes), _.max(faceAttributes)*/); + GeometryUtil.forFaceVertexIndices(geometry, function(iFace, vertIndices) { + var v = faceAttributes[iFace]; + //console.log('got face attribute ' + v + ', vertices ' + JSON.stringify(vertIndices)); + var c = colorFn? colorFn(v) : v; + if (c == undefined) { + c = v || 0; + } + c = _.isInteger(c)? Object3DUtil.createColor(c) : Object3DUtil.getColor(c); + for (var i = 0; i < vertIndices.length; i++) { + var ci = vertIndices[i]*3; + vertexColorBuffer[ci] = c.r; + vertexColorBuffer[ci+1] = c.g; + vertexColorBuffer[ci+2] = c.b; + } + }); + } + }); +}; + +Object3DUtil.grayOutVertices = function(object3D, center, maxRadius, grayColor) { + Object3DUtil.traverseMeshes(object3D, false, function (mesh) { + GeometryUtil.grayOutVertices(mesh, center, maxRadius, grayColor); + }); +}; + +Object3DUtil.BlackMatParams = { + type: 'phong', + opacity: 1, + color: 0, + emissive: 0x000000, + specular: 0x000000, + side: THREE.DoubleSide, + name: 'black' +}; + +Object3DUtil.BlackMat = Object3DUtil.createMaterial(Object3DUtil.BlackMatParams); + +Object3DUtil.ClearMatParams = { + type: 'basic', + opacity: 0.1, + color: 0, + side: THREE.DoubleSide, + name: 'clear' +}; + +Object3DUtil.ClearMat = Object3DUtil.createMaterial(Object3DUtil.ClearMatParams); +Object3DUtil.ClearColor = new THREE.Color('gray'); + +Object3DUtil.TransparentMatParams = { + type: 'basic', + opacity: 0.4, + color: 0x111111, + side: THREE.DoubleSide, + name: 'transparent' +}; + +Object3DUtil.TransparentMat = Object3DUtil.createMaterial(Object3DUtil.TransparentMatParams); + +Object3DUtil.InvisibleMat = Object3DUtil.createMaterial({ + type: 'basic', + visible: false, + name: 'invisible' +}); + +// Exports +module.exports = Object3DUtil; diff --git a/client/js/OrbitControls.js b/client/js/OrbitControls.js new file mode 100644 index 0000000..bf662dd --- /dev/null +++ b/client/js/OrbitControls.js @@ -0,0 +1,1040 @@ +/** + * @author qiao / https://github.com/qiao + * @author mrdoob / http://mrdoob.com + * @author alteredq / http://alteredqualia.com/ + * @author WestLangley / http://github.com/WestLangley + * @author erich666 / http://erichaines.com + */ + +// This set of controls performs orbiting, dollying (zooming), and panning. +// Unlike TrackballControls, it maintains the "up" direction object.up (+Y by default). +// +// Orbit - left mouse / touch: one finger move +// Zoom - middle mouse, or mousewheel / touch: two finger spread or squish +// Pan - right mouse, or arrow keys / touch: three finger swipe + +THREE.OrbitControls = function ( object, domElement ) { + + this.object = object; + + this.domElement = ( domElement !== undefined ) ? domElement : document; + + // Set to false to disable this control + this.enabled = true; + + // "target" sets the location of focus, where the object orbits around + this.target = new THREE.Vector3(); + + // How far you can dolly in and out ( PerspectiveCamera only ) + this.minDistance = 0; + this.maxDistance = Infinity; + + // How far you can zoom in and out ( OrthographicCamera only ) + this.minZoom = 0; + this.maxZoom = Infinity; + + // How far you can orbit vertically, upper and lower limits. + // Range is 0 to Math.PI radians. + this.minPolarAngle = 0; // radians + this.maxPolarAngle = Math.PI; // radians + + // How far you can orbit horizontally, upper and lower limits. + // If set, must be a sub-interval of the interval [ - Math.PI, Math.PI ]. + this.minAzimuthAngle = - Infinity; // radians + this.maxAzimuthAngle = Infinity; // radians + + // Set to true to enable damping (inertia) + // If damping is enabled, you must call controls.update() in your animation loop + this.enableDamping = false; + this.dampingFactor = 0.25; + + // This option actually enables dollying in and out; left as "zoom" for backwards compatibility. + // Set to false to disable zooming + this.enableZoom = true; + this.zoomSpeed = 1.0; + + // Set to false to disable rotating + this.enableRotate = true; + this.rotateSpeed = 1.0; + + // Set to false to disable panning + this.enablePan = true; + this.keyPanSpeed = 7.0; // pixels moved per arrow key push + + // Set to true to automatically rotate around the target + // If auto-rotate is enabled, you must call controls.update() in your animation loop + this.autoRotate = false; + this.autoRotateSpeed = 2.0; // 30 seconds per round when fps is 60 + + // Set to false to disable use of the keys + this.enableKeys = true; + + // The four arrow keys + this.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 }; + + // Mouse buttons + this.mouseButtons = { ORBIT: THREE.MOUSE.LEFT, ZOOM: THREE.MOUSE.MIDDLE, PAN: THREE.MOUSE.RIGHT }; + + // for reset + this.target0 = this.target.clone(); + this.position0 = this.object.position.clone(); + this.zoom0 = this.object.zoom; + + // + // public methods + // + + this.getPolarAngle = function () { + + return spherical.phi; + + }; + + this.getAzimuthalAngle = function () { + + return spherical.theta; + + }; + + this.saveState = function () { + + scope.target0.copy( scope.target ); + scope.position0.copy( scope.object.position ); + scope.zoom0 = scope.object.zoom; + + }; + + this.reset = function () { + + scope.target.copy( scope.target0 ); + scope.object.position.copy( scope.position0 ); + scope.object.zoom = scope.zoom0; + + scope.object.updateProjectionMatrix(); + scope.dispatchEvent( changeEvent ); + + scope.update(); + + state = STATE.NONE; + + }; + + // this method is exposed, but perhaps it would be better if we can make it private... + this.update = function () { + + var offset = new THREE.Vector3(); + + // so camera.up is the orbit axis + var quat = new THREE.Quaternion().setFromUnitVectors( object.up, new THREE.Vector3( 0, 1, 0 ) ); + var quatInverse = quat.clone().inverse(); + + var lastPosition = new THREE.Vector3(); + var lastQuaternion = new THREE.Quaternion(); + + return function update() { + + var position = scope.object.position; + + offset.copy( position ).sub( scope.target ); + + // rotate offset to "y-axis-is-up" space + offset.applyQuaternion( quat ); + + // angle from z-axis around y-axis + spherical.setFromVector3( offset ); + + if ( scope.autoRotate && state === STATE.NONE ) { + + rotateLeft( getAutoRotationAngle() ); + + } + + spherical.theta += sphericalDelta.theta; + spherical.phi += sphericalDelta.phi; + + // restrict theta to be between desired limits + spherical.theta = Math.max( scope.minAzimuthAngle, Math.min( scope.maxAzimuthAngle, spherical.theta ) ); + + // restrict phi to be between desired limits + spherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) ); + + spherical.makeSafe(); + + + spherical.radius *= scale; + + // restrict radius to be between desired limits + spherical.radius = Math.max( scope.minDistance, Math.min( scope.maxDistance, spherical.radius ) ); + + // move target to panned location + scope.target.add( panOffset ); + + offset.setFromSpherical( spherical ); + + // rotate offset back to "camera-up-vector-is-up" space + offset.applyQuaternion( quatInverse ); + + position.copy( scope.target ).add( offset ); + + scope.object.lookAt( scope.target ); + + if ( scope.enableDamping === true ) { + + sphericalDelta.theta *= ( 1 - scope.dampingFactor ); + sphericalDelta.phi *= ( 1 - scope.dampingFactor ); + + } else { + + sphericalDelta.set( 0, 0, 0 ); + + } + + scale = 1; + panOffset.set( 0, 0, 0 ); + + // update condition is: + // min(camera displacement, camera rotation in radians)^2 > EPS + // using small-angle approximation cos(x/2) = 1 - x^2 / 8 + + if ( zoomChanged || + lastPosition.distanceToSquared( scope.object.position ) > EPS || + 8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ) { + + scope.dispatchEvent( changeEvent ); + + lastPosition.copy( scope.object.position ); + lastQuaternion.copy( scope.object.quaternion ); + zoomChanged = false; + + return true; + + } + + return false; + + }; + + }(); + + this.dispose = function () { + + scope.domElement.removeEventListener( 'contextmenu', onContextMenu, false ); + scope.domElement.removeEventListener( 'mousedown', onMouseDown, false ); + scope.domElement.removeEventListener( 'wheel', onMouseWheel, false ); + + scope.domElement.removeEventListener( 'touchstart', onTouchStart, false ); + scope.domElement.removeEventListener( 'touchend', onTouchEnd, false ); + scope.domElement.removeEventListener( 'touchmove', onTouchMove, false ); + + document.removeEventListener( 'mousemove', onMouseMove, false ); + document.removeEventListener( 'mouseup', onMouseUp, false ); + + window.removeEventListener( 'keydown', onKeyDown, false ); + + //scope.dispatchEvent( { type: 'dispose' } ); // should this be added here? + + }; + + // + // internals + // + + var scope = this; + + var changeEvent = { type: 'change' }; + var startEvent = { type: 'start' }; + var endEvent = { type: 'end' }; + + var STATE = { NONE: - 1, ROTATE: 0, DOLLY: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_DOLLY: 4, TOUCH_PAN: 5 }; + + var state = STATE.NONE; + + var EPS = 0.000001; + + // current position in spherical coordinates + var spherical = new THREE.Spherical(); + var sphericalDelta = new THREE.Spherical(); + + var scale = 1; + var panOffset = new THREE.Vector3(); + var zoomChanged = false; + + var rotateStart = new THREE.Vector2(); + var rotateEnd = new THREE.Vector2(); + var rotateDelta = new THREE.Vector2(); + + var panStart = new THREE.Vector2(); + var panEnd = new THREE.Vector2(); + var panDelta = new THREE.Vector2(); + + var dollyStart = new THREE.Vector2(); + var dollyEnd = new THREE.Vector2(); + var dollyDelta = new THREE.Vector2(); + + function getAutoRotationAngle() { + + return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed; + + } + + function getZoomScale() { + + return Math.pow( 0.95, scope.zoomSpeed ); + + } + + function rotateLeft( angle ) { + + sphericalDelta.theta -= angle; + + } + + function rotateUp( angle ) { + + sphericalDelta.phi -= angle; + + } + + var panLeft = function () { + + var v = new THREE.Vector3(); + + return function panLeft( distance, objectMatrix ) { + + v.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix + v.multiplyScalar( - distance ); + + panOffset.add( v ); + + }; + + }(); + + var panUp = function () { + + var v = new THREE.Vector3(); + + return function panUp( distance, objectMatrix ) { + + v.setFromMatrixColumn( objectMatrix, 1 ); // get Y column of objectMatrix + v.multiplyScalar( distance ); + + panOffset.add( v ); + + }; + + }(); + + // deltaX and deltaY are in pixels; right and down are positive + var pan = function () { + + var offset = new THREE.Vector3(); + + return function pan( deltaX, deltaY ) { + + var element = scope.domElement === document ? scope.domElement.body : scope.domElement; + + if ( scope.object instanceof THREE.PerspectiveCamera ) { + + // perspective + var position = scope.object.position; + offset.copy( position ).sub( scope.target ); + var targetDistance = offset.length(); + + // half of the fov is center to top of screen + targetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 ); + + // we actually don't use screenWidth, since perspective camera is fixed to screen height + panLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix ); + panUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix ); + + } else if ( scope.object instanceof THREE.OrthographicCamera ) { + + // orthographic + panLeft( deltaX * ( scope.object.right - scope.object.left ) / scope.object.zoom / element.clientWidth, scope.object.matrix ); + panUp( deltaY * ( scope.object.top - scope.object.bottom ) / scope.object.zoom / element.clientHeight, scope.object.matrix ); + + } else { + + // camera neither orthographic nor perspective + console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' ); + scope.enablePan = false; + + } + + }; + + }(); + + function dollyIn( dollyScale ) { + + if ( scope.object instanceof THREE.PerspectiveCamera ) { + + scale /= dollyScale; + + } else if ( scope.object instanceof THREE.OrthographicCamera ) { + + scope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom * dollyScale ) ); + scope.object.updateProjectionMatrix(); + zoomChanged = true; + + } else { + + console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' ); + scope.enableZoom = false; + + } + + } + + function dollyOut( dollyScale ) { + + if ( scope.object instanceof THREE.PerspectiveCamera ) { + + scale *= dollyScale; + + } else if ( scope.object instanceof THREE.OrthographicCamera ) { + + scope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / dollyScale ) ); + scope.object.updateProjectionMatrix(); + zoomChanged = true; + + } else { + + console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' ); + scope.enableZoom = false; + + } + + } + + // + // event callbacks - update the object state + // + + function handleMouseDownRotate( event ) { + + //console.log( 'handleMouseDownRotate' ); + + rotateStart.set( event.clientX, event.clientY ); + + } + + function handleMouseDownDolly( event ) { + + //console.log( 'handleMouseDownDolly' ); + + dollyStart.set( event.clientX, event.clientY ); + + } + + function handleMouseDownPan( event ) { + + //console.log( 'handleMouseDownPan' ); + + panStart.set( event.clientX, event.clientY ); + + } + + function handleMouseMoveRotate( event ) { + + //console.log( 'handleMouseMoveRotate' ); + + rotateEnd.set( event.clientX, event.clientY ); + rotateDelta.subVectors( rotateEnd, rotateStart ); + + var element = scope.domElement === document ? scope.domElement.body : scope.domElement; + + // rotating across whole screen goes 360 degrees around + rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientWidth * scope.rotateSpeed ); + + // rotating up and down along whole screen attempts to go 360, but limited to 180 + rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight * scope.rotateSpeed ); + + rotateStart.copy( rotateEnd ); + + scope.update(); + + } + + function handleMouseMoveDolly( event ) { + + //console.log( 'handleMouseMoveDolly' ); + + dollyEnd.set( event.clientX, event.clientY ); + + dollyDelta.subVectors( dollyEnd, dollyStart ); + + if ( dollyDelta.y > 0 ) { + + dollyIn( getZoomScale() ); + + } else if ( dollyDelta.y < 0 ) { + + dollyOut( getZoomScale() ); + + } + + dollyStart.copy( dollyEnd ); + + scope.update(); + + } + + function handleMouseMovePan( event ) { + + //console.log( 'handleMouseMovePan' ); + + panEnd.set( event.clientX, event.clientY ); + + panDelta.subVectors( panEnd, panStart ); + + pan( panDelta.x, panDelta.y ); + + panStart.copy( panEnd ); + + scope.update(); + + } + + function handleMouseUp( event ) { + + // console.log( 'handleMouseUp' ); + + } + + function handleMouseWheel( event ) { + + // console.log( 'handleMouseWheel' ); + + if ( event.deltaY < 0 ) { + + dollyOut( getZoomScale() ); + + } else if ( event.deltaY > 0 ) { + + dollyIn( getZoomScale() ); + + } + + scope.update(); + + } + + function handleKeyDown( event ) { + + //console.log( 'handleKeyDown' ); + + switch ( event.keyCode ) { + + case scope.keys.UP: + pan( 0, scope.keyPanSpeed ); + scope.update(); + break; + + case scope.keys.BOTTOM: + pan( 0, - scope.keyPanSpeed ); + scope.update(); + break; + + case scope.keys.LEFT: + pan( scope.keyPanSpeed, 0 ); + scope.update(); + break; + + case scope.keys.RIGHT: + pan( - scope.keyPanSpeed, 0 ); + scope.update(); + break; + + } + + } + + function handleTouchStartRotate( event ) { + + //console.log( 'handleTouchStartRotate' ); + + rotateStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + + } + + function handleTouchStartDolly( event ) { + + //console.log( 'handleTouchStartDolly' ); + + var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX; + var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY; + + var distance = Math.sqrt( dx * dx + dy * dy ); + + dollyStart.set( 0, distance ); + + } + + function handleTouchStartPan( event ) { + + //console.log( 'handleTouchStartPan' ); + + panStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + + } + + function handleTouchMoveRotate( event ) { + + //console.log( 'handleTouchMoveRotate' ); + + rotateEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + rotateDelta.subVectors( rotateEnd, rotateStart ); + + var element = scope.domElement === document ? scope.domElement.body : scope.domElement; + + // rotating across whole screen goes 360 degrees around + rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientWidth * scope.rotateSpeed ); + + // rotating up and down along whole screen attempts to go 360, but limited to 180 + rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight * scope.rotateSpeed ); + + rotateStart.copy( rotateEnd ); + + scope.update(); + + } + + function handleTouchMoveDolly( event ) { + + //console.log( 'handleTouchMoveDolly' ); + + var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX; + var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY; + + var distance = Math.sqrt( dx * dx + dy * dy ); + + dollyEnd.set( 0, distance ); + + dollyDelta.subVectors( dollyEnd, dollyStart ); + + if ( dollyDelta.y > 0 ) { + + dollyOut( getZoomScale() ); + + } else if ( dollyDelta.y < 0 ) { + + dollyIn( getZoomScale() ); + + } + + dollyStart.copy( dollyEnd ); + + scope.update(); + + } + + function handleTouchMovePan( event ) { + + //console.log( 'handleTouchMovePan' ); + + panEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + + panDelta.subVectors( panEnd, panStart ); + + pan( panDelta.x, panDelta.y ); + + panStart.copy( panEnd ); + + scope.update(); + + } + + function handleTouchEnd( event ) { + + //console.log( 'handleTouchEnd' ); + + } + + // + // event handlers - FSM: listen for events and reset state + // + + function onMouseDown( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); + + switch ( event.button ) { + + case scope.mouseButtons.ORBIT: + + if ( scope.enableRotate === false ) return; + + handleMouseDownRotate( event ); + + state = STATE.ROTATE; + + break; + + case scope.mouseButtons.ZOOM: + + if ( scope.enableZoom === false ) return; + + handleMouseDownDolly( event ); + + state = STATE.DOLLY; + + break; + + case scope.mouseButtons.PAN: + + if ( scope.enablePan === false ) return; + + handleMouseDownPan( event ); + + state = STATE.PAN; + + break; + + } + + if ( state !== STATE.NONE ) { + + document.addEventListener( 'mousemove', onMouseMove, false ); + document.addEventListener( 'mouseup', onMouseUp, false ); + + scope.dispatchEvent( startEvent ); + + } + + } + + function onMouseMove( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); + + switch ( state ) { + + case STATE.ROTATE: + + if ( scope.enableRotate === false ) return; + + handleMouseMoveRotate( event ); + + break; + + case STATE.DOLLY: + + if ( scope.enableZoom === false ) return; + + handleMouseMoveDolly( event ); + + break; + + case STATE.PAN: + + if ( scope.enablePan === false ) return; + + handleMouseMovePan( event ); + + break; + + } + + } + + function onMouseUp( event ) { + + if ( scope.enabled === false ) return; + + handleMouseUp( event ); + + document.removeEventListener( 'mousemove', onMouseMove, false ); + document.removeEventListener( 'mouseup', onMouseUp, false ); + + scope.dispatchEvent( endEvent ); + + state = STATE.NONE; + + } + + function onMouseWheel( event ) { + + if ( scope.enabled === false || scope.enableZoom === false || ( state !== STATE.NONE && state !== STATE.ROTATE ) ) return; + + event.preventDefault(); + event.stopPropagation(); + + handleMouseWheel( event ); + + scope.dispatchEvent( startEvent ); // not sure why these are here... + scope.dispatchEvent( endEvent ); + + } + + function onKeyDown( event ) { + + if ( scope.enabled === false || scope.enableKeys === false || scope.enablePan === false ) return; + + handleKeyDown( event ); + + } + + function onTouchStart( event ) { + + if ( scope.enabled === false ) return; + + switch ( event.touches.length ) { + + case 1: // one-fingered touch: rotate + + if ( scope.enableRotate === false ) return; + + handleTouchStartRotate( event ); + + state = STATE.TOUCH_ROTATE; + + break; + + case 2: // two-fingered touch: dolly + + if ( scope.enableZoom === false ) return; + + handleTouchStartDolly( event ); + + state = STATE.TOUCH_DOLLY; + + break; + + case 3: // three-fingered touch: pan + + if ( scope.enablePan === false ) return; + + handleTouchStartPan( event ); + + state = STATE.TOUCH_PAN; + + break; + + default: + + state = STATE.NONE; + + } + + if ( state !== STATE.NONE ) { + + scope.dispatchEvent( startEvent ); + + } + + } + + function onTouchMove( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); + event.stopPropagation(); + + switch ( event.touches.length ) { + + case 1: // one-fingered touch: rotate + + if ( scope.enableRotate === false ) return; + if ( state !== STATE.TOUCH_ROTATE ) return; // is this needed?... + + handleTouchMoveRotate( event ); + + break; + + case 2: // two-fingered touch: dolly + + if ( scope.enableZoom === false ) return; + if ( state !== STATE.TOUCH_DOLLY ) return; // is this needed?... + + handleTouchMoveDolly( event ); + + break; + + case 3: // three-fingered touch: pan + + if ( scope.enablePan === false ) return; + if ( state !== STATE.TOUCH_PAN ) return; // is this needed?... + + handleTouchMovePan( event ); + + break; + + default: + + state = STATE.NONE; + + } + + } + + function onTouchEnd( event ) { + + if ( scope.enabled === false ) return; + + handleTouchEnd( event ); + + scope.dispatchEvent( endEvent ); + + state = STATE.NONE; + + } + + function onContextMenu( event ) { + + event.preventDefault(); + + } + + // + + scope.domElement.addEventListener( 'contextmenu', onContextMenu, false ); + + scope.domElement.addEventListener( 'mousedown', onMouseDown, false ); + scope.domElement.addEventListener( 'wheel', onMouseWheel, false ); + + scope.domElement.addEventListener( 'touchstart', onTouchStart, false ); + scope.domElement.addEventListener( 'touchend', onTouchEnd, false ); + scope.domElement.addEventListener( 'touchmove', onTouchMove, false ); + + window.addEventListener( 'keydown', onKeyDown, false ); + + // force an update at start + + this.update(); + +}; + +THREE.OrbitControls.prototype = Object.create( THREE.EventDispatcher.prototype ); +THREE.OrbitControls.prototype.constructor = THREE.OrbitControls; + +Object.defineProperties( THREE.OrbitControls.prototype, { + + center: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .center has been renamed to .target' ); + return this.target; + + } + + }, + + // backward compatibility + + noZoom: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.' ); + return ! this.enableZoom; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.' ); + this.enableZoom = ! value; + + } + + }, + + noRotate: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.' ); + return ! this.enableRotate; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.' ); + this.enableRotate = ! value; + + } + + }, + + noPan: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead.' ); + return ! this.enablePan; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead.' ); + this.enablePan = ! value; + + } + + }, + + noKeys: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.' ); + return ! this.enableKeys; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.' ); + this.enableKeys = ! value; + + } + + }, + + staticMoving: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.' ); + return ! this.enableDamping; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.' ); + this.enableDamping = ! value; + + } + + }, + + dynamicDampingFactor: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.' ); + return this.dampingFactor; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.' ); + this.dampingFactor = value; + + } + + } + +} ); diff --git a/client/js/PLYLoader.js b/client/js/PLYLoader.js new file mode 100644 index 0000000..182d71e --- /dev/null +++ b/client/js/PLYLoader.js @@ -0,0 +1,501 @@ +/** + * @author Wei Meng / http://about.me/menway + * + * Description: A THREE loader for PLY ASCII files (known as the Polygon + * File Format or the Stanford Triangle Format). + * + * Limitations: ASCII decoding assumes file is UTF-8. + * + * Usage: + * var loader = new THREE.PLYLoader(); + * loader.load('./models/ply/ascii/dolphins.ply', function (geometry) { + * + * scene.add( new THREE.Mesh( geometry ) ); + * + * } ); + * + * If the PLY file uses non standard property names, they can be mapped while + * loading. For example, the following maps the properties + * “diffuse_(red|green|blue)” in the file to standard color names. + * + * loader.setPropertyNameMapping( { + * diffuse_red: 'red', + * diffuse_green: 'green', + * diffuse_blue: 'blue' + * } ); + * + */ + + +THREE.PLYLoader = function ( manager ) { + + this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager; + + this.propertyNameMapping = {}; + +}; + +THREE.PLYLoader.prototype = { + + constructor: THREE.PLYLoader, + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var loader = new THREE.FileLoader( this.manager ); + loader.setResponseType( 'arraybuffer' ); + loader.load( url, function ( text ) { + + onLoad( scope.parse( text ) ); + + }, onProgress, onError ); + + }, + + setPropertyNameMapping: function ( mapping ) { + + this.propertyNameMapping = mapping; + + }, + + parse: function ( data ) { + + function isASCII( data ) { + + var header = parseHeader( bin2str( data ) ); + return header.format === 'ascii'; + + } + + function bin2str( buf ) { + + var array_buffer = new Uint8Array( buf ); + var str = ''; + + for ( var i = 0; i < buf.byteLength; i ++ ) { + + str += String.fromCharCode( array_buffer[ i ] ); // implicitly assumes little-endian + + } + + return str; + + } + + function parseHeader( data ) { + + var patternHeader = /ply([\s\S]*)end_header\s/; + var headerText = ''; + var headerLength = 0; + var result = patternHeader.exec( data ); + + if ( result !== null ) { + + headerText = result [ 1 ]; + headerLength = result[ 0 ].length; + + } + + var header = { + comments: [], + elements: [], + headerLength: headerLength + }; + + var lines = headerText.split( '\n' ); + var currentElement; + var lineType, lineValues; + + function make_ply_element_property( propertValues, propertyNameMapping ) { + + var property = { type: propertValues[ 0 ] }; + + if ( property.type === 'list' ) { + + property.name = propertValues[ 3 ]; + property.countType = propertValues[ 1 ]; + property.itemType = propertValues[ 2 ]; + + } else { + + property.name = propertValues[ 1 ]; + + } + + if ( property.name in propertyNameMapping ) { + + property.name = propertyNameMapping[ property.name ]; + + } + + return property; + + } + + for ( var i = 0; i < lines.length; i ++ ) { + + var line = lines[ i ]; + line = line.trim(); + + if ( line === '' ) continue; + + lineValues = line.split( /\s+/ ); + lineType = lineValues.shift(); + line = lineValues.join( ' ' ); + + switch ( lineType ) { + + case 'format': + + header.format = lineValues[ 0 ]; + header.version = lineValues[ 1 ]; + + break; + + case 'comment': + + header.comments.push( line ); + + break; + + case 'element': + + if ( currentElement !== undefined ) { + + header.elements.push( currentElement ); + + } + + currentElement = {}; + currentElement.name = lineValues[ 0 ]; + currentElement.count = parseInt( lineValues[ 1 ] ); + currentElement.properties = []; + + break; + + case 'property': + + currentElement.properties.push( make_ply_element_property( lineValues, scope.propertyNameMapping ) ); + + break; + + + default: + + console.log( 'unhandled', lineType, lineValues ); + + } + + } + + if ( currentElement !== undefined ) { + + header.elements.push( currentElement ); + + } + + return header; + + } + + function parseASCIINumber( n, type ) { + + switch ( type ) { + + case 'char': case 'uchar': case 'short': case 'ushort': case 'int': case 'uint': + case 'int8': case 'uint8': case 'int16': case 'uint16': case 'int32': case 'uint32': + + return parseInt( n ); + + case 'float': case 'double': case 'float32': case 'float64': + + return parseFloat( n ); + + } + + } + + function parseASCIIElement( properties, line ) { + + var values = line.split( /\s+/ ); + + var element = {}; + + for ( var i = 0; i < properties.length; i ++ ) { + + if ( properties[ i ].type === 'list' ) { + + var list = []; + var n = parseASCIINumber( values.shift(), properties[ i ].countType ); + + for ( var j = 0; j < n; j ++ ) { + + list.push( parseASCIINumber( values.shift(), properties[ i ].itemType ) ); + + } + + element[ properties[ i ].name ] = list; + + } else { + + element[ properties[ i ].name ] = parseASCIINumber( values.shift(), properties[ i ].type ); + + } + + } + + return element; + + } + + function parseASCII( data ) { + + // PLY ascii format specification, as per http://en.wikipedia.org/wiki/PLY_(file_format) + + var buffer = { + indices : [], + vertices : [], + normals : [], + uvs : [], + colors : [] + }; + + var result; + + var header = parseHeader( data ); + + var patternBody = /end_header\s([\s\S]*)$/; + var body = ''; + if ( ( result = patternBody.exec( data ) ) !== null ) { + + body = result [ 1 ]; + + } + + var lines = body.split( '\n' ); + var currentElement = 0; + var currentElementCount = 0; + + for ( var i = 0; i < lines.length; i ++ ) { + + var line = lines[ i ]; + line = line.trim(); + if ( line === '' ) { + + continue; + + } + + if ( currentElementCount >= header.elements[ currentElement ].count ) { + + currentElement ++; + currentElementCount = 0; + + } + + var element = parseASCIIElement( header.elements[ currentElement ].properties, line ); + + handleElement( buffer, header.elements[ currentElement ].name, element ); + + currentElementCount ++; + + } + + return postProcess( buffer ); + + } + + function postProcess( buffer ) { + + var geometry = new THREE.BufferGeometry(); + + // mandatory buffer data + + if ( buffer.indices.length > 0 ) { + + geometry.setIndex( buffer.indices ); + + } + + geometry.addAttribute( 'position', new THREE.Float32BufferAttribute( buffer.vertices, 3 ) ); + + // optional buffer data + + if ( buffer.normals.length > 0 ) { + + geometry.addAttribute( 'normal', new THREE.Float32BufferAttribute( buffer.normals, 3 ) ); + + } + + if ( buffer.uvs.length > 0 ) { + + geometry.addAttribute( 'uv', new THREE.Float32BufferAttribute( buffer.uvs, 2 ) ); + + } + + if ( buffer.colors.length > 0 ) { + + geometry.addAttribute( 'color', new THREE.Float32BufferAttribute( buffer.colors, 3 ) ); + + } + + geometry.computeBoundingSphere(); + + return geometry; + + } + + function handleElement( buffer, elementName, element ) { + + if ( elementName === 'vertex' ) { + + buffer.vertices.push( element.x, element.y, element.z ); + + if ( 'nx' in element && 'ny' in element && 'nz' in element ) { + + buffer.normals.push( element.nx, element.ny, element.nz ); + + } + + if ( 's' in element && 't' in element ) { + + buffer.uvs.push( element.s, element.t ); + + } + + if ( 'red' in element && 'green' in element && 'blue' in element ) { + + buffer.colors.push( element.red / 255.0, element.green / 255.0, element.blue / 255.0 ); + + } + + } else if ( elementName === 'face' ) { + + var vertex_indices = element.vertex_indices || element.vertex_index; // issue #9338 + + if ( vertex_indices.length === 3 ) { + + buffer.indices.push( vertex_indices[ 0 ], vertex_indices[ 1 ], vertex_indices[ 2 ] ); + + } else if ( vertex_indices.length === 4 ) { + + buffer.indices.push( vertex_indices[ 0 ], vertex_indices[ 1 ], vertex_indices[ 3 ] ); + buffer.indices.push( vertex_indices[ 1 ], vertex_indices[ 2 ], vertex_indices[ 3 ] ); + + } + + } + + } + + function binaryRead( dataview, at, type, little_endian ) { + + switch ( type ) { + + // corespondences for non-specific length types here match rply: + case 'int8': case 'char': return [ dataview.getInt8( at ), 1 ]; + case 'uint8': case 'uchar': return [ dataview.getUint8( at ), 1 ]; + case 'int16': case 'short': return [ dataview.getInt16( at, little_endian ), 2 ]; + case 'uint16': case 'ushort': return [ dataview.getUint16( at, little_endian ), 2 ]; + case 'int32': case 'int': return [ dataview.getInt32( at, little_endian ), 4 ]; + case 'uint32': case 'uint': return [ dataview.getUint32( at, little_endian ), 4 ]; + case 'float32': case 'float': return [ dataview.getFloat32( at, little_endian ), 4 ]; + case 'float64': case 'double': return [ dataview.getFloat64( at, little_endian ), 8 ]; + + } + + } + + function binaryReadElement( dataview, at, properties, little_endian ) { + + var element = {}; + var result, read = 0; + + for ( var i = 0; i < properties.length; i ++ ) { + + if ( properties[ i ].type === 'list' ) { + + var list = []; + + result = binaryRead( dataview, at + read, properties[ i ].countType, little_endian ); + var n = result[ 0 ]; + read += result[ 1 ]; + + for ( var j = 0; j < n; j ++ ) { + + result = binaryRead( dataview, at + read, properties[ i ].itemType, little_endian ); + list.push( result[ 0 ] ); + read += result[ 1 ]; + + } + + element[ properties[ i ].name ] = list; + + } else { + + result = binaryRead( dataview, at + read, properties[ i ].type, little_endian ); + element[ properties[ i ].name ] = result[ 0 ]; + read += result[ 1 ]; + + } + + } + + return [ element, read ]; + + } + + function parseBinary( data ) { + + var buffer = { + indices : [], + vertices : [], + normals : [], + uvs : [], + colors : [] + }; + + var header = parseHeader( bin2str( data ) ); + var little_endian = ( header.format === 'binary_little_endian' ); + var body = new DataView( data, header.headerLength ); + var result, loc = 0; + + for ( var currentElement = 0; currentElement < header.elements.length; currentElement ++ ) { + + for ( var currentElementCount = 0; currentElementCount < header.elements[ currentElement ].count; currentElementCount ++ ) { + + result = binaryReadElement( body, loc, header.elements[ currentElement ].properties, little_endian ); + loc += result[ 1 ]; + var element = result[ 0 ]; + + handleElement( buffer, header.elements[ currentElement ].name, element ); + + } + + } + + return postProcess( buffer ); + + } + + // + + var geometry; + var scope = this; + + if ( data instanceof ArrayBuffer ) { + + geometry = isASCII( data ) ? parseASCII( bin2str( data ) ) : parseBinary( data ); + + } else { + + geometry = parseASCII( data ); + + } + + return geometry; + + } + +}; diff --git a/client/js/TDSLoader.js b/client/js/TDSLoader.js new file mode 100644 index 0000000..8da8ae2 --- /dev/null +++ b/client/js/TDSLoader.js @@ -0,0 +1,1142 @@ +/* + * Autodesk 3DS threee.js file loader, based on lib3ds. + * + * Loads geometry with uv and materials basic properties with texture support. + * + * @author @tentone + * @author @timknip + * @class TDSLoader + * @constructor + */ + +'use strict'; + +THREE.TDSLoader = function ( manager ) { + + this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager; + this.debug = false; + + this.group = null; + this.position = 0; + + this.materials = []; + this.meshes = []; + +}; + +THREE.TDSLoader.prototype = { + + constructor: THREE.TDSLoader, + + /** + * Load 3ds file from url. + * + * @method load + * @param {[type]} url URL for the file. + * @param {Function} onLoad onLoad callback, receives group Object3D as argument. + * @param {Function} onProgress onProgress callback. + * @param {Function} onError onError callback. + */ + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var path = this.path !== undefined ? this.path : THREE.LoaderUtils.extractUrlBase( url ); + + var loader = new THREE.FileLoader( this.manager ); + + loader.setResponseType( 'arraybuffer' ); + + loader.load( url, function ( data ) { + + onLoad( scope.parse( data, path ) ); + + }, onProgress, onError ); + + }, + + /** + * Parse arraybuffer data and load 3ds file. + * + * @method parse + * @param {ArrayBuffer} arraybuffer Arraybuffer data to be loaded. + * @param {String} path Path for external resources. + * @return {Object3D} Group loaded from 3ds file. + */ + parse: function ( arraybuffer, path ) { + + this.group = new THREE.Group(); + this.position = 0; + this.materials = []; + this.meshes = []; + + this.readFile( arraybuffer, path ); + + for ( var i = 0; i < this.meshes.length; i ++ ) { + + this.group.add( this.meshes[ i ] ); + + } + + return this.group; + + }, + + /** + * Decode file content to read 3ds data. + * + * @method readFile + * @param {ArrayBuffer} arraybuffer Arraybuffer data to be loaded. + */ + readFile: function ( arraybuffer, path ) { + + var data = new DataView( arraybuffer ); + var chunk = this.readChunk( data ); + + if ( chunk.id === MLIBMAGIC || chunk.id === CMAGIC || chunk.id === M3DMAGIC ) { + + var next = this.nextChunk( data, chunk ); + + while ( next !== 0 ) { + + if ( next === M3D_VERSION ) { + + var version = this.readDWord( data ); + this.debugMessage( '3DS file version: ' + version ); + + } else if ( next === MDATA ) { + + this.resetPosition( data ); + this.readMeshData( data, path ); + + } else { + + this.debugMessage( 'Unknown main chunk: ' + next.toString( 16 ) ); + + } + + next = this.nextChunk( data, chunk ); + + } + + } + + this.debugMessage( 'Parsed ' + this.meshes.length + ' meshes' ); + + }, + + /** + * Read mesh data chunk. + * + * @method readMeshData + * @param {Dataview} data Dataview in use. + */ + readMeshData: function ( data, path ) { + + var chunk = this.readChunk( data ); + var next = this.nextChunk( data, chunk ); + + while ( next !== 0 ) { + + if ( next === MESH_VERSION ) { + + var version = + this.readDWord( data ); + this.debugMessage( 'Mesh Version: ' + version ); + + } else if ( next === MASTER_SCALE ) { + + var scale = this.readFloat( data ); + this.debugMessage( 'Master scale: ' + scale ); + this.group.scale.set( scale, scale, scale ); + + } else if ( next === NAMED_OBJECT ) { + + this.debugMessage( 'Named Object' ); + this.resetPosition( data ); + this.readNamedObject( data ); + + } else if ( next === MAT_ENTRY ) { + + this.debugMessage( 'Material' ); + this.resetPosition( data ); + this.readMaterialEntry( data, path ); + + } else { + + this.debugMessage( 'Unknown MDATA chunk: ' + next.toString( 16 ) ); + + } + + next = this.nextChunk( data, chunk ); + + } + + }, + + /** + * Read named object chunk. + * + * @method readNamedObject + * @param {Dataview} data Dataview in use. + */ + readNamedObject: function ( data ) { + + var chunk = this.readChunk( data ); + var name = this.readString( data, 64 ); + chunk.cur = this.position; + + var next = this.nextChunk( data, chunk ); + while ( next !== 0 ) { + + if ( next === N_TRI_OBJECT ) { + + this.resetPosition( data ); + var mesh = this.readMesh( data ); + mesh.name = name; + this.meshes.push( mesh ); + + } else { + + this.debugMessage( 'Unknown named object chunk: ' + next.toString( 16 ) ); + + } + + next = this.nextChunk( data, chunk ); + + } + + this.endChunk( chunk ); + + }, + + /** + * Read material data chunk and add it to the material list. + * + * @method readMaterialEntry + * @param {Dataview} data Dataview in use. + */ + readMaterialEntry: function ( data, path ) { + + var chunk = this.readChunk( data ); + var next = this.nextChunk( data, chunk ); + var material = new THREE.MeshPhongMaterial(); + + while ( next !== 0 ) { + + if ( next === MAT_NAME ) { + + material.name = this.readString( data, 64 ); + this.debugMessage( ' Name: ' + material.name ); + + } else if ( next === MAT_WIRE ) { + + this.debugMessage( ' Wireframe' ); + material.wireframe = true; + + } else if ( next === MAT_WIRE_SIZE ) { + + var value = this.readByte( data ); + material.wireframeLinewidth = value; + this.debugMessage( ' Wireframe Thickness: ' + value ); + + } else if ( next === MAT_TWO_SIDE ) { + + material.side = THREE.DoubleSide; + this.debugMessage( ' DoubleSided' ); + + } else if ( next === MAT_ADDITIVE ) { + + this.debugMessage( ' Additive Blending' ); + material.blending = THREE.AdditiveBlending; + + } else if ( next === MAT_DIFFUSE ) { + + this.debugMessage( ' Diffuse Color' ); + material.color = this.readColor( data ); + + } else if ( next === MAT_SPECULAR ) { + + this.debugMessage( ' Specular Color' ); + material.specular = this.readColor( data ); + + } else if ( next === MAT_AMBIENT ) { + + this.debugMessage( ' Ambient color' ); + material.color = this.readColor( data ); + + } else if ( next === MAT_SHININESS ) { + + var shininess = this.readWord( data ); + material.shininess = shininess; + this.debugMessage( ' Shininess : ' + shininess ); + + } else if ( next === MAT_TEXMAP ) { + + this.debugMessage( ' ColorMap' ); + this.resetPosition( data ); + material.map = this.readMap( data, path ); + + } else if ( next === MAT_BUMPMAP ) { + + this.debugMessage( ' BumpMap' ); + this.resetPosition( data ); + material.bumpMap = this.readMap( data, path ); + + } else if ( next === MAT_OPACMAP ) { + + this.debugMessage( ' OpacityMap' ); + this.resetPosition( data ); + material.alphaMap = this.readMap( data, path ); + + } else if ( next === MAT_SPECMAP ) { + + this.debugMessage( ' SpecularMap' ); + this.resetPosition( data ); + material.specularMap = this.readMap( data, path ); + + } else { + + this.debugMessage( ' Unknown material chunk: ' + next.toString( 16 ) ); + + } + + next = this.nextChunk( data, chunk ); + + } + + this.endChunk( chunk ); + + this.materials[ material.name ] = material; + + }, + + /** + * Read mesh data chunk. + * + * @method readMesh + * @param {Dataview} data Dataview in use. + */ + readMesh: function ( data ) { + + var chunk = this.readChunk( data ); + var next = this.nextChunk( data, chunk ); + + var useBufferGeometry = false; + var geometry = null; + var uvs = []; + + if ( useBufferGeometry ) { + + geometry = new THREE.BufferGeometry(); + + } else { + + geometry = new THREE.Geometry(); + + } + + var material = new THREE.MeshPhongMaterial(); + var mesh = new THREE.Mesh( geometry, material ); + mesh.name = 'mesh'; + + while ( next !== 0 ) { + + if ( next === POINT_ARRAY ) { + + var points = this.readWord( data ); + + this.debugMessage( ' Vertex: ' + points ); + + //BufferGeometry + + if ( useBufferGeometry ) { + + var vertices = []; + for ( var i = 0; i < points; i ++ ) { + + vertices.push( this.readFloat( data ) ); + vertices.push( this.readFloat( data ) ); + vertices.push( this.readFloat( data ) ); + + } + + geometry.addAttribute( 'position', new THREE.BufferAttribute( new Float32Array( vertices ), 3 ) ); + + } else { //Geometry + + for ( var i = 0; i < points; i ++ ) { + + geometry.vertices.push( new THREE.Vector3( this.readFloat( data ), this.readFloat( data ), this.readFloat( data ) ) ); + + } + + } + + } else if ( next === FACE_ARRAY ) { + + this.resetPosition( data ); + this.readFaceArray( data, mesh ); + + } else if ( next === TEX_VERTS ) { + + var texels = this.readWord( data ); + + this.debugMessage( ' UV: ' + texels ); + + //BufferGeometry + + if ( useBufferGeometry ) { + + var uvs = []; + for ( var i = 0; i < texels; i ++ ) { + + uvs.push( this.readFloat( data ) ); + uvs.push( this.readFloat( data ) ); + + } + geometry.addAttribute( 'uv', new THREE.BufferAttribute( new Float32Array( uvs ), 2 ) ); + + } else { //Geometry + + uvs = []; + for ( var i = 0; i < texels; i ++ ) { + + uvs.push( new THREE.Vector2( this.readFloat( data ), this.readFloat( data ) ) ); + + } + + } + + } else if ( next === MESH_MATRIX ) { + + this.debugMessage( ' Tranformation Matrix (TODO)' ); + + var values = []; + for ( var i = 0; i < 12; i ++ ) { + + values[ i ] = this.readFloat( data ); + + } + + var matrix = new THREE.Matrix4(); + + //X Line + matrix.elements[ 0 ] = values[ 0 ]; + matrix.elements[ 1 ] = values[ 6 ]; + matrix.elements[ 2 ] = values[ 3 ]; + matrix.elements[ 3 ] = values[ 9 ]; + + //Y Line + matrix.elements[ 4 ] = values[ 2 ]; + matrix.elements[ 5 ] = values[ 8 ]; + matrix.elements[ 6 ] = values[ 5 ]; + matrix.elements[ 7 ] = values[ 11 ]; + + //Z Line + matrix.elements[ 8 ] = values[ 1 ]; + matrix.elements[ 9 ] = values[ 7 ]; + matrix.elements[ 10 ] = values[ 4 ]; + matrix.elements[ 11 ] = values[ 10 ]; + + //W Line + matrix.elements[ 12 ] = 0; + matrix.elements[ 13 ] = 0; + matrix.elements[ 14 ] = 0; + matrix.elements[ 15 ] = 1; + + matrix.transpose(); + + var inverse = new THREE.Matrix4(); + inverse.getInverse( matrix, true ); + geometry.applyMatrix( inverse ); + + matrix.decompose( mesh.position, mesh.quaternion, mesh.scale ); + + } else { + + this.debugMessage( ' Unknown mesh chunk: ' + next.toString( 16 ) ); + + } + + next = this.nextChunk( data, chunk ); + + } + + this.endChunk( chunk ); + + if ( ! useBufferGeometry ) { + + //geometry.faceVertexUvs[0][faceIndex][vertexIndex] + + if ( uvs.length > 0 ) { + + var faceUV = []; + + for ( var i = 0; i < geometry.faces.length; i ++ ) { + + faceUV.push( [ uvs[ geometry.faces[ i ].a ], uvs[ geometry.faces[ i ].b ], uvs[ geometry.faces[ i ].c ] ] ); + + } + + geometry.faceVertexUvs[ 0 ] = faceUV; + + } + + geometry.computeVertexNormals(); + + } + + return mesh; + + }, + + /** + * Read face array data chunk. + * + * @method readFaceArray + * @param {Dataview} data Dataview in use. + * @param {Mesh} mesh Mesh to be filled with the data read. + */ + readFaceArray: function ( data, mesh ) { + + var chunk = this.readChunk( data ); + var faces = this.readWord( data ); + + this.debugMessage( ' Faces: ' + faces ); + + for ( var i = 0; i < faces; ++ i ) { + + mesh.geometry.faces.push( new THREE.Face3( this.readWord( data ), this.readWord( data ), this.readWord( data ) ) ); + + var visibility = this.readWord( data ); + + } + + //The rest of the FACE_ARRAY chunk is subchunks + + while ( this.position < chunk.end ) { + + var chunk = this.readChunk( data ); + + if ( chunk.id === MSH_MAT_GROUP ) { + + this.debugMessage( ' Material Group' ); + + this.resetPosition( data ); + + var group = this.readMaterialGroup( data ); + + var material = this.materials[ group.name ]; + + if ( material !== undefined ) { + + mesh.material = material; + + if ( material.name === '' ) { + + material.name = mesh.name; + + } + + } + + } else { + + this.debugMessage( ' Unknown face array chunk: ' + chunk.toString( 16 ) ); + + } + + this.endChunk( chunk ); + + } + + this.endChunk( chunk ); + + }, + + /** + * Read texture map data chunk. + * + * @method readMap + * @param {Dataview} data Dataview in use. + * @return {Texture} Texture read from this data chunk. + */ + readMap: function ( data, path ) { + + var chunk = this.readChunk( data ); + var next = this.nextChunk( data, chunk ); + var texture = {}; + + var loader = new THREE.TextureLoader( this.manager ); + loader.setPath( path ); + + while ( next !== 0 ) { + + if ( next === MAT_MAPNAME ) { + + var name = this.readString( data, 128 ); + texture = loader.load( name ); + + this.debugMessage( ' File: ' + path + name ); + + } else if ( next === MAT_MAP_UOFFSET ) { + + texture.offset.x = this.readFloat( data ); + this.debugMessage( ' OffsetX: ' + texture.offset.x ); + + } else if ( next === MAT_MAP_VOFFSET ) { + + texture.offset.y = this.readFloat( data ); + this.debugMessage( ' OffsetY: ' + texture.offset.y ); + + } else if ( next === MAT_MAP_USCALE ) { + + texture.repeat.x = this.readFloat( data ); + this.debugMessage( ' RepeatX: ' + texture.repeat.x ); + + } else if ( next === MAT_MAP_VSCALE ) { + + texture.repeat.y = this.readFloat( data ); + this.debugMessage( ' RepeatY: ' + texture.repeat.y ); + + } else { + + this.debugMessage( ' Unknown map chunk: ' + next.toString( 16 ) ); + + } + + next = this.nextChunk( data, chunk ); + + } + + this.endChunk( chunk ); + + return texture; + + }, + + /** + * Read material group data chunk. + * + * @method readMaterialGroup + * @param {Dataview} data Dataview in use. + * @return {Object} Object with name and index of the object. + */ + readMaterialGroup: function ( data ) { + + var chunk = this.readChunk( data ); + var name = this.readString( data, 64 ); + var numFaces = this.readWord( data ); + + this.debugMessage( ' Name: ' + name ); + this.debugMessage( ' Faces: ' + numFaces ); + + var index = []; + for ( var i = 0; i < numFaces; ++ i ) { + + index.push( this.readWord( data ) ); + + } + + return { name: name, index: index }; + + }, + + /** + * Read a color value. + * + * @method readColor + * @param {DataView} data Dataview. + * @return {Color} Color value read.. + */ + readColor: function ( data ) { + + var chunk = this.readChunk( data ); + var color = new THREE.Color(); + + if ( chunk.id === COLOR_24 || chunk.id === LIN_COLOR_24 ) { + + var r = this.readByte( data ); + var g = this.readByte( data ); + var b = this.readByte( data ); + + color.setRGB( r / 255, g / 255, b / 255 ); + + this.debugMessage( ' Color: ' + color.r + ', ' + color.g + ', ' + color.b ); + + } else if ( chunk.id === COLOR_F || chunk.id === LIN_COLOR_F ) { + + var r = this.readFloat( data ); + var g = this.readFloat( data ); + var b = this.readFloat( data ); + + color.setRGB( r, g, b ); + + this.debugMessage( ' Color: ' + color.r + ', ' + color.g + ', ' + color.b ); + + } else { + + this.debugMessage( ' Unknown color chunk: ' + chunk.toString( 16 ) ); + + } + + this.endChunk( chunk ); + return color; + + }, + + /** + * Read next chunk of data. + * + * @method readChunk + * @param {DataView} data Dataview. + * @return {Object} Chunk of data read. + */ + readChunk: function ( data ) { + + var chunk = {}; + + chunk.cur = this.position; + chunk.id = this.readWord( data ); + chunk.size = this.readDWord( data ); + chunk.end = chunk.cur + chunk.size; + chunk.cur += 6; + + return chunk; + + }, + + /** + * Set position to the end of the current chunk of data. + * + * @method endChunk + * @param {Object} chunk Data chunk. + */ + endChunk: function ( chunk ) { + + this.position = chunk.end; + + }, + + /** + * Move to the next data chunk. + * + * @method nextChunk + * @param {DataView} data Dataview. + * @param {Object} chunk Data chunk. + */ + nextChunk: function ( data, chunk ) { + + if ( chunk.cur >= chunk.end ) { + + return 0; + + } + + this.position = chunk.cur; + + try { + + var next = this.readChunk( data ); + chunk.cur += next.size; + return next.id; + + } catch ( e ) { + + this.debugMessage( 'Unable to read chunk at ' + this.position ); + return 0; + + } + + }, + + /** + * Reset dataview position. + * + * @method resetPosition + * @param {DataView} data Dataview. + */ + resetPosition: function () { + + this.position -= 6; + + }, + + /** + * Read byte value. + * + * @method readByte + * @param {DataView} data Dataview to read data from. + * @return {Number} Data read from the dataview. + */ + readByte: function ( data ) { + + var v = data.getUint8( this.position, true ); + this.position += 1; + return v; + + }, + + /** + * Read 32 bit float value. + * + * @method readFloat + * @param {DataView} data Dataview to read data from. + * @return {Number} Data read from the dataview. + */ + readFloat: function ( data ) { + + try { + + var v = data.getFloat32( this.position, true ); + this.position += 4; + return v; + + } catch ( e ) { + + this.debugMessage( e + ' ' + this.position + ' ' + data.byteLength ); + + } + + }, + + /** + * Read 32 bit signed integer value. + * + * @method readInt + * @param {DataView} data Dataview to read data from. + * @return {Number} Data read from the dataview. + */ + readInt: function ( data ) { + + var v = data.getInt32( this.position, true ); + this.position += 4; + return v; + + }, + + /** + * Read 16 bit signed integer value. + * + * @method readShort + * @param {DataView} data Dataview to read data from. + * @return {Number} Data read from the dataview. + */ + readShort: function ( data ) { + + var v = data.getInt16( this.position, true ); + this.position += 2; + return v; + + }, + + /** + * Read 64 bit unsigned integer value. + * + * @method readDWord + * @param {DataView} data Dataview to read data from. + * @return {Number} Data read from the dataview. + */ + readDWord: function ( data ) { + + var v = data.getUint32( this.position, true ); + this.position += 4; + return v; + + }, + + /** + * Read 32 bit unsigned integer value. + * + * @method readWord + * @param {DataView} data Dataview to read data from. + * @return {Number} Data read from the dataview. + */ + readWord: function ( data ) { + + var v = data.getUint16( this.position, true ); + this.position += 2; + return v; + + }, + + /** + * Read string value. + * + * @method readString + * @param {DataView} data Dataview to read data from. + * @param {Number} maxLength Max size of the string to be read. + * @return {String} Data read from the dataview. + */ + readString: function ( data, maxLength ) { + + var s = ''; + + for ( var i = 0; i < maxLength; i ++ ) { + + var c = this.readByte( data ); + if ( ! c ) { + + break; + + } + + s += String.fromCharCode( c ); + + } + + return s; + + }, + + /** + * Set resource path used to determine the file path to attached resources. + * + * @method setPath + * @param {String} path Path to resources. + * @return Self for chaining. + */ + setPath: function ( path ) { + + this.path = path; + + return this; + + }, + + /** + * Print debug message to the console. + * + * Is controlled by a flag to show or hide debug messages. + * + * @method debugMessage + * @param {Object} message Debug message to print to the console. + */ + debugMessage: function ( message ) { + + if ( this.debug ) { + + console.log( message ); + + } + + } +}; + +var NULL_CHUNK = 0x0000; +var M3DMAGIC = 0x4D4D; +var SMAGIC = 0x2D2D; +var LMAGIC = 0x2D3D; +var MLIBMAGIC = 0x3DAA; +var MATMAGIC = 0x3DFF; +var CMAGIC = 0xC23D; +var M3D_VERSION = 0x0002; +var M3D_KFVERSION = 0x0005; +var COLOR_F = 0x0010; +var COLOR_24 = 0x0011; +var LIN_COLOR_24 = 0x0012; +var LIN_COLOR_F = 0x0013; +var INT_PERCENTAGE = 0x0030; +var FLOAT_PERCENTAGE = 0x0031; +var MDATA = 0x3D3D; +var MESH_VERSION = 0x3D3E; +var MASTER_SCALE = 0x0100; +var LO_SHADOW_BIAS = 0x1400; +var HI_SHADOW_BIAS = 0x1410; +var SHADOW_MAP_SIZE = 0x1420; +var SHADOW_SAMPLES = 0x1430; +var SHADOW_RANGE = 0x1440; +var SHADOW_FILTER = 0x1450; +var RAY_BIAS = 0x1460; +var O_CONSTS = 0x1500; +var AMBIENT_LIGHT = 0x2100; +var BIT_MAP = 0x1100; +var SOLID_BGND = 0x1200; +var V_GRADIENT = 0x1300; +var USE_BIT_MAP = 0x1101; +var USE_SOLID_BGND = 0x1201; +var USE_V_GRADIENT = 0x1301; +var FOG = 0x2200; +var FOG_BGND = 0x2210; +var LAYER_FOG = 0x2302; +var DISTANCE_CUE = 0x2300; +var DCUE_BGND = 0x2310; +var USE_FOG = 0x2201; +var USE_LAYER_FOG = 0x2303; +var USE_DISTANCE_CUE = 0x2301; +var MAT_ENTRY = 0xAFFF; +var MAT_NAME = 0xA000; +var MAT_AMBIENT = 0xA010; +var MAT_DIFFUSE = 0xA020; +var MAT_SPECULAR = 0xA030; +var MAT_SHININESS = 0xA040; +var MAT_SHIN2PCT = 0xA041; +var MAT_TRANSPARENCY = 0xA050; +var MAT_XPFALL = 0xA052; +var MAT_USE_XPFALL = 0xA240; +var MAT_REFBLUR = 0xA053; +var MAT_SHADING = 0xA100; +var MAT_USE_REFBLUR = 0xA250; +var MAT_SELF_ILLUM = 0xA084; +var MAT_TWO_SIDE = 0xA081; +var MAT_DECAL = 0xA082; +var MAT_ADDITIVE = 0xA083; +var MAT_WIRE = 0xA085; +var MAT_FACEMAP = 0xA088; +var MAT_TRANSFALLOFF_IN = 0xA08A; +var MAT_PHONGSOFT = 0xA08C; +var MAT_WIREABS = 0xA08E; +var MAT_WIRE_SIZE = 0xA087; +var MAT_TEXMAP = 0xA200; +var MAT_SXP_TEXT_DATA = 0xA320; +var MAT_TEXMASK = 0xA33E; +var MAT_SXP_TEXTMASK_DATA = 0xA32A; +var MAT_TEX2MAP = 0xA33A; +var MAT_SXP_TEXT2_DATA = 0xA321; +var MAT_TEX2MASK = 0xA340; +var MAT_SXP_TEXT2MASK_DATA = 0xA32C; +var MAT_OPACMAP = 0xA210; +var MAT_SXP_OPAC_DATA = 0xA322; +var MAT_OPACMASK = 0xA342; +var MAT_SXP_OPACMASK_DATA = 0xA32E; +var MAT_BUMPMAP = 0xA230; +var MAT_SXP_BUMP_DATA = 0xA324; +var MAT_BUMPMASK = 0xA344; +var MAT_SXP_BUMPMASK_DATA = 0xA330; +var MAT_SPECMAP = 0xA204; +var MAT_SXP_SPEC_DATA = 0xA325; +var MAT_SPECMASK = 0xA348; +var MAT_SXP_SPECMASK_DATA = 0xA332; +var MAT_SHINMAP = 0xA33C; +var MAT_SXP_SHIN_DATA = 0xA326; +var MAT_SHINMASK = 0xA346; +var MAT_SXP_SHINMASK_DATA = 0xA334; +var MAT_SELFIMAP = 0xA33D; +var MAT_SXP_SELFI_DATA = 0xA328; +var MAT_SELFIMASK = 0xA34A; +var MAT_SXP_SELFIMASK_DATA = 0xA336; +var MAT_REFLMAP = 0xA220; +var MAT_REFLMASK = 0xA34C; +var MAT_SXP_REFLMASK_DATA = 0xA338; +var MAT_ACUBIC = 0xA310; +var MAT_MAPNAME = 0xA300; +var MAT_MAP_TILING = 0xA351; +var MAT_MAP_TEXBLUR = 0xA353; +var MAT_MAP_USCALE = 0xA354; +var MAT_MAP_VSCALE = 0xA356; +var MAT_MAP_UOFFSET = 0xA358; +var MAT_MAP_VOFFSET = 0xA35A; +var MAT_MAP_ANG = 0xA35C; +var MAT_MAP_COL1 = 0xA360; +var MAT_MAP_COL2 = 0xA362; +var MAT_MAP_RCOL = 0xA364; +var MAT_MAP_GCOL = 0xA366; +var MAT_MAP_BCOL = 0xA368; +var NAMED_OBJECT = 0x4000; +var N_DIRECT_LIGHT = 0x4600; +var DL_OFF = 0x4620; +var DL_OUTER_RANGE = 0x465A; +var DL_INNER_RANGE = 0x4659; +var DL_MULTIPLIER = 0x465B; +var DL_EXCLUDE = 0x4654; +var DL_ATTENUATE = 0x4625; +var DL_SPOTLIGHT = 0x4610; +var DL_SPOT_ROLL = 0x4656; +var DL_SHADOWED = 0x4630; +var DL_LOCAL_SHADOW2 = 0x4641; +var DL_SEE_CONE = 0x4650; +var DL_SPOT_RECTANGULAR = 0x4651; +var DL_SPOT_ASPECT = 0x4657; +var DL_SPOT_PROJECTOR = 0x4653; +var DL_SPOT_OVERSHOOT = 0x4652; +var DL_RAY_BIAS = 0x4658; +var DL_RAYSHAD = 0x4627; +var N_CAMERA = 0x4700; +var CAM_SEE_CONE = 0x4710; +var CAM_RANGES = 0x4720; +var OBJ_HIDDEN = 0x4010; +var OBJ_VIS_LOFTER = 0x4011; +var OBJ_DOESNT_CAST = 0x4012; +var OBJ_DONT_RECVSHADOW = 0x4017; +var OBJ_MATTE = 0x4013; +var OBJ_FAST = 0x4014; +var OBJ_PROCEDURAL = 0x4015; +var OBJ_FROZEN = 0x4016; +var N_TRI_OBJECT = 0x4100; +var POINT_ARRAY = 0x4110; +var POINT_FLAG_ARRAY = 0x4111; +var FACE_ARRAY = 0x4120; +var MSH_MAT_GROUP = 0x4130; +var SMOOTH_GROUP = 0x4150; +var MSH_BOXMAP = 0x4190; +var TEX_VERTS = 0x4140; +var MESH_MATRIX = 0x4160; +var MESH_COLOR = 0x4165; +var MESH_TEXTURE_INFO = 0x4170; +var KFDATA = 0xB000; +var KFHDR = 0xB00A; +var KFSEG = 0xB008; +var KFCURTIME = 0xB009; +var AMBIENT_NODE_TAG = 0xB001; +var OBJECT_NODE_TAG = 0xB002; +var CAMERA_NODE_TAG = 0xB003; +var TARGET_NODE_TAG = 0xB004; +var LIGHT_NODE_TAG = 0xB005; +var L_TARGET_NODE_TAG = 0xB006; +var SPOTLIGHT_NODE_TAG = 0xB007; +var NODE_ID = 0xB030; +var NODE_HDR = 0xB010; +var PIVOT = 0xB013; +var INSTANCE_NAME = 0xB011; +var MORPH_SMOOTH = 0xB015; +var BOUNDBOX = 0xB014; +var POS_TRACK_TAG = 0xB020; +var COL_TRACK_TAG = 0xB025; +var ROT_TRACK_TAG = 0xB021; +var SCL_TRACK_TAG = 0xB022; +var MORPH_TRACK_TAG = 0xB026; +var FOV_TRACK_TAG = 0xB023; +var ROLL_TRACK_TAG = 0xB024; +var HOT_TRACK_TAG = 0xB027; +var FALL_TRACK_TAG = 0xB028; +var HIDE_TRACK_TAG = 0xB029; +var POLY_2D = 0x5000; +var SHAPE_OK = 0x5010; +var SHAPE_NOT_OK = 0x5011; +var SHAPE_HOOK = 0x5020; +var PATH_3D = 0x6000; +var PATH_MATRIX = 0x6005; +var SHAPE_2D = 0x6010; +var M_SCALE = 0x6020; +var M_TWIST = 0x6030; +var M_TEETER = 0x6040; +var M_FIT = 0x6050; +var M_BEVEL = 0x6060; +var XZ_CURVE = 0x6070; +var YZ_CURVE = 0x6080; +var INTERPCT = 0x6090; +var DEFORM_LIMIT = 0x60A0; +var USE_CONTOUR = 0x6100; +var USE_TWEEN = 0x6110; +var USE_SCALE = 0x6120; +var USE_TWIST = 0x6130; +var USE_TEETER = 0x6140; +var USE_FIT = 0x6150; +var USE_BEVEL = 0x6160; +var DEFAULT_VIEW = 0x3000; +var VIEW_TOP = 0x3010; +var VIEW_BOTTOM = 0x3020; +var VIEW_LEFT = 0x3030; +var VIEW_RIGHT = 0x3040; +var VIEW_FRONT = 0x3050; +var VIEW_BACK = 0x3060; +var VIEW_USER = 0x3070; +var VIEW_CAMERA = 0x3080; +var VIEW_WINDOW = 0x3090; +var VIEWPORT_LAYOUT_OLD = 0x7000; +var VIEWPORT_DATA_OLD = 0x7010; +var VIEWPORT_LAYOUT = 0x7001; +var VIEWPORT_DATA = 0x7011; +var VIEWPORT_DATA_3 = 0x7012; +var VIEWPORT_SIZE = 0x7020; +var NETWORK_VIEW = 0x7030; diff --git a/client/js/Treant.js b/client/js/Treant.js new file mode 100644 index 0000000..beb061c --- /dev/null +++ b/client/js/Treant.js @@ -0,0 +1,2171 @@ +/* + * Treant-js + * + * (c) 2013 Fran Peručić + * Treant-js may be freely distributed under the MIT license. + * For all details and documentation: + * http://fperucic.github.io/treant-js + * + * Treant is an open-source JavaScipt library for visualization of tree diagrams. + * It implements the node positioning algorithm of John Q. Walker II "Positioning nodes for General Trees". + * + * References: + * Emilio Cortegoso Lobato: ECOTree.js v1.0 (October 26th, 2006) + * + * Contributors: + * Fran Peručić, https://github.com/fperucic + * Dave Goodchild, https://github.com/dlgoodchild + */ + +;( function() { + // Polyfill for IE to use startsWith + if (!String.prototype.startsWith) { + String.prototype.startsWith = function(searchString, position){ + return this.substr(position || 0, searchString.length) === searchString; + }; + } + + var $ = null; + + var UTIL = { + + /** + * Directly updates, recursively/deeply, the first object with all properties in the second object + * @param {object} applyTo + * @param {object} applyFrom + * @return {object} + */ + inheritAttrs: function( applyTo, applyFrom ) { + for ( var attr in applyFrom ) { + if ( applyFrom.hasOwnProperty( attr ) ) { + if ( ( applyTo[attr] instanceof Object && applyFrom[attr] instanceof Object ) && ( typeof applyFrom[attr] !== 'function' ) ) { + this.inheritAttrs( applyTo[attr], applyFrom[attr] ); + } + else { + applyTo[attr] = applyFrom[attr]; + } + } + } + return applyTo; + }, + + /** + * Returns a new object by merging the two supplied objects + * @param {object} obj1 + * @param {object} obj2 + * @returns {object} + */ + createMerge: function( obj1, obj2 ) { + var newObj = {}; + if ( obj1 ) { + this.inheritAttrs( newObj, this.cloneObj( obj1 ) ); + } + if ( obj2 ) { + this.inheritAttrs( newObj, obj2 ); + } + return newObj; + }, + + /** + * Takes any number of arguments + * @returns {*} + */ + extend: function() { + if ( $ ) { + Array.prototype.unshift.apply( arguments, [true, {}] ); + return $.extend.apply( $, arguments ); + } + else { + return UTIL.createMerge.apply( this, arguments ); + } + }, + + /** + * @param {object} obj + * @returns {*} + */ + cloneObj: function ( obj ) { + if ( Object( obj ) !== obj ) { + return obj; + } + var res = new obj.constructor(); + for ( var key in obj ) { + if ( obj.hasOwnProperty(key) ) { + res[key] = this.cloneObj(obj[key]); + } + } + return res; + }, + + /** + * @param {Element} el + * @param {string} eventType + * @param {function} handler + */ + addEvent: function( el, eventType, handler ) { + if ( $ ) { + $( el ).on( eventType+'.treant', handler ); + } + else if ( el.addEventListener ) { // DOM Level 2 browsers + el.addEventListener( eventType, handler, false ); + } + else if ( el.attachEvent ) { // IE <= 8 + el.attachEvent( 'on' + eventType, handler ); + } + else { // ancient browsers + el['on' + eventType] = handler; + } + }, + + /** + * @param {string} selector + * @param {boolean} raw + * @param {Element} parentEl + * @returns {Element|jQuery} + */ + findEl: function( selector, raw, parentEl ) { + parentEl = parentEl || document; + + if ( $ ) { + var $element = $( selector, parentEl ); + return ( raw? $element.get( 0 ): $element ); + } + else { + // todo: getElementsByName() + // todo: getElementsByTagName() + // todo: getElementsByTagNameNS() + if ( selector.charAt( 0 ) === '#' ) { + return parentEl.getElementById( selector.substring( 1 ) ); + } + else if ( selector.charAt( 0 ) === '.' ) { + var oElements = parentEl.getElementsByClassName( selector.substring( 1 ) ); + return ( oElements.length? oElements[0]: null ); + } + + throw new Error( 'Unknown container element' ); + } + }, + + getOuterHeight: function( element ) { + var nRoundingCompensation = 1; + if ( typeof element.getBoundingClientRect === 'function' ) { + return element.getBoundingClientRect().height; + } + else if ( $ ) { + return Math.ceil( $( element ).outerHeight() ) + nRoundingCompensation; + } + else { + return Math.ceil( + element.clientHeight + + UTIL.getStyle( element, 'border-top-width', true ) + + UTIL.getStyle( element, 'border-bottom-width', true ) + + UTIL.getStyle( element, 'padding-top', true ) + + UTIL.getStyle( element, 'padding-bottom', true ) + + nRoundingCompensation + ); + } + }, + + getOuterWidth: function( element ) { + var nRoundingCompensation = 1; + if ( typeof element.getBoundingClientRect === 'function' ) { + return element.getBoundingClientRect().width; + } + else if ( $ ) { + return Math.ceil( $( element ).outerWidth() ) + nRoundingCompensation; + } + else { + return Math.ceil( + element.clientWidth + + UTIL.getStyle( element, 'border-left-width', true ) + + UTIL.getStyle( element, 'border-right-width', true ) + + UTIL.getStyle( element, 'padding-left', true ) + + UTIL.getStyle( element, 'padding-right', true ) + + nRoundingCompensation + ); + } + }, + + getStyle: function( element, strCssRule, asInt ) { + var strValue = ""; + if ( document.defaultView && document.defaultView.getComputedStyle ) { + strValue = document.defaultView.getComputedStyle( element, '' ).getPropertyValue( strCssRule ); + } + else if( element.currentStyle ) { + strCssRule = strCssRule.replace(/\-(\w)/g, + function (strMatch, p1){ + return p1.toUpperCase(); + } + ); + strValue = element.currentStyle[strCssRule]; + } + //Number(elem.style.width.replace(/[^\d\.\-]/g, '')); + return ( asInt? parseFloat( strValue ): strValue ); + }, + + addClass: function( element, cssClass ) { + if ( $ ) { + $( element ).addClass( cssClass ); + } + else { + if ( !UTIL.hasClass( element, cssClass ) ) { + if ( element.classList ) { + element.classList.add( cssClass ); + } + else { + element.className += " "+cssClass; + } + } + } + }, + + hasClass: function(element, my_class) { + return (" " + element.className + " ").replace(/[\n\t]/g, " ").indexOf(" "+my_class+" ") > -1; + }, + + toggleClass: function ( element, cls, apply ) { + if ( $ ) { + $( element ).toggleClass( cls, apply ); + } + else { + if ( apply ) { + //element.className += " "+cls; + element.classList.add( cls ); + } + else { + element.classList.remove( cls ); + } + } + }, + + setDimensions: function( element, width, height ) { + if ( $ ) { + $( element ).width( width ).height( height ); + } + else { + element.style.width = width+'px'; + element.style.height = height+'px'; + } + }, + isjQueryAvailable: function() {return(typeof ($) !== 'undefined' && $);}, + }; + + /** + * ImageLoader is used for determining if all the images from the Tree are loaded. + * Node size (width, height) can be correctly determined only when all inner images are loaded + */ + var ImageLoader = function() { + this.reset(); + }; + + ImageLoader.prototype = { + + /** + * @returns {ImageLoader} + */ + reset: function() { + this.loading = []; + return this; + }, + + /** + * @param {TreeNode} node + * @returns {ImageLoader} + */ + processNode: function( node ) { + var aImages = node.nodeDOM.getElementsByTagName( 'img' ); + + var i = aImages.length; + while ( i-- ) { + this.create( node, aImages[i] ); + } + return this; + }, + + /** + * @returns {ImageLoader} + */ + removeAll: function( img_src ) { + var i = this.loading.length; + while ( i-- ) { + if ( this.loading[i] === img_src ) { + this.loading.splice( i, 1 ); + } + } + return this; + }, + + /** + * @param {TreeNode} node + * @param {Element} image + * @returns {*} + */ + create: function ( node, image ) { + var self = this, source = image.src; + + function imgTrigger() { + self.removeAll( source ); + node.width = node.nodeDOM.offsetWidth; + node.height = node.nodeDOM.offsetHeight; + } + + if ( image.src.indexOf( 'data:' ) !== 0 ) { + this.loading.push( source ); + + if ( image.complete ) { + return imgTrigger(); + } + + UTIL.addEvent( image, 'load', imgTrigger ); + UTIL.addEvent( image, 'error', imgTrigger ); // handle broken url-s + + // load event is not fired for cached images, force the load event + image.src += ( ( image.src.indexOf( '?' ) > 0)? '&': '?' ) + new Date().getTime(); + } + else { + imgTrigger(); + } + }, + + /** + * @returns {boolean} + */ + isNotLoading: function() { + return ( this.loading.length === 0 ); + } + }; + + /** + * Class: TreeStore + * TreeStore is used for holding initialized Tree objects + * Its purpose is to avoid global variables and enable multiple Trees on the page. + */ + var TreeStore = { + + store: [], + + /** + * @param {object} jsonConfig + * @returns {Tree} + */ + createTree: function( jsonConfig ) { + var nNewTreeId = this.store.length; + this.store.push( new Tree( jsonConfig, nNewTreeId ) ); + return this.get( nNewTreeId ); + }, + + /** + * @param {number} treeId + * @returns {Tree} + */ + get: function ( treeId ) { + return this.store[treeId]; + }, + + /** + * @param {number} treeId + * @returns {TreeStore} + */ + destroy: function( treeId ) { + var tree = this.get( treeId ); + if ( tree ) { + tree._R.remove(); + var draw_area = tree.drawArea; + + while ( draw_area.firstChild ) { + draw_area.removeChild( draw_area.firstChild ); + } + + var classes = draw_area.className.split(' '), + classes_to_stay = []; + + for ( var i = 0; i < classes.length; i++ ) { + var cls = classes[i]; + if ( cls !== 'Treant' && cls !== 'Treant-loaded' ) { + classes_to_stay.push(cls); + } + } + draw_area.style.overflowY = ''; + draw_area.style.overflowX = ''; + draw_area.className = classes_to_stay.join(' '); + + this.store[treeId] = null; + } + return this; + } + }; + + /** + * Tree constructor. + * @param {object} jsonConfig + * @param {number} treeId + * @constructor + */ + var Tree = function (jsonConfig, treeId ) { + + /** + * @param {object} jsonConfig + * @param {number} treeId + * @returns {Tree} + */ + this.reset = function( jsonConfig, treeId ) { + this.initJsonConfig = jsonConfig; + this.initTreeId = treeId; + + this.id = treeId; + + this.CONFIG = UTIL.extend( Tree.CONFIG, jsonConfig.chart ); + this.drawArea = UTIL.findEl( this.CONFIG.container, true ); + if ( !this.drawArea ) { + throw new Error( 'Failed to find element by selector "'+this.CONFIG.container+'"' ); + } + + UTIL.addClass( this.drawArea, 'Treant' ); + + // kill of any child elements that may be there + this.drawArea.innerHTML = ''; + + this.imageLoader = new ImageLoader(); + + this.nodeDB = new NodeDB( jsonConfig.nodeStructure, this ); + + // key store for storing reference to node connectors, + // key = nodeId where the connector ends + this.connectionStore = {}; + + this.loaded = false; + + this._R = new Raphael( this.drawArea, 100, 100 ); + + return this; + }; + + /** + * @returns {Tree} + */ + this.reload = function() { + this.reset( this.initJsonConfig, this.initTreeId ).redraw(); + return this; + }; + + this.reset( jsonConfig, treeId ); + }; + + Tree.prototype = { + + /** + * @returns {NodeDB} + */ + getNodeDb: function() { + return this.nodeDB; + }, + + /** + * @param {TreeNode} parentTreeNode + * @param {object} nodeDefinition + * @returns {TreeNode} + */ + addNode: function( parentTreeNode, nodeDefinition ) { + var dbEntry = this.nodeDB.get( parentTreeNode.id ); + + this.CONFIG.callback.onBeforeAddNode.apply( this, [parentTreeNode, nodeDefinition] ); + + var oNewNode = this.nodeDB.createNode( nodeDefinition, parentTreeNode.id, this ); + oNewNode.createGeometry( this ); + + oNewNode.parent().createSwitchGeometry( this ); + + this.positionTree(); + + this.CONFIG.callback.onAfterAddNode.apply( this, [oNewNode, parentTreeNode, nodeDefinition] ); + + return oNewNode; + }, + + /** + * @returns {Tree} + */ + redraw: function() { + this.positionTree(); + return this; + }, + + /** + * @param {function} callback + * @returns {Tree} + */ + positionTree: function( callback ) { + var self = this; + + if ( this.imageLoader.isNotLoading() ) { + var root = this.root(), + orient = this.CONFIG.rootOrientation; + + this.resetLevelData(); + + this.firstWalk( root, 0 ); + this.secondWalk( root, 0, 0, 0 ); + + this.positionNodes(); + + if ( this.CONFIG.animateOnInit ) { + setTimeout( + function() { + root.toggleCollapse(); + }, + this.CONFIG.animateOnInitDelay + ); + } + + if ( !this.loaded ) { + UTIL.addClass( this.drawArea, 'Treant-loaded' ); // nodes are hidden until .loaded class is added + if ( Object.prototype.toString.call( callback ) === "[object Function]" ) { + callback( self ); + } + self.CONFIG.callback.onTreeLoaded.apply( self, [root] ); + this.loaded = true; + } + + } + else { + setTimeout( + function() { + self.positionTree( callback ); + }, 10 + ); + } + return this; + }, + + /** + * In a first post-order walk, every node of the tree is assigned a preliminary + * x-coordinate (held in field node->prelim). + * In addition, internal nodes are given modifiers, which will be used to move their + * children to the right (held in field node->modifier). + * @param {TreeNode} node + * @param {number} level + * @returns {Tree} + */ + firstWalk: function( node, level ) { + node.prelim = null; + node.modifier = null; + + this.setNeighbors( node, level ); + this.calcLevelDim( node, level ); + + var leftSibling = node.leftSibling(); + + if ( node.childrenCount() === 0 || level == this.CONFIG.maxDepth ) { + // set preliminary x-coordinate + if ( leftSibling ) { + node.prelim = leftSibling.prelim + leftSibling.size() + this.CONFIG.siblingSeparation; + } + else { + node.prelim = 0; + } + } + else { + //node is not a leaf, firstWalk for each child + for ( var i = 0, n = node.childrenCount(); i < n; i++ ) { + this.firstWalk(node.childAt(i), level + 1); + } + + var midPoint = node.childrenCenter() - node.size() / 2; + + if ( leftSibling ) { + node.prelim = leftSibling.prelim + leftSibling.size() + this.CONFIG.siblingSeparation; + node.modifier = node.prelim - midPoint; + this.apportion( node, level ); + } + else { + node.prelim = midPoint; + } + + // handle stacked children positioning + if ( node.stackParent ) { // handle the parent of stacked children + node.modifier += this.nodeDB.get( node.stackChildren[0] ).size()/2 + node.connStyle.stackIndent; + } + else if ( node.stackParentId ) { // handle stacked children + node.prelim = 0; + } + } + return this; + }, + + /* + * Clean up the positioning of small sibling subtrees. + * Subtrees of a node are formed independently and + * placed as close together as possible. By requiring + * that the subtrees be rigid at the time they are put + * together, we avoid the undesirable effects that can + * accrue from positioning nodes rather than subtrees. + */ + apportion: function (node, level) { + var firstChild = node.firstChild(), + firstChildLeftNeighbor = firstChild.leftNeighbor(), + compareDepth = 1, + depthToStop = this.CONFIG.maxDepth - level; + + while( firstChild && firstChildLeftNeighbor && compareDepth <= depthToStop ) { + // calculate the position of the firstChild, according to the position of firstChildLeftNeighbor + + var modifierSumRight = 0, + modifierSumLeft = 0, + leftAncestor = firstChildLeftNeighbor, + rightAncestor = firstChild; + + for ( var i = 0; i < compareDepth; i++ ) { + leftAncestor = leftAncestor.parent(); + rightAncestor = rightAncestor.parent(); + modifierSumLeft += leftAncestor.modifier; + modifierSumRight += rightAncestor.modifier; + + // all the stacked children are oriented towards right so use right variables + if ( rightAncestor.stackParent !== undefined ) { + modifierSumRight += rightAncestor.size() / 2; + } + } + + // find the gap between two trees and apply it to subTrees + // and mathing smaller gaps to smaller subtrees + + var totalGap = (firstChildLeftNeighbor.prelim + modifierSumLeft + firstChildLeftNeighbor.size() + this.CONFIG.subTeeSeparation) - (firstChild.prelim + modifierSumRight ); + + if ( totalGap > 0 ) { + var subtreeAux = node, + numSubtrees = 0; + + // count all the subtrees in the LeftSibling + while ( subtreeAux && subtreeAux.id !== leftAncestor.id ) { + subtreeAux = subtreeAux.leftSibling(); + numSubtrees++; + } + + if ( subtreeAux ) { + var subtreeMoveAux = node, + singleGap = totalGap / numSubtrees; + + while ( subtreeMoveAux.id !== leftAncestor.id ) { + subtreeMoveAux.prelim += totalGap; + subtreeMoveAux.modifier += totalGap; + + totalGap -= singleGap; + subtreeMoveAux = subtreeMoveAux.leftSibling(); + } + } + } + + compareDepth++; + + firstChild = ( firstChild.childrenCount() === 0 )? + node.leftMost(0, compareDepth): + firstChild = firstChild.firstChild(); + + if ( firstChild ) { + firstChildLeftNeighbor = firstChild.leftNeighbor(); + } + } + }, + + /* + * During a second pre-order walk, each node is given a + * final x-coordinate by summing its preliminary + * x-coordinate and the modifiers of all the node's + * ancestors. The y-coordinate depends on the height of + * the tree. (The roles of x and y are reversed for + * RootOrientations of EAST or WEST.) + */ + secondWalk: function( node, level, X, Y ) { + if ( level <= this.CONFIG.maxDepth ) { + var xTmp = node.prelim + X, + yTmp = Y, align = this.CONFIG.nodeAlign, + orient = this.CONFIG.rootOrientation, + levelHeight, nodesizeTmp; + + if (orient === 'NORTH' || orient === 'SOUTH') { + levelHeight = this.levelMaxDim[level].height; + nodesizeTmp = node.height; + if (node.pseudo) { + node.height = levelHeight; + } // assign a new size to pseudo nodes + } + else if (orient === 'WEST' || orient === 'EAST') { + levelHeight = this.levelMaxDim[level].width; + nodesizeTmp = node.width; + if (node.pseudo) { + node.width = levelHeight; + } // assign a new size to pseudo nodes + } + + node.X = xTmp; + + if (node.pseudo) { // pseudo nodes need to be properly aligned, otherwise position is not correct in some examples + if (orient === 'NORTH' || orient === 'WEST') { + node.Y = yTmp; // align "BOTTOM" + } + else if (orient === 'SOUTH' || orient === 'EAST') { + node.Y = (yTmp + (levelHeight - nodesizeTmp)); // align "TOP" + } + + } else { + node.Y = ( align === 'CENTER' ) ? (yTmp + (levelHeight - nodesizeTmp) / 2) : + ( align === 'TOP' ) ? (yTmp + (levelHeight - nodesizeTmp)) : + yTmp; + } + + if ( orient === 'WEST' || orient === 'EAST' ) { + var swapTmp = node.X; + node.X = node.Y; + node.Y = swapTmp; + } + + if (orient === 'SOUTH' ) { + node.Y = -node.Y - nodesizeTmp; + } + else if ( orient === 'EAST' ) { + node.X = -node.X - nodesizeTmp; + } + + if ( node.childrenCount() !== 0 ) { + if ( node.id === 0 && this.CONFIG.hideRootNode ) { + // ako je root node Hiden onda nemoj njegovu dijecu pomaknut po Y osi za Level separation, neka ona budu na vrhu + this.secondWalk(node.firstChild(), level + 1, X + node.modifier, Y); + } + else { + this.secondWalk(node.firstChild(), level + 1, X + node.modifier, Y + levelHeight + this.CONFIG.levelSeparation); + } + } + + if ( node.rightSibling() ) { + this.secondWalk( node.rightSibling(), level, X, Y ); + } + } + }, + + /** + * position all the nodes, center the tree in center of its container + * 0,0 coordinate is in the upper left corner + * @returns {Tree} + */ + positionNodes: function() { + var self = this, + treeSize = { + x: self.nodeDB.getMinMaxCoord('X', null, null), + y: self.nodeDB.getMinMaxCoord('Y', null, null) + }, + + treeWidth = treeSize.x.max - treeSize.x.min, + treeHeight = treeSize.y.max - treeSize.y.min, + + treeCenter = { + x: treeSize.x.max - treeWidth/2, + y: treeSize.y.max - treeHeight/2 + }; + + this.handleOverflow(treeWidth, treeHeight); + + var + containerCenter = { + x: self.drawArea.clientWidth/2, + y: self.drawArea.clientHeight/2 + }, + + deltaX = containerCenter.x - treeCenter.x, + deltaY = containerCenter.y - treeCenter.y, + + // all nodes must have positive X or Y coordinates, handle this with offsets + negOffsetX = ((treeSize.x.min + deltaX) <= 0) ? Math.abs(treeSize.x.min) : 0, + negOffsetY = ((treeSize.y.min + deltaY) <= 0) ? Math.abs(treeSize.y.min) : 0, + i, len, node; + + // position all the nodes + for ( i = 0, len = this.nodeDB.db.length; i < len; i++ ) { + + node = this.nodeDB.get(i); + + self.CONFIG.callback.onBeforePositionNode.apply( self, [node, i, containerCenter, treeCenter] ); + + if ( node.id === 0 && this.CONFIG.hideRootNode ) { + self.CONFIG.callback.onAfterPositionNode.apply( self, [node, i, containerCenter, treeCenter] ); + continue; + } + + // if the tree is smaller than the draw area, then center the tree within drawing area + node.X += negOffsetX + ((treeWidth < this.drawArea.clientWidth) ? deltaX : this.CONFIG.padding); + node.Y += negOffsetY + ((treeHeight < this.drawArea.clientHeight) ? deltaY : this.CONFIG.padding); + + var collapsedParent = node.collapsedParent(), + hidePoint = null; + + if (collapsedParent) { + // position the node behind the connector point of the parent, so future animations can be visible + hidePoint = collapsedParent.connectorPoint( true ); + node.hide(hidePoint); + + } + else if (node.positioned) { + // node is already positioned, + node.show(); + } + else { // inicijalno stvaranje nodeova, postavi lokaciju + node.nodeDOM.style.left = node.X + 'px'; + node.nodeDOM.style.top = node.Y + 'px'; + node.positioned = true; + } + + if (node.id !== 0 && !(node.parent().id === 0 && this.CONFIG.hideRootNode)) { + this.setConnectionToParent(node, hidePoint); // skip the root node + } + else if (!this.CONFIG.hideRootNode && node.drawLineThrough) { + // drawlinethrough is performed for for the root node also + node.drawLineThroughMe(); + } + + self.CONFIG.callback.onAfterPositionNode.apply( self, [node, i, containerCenter, treeCenter] ); + } + return this; + }, + + /** + * Create Raphael instance, (optionally set scroll bars if necessary) + * @param {number} treeWidth + * @param {number} treeHeight + * @returns {Tree} + */ + handleOverflow: function( treeWidth, treeHeight ) { + var viewWidth = (treeWidth < this.drawArea.clientWidth) ? this.drawArea.clientWidth : treeWidth + this.CONFIG.padding*2, + viewHeight = (treeHeight < this.drawArea.clientHeight) ? this.drawArea.clientHeight : treeHeight + this.CONFIG.padding*2; + + this._R.setSize( viewWidth, viewHeight ); + + if ( this.CONFIG.scrollbar === 'resize') { + UTIL.setDimensions( this.drawArea, viewWidth, viewHeight ); + } + else if ( !UTIL.isjQueryAvailable() || this.CONFIG.scrollbar === 'native' ) { + + if ( this.drawArea.clientWidth < treeWidth ) { // is overflow-x necessary + this.drawArea.style.overflowX = "auto"; + } + + if ( this.drawArea.clientHeight < treeHeight ) { // is overflow-y necessary + this.drawArea.style.overflowY = "auto"; + } + } + // Fancy scrollbar relies heavily on jQuery, so guarding with if ( $ ) + else if ( this.CONFIG.scrollbar === 'fancy') { + var jq_drawArea = $( this.drawArea ); + if (jq_drawArea.hasClass('ps-container')) { // znaci da je 'fancy' vec inicijaliziran, treba updateat + jq_drawArea.find('.Treant').css({ + width: viewWidth, + height: viewHeight + }); + + jq_drawArea.perfectScrollbar('update'); + } + else { + var mainContainer = jq_drawArea.wrapInner('
'), + child = mainContainer.find('.Treant'); + + child.css({ + width: viewWidth, + height: viewHeight + }); + + mainContainer.perfectScrollbar(); + } + } // else this.CONFIG.scrollbar == 'None' + + return this; + }, + /** + * @param {TreeNode} treeNode + * @param {boolean} hidePoint + * @returns {Tree} + */ + setConnectionToParent: function( treeNode, hidePoint ) { + var stacked = treeNode.stackParentId, + connLine, + parent = ( stacked? this.nodeDB.get( stacked ): treeNode.parent() ), + + pathString = hidePoint? + this.getPointPathString(hidePoint): + this.getPathString(parent, treeNode, stacked); + + if ( this.connectionStore[treeNode.id] ) { + // connector already exists, update the connector geometry + connLine = this.connectionStore[treeNode.id]; + this.animatePath( connLine, pathString ); + } + else { + connLine = this._R.path( pathString ); + this.connectionStore[treeNode.id] = connLine; + + // don't show connector arrows por pseudo nodes + if ( treeNode.pseudo ) { + delete parent.connStyle.style['arrow-end']; + } + if ( parent.pseudo ) { + delete parent.connStyle.style['arrow-start']; + } + + connLine.attr( parent.connStyle.style ); + + if ( treeNode.drawLineThrough || treeNode.pseudo ) { + treeNode.drawLineThroughMe( hidePoint ); + } + } + treeNode.connector = connLine; + return this; + }, + + /** + * Create the path which is represented as a point, used for hiding the connection + * A path with a leading "_" indicates the path will be hidden + * See: http://dmitrybaranovskiy.github.io/raphael/reference.html#Paper.path + * @param {object} hidePoint + * @returns {string} + */ + getPointPathString: function( hidePoint ) { + return ["_M", hidePoint.x, ",", hidePoint.y, 'L', hidePoint.x, ",", hidePoint.y, hidePoint.x, ",", hidePoint.y].join(' '); + }, + + /** + * This method relied on receiving a valid Raphael Paper.path. + * See: http://dmitrybaranovskiy.github.io/raphael/reference.html#Paper.path + * A pathString is typically in the format of "M10,20L30,40" + * @param path + * @param {string} pathString + * @returns {Tree} + */ + animatePath: function( path, pathString ) { + if (path.hidden && pathString.charAt(0) !== "_") { // path will be shown, so show it + path.show(); + path.hidden = false; + } + + // See: http://dmitrybaranovskiy.github.io/raphael/reference.html#Element.animate + path.animate( + { + path: pathString.charAt(0) === "_"? + pathString.substring(1): + pathString // remove the "_" prefix if it exists + }, + this.CONFIG.animation.connectorsSpeed, + this.CONFIG.animation.connectorsAnimation, + function() { + if ( pathString.charAt(0) === "_" ) { // animation is hiding the path, hide it at the and of animation + path.hide(); + path.hidden = true; + } + } + ); + return this; + }, + + /** + * + * @param {TreeNode} from_node + * @param {TreeNode} to_node + * @param {boolean} stacked + * @returns {string} + */ + getPathString: function( from_node, to_node, stacked ) { + var startPoint = from_node.connectorPoint( true ), + endPoint = to_node.connectorPoint( false ), + orientation = this.CONFIG.rootOrientation, + connType = from_node.connStyle.type, + P1 = {}, P2 = {}; + + if ( orientation === 'NORTH' || orientation === 'SOUTH' ) { + P1.y = P2.y = (startPoint.y + endPoint.y) / 2; + + P1.x = startPoint.x; + P2.x = endPoint.x; + } + else if ( orientation === 'EAST' || orientation === 'WEST' ) { + P1.x = P2.x = (startPoint.x + endPoint.x) / 2; + + P1.y = startPoint.y; + P2.y = endPoint.y; + } + + // sp, p1, pm, p2, ep == "x,y" + var sp = startPoint.x+','+startPoint.y, p1 = P1.x+','+P1.y, p2 = P2.x+','+P2.y, ep = endPoint.x+','+endPoint.y, + pm = (P1.x + P2.x)/2 +','+ (P1.y + P2.y)/2, pathString, stackPoint; + + if ( stacked ) { // STACKED CHILDREN + + stackPoint = (orientation === 'EAST' || orientation === 'WEST')? + endPoint.x+','+startPoint.y: + startPoint.x+','+endPoint.y; + + if ( connType === "step" || connType === "straight" ) { + pathString = ["M", sp, 'L', stackPoint, 'L', ep]; + } + else if ( connType === "curve" || connType === "bCurve" ) { + var helpPoint, // used for nicer curve lines + indent = from_node.connStyle.stackIndent; + + if ( orientation === 'NORTH' ) { + helpPoint = (endPoint.x - indent)+','+(endPoint.y - indent); + } + else if ( orientation === 'SOUTH' ) { + helpPoint = (endPoint.x - indent)+','+(endPoint.y + indent); + } + else if ( orientation === 'EAST' ) { + helpPoint = (endPoint.x + indent) +','+startPoint.y; + } + else if ( orientation === 'WEST' ) { + helpPoint = (endPoint.x - indent) +','+startPoint.y; + } + pathString = ["M", sp, 'L', helpPoint, 'S', stackPoint, ep]; + } + + } + else { // NORMAL CHILDREN + if ( connType === "step" ) { + pathString = ["M", sp, 'L', p1, 'L', p2, 'L', ep]; + } + else if ( connType === "curve" ) { + pathString = ["M", sp, 'C', p1, p2, ep ]; + } + else if ( connType === "bCurve" ) { + pathString = ["M", sp, 'Q', p1, pm, 'T', ep]; + } + else if (connType === "straight" ) { + pathString = ["M", sp, 'L', sp, ep]; + } + } + + return pathString.join(" "); + }, + + /** + * Algorithm works from left to right, so previous processed node will be left neighbour of the next node + * @param {TreeNode} node + * @param {number} level + * @returns {Tree} + */ + setNeighbors: function( node, level ) { + node.leftNeighborId = this.lastNodeOnLevel[level]; + if ( node.leftNeighborId ) { + node.leftNeighbor().rightNeighborId = node.id; + } + this.lastNodeOnLevel[level] = node.id; + return this; + }, + + /** + * Used for calculation of height and width of a level (level dimensions) + * @param {TreeNode} node + * @param {number} level + * @returns {Tree} + */ + calcLevelDim: function( node, level ) { // root node is on level 0 + this.levelMaxDim[level] = { + width: Math.max( this.levelMaxDim[level]? this.levelMaxDim[level].width: 0, node.width ), + height: Math.max( this.levelMaxDim[level]? this.levelMaxDim[level].height: 0, node.height ) + }; + return this; + }, + + /** + * @returns {Tree} + */ + resetLevelData: function() { + this.lastNodeOnLevel = []; + this.levelMaxDim = []; + return this; + }, + + /** + * @returns {TreeNode} + */ + root: function() { + return this.nodeDB.get( 0 ); + } + }; + + /** + * NodeDB is used for storing the nodes. Each tree has its own NodeDB. + * @param {object} nodeStructure + * @param {Tree} tree + * @constructor + */ + var NodeDB = function ( nodeStructure, tree ) { + this.reset( nodeStructure, tree ); + }; + + NodeDB.prototype = { + + /** + * @param {object} nodeStructure + * @param {Tree} tree + * @returns {NodeDB} + */ + reset: function( nodeStructure, tree ) { + + this.db = []; + + var self = this; + + /** + * @param {object} node + * @param {number} parentId + */ + function iterateChildren( node, parentId ) { + var newNode = self.createNode( node, parentId, tree, null ); + + if ( node.children ) { + // pseudo node is used for descending children to the next level + if ( node.childrenDropLevel && node.childrenDropLevel > 0 ) { + while ( node.childrenDropLevel-- ) { + // pseudo node needs to inherit the connection style from its parent for continuous connectors + var connStyle = UTIL.cloneObj( newNode.connStyle ); + newNode = self.createNode( 'pseudo', newNode.id, tree, null ); + newNode.connStyle = connStyle; + newNode.children = []; + } + } + + var stack = ( node.stackChildren && !self.hasGrandChildren( node ) )? newNode.id: null; + + // children are positioned on separate levels, one beneath the other + if ( stack !== null ) { + newNode.stackChildren = []; + } + + for ( var i = 0, len = node.children.length; i < len ; i++ ) { + if ( stack !== null ) { + newNode = self.createNode( node.children[i], newNode.id, tree, stack ); + if ( ( i + 1 ) < len ) { + // last node cant have children + newNode.children = []; + } + } + else { + iterateChildren( node.children[i], newNode.id ); + } + } + } + } + + if ( tree.CONFIG.animateOnInit ) { + nodeStructure.collapsed = true; + } + + iterateChildren( nodeStructure, -1 ); // root node + + this.createGeometries( tree ); + + return this; + }, + + /** + * @param {Tree} tree + * @returns {NodeDB} + */ + createGeometries: function( tree ) { + var i = this.db.length; + + while ( i-- ) { + this.get( i ).createGeometry( tree ); + } + return this; + }, + + /** + * @param {number} nodeId + * @returns {TreeNode} + */ + get: function ( nodeId ) { + return this.db[nodeId]; // get TreeNode by ID + }, + + /** + * @param {function} callback + * @returns {NodeDB} + */ + walk: function( callback ) { + var i = this.db.length; + + while ( i-- ) { + callback.apply( this, [ this.get( i ) ] ); + } + return this; + }, + + /** + * + * @param {object} nodeStructure + * @param {number} parentId + * @param {Tree} tree + * @param {number} stackParentId + * @returns {TreeNode} + */ + createNode: function( nodeStructure, parentId, tree, stackParentId ) { + var node = new TreeNode( nodeStructure, this.db.length, parentId, tree, stackParentId ); + + this.db.push( node ); + + // skip root node (0) + if ( parentId >= 0 ) { + var parent = this.get( parentId ); + + // todo: refactor into separate private method + if ( nodeStructure.position ) { + if ( nodeStructure.position === 'left' ) { + parent.children.push( node.id ); + } + else if ( nodeStructure.position === 'right' ) { + parent.children.splice( 0, 0, node.id ); + } + else if ( nodeStructure.position === 'center' ) { + parent.children.splice( Math.floor( parent.children.length / 2 ), 0, node.id ); + } + else { + // edge case when there's only 1 child + var position = parseInt( nodeStructure.position ); + if ( parent.children.length === 1 && position > 0 ) { + parent.children.splice( 0, 0, node.id ); + } + else { + parent.children.splice( + Math.max( position, parent.children.length - 1 ), + 0, node.id + ); + } + } + } + else { + parent.children.push( node.id ); + } + } + + if ( stackParentId ) { + this.get( stackParentId ).stackParent = true; + this.get( stackParentId ).stackChildren.push( node.id ); + } + + return node; + }, + + getMinMaxCoord: function( dim, parent, MinMax ) { // used for getting the dimensions of the tree, dim = 'X' || 'Y' + // looks for min and max (X and Y) within the set of nodes + parent = parent || this.get(0); + + MinMax = MinMax || { // start with root node dimensions + min: parent[dim], + max: parent[dim] + ( ( dim === 'X' )? parent.width: parent.height ) + }; + + var i = parent.childrenCount(); + + while ( i-- ) { + var node = parent.childAt( i ), + maxTest = node[dim] + ( ( dim === 'X' )? node.width: node.height ), + minTest = node[dim]; + + if ( maxTest > MinMax.max ) { + MinMax.max = maxTest; + } + if ( minTest < MinMax.min ) { + MinMax.min = minTest; + } + + this.getMinMaxCoord( dim, node, MinMax ); + } + return MinMax; + }, + + /** + * @param {object} nodeStructure + * @returns {boolean} + */ + hasGrandChildren: function( nodeStructure ) { + var i = nodeStructure.children.length; + while ( i-- ) { + if ( nodeStructure.children[i].children ) { + return true; + } + } + return false; + } + }; + + /** + * TreeNode constructor. + * @param {object} nodeStructure + * @param {number} id + * @param {number} parentId + * @param {Tree} tree + * @param {number} stackParentId + * @constructor + */ + var TreeNode = function( nodeStructure, id, parentId, tree, stackParentId ) { + this.reset( nodeStructure, id, parentId, tree, stackParentId ); + }; + + TreeNode.prototype = { + + /** + * @param {object} nodeStructure + * @param {number} id + * @param {number} parentId + * @param {Tree} tree + * @param {number} stackParentId + * @returns {TreeNode} + */ + reset: function( nodeStructure, id, parentId, tree, stackParentId ) { + this.id = id; + this.parentId = parentId; + this.treeId = tree.id; + + this.prelim = 0; + this.modifier = 0; + this.leftNeighborId = null; + + this.stackParentId = stackParentId; + + // pseudo node is a node with width=height=0, it is invisible, but necessary for the correct positioning of the tree + this.pseudo = nodeStructure === 'pseudo' || nodeStructure['pseudo']; // todo: surely if nodeStructure is a scalar then the rest will error: + + this.meta = nodeStructure.meta || {}; + this.image = nodeStructure.image || null; + + this.link = UTIL.createMerge( tree.CONFIG.node.link, nodeStructure.link ); + + this.connStyle = UTIL.createMerge( tree.CONFIG.connectors, nodeStructure.connectors ); + this.connector = null; + + this.drawLineThrough = nodeStructure.drawLineThrough === false ? false : ( nodeStructure.drawLineThrough || tree.CONFIG.node.drawLineThrough ); + + this.collapsable = nodeStructure.collapsable === false ? false : ( nodeStructure.collapsable || tree.CONFIG.node.collapsable ); + this.collapsed = nodeStructure.collapsed; + + this.text = nodeStructure.text; + + // '.node' DIV + this.nodeInnerHTML = nodeStructure.innerHTML; + this.nodeHTMLclass = (tree.CONFIG.node.HTMLclass ? tree.CONFIG.node.HTMLclass : '') + // globally defined class for the nodex + (nodeStructure.HTMLclass ? (' ' + nodeStructure.HTMLclass) : ''); // + specific node class + + this.nodeHTMLid = nodeStructure.HTMLid; + + this.children = []; + + return this; + }, + + /** + * @returns {Tree} + */ + getTree: function() { + return TreeStore.get( this.treeId ); + }, + + /** + * @returns {object} + */ + getTreeConfig: function() { + return this.getTree().CONFIG; + }, + + /** + * @returns {NodeDB} + */ + getTreeNodeDb: function() { + return this.getTree().getNodeDb(); + }, + + /** + * @param {number} nodeId + * @returns {TreeNode} + */ + lookupNode: function( nodeId ) { + return this.getTreeNodeDb().get( nodeId ); + }, + + /** + * @returns {Tree} + */ + Tree: function() { + return TreeStore.get( this.treeId ); + }, + + /** + * @param {number} nodeId + * @returns {TreeNode} + */ + dbGet: function( nodeId ) { + return this.getTreeNodeDb().get( nodeId ); + }, + + /** + * Returns the width of the node + * @returns {float} + */ + size: function() { + var orientation = this.getTreeConfig().rootOrientation; + + if ( this.pseudo ) { + // prevents separating the subtrees + return ( -this.getTreeConfig().subTeeSeparation ); + } + + if ( orientation === 'NORTH' || orientation === 'SOUTH' ) { + return this.width; + } + else if ( orientation === 'WEST' || orientation === 'EAST' ) { + return this.height; + } + }, + + /** + * @returns {number} + */ + childrenCount: function () { + return ( ( this.collapsed || !this.children)? 0: this.children.length ); + }, + + /** + * @param {number} index + * @returns {TreeNode} + */ + childAt: function( index ) { + return this.dbGet( this.children[index] ); + }, + + /** + * @returns {TreeNode} + */ + firstChild: function() { + return this.childAt( 0 ); + }, + + /** + * @returns {TreeNode} + */ + lastChild: function() { + return this.childAt( this.children.length - 1 ); + }, + + /** + * @returns {TreeNode} + */ + parent: function() { + return this.lookupNode( this.parentId ); + }, + + /** + * @returns {TreeNode} + */ + leftNeighbor: function() { + if ( this.leftNeighborId ) { + return this.lookupNode( this.leftNeighborId ); + } + }, + + /** + * @returns {TreeNode} + */ + rightNeighbor: function() { + if ( this.rightNeighborId ) { + return this.lookupNode( this.rightNeighborId ); + } + }, + + /** + * @returns {TreeNode} + */ + leftSibling: function () { + var leftNeighbor = this.leftNeighbor(); + + if ( leftNeighbor && leftNeighbor.parentId === this.parentId ){ + return leftNeighbor; + } + }, + + /** + * @returns {TreeNode} + */ + rightSibling: function () { + var rightNeighbor = this.rightNeighbor(); + + if ( rightNeighbor && rightNeighbor.parentId === this.parentId ) { + return rightNeighbor; + } + }, + + /** + * @returns {number} + */ + childrenCenter: function () { + var first = this.firstChild(), + last = this.lastChild(); + + return ( first.prelim + ((last.prelim - first.prelim) + last.size()) / 2 ); + }, + + /** + * Find out if one of the node ancestors is collapsed + * @returns {*} + */ + collapsedParent: function() { + var parent = this.parent(); + if ( !parent ) { + return false; + } + if ( parent.collapsed ) { + return parent; + } + return parent.collapsedParent(); + }, + + /** + * Returns the leftmost child at specific level, (initial level = 0) + * @param level + * @param depth + * @returns {*} + */ + leftMost: function ( level, depth ) { + if ( level >= depth ) { + return this; + } + if ( this.childrenCount() === 0 ) { + return; + } + + for ( var i = 0, n = this.childrenCount(); i < n; i++ ) { + var leftmostDescendant = this.childAt( i ).leftMost( level + 1, depth ); + if ( leftmostDescendant ) { + return leftmostDescendant; + } + } + }, + + // returns start or the end point of the connector line, origin is upper-left + connectorPoint: function(startPoint) { + var orient = this.Tree().CONFIG.rootOrientation, point = {}; + + if ( this.stackParentId ) { // return different end point if node is a stacked child + if ( orient === 'NORTH' || orient === 'SOUTH' ) { + orient = 'WEST'; + } + else if ( orient === 'EAST' || orient === 'WEST' ) { + orient = 'NORTH'; + } + } + + // if pseudo, a virtual center is used + if ( orient === 'NORTH' ) { + point.x = (this.pseudo) ? this.X - this.Tree().CONFIG.subTeeSeparation/2 : this.X + this.width/2; + point.y = (startPoint) ? this.Y + this.height : this.Y; + } + else if (orient === 'SOUTH') { + point.x = (this.pseudo) ? this.X - this.Tree().CONFIG.subTeeSeparation/2 : this.X + this.width/2; + point.y = (startPoint) ? this.Y : this.Y + this.height; + } + else if (orient === 'EAST') { + point.x = (startPoint) ? this.X : this.X + this.width; + point.y = (this.pseudo) ? this.Y - this.Tree().CONFIG.subTeeSeparation/2 : this.Y + this.height/2; + } + else if (orient === 'WEST') { + point.x = (startPoint) ? this.X + this.width : this.X; + point.y = (this.pseudo) ? this.Y - this.Tree().CONFIG.subTeeSeparation/2 : this.Y + this.height/2; + } + return point; + }, + + /** + * @returns {string} + */ + pathStringThrough: function() { // get the geometry of a path going through the node + var startPoint = this.connectorPoint( true ), + endPoint = this.connectorPoint( false ); + + return ["M", startPoint.x+","+startPoint.y, 'L', endPoint.x+","+endPoint.y].join(" "); + }, + + /** + * @param {object} hidePoint + */ + drawLineThroughMe: function( hidePoint ) { // hidepoint se proslijedjuje ako je node sakriven zbog collapsed + var pathString = hidePoint? + this.Tree().getPointPathString( hidePoint ): + this.pathStringThrough(); + + this.lineThroughMe = this.lineThroughMe || this.Tree()._R.path(pathString); + + var line_style = UTIL.cloneObj( this.connStyle.style ); + + delete line_style['arrow-start']; + delete line_style['arrow-end']; + + this.lineThroughMe.attr( line_style ); + + if ( hidePoint ) { + this.lineThroughMe.hide(); + this.lineThroughMe.hidden = true; + } + }, + + addSwitchEvent: function( nodeSwitch ) { + var self = this; + UTIL.addEvent( nodeSwitch, 'click', + function( e ) { + e.preventDefault(); + if ( self.getTreeConfig().callback.onBeforeClickCollapseSwitch.apply( self, [ nodeSwitch, e ] ) === false ) { + return false; + } + + self.toggleCollapse(); + + self.getTreeConfig().callback.onAfterClickCollapseSwitch.apply( self, [ nodeSwitch, e ] ); + } + ); + }, + + /** + * @returns {TreeNode} + */ + collapse: function() { + if ( !this.collapsed ) { + this.toggleCollapse(); + } + return this; + }, + + /** + * @returns {TreeNode} + */ + expand: function() { + if ( this.collapsed ) { + this.toggleCollapse(); + } + return this; + }, + + /** + * @returns {TreeNode} + */ + toggleCollapse: function() { + var oTree = this.getTree(); + + if ( !oTree.inAnimation ) { + oTree.inAnimation = true; + + this.collapsed = !this.collapsed; // toggle the collapse at each click + UTIL.toggleClass( this.nodeDOM, 'collapsed', this.collapsed ); + + oTree.positionTree(); + + var self = this; + + setTimeout( + function() { // set the flag after the animation + oTree.inAnimation = false; + oTree.CONFIG.callback.onToggleCollapseFinished.apply( oTree, [ self, self.collapsed ] ); + }, + ( oTree.CONFIG.animation.nodeSpeed > oTree.CONFIG.animation.connectorsSpeed )? + oTree.CONFIG.animation.nodeSpeed: + oTree.CONFIG.animation.connectorsSpeed + ); + } + return this; + }, + + hide: function( collapse_to_point ) { + collapse_to_point = collapse_to_point || false; + + var bCurrentState = this.hidden; + this.hidden = true; + + this.nodeDOM.style.overflow = 'hidden'; + + var tree = this.getTree(), + config = this.getTreeConfig(), + oNewState = { + opacity: 0 + }; + + if ( collapse_to_point ) { + oNewState.left = collapse_to_point.x; + oNewState.top = collapse_to_point.y; + } + + // if parent was hidden in initial configuration, position the node behind the parent without animations + if ( !this.positioned || bCurrentState ) { + this.nodeDOM.style.visibility = 'hidden'; + if ( $ ) { + $( this.nodeDOM ).css( oNewState ); + } + else { + this.nodeDOM.style.left = oNewState.left + 'px'; + this.nodeDOM.style.top = oNewState.top + 'px'; + } + this.positioned = true; + } + else { + // todo: fix flashy bug when a node is manually hidden and tree.redraw is called. + if ( $ ) { + $( this.nodeDOM ).animate( + oNewState, config.animation.nodeSpeed, config.animation.nodeAnimation, + function () { + this.style.visibility = 'hidden'; + } + ); + } + else { + this.nodeDOM.style.transition = 'all '+config.animation.nodeSpeed+'ms ease'; + this.nodeDOM.style.transitionProperty = 'opacity, left, top'; + this.nodeDOM.style.opacity = oNewState.opacity; + this.nodeDOM.style.left = oNewState.left + 'px'; + this.nodeDOM.style.top = oNewState.top + 'px'; + this.nodeDOM.style.visibility = 'hidden'; + } + } + + // animate the line through node if the line exists + if ( this.lineThroughMe ) { + var new_path = tree.getPointPathString( collapse_to_point ); + if ( bCurrentState ) { + // update without animations + this.lineThroughMe.attr( { path: new_path } ); + } + else { + // update with animations + tree.animatePath( this.lineThroughMe, tree.getPointPathString( collapse_to_point ) ); + } + } + + return this; + }, + + /** + * @returns {TreeNode} + */ + hideConnector: function() { + var oTree = this.Tree(); + var oPath = oTree.connectionStore[this.id]; + if ( oPath ) { + oPath.animate( + { 'opacity': 0 }, + oTree.CONFIG.animation.connectorsSpeed, + oTree.CONFIG.animation.connectorsAnimation + ); + } + return this; + }, + + show: function() { + var bCurrentState = this.hidden; + this.hidden = false; + + this.nodeDOM.style.visibility = 'visible'; + + var oTree = this.Tree(); + + var oNewState = { + left: this.X, + top: this.Y, + opacity: 1 + }, + config = this.getTreeConfig(); + + // if the node was hidden, update opacity and position + if ( $ ) { + $( this.nodeDOM ).animate( + oNewState, + config.animation.nodeSpeed, config.animation.nodeAnimation, + function () { + // $.animate applies "overflow:hidden" to the node, remove it to avoid visual problems + this.style.overflow = ""; + } + ); + } + else { + this.nodeDOM.style.transition = 'all '+config.animation.nodeSpeed+'ms ease'; + this.nodeDOM.style.transitionProperty = 'opacity, left, top'; + this.nodeDOM.style.left = oNewState.left + 'px'; + this.nodeDOM.style.top = oNewState.top + 'px'; + this.nodeDOM.style.opacity = oNewState.opacity; + this.nodeDOM.style.overflow = ''; + } + + if ( this.lineThroughMe ) { + this.getTree().animatePath( this.lineThroughMe, this.pathStringThrough() ); + } + + return this; + }, + + /** + * @returns {TreeNode} + */ + showConnector: function() { + var oTree = this.Tree(); + var oPath = oTree.connectionStore[this.id]; + if ( oPath ) { + oPath.animate( + { 'opacity': 1 }, + oTree.CONFIG.animation.connectorsSpeed, + oTree.CONFIG.animation.connectorsAnimation + ); + } + return this; + } + }; + + + /** + * Build a node from the 'text' and 'img' property and return with it. + * + * The node will contain all the fields that present under the 'text' property + * Each field will refer to a css class with name defined as node-{$property_name} + * + * Example: + * The definition: + * + * text: { + * desc: "some description", + * paragraph: "some text" + * } + * + * will generate the following elements: + * + *

some description

+ *

some text

+ * + * @Returns the configured node + */ + TreeNode.prototype.buildNodeFromText = function (node) { + // IMAGE + if (this.image) { + image = document.createElement('img'); + image.src = this.image; + node.appendChild(image); + } + + // TEXT + if (this.text) { + for (var key in this.text) { + // adding DATA Attributes to the node + if (key.startsWith("data-")) { + node.setAttribute(key, this.text[key]); + } else { + + var textElement = document.createElement(this.text[key].href ? 'a' : 'p'); + + // make an element if required + if (this.text[key].href) { + textElement.href = this.text[key].href; + if (this.text[key].target) { + textElement.target = this.text[key].target; + } + } + + textElement.className = "node-"+key; + textElement.appendChild(document.createTextNode( + this.text[key].val ? this.text[key].val : + this.text[key] instanceof Object ? "'val' param missing!" : this.text[key] + ) + ); + + node.appendChild(textElement); + } + } + } + return node; + }; + + /** + * Build a node from 'nodeInnerHTML' property that defines an existing HTML element, referenced by it's id, e.g: #someElement + * Change the text in the passed node to 'Wrong ID selector' if the referenced element does ot exist, + * return with a cloned and configured node otherwise + * + * @Returns node the configured node + */ + TreeNode.prototype.buildNodeFromHtml = function(node) { + // get some element by ID and clone its structure into a node + if (this.nodeInnerHTML.charAt(0) === "#") { + var elem = document.getElementById(this.nodeInnerHTML.substring(1)); + if (elem) { + node = elem.cloneNode(true); + node.id += "-clone"; + node.className += " node"; + } + else { + node.innerHTML = " Wrong ID selector "; + } + } + else { + // insert your custom HTML into a node + node.innerHTML = this.nodeInnerHTML; + } + return node; + }; + + /** + * @param {Tree} tree + */ + TreeNode.prototype.createGeometry = function( tree ) { + if ( this.id === 0 && tree.CONFIG.hideRootNode ) { + this.width = 0; + this.height = 0; + return; + } + + var drawArea = tree.drawArea, + image, + + /////////// CREATE NODE ////////////// + node = document.createElement( this.link.href? 'a': 'div' ); + + node.className = ( !this.pseudo )? TreeNode.CONFIG.nodeHTMLclass: 'pseudo'; + if ( this.nodeHTMLclass && !this.pseudo ) { + node.className += ' ' + this.nodeHTMLclass; + } + + if ( this.nodeHTMLid ) { + node.id = this.nodeHTMLid; + } + + if ( this.link.href ) { + node.href = this.link.href; + node.target = this.link.target; + } + + if ( $ ) { + $( node ).data( 'treenode', this ); + } + else { + node.data = { + 'treenode': this + }; + } + + /////////// BUILD NODE CONTENT ////////////// + if ( !this.pseudo ) { + node = this.nodeInnerHTML? this.buildNodeFromHtml(node) : this.buildNodeFromText(node) + + // handle collapse switch + if ( this.collapsed || (this.collapsable && this.childrenCount() && !this.stackParentId) ) { + this.createSwitchGeometry( tree, node ); + } + } + + tree.CONFIG.callback.onCreateNode.apply( tree, [this, node] ); + + /////////// APPEND all ////////////// + drawArea.appendChild(node); + + this.width = node.offsetWidth; + this.height = node.offsetHeight; + + this.nodeDOM = node; + + tree.imageLoader.processNode(this); + }; + + /** + * @param {Tree} tree + * @param {Element} nodeEl + */ + TreeNode.prototype.createSwitchGeometry = function( tree, nodeEl ) { + nodeEl = nodeEl || this.nodeDOM; + + // safe guard and check to see if it has a collapse switch + var nodeSwitchEl = UTIL.findEl( '.collapse-switch', true, nodeEl ); + if ( !nodeSwitchEl ) { + nodeSwitchEl = document.createElement( 'a' ); + nodeSwitchEl.className = "collapse-switch"; + + nodeEl.appendChild( nodeSwitchEl ); + this.addSwitchEvent( nodeSwitchEl ); + if ( this.collapsed ) { + nodeEl.className += " collapsed"; + } + + tree.CONFIG.callback.onCreateNodeCollapseSwitch.apply( tree, [this, nodeEl, nodeSwitchEl] ); + } + return nodeSwitchEl; + }; + + + // ########################################### + // Expose global + default CONFIG params + // ########################################### + + + Tree.CONFIG = { + maxDepth: 100, + rootOrientation: 'NORTH', // NORTH || EAST || WEST || SOUTH + nodeAlign: 'CENTER', // CENTER || TOP || BOTTOM + levelSeparation: 30, + siblingSeparation: 30, + subTeeSeparation: 30, + + hideRootNode: false, + + animateOnInit: false, + animateOnInitDelay: 500, + + padding: 15, // the difference is seen only when the scrollbar is shown + scrollbar: 'native', // "native" || "fancy" || "None" (PS: "fancy" requires jquery and perfect-scrollbar) + + connectors: { + type: 'curve', // 'curve' || 'step' || 'straight' || 'bCurve' + style: { + stroke: 'black' + }, + stackIndent: 15 + }, + + node: { // each node inherits this, it can all be overridden in node config + + // HTMLclass: 'node', + // drawLineThrough: false, + // collapsable: false, + link: { + target: '_self' + } + }, + + animation: { // each node inherits this, it can all be overridden in node config + nodeSpeed: 450, + nodeAnimation: 'linear', + connectorsSpeed: 450, + connectorsAnimation: 'linear' + }, + + callback: { + onCreateNode: function( treeNode, treeNodeDom ) {}, // this = Tree + onCreateNodeCollapseSwitch: function( treeNode, treeNodeDom, switchDom ) {}, // this = Tree + onAfterAddNode: function( newTreeNode, parentTreeNode, nodeStructure ) {}, // this = Tree + onBeforeAddNode: function( parentTreeNode, nodeStructure ) {}, // this = Tree + onAfterPositionNode: function( treeNode, nodeDbIndex, containerCenter, treeCenter) {}, // this = Tree + onBeforePositionNode: function( treeNode, nodeDbIndex, containerCenter, treeCenter) {}, // this = Tree + onToggleCollapseFinished: function ( treeNode, bIsCollapsed ) {}, // this = Tree + onAfterClickCollapseSwitch: function( nodeSwitch, event ) {}, // this = TreeNode + onBeforeClickCollapseSwitch: function( nodeSwitch, event ) {}, // this = TreeNode + onTreeLoaded: function( rootTreeNode ) {} // this = Tree + } + }; + + TreeNode.CONFIG = { + nodeHTMLclass: 'node' + }; + + // ############################################# + // Makes a JSON chart config out of Array config + // ############################################# + + var JSONconfig = { + make: function( configArray ) { + + var i = configArray.length, node; + + this.jsonStructure = { + chart: null, + nodeStructure: null + }; + //fist loop: find config, find root; + while(i--) { + node = configArray[i]; + if (node.hasOwnProperty('container')) { + this.jsonStructure.chart = node; + continue; + } + + if (!node.hasOwnProperty('parent') && ! node.hasOwnProperty('container')) { + this.jsonStructure.nodeStructure = node; + node._json_id = 0; + } + } + + this.findChildren(configArray); + + return this.jsonStructure; + }, + + findChildren: function(nodes) { + var parents = [0]; // start with a a root node + + while(parents.length) { + var parentId = parents.pop(), + parent = this.findNode(this.jsonStructure.nodeStructure, parentId), + i = 0, len = nodes.length, + children = []; + + for(;ie){return String.fromCharCode(e)}a.push(e);d=191e?1:2;return""}if(0e?String.fromCharCode((e&31)<<6|f&63):String.fromCharCode((e&15)<<12|(f&63)<<6|g&63);a.length=0;return e});this.Jf=(function(a){for(var a=unescape(encodeURIComponent(a)),d=[],g=0;g=Fa){for(;Fa<=Ea;){Fa=2*Fa+4095>>12<<12}a=c;Ga=c=new Int32Array(Fa);c.set(a);Ha=new Uint32Array(c.buffer);a=k;k=new Float64Array(Fa);k.set(a)}return d}function Ia(a,d){return Math.ceil(a/(d?d:1))*(d?d:1)}var xa=1,iaa={},Ja,Ka,Ma;function Na(a){Module.print(a+":\n"+Error().stack);aa("Assertion: "+a)}function ya(a,d){a||Na("Assertion failed: "+d)}var jaa=this;function kaa(a,d,e,f){function g(a,d){if("string"==d){if(a===na||a===fa||0===a){return 0}h||(h=b);var e=Da(a.length+1);laa(a,e);return e}return"array"==d?(h||(h=b),e=Da(a.length),maa(a,e),e):a}var h=0;try{var i=eval("_"+a)}catch(j){try{i=jaa.Module["_"+a]}catch(l){}}ya(i,"Cannot call unknown function "+a+" (perhaps LLVM optimizations or closure removed it?)");var m=0,a=f?f.map((function(a){return g(a,e[m++])})):[],d=(function(a,d){if("string"==d){return Qa(a)}ya("array"!=d);return a})(i.apply(na,a),d);h&&(b=h);return d}Module.ccall=kaa;Module.cwrap=(function(a,d,e){return(function(){return kaa(a,d,e,Array.prototype.slice.call(arguments))})});function Ta(a,d,e){e=e||"i8";"*"===e.charAt(e.length-1)&&(e="i32");switch(e){case"i1":c[a]=d;break;case"i8":c[a]=d;break;case"i16":c[a]=d;break;case"i32":c[a]=d;break;case"i64":c[a]=d;break;case"float":k[a]=d;break;case"double":k[a]=d;break;default:Na("invalid type for setValue: "+e)}}Module.setValue=Ta;function Ua(a,d){d=d||"i8";"*"===d.charAt(d.length-1)&&(d="i32");switch(d){case"i1":return c[a];case"i8":return c[a];case"i16":return c[a];case"i32":return c[a];case"i64":return c[a];case"float":return k[a];case"double":return k[a];default:Na("invalid type for setValue: "+d)}return na}Module.getValue=Ua;var Va=1,q=2;Module.ALLOC_NORMAL=0;Module.ALLOC_STACK=Va;Module.ALLOC_STATIC=q;function u(a,d,e){var f,g;"number"===typeof a?(f=ia,g=a):(f=oa,g=a.length);var h="string"===typeof d?d:na,e=[Wa,Da,haa][e===fa?q:e](Math.max(g,h?1:d.length));if(f){a=e;for(g=a+g;a>12<<12;ya(Ea=d?2*Math.abs(1<=a){return a}var e=32>=d?Math.abs(1<=e&&(32>=d||a>e)){a=-2*e+a}return a}var hb=0,kb={},uaa=oa,lb=na;function nb(a){hb++;Module.monitorRunDependencies&&Module.monitorRunDependencies(hb);a?(ya(!kb[a]),kb[a]=1,lb===na&&"undefined"!==typeof setInterval&&(lb=setInterval((function(){var a=oa,e;for(e in kb){a||(a=ia,Module.f("still waiting on run dependencies:")),Module.f("dependency: "+e)}a&&Module.f("(end of list)")}),6e3))):Module.f("warning: run dependency added without ID")}Module.addRunDependency=nb;function sb(a){hb--;Module.monitorRunDependencies&&Module.monitorRunDependencies(hb);a?(ya(kb[a]),delete kb[a]):Module.f("warning: run dependency removed without ID");0==hb&&(lb!==na&&(clearInterval(lb),lb=na),uaa||tb())}Module.removeRunDependency=sb;Module.preloadedImages={};Module.preloadedAudios={};function vaa(){return 44}vaa.X=1;function wb(){return xb(48)}wb.X=1;function yb(a){var d=xb(48);zb(d,a);return d}yb.X=1;function Cb(a,d,e,f,g,h,i,j,l){var m=b;b+=9;var n=m+1,p=m+2,r=m+3,s=m+4,t=m+5,w=m+6,x=m+7,y=m+8;k[m]=a;k[n]=d;k[p]=e;k[r]=f;k[s]=g;k[t]=h;k[w]=i;k[x]=j;k[y]=l;a=xb(48);Db(a,m,n,p,r,s,t,w,x,y);b=m;return a}Cb.X=1;function Fb(a,d){var e=b;b+=4;0==c[Gb]<<24>>24&&Hb(Gb);Jb(e,a,d);c[Kb]=c[e];k[Kb]=k[e];c[Kb+1]=c[e+1];k[Kb+1]=k[e+1];c[Kb+2]=c[e+2];k[Kb+2]=k[e+2];c[Kb+3]=c[e+3];k[Kb+3]=k[e+3];b=e;return Kb}Fb.X=1;function Jb(a,d,e){H(a,d+e,d+4+e,d+8+e)}Jb.X=1;function waa(a,d){Lb(a,d)}waa.X=1;function Lb(a,d){var e;for(e=0;;){Mb((e<<2)+a,(e<<2)+d);var f=e+1;e=f;if(3<=(f|0)){break}}}Lb.X=1;function xaa(a,d){Nb(a,d)}xaa.X=1;function Nb(a,d){var e;for(e=0;;){Ob((e<<2)+a,(e<<2)+d);var f=e+1;e=f;if(3<=(f|0)){break}}}Nb.X=1;function Pb(a,d){var e=b;b+=12;0==c[Qb]<<24>>24&&Hb(Qb);Vb(e,a,d);Wb(Xb,e);b=e;return Xb}Pb.X=1;function Wb(a,d){c[a]=c[d];k[a]=k[d];c[a+1]=c[d+1];k[a+1]=k[d+1];c[a+2]=c[d+2];k[a+2]=k[d+2];c[a+3]=c[d+3];k[a+3]=k[d+3];var e=a+4,f=d+4;c[e]=c[f];k[e]=k[f];c[e+1]=c[f+1];k[e+1]=k[f+1];c[e+2]=c[f+2];k[e+2]=k[f+2];c[e+3]=c[f+3];k[e+3]=k[f+3];e=a+8;f=d+8;c[e]=c[f];k[e]=k[f];c[e+1]=c[f+1];k[e+1]=k[f+1];c[e+2]=c[f+2];k[e+2]=k[f+2];c[e+3]=c[f+3];k[e+3]=k[f+3];return a}Wb.X=1;function Vb(a,d,e){var f=b;b+=9;var g=f+1,h=f+2,i=f+3,j=f+4,l=f+5,m=f+6,n=f+7,p=f+8;k[f]=k[d]*k[e];k[g]=k[d+1]*k[e+1];k[h]=k[d+2]*k[e+2];k[i]=k[d+4]*k[e];k[j]=k[d+4+1]*k[e+1];k[l]=k[d+4+2]*k[e+2];k[m]=k[d+8]*k[e];k[n]=k[d+8+1]*k[e+1];k[p]=k[d+8+2]*k[e+2];Db(a,f,g,h,i,j,l,m,n,p);b=f}Vb.X=1;function yaa(a,d){return Yb(a,d)}yaa.X=1;function Yb(a,d){var e=b;b+=9;var f=e+1,g=e+2,h=e+3,i=e+4,j=e+5,l=e+6,m=e+7,n=e+8;k[e]=k[a]-k[d];k[f]=k[a+1]-k[d+1];k[g]=k[a+2]-k[d+2];k[h]=k[a+4]-k[d+4];k[i]=k[a+4+1]-k[d+4+1];k[j]=k[a+4+2]-k[d+4+2];k[l]=k[a+8]-k[d+8];k[m]=k[a+8+1]-k[d+8+1];k[n]=k[a+8+2]-k[d+8+2];Db(a,e,f,g,h,i,j,l,m,n);b=e;return a}Yb.X=1;function Zb(a,d){var e=b;b+=12;0==c[ac]<<24>>24&&Hb(ac);bc(e,a,d);Wb(cc,e);b=e;return cc}Zb.X=1;function bc(a,d,e){var f=b;b+=9;var g=f+1,h=f+2,i=f+3,j=f+4,l=f+5,m=f+6,n=f+7,p=f+8;k[f]=k[d]*k[0+e]+k[d+4]*k[4+e]+k[d+8]*k[8+e];k[g]=k[d]*k[0+e+1]+k[d+4]*k[4+e+1]+k[d+8]*k[8+e+1];k[h]=k[d]*k[0+e+2]+k[d+4]*k[4+e+2]+k[d+8]*k[8+e+2];k[i]=k[d+1]*k[0+e]+k[d+4+1]*k[4+e]+k[d+8+1]*k[8+e];k[j]=k[d+1]*k[0+e+1]+k[d+4+1]*k[4+e+1]+k[d+8+1]*k[8+e+1];k[l]=k[d+1]*k[0+e+2]+k[d+4+1]*k[4+e+2]+k[d+8+1]*k[8+e+2];k[m]=k[d+2]*k[0+e]+k[d+4+2]*k[4+e]+k[d+8+2]*k[8+e];k[n]=k[d+2]*k[0+e+1]+k[d+4+2]*k[4+e+1]+k[d+8+2]*k[8+e+1];k[p]=k[d+2]*k[0+e+2]+k[d+4+2]*k[4+e+2]+k[d+8+2]*k[8+e+2];Db(a,f,g,h,i,j,l,m,n,p);b=f}bc.X=1;function zaa(a,d){dc(a,d)}zaa.X=1;function dc(a,d){var e=b;b+=4;var f,g,h,i;f=k[a]+k[a+4+1]+k[a+8+2];0>24&&Hb(pc);qc(d,a);Wb(rc,d);b=d;return rc}oc.X=1;function qc(a,d){var e=b;b+=9;var f=e+1,g=e+2,h=e+3,i=e+4,j=e+5,l=e+6,m=e+7,n=e+8;k[e]=sc(k[d]);k[f]=sc(k[d+1]);k[g]=sc(k[d+2]);k[h]=sc(k[d+4]);k[i]=sc(k[d+4+1]);k[j]=sc(k[d+4+2]);k[l]=sc(k[d+8]);k[m]=sc(k[d+8+1]);k[n]=sc(k[d+8+2]);Db(a,e,f,g,h,i,j,l,m,n);b=e}qc.X=1;function Daa(a,d){return xc(a,d)}Daa.X=1;function xc(a,d){return k[a+1]*k[d]+k[a+4+1]*k[d+1]+k[a+8+1]*k[d+2]}xc.X=1;function yc(a){var d=b;b+=12;0==c[zc]<<24>>24&&Hb(zc);Bc(d,a);Wb(Nc,d);b=d;return Nc}yc.X=1;function Bc(a,d){var e=b;b+=16;var f=e+4,g=e+5,h=e+6,i=e+7,j=e+8,l=e+9,m=e+10,n=e+11,p=e+12,r=e+13,s=e+14,t=e+15;k[f]=Oc(d,1,1,2,2);k[g]=Oc(d,1,2,2,0);k[h]=Oc(d,1,0,2,1);H(e,f,g,h);f=1/J(0+d,e);k[i]=k[e]*f;k[j]=Oc(d,0,2,2,1)*f;k[l]=Oc(d,0,1,1,2)*f;k[m]=k[e+1]*f;k[n]=Oc(d,0,0,2,2)*f;k[p]=Oc(d,0,2,1,0)*f;k[r]=k[e+2]*f;k[s]=Oc(d,0,1,2,0)*f;k[t]=Oc(d,0,0,1,1)*f;Db(a,i,j,l,m,n,p,r,s,t);b=e}Bc.X=1;function Eaa(a,d,e,f,g){return Oc(a,d,e,f,g)}Eaa.X=1;function Oc(a,d,e,f,g){return k[(d<<2)+a+e]*k[(f<<2)+a+g]-k[(d<<2)+a+g]*k[(f<<2)+a+e]}Oc.X=1;function Faa(a,d){Pc(a,d)}Faa.X=1;function Pc(a,d){var e;for(e=0;;){Tc((e<<2)+a,(e<<2)+d);var f=e+1;e=f;if(3<=(f|0)){break}}}Pc.X=1;function Vc(){Wc();return Xc}Vc.X=1;function Wc(){var a=b;b+=9;var d=a+1,e=a+2,f=a+3,g=a+4,h=a+5,i=a+6,j=a+7,l=a+8;0==c[cd]<<24>>24&&0!=(Hb(cd)|0)&&(k[a]=1,k[d]=0,k[e]=0,k[f]=0,k[g]=1,k[h]=0,k[i]=0,k[j]=0,k[l]=1,Db(Xc,a,d,e,f,g,h,i,j,l));b=a;return Xc}Wc.X=1;function dd(a){var d=b;b+=12;0==c[ed]<<24>>24&&Hb(ed);Gaa(d,a);Wb(gd,d);b=d;return gd}dd.X=1;function Gaa(a,d){var e=b;b+=9;var f=e+1,g=e+2,h=e+3,i=e+4,j=e+5,l=e+6,m=e+7,n=e+8;k[e]=Oc(d,1,1,2,2);k[f]=Oc(d,0,2,2,1);k[g]=Oc(d,0,1,1,2);k[h]=Oc(d,1,2,2,0);k[i]=Oc(d,0,0,2,2);k[j]=Oc(d,0,2,1,0);k[l]=Oc(d,1,0,2,1);k[m]=Oc(d,0,1,2,0);k[n]=Oc(d,0,0,1,1);Db(a,e,f,g,h,i,j,l,m,n);b=e}Gaa.X=1;function Haa(a,d){return(d<<2)+a}Haa.X=1;function Iaa(a,d){return kd(a,d)}Iaa.X=1;function kd(a,d){var e=b;b+=9;var f=e+1,g=e+2,h=e+3,i=e+4,j=e+5,l=e+6,m=e+7,n=e+8;k[e]=k[a]+k[d];k[f]=k[a+1]+k[d+1];k[g]=k[a+2]+k[d+2];k[h]=k[a+4]+k[d+4];k[i]=k[a+4+1]+k[d+4+1];k[j]=k[a+4+2]+k[d+4+2];k[l]=k[a+8]+k[d+8];k[m]=k[a+8+1]+k[d+8+1];k[n]=k[a+8+2]+k[d+8+2];Db(a,e,f,g,h,i,j,l,m,n);b=e;return a}kd.X=1;function Jaa(a,d){return ld(a,d)}Jaa.X=1;function ld(a,d){var e=b;b+=9;var f=e+1,g=e+2,h=e+3,i=e+4,j=e+5,l=e+6,m=e+7,n=e+8;k[e]=nc(d,a);k[f]=xc(d,a);k[g]=kc(d,a);k[h]=nc(d,a+4);k[i]=xc(d,a+4);k[j]=kc(d,a+4);k[l]=nc(d,a+8);k[m]=xc(d,a+8);k[n]=kc(d,a+8);Db(a,e,f,g,h,i,j,l,m,n);b=e;return a}ld.X=1;function Kaa(a,d,e,f){md(a,d,e,f)}Kaa.X=1;function md(a,d,e,f){var g,h,i,j,l,m,n,p;qd(d);g=f;for(var r=a+4,s=a+4,t=a+8;0<(f|0);){f=0;h=1;i=2;j=sc(k[a+1]);l=sc(k[a+2]);l>j&&(h=2,i=1,j=l);l=sc(k[r+2]);l>j&&(f=1,h=2,i=0,j=l);l=sc(k[a])+sc(k[s+1]);m=e*(l+sc(k[t+2]));if(j<=m){if(j<=1.1920928955078125e-7*m){break}g=1}n=k[(f<<2)+a+h];m=(k[(h<<2)+a+h]-k[(f<<2)+a+f])/(2*n);l=m*m;j=m;83886080>l*l?(l=ec(l+1),m=0<=j?1/(m+l):1/(m-l),j=1/ec(m*m+1)):(m=1/(j*(.5/l+2)),j=1-.5*m*m);l=j*m;k[(h<<2)+a+f]=0;k[(f<<2)+a+h]=0;p=(f<<2)+a+f;k[p]-=m*n;p=(h<<2)+a+h;k[p]+=m*n;n=k[(i<<2)+a+f];m=k[(i<<2)+a+h];p=j*n-l*m;k[(f<<2)+a+i]=p;k[(i<<2)+a+f]=p;n=j*m+l*n;k[(h<<2)+a+i]=n;k[(i<<2)+a+h]=n;for(i=0;!(p=(i<<2)+d,n=k[p+f],m=k[p+h],k[p+f]=j*n-l*m,k[p+h]=j*m+l*n,i=n=i+1,3<=(n|0));){}g=f=g-1}}md.X=1;function Laa(a,d){zb(a,d)}Laa.X=1;function zb(a,d){var e=b;b+=9;var f,g,h,i,j,l,m,n,p,r=e+1,s=e+2,t=e+3,w=e+4,x=e+5,y=e+6,z=e+7,A=e+8;f=2/rd(d);g=k[d]*f;h=k[d+1]*f;i=k[d+2]*f;f=k[d+3]*g;j=k[d+3]*h;l=k[d+3]*i;g*=k[d];m=k[d]*h;n=k[d]*i;h*=k[d+1];p=k[d+1]*i;i*=k[d+2];k[e]=1-(h+i);k[r]=m-l;k[s]=n+j;k[t]=m+l;k[w]=1-(g+i);k[x]=p-f;k[y]=n-j;k[z]=p+f;k[A]=1-(g+h);Db(a,e,r,s,t,w,x,y,z,A);b=e}zb.X=1;function Maa(a,d,e,f){sd(a,d,e,f)}Maa.X=1;function sd(a,d,e,f){var g=b;b+=9;var h,i,j,l,m,n,p,r=g+1,s=g+2,t=g+3,w=g+4,x=g+5,y=g+6,z=g+7,A=g+8;h=td(d);i=td(e);j=td(f);d=ud(d);e=ud(e);f=ud(f);l=h*j;m=h*f;n=d*j;p=d*f;k[g]=i*j;k[r]=e*n-m;k[s]=e*l+p;k[t]=i*f;k[w]=e*p+l;k[x]=e*m-n;k[y]=-e;k[z]=i*d;k[A]=i*h;Db(a,g,r,s,t,w,x,y,z,A);b=g}sd.X=1;function Naa(a){qd(a)}Naa.X=1;function qd(a){var d=b;b+=9;var e=d+1,f=d+2,g=d+3,h=d+4,i=d+5,j=d+6,l=d+7,m=d+8;k[d]=1;k[e]=0;k[f]=0;k[g]=0;k[h]=1;k[i]=0;k[j]=0;k[l]=0;k[m]=1;Db(a,d,e,f,g,h,i,j,l,m);b=d}qd.X=1;function Oaa(a,d){return Wb(a,d)}Oaa.X=1;function vd(a,d,e,f){var g=b;b+=3;var h=g+1,i=g+2;k[g]=d;k[h]=e;k[i]=f;yd(a,g,h,i,1);b=g}vd.X=1;function zd(a,d){c[a+6]=d&1}zd.X=1;function Ad(a,d){c[a+1]=d}Ad.X=1;function Bd(a){return k[a+3]}Bd.X=1;function Ed(a){return c[a+1]}Ed.X=1;function Fd(a){return c[a+8]&1}Fd.X=1;function Id(a){return c[a+4]&1}Id.X=1;function Jd(a,d){c[a+4]=d&1}Jd.X=1;function Md(a){return c[a+2]}Md.X=1;function Nd(a,d){c[a+12]=d}Nd.X=1;function Od(a){return c[a+12]}Od.X=1;function Paa(a){return k[a]}Paa.X=1;function Pd(a){return k[a+11]}Pd.X=1;function Qd(a){return c[a+6]&1}Qd.X=1;function Sd(a,d){k[a+9]=d}Sd.X=1;function Qaa(a,d){k[a]=d}Qaa.X=1;function Td(a,d){k[a+3]=d}Td.X=1;function Ud(a,d){c[a+10]=d&1}Ud.X=1;function Vd(a){return c[a+10]&1}Vd.X=1;function Wd(a){return k[a+9]}Wd.X=1;function Yd(a,d){k[a+11]=d}Yd.X=1;function ae(a,d){c[a+2]=d}ae.X=1;function be(a){return c[a+7]&1}be.X=1;function ce(a,d){c[a+7]=d&1}ce.X=1;function de(a,d){c[a+8]=d&1}de.X=1;function yd(a,d,e,f,g){var h=b;b+=6;var i=h+3,j;if(1<=sc(k[a+8])){k[h]=0;k[i]=0;j=ee(k[a],k[a+2]);var l=h+1;0>24&&Hb(te);ue(d,a);Wb(ve,d);b=d;return ve}se.X=1;function ue(a,d){Db(a,d,d+4,d+8,d+1,d+4+1,d+8+1,d+2,d+4+2,d+8+2)}ue.X=1;function Uaa(a,d){return(d<<2)+a}Uaa.X=1;function we(a){0!=(a|0)&&xe(a)}we.X=1;function ye(a,d){var e=b;b+=12;0==c[ze]<<24>>24&&Hb(ze);Vaa(e,a,d);Wb(Ae,e);b=e;return Ae}ye.X=1;function Vaa(a,d,e){var f=b;b+=9;var g=f+1,h=f+2,i=f+3,j=f+4,l=f+5,m=f+6,n=f+7,p=f+8;k[f]=J(d,0+e);k[g]=J(d,4+e);k[h]=J(d,8+e);k[i]=J(d+4,0+e);k[j]=J(d+4,4+e);k[l]=J(d+4,8+e);k[m]=J(d+8,0+e);k[n]=J(d+8,4+e);k[p]=J(d+8,8+e);Db(a,f,g,h,i,j,l,m,n,p);b=f}Vaa.X=1;function Be(a,d,e,f){var g=b;b+=3;var h=g+1,i=g+2;k[g]=d;k[h]=e;k[i]=f;Waa(a,g,h,i);b=g}Be.X=1;function Waa(a,d,e,f){k[d]=ee(k[a+4],k[a]);k[e]=ie(-k[a+8]);k[f]=ee(k[a+8+1],k[a+8+2]);1.5707963705062866==sc(k[e])&&(a=k[d],k[d]=0>24&&Hb(Pe);v[c[c[a]+15]](e,a,d);c[Qe]=c[e];k[Qe]=k[e];c[Qe+1]=c[e+1];k[Qe+1]=k[e+1];c[Qe+2]=c[e+2];k[Qe+2]=k[e+2];c[Qe+3]=c[e+3];k[Qe+3]=k[e+3];b=e;return Qe}Ne.X=1;function Yaa(a,d){Je(a,d)}Yaa.X=1;function Re(a,d){var e=Se(56);Te(e,a,d);return e}Re.X=1;function Se(a){return Ue(a,16)}Se.X=1;function Zaa(a){return Ke(a)}Zaa.X=1;function Ve(a,d,e){return v[c[c[a]+13]](a,d,e)}Ve.X=1;function We(a){return v[c[c[a]+7]](a)}We.X=1;function Xe(a){return v[c[c[a]+19]](a)}Xe.X=1;function $aa(a){return Ye(a)}$aa.X=1;function Ye(a){return bf(Ie(a))}Ye.X=1;function aba(a){return cf(a)}aba.X=1;function cf(a){return k[a+7+(c[a+13]+2|0)%3]}cf.X=1;function bba(a,d,e,f){df(a,d,e,f)}bba.X=1;function ef(a){return v[c[c[a]+12]](a)}ef.X=1;function ff(a){return v[c[c[a]+9]](a)}ff.X=1;function cba(a){return gf(a)}cba.X=1;function gf(a){return k[a+7+c[a+13]]}gf.X=1;function dba(a){return a+3}dba.X=1;function hf(a,d){var e=b;b+=4;0==c[jf]<<24>>24&&Hb(jf);kf(e,a,d);c[lf]=c[e];k[lf]=k[e];c[lf+1]=c[e+1];k[lf+1]=k[e+1];c[lf+2]=c[e+2];k[lf+2]=k[e+2];c[lf+3]=c[e+3];k[lf+3]=k[e+3];b=e;return lf}hf.X=1;function mf(a,d){var e=b;b+=4;0==c[nf]<<24>>24&&Hb(nf);v[c[c[a]+16]](e,a,d);c[of]=c[e];k[of]=k[e];c[of+1]=c[e+1];k[of+1]=k[e+1];c[of+2]=c[e+2];k[of+2]=k[e+2];c[of+3]=c[e+3];k[of+3]=k[e+3];b=e;return of}mf.X=1;function pf(a,d){v[c[c[a]+6]](a,d)}pf.X=1;function qf(a,d,e,f){v[c[c[a]+2]](a,d,e,f)}qf.X=1;function eba(a){return Le(a)}eba.X=1;function rf(a,d){var e=b;b+=4;0==c[sf]<<24>>24&&Hb(sf);tf(e,a,d);c[uf]=c[e];k[uf]=k[e];c[uf+1]=c[e+1];k[uf+1]=k[e+1];c[uf+2]=c[e+2];k[uf+2]=k[e+2];c[uf+3]=c[e+3];k[uf+3]=k[e+3];b=e;return uf}rf.X=1;function vf(a,d){return v[c[c[a]+5]](a,d)}vf.X=1;function fba(a){return xf(a)}fba.X=1;function xf(a){return yf(Ie(a))}xf.X=1;function gba(a){return zf(a)}gba.X=1;function zf(a){return Af(Ie(a))}zf.X=1;function hba(a){return Me(a)}hba.X=1;function iba(a){return Bf(a)}iba.X=1;function Bf(a){return Cf(Ie(a))}Bf.X=1;function Df(a){return v[c[c[a]+11]](a)}Df.X=1;function Ef(a,d,e){v[c[c[a]+20]](a,d,e)}Ef.X=1;function Ff(a,d){v[c[c[a]+10]](a,d)}Ff.X=1;function jba(a){return Gf(a)}jba.X=1;function Gf(a){return Hf(Ie(a))}Gf.X=1;function kba(a,d){Jf(a,d)}kba.X=1;function Jf(a,d){var e=a+7;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}Jf.X=1;function lba(a){return Kf(a)}lba.X=1;function Kf(a){return Lf(Ie(a))}Kf.X=1;function mba(a){return Mf(a)}mba.X=1;function Nf(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}Nf.X=1;function Of(a,d,e,f){v[c[c[a]+17]](a,d,e,f)}Of.X=1;function nba(a){return a+7}nba.X=1;function Pf(a,d,e){var f=b;b+=1;k[f]=e;v[c[c[a]+3]](a,d,f);b=f}Pf.X=1;function Qf(a){return v[c[c[a]+4]](a)}Qf.X=1;function Rf(a,d){v[c[c[a]+14]](a,d)}Rf.X=1;function Sf(a,d,e,f){v[c[c[a]+18]](a,d,e,f)}Sf.X=1;function oba(a,d,e,f,g,h,i){Tf(a,d,e,f,g,h,i)}oba.X=1;function pba(a){return Uf(a)}pba.X=1;function Uf(a){return Yf(Ie(a))}Uf.X=1;function qba(a){return Ie(a)}qba.X=1;function Zf(a,d,e){v[c[c[a]+8]](a,d,e)}Zf.X=1;function $f(a){return v[c[c[a]+26]](a)}$f.X=1;function ag(a,d){var e=b;b+=4;0==c[bg]<<24>>24&&Hb(bg);v[c[c[a]+15]](e,a,d);c[cg]=c[e];k[cg]=k[e];c[cg+1]=c[e+1];k[cg+1]=k[e+1];c[cg+2]=c[e+2];k[cg+2]=k[e+2];c[cg+3]=c[e+3];k[cg+3]=k[e+3];b=e;return cg}ag.X=1;function dg(a){return v[c[c[a]+4]](a)}dg.X=1;function eg(a,d){var e=b;b+=4;0==c[fg]<<24>>24&&Hb(fg);gg(e,a,d);c[hg]=c[e];k[hg]=k[e];c[hg+1]=c[e+1];k[hg+1]=k[e+1];c[hg+2]=c[e+2];k[hg+2]=k[e+2];c[hg+3]=c[e+3];k[hg+3]=k[e+3];b=e;return hg}eg.X=1;function gg(a,d,e){ig(a,jg(d+23,e),d+3)}gg.X=1;function rba(a){return xf(a)}rba.X=1;function kg(a,d,e,f){v[c[c[a]+24]](a,d,e,f)}kg.X=1;function lg(a){return v[c[c[a]+22]](a)}lg.X=1;function mg(a){return v[c[c[a]+7]](a)}mg.X=1;function ng(a){return v[c[c[a]+19]](a)}ng.X=1;function sba(a){return Ye(a)}sba.X=1;function og(a,d,e){v[c[c[a]+25]](a,d,e)}og.X=1;function tba(a){return wg(a)}tba.X=1;function wg(a){return xg(a+23,0)}wg.X=1;function uba(a,d,e,f){df(a,d,e,f)}uba.X=1;function yg(a){return c[a+13]}yg.X=1;function vba(a){return c[a]}vba.X=1;function wba(a,d){c[a]=d}wba.X=1;function zg(a){return c[a+3]}zg.X=1;function Ag(a){return c[a+4]}Ag.X=1;function Bg(a,d){c[a+6]=d}Bg.X=1;function xba(a,d){c[a]=d}xba.X=1;function Cg(a){return c[a+7]}Cg.X=1;function Dg(a){return c[a+5]}Dg.X=1;function yba(a){return c[a]}yba.X=1;function Eg(a,d){c[a+3]=d}Eg.X=1;function Fg(a,d){c[a+7]=d}Fg.X=1;function Gg(a){return c[a+6]}Gg.X=1;function Hg(a,d){c[a+4]=d}Hg.X=1;function Ig(a){return v[c[c[a]+12]](a)}Ig.X=1;function zba(a,d){Je(a,d)}zba.X=1;function Jg(a){return v[c[c[a]+23]](a)}Jg.X=1;function Kg(a){return v[c[c[a]+9]](a)}Kg.X=1;function Lg(a){return Ue(a,16)}Lg.X=1;function Aba(a){return a+3}Aba.X=1;function Mg(a,d){var e=b;b+=4;0==c[Ng]<<24>>24&&Hb(Ng);kf(e,a,d);c[Og]=c[e];k[Og]=k[e];c[Og+1]=c[e+1];k[Og+1]=k[e+1];c[Og+2]=c[e+2];k[Og+2]=k[e+2];c[Og+3]=c[e+3];k[Og+3]=k[e+3];b=e;return Og}Mg.X=1;function Bba(a,d){Jf(a,d)}Bba.X=1;function Pg(a,d){v[c[c[a]+6]](a,d)}Pg.X=1;function Qg(a,d,e,f){v[c[c[a]+2]](a,d,e,f)}Qg.X=1;function Cba(a){return Le(a)}Cba.X=1;function Dba(a){return Gf(a)}Dba.X=1;function Rg(a,d){var e=b;b+=4;0==c[Sg]<<24>>24&&Hb(Sg);tf(e,a,d);c[Tg]=c[e];k[Tg]=k[e];c[Tg+1]=c[e+1];k[Tg+1]=k[e+1];c[Tg+2]=c[e+2];k[Tg+2]=k[e+2];c[Tg+3]=c[e+3];k[Tg+3]=k[e+3];b=e;return Tg}Rg.X=1;function Ug(a,d){return v[c[c[a]+5]](a,d)}Ug.X=1;function Eba(a,d){Vg(a,d)}Eba.X=1;function Fba(a){return zf(a)}Fba.X=1;function Wg(a,d,e){return v[c[c[a]+13]](a,d,e)}Wg.X=1;function Gba(a){return Uf(a)}Gba.X=1;function Hba(a){return Me(a)}Hba.X=1;function Iba(a){return Bf(a)}Iba.X=1;function ah(a){return v[c[c[a]+11]](a)}ah.X=1;function Jba(a){bh(a)}Jba.X=1;function ch(a,d,e){v[c[c[a]+20]](a,d,e)}ch.X=1;function dh(a,d){v[c[c[a]+10]](a,d)}dh.X=1;function Kba(a,d,e,f,g){eh(a,d,e,f,g)}Kba.X=1;function eh(a,d,e,f,g){fh(a+14,a+18,g,d,e,f)}eh.X=1;function gh(a,d){var e=b;b+=4;0==c[hh]<<24>>24&&Hb(hh);v[c[c[a]+16]](e,a,d);c[ih]=c[e];k[ih]=k[e];c[ih+1]=c[e+1];k[ih+1]=k[e+1];c[ih+2]=c[e+2];k[ih+2]=k[e+2];c[ih+3]=c[e+3];k[ih+3]=k[e+3];b=e;return ih}gh.X=1;function Lba(a){return Kf(a)}Lba.X=1;function Mba(a){return Mf(a)}Mba.X=1;function jh(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}jh.X=1;function kh(a,d,e,f){v[c[c[a]+17]](a,d,e,f)}kh.X=1;function Nba(a){return lh(a)}Nba.X=1;function Oba(a){return a+7}Oba.X=1;function mh(a,d,e){var f=b;b+=1;k[f]=e;v[c[c[a]+3]](a,d,f);b=f}mh.X=1;function nh(a,d,e){return v[c[c[a]+28]](a,d,e)}nh.X=1;function oh(a,d){v[c[c[a]+14]](a,d)}oh.X=1;function ph(a,d,e,f){v[c[c[a]+18]](a,d,e,f)}ph.X=1;function qh(a,d,e,f){v[c[c[a]+27]](a,d,e,f)}qh.X=1;function Pba(a){return Ge(a)}Pba.X=1;function Qba(a){return yg(a)}Qba.X=1;function Rba(a,d,e,f,g,h,i){Tf(a,d,e,f,g,h,i)}Rba.X=1;function Sba(a){return Ie(a)}Sba.X=1;function Tba(a){return sh(a)}Tba.X=1;function sh(a){return th(a+23)}sh.X=1;function uh(a){return v[c[c[a]+21]](a)}uh.X=1;function vh(a){0!=(a|0)&&xe(a)}vh.X=1;function wh(a){var d=xb(4);c[d]=a;return d}wh.X=1;function Uba(a){return c[a]}Uba.X=1;function xh(a){0!=(a|0)&&yh(a)}xh.X=1;function zh(){var a=Vba(32);Ah(a);return a}zh.X=1;function Vba(a){return Ue(a,16)}Vba.X=1;function Bh(){var a=Lg(112);Ch(a,0,0,16);return a}Bh.X=1;function Fh(a){var d=Lg(112);Ch(d,a,0,16);return d}Fh.X=1;function Gh(a,d){var e=Lg(112);Ch(e,a,d,16);return e}Gh.X=1;function Hh(a,d,e){var f=Lg(112);Ch(f,a,d,e);return f}Hh.X=1;function Ih(a){return c[a+1]}Ih.X=1;function Jh(a,d){c[a+2]=d}Jh.X=1;function Kh(a,d){c[a+5]=d}Kh.X=1;function Lh(a,d){c[a+1]=d}Lh.X=1;function Mh(a){return c[a+2]}Mh.X=1;function Nh(a){return k[a+56]}Nh.X=1;function Oh(a,d){k[a+46]=d}Oh.X=1;function Ph(a){return k[a+55]}Ph.X=1;function Qh(a,d){k[a+56]=d}Qh.X=1;function Rh(a,d){c[a+49]=d}Rh.X=1;function Sh(a){return 0==(c[a+51]&7|0)}Sh.X=1;function Th(a,d){k[a+62]=d}Th.X=1;function Uh(a){return c[a+52]}Uh.X=1;function Vh(a,d){c[a+53]=d}Vh.X=1;function Wh(a){return k[a+62]}Wh.X=1;function Xh(a,d){c[a+59]=d}Xh.X=1;function Yh(a,d){c[a+52]=d}Yh.X=1;function Zh(a,d){k[a+60]=d}Zh.X=1;function $h(a){return c[a+51]}$h.X=1;function ai(a){return 0!=(c[a+51]&1|0)}ai.X=1;function bi(a){return c[a+48]}bi.X=1;function ci(a){return c[a+47]}ci.X=1;function di(a){return k[a+57]}di.X=1;function ei(a){return c[a+59]}ei.X=1;function fi(a,d){k[a+61]=d}fi.X=1;function gi(a){return k[a+62]*k[a+62]}gi.X=1;function hi(a,d){c[a+48]=d}hi.X=1;function ii(a){return c[a+53]}ii.X=1;function ji(a){return c[a+58]}ji.X=1;function ki(a){return c[a+54]}ki.X=1;function li(a){return 0==(c[a+51]&4|0)}li.X=1;function mi(a){return c[a+50]}mi.X=1;function ni(a){return k[a+46]}ni.X=1;function oi(a){return k[a+60]}oi.X=1;function pi(a){return k[a+61]}pi.X=1;function Wba(a){return Nh(a)}Wba.X=1;function Xba(a,d){Oh(a,d)}Xba.X=1;function Yba(a,d){qi(a,d)}Yba.X=1;function qi(a,d){var e=a+33;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}qi.X=1;function Zba(a){return Ph(a)}Zba.X=1;function $ba(a,d){ri(a,d)}$ba.X=1;function ri(a,d){var e=a+37;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}ri.X=1;function si(a,d,e){return v[c[c[a]+5]](a,d,e)}si.X=1;function aca(a,d){Qh(a,d)}aca.X=1;function bca(a,d){Rh(a,d)}bca.X=1;function ti(a){ui(a,0)}ti.X=1;function vi(a,d){ui(a,d&1)}vi.X=1;function cca(a,d){wi(a,d)}cca.X=1;function wi(a,d){xi(a+17,d)}wi.X=1;function yi(){var a=zi(256);Bi(a);return a}yi.X=1;function zi(a){return Ue(a,16)}zi.X=1;function dca(a){return a+33}dca.X=1;function eca(a){return Sh(a)}eca.X=1;function Ci(a,d){v[c[c[a]+3]](a,d)}Ci.X=1;function fca(a,d){Th(a,d)}fca.X=1;function gca(a){return Uh(a)}gca.X=1;function hca(a,d){Vh(a,d)}hca.X=1;function ica(a){return Wh(a)}ica.X=1;function jca(a,d){Xh(a,d)}jca.X=1;function kca(a,d){return Di(a,d)}kca.X=1;function Di(a,d){return 0!=(c[a+63]|0)?v[c[c[a]]](a,d):1}Di.X=1;function lca(a){return a+41}lca.X=1;function Ei(a){return v[c[c[a]+4]](a)}Ei.X=1;function mca(a){return a+37}mca.X=1;function nca(a,d){Fi(a,d)}nca.X=1;function oca(a){return a+17}oca.X=1;function pca(a,d){Yh(a,d)}pca.X=1;function qca(a,d){Zh(a,d)}qca.X=1;function Gi(a,d){v[c[c[a]+6]](a,d)}Gi.X=1;function rca(a){return $h(a)}rca.X=1;function sca(a){return ai(a)}sca.X=1;function tca(a){return bi(a)}tca.X=1;function uca(a,d){Hi(a,d)}uca.X=1;function Hi(a,d){var e=a+41;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3];c[a+45]=(1!=k[d]?1:1!=k[d+1]?1:1!=k[d+2])&1}Hi.X=1;function Ii(a){if(0!=(a|0)){v[c[c[a]+2]](a)}}Ii.X=1;function vca(a){return ci(a)}vca.X=1;function wca(a){return di(a)}wca.X=1;function xca(a){return ei(a)}xca.X=1;function yca(a,d){fi(a,d)}yca.X=1;function zca(a){return a+1}zca.X=1;function Aca(a){return gi(a)}Aca.X=1;function Bca(a,d){Ji(a,d)}Bca.X=1;function Ji(a,d){xi(a+1,d)}Ji.X=1;function Cca(a,d){hi(a,d)}Cca.X=1;function Dca(a){return ii(a)}Dca.X=1;function Eca(a){return Ki(a)}Eca.X=1;function Ki(a){return 2!=(ki(a)|0)?5!=(ki(a)|0):0}Ki.X=1;function Fca(a){return ji(a)}Fca.X=1;function Gca(a){return ki(a)}Gca.X=1;function Hca(a){return li(a)}Hca.X=1;function Ica(a,d){Li(a,d)}Ica.X=1;function Jca(a){return mi(a)}Jca.X=1;function Kca(a){return ni(a)}Kca.X=1;function Lca(a){return oi(a)}Lca.X=1;function Mca(a){return pi(a)}Mca.X=1;function Nca(a,d){Mi(a,d)}Nca.X=1;function Mi(a,d){k[a+55]=d}Mi.X=1;function Ni(a){return c[a+49]}Ni.X=1;function Oi(a,d){c[a+51]=d}Oi.X=1;function Pi(a){return 0!=(c[a+51]&3|0)}Pi.X=1;function Qi(a,d){k[a+57]=d}Qi.X=1;function Ri(a){return 0!=(c[a+45]|0)}Ri.X=1;function Si(a,d){c[a+47]=d}Si.X=1;function Ti(a){return 0!=(c[a+51]&2|0)}Ti.X=1;function Ui(a){return k[a+5]}Ui.X=1;function Vi(a){return c[a+7]&1}Vi.X=1;function Wi(a){return k[a+3]}Wi.X=1;function Xi(a){return k[a+6]}Xi.X=1;function Yi(a){return k[a+2]}Yi.X=1;function Zi(a){return k[a+1]}Zi.X=1;function $i(a){return k[a+4]}$i.X=1;function aj(a,d){c[a+1]=d}aj.X=1;function bj(a,d){c[a+2]=d}bj.X=1;function cj(a){return c[a+2]}cj.X=1;function dj(a){return c[a+1]}dj.X=1;function Oca(a){return Ni(a)}Oca.X=1;function Pca(a,d){Oi(a,d)}Pca.X=1;function Qca(a){return Pi(a)}Qca.X=1;function Rca(a,d){Qi(a,d)}Rca.X=1;function Sca(a){return Ri(a)}Sca.X=1;function Tca(a,d){Si(a,d)}Tca.X=1;function Uca(a){return Ti(a)}Uca.X=1;function ej(a,d,e,f){var g=b;b+=14;var h=g+4,i=g+5,j=g+6,l=g+7,m=g+11,n=g+12,p=g+13,r=c[c[a]+6];k[h]=0;k[i]=0;k[j]=0;H(g,h,i,j);k[m]=0;k[n]=0;k[p]=0;H(l,m,n,p);v[r](a,d,e,f,g,l);b=g}ej.X=1;function fj(a,d,e,f,g){var h=b;b+=7;var i=h+4,j=h+5,l=h+6,m=c[c[a]+6];k[i]=0;k[j]=0;k[l]=0;H(h,i,j,l);v[m](a,d,e,f,g,h);b=h}fj.X=1;function gj(a,d,e,f,g,h){v[c[c[a]+6]](a,d,e,f,g,h)}gj.X=1;function hj(a,d,e,f,g){v[c[c[a]+4]](a,d,e,f,g)}hj.X=1;function ij(a){return v[c[c[a]+9]](a)}ij.X=1;function jj(a,d){v[c[c[a]+12]](a,d)}jj.X=1;function kj(a,d){v[c[c[a]+8]](a,d)}kj.X=1;function lj(a){v[c[c[a]+13]](a)}lj.X=1;function mj(a,d,e,f){v[c[c[a]+5]](a,d,e,f)}mj.X=1;function nj(a,d,e,f){v[c[c[a]+7]](a,d,e,f)}nj.X=1;function oj(a,d,e,f,g,h,i,j,l){return v[c[c[a]+2]](a,d,e,f,g,h,i,j,l)}oj.X=1;function pj(a,d,e){v[c[c[a]+11]](a,d,e)}pj.X=1;function qj(a,d,e){v[c[c[a]+3]](a,d,e)}qj.X=1;function Vca(a){return Ui(a)}Vca.X=1;function rj(){var a=xb(32);sj(a);return a}rj.X=1;function Wca(a){return tj(a)}Wca.X=1;function uj(a,d){var e=b;b+=1;k[e]=d;vj(a,e);b=e}uj.X=1;function wj(a){0!=(a|0)&&xe(a)}wj.X=1;function Xca(a){return Vi(a)}Xca.X=1;function Yca(a){return Wi(a)}Yca.X=1;function Zca(a){return Xi(a)}Zca.X=1;function xj(a,d,e){yj(a,d,e,.8999999761581421,.30000001192092896,1)}xj.X=1;function zj(a,d,e,f){yj(a,d,e,f,.30000001192092896,1)}zj.X=1;function Aj(a,d,e,f,g){yj(a,d,e,f,g,1)}Aj.X=1;function $ca(a,d,e,f,g,h){yj(a,d,e,f,g,h)}$ca.X=1;function ada(a){return Yi(a)}ada.X=1;function bda(a){return Bj(a)}bda.X=1;function cda(a,d){Cj(a,d)}cda.X=1;function dda(a){return Zi(a)}dda.X=1;function eda(a){return Dj(a)}eda.X=1;function fda(a){return $i(a)}fda.X=1;function Ej(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}Ej.X=1;function Fj(a){return v[c[c[a]+4]](a)}Fj.X=1;function Gj(){var a=b;b+=8;var d=xb(88);Hj(a);Ij(d,a);b=a;return d}Gj.X=1;function Jj(a){var d=xb(88);Ij(d,a);return d}Jj.X=1;function Kj(a){return v[c[c[a]+2]](a)}Kj.X=1;function Lj(a){return v[c[c[a]+6]](a)}Lj.X=1;function Mj(a){Nj(a,3,3)}Mj.X=1;function Oj(a,d){Nj(a,d,3)}Oj.X=1;function gda(a,d,e){Nj(a,d,e)}gda.X=1;function Pj(a){return v[c[c[a]+3]](a)}Pj.X=1;function Qj(a,d,e){return v[c[c[a]+5]](a,d,e)}Qj.X=1;function Rj(a,d,e,f,g,h,i,j){return v[c[c[a]+3]](a,d,e,f,g,h,i,j)}Rj.X=1;function Sj(a,d){return v[c[c[a]+2]](a,d)}Sj.X=1;function Tj(a,d){v[c[c[a]+4]](a,d)}Tj.X=1;function Uj(a){var d=xb(16);hda(d,a);return d}Uj.X=1;function Vj(a,d,e,f){var g=xb(16);Wj(g,a,d,e,f);return g}Vj.X=1;function Xj(a){return c[a+279]}Xj.X=1;function ida(a,d){c[a]=d}ida.X=1;function Yj(a){return c[a+278]}Yj.X=1;function jda(a){return c[a]}jda.X=1;function Zj(a,d){c[a+284]=d}Zj.X=1;function $j(a){return c[a+277]}$j.X=1;function ak(a,d,e){c[a+277]=d;c[a+278]=e}ak.X=1;function bk(a){return c[a+284]}bk.X=1;function ck(a){return k[a+281]}ck.X=1;function dk(a){return c[a+283]}dk.X=1;function ek(a){return c[a+282]}ek.X=1;function fk(a,d){c[a+283]=d}fk.X=1;function gk(a,d){c[a+282]=d}gk.X=1;function hk(a){return c[a+16]}hk.X=1;function ik(a){return c[a+17]}ik.X=1;function jk(a,d,e,f,g){return v[c[c[a]+3]](a,d,e,f,g)}jk.X=1;function kk(a,d,e,f,g){v[c[c[a]+2]](a,d,e,f,g)}kk.X=1;function lk(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}lk.X=1;function mk(a){return v[c[c[a]+2]](a)}mk.X=1;function nk(a){return v[c[c[a]+4]](a)}nk.X=1;function ok(a){return v[c[c[a]+3]](a)}ok.X=1;function pk(a,d,e){return v[c[c[a]+5]](a,d,e)}pk.X=1;function kda(a){return Xj(a)}kda.X=1;function lda(a){return Yj(a)}lda.X=1;function mda(a,d){return qk(a,d)}mda.X=1;function qk(a,d){var e=k[d+20];return 1<(c[d+36]|0)?e<=rk(a):e<=ck(a)}qk.X=1;function nda(a,d,e){sk(a,d,e)}nda.X=1;function oda(a,d){tk(a,d)}oda.X=1;function uk(){var a=vk(1140);wk(a);return a}uk.X=1;function vk(a){return Ue(a,16)}vk.X=1;function xk(a,d,e,f,g){var h=vk(1140);yk(h,a,d,e,f,g);return h}xk.X=1;function pda(a,d){return zk(a,d)}pda.X=1;function qda(a,d){return Ak(a,d)}qda.X=1;function rda(a){return c[a]}rda.X=1;function sda(a,d){return a+69*d+1}sda.X=1;function tda(a){return rk(a)}tda.X=1;function uda(a){Bk(a)}uda.X=1;function Bk(a){var d;d=0;var e=a+279,f=(d|0)<(c[e]|0);a:do{if(f){for(var g=a+1;;){if(tk(a,g+69*d),d+=1,(d|0)>=(c[e]|0)){break a}}}}while(0);c[a+279]=0}Bk.X=1;function vda(a){return $j(a)}vda.X=1;function wda(a,d,e){ak(a,d,e)}wda.X=1;function xda(a,d){Ck(a,d)}xda.X=1;function Ck(a,d){var e;tk(a,a+69*d+1);e=Xj(a)-1;if((d|0)!=(e|0)){for(var f=a+69*e+1,g=a+69*d+1,h=f+69;f>24&&Hb(Zl);v[c[c[a]+18]](d,a);c[$l]=c[d];k[$l]=k[d];c[$l+1]=c[d+1];k[$l+1]=k[d+1];c[$l+2]=c[d+2];k[$l+2]=k[d+2];c[$l+3]=c[d+3];k[$l+3]=k[d+3];b=d;return $l}Yl.X=1;function am(a){return c[a+21]}am.X=1;function bm(a,d){c[a+23]=d&1}bm.X=1;function cm(a,d){c[a+26]=d}cm.X=1;function dm(a){return c[a+26]}dm.X=1;function em(a,d){k[a+2]=d}em.X=1;function fm(a){return k[a+1]}fm.X=1;function gm(a){return k[a+2]}gm.X=1;function eea(a,d){k[a]=d}eea.X=1;function hm(a,d){k[a+1]=d}hm.X=1;function fea(a){return k[a]}fea.X=1;function im(a,d){var e;e=d+c[a+2];e>>>0>>0?(c[a+2]=e,e=c[a]+(c[a+2]-d)):e=0;return e}im.X=1;function jm(a){return c[a+1]-c[a+2]}jm.X=1;function km(a,d){(d|0)==(c[a+3]|0)&&(c[a+3]=c[d],c[a+2]=c[d+1]-8+ -c[a])}km.X=1;function lm(a){v[c[c[a]+5]](a)}lm.X=1;function gea(a){return am(a)}gea.X=1;function hea(a,d,e,f,g,h){mm(a,d,e,f,g,h)}hea.X=1;function nm(a,d){v[c[c[a]+16]](a,d)}nm.X=1;function pm(a,d){bm(a,d&1)}pm.X=1;function iea(a,d){cm(a,d)}iea.X=1;function qm(a,d){v[c[c[a]+33]](a,d)}qm.X=1;function rm(a,d){return v[c[c[a]+26]](a,d)}rm.X=1;function sm(a){return v[c[c[a]+24]](a)}sm.X=1;function tm(a,d){return v[c[c[a]+12]](a,d,1,.01666666753590107)}tm.X=1;function um(a,d,e){return v[c[c[a]+12]](a,d,e,.01666666753590107)}um.X=1;function vm(a,d,e,f){return v[c[c[a]+12]](a,d,e,f)}vm.X=1;function wm(a,d){v[c[c[a]+32]](a,d)}wm.X=1;function xm(a){return v[c[c[a]+28]](a)}xm.X=1;function jea(a,d){ym(a,d)}jea.X=1;function zm(a,d){v[c[c[a]+30]](a,d)}zm.X=1;function kea(a){return Am(a)}kea.X=1;function Am(a){a=c[a+21];return v[c[c[a]+9]](a)}Am.X=1;function lea(a){return dm(a)}lea.X=1;function Bm(a,d){v[c[c[a]+9]](a,d)}Bm.X=1;function Cm(a,d){v[c[c[a]+23]](a,d)}Cm.X=1;function mea(a,d,e,f,g,h,i,j){Dm(a,d,e,f,g,h,i,j)}mea.X=1;function nea(a){return a+7}nea.X=1;function Em(a){var d=xb(8);oea(d,a);return d}Em.X=1;function Fm(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}Fm.X=1;function Gm(a,d,e,f){return v[c[c[a]+2]](a,d,e,f)}Gm.X=1;function Hm(a){0!=(a|0)&&xe(a)}Hm.X=1;function Im(){var a=xb(12);Jm(a);return a}Im.X=1;function Km(a){0!=(a|0)&&(Lm(a),xe(a))}Km.X=1;function pea(a,d){Mm(a,d)}pea.X=1;function Mm(a,d){Lm(a);c[a]=Ue(d,16);c[a+1]=d}Mm.X=1;function Nm(a){var d=xb(20);Om(d,a);return d}Nm.X=1;function qea(a,d){return im(a,d)}qea.X=1;function rea(a){Lm(a)}rea.X=1;function Lm(a){0==(c[a+2]|0)&&(!(c[a+4]&1)&&0!=(c[a]|0)&&yh(c[a]),c[a]=0,c[a+2]=0)}Lm.X=1;function sea(a){return Pm(a)}sea.X=1;function Pm(a){var d;d=im(a,8);c[d]=c[a+3];c[d+1]=c[a]+c[a+2];return c[a+3]=d}Pm.X=1;function tea(a){return jm(a)}tea.X=1;function uea(a,d){km(a,d)}uea.X=1;function Qm(){var a=xb(72);Rm(a);return a}Qm.X=1;function Sm(a){0!=(a|0)&&xe(a)}Sm.X=1;function vea(a,d){Tm(a,d)}vea.X=1;function Tm(a,d){var e=2==(ki(a)|0);a:do{if(!e&&4!=(ki(a)|0)){var f=Um(a+76)k[Xm]){d=1;break a}d=0;break a}}while(0);d=1}}}while(0);return d}Vm.X=1;function Ym(a,d){c[a+151]=d}Ym.X=1;function Zm(a){return k[a+84]}Zm.X=1;function $m(a,d){c[a+124]=d}$m.X=1;function an(a){return k[a+116]}an.X=1;function bn(a){return k[a+110]}bn.X=1;function cn(a){var d=b;b+=4;0==c[dn]<<24>>24&&Hb(dn);yea(d,a);c[en]=c[d];k[en]=k[d];c[en+1]=c[d+1];k[en+1]=k[d+1];c[en+2]=c[d+2];k[en+2]=k[d+2];c[en+3]=c[d+3];k[en+3]=k[d+3];b=d;return en}cn.X=1;function zea(a,d,e){fn(a,d,e)}zea.X=1;function Aea(a,d){gn(a,d)}Aea.X=1;function gn(a,d){c[a+118]=d;if(0!=(c[a+118]|0)){v[c[c[d]+2]](d,a+1)}}gn.X=1;function Bea(a){hn(a)}Bea.X=1;function hn(a){var d=b;b+=6;var e=d+1,f=d+2,g=d+3,h=d+4,i=d+5;k[d]=0;k[e]=0;k[f]=0;pe(a+101,d,e,f);k[g]=0;k[h]=0;k[i]=0;pe(a+105,g,h,i);b=d}hn.X=1;function Cea(a){return a+33}Cea.X=1;function jn(a,d){v[c[c[a]+3]](a,d)}jn.X=1;function Dea(a){return oi(a)}Dea.X=1;function Eea(a){return a+146}Eea.X=1;function Fea(a){return a+138}Fea.X=1;function Gea(a,d){Yh(a,d)}Gea.X=1;function Hea(a){return Zm(a)}Hea.X=1;function Iea(a){return $h(a)}Iea.X=1;function Jea(a){return a+101}Jea.X=1;function Kea(a){return a+1+12}Kea.X=1;function Lea(a){return Ph(a)}Lea.X=1;function Mea(a){return mi(a)}Mea.X=1;function Nea(a){return a+93}Nea.X=1;function Oea(a,d){kn(a,d)}Oea.X=1;function Pea(a,d){$m(a,d)}Pea.X=1;function Qea(a){return Ki(a)}Qea.X=1;function Rea(a){return ki(a)}Rea.X=1;function Sea(a){return a+105}Sea.X=1;function Tea(a){return a+64}Tea.X=1;function Uea(a,d,e){return ln(a,d,e)}Uea.X=1;function ln(a,d,e){var f=b;b+=16;var g=f+4,h=f+8,i=f+12;N(f,d,a+1+12);qn(g,f,e);rn(i,g,a+64);qn(h,i,f);a=k[a+84]+J(e,h);b=f;return a}ln.X=1;function Vea(a){return an(a)}Vea.X=1;function Wea(a){return Ni(a)}Wea.X=1;function Xea(a,d,e){sn(a,d,e)}Xea.X=1;function sn(a,d,e){var f=b;b+=8;var g=f+4;tn(a,d);ig(g,d,a+85);qn(f,e,g);un(a,f);b=f}sn.X=1;function Yea(a,d,e){vn(a,d,e)}Yea.X=1;function vn(a,d,e){var f=b;b+=16;var g=f+4,h=f+8,i=f+12;wn(g,a+76,a+126);wn(i,a+80,a+130);qn(h,i,d);wn(f,g,h);c[e]=c[f];k[e]=k[f];c[e+1]=c[f+1];k[e+1]=k[f+1];c[e+2]=c[f+2];k[e+2]=k[f+2];c[e+3]=c[f+3];k[e+3]=k[f+3];b=f}vn.X=1;function Zea(a){return Sh(a)}Zea.X=1;function $ea(a){return Nh(a)}$ea.X=1;function afa(a,d){Oh(a,d)}afa.X=1;function bfa(a){return a+130}bfa.X=1;function cfa(a,d){tn(a,d)}cfa.X=1;function tn(a,d){var e=b;b+=4;ig(e,d,a+85);xn(a+101,e);b=e}tn.X=1;function dfa(a,d,e){yn(a,d,e)}dfa.X=1;function yn(a,d,e){var f=b;b+=8;var g=f+4;0!=k[a+84]&&(zn(a,d),0!=(a+134|0)&&(ig(g,d,a+85),qn(f,e,g),An(a,f)));b=f}yn.X=1;function efa(a,d){un(a,d)}efa.X=1;function un(a,d){var e=b;b+=4;ig(e,d,a+134);xn(a+105,e);b=e}un.X=1;function ffa(a){return Uh(a)}ffa.X=1;function gfa(a){return a+134}gfa.X=1;function hfa(a,d,e){Bn(a,d,e)}hfa.X=1;function ifa(a){return a+37}ifa.X=1;function jfa(a,d){Fi(a,d)}jfa.X=1;function kfa(a){return a+80}kfa.X=1;function lfa(a){return a+76}lfa.X=1;function Cn(a,d){return v[c[c[a]]](a,d)}Cn.X=1;function mfa(a){return ci(a)}mfa.X=1;function nfa(a){return ei(a)}nfa.X=1;function ofa(a,d){fi(a,d)}ofa.X=1;function pfa(a,d){Dn(a,d)}pfa.X=1;function Dn(a,d){var e=a+80;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}Dn.X=1;function qfa(a,d){En(a,d)}qfa.X=1;function rfa(a,d){Fn(a,d)}rfa.X=1;function sfa(a){return Mn(a)}sfa.X=1;function Mn(a){return 0!=(tfa(a)|0)}Mn.X=1;function ufa(a,d){hi(a,d)}ufa.X=1;function vfa(a,d){return Nn(a,d)}vfa.X=1;function Nn(a,d){var e=b;b+=4;rn(e,d,a+64);var f=J(d,e);b=e;return f}Nn.X=1;function wfa(a){return bn(a)}wfa.X=1;function xfa(a,d){On(a,d)}xfa.X=1;function Pn(a){var d=zi(608);Qn(d,a);return d}Pn.X=1;function Rn(a,d,e){var f=b;b+=7;var g=f+4,h=f+5,i=f+6,j=zi(608);k[g]=0;k[h]=0;k[i]=0;H(f,g,h,i);Sn(j,a,d,e,f);b=f;return j}Rn.X=1;function Tn(a,d,e,f){var g=zi(608);Sn(g,a,d,e,f);return g}Tn.X=1;function On(a,d){c[a+47]=d}On.X=1;function Un(a){return c[a+118]}Un.X=1;function Vn(a){return k[a+117]}Vn.X=1;function Wn(a){return c[a+47]}Wn.X=1;function Xn(a){return c[a+48]}Xn.X=1;function Yn(a){return c[a+150]}Yn.X=1;function Zn(a){return c[a+124]}Zn.X=1;function $n(a,d){c[a+150]=d}$n.X=1;function yfa(a,d){ao(a,d)}yfa.X=1;function zfa(a){return a+134}zfa.X=1;function Afa(a){return Pi(a)}Afa.X=1;function Bfa(a,d){Qi(a,d)}Bfa.X=1;function Cfa(a){return Ti(a)}Cfa.X=1;function Dfa(a,d){kn(a,d)}Dfa.X=1;function Efa(a){bo(a)}Efa.X=1;function bo(a){var d=b;b+=8;var e=d+4;0!=k[a+84]&&(wn(d,a+76,a+126),co(a,d),wn(e,a+80,a+130),Dn(a,e));b=d}bo.X=1;function Ffa(a,d){eo(a,d)}Ffa.X=1;function Gfa(a,d){qi(a,d)}Gfa.X=1;function Hfa(a){fo(a)}Hfa.X=1;function go(a,d,e){return v[c[c[a]+5]](a,d,e)}go.X=1;function Ifa(a,d,e,f){ho(a,d,e,f)}Ifa.X=1;function ho(a,d,e,f){var g=b;b+=13;var h=g+1,i=g+5,j=g+9;k[g]=f;0!=k[a+84]&&(Q(h,d,g),xn(a+126,h),Q(j,a+134,g),ig(i,e,j),xn(a+130,i));b=g}ho.X=1;function Jfa(a,d){Rh(a,d)}Jfa.X=1;function io(a){ui(a,0)}io.X=1;function jo(a,d){ui(a,d&1)}jo.X=1;function Kfa(a){return Un(a)}Kfa.X=1;function Lfa(a,d){Vh(a,d)}Lfa.X=1;function Mfa(a,d,e,f){ko(a,d,e,f)}Mfa.X=1;function ko(a,d,e,f){var g=b;b+=13;var h=g+1,i=g+5,j=g+9;k[g]=f;0!=k[a+84]&&(Q(h,d,g),xn(a+142,h),Q(j,a+134,g),ig(i,e,j),xn(a+146,i));b=g}ko.X=1;function Nfa(a,d){Th(a,d)}Nfa.X=1;function lo(a,d){var e=b;b+=4;0==c[mo]<<24>>24&&Hb(mo);no(e,a,d);c[oo]=c[e];k[oo]=k[e];c[oo+1]=c[e+1];k[oo+1]=k[e+1];c[oo+2]=c[e+2];k[oo+2]=k[e+2];c[oo+3]=c[e+3];k[oo+3]=k[e+3];b=e;return oo}lo.X=1;function no(a,d,e){var f=b;b+=4;qn(f,d+80,e);wn(a,d+76,f);b=f}no.X=1;function Ofa(a){return Wh(a)}Ofa.X=1;function Pfa(a){return a+85}Pfa.X=1;function Qfa(a){return a+41}Qfa.X=1;function Rfa(a){return Vn(a)}Rfa.X=1;function Sfa(a){return a+17}Sfa.X=1;function Tfa(a,d,e){po(a,d,e)}Tfa.X=1;function qo(a,d){v[c[c[a]+6]](a,d)}qo.X=1;function Ufa(a,d){ro(a,d)}Ufa.X=1;function ro(a,d){xn(a+1+12,d)}ro.X=1;function Vfa(a){return a+1}Vfa.X=1;function Wfa(a){return Wn(a)}Wfa.X=1;function Xfa(a){return Xn(a)}Xfa.X=1;function Yfa(a,d){Hi(a,d)}Yfa.X=1;function Zfa(a){return a+126}Zfa.X=1;function $fa(a){return li(a)}$fa.X=1;function aga(a){return so(a)}aga.X=1;function so(a){return 0!=(ji(a)&2|0)?a:0}so.X=1;function bga(a){return ii(a)}bga.X=1;function cga(a,d){to(a,d)}cga.X=1;function dga(a,d){Ji(a,d)}dga.X=1;function ega(a,d){Li(a,d)}ega.X=1;function fga(a){return a+130}fga.X=1;function gga(a){return pi(a)}gga.X=1;function hga(a,d){return uo(a,d)}hga.X=1;function uo(a,d){return c[vo(a+119,d)]}uo.X=1;function iga(a,d){Mi(a,d)}iga.X=1;function jga(a){return a+1}jga.X=1;function kga(a){return Ri(a)}kga.X=1;function lga(a,d){Si(a,d)}lga.X=1;function mga(a){return Zn(a)}mga.X=1;function nga(a,d){wo(a,d)}nga.X=1;function oga(a){return gi(a)}oga.X=1;function pga(a,d){xo(a,d)}pga.X=1;function xo(a,d){var e=a+134;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}xo.X=1;function qga(a){return a+142}qga.X=1;function rga(a){yo(a)}rga.X=1;function sga(a,d){ri(a,d)}sga.X=1;function tga(a,d){Qh(a,d)}tga.X=1;function uga(a,d,e){zo(a,d,e)}uga.X=1;function vga(a){return ji(a)}vga.X=1;function Ao(a){return v[c[c[a]+4]](a)}Ao.X=1;function wga(a,d){return Di(a,d)}wga.X=1;function xga(a){return a+97}xga.X=1;function yga(a,d){An(a,d)}yga.X=1;function An(a,d){var e=b;b+=8;var f=e+4;Bo(f,a+64,d);ig(e,f,a+134);xn(a+80,e);b=e}An.X=1;function zga(a){return a+142}zga.X=1;function Aga(a,d){Co(a,d)}Aga.X=1;function Co(a,d){var e=b;b+=4;var f=a+85;c[f]=c[d];k[f]=k[d];c[f+1]=c[d+1];k[f+1]=k[d+1];c[f+2]=c[d+2];k[f+2]=k[d+2];c[f+3]=c[d+3];k[f+3]=k[d+3];Q(e,a+85,a+84);f=a+138;c[f]=c[e];k[f]=k[e];c[f+1]=c[e+1];k[f+1]=k[e+1];c[f+2]=c[e+2];k[f+2]=k[e+2];c[f+3]=c[e+3];k[f+3]=k[e+3];b=e}Co.X=1;function Bga(a,d){co(a,d)}Bga.X=1;function co(a,d){var e=a+76;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}co.X=1;function Cga(a){return ai(a)}Cga.X=1;function Dga(a,d){zn(a,d)}Dga.X=1;function Ega(){return 0}Ega.X=1;function Do(a,d,e){k[a+116]=d;k[a+117]=e}Do.X=1;function Eo(a){return c[a+151]}Eo.X=1;function Fo(a){return k[a+109]}Fo.X=1;function Go(a){return c[a+15]&1}Go.X=1;function Ho(a){return c[a+8]}Ho.X=1;function Io(a){return c[a+7]}Io.X=1;function Jo(a,d){c[a+4]=d}Jo.X=1;function Ko(a,d){c[a+6]=d&1}Ko.X=1;function Lo(a){return c[a+3]}Lo.X=1;function zn(a,d){var e=b;b+=8;var f=e+4;ig(f,d,a+85);Q(e,f,a+84);xn(a+76,e);b=e}zn.X=1;function Fga(a,d){Oi(a,d)}Fga.X=1;function Gga(a){return a+126}Gga.X=1;function Hga(a,d){Mo(a,d)}Hga.X=1;function Mo(a,d){var e=a+97;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}Mo.X=1;function Iga(a,d,e){Do(a,d,e)}Iga.X=1;function No(a){if(0!=(a|0)){v[c[c[a]+2]](a)}}No.X=1;function Jga(a,d){Oo(a,d)}Jga.X=1;function Oo(a,d){var e=b;b+=4;wn(e,a+80,a+130);c[d]=c[e];k[d]=k[e];c[d+1]=c[e+1];k[d+1]=k[e+1];c[d+2]=c[e+2];k[d+2]=k[e+2];c[d+3]=c[e+3];k[d+3]=k[e+3];b=e}Oo.X=1;function Kga(a){return Po(a)}Kga.X=1;function Po(a){return Qo(a+119)}Po.X=1;function Lga(a){return di(a)}Lga.X=1;function Mga(a){return ni(a)}Mga.X=1;function Nga(a){return a+146}Nga.X=1;function Oga(a,d){wi(a,d)}Oga.X=1;function Pga(a,d){Zh(a,d)}Pga.X=1;function Qga(a,d){Ro(a,d)}Qga.X=1;function Rga(a){return Fo(a)}Rga.X=1;function Sga(a){So(a)}Sga.X=1;function To(a,d,e){return 0!=(v[c[c[a]+4]](a,d,e)|0)}To.X=1;function Uo(a,d,e,f){return v[c[c[a]+2]](a,d,e,f&1)}Uo.X=1;function Tga(a){return a+26}Tga.X=1;function Vo(a,d,e){Wo(a,d,e,1)}Vo.X=1;function Uga(a,d,e,f){Wo(a,d,e,f)}Uga.X=1;function Vga(a,d,e,f){Xo(a,d,e,f)}Vga.X=1;function Xo(a,d,e,f){var g=b;b+=8;var h=g+4;N(h,e,a+1);ig(g,h,a+9);a=k[g];0!=(f|0)?(c[d]=(Math.floor(a+1)&65535|1)&65535,c[d+1]=(Math.floor(k[g+1]+1)&65535|1)&65535,c[d+2]=(Math.floor(k[g+2]+1)&65535|1)&65535):(c[d]=Math.floor(a)&65534,c[d+1]=Math.floor(k[g+1])&65534,c[d+2]=Math.floor(k[g+2])&65534);b=g}Xo.X=1;function Wga(a){return Go(a)}Wga.X=1;function Xga(a,d,e,f,g){Yo(a,d,e,f,g)}Xga.X=1;function Yga(a){return Zo(a)}Yga.X=1;function Zga(a){return a+31}Zga.X=1;function $ga(a,d,e,f){$o(a,d,e,f)}$ga.X=1;function aha(a,d,e,f){ap(a,d,e,f)}aha.X=1;function bp(a,d,e,f,g){cp(a,d,e&1,f,g)}bp.X=1;function bha(a,d,e,f){dp(a,d,e,f)}bha.X=1;function ep(a,d,e){return cha(a,d,e&1)}ep.X=1;function dha(a,d,e,f){fp(a,d,e,f)}dha.X=1;function fp(a,d,e,f){var g=b;b+=4;c[g]=c[e];k[g]=k[e];c[g+1]=c[e+1];k[g+1]=k[e+1];c[g+2]=c[e+2];k[g+2]=k[e+2];c[g+3]=c[e+3];k[g+3]=k[e+3];gp(g,a+1);hp(g,a+5);Xo(a,d,g,f);b=g}fp.X=1;function eha(a,d,e,f){ip(a,d,e,f)}eha.X=1;function jp(a,d){v[c[c[a]+6]](a,d)}jp.X=1;function kp(a){return v[c[c[a]+3]](a)}kp.X=1;function lp(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}lp.X=1;function mp(a,d){v[c[c[a]+5]](a,d)}mp.X=1;function np(a,d,e,f){return v[c[c[a]+7]](a,d,e,f&1)}np.X=1;function fha(a){return a+37}fha.X=1;function op(a,d){var e=b;b+=4;0==c[pp]<<24>>24&&Hb(pp);qp(e,a,d);c[rp]=c[e];k[rp]=k[e];c[rp+1]=c[e+1];k[rp+1]=k[e+1];c[rp+2]=c[e+2];k[rp+2]=k[e+2];c[rp+3]=c[e+3];k[rp+3]=k[e+3];b=e;return rp}op.X=1;function qp(a,d,e){var f=b;b+=3;var g=f+1,h=f+2;k[f]=(c[e]&65535)/k[d+9];k[g]=(c[e+1]&65535)/k[d+9+1];k[h]=(c[e+2]&65535)/k[d+9+2];pe(a,f,g,h);xn(a,d+1);b=f}qp.X=1;function gha(a,d,e,f,g,h){sp(a,d,e,f,g,h)}gha.X=1;function hha(a){return Ue(a,16)}hha.X=1;function iha(a){return Ho(a)}iha.X=1;function tp(a){v[c[c[a]+2]](a)}tp.X=1;function jha(a){return Io(a)}jha.X=1;function up(a,d,e){return v[c[c[a]+10]](a,d,e)}up.X=1;function vp(a,d){Ko(a,d&1)}vp.X=1;function kha(a){return Lo(a)}kha.X=1;function wp(){var a=hha(172);xp(a);return a}wp.X=1;function yp(a){return c[a+4]}yp.X=1;function zp(a,d){k[a+4]=d}zp.X=1;function Ap(a){return c[a+5]&1}Ap.X=1;function Bp(a,d){c[a+3]=d}Bp.X=1;function Cp(a){return c[a+4]}Cp.X=1;function Dp(a){return k[a+10]}Dp.X=1;function Ep(a,d){k[a+9]=d}Ep.X=1;function Fp(a){return c[a+6]&1}Fp.X=1;function Gp(a){return c[a+3]}Gp.X=1;function Hp(a,d){c[a+5]=d&1}Hp.X=1;function Ip(a){return c[a+3]}Ip.X=1;function Jp(a,d){k[a+10]=d}Jp.X=1;function Kp(a,d){c[a+2]=d}Kp.X=1;function Lp(a){return k[a+9]}Lp.X=1;function Mp(a){return k[a+4]}Mp.X=1;function Np(a){return c[a+2]}Np.X=1;function Op(a){return k[a+9]}Op.X=1;function Pp(a,d){c[a+3]=d}Pp.X=1;function Qp(a,d,e){v[c[c[a]+7]](a,d,e,-1)}Qp.X=1;function Rp(a,d,e,f){v[c[c[a]+7]](a,d,e,f)}Rp.X=1;function Sp(a,d){return v[c[c[a]+8]](a,d,-1)}Sp.X=1;function Tp(a,d,e){return v[c[c[a]+8]](a,d,e)}Tp.X=1;function Up(a,d){v[c[c[a]+4]](a,d)}Up.X=1;function Vp(a,d){v[c[c[a]+5]](a,d)}Vp.X=1;function lha(a,d){zp(a,d)}lha.X=1;function Wp(a){return v[c[c[a]+9]](a)}Wp.X=1;function mha(a){return Ap(a)}mha.X=1;function nha(a,d){Bp(a,d)}nha.X=1;function oha(a){return Cp(a)}oha.X=1;function pha(a){return Dp(a)}pha.X=1;function qha(a,d){Ep(a,d)}qha.X=1;function rha(a){return Fp(a)}rha.X=1;function Xp(a){return c[a+4]}Xp.X=1;function sha(a){return Gp(a)}sha.X=1;function Yp(a,d){Hp(a,d&1)}Yp.X=1;function tha(a){return Ip(a)}tha.X=1;function uha(a,d){Jp(a,d)}uha.X=1;function vha(a,d){Kp(a,d)}vha.X=1;function wha(a){return Lp(a)}wha.X=1;function Zp(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}Zp.X=1;function $p(a,d,e,f,g){v[c[c[a]+3]](a,d,e,f,g)}$p.X=1;function xha(a){return Mp(a)}xha.X=1;function yha(a){return Np(a)}yha.X=1;function aq(a,d,e,f){v[c[c[a]+6]](a,d,e,f)}aq.X=1;function zha(a){return Op(a)}zha.X=1;function Aha(a,d){Pp(a,d)}Aha.X=1;function bq(a,d,e){v[c[c[a]+8]](a,d,e)}bq.X=1;function cq(a){return v[c[c[a]+26]](a)}cq.X=1;function dq(a,d){var e=b;b+=4;0==c[eq]<<24>>24&&Hb(eq);v[c[c[a]+15]](e,a,d);c[fq]=c[e];k[fq]=k[e];c[fq+1]=c[e+1];k[fq+1]=k[e+1];c[fq+2]=c[e+2];k[fq+2]=k[e+2];c[fq+3]=c[e+3];k[fq+3]=k[e+3];b=e;return fq}dq.X=1;function Bha(a,d){Je(a,d)}Bha.X=1;function gq(a,d,e){return v[c[c[a]+28]](a,d,e)}gq.X=1;function hq(a){return v[c[c[a]+22]](a)}hq.X=1;function iq(a){return v[c[c[a]+7]](a)}iq.X=1;function jq(a){return v[c[c[a]+19]](a)}jq.X=1;function Cha(a){return Ye(a)}Cha.X=1;function kq(a,d,e){v[c[c[a]+25]](a,d,e)}kq.X=1;function lq(a,d){var e=b;b+=4;0==c[mq]<<24>>24&&Hb(mq);tf(e,a,d);c[nq]=c[e];k[nq]=k[e];c[nq+1]=c[e+1];k[nq+1]=k[e+1];c[nq+2]=c[e+2];k[nq+2]=k[e+2];c[nq+3]=c[e+3];k[nq+3]=k[e+3];b=e;return nq}lq.X=1;function Dha(a,d,e,f){df(a,d,e,f)}Dha.X=1;function oq(a){return v[c[c[a]+12]](a)}oq.X=1;function pq(a){return v[c[c[a]+23]](a)}pq.X=1;function qq(a){return v[c[c[a]+9]](a)}qq.X=1;function rq(a,d,e,f){v[c[c[a]+24]](a,d,e,f)}rq.X=1;function Eha(a){return a+3}Eha.X=1;function sq(a,d){var e=b;b+=4;0==c[tq]<<24>>24&&Hb(tq);kf(e,a,d);c[uq]=c[e];k[uq]=k[e];c[uq+1]=c[e+1];k[uq+1]=k[e+1];c[uq+2]=c[e+2];k[uq+2]=k[e+2];c[uq+3]=c[e+3];k[uq+3]=k[e+3];b=e;return uq}sq.X=1;function vq(a,d){var e=b;b+=4;0==c[wq]<<24>>24&&Hb(wq);v[c[c[a]+16]](e,a,d);c[xq]=c[e];k[xq]=k[e];c[xq+1]=c[e+1];k[xq+1]=k[e+1];c[xq+2]=c[e+2];k[xq+2]=k[e+2];c[xq+3]=c[e+3];k[xq+3]=k[e+3];b=e;return xq}vq.X=1;function yq(a,d){v[c[c[a]+6]](a,d)}yq.X=1;function zq(a,d,e,f){v[c[c[a]+2]](a,d,e,f)}zq.X=1;function Fha(a){return Le(a)}Fha.X=1;function Gha(a){return Gf(a)}Gha.X=1;function Aq(a,d){return v[c[c[a]+5]](a,d)}Aq.X=1;function Hha(a){return xf(a)}Hha.X=1;function Iha(a){return zf(a)}Iha.X=1;function Bq(a,d,e){return v[c[c[a]+13]](a,d,e)}Bq.X=1;function Jha(a){return Me(a)}Jha.X=1;function Kha(a){return Bf(a)}Kha.X=1;function Cq(a){return v[c[c[a]+11]](a)}Cq.X=1;function Dq(a,d,e){v[c[c[a]+20]](a,d,e)}Dq.X=1;function Eq(a,d){v[c[c[a]+10]](a,d)}Eq.X=1;function Fq(a){return v[c[c[a]+21]](a)}Fq.X=1;function Gq(a,d){c[a+35]=d}Gq.X=1;function Hq(a){return c[a+39]&1}Hq.X=1;function Iq(a,d){c[a+38]=d&1}Iq.X=1;function Jq(a){return c[a+28]}Jq.X=1;function Kq(a,d){c[a+24]=d}Kq.X=1;function Lq(a){return c[a+38]&1}Lq.X=1;function Mq(a,d){c[a+27]=d}Mq.X=1;function Nq(a,d){c[a+39]=d&1}Nq.X=1;function Oq(a,d){c[a+36]=d}Oq.X=1;function Pq(a,d){c[a+30]=d}Pq.X=1;function Qq(a){return c[a+31]}Qq.X=1;function Rq(a,d){c[a+37]=d}Rq.X=1;function Sq(a){return c[a+26]}Sq.X=1;function Tq(a,d){c[a+32]=d}Tq.X=1;function Uq(a,d){c[a+40]=d&1}Uq.X=1;function Vq(a,d){c[a+33]=d}Vq.X=1;function Wq(a){return c[a+27]}Wq.X=1;function Xq(a){return c[a+35]}Xq.X=1;function Yq(a,d){c[a+28]=d}Yq.X=1;function Zq(a){return c[a+36]}Zq.X=1;function $q(a,d){k[a+34]=d}$q.X=1;function ar(a,d){k[a+25]=d}ar.X=1;function br(a){return c[a+32]}br.X=1;function cr(a){return c[a+29]}cr.X=1;function dr(a,d){c[a+29]=d}dr.X=1;function er(a){return k[a+25]}er.X=1;function fr(a){return c[a+37]}fr.X=1;function gr(a){return c[a+40]&1}gr.X=1;function hr(a){return c[a+30]}hr.X=1;function ir(a){return k[a+34]}ir.X=1;function jr(a,d){k[a+25]=d}jr.X=1;function kr(a){return k[a+25]}kr.X=1;function lr(a){return c[a+24]}lr.X=1;function mr(a){return c[a+33]}mr.X=1;function or(a,d){c[a+31]=d}or.X=1;function pr(a,d){c[a+26]=d}pr.X=1;function Lha(a,d){Jf(a,d)}Lha.X=1;function Mha(a){return Kf(a)}Mha.X=1;function Nha(a){return Mf(a)}Nha.X=1;function qr(a,d,e,f){v[c[c[a]+17]](a,d,e,f)}qr.X=1;function Oha(a){return a+7}Oha.X=1;function rr(a,d,e){var f=b;b+=1;k[f]=e;v[c[c[a]+3]](a,d,f);b=f}rr.X=1;function sr(a){return v[c[c[a]+4]](a)}sr.X=1;function tr(a,d){v[c[c[a]+14]](a,d)}tr.X=1;function ur(a,d,e,f){v[c[c[a]+18]](a,d,e,f)}ur.X=1;function vr(a,d,e,f){v[c[c[a]+27]](a,d,e,f)}vr.X=1;function Pha(a){return Ge(a)}Pha.X=1;function Qha(a){return yg(a)}Qha.X=1;function Rha(a,d,e,f,g,h,i){Tf(a,d,e,f,g,h,i)}Rha.X=1;function Sha(a){return Ie(a)}Sha.X=1;function Tha(a){return Uf(a)}Tha.X=1;function wr(){var a=xb(156);xr(a,0);return a}wr.X=1;function yr(a){var d=xb(156);xr(d,a);return d}yr.X=1;function Uha(a,d){zr(a,d)}Uha.X=1;function Ar(a,d){v[c[c[a]+8]](a,d)}Ar.X=1;function Br(a,d,e,f){var g=b;b+=14;var h=g+4,i=g+5,j=g+6,l=g+7,m=g+11,n=g+12,p=g+13,r=c[c[a]+6];k[h]=0;k[i]=0;k[j]=0;H(g,h,i,j);k[m]=0;k[n]=0;k[p]=0;H(l,m,n,p);v[r](a,d,e,f,g,l);b=g}Br.X=1;function Cr(a,d,e,f,g){var h=b;b+=7;var i=h+4,j=h+5,l=h+6,m=c[c[a]+6];k[i]=0;k[j]=0;k[l]=0;H(h,i,j,l);v[m](a,d,e,f,g,h);b=h}Cr.X=1;function Dr(a,d,e,f,g,h){v[c[c[a]+6]](a,d,e,f,g,h)}Dr.X=1;function Er(a,d,e,f,g){v[c[c[a]+4]](a,d,e,f,g)}Er.X=1;function Fr(a,d){v[c[c[a]+12]](a,d)}Fr.X=1;function Gr(a,d,e,f){v[c[c[a]+5]](a,d,e,f)}Gr.X=1;function Vha(a,d){ar(a,d)}Vha.X=1;function Wha(){}Wha.X=1;function Xha(a,d){Hr(a,d)}Xha.X=1;function Ir(a){v[c[c[a]+13]](a)}Ir.X=1;function Jr(a,d,e,f,g,h,i,j,l){return v[c[c[a]+2]](a,d,e,f,g,h,i,j,l)}Jr.X=1;function Yha(a){Kr(a)}Yha.X=1;function Lr(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}Lr.X=1;function Mr(a){return v[c[c[a]+9]](a)}Mr.X=1;function Zha(a,d,e,f,g){Nr(a,d,e,f,g)}Zha.X=1;function Or(a,d,e,f){v[c[c[a]+7]](a,d,e,f)}Or.X=1;function $ha(a){return kr(a)}$ha.X=1;function Pr(a,d,e){v[c[c[a]+11]](a,d,e)}Pr.X=1;function Qr(a,d,e){v[c[c[a]+3]](a,d,e)}Qr.X=1;function Rr(a){var d=xb(5388);Sr(d,a);return d}Rr.X=1;function Tr(a,d){c[a+47]=d}Tr.X=1;function Ur(a){return c[a+47]}Ur.X=1;function Vr(a){return c[a+1]}Vr.X=1;function Wr(a,d){c[a+1]=d}Wr.X=1;function Xr(a,d){c[a+1346]=d}Xr.X=1;function Yr(a){return c[a+1346]}Yr.X=1;function Zr(a){return c[a+15]}Zr.X=1;function $r(a,d){v[c[c[a]+15]](a,d)}$r.X=1;function aia(a,d){Tr(a,d)}aia.X=1;function bia(a){return Ur(a)}bia.X=1;function as(a,d,e){return v[c[c[a]+2]](a,d,e,0)}as.X=1;function bs(a,d,e,f){return v[c[c[a]+2]](a,d,e,f)}bs.X=1;function cs(a,d,e){return v[c[c[a]+7]](a,d,e)}cs.X=1;function ds(a,d){v[c[c[a]+4]](a,d)}ds.X=1;function cia(a){return Vr(a)}cia.X=1;function dia(a,d){Wr(a,d)}dia.X=1;function es(a,d){return v[c[c[a]+10]](a,d)}es.X=1;function eia(a,d,e,f){fs(a,d,e,f)}eia.X=1;function gs(a,d,e){return v[c[c[a]+6]](a,d,e)}gs.X=1;function hs(a){return v[c[c[a]+9]](a)}hs.X=1;function fia(a,d){Xr(a,d)}fia.X=1;function is(a,d){v[c[c[a]+5]](a,d)}is.X=1;function js(a,d,e){return v[c[c[a]+3]](a,d,e)}js.X=1;function ks(a,d,e,f){v[c[c[a]+8]](a,d,e,f)}ks.X=1;function ls(a,d){return v[c[c[a]+14]](a,d)}ls.X=1;function ms(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}ms.X=1;function gia(a){return Yr(a)}gia.X=1;function ns(a){return v[c[c[a]+11]](a)}ns.X=1;function hia(a,d,e){os(a,d,e)}hia.X=1;function ps(a){return v[c[c[a]+12]](a)}ps.X=1;function qs(a){return Ue(a,16)}qs.X=1;function iia(a){return Zr(a)}iia.X=1;function jia(a,d,e,f,g,h,i,j){return rs(a,d,e,f,g,h,i,j)}jia.X=1;function rs(a,d,e,f,g,h,i,j){var l=b;b+=6;var m=l+3;ss(a,l,d,0);ss(a,m,e,1);d=kia(a);e=ts(a,d);c[e+4]=d&65535;c[e]=f;c[e+1]=g;c[e+2]=h;c[e+3]=j;f=(c[a+15]&65535)<<1&65535;g=0;h=3>(g&65535|0);a:do{if(h){for(var j=a+17,n=a+19,p=a+19,r=a+19,s=a+19,t=a+19,w=a+19;;){var x=c[j]+(g&65535)+16;c[x]=(c[x]&65535)+2&65535;var x=((f&65535)+1<<1)+c[n+(g&65535)],y=((f&65535)-1<<1)+c[p+(g&65535)];c[x]=c[y];k[x]=k[y];c[x+1]=c[y+1];k[x+1]=k[y+1];c[((f&65535)-1<<1)+c[r+(g&65535)]]=c[l+(g&65535)];c[((f&65535)-1<<1)+c[s+(g&65535)]+1]=d;c[((f&65535)<<1)+c[t+(g&65535)]]=c[m+(g&65535)];c[((f&65535)<<1)+c[w+(g&65535)]+1]=d;c[e+(g&65535)+13]=(f&65535)-1&65535;c[e+(g&65535)+16]=f;g+=1;if(3<=(g&65535|0)){break a}}}}while(0);us(a,0,c[e+13],i,0);vs(a,0,c[e+16],i,0);us(a,1,c[e+14],i,0);vs(a,1,c[e+17],i,0);us(a,2,c[e+15],i,1);vs(a,2,c[e+18],i,1);b=l;return d}rs.X=1;function lia(a,d,e,f){ss(a,d,e,f)}lia.X=1;function ws(a,d){var e=qs(116);xs(e,a,d,16384,0,0);return e}ws.X=1;function ys(a,d,e){var f=qs(116);xs(f,a,d,e,0,0);return f}ys.X=1;function zs(a,d,e,f){var g=qs(116);xs(g,a,d,e,f,0);return g}zs.X=1;function As(a,d,e,f,g){var g=g&1,h=qs(116);xs(h,a,d,e,f,g&1);return h}As.X=1;function Bs(a){return c[a+26]}Bs.X=1;function Cs(a,d,e){var f;$2=a;var g=a=0;a:for(;;){if(3>(g|0)){g=(c[d+(a+16)]&65535|0)<(c[e+(a+13)]&65535|0);do{if(!g&&(c[e+(a+16)]&65535|0)>=(c[d+(a+13)]&65535|0)){a=g=a+1;continue a}}while(0);f=0;break}f=1;break}return f}Cs.X=1;function Ds(a,d){c[a+26]=d}Ds.X=1;function ss(a,d,e,f){var g=b;b+=8;var h=g+4;N(h,e,a+3);ig(g,h,a+11);c[d]=0>=k[g]?f&65535:k[g]>=(c[a+2]&65535|0)?(c[a+1]&65535&c[a+2]&65535|f)&65535:(Math.floor(k[g])&65535&c[a+1]&65535|f)&65535;c[d+1]=0>=k[g+1]?f&65535:k[g+1]>=(c[a+2]&65535|0)?(c[a+1]&65535&c[a+2]&65535|f)&65535:(Math.floor(k[g+1])&65535&c[a+1]&65535|f)&65535;c[d+2]=0>=k[g+2]?f&65535:k[g+2]>=(c[a+2]&65535|0)?(c[a+1]&65535&c[a+2]&65535|f)&65535:(Math.floor(k[g+2])&65535&c[a+1]&65535|f)&65535;b=g}ss.X=1;function mia(a,d,e){Es(a,d,e)}mia.X=1;function Es(a,d,e){var f,g,h,i,j;f=ts(a,d);g=c[a+25];v[c[c[g]+14]](g)||(g=c[a+25],v[c[c[g]+4]](g,f,e));g=(c[a+15]&65535)<<1;h=0;for(var l=a+17;;){var m=c[l]+h+16;c[m]=(c[m]&65535)-2&65535;h=m=h+1;if(3<=(m|0)){break}}h=0;for(var l=a+19,m=a+2,n=a+2,p=a+2;!(i=c[l+h],j=c[f+(h+16)],c[((j&65535)<<1)+i]=c[m],Fs(a,h,j,e,0),j=c[f+(h+13)],c[((j&65535)<<1)+i]=c[n],Gs(a,h,j,e,0),c[(g-1<<1)+i+1]=0,c[(g-1<<1)+i]=c[p],h=i=h+1,3<=(i|0));){}nia(a,d)}Es.X=1;function oia(a){return Bs(a)}oia.X=1;function pia(a,d){qia(a,d)}pia.X=1;function Hs(a,d,e,f){var g=b;b+=14;var h=g+4,i=g+5,j=g+6,l=g+7,m=g+11,n=g+12,p=g+13,r=c[c[a]+6];k[h]=0;k[i]=0;k[j]=0;H(g,h,i,j);k[m]=0;k[n]=0;k[p]=0;H(l,m,n,p);v[r](a,d,e,f,g,l);b=g}Hs.X=1;function Is(a,d,e,f,g){var h=b;b+=7;var i=h+4,j=h+5,l=h+6,m=c[c[a]+6];k[i]=0;k[j]=0;k[l]=0;H(h,i,j,l);v[m](a,d,e,f,g,h);b=h}Is.X=1;function Js(a,d,e,f,g,h){v[c[c[a]+6]](a,d,e,f,g,h)}Js.X=1;function Ks(a,d,e,f,g){v[c[c[a]+4]](a,d,e,f,g)}Ks.X=1;function Ls(a,d){v[c[c[a]+12]](a,d)}Ls.X=1;function ria(a,d,e){return Cs(a,d,e)}ria.X=1;function Ms(a,d,e,f){v[c[c[a]+5]](a,d,e,f)}Ms.X=1;function sia(a,d,e,f,g){Ns(a,d,e,f,g)}sia.X=1;function Ns(a,d,e,f,g){var h=b;b+=6;var i=h+3,j,l,m,n,d=ts(a,d);ss(a,h,e,0);ss(a,i,f,1);for(var e=0,f=a+19,p=a+19,r=a+19,s=a+19;!(j=c[d+(e+13)],l=c[d+(e+16)],m=(c[h+e]&65535)-(c[((j&65535)<<1)+c[f+e]]&65535),n=(c[i+e]&65535)-(c[((l&65535)<<1)+c[p+e]]&65535),c[((j&65535)<<1)+c[r+e]]=c[h+e],c[((l&65535)<<1)+c[s+e]]=c[i+e],0>(m|0)&&us(a,e,j,g,1),0<(n|0)&&Fs(a,e,l,g,1),0<(m|0)&&Gs(a,e,j,g,1),0>(n|0)&&vs(a,e,l,g,1),e=j=e+1,3<=(j|0));){}b=h}Ns.X=1;function Os(a){v[c[c[a]+13]](a)}Os.X=1;function Ps(a,d,e,f,g,h,i,j,l){return v[c[c[a]+2]](a,d,e,f,g,h,i,j,l)}Ps.X=1;function Qs(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}Qs.X=1;function tia(a,d){Ds(a,d)}tia.X=1;function Rs(a,d){v[c[c[a]+8]](a,d)}Rs.X=1;function Ss(a){return v[c[c[a]+9]](a)}Ss.X=1;function uia(a,d,e,f){Ts(a,d,e,f)}uia.X=1;function ts(a,d){return c[a+17]+20*(d&65535)}ts.X=1;function via(a,d){c[a]=d}via.X=1;function wia(a){return c[a]}wia.X=1;function Us(a,d){c[a+1]=d}Us.X=1;function Vs(a){return c[a+1]}Vs.X=1;function Ws(a){return c[a+64]&1}Ws.X=1;function xia(a,d){c[a+64]=d&1}xia.X=1;function Ts(a,d,e,f){var g=b;b+=12;var h=g+3,i=g+6,j=g+7,l=g+8,m=g+9,n=g+10,p=g+11;c[g]=c[((c[d+13]&65535)<<1)+c[a+19]];c[h]=(c[((c[d+16]&65535)<<1)+c[a+19]]&65535)+1&65535;c[g+1]=c[((c[d+14]&65535)<<1)+c[a+20]];c[h+1]=(c[((c[d+17]&65535)<<1)+c[a+20]]&65535)+1&65535;c[g+2]=c[((c[d+15]&65535)<<1)+c[a+21]];c[h+2]=(c[((c[d+18]&65535)<<1)+c[a+21]]&65535)+1&65535;k[i]=(c[g]&65535)/k[a+11];k[j]=(c[g+1]&65535)/k[a+11+1];k[l]=(c[g+2]&65535)/k[a+11+2];pe(e,i,j,l);xn(e,a+3);k[m]=(c[h]&65535)/k[a+11];k[n]=(c[h+1]&65535)/k[a+11+1];k[p]=(c[h+2]&65535)/k[a+11+2];pe(f,m,n,p);xn(f,a+3);b=g}Ts.X=1;function Xs(a,d,e,f){v[c[c[a]+7]](a,d,e,f)}Xs.X=1;function Ys(a,d,e){v[c[c[a]+11]](a,d,e)}Ys.X=1;function Zs(a,d,e){v[c[c[a]+3]](a,d,e)}Zs.X=1;function yia(a,d){return ts(a,d)}yia.X=1;function at(a){0!=(a|0)&&xe(a)}at.X=1;function bt(){var a=xb(8);ct(a);return a}bt.X=1;function dt(a){var d=xb(8);c[d]=a;return d}dt.X=1;function et(a,d){v[c[c[a]+17]](a,d)}et.X=1;function ft(a,d){v[c[c[a]+15]](a,d)}ft.X=1;function zia(a){return a+27}zia.X=1;function gt(a){return v[c[c[a]+4]](a)}gt.X=1;function ht(a){v[c[c[a]+41]](a)}ht.X=1;function it(a,d){v[c[c[a]+11]](a,d)}it.X=1;function Aia(a){return Sk(a)}Aia.X=1;function Bia(a){return a}Bia.X=1;function jt(a,d){v[c[c[a]+20]](a,d)}jt.X=1;function kt(a,d,e,f){v[c[c[a]+21]](a,d,e,f)}kt.X=1;function lt(a){v[c[c[a]+29]](a)}lt.X=1;function mt(a,d){v[c[c[a]+31]](a,d)}mt.X=1;function nt(a,d,e,f){var g=xb(268);ot(g,a,d,e,f);return g}nt.X=1;function Cia(a,d){Tk(a,d)}Cia.X=1;function Dia(a){return Ws(a)}Dia.X=1;function pt(a,d){v[c[c[a]+42]](a,d)}pt.X=1;function qt(a,d){xia(a,d&1)}qt.X=1;function Eia(a){return a+1}Eia.X=1;function rt(a,d,e,f){v[c[c[a]+6]](a,d,e,f)}rt.X=1;function st(a,d){v[c[c[a]+14]](a,d)}st.X=1;function tt(a,d,e,f){v[c[c[a]+7]](a,d,e,f)}tt.X=1;function ut(a){return v[c[c[a]+25]](a)}ut.X=1;function vt(a,d){v[c[c[a]+8]](a,d,2,-3)}vt.X=1;function wt(a,d,e){v[c[c[a]+8]](a,d,e,-3)}wt.X=1;function xt(a,d,e,f){v[c[c[a]+8]](a,d,e,f)}xt.X=1;function yt(a,d){v[c[c[a]+22]](a,d)}yt.X=1;function Fia(a,d,e){Jl(a,d,e)}Fia.X=1;function zt(a){v[c[c[a]+10]](a)}zt.X=1;function At(a,d){Uk(a,d,0,0)}At.X=1;function Bt(a,d,e){Uk(a,d,e,0)}Bt.X=1;function Ct(a,d,e,f){Uk(a,d,e,f&1)}Ct.X=1;function Gia(a){return Vk(a)}Gia.X=1;function Dt(a){v[c[c[a]+2]](a)}Dt.X=1;function Et(a,d){v[c[c[a]+3]](a,d)}Et.X=1;function Hia(a,d){Ft(a,d)}Hia.X=1;function Gt(a){v[c[c[a]+5]](a)}Gt.X=1;function Ht(a,d,e,f,g){Rl(a,d,e,f,g,0)}Ht.X=1;function Iia(a,d,e,f,g,h){Rl(a,d,e,f,g,h)}Iia.X=1;function Jia(a){return Sl(a)}Jia.X=1;function Kia(a,d){cm(a,d)}Kia.X=1;function It(a,d){v[c[c[a]+13]](a,d,0)}It.X=1;function Jt(a,d,e){v[c[c[a]+13]](a,d,e&1)}Jt.X=1;function Lia(a){return dm(a)}Lia.X=1;function Mia(a,d,e,f){Xl(a,d,e,f)}Mia.X=1;function Kt(a){return c[a+46]}Kt.X=1;function Lt(a){return c[a+8]}Lt.X=1;function Mt(a){return c[a+7]}Mt.X=1;function Nt(a){return c[a+132]&1}Nt.X=1;function Ot(a,d){c[a+4]=d}Ot.X=1;function Pt(a){return k[a+111]}Pt.X=1;function Qt(a){return k[a+110]}Qt.X=1;function Rt(a){return c[a+4]}Rt.X=1;function St(a,d){k[a+109]=d}St.X=1;function Tt(a){return k[a+127]}Tt.X=1;function Ut(a,d){k[a+146]=d;c[a+141]=1}Ut.X=1;function Vt(a){return c[a+131]&1}Vt.X=1;function Nia(a,d){c[a+140]=d&1}Nia.X=1;function Wt(a){var d=b;b+=4;0==c[Xt]<<24>>24&&Hb(Xt);v[c[c[a]+18]](d,a);c[Yt]=c[d];k[Yt]=k[d];c[Yt+1]=c[d+1];k[Yt+1]=k[d+1];c[Yt+2]=c[d+2];k[Yt+2]=k[d+2];c[Yt+3]=c[d+3];k[Yt+3]=k[d+3];b=d;return Yt}Wt.X=1;function Oia(a){return am(a)}Oia.X=1;function Pia(a,d,e,f,g,h){mm(a,d,e,f,g,h)}Pia.X=1;function Zt(a,d){v[c[c[a]+16]](a,d)}Zt.X=1;function $t(a,d){bm(a,d&1)}$t.X=1;function au(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}au.X=1;function bu(a,d){v[c[c[a]+33]](a,d)}bu.X=1;function cu(a,d){return v[c[c[a]+26]](a,d)}cu.X=1;function du(a){return v[c[c[a]+24]](a)}du.X=1;function eu(a,d){return v[c[c[a]+12]](a,d,1,.01666666753590107)}eu.X=1;function fu(a,d,e){return v[c[c[a]+12]](a,d,e,.01666666753590107)}fu.X=1;function gu(a,d,e,f){return v[c[c[a]+12]](a,d,e,f)}gu.X=1;function hu(a,d){v[c[c[a]+32]](a,d)}hu.X=1;function iu(a){return v[c[c[a]+28]](a)}iu.X=1;function Qia(a,d){ym(a,d)}Qia.X=1;function ju(a,d){v[c[c[a]+43]](a,d)}ju.X=1;function Ria(a,d){ku(a,d)}Ria.X=1;function lu(a,d){v[c[c[a]+30]](a,d)}lu.X=1;function Sia(a){return Am(a)}Sia.X=1;function mu(a){v[c[c[a]+19]](a)}mu.X=1;function Tia(a){return Kt(a)}Tia.X=1;function nu(a,d){v[c[c[a]+9]](a,d)}nu.X=1;function ou(a,d){v[c[c[a]+23]](a,d)}ou.X=1;function Uia(a,d,e,f,g,h,i,j){Dm(a,d,e,f,g,h,i,j)}Uia.X=1;function Via(a){return a+7}Via.X=1;function pu(a,d,e,f){v[c[c[a]+2]](a,d,e,f)}pu.X=1;function Wia(a){return Lt(a)}Wia.X=1;function qu(a){v[c[c[a]+2]](a)}qu.X=1;function Xia(a){return Mt(a)}Xia.X=1;function Yia(a){return Nt(a)}Yia.X=1;function ru(a,d){Hp(a,d&1)}ru.X=1;function Zia(a){return a+74}Zia.X=1;function $ia(a){return a+90}$ia.X=1;function aja(a){return Pt(a)}aja.X=1;function bja(a){return Qt(a)}bja.X=1;function cja(a,d,e,f,g){su(a,d,e,f,g)}cja.X=1;function tu(a,d,e){v[c[c[a]+7]](a,d,e,-1)}tu.X=1;function uu(a,d,e,f){v[c[c[a]+7]](a,d,e,f)}uu.X=1;function vu(a,d){return v[c[c[a]+8]](a,d,-1)}vu.X=1;function wu(a,d,e){return v[c[c[a]+8]](a,d,e)}wu.X=1;function dja(a,d){St(a,d)}dja.X=1;function xu(a,d){v[c[c[a]+4]](a,d)}xu.X=1;function yu(a,d){v[c[c[a]+5]](a,d)}yu.X=1;function eja(a,d){zp(a,d)}eja.X=1;function zu(a,d){var e=xb(600);Au(e,a,d);return e}zu.X=1;function Bu(a,d,e,f){var g=xb(600);Cu(g,a,d,e,f);return g}Bu.X=1;function fja(a,d){Du(a,d)}fja.X=1;function Eu(a){return v[c[c[a]+9]](a)}Eu.X=1;function gja(a,d){Pp(a,d)}gja.X=1;function hja(a){return Ap(a)}hja.X=1;function ija(a,d){Bp(a,d)}ija.X=1;function jja(a){return Cp(a)}jja.X=1;function kja(a){return Tt(a)}kja.X=1;function lja(a,d){Ut(a,d)}lja.X=1;function Fu(a,d){Ko(a,d&1)}Fu.X=1;function mja(a,d){Ep(a,d)}mja.X=1;function nja(a){return Fp(a)}nja.X=1;function Gu(a){return c[a+4]}Gu.X=1;function oja(a){return Vt(a)}oja.X=1;function pja(a){return Gp(a)}pja.X=1;function Hu(a,d){Nia(a,d&1)}Hu.X=1;function sja(a){return a+90}sja.X=1;function tja(a,d){Iu(0,d)}tja.X=1;function Ju(a,d,e){return v[c[c[a]+10]](a,d,e)}Ju.X=1;function uja(a){return Ip(a)}uja.X=1;function vja(a){return Dp(a)}vja.X=1;function Ku(a){return k[a+113]}Ku.X=1;function Lu(a){return c[a+131]&1}Lu.X=1;function wja(a,d){c[a+130]=d&1}wja.X=1;function Mu(a,d,e){3==(d|0)?k[a+112]=e:4==(d|0)?k[a+111]=e:5==(d|0)&&(k[a+110]=e)}Mu.X=1;function Nu(a,d,e,f,g,h,i){k[a+110]=d;k[a+111]=e;k[a+112]=f;k[a+106]=g;k[a+107]=h;k[a+108]=i}Nu.X=1;function Ou(a){return k[a+124]}Ou.X=1;function Pu(a,d){k[a+146]=d;c[a+141]=0}Pu.X=1;function Qu(a,d){k[a+113]=d}Qu.X=1;function Ru(a){return k[a+112]}Ru.X=1;function Su(a){return c[a+8]}Su.X=1;function Tu(a){return c[a+7]}Tu.X=1;function Uu(a,d){c[a+4]=d}Uu.X=1;function Vu(a){return k[a+169]}Vu.X=1;function Wu(a,d){k[a+170]=d}Wu.X=1;function Xu(a){return c[a+4]}Xu.X=1;function xja(a,d,e,f){c[a+184]=d&1;k[a+169]=e;k[a+170]=f}xja.X=1;function Yu(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}Yu.X=1;function yja(a,d){Jp(a,d)}yja.X=1;function zja(a){return Ku(a)}zja.X=1;function Aja(a){return Lu(a)}Aja.X=1;function Bja(a,d){Kp(a,d)}Bja.X=1;function Cja(a){return Lp(a)}Cja.X=1;function Zu(a,d){wja(a,d&1)}Zu.X=1;function dv(a,d,e){v[c[c[a]+11]](a,d,e)}dv.X=1;function Dja(a,d,e){Mu(a,d,e)}Dja.X=1;function ev(a,d,e,f){Nu(a,d,e,f,1,.30000001192092896,1)}ev.X=1;function fv(a,d,e,f,g){Nu(a,d,e,f,g,.30000001192092896,1)}fv.X=1;function gv(a,d,e,f,g,h){Nu(a,d,e,f,g,h,1)}gv.X=1;function Eja(a,d,e,f,g,h,i){Nu(a,d,e,f,g,h,i)}Eja.X=1;function Fja(a){return Op(a)}Fja.X=1;function Gja(a){return Ou(a)}Gja.X=1;function Hja(a,d){Pu(a,d)}Hja.X=1;function hv(a,d,e,f,g){v[c[c[a]+3]](a,d,e,f,g)}hv.X=1;function Ija(a){return Lo(a)}Ija.X=1;function Jja(){}Jja.X=1;function Kja(a,d,e,f,g,h){iv(a,d,e,f,g,h)}Kja.X=1;function Lja(a,d){Qu(a,d)}Lja.X=1;function Mja(a,d){jv(a,d)}Mja.X=1;function Nja(a){return Mp(a)}Nja.X=1;function Oja(a){return Np(a)}Oja.X=1;function kv(a,d,e,f){v[c[c[a]+6]](a,d,e,f)}kv.X=1;function lv(a,d,e){var f=b;b+=4;0==c[mv]<<24>>24&&Hb(mv);nv(f,a,d,e);c[ov]=c[f];k[ov]=k[f];c[ov+1]=c[f+1];k[ov+1]=k[f+1];c[ov+2]=c[f+2];k[ov+2]=k[f+2];c[ov+3]=c[f+3];k[ov+3]=k[f+3];b=f;return ov}lv.X=1;function Pja(a){pv(a)}Pja.X=1;function Qja(a){return Ru(a)}Qja.X=1;function Rja(a){return a+74}Rja.X=1;function Sja(a){return Su(a)}Sja.X=1;function Tja(a,d,e,f,g,h){qv(a,d,e,f,g,h)}Tja.X=1;function Uja(a){return Tu(a)}Uja.X=1;function Vja(a){return Vu(a)}Vja.X=1;function Wja(a){return a+137}Wja.X=1;function Xja(a){return a+153}Xja.X=1;function rv(a){v[c[c[a]+2]](a)}rv.X=1;function Yja(a,d){Wu(a,d)}Yja.X=1;function Zja(a){return sv(a)}Zja.X=1;function $ja(a,d,e){return tv(a,d,e)}$ja.X=1;function aka(a,d,e){uv(a,d,e)}aka.X=1;function vv(a,d){v[c[c[a]+4]](a,d)}vv.X=1;function bka(a,d,e,f,g,h){wv(a,d,e,f,g,h)}bka.X=1;function xv(a,d){v[c[c[a]+5]](a,d)}xv.X=1;function cka(a){return yv(a)}cka.X=1;function yv(a){return Bj(a+171)}yv.X=1;function zv(a,d,e,f){xja(a,d&1,e,f)}zv.X=1;function dka(a){return Av(a)}dka.X=1;function Av(a){return Xi(a+171)}Av.X=1;function Bv(a,d,e){var f=xb(756);Cv(f,a,d,e,0);return f}Bv.X=1;function Dv(a,d,e,f){var f=f&1,g=xb(756);Cv(g,a,d,e,f&1);return g}Dv.X=1;function Ev(a,d,e,f,g,h){var i=xb(756);Fv(i,a,d,e,f,g,h,0);return i}Ev.X=1;function Gv(a){return k[a+170]}Gv.X=1;function eka(a,d){c[a+186]=d&1}eka.X=1;function Hv(a){return c[a+184]&1}Hv.X=1;function fka(a,d){c[a+184]=d&1}fka.X=1;function Iv(a){return c[a+186]&1}Iv.X=1;function gka(a,d){c[a+183]=d&1}gka.X=1;function Jv(a){return c[a+183]&1}Jv.X=1;function hka(a,d){k[a]=d}hka.X=1;function Kv(a,d){k[a+12]=d}Kv.X=1;function Lv(a,d){k[a+4]=d}Lv.X=1;function Mv(a){var d;0==(c[a+14]|0)?0!=(c[a+11]&1|0)?a=5:(d=0,a=6):a=5;5==a&&(d=1);return d}Mv.X=1;function Nv(a,d){k[a+13]=d}Nv.X=1;function Ov(a){return k[a+8]}Ov.X=1;function Pv(a,d){k[a+8]=d}Pv.X=1;function Qv(a,d){k[a+9]=d}Qv.X=1;function Rv(a,d,e,f,g,h,i){var i=i&1,j=xb(756);Fv(j,a,d,e,f,g,h,i&1);return j}Rv.X=1;function ika(a){return Ap(a)}ika.X=1;function jka(a,d){Bp(a,d)}jka.X=1;function Sv(a,d,e,f){v[c[c[a]+6]](a,d,e,f)}Sv.X=1;function Tv(a,d){Hp(a,d&1)}Tv.X=1;function kka(a){return Cp(a)}kka.X=1;function Uv(a,d){Ko(a,d&1)}Uv.X=1;function lka(a,d){Pp(a,d)}lka.X=1;function mka(a){return Gv(a)}mka.X=1;function nka(a){return Vv(a)}nka.X=1;function Vv(a){return Dj(a+171)}Vv.X=1;function Wv(a,d,e){v[c[c[a]+7]](a,d,e,-1)}Wv.X=1;function Xv(a,d,e,f){v[c[c[a]+7]](a,d,e,f)}Xv.X=1;function Yv(a,d){eka(a,d&1)}Yv.X=1;function oka(a){return Hv(a)}oka.X=1;function pka(a){return Fp(a)}pka.X=1;function Zv(a){return c[a+4]}Zv.X=1;function qka(a){return Gp(a)}qka.X=1;function $v(a,d){fka(a,d&1)}$v.X=1;function rka(a){return a+153}rka.X=1;function ska(a,d){aw(a,d)}ska.X=1;function tka(a,d,e,f,g,h){bw(a,d,e,f,g,h)}tka.X=1;function uka(a){return Ip(a)}uka.X=1;function vka(a){return Dp(a)}vka.X=1;function cw(a,d,e){return v[c[c[a]+10]](a,d,e)}cw.X=1;function wka(a,d){Jp(a,d)}wka.X=1;function xka(a){return Iv(a)}xka.X=1;function yka(a,d){Kp(a,d)}yka.X=1;function zka(a,d){Ep(a,d)}zka.X=1;function Aka(a,d){zp(a,d)}Aka.X=1;function dw(a){return v[c[c[a]+9]](a)}dw.X=1;function Bka(a){return Lp(a)}Bka.X=1;function ew(a,d){gka(a,d&1)}ew.X=1;function fw(a,d){return v[c[c[a]+8]](a,d,-1)}fw.X=1;function gw(a,d,e){return v[c[c[a]+8]](a,d,e)}gw.X=1;function hw(a,d,e){iw(a,d,e,.8999999761581421,.30000001192092896,1)}hw.X=1;function iw(a,d,e,f,g,h){yj(a+171,d,e,f,g,h)}iw.X=1;function jw(a,d,e,f){iw(a,d,e,f,.30000001192092896,1)}jw.X=1;function kw(a,d,e,f,g){iw(a,d,e,f,g,1)}kw.X=1;function Cka(a,d,e,f,g,h){iw(a,d,e,f,g,h)}Cka.X=1;function Dka(a){return lw(a)}Dka.X=1;function lw(a){return Vi(a+171)&1}lw.X=1;function mw(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}mw.X=1;function nw(a,d,e,f,g){v[c[c[a]+3]](a,d,e,f,g)}nw.X=1;function Eka(a){return Lo(a)}Eka.X=1;function Fka(){}Fka.X=1;function Gka(a,d,e){ow(a,d,e)}Gka.X=1;function Hka(a){return Mp(a)}Hka.X=1;function Ika(a){return Np(a)}Ika.X=1;function Jka(a){return Jv(a)}Jka.X=1;function Kka(a,d,e){pw(a,d,e)}Kka.X=1;function Lka(a){return Op(a)}Lka.X=1;function Mka(a,d){qw(a,d)}Mka.X=1;function qw(a,d){var e=b;b+=76;var f=e+4,g=e+8,h=e+12,i=e+16,j=e+20,l=e+24,m=e+28,n=e+32,p=e+48,r=e+52,s=e+64;rw(d,e,f);var t=a+137+12;c[g]=c[t];k[g]=k[t];c[g+1]=c[t+1];k[g+1]=k[t+1];c[g+2]=c[t+2];k[g+2]=k[t+2];c[g+3]=c[t+3];k[g+3]=k[t+3];Db(a+137,e,f,d,e+1,f+1,d+1,e+2,f+2,d+2);Bo(h,c[a+7]+1,d);sw(i,d,h);tw(j,i,e);qn(l,h,j);f=a+153+12;uw(n,c[a+8]+1);vw(p,c[a+7]+1,g);vw(m,n,p);c[f]=c[m];k[f]=k[m];c[f+1]=c[m+1];k[f+1]=k[m+1];c[f+2]=c[m+2];k[f+2]=k[m+2];c[f+3]=c[m+3];k[f+3]=k[m+3];Db(a+153,j,l,h,j+1,l+1,h+1,j+2,l+2,h+2);g=a+153;Bc(s,c[a+8]+1);ww(r,s,a+153);Wb(g,r);b=e}qw.X=1;function Nka(a){return a+137}Nka.X=1;function Oka(a){return Mv(a)}Oka.X=1;function Pka(a,d,e,f,g,h){return xw(a,d,e,f,g,h)}Pka.X=1;function yw(a){return k[a+13]}yw.X=1;function zw(a){return k[a+9]}zw.X=1;function Aw(a){return c[a+11]&1}Aw.X=1;function Bw(a,d){c[a+11]=d&1}Bw.X=1;function Cw(a){return k[a+12]}Cw.X=1;function Dw(a,d){k[a+6]=d}Dw.X=1;function Qka(a){return k[a]}Qka.X=1;function Ew(a){return c[a+14]}Ew.X=1;function Fw(a,d){k[a+1]=d}Fw.X=1;function Gw(a){return k[a+10]}Gw.X=1;function Hw(a){return k[a+2]}Hw.X=1;function Iw(a){return k[a+15]}Iw.X=1;function Jw(a,d){k[a+5]=d}Jw.X=1;function Kw(a,d){k[a+3]=d}Kw.X=1;function Lw(a,d){k[a+7]=d}Lw.X=1;function Mw(a){return k[a+4]}Mw.X=1;function Nw(a){return k[a+5]}Nw.X=1;function Ow(a){return k[a+7]}Ow.X=1;function Pw(a){return k[a+1]}Pw.X=1;function Qw(a,d){k[a+15]=d}Qw.X=1;function Rw(a,d){k[a+2]=d}Rw.X=1;function Sw(a){return k[a]>k[a+1]?0:1}Sw.X=1;function Tw(a){return k[a+3]}Tw.X=1;function Uw(a,d){c[a+14]=d}Uw.X=1;function Vw(a,d){k[a+10]=d}Vw.X=1;function Ww(a){return k[a+6]}Ww.X=1;function Xw(a){return k[a+14]}Xw.X=1;function Yw(a){return k[a+15]}Yw.X=1;function Zw(a){return c[a+17]}Zw.X=1;function $w(){var a=xb(64);ax(a);return a}$w.X=1;function bx(a){var d=xb(64);Rka(d,a);return d}bx.X=1;function Ska(a,d){return cx(a,d)}Ska.X=1;function dx(a){0!=(a|0)&&xe(a)}dx.X=1;function Tka(a){return Sw(a)}Tka.X=1;function ex(a,d,e,f){return v[c[c[a]+2]](a,d,e,f)}ex.X=1;function fx(a,d,e){v[c[c[a]+8]](a,d,e)}fx.X=1;function Uka(a){return Ge(a)}Uka.X=1;function gx(a,d){var e=b;b+=4;0==c[hx]<<24>>24&&Hb(hx);v[c[c[a]+15]](e,a,d);c[ix]=c[e];k[ix]=k[e];c[ix+1]=c[e+1];k[ix+1]=k[e+1];c[ix+2]=c[e+2];k[ix+2]=k[e+2];c[ix+3]=c[e+3];k[ix+3]=k[e+3];b=e;return ix}gx.X=1;function Vka(a,d){Je(a,d)}Vka.X=1;function Wka(a){return Le(a)}Wka.X=1;function jx(a,d,e){return v[c[c[a]+13]](a,d,e)}jx.X=1;function kx(a){return v[c[c[a]+7]](a)}kx.X=1;function lx(a){return v[c[c[a]+19]](a)}lx.X=1;function Xka(a){return Ye(a)}Xka.X=1;function Yka(a){return Xw(a)}Yka.X=1;function Zka(a,d,e,f){df(a,d,e,f)}Zka.X=1;function mx(a){return v[c[c[a]+12]](a)}mx.X=1;function nx(a,d){var e=Se(76);ox(e,a,d);return e}nx.X=1;function px(a){return v[c[c[a]+9]](a)}px.X=1;function $ka(a){return Yw(a)}$ka.X=1;function ala(a){return a+3}ala.X=1;function qx(a,d){var e=b;b+=4;0==c[rx]<<24>>24&&Hb(rx);kf(e,a,d);c[sx]=c[e];k[sx]=k[e];c[sx+1]=c[e+1];k[sx+1]=k[e+1];c[sx+2]=c[e+2];k[sx+2]=k[e+2];c[sx+3]=c[e+3];k[sx+3]=k[e+3];b=e;return sx}qx.X=1;function tx(a,d){var e=b;b+=4;0==c[ux]<<24>>24&&Hb(ux);v[c[c[a]+16]](e,a,d);c[vx]=c[e];k[vx]=k[e];c[vx+1]=c[e+1];k[vx+1]=k[e+1];c[vx+2]=c[e+2];k[vx+2]=k[e+2];c[vx+3]=c[e+3];k[vx+3]=k[e+3];b=e;return vx}tx.X=1;function bla(a,d){wx(a,d)}bla.X=1;function xx(a,d){v[c[c[a]+6]](a,d)}xx.X=1;function yx(a,d,e,f){v[c[c[a]+2]](a,d,e,f)}yx.X=1;function zx(a,d){var e=b;b+=4;0==c[Ax]<<24>>24&&Hb(Ax);tf(e,a,d);c[Bx]=c[e];k[Bx]=k[e];c[Bx+1]=c[e+1];k[Bx+1]=k[e+1];c[Bx+2]=c[e+2];k[Bx+2]=k[e+2];c[Bx+3]=c[e+3];k[Bx+3]=k[e+3];b=e;return Bx}zx.X=1;function Cx(a,d){return v[c[c[a]+5]](a,d)}Cx.X=1;function cla(a){return xf(a)}cla.X=1;function dla(a){return zf(a)}dla.X=1;function ela(a){return Me(a)}ela.X=1;function fla(a){return Bf(a)}fla.X=1;function Dx(a){return v[c[c[a]+11]](a)}Dx.X=1;function Ex(a,d,e){v[c[c[a]+20]](a,d,e)}Ex.X=1;function Fx(a,d){v[c[c[a]+10]](a,d)}Fx.X=1;function gla(a){return Gf(a)}gla.X=1;function hla(a,d){Jf(a,d)}hla.X=1;function ila(a){return Kf(a)}ila.X=1;function jla(a){return Mf(a)}jla.X=1;function Gx(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}Gx.X=1;function Hx(a,d,e,f){v[c[c[a]+17]](a,d,e,f)}Hx.X=1;function kla(a){return a+7}kla.X=1;function Ix(a,d,e){var f=b;b+=1;k[f]=e;v[c[c[a]+3]](a,d,f);b=f}Ix.X=1;function Jx(a){return v[c[c[a]+4]](a)}Jx.X=1;function lla(a){return Zw(a)}lla.X=1;function Kx(a,d){v[c[c[a]+14]](a,d)}Kx.X=1;function Lx(a,d,e,f){v[c[c[a]+18]](a,d,e,f)}Lx.X=1;function mla(a,d,e,f,g,h,i){Tf(a,d,e,f,g,h,i)}mla.X=1;function nla(a){return Uf(a)}nla.X=1;function ola(a){return Ie(a)}ola.X=1;function Mx(a){return k[a+43]}Mx.X=1;function Nx(a){return c[a+42]&1}Nx.X=1;function Ox(a,d,e){v[c[c[a]+8]](a,d,e)}Ox.X=1;function pla(a){return Ge(a)}pla.X=1;function Px(a,d){var e=b;b+=4;0==c[Qx]<<24>>24&&Hb(Qx);v[c[c[a]+15]](e,a,d);c[Rx]=c[e];k[Rx]=k[e];c[Rx+1]=c[e+1];k[Rx+1]=k[e+1];c[Rx+2]=c[e+2];k[Rx+2]=k[e+2];c[Rx+3]=c[e+3];k[Rx+3]=k[e+3];b=e;return Rx}Px.X=1;function qla(a,d){Je(a,d)}qla.X=1;function rla(a){return Le(a)}rla.X=1;function Sx(a,d,e){return v[c[c[a]+13]](a,d,e)}Sx.X=1;function Tx(a){return v[c[c[a]+7]](a)}Tx.X=1;function Ux(a){return v[c[c[a]+19]](a)}Ux.X=1;function sla(a){return Ye(a)}sla.X=1;function tla(a){return Xw(a)}tla.X=1;function ula(a,d,e,f){df(a,d,e,f)}ula.X=1;function Vx(a){return v[c[c[a]+12]](a)}Vx.X=1;function Wx(a,d){var e=Se(76);Xx(e,a,d);return e}Wx.X=1;function vla(a){return Yw(a)}vla.X=1;function wla(a){return a+3}wla.X=1;function Yx(a,d){var e=b;b+=4;0==c[Zx]<<24>>24&&Hb(Zx);kf(e,a,d);c[$x]=c[e];k[$x]=k[e];c[$x+1]=c[e+1];k[$x+1]=k[e+1];c[$x+2]=c[e+2];k[$x+2]=k[e+2];c[$x+3]=c[e+3];k[$x+3]=k[e+3];b=e;return $x}Yx.X=1;function ay(a,d){var e=b;b+=4;0==c[by]<<24>>24&&Hb(by);v[c[c[a]+16]](e,a,d);c[cy]=c[e];k[cy]=k[e];c[cy+1]=c[e+1];k[cy+1]=k[e+1];c[cy+2]=c[e+2];k[cy+2]=k[e+2];c[cy+3]=c[e+3];k[cy+3]=k[e+3];b=e;return cy}ay.X=1;function xla(a,d){wx(a,d)}xla.X=1;function dy(a,d){v[c[c[a]+6]](a,d)}dy.X=1;function ey(a,d,e,f){v[c[c[a]+2]](a,d,e,f)}ey.X=1;function fy(a,d){var e=b;b+=4;0==c[gy]<<24>>24&&Hb(gy);tf(e,a,d);c[hy]=c[e];k[hy]=k[e];c[hy+1]=c[e+1];k[hy+1]=k[e+1];c[hy+2]=c[e+2];k[hy+2]=k[e+2];c[hy+3]=c[e+3];k[hy+3]=k[e+3];b=e;return hy}fy.X=1;function iy(a,d){return v[c[c[a]+5]](a,d)}iy.X=1;function yla(a){return xf(a)}yla.X=1;function zla(a){return zf(a)}zla.X=1;function Ala(a){return Uf(a)}Ala.X=1;function Bla(a){return Me(a)}Bla.X=1;function Cla(a){return Bf(a)}Cla.X=1;function jy(a){return v[c[c[a]+11]](a)}jy.X=1;function ky(a,d,e){v[c[c[a]+20]](a,d,e)}ky.X=1;function ly(a,d){v[c[c[a]+10]](a,d)}ly.X=1;function Dla(a){return Gf(a)}Dla.X=1;function Ela(a,d){Jf(a,d)}Ela.X=1;function Fla(a){return Kf(a)}Fla.X=1;function Gla(a){return Mf(a)}Gla.X=1;function my(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}my.X=1;function ny(a,d,e,f){v[c[c[a]+17]](a,d,e,f)}ny.X=1;function Hla(a){return a+7}Hla.X=1;function oy(a,d,e){var f=b;b+=1;k[f]=e;v[c[c[a]+3]](a,d,f);b=f}oy.X=1;function py(a){return v[c[c[a]+4]](a)}py.X=1;function Ila(a){return Zw(a)}Ila.X=1;function qy(a,d){v[c[c[a]+14]](a,d)}qy.X=1;function ry(a,d,e,f){v[c[c[a]+18]](a,d,e,f)}ry.X=1;function Jla(a,d,e,f,g,h,i){Tf(a,d,e,f,g,h,i)}Jla.X=1;function sy(a){return v[c[c[a]+9]](a)}sy.X=1;function Kla(a){return Ie(a)}Kla.X=1;function Lla(a,d){ty(a,d)}Lla.X=1;function uy(a,d){v[c[c[a]+8]](a,d)}uy.X=1;function Mla(a,d,e){vy(a,d,e)}Mla.X=1;function wy(a,d,e){return xy(a,d,e&1)}wy.X=1;function yy(a,d){zy(a,d,2)}yy.X=1;function zy(a,d,e){Ay(a+5,d);c[By(a+5,Cy(a+5)-1)+6]=e}zy.X=1;function Nla(a,d,e){zy(a,d,e)}Nla.X=1;function Dy(a,d,e){v[c[c[a]+12]](a,d,e)}Dy.X=1;function Ola(a){return Nx(a)}Ola.X=1;function Ey(a){return v[c[c[a]+13]](a)}Ey.X=1;function Fy(a){return Ue(a,16)}Fy.X=1;function Pla(a){return a+1}Pla.X=1;function Gy(a,d,e){v[c[c[a]+11]](a,d,e)}Gy.X=1;function Hy(a,d,e,f){v[c[c[a]+2]](a,d,e,f)}Hy.X=1;function Qla(a,d){Iy(a,d)}Qla.X=1;function Iy(a,d){var e=a+1;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}Iy.X=1;function Jy(){var a=Fy(172);Ky(a,1,1);return a}Jy.X=1;function Ly(a){var a=a&1,d=Fy(172);Ky(d,a&1,1);return d}Ly.X=1;function My(a,d){var e,f;e=a&1;f=d&1;var g=Fy(172);Ky(g,e&1,f&1);return g}My.X=1;function Ny(a,d){k[a+43]=d}Ny.X=1;function Oy(a){return c[a+41]&1}Oy.X=1;function Py(a,d){c[a+3]=d}Py.X=1;function Rla(a){return c[a]}Rla.X=1;function Qy(a){return c[a+1]}Qy.X=1;function Sla(a,d){c[a]=d}Sla.X=1;function Ry(a,d){c[a+1]=d}Ry.X=1;function Sy(a){return c[a+3]}Sy.X=1;function Ty(a){return c[a+3]}Ty.X=1;function Uy(a){return c[a+2]}Uy.X=1;function Vy(a,d){c[a+3]=d}Vy.X=1;function Wy(a,d){c[a+2]=d}Wy.X=1;function Tla(a){return a+1}Tla.X=1;function Xy(a,d){k[a+8]=d}Xy.X=1;function Yy(a){return k[a+8]}Yy.X=1;function Zy(a){return k[a+1]}Zy.X=1;function $y(a,d){c[a+2]=d}$y.X=1;function az(a,d){k[a+1]=d}az.X=1;function bz(a,d){c[a+3]=d}bz.X=1;function cz(a){return 1>k[a+1]}cz.X=1;function dz(a){return c[a+3]}dz.X=1;function ez(a){return c[a+2]}ez.X=1;function Ula(a){return a+33}Ula.X=1;function fz(a){return c[a+49]}fz.X=1;function Vla(a){return a+1}Vla.X=1;function gz(a,d){c[a+49]=d}gz.X=1;function Wla(a){return a+17}Wla.X=1;function hz(a,d){v[c[c[a]+6]](a,d)}hz.X=1;function iz(a,d,e,f,g,h,i,j,l){v[c[c[a]+4]](a,d,e,f,g,h,i,j,l,0)}iz.X=1;function jz(a,d,e,f,g,h,i,j,l,m){v[c[c[a]+4]](a,d,e,f,g,h,i,j,l,m)}jz.X=1;function kz(a,d){v[c[c[a]+9]](a,d)}kz.X=1;function lz(a,d,e){return v[c[c[a]+14]](a,d,e)}lz.X=1;function Xla(a){return Oy(a)}Xla.X=1;function mz(a,d){v[c[c[a]+5]](a,d)}mz.X=1;function nz(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}nz.X=1;function Yla(a){return oz(a)}Yla.X=1;function Zla(a){return a+5}Zla.X=1;function pz(a){return v[c[c[a]+7]](a)}pz.X=1;function qz(a,d,e,f,g,h,i,j,l){v[c[c[a]+3]](a,d,e,f,g,h,i,j,l,0)}qz.X=1;function rz(a,d,e,f,g,h,i,j,l,m){v[c[c[a]+3]](a,d,e,f,g,h,i,j,l,m)}rz.X=1;function sz(a){return v[c[c[a]+10]](a)}sz.X=1;function tz(a,d,e,f){uz(a,d,e,f,0)}tz.X=1;function vz(a,d,e,f,g){uz(a,d,e,f,g&1)}vz.X=1;function wz(a,d){return v[c[c[a]+2]](a,d)}wz.X=1;function xz(a){0!=(a|0)&&yh(a)}xz.X=1;function yz(){var a=zz(16);Az(a);return a}yz.X=1;function zz(a){return Ue(a,16)}zz.X=1;function Bz(a){var d=zz(16);Cz(d,a);return d}Bz.X=1;function Dz(a,d){var e=zz(16);Ez(e,a,d);return e}Dz.X=1;function Fz(a,d){return v[c[c[a]+2]](a,d)}Fz.X=1;function Gz(a,d){var e=a+1;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}Gz.X=1;function Hz(a,d){return v[c[c[a]+2]](a,d)}Hz.X=1;function $la(a){return cz(a)}$la.X=1;function Iz(a,d,e){return v[c[c[a]+3]](a,d,e&1)}Iz.X=1;function Jz(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}Jz.X=1;function Kz(a,d){v[c[c[a]+2]](a,d)}Kz.X=1;function Lz(a,d){xi(a+33,d)}Lz.X=1;function xi(a,d){Wb(a,d);var e=a+12,f=d+12;c[e]=c[f];k[e]=k[f];c[e+1]=c[f+1];k[e+1]=k[f+1];c[e+2]=c[f+2];k[e+2]=k[f+2];c[e+3]=c[f+3];k[e+3]=k[f+3];return a}xi.X=1;function Mz(a,d){v[c[c[a]+3]](a,d)}Mz.X=1;function Nz(a,d){xi(a+1,d)}Nz.X=1;function Oz(){var a=xb(200);Pz();Pz();Qz(a,Rz,Rz);return a}Oz.X=1;function Pz(){var a=b;b+=7;var d=a+4,e=a+5,f=a+6;0==c[Sz]<<24>>24&&0!=(Hb(Sz)|0)&&(Wc(),k[d]=0,k[e]=0,k[f]=0,H(a,d,e,f),Tz(Rz,Xc,a));b=a;return Rz}Pz.X=1;function Uz(a){var d=xb(200);Pz();Qz(d,a,Rz);return d}Uz.X=1;function Vz(a,d){var e=xb(200);Qz(e,a,d);return e}Vz.X=1;function Wz(a,d){xi(a+17,d)}Wz.X=1;function Xz(a,d,e){v[c[c[a]+8]](a,d,e)}Xz.X=1;function ama(a){return Ge(a)}ama.X=1;function Yz(a,d){var e=b;b+=4;0==c[Zz]<<24>>24&&Hb(Zz);v[c[c[a]+15]](e,a,d);c[$z]=c[e];k[$z]=k[e];c[$z+1]=c[e+1];k[$z+1]=k[e+1];c[$z+2]=c[e+2];k[$z+2]=k[e+2];c[$z+3]=c[e+3];k[$z+3]=k[e+3];b=e;return $z}Yz.X=1;function bma(a,d){Je(a,d)}bma.X=1;function cma(a){return Le(a)}cma.X=1;function aA(a,d,e){return v[c[c[a]+13]](a,d,e)}aA.X=1;function bA(a,d){k[a+52]=d}bA.X=1;function cA(a){return k[a+53]}cA.X=1;function dA(a){return k[a+51]}dA.X=1;function eA(a,d){k[a+54]=d}eA.X=1;function fA(a,d){k[a+53]=d}fA.X=1;function gA(a){return k[a+62]}gA.X=1;function hA(a){return k[a+55]}hA.X=1;function iA(a){return k[a+67]}iA.X=1;function dma(a){return a+23}dma.X=1;function jA(a){return k[a+57]}jA.X=1;function kA(a){return c[a+65]&1}kA.X=1;function lA(a,d){k[a+63]=d}lA.X=1;function mA(a){return k[a+63]}mA.X=1;function nA(a){return k[a+58]}nA.X=1;function oA(a){return k[a+61]}oA.X=1;function pA(a){return k[a+68]}pA.X=1;function qA(a,d){c[a+66]=d}qA.X=1;function rA(a,d){k[a+64]=d}rA.X=1;function sA(a,d){k[a+68]=d}sA.X=1;function tA(a,d){c[a+65]=d&1}tA.X=1;function uA(a,d){k[a+55]=d}uA.X=1;function vA(a,d){k[a+60]=d}vA.X=1;function wA(a){return c[a+66]}wA.X=1;function xA(a,d){k[a+57]=d}xA.X=1;function yA(a){return k[a+70]}yA.X=1;function zA(a){return k[a+56]}zA.X=1;function AA(a){return k[a+52]}AA.X=1;function BA(a,d){k[a+58]=d}BA.X=1;function ema(a){return a+39}ema.X=1;function CA(a){return k[a+64]}CA.X=1;function DA(a,d){k[a+70]=d}DA.X=1;function EA(a){return k[a+69]}EA.X=1;function FA(a,d){k[a+51]=d}FA.X=1;function GA(a,d){k[a+61]=d}GA.X=1;function HA(a){return k[a+59]}HA.X=1;function IA(a,d){k[a+56]=d}IA.X=1;function fma(a){return a+43}fma.X=1;function JA(a){return k[a+54]}JA.X=1;function KA(a,d){k[a+67]=d}KA.X=1;function LA(a,d){k[a+59]=d}LA.X=1;function gma(a){return a+47}gma.X=1;function MA(a){return v[c[c[a]+7]](a)}MA.X=1;function NA(a){return v[c[c[a]+19]](a)}NA.X=1;function hma(a){return Ye(a)}hma.X=1;function ima(a){return Xw(a)}ima.X=1;function OA(a,d){var e=Se(76);PA(e,a,d);return e}OA.X=1;function QA(a){return v[c[c[a]+12]](a)}QA.X=1;function RA(a){return v[c[c[a]+9]](a)}RA.X=1;function jma(a){return Yw(a)}jma.X=1;function kma(a){return a+3}kma.X=1;function SA(a,d){var e=b;b+=4;0==c[TA]<<24>>24&&Hb(TA);kf(e,a,d);c[UA]=c[e];k[UA]=k[e];c[UA+1]=c[e+1];k[UA+1]=k[e+1];c[UA+2]=c[e+2];k[UA+2]=k[e+2];c[UA+3]=c[e+3];k[UA+3]=k[e+3];b=e;return UA}SA.X=1;function VA(a,d){var e=b;b+=4;0==c[WA]<<24>>24&&Hb(WA);v[c[c[a]+16]](e,a,d);c[XA]=c[e];k[XA]=k[e];c[XA+1]=c[e+1];k[XA+1]=k[e+1];c[XA+2]=c[e+2];k[XA+2]=k[e+2];c[XA+3]=c[e+3];k[XA+3]=k[e+3];b=e;return XA}VA.X=1;function lma(a,d){wx(a,d)}lma.X=1;function YA(a,d){v[c[c[a]+6]](a,d)}YA.X=1;function ZA(a,d,e,f){v[c[c[a]+2]](a,d,e,f)}ZA.X=1;function $A(a,d){var e=b;b+=4;0==c[aB]<<24>>24&&Hb(aB);tf(e,a,d);c[bB]=c[e];k[bB]=k[e];c[bB+1]=c[e+1];k[bB+1]=k[e+1];c[bB+2]=c[e+2];k[bB+2]=k[e+2];c[bB+3]=c[e+3];k[bB+3]=k[e+3];b=e;return bB}$A.X=1;function cB(a,d){return v[c[c[a]+5]](a,d)}cB.X=1;function mma(a){return xf(a)}mma.X=1;function nma(a){return zf(a)}nma.X=1;function oma(a,d,e,f){df(a,d,e,f)}oma.X=1;function pma(a){return Me(a)}pma.X=1;function qma(a){return Bf(a)}qma.X=1;function dB(a){return v[c[c[a]+11]](a)}dB.X=1;function eB(a,d,e){v[c[c[a]+20]](a,d,e)}eB.X=1;function fB(a,d){v[c[c[a]+10]](a,d)}fB.X=1;function rma(a){return Gf(a)}rma.X=1;function sma(a,d){Jf(a,d)}sma.X=1;function tma(a){return Kf(a)}tma.X=1;function uma(a){return Mf(a)}uma.X=1;function gB(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}gB.X=1;function hB(a,d,e,f){v[c[c[a]+17]](a,d,e,f)}hB.X=1;function vma(a){return a+7}vma.X=1;function iB(a,d,e){var f=b;b+=1;k[f]=e;v[c[c[a]+3]](a,d,f);b=f}iB.X=1;function jB(a){return v[c[c[a]+4]](a)}jB.X=1;function wma(a){return Zw(a)}wma.X=1;function kB(a,d){v[c[c[a]+14]](a,d)}kB.X=1;function lB(a,d,e,f){v[c[c[a]+18]](a,d,e,f)}lB.X=1;function xma(a,d,e,f,g,h,i){Tf(a,d,e,f,g,h,i)}xma.X=1;function yma(a){return Uf(a)}yma.X=1;function zma(a){return Ie(a)}zma.X=1;function mB(a,d){var e=a+39;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}mB.X=1;function nB(a,d,e){var f=b,g=e,e=b;b+=23;for(var h=e,i=g+23;g>24&&Hb(FB);GB(d,a);c[HB]=c[d];k[HB]=k[d];c[HB+1]=c[d+1];k[HB+1]=k[d+1];c[HB+2]=c[d+2];k[HB+2]=k[d+2];c[HB+3]=c[d+3];k[HB+3]=k[d+3];b=d;return HB}EB.X=1;function GB(a,d){var e=b;b+=3;var f=e+1,g=e+2;k[e]=sc(k[d]);k[f]=sc(k[d+1]);k[g]=sc(k[d+2]);H(a,e,f,g);b=e}GB.X=1;function Kma(a){return IB(a)}Kma.X=1;function IB(a){var d=b;b+=1;k[d]=JB(a);a=KB(a,d);b=d;return a}IB.X=1;function Lma(a,d){return LB(a,d)}Lma.X=1;function LB(a,d){var e;e=ec(Um(a)*Um(d));return MB(J(a,d)/e)}LB.X=1;function Mma(a,d){Tc(a,d)}Mma.X=1;function NB(a,d,e){var f=b;b+=5;var g=f+1;k[f]=e;0==c[OB]<<24>>24&&Hb(OB);PB(g,a,d,f);c[QB]=c[g];k[QB]=k[g];c[QB+1]=c[g+1];k[QB+1]=k[g+1];c[QB+2]=c[g+2];k[QB+2]=k[g+2];c[QB+3]=c[g+3];k[QB+3]=k[g+3];b=f;return QB}NB.X=1;function PB(a,d,e,f){var g=b;b+=3;var h=g+1,i=g+2;k[g]=k[d]+(k[e]-k[d])*k[f];k[h]=k[d+1]+(k[e+1]-k[d+1])*k[f];k[i]=k[d+2]+(k[e+2]-k[d+2])*k[f];H(a,g,h,i);b=g}PB.X=1;function Nma(a,d){gp(a,d)}Nma.X=1;function gp(a,d){RB(a,d);RB(a+1,d+1);RB(a+2,d+2);RB(a+3,d+3)}gp.X=1;function SB(a,d){var e=b;b+=4;0==c[TB]<<24>>24&&Hb(TB);qn(e,a,d);c[UB]=c[e];k[UB]=k[e];c[UB+1]=c[e+1];k[UB+1]=k[e+1];c[UB+2]=c[e+2];k[UB+2]=k[e+2];c[UB+3]=c[e+3];k[UB+3]=k[e+3];b=e;return UB}SB.X=1;function qn(a,d,e){var f=b;b+=3;var g=f+1,h=f+2;k[f]=k[d+1]*k[e+2]-k[d+2]*k[e+1];k[g]=k[d+2]*k[e]-k[d]*k[e+2];k[h]=k[d]*k[e+1]-k[d+1]*k[e];H(a,f,g,h);b=f}qn.X=1;function Oma(a,d){zB(a,d)}Oma.X=1;function VB(a){var d=b;b+=4;0==c[WB]<<24>>24&&Hb(WB);XB(d,a);c[YB]=c[d];k[YB]=k[d];c[YB+1]=c[d+1];k[YB+1]=k[d+1];c[YB+2]=c[d+2];k[YB+2]=k[d+2];c[YB+3]=c[d+3];k[YB+3]=k[d+3];b=d;return YB}VB.X=1;function ZB(a){return k[a+3]}ZB.X=1;function $B(a,d,e,f,g){k[a]=k[d];k[a+1]=k[e];k[a+2]=k[f];k[a+3]=k[g]}$B.X=1;function re(a,d){var e;for(e=0;;){k[a+e]=k[d+e];var f=e+1;e=f;if(4<=(f|0)){break}}}re.X=1;function aC(a){return k[a]e&&(d=0,e=k[a]);k[a+1]>e&&(d=1,e=k[a+1]);k[a+2]>e&&(d=2,e=k[a+2]);k[a+3]>e&&(d=3);return d}eC.X=1;function fC(a){return k[a]Um(a)}nC.X=1;function Tma(a,d){re(a,d)}Tma.X=1;function Uma(a,d){return oC(a,d)}Uma.X=1;function oC(a,d){var e=b;b+=4;N(e,d,a);var f=JB(e);b=e;return f}oC.X=1;function Vma(a){return aC(a)}Vma.X=1;function pC(){return xb(16)}pC.X=1;function qC(a,d,e,f){var g=b;b+=4;var h=g+1,i=g+2,j=g+3;k[g]=a;k[h]=d;k[i]=e;k[j]=f;a=xb(16);jC(a,g,h,i,j);b=g;return a}qC.X=1;function Wma(a){return bC(a)}Wma.X=1;function Xma(a){return rC(a)}Xma.X=1;function rC(a){var d=b;b+=8;var e,f=d+4,g=d+5,h=d+6,i=d+7;GB(d,a);e=fC(d);0>24&&Hb(tC);uC(d,a);c[vC]=c[d];k[vC]=k[d];c[vC+1]=c[d+1];k[vC+1]=k[d+1];c[vC+2]=c[d+2];k[vC+2]=k[d+2];c[vC+3]=c[d+3];k[vC+3]=k[d+3];b=d;return vC}sC.X=1;function uC(a,d){var e=b;b+=1;k[e]=JB(d);wC(a,d,e);b=e}uC.X=1;function Yma(a,d){mc(a,d)}Yma.X=1;function Zma(a,d){k[a]=d}Zma.X=1;function $ma(a,d){cC(a,d)}$ma.X=1;function ana(a,d){dC(a,d)}ana.X=1;function bna(a){return eC(a)}bna.X=1;function xC(a){0!=(a|0)&&xe(a)}xC.X=1;function yC(a,d,e){var f=b;b+=4;0==c[zC]<<24>>24&&Hb(zC);AC(f,a,d,e);c[BC]=c[f];k[BC]=k[f];c[BC+1]=c[f+1];k[BC+1]=k[f+1];c[BC+2]=c[f+2];k[BC+2]=k[f+2];c[BC+3]=c[f+3];k[BC+3]=k[f+3];b=f;return BC}yC.X=1;function AC(a,d,e,f){var g=b;b+=31;var h=g+4,i=g+5,j=g+9,l=g+13,m=g+17,n=g+21,p=g+25,r=g+26,s=g+30;k[h]=J(e,d);Q(g,e,h);N(i,d,g);qn(l,e,d);c[j]=c[l];k[j]=k[l];c[j+1]=c[l+1];k[j+1]=k[l+1];c[j+2]=c[l+2];k[j+2]=k[l+2];c[j+3]=c[l+3];k[j+3]=k[l+3];k[p]=td(f);Q(n,i,p);wn(m,g,n);k[s]=ud(f);Q(r,j,s);wn(a,m,r);b=g}AC.X=1;function cna(a){return fC(a)}cna.X=1;function dna(a){return CC(a)}dna.X=1;function CC(a){var d=b;b+=4;XB(d,a);a=eC(d);b=d;return a}CC.X=1;function DC(a){return k[a+1]}DC.X=1;function ena(a){return Um(a)}ena.X=1;function Um(a){return J(a,a)}Um.X=1;function fna(a){EC(a)}fna.X=1;function EC(a){var d=b;b+=3;var e=d+1,f=d+2;k[d]=0;k[e]=0;k[f]=0;pe(a,d,e,f);b=d}EC.X=1;function gna(a){return JB(a)}gna.X=1;function JB(a){return ec(Um(a))}JB.X=1;function hna(a,d){gC(a,d)}hna.X=1;function ina(a){return FC(a)}ina.X=1;function FC(a){var d=b;b+=4;GB(d,a);a=aC(d);b=d;return a}FC.X=1;function GC(a){return k[a+3]}GC.X=1;function HC(a){return k[a+1]}HC.X=1;function jna(a){return k[a]}jna.X=1;function IC(a){return k[a+2]}IC.X=1;function kna(a,d){return J(a,d)}kna.X=1;function J(a,d){return k[a]*k[d]+k[a+1]*k[d+1]+k[a+2]*k[d+2]}J.X=1;function JC(a,d){k[a]-=k[d];var e=a+1;k[e]-=k[d+1];e=a+2;k[e]-=k[d+2];return a}JC.X=1;function xn(a,d){k[a]+=k[d];var e=a+1;k[e]+=k[d+1];e=a+2;k[e]+=k[d+2];return a}xn.X=1;function KC(a,d){return k[a+3]==k[d+3]?k[a+2]!=k[d+2]?0:k[a+1]!=k[d+1]?0:k[a]==k[d]:0}KC.X=1;function LC(a,d){k[a]*=k[d];var e=a+1;k[e]*=k[d];e=a+2;k[e]*=k[d];return a}LC.X=1;function pe(a,d,e,f){k[a]=k[d];k[a+1]=k[e];k[a+2]=k[f];k[a+3]=0}pe.X=1;function MC(a,d,e){v[c[c[a]+2]](a,d,e)}MC.X=1;function NC(a,d){v[c[c[a]+3]](a,d)}NC.X=1;function lna(a,d){hp(a,d)}lna.X=1;function mna(a,d,e,f){CB(a,d,e,f)}mna.X=1;function nna(a,d){Mb(a,d)}nna.X=1;function ona(a,d){Ob(a,d)}ona.X=1;function pna(a){return k[a]}pna.X=1;function OC(a){return k[a+1]}OC.X=1;function PC(a){return k[a+2]}PC.X=1;function qna(a,d,e,f){yB(a,d,e,f)}qna.X=1;function rna(a,d,e){return ne(a,d,e)}rna.X=1;function sna(a,d){return JC(a,d)}sna.X=1;function QC(a){var d=b;b+=4;0==c[RC]<<24>>24&&Hb(RC);GB(d,a);c[SC]=c[d];k[SC]=k[d];c[SC+1]=c[d+1];k[SC+1]=k[d+1];c[SC+2]=c[d+2];k[SC+2]=k[d+2];c[SC+3]=c[d+3];k[SC+3]=k[d+3];b=d;return SC}QC.X=1;function tna(a){return IB(a)}tna.X=1;function una(a,d){return LB(a,d)}una.X=1;function TC(a,d,e){var f=b;b+=5;var g=f+1;k[f]=e;0==c[UC]<<24>>24&&Hb(UC);PB(g,a,d,f);c[VC]=c[g];k[VC]=k[g];c[VC+1]=c[g+1];k[VC+1]=k[g+1];c[VC+2]=c[g+2];k[VC+2]=k[g+2];c[VC+3]=c[g+3];k[VC+3]=k[g+3];b=f;return VC}TC.X=1;function vna(a,d){gp(a,d)}vna.X=1;function WC(a,d){var e=b;b+=4;0==c[XC]<<24>>24&&Hb(XC);qn(e,a,d);c[YC]=c[e];k[YC]=k[e];c[YC+1]=c[e+1];k[YC+1]=k[e+1];c[YC+2]=c[e+2];k[YC+2]=k[e+2];c[YC+3]=c[e+3];k[YC+3]=k[e+3];b=e;return YC}WC.X=1;function wna(a,d){return xn(a,d)}wna.X=1;function xna(a,d){return KC(a,d)}xna.X=1;function ZC(a){0!=(a|0)&&xe(a)}ZC.X=1;function $C(a,d){var e=b;b+=1;k[e]=d;var f=LC(a,e);b=e;return f}$C.X=1;function yna(a,d){zB(a,d)}yna.X=1;function zna(a){return bC(a)}zna.X=1;function aD(a,d){c[a]=c[d];k[a]=k[d];c[a+1]=c[d+1];k[a+1]=k[d+1];c[a+2]=c[d+2];k[a+2]=k[d+2];c[a+3]=c[d+3];k[a+3]=k[d+3];return 0!=(a|0)}aD.X=1;function Ana(a,d){return kC(a,d)}Ana.X=1;function Bna(a){return lC(a)}Bna.X=1;function bD(a,d,e,f){var g=b;b+=3;var h=g+1,i=g+2;k[g]=d;k[h]=e;k[i]=f;pe(a,g,h,i);b=g}bD.X=1;function Cna(a){return nC(a)}Cna.X=1;function Dna(a,d){re(a,d)}Dna.X=1;function cD(a,d){var e=b;b+=1;k[e]=d;var f=KB(a,e);b=e;return f}cD.X=1;function KB(a,d){var e=b;b+=1;k[e]=1/k[d];var f=LC(a,e);b=e;return f}KB.X=1;function Ena(a){return aC(a)}Ena.X=1;function Fna(a){return rC(a)}Fna.X=1;function dD(a){var d=b;b+=4;0==c[eD]<<24>>24&&Hb(eD);uC(d,a);c[fD]=c[d];k[fD]=k[d];c[fD+1]=c[d+1];k[fD+1]=k[d+1];c[fD+2]=c[d+2];k[fD+2]=k[d+2];c[fD+3]=c[d+3];k[fD+3]=k[d+3];b=d;return fD}dD.X=1;function gD(){return xb(16)}gD.X=1;function hD(a,d,e){var f=b;b+=3;var g=f+1,h=f+2;k[f]=a;k[g]=d;k[h]=e;a=xb(16);H(a,f,g,h);b=f;return a}hD.X=1;function Gna(a,d){mc(a,d)}Gna.X=1;function Hna(a,d){k[a]=d}Hna.X=1;function Ina(a,d){cC(a,d)}Ina.X=1;function Jna(a,d){dC(a,d)}Jna.X=1;function Kna(a,d){return oC(a,d)}Kna.X=1;function iD(a,d,e){var f=b;b+=4;0==c[jD]<<24>>24&&Hb(jD);AC(f,a,d,e);c[kD]=c[f];k[kD]=k[f];c[kD+1]=c[f+1];k[kD+1]=k[f+1];c[kD+2]=c[f+2];k[kD+2]=k[f+2];c[kD+3]=c[f+3];k[kD+3]=k[f+3];b=f;return kD}iD.X=1;function Lna(a){return fC(a)}Lna.X=1;function Mna(a,d){Tc(a,d)}Mna.X=1;function Nna(a){return Um(a)}Nna.X=1;function Ona(a){EC(a)}Ona.X=1;function Pna(a){return JB(a)}Pna.X=1;function Qna(a,d){gC(a,d)}Qna.X=1;function Rna(a,d){return J(a,d)}Rna.X=1;function lD(a){return k[a+3]}lD.X=1;function mD(a){return k[a+1]}mD.X=1;function Sna(a){return k[a]}Sna.X=1;function nD(a){return k[a+2]}nD.X=1;function Tna(a){return FC(a)}Tna.X=1;function oD(a,d){v[c[c[a]+14]](a,d)}oD.X=1;function pD(a,d){return v[c[c[a]+10]](a,d)}pD.X=1;function qD(a){v[c[c[a]+8]](a)}qD.X=1;function rD(a){return v[c[c[a]+13]](a)}rD.X=1;function sD(a){v[c[c[a]+9]](a)}sD.X=1;function tD(a,d){return v[c[c[a]+7]](a,d)}tD.X=1;function uD(a){return v[c[c[a]+2]](a)}uD.X=1;function vD(a){return v[c[c[a]+3]](a)}vD.X=1;function wD(a,d,e,f,g){v[c[c[a]+5]](a,d,e,f,g)}wD.X=1;function xD(a,d){v[c[c[a]+12]](a,d)}xD.X=1;function yD(a,d){k[a+3]=d}yD.X=1;function zD(a){return k[a+2]}zD.X=1;function AD(a){return k[a+1]}AD.X=1;function Una(a,d){c[a]=d}Una.X=1;function BD(a,d){k[a+1]=d}BD.X=1;function CD(a){return k[a+3]}CD.X=1;function DD(a,d){k[a+2]=d}DD.X=1;function Vna(a){return c[a]}Vna.X=1;function ED(a,d){c[a+3]=d}ED.X=1;function Wna(a){return a+10}Wna.X=1;function Xna(a){return a+18}Xna.X=1;function FD(a,d){c[a+2]=d}FD.X=1;function GD(a){return c[a+2]}GD.X=1;function HD(a,d){c[a+5]=d}HD.X=1;function Yna(a){return a+6}Yna.X=1;function ID(a){return c[a+4]}ID.X=1;function JD(a){return k[a+1]}JD.X=1;function KD(a){return c[a+5]}KD.X=1;function LD(a,d){k[a+1]=d}LD.X=1;function MD(a,d){c[a+4]=d}MD.X=1;function ND(a){return 0!=(c[a+2]|0)}ND.X=1;function Zna(a){return a+14}Zna.X=1;function OD(a){return c[a+3]}OD.X=1;function PD(a,d){c[a+1]=d}PD.X=1;function $na(a){return a+2}$na.X=1;function QD(a,d){k[a+6]=d}QD.X=1;function RD(a){return k[a+6]}RD.X=1;function SD(a){return c[a+1]}SD.X=1;function aoa(a,d){c[a]=d}aoa.X=1;function boa(a){return c[a]}boa.X=1;function TD(a){return c[a+29]}TD.X=1;function UD(a){return c[a+22]}UD.X=1;function VD(a,d){c[a+22]=d}VD.X=1;function WD(a){return c[a+30]}WD.X=1;function XD(a,d){c[a+21]=d}XD.X=1;function YD(a,d){return v[c[c[a]+6]](a,d)}YD.X=1;function ZD(a,d,e){v[c[c[a]+11]](a,d,e)}ZD.X=1;function $D(a,d,e){return v[c[c[a]+4]](a,d,e)}$D.X=1;function aE(a){0!=(a|0)&&xe(a)}aE.X=1;function bE(){var a=xb(16);cE(a);return a}bE.X=1;function dE(a,d,e){return v[c[c[a]+3]](a,d,e&1)}dE.X=1;function eE(a,d){var e=a+10;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}eE.X=1;function fE(a,d){return v[c[c[a]+2]](a,d)}fE.X=1;function gE(a,d){var e=a+14;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}gE.X=1;function hE(a,d){var e=a+18;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}hE.X=1;function iE(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}iE.X=1;function coa(a){return ND(a)}coa.X=1;function jE(a,d){var e=xb(84);kE(e,a,d);return e}jE.X=1;function lE(a,d){var e=a+6;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}lE.X=1;function mE(a){0!=(a|0)&&xe(a)}mE.X=1;function nE(a,d){var e=a+2;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}nE.X=1;function oE(a,d,e,f){var g=xb(28);pE(g,a,d,e,f);return g}oE.X=1;function qE(a){v[c[c[a]+5]](a)}qE.X=1;function rE(a,d,e,f){v[c[c[a]+4]](a,d,e,f)}rE.X=1;function sE(a,d,e,f,g,h,i,j,l,m,n){return v[c[c[a]+3]](a,d,e,f,g,h,i,j,l,m,n)}sE.X=1;function tE(a,d,e){v[c[c[a]+2]](a,d,e)}tE.X=1;function doa(a,d){uE(a,d)}doa.X=1;function eoa(a){return TD(a)}eoa.X=1;function foa(a){return UD(a)}foa.X=1;function goa(a,d){return vE(a,d)}goa.X=1;function wE(a,d,e,f,g,h,i,j){return hoa(a,d,e,f,g,h,i,j&1)}wE.X=1;function xE(a,d){yE(a,d,1)}xE.X=1;function zE(a,d,e){yE(a,d,e&1)}zE.X=1;function ioa(a,d){VD(a,d)}ioa.X=1;function joa(a){return AE(a)}joa.X=1;function AE(a){return BE(a+33)}AE.X=1;function koa(a,d){return CE(a,d)}koa.X=1;function loa(a){return WD(a)}loa.X=1;function moa(a,d,e){DE(a,d,e)}moa.X=1;function EE(a){var d=b;b+=4;0==c[FE]<<24>>24&&Hb(FE);noa(d,a);c[GE]=c[d];k[GE]=k[d];c[GE+1]=c[d+1];k[GE+1]=k[d+1];c[GE+2]=c[d+2];k[GE+2]=k[d+2];c[GE+3]=c[d+3];k[GE+3]=k[d+3];b=d;return GE}EE.X=1;function noa(a,d){var e;e=HE(d);H(a,0+e+c[d+32],4+e+c[d+32],8+e+c[d+32])}noa.X=1;function ooa(a,d){return IE(a,d)}ooa.X=1;function poa(a){return HE(a)}poa.X=1;function JE(a,d){KE(a,d,1)}JE.X=1;function LE(a,d,e){KE(a,d,e&1)}LE.X=1;function qoa(a){ME(a)}qoa.X=1;function NE(a,d,e,f){v[c[c[a]+6]](a,d,e,f)}NE.X=1;function roa(a,d){XD(a,d)}roa.X=1;function OE(a,d){v[c[c[a]+3]](a,d)}OE.X=1;function PE(a){return c[a+32]}PE.X=1;function QE(a){return c[a+21]}QE.X=1;function RE(a){return c[a+31]}RE.X=1;function SE(a,d){k[a+26]=d}SE.X=1;function TE(a){return k[a+28]}TE.X=1;function UE(a,d){c[a+3]=d}UE.X=1;function VE(a,d){k[a+1]=d}VE.X=1;function WE(a,d){c[a+4]=d}WE.X=1;function XE(a){return k[a+1]}XE.X=1;function YE(a,d){c[a+5]=d}YE.X=1;function ZE(a){return c[a+4]}ZE.X=1;function soa(a){return a+15}soa.X=1;function $E(a){return c[a+5]}$E.X=1;function toa(a){return a+11}toa.X=1;function aF(a){return c[a+3]}aF.X=1;function bF(a,d){c[a+2]=d}bF.X=1;function cF(a){return c[a+2]}cF.X=1;function dF(a){return c[a+13]}dF.X=1;function eF(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}eF.X=1;function fF(a,d){v[c[c[a]+5]](a,d)}fF.X=1;function gF(a,d,e){a=xb(152);hF(a,0,d,e);return a}gF.X=1;function uoa(a){return PE(a)}uoa.X=1;function voa(a,d){return iF(a,d)}voa.X=1;function woa(a){return QE(a)}woa.X=1;function xoa(a){return RE(a)}xoa.X=1;function yoa(a,d){SE(a,d)}yoa.X=1;function zoa(a){return TE(a)}zoa.X=1;function Aoa(a,d,e){jF(a,d,e)}Aoa.X=1;function Boa(a,d,e){kF(a,d,e)}Boa.X=1;function lF(a,d){v[c[c[a]+4]](a,d)}lF.X=1;function mF(a,d,e){v[c[c[a]+2]](a,d,e)}mF.X=1;function nF(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}nF.X=1;function oF(a,d){return v[c[c[a]+2]](a,d)}oF.X=1;function pF(a,d,e){return v[c[c[a]+3]](a,d,e&1)}pF.X=1;function qF(a,d){var e=a+15;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}qF.X=1;function Coa(a){return ND(a)}Coa.X=1;function rF(a,d){var e=a+11;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}rF.X=1;function sF(a,d){var e=xb(132);Doa(e,a,d);return e}sF.X=1;function tF(a,d,e){v[c[c[a]+8]](a,d,e)}tF.X=1;function Eoa(a){return Ge(a)}Eoa.X=1;function uF(a,d){var e=b;b+=4;0==c[vF]<<24>>24&&Hb(vF);v[c[c[a]+15]](e,a,d);c[wF]=c[e];k[wF]=k[e];c[wF+1]=c[e+1];k[wF+1]=k[e+1];c[wF+2]=c[e+2];k[wF+2]=k[e+2];c[wF+3]=c[e+3];k[wF+3]=k[e+3];b=e;return wF}uF.X=1;function Foa(a,d){Je(a,d)}Foa.X=1;function Goa(a){return dF(a)}Goa.X=1;function xF(a,d,e){return v[c[c[a]+13]](a,d,e)}xF.X=1;function yF(a){return v[c[c[a]+7]](a)}yF.X=1;function zF(a,d){v[c[c[a]+14]](a,d)}zF.X=1;function AF(a){return v[c[c[a]+19]](a)}AF.X=1;function Hoa(a){return Ye(a)}Hoa.X=1;function BF(a){return v[c[c[a]+21]](a)}BF.X=1;function Ioa(a,d,e,f){df(a,d,e,f)}Ioa.X=1;function CF(a){return v[c[c[a]+12]](a)}CF.X=1;function DF(a){return v[c[c[a]+9]](a)}DF.X=1;function Joa(a){return a+3}Joa.X=1;function EF(a,d){var e=b;b+=4;0==c[FF]<<24>>24&&Hb(FF);kf(e,a,d);c[GF]=c[e];k[GF]=k[e];c[GF+1]=c[e+1];k[GF+1]=k[e+1];c[GF+2]=c[e+2];k[GF+2]=k[e+2];c[GF+3]=c[e+3];k[GF+3]=k[e+3];b=e;return GF}EF.X=1;function HF(a,d){var e=b;b+=4;0==c[IF]<<24>>24&&Hb(IF);v[c[c[a]+16]](e,a,d);c[JF]=c[e];k[JF]=k[e];c[JF+1]=c[e+1];k[JF+1]=k[e+1];c[JF+2]=c[e+2];k[JF+2]=k[e+2];c[JF+3]=c[e+3];k[JF+3]=k[e+3];b=e;return JF}HF.X=1;function KF(a,d){v[c[c[a]+6]](a,d)}KF.X=1;function LF(a,d,e,f){v[c[c[a]+2]](a,d,e,f)}LF.X=1;function Koa(a){return Le(a)}Koa.X=1;function MF(a,d){var e=b;b+=4;0==c[NF]<<24>>24&&Hb(NF);tf(e,a,d);c[OF]=c[e];k[OF]=k[e];c[OF+1]=c[e+1];k[OF+1]=k[e+1];c[OF+2]=c[e+2];k[OF+2]=k[e+2];c[OF+3]=c[e+3];k[OF+3]=k[e+3];b=e;return OF}MF.X=1;function PF(a,d){return v[c[c[a]+5]](a,d)}PF.X=1;function Loa(a){return xf(a)}Loa.X=1;function Moa(a){return zf(a)}Moa.X=1;function Noa(a){return Me(a)}Noa.X=1;function Ooa(a){return Bf(a)}Ooa.X=1;function QF(a){return v[c[c[a]+11]](a)}QF.X=1;function RF(a,d,e){v[c[c[a]+20]](a,d,e)}RF.X=1;function Poa(a){return a+7}Poa.X=1;function Qoa(a){return Gf(a)}Qoa.X=1;function Roa(a,d){Jf(a,d)}Roa.X=1;function Soa(a){return Kf(a)}Soa.X=1;function Toa(a){return Mf(a)}Toa.X=1;function SF(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}SF.X=1;function TF(a,d,e,f){v[c[c[a]+17]](a,d,e,f)}TF.X=1;function Uoa(a){return a+7}Uoa.X=1;function UF(a,d,e){var f=b;b+=1;k[f]=e;v[c[c[a]+3]](a,d,f);b=f}UF.X=1;function VF(a){return k[a+1]}VF.X=1;function WF(a,d){c[a+3]=d}WF.X=1;function XF(a){return c[a+5]}XF.X=1;function YF(a,d){k[a+1]=d}YF.X=1;function ZF(a,d){c[a+4]=d}ZF.X=1;function $F(a,d){c[a+5]=d}$F.X=1;function aG(a){return c[a+4]}aG.X=1;function bG(a){return c[a+3]}bG.X=1;function cG(a,d){c[a+2]=d}cG.X=1;function dG(a){return c[a+2]}dG.X=1;function eG(a,d){k[a+8]=d}eG.X=1;function Voa(a){return a+4}Voa.X=1;function Woa(a){return a}Woa.X=1;function fG(a){return k[a+8]}fG.X=1;function gG(a,d,e,f){k[a]=k[d];k[a+1]=k[e];k[a+2]=k[f];k[a+3]=0}gG.X=1;function jc(a,d,e,f,g){k[a]=k[d];k[a+1]=k[e];k[a+2]=k[f];k[a+3]=k[g]}jc.X=1;function hG(a,d){return k[a+3]==k[d+3]?k[a+2]!=k[d+2]?0:k[a+1]!=k[d+1]?0:k[a]==k[d]:0}hG.X=1;function iG(a,d){k[a+3]=d}iG.X=1;function jG(a,d){k[a+1]=d}jG.X=1;function kG(a,d){k[a+2]=d}kG.X=1;function lG(a){return v[c[c[a]+4]](a)}lG.X=1;function mG(a,d,e,f){v[c[c[a]+18]](a,d,e,f)}mG.X=1;function nG(a,d){v[c[c[a]+10]](a,d)}nG.X=1;function Xoa(a,d,e,f,g,h,i){Tf(a,d,e,f,g,h,i)}Xoa.X=1;function oG(a){var d=b;b+=4;0==c[pG]<<24>>24&&Hb(pG);qG(d,a);c[rG]=c[d];k[rG]=k[d];c[rG+1]=c[d+1];k[rG+1]=k[d+1];c[rG+2]=c[d+2];k[rG+2]=k[d+2];c[rG+3]=c[d+3];k[rG+3]=k[d+3];b=d;return rG}oG.X=1;function qG(a,d){var e=b;b+=7;var f=e+4,g=e+5,h=e+6,i=d+7;c[a]=c[i];k[a]=k[i];c[a+1]=c[i+1];k[a+1]=k[i+1];c[a+2]=c[i+2];k[a+2]=k[i+2];c[a+3]=c[i+3];k[a+3]=k[i+3];k[f]=v[c[c[d]+11]](d);k[g]=v[c[c[d]+11]](d);k[h]=v[c[c[d]+11]](d);H(e,f,g,h);xn(a,e);b=e}qG.X=1;function Yoa(a){return Uf(a)}Yoa.X=1;function Zoa(a){return Ie(a)}Zoa.X=1;function $oa(a){return ND(a)}$oa.X=1;function sG(a,d,e){return v[c[c[a]+3]](a,d,e&1)}sG.X=1;function tG(a,d){return v[c[c[a]+2]](a,d)}tG.X=1;function uG(a){0!=(a|0)&&xe(a)}uG.X=1;function vG(){var a=xb(36);wG(a);return a}vG.X=1;function xG(a,d){var e=a+4;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}xG.X=1;function yG(a,d){c[a]=c[d];k[a]=k[d];c[a+1]=c[d+1];k[a+1]=k[d+1];c[a+2]=c[d+2];k[a+2]=k[d+2];c[a+3]=c[d+3];k[a+3]=k[d+3]}yG.X=1;function zG(a){0!=(a|0)&&xe(a)}zG.X=1;function apa(a,d){AG(a,d)}apa.X=1;function AG(a,d){BB(a,d);BB(a+1,d+1);BB(a+2,d+2);BB(a+3,d+3)}AG.X=1;function BG(a,d,e,f){var g=b;b+=3;var h=g+1,i=g+2;k[g]=d;k[h]=e;k[i]=f;gG(a,g,h,i);b=g}BG.X=1;function CG(a,d,e,f,g){var h=b;b+=4;var i=h+1,j=h+2,l=h+3;k[h]=d;k[i]=e;k[j]=f;k[l]=g;jc(a,h,i,j,l);b=h}CG.X=1;function bpa(a,d){DG(a,d)}bpa.X=1;function DG(a,d){RB(a,d);RB(a+1,d+1);RB(a+2,d+2);RB(a+3,d+3)}DG.X=1;function cpa(a,d){return hG(a,d)}cpa.X=1;function dpa(a){return k[a]}dpa.X=1;function EG(a){return k[a+1]}EG.X=1;function FG(a){return k[a+2]}FG.X=1;function epa(a,d){iG(a,d)}epa.X=1;function GG(a,d){c[a]=c[d];k[a]=k[d];c[a+1]=c[d+1];k[a+1]=k[d+1];c[a+2]=c[d+2];k[a+2]=k[d+2];c[a+3]=c[d+3];k[a+3]=k[d+3];return 0!=(a|0)}GG.X=1;function HG(a){return k[a+3]}HG.X=1;function IG(a){return k[a+1]}IG.X=1;function fpa(a){return k[a]}fpa.X=1;function JG(a){return k[a+2]}JG.X=1;function gpa(a,d){k[a]=d}gpa.X=1;function hpa(a,d){jG(a,d)}hpa.X=1;function ipa(a,d){kG(a,d)}ipa.X=1;function KG(){return xb(16)}KG.X=1;function LG(a,d,e){var f=b;b+=3;var g=f+1,h=f+2;k[f]=a;k[g]=d;k[h]=e;a=xb(16);jpa(a,f,g,h);b=f;return a}LG.X=1;function MG(a,d,e,f){var g=b;b+=4;var h=g+1,i=g+2,j=g+3;k[g]=a;k[h]=d;k[i]=e;k[j]=f;a=xb(16);NG(a,g,h,i,j);b=g;return a}MG.X=1;function OG(a,d,e){v[c[c[a]+8]](a,d,e)}OG.X=1;function kpa(a){return Ge(a)}kpa.X=1;function PG(a){var d=Se(56);QG(d,a);return d}PG.X=1;function He(a){return 31==(a|0)}He.X=1;function bf(a){return 7>(a|0)}bf.X=1;function yf(a){return 20>(a|0)}yf.X=1;function RG(a,d){k[a+9]=d}RG.X=1;function SG(a){return k[a+9]}SG.X=1;function lpa(a){return a+5}lpa.X=1;function mpa(a){return a+1}mpa.X=1;function npa(a){return c[a]}npa.X=1;function TG(a){return c[a+16]}TG.X=1;function UG(a,d){c[a+16]=d}UG.X=1;function opa(a,d){c[a]=d}opa.X=1;function VG(a){return c[a+13]}VG.X=1;function ppa(a){return a+5}ppa.X=1;function WG(a,d){c[a+4]=d}WG.X=1;function XG(a){return c[a+2]}XG.X=1;function YG(a){return c[a+4]}YG.X=1;function qpa(a){return a+9}qpa.X=1;function ZG(a,d){c[a+3]=d}ZG.X=1;function $G(a,d){c[a+1]=d}$G.X=1;function aH(a,d){var e=b;b+=4;0==c[bH]<<24>>24&&Hb(bH);v[c[c[a]+15]](e,a,d);c[cH]=c[e];k[cH]=k[e];c[cH+1]=c[e+1];k[cH+1]=k[e+1];c[cH+2]=c[e+2];k[cH+2]=k[e+2];c[cH+3]=c[e+3];k[cH+3]=k[e+3];b=e;return cH}aH.X=1;function rpa(a,d){Je(a,d)}rpa.X=1;function spa(a){return dF(a)}spa.X=1;function dH(a,d,e){return v[c[c[a]+13]](a,d,e)}dH.X=1;function eH(a){return v[c[c[a]+7]](a)}eH.X=1;function fH(a){return v[c[c[a]+19]](a)}fH.X=1;function tpa(a){return Ye(a)}tpa.X=1;function gH(a){return v[c[c[a]+21]](a)}gH.X=1;function upa(a,d,e,f){df(a,d,e,f)}upa.X=1;function hH(a){return v[c[c[a]+12]](a)}hH.X=1;function iH(a){return v[c[c[a]+9]](a)}iH.X=1;function vpa(a){return a+3}vpa.X=1;function jH(a,d){var e=b;b+=4;0==c[kH]<<24>>24&&Hb(kH);kf(e,a,d);c[lH]=c[e];k[lH]=k[e];c[lH+1]=c[e+1];k[lH+1]=k[e+1];c[lH+2]=c[e+2];k[lH+2]=k[e+2];c[lH+3]=c[e+3];k[lH+3]=k[e+3];b=e;return lH}jH.X=1;function mH(a,d){var e=b;b+=4;0==c[nH]<<24>>24&&Hb(nH);v[c[c[a]+16]](e,a,d);c[oH]=c[e];k[oH]=k[e];c[oH+1]=c[e+1];k[oH+1]=k[e+1];c[oH+2]=c[e+2];k[oH+2]=k[e+2];c[oH+3]=c[e+3];k[oH+3]=k[e+3];b=e;return oH}mH.X=1;function pH(a,d){v[c[c[a]+6]](a,d)}pH.X=1;function qH(a,d,e,f){v[c[c[a]+2]](a,d,e,f)}qH.X=1;function wpa(a){return Le(a)}wpa.X=1;function rH(a,d){var e=b;b+=4;0==c[sH]<<24>>24&&Hb(sH);tf(e,a,d);c[tH]=c[e];k[tH]=k[e];c[tH+1]=c[e+1];k[tH+1]=k[e+1];c[tH+2]=c[e+2];k[tH+2]=k[e+2];c[tH+3]=c[e+3];k[tH+3]=k[e+3];b=e;return tH}rH.X=1;function uH(a,d){return v[c[c[a]+5]](a,d)}uH.X=1;function xpa(a){return xf(a)}xpa.X=1;function ypa(a){return zf(a)}ypa.X=1;function zpa(a){return Me(a)}zpa.X=1;function Apa(a){return Bf(a)}Apa.X=1;function vH(a){return v[c[c[a]+11]](a)}vH.X=1;function wH(a,d,e){v[c[c[a]+20]](a,d,e)}wH.X=1;function Bpa(a){return a+7}Bpa.X=1;function Cpa(a){return Gf(a)}Cpa.X=1;function Dpa(a,d){Jf(a,d)}Dpa.X=1;function Epa(a){return Kf(a)}Epa.X=1;function Fpa(a){return Mf(a)}Fpa.X=1;function xH(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}xH.X=1;function yH(a,d,e,f){v[c[c[a]+17]](a,d,e,f)}yH.X=1;function Gpa(a){return a+7}Gpa.X=1;function zH(a,d,e){var f=b;b+=1;k[f]=e;v[c[c[a]+3]](a,d,f);b=f}zH.X=1;function AH(a){return v[c[c[a]+4]](a)}AH.X=1;function BH(a,d){v[c[c[a]+14]](a,d)}BH.X=1;function CH(a,d,e,f){v[c[c[a]+18]](a,d,e,f)}CH.X=1;function DH(a,d){v[c[c[a]+10]](a,d)}DH.X=1;function Hpa(a,d,e,f,g,h,i){Tf(a,d,e,f,g,h,i)}Hpa.X=1;function EH(a){var d=b;b+=4;0==c[FH]<<24>>24&&Hb(FH);qG(d,a);c[GH]=c[d];k[GH]=k[d];c[GH+1]=c[d+1];k[GH+1]=k[d+1];c[GH+2]=c[d+2];k[GH+2]=k[d+2];c[GH+3]=c[d+3];k[GH+3]=k[d+3];b=d;return GH}EH.X=1;function Ipa(a){return Uf(a)}Ipa.X=1;function Jpa(a){return Ie(a)}Jpa.X=1;function HH(a,d){var e=a+5;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}HH.X=1;function IH(a,d,e,f){v[c[c[a]+4]](a,d,e,f)}IH.X=1;function JH(a,d){var e=a+1;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}JH.X=1;function KH(a,d,e){v[c[c[a]+3]](a,d,e)}KH.X=1;function LH(a,d,e){v[c[c[a]+2]](a,d,e)}LH.X=1;function Kpa(a){return He(a)}Kpa.X=1;function Lpa(a){return bf(a)}Lpa.X=1;function Mpa(a){return yf(a)}Mpa.X=1;function Npa(a){return YG(a)}Npa.X=1;function Opa(a){return Cf(a)}Opa.X=1;function Cf(a){return Yf(a)?25==(a|0)^1:0}Cf.X=1;function MH(a,d){var e=a+5;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}MH.X=1;function NH(a,d,e,f,g){var h=OH(64);PH(h,a,d,e,f,g);return h}NH.X=1;function OH(a){return Ue(a,16)}OH.X=1;function QH(a){var d=Se(56);RH(d,a);return d}QH.X=1;function Lf(a){return 32==(a|0)}Lf.X=1;function Af(a){return 28==(a|0)}Af.X=1;function Yf(a){return 20<(a|0)?30>(a|0):0}Yf.X=1;function Hf(a){return 17==(a|0)?1:18==(a|0)}Hf.X=1;function SH(a){return c[a+4]}SH.X=1;function TH(a,d){c[a+2]=d}TH.X=1;function UH(a,d){c[a+13]=d}UH.X=1;function VH(a){return c[a+3]}VH.X=1;function WH(a){return c[a+1]}WH.X=1;function XH(a,d){c[a+1]=d}XH.X=1;function YH(a,d){c[a+2]=d}YH.X=1;function ZH(a){return c[a+2]}ZH.X=1;function $H(a){return c[a+1]}$H.X=1;function aI(a){return c[a+31]}aI.X=1;function bI(a,d){c[a+31]=d}bI.X=1;function cI(a){return c[a+1]}cI.X=1;function dI(a){return c[a+34]}dI.X=1;function eI(a){return c[a+35]}eI.X=1;function fI(a,d){c[a+1]=d}fI.X=1;function Ppa(a){return Lf(a)}Ppa.X=1;function gI(a,d){var e=a+9;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}gI.X=1;function hI(a){0!=(a|0)&&yh(a)}hI.X=1;function Qpa(a){return Af(a)}Qpa.X=1;function Rpa(a){return Yf(a)}Rpa.X=1;function Spa(a){return Hf(a)}Spa.X=1;function iI(){var a=xb(8);Tpa(a);return a}iI.X=1;function jI(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}jI.X=1;function kI(a,d,e,f,g,h,i,j){return v[c[c[a]+3]](a,d,e,f,g,h,i,j)}kI.X=1;function lI(a,d){return v[c[c[a]+2]](a,d)}lI.X=1;function mI(a){v[c[c[a]+5]](a)}mI.X=1;function nI(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}nI.X=1;function oI(){var a=xb(128);pI(a);return a}oI.X=1;function qI(a,d,e){v[c[c[a]+2]](a,d,e)}qI.X=1;function Upa(a){return rI(a)}Upa.X=1;function Vpa(a){return aI(a)}Vpa.X=1;function Wpa(a,d){bI(a,d)}Wpa.X=1;function sI(a,d,e,f){v[c[c[a]+4]](a,d,e,f)}sI.X=1;function tI(a,d,e,f,g,h,i,j,l,m,n){return v[c[c[a]+3]](a,d,e,f,g,h,i,j,l,m,n)}tI.X=1;function Xpa(a,d){return uI(a,d)}Xpa.X=1;function vI(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}vI.X=1;function Ypa(a){return cI(a)}Ypa.X=1;function Zpa(a){return dI(a)}Zpa.X=1;function wI(a,d,e,f){v[c[c[a]+4]](a,d,e,f)}wI.X=1;function $pa(a){return eI(a)}$pa.X=1;function xI(){var a=xb(160);yI(a);return a}xI.X=1;function zI(a,d){var e=xb(160);AI(e,a,d);return e}zI.X=1;function BI(a,d,e){v[c[c[a]+3]](a,d,e)}BI.X=1;function CI(a,d,e){v[c[c[a]+2]](a,d,e)}CI.X=1;function aqa(a){DI(a)}aqa.X=1;function DI(a){if(0!=(Xj(c[a+1])|0)){var d=c[a+1];($j(c[a+1])|0)!=(c[a+34]|0)&1?sk(d,a+18,a+2):sk(d,a+2,a+18)}}DI.X=1;function bqa(a,d){fI(a,d)}bqa.X=1;function EI(a,d,e){v[c[c[a]+8]](a,d,e)}EI.X=1;function cqa(a){return Ge(a)}cqa.X=1;function FI(a,d){var e=b;b+=4;0==c[GI]<<24>>24&&Hb(GI);v[c[c[a]+15]](e,a,d);c[HI]=c[e];k[HI]=k[e];c[HI+1]=c[e+1];k[HI+1]=k[e+1];c[HI+2]=c[e+2];k[HI+2]=k[e+2];c[HI+3]=c[e+3];k[HI+3]=k[e+3];b=e;return HI}FI.X=1;function dqa(a,d){Je(a,d)}dqa.X=1;function eqa(a){return Le(a)}eqa.X=1;function II(a,d,e){return v[c[c[a]+13]](a,d,e)}II.X=1;function JI(a){return v[c[c[a]+19]](a)}JI.X=1;function fqa(a){return Ye(a)}fqa.X=1;function gqa(a,d){return KI(a,d)}gqa.X=1;function KI(a,d){return k[LI(a+27,d)]}KI.X=1;function MI(a,d){var e=b;b+=4;0==c[NI]<<24>>24&&Hb(NI);tf(e,a,d);c[OI]=c[e];k[OI]=k[e];c[OI+1]=c[e+1];k[OI+1]=k[e+1];c[OI+2]=c[e+2];k[OI+2]=k[e+2];c[OI+3]=c[e+3];k[OI+3]=k[e+3];b=e;return OI}MI.X=1;function hqa(a,d,e,f){df(a,d,e,f)}hqa.X=1;function PI(a){return v[c[c[a]+12]](a)}PI.X=1;function iqa(a){return QI(a)}iqa.X=1;function QI(a){return th(a+22)}QI.X=1;function RI(a){return v[c[c[a]+9]](a)}RI.X=1;function jqa(a){return a+3}jqa.X=1;function SI(a,d){var e=b;b+=4;0==c[TI]<<24>>24&&Hb(TI);kf(e,a,d);c[UI]=c[e];k[UI]=k[e];c[UI+1]=c[e+1];k[UI+1]=k[e+1];c[UI+2]=c[e+2];k[UI+2]=k[e+2];c[UI+3]=c[e+3];k[UI+3]=k[e+3];b=e;return UI}SI.X=1;function VI(a,d,e){var f=Se(128);WI(f,a,d,e);return f}VI.X=1;function XI(a,d){c[a+26]=d&1}XI.X=1;function kqa(a,d){Jf(a,d)}kqa.X=1;function YI(a,d){v[c[c[a]+6]](a,d)}YI.X=1;function ZI(a,d,e,f){v[c[c[a]+2]](a,d,e,f)}ZI.X=1;function lqa(a,d){return $I(a,d)}lqa.X=1;function $I(a,d){return jg(a+22,d)}$I.X=1;function aJ(a,d){return v[c[c[a]+5]](a,d)}aJ.X=1;function mqa(a){return xf(a)}mqa.X=1;function nqa(a){return zf(a)}nqa.X=1;function oqa(a){return Me(a)}oqa.X=1;function pqa(a){return Bf(a)}pqa.X=1;function bJ(a){return v[c[c[a]+11]](a)}bJ.X=1;function qqa(a){cJ(a)}qqa.X=1;function dJ(a,d,e){v[c[c[a]+20]](a,d,e)}dJ.X=1;function eJ(a,d){v[c[c[a]+10]](a,d)}eJ.X=1;function rqa(a){return Gf(a)}rqa.X=1;function fJ(a){return v[c[c[a]+7]](a)}fJ.X=1;function gJ(a,d){var e=b;b+=4;0==c[hJ]<<24>>24&&Hb(hJ);v[c[c[a]+16]](e,a,d);c[iJ]=c[e];k[iJ]=k[e];c[iJ+1]=c[e+1];k[iJ+1]=k[e+1];c[iJ+2]=c[e+2];k[iJ+2]=k[e+2];c[iJ+3]=c[e+3];k[iJ+3]=k[e+3];b=e;return iJ}gJ.X=1;function sqa(a){return Kf(a)}sqa.X=1;function tqa(a){return Mf(a)}tqa.X=1;function jJ(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}jJ.X=1;function kJ(a,d,e,f){v[c[c[a]+17]](a,d,e,f)}kJ.X=1;function uqa(a){return a+7}uqa.X=1;function lJ(a,d,e){var f=b;b+=1;k[f]=e;v[c[c[a]+3]](a,d,f);b=f}lJ.X=1;function mJ(a){return v[c[c[a]+4]](a)}mJ.X=1;function nJ(a,d){v[c[c[a]+14]](a,d)}nJ.X=1;function oJ(a,d,e,f){v[c[c[a]+18]](a,d,e,f)}oJ.X=1;function vqa(a,d,e,f,g,h,i){Tf(a,d,e,f,g,h,i)}vqa.X=1;function wqa(a){return Uf(a)}wqa.X=1;function xqa(a){return Ie(a)}xqa.X=1;function pJ(a,d,e){v[c[c[a]+8]](a,d,e)}pJ.X=1;function yqa(a,d){Je(a,d)}yqa.X=1;function qJ(a,d,e){return v[c[c[a]+13]](a,d,e)}qJ.X=1;function rJ(a){return v[c[c[a]+7]](a)}rJ.X=1;function sJ(a,d,e,f,g,h,i){var h=h&1,i=i&1,j=xb(124);tJ(j,a,d,e,f,g,h&1,i&1);return j}sJ.X=1;function uJ(a,d,e,f,g,h,i,j,l){var l=l&1,m=xb(124);vJ(m,a,d,e,f,g,h,i,j,l&1);return m}uJ.X=1;function wJ(a,d,e,f){v[c[c[a]+15]](a,d,e,f)}wJ.X=1;function xJ(a){return v[c[c[a]+12]](a)}xJ.X=1;function yJ(a){return v[c[c[a]+9]](a)}yJ.X=1;function zqa(a){return Ge(a)}zqa.X=1;function Aqa(a){return Ye(a)}Aqa.X=1;function zJ(a,d){v[c[c[a]+6]](a,d)}zJ.X=1;function AJ(a,d,e,f){v[c[c[a]+2]](a,d,e,f)}AJ.X=1;function BJ(a){XI(a,1)}BJ.X=1;function CJ(a,d){XI(a,d&1)}CJ.X=1;function DJ(a,d){return v[c[c[a]+5]](a,d)}DJ.X=1;function Bqa(a){return xf(a)}Bqa.X=1;function Cqa(a){return zf(a)}Cqa.X=1;function Dqa(a){return Me(a)}Dqa.X=1;function Eqa(a){return Bf(a)}Eqa.X=1;function EJ(a){return v[c[c[a]+11]](a)}EJ.X=1;function FJ(a,d){v[c[c[a]+10]](a,d)}FJ.X=1;function Fqa(a){return Gf(a)}Fqa.X=1;function Gqa(a){return Kf(a)}Gqa.X=1;function GJ(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}GJ.X=1;function Hqa(a,d,e,f,g,h,i){Tf(a,d,e,f,g,h,i)}Hqa.X=1;function Iqa(a){return Uf(a)}Iqa.X=1;function HJ(a){return v[c[c[a]+4]](a)}HJ.X=1;function IJ(a,d){v[c[c[a]+14]](a,d)}IJ.X=1;function JJ(a,d,e){var f=b;b+=1;k[f]=e;v[c[c[a]+3]](a,d,f);b=f}JJ.X=1;function Jqa(a){return Ie(a)}Jqa.X=1;function KJ(a,d,e){v[c[c[a]+8]](a,d,e)}KJ.X=1;function Kqa(a){return Ge(a)}Kqa.X=1;function LJ(a,d){var e=b;b+=4;0==c[MJ]<<24>>24&&Hb(MJ);v[c[c[a]+15]](e,a,d);c[NJ]=c[e];k[NJ]=k[e];c[NJ+1]=c[e+1];k[NJ+1]=k[e+1];c[NJ+2]=c[e+2];k[NJ+2]=k[e+2];c[NJ+3]=c[e+3];k[NJ+3]=k[e+3];b=e;return NJ}LJ.X=1;function Lqa(a,d){Je(a,d)}Lqa.X=1;function Mqa(a){return Le(a)}Mqa.X=1;function OJ(a,d,e){return v[c[c[a]+13]](a,d,e)}OJ.X=1;function PJ(a){return v[c[c[a]+7]](a)}PJ.X=1;function QJ(a){return v[c[c[a]+19]](a)}QJ.X=1;function Nqa(a){return Ye(a)}Nqa.X=1;function RJ(a,d){var e=b;b+=4;0==c[SJ]<<24>>24&&Hb(SJ);tf(e,a,d);c[TJ]=c[e];k[TJ]=k[e];c[TJ+1]=c[e+1];k[TJ+1]=k[e+1];c[TJ+2]=c[e+2];k[TJ+2]=k[e+2];c[TJ+3]=c[e+3];k[TJ+3]=k[e+3];b=e;return TJ}RJ.X=1;function Oqa(a,d,e,f){df(a,d,e,f)}Oqa.X=1;function UJ(a){return v[c[c[a]+12]](a)}UJ.X=1;function VJ(a){return v[c[c[a]+9]](a)}VJ.X=1;function Pqa(a){return a+3}Pqa.X=1;function WJ(a,d){var e=b;b+=4;0==c[XJ]<<24>>24&&Hb(XJ);kf(e,a,d);c[YJ]=c[e];k[YJ]=k[e];c[YJ+1]=c[e+1];k[YJ+1]=k[e+1];c[YJ+2]=c[e+2];k[YJ+2]=k[e+2];c[YJ+3]=c[e+3];k[YJ+3]=k[e+3];b=e;return YJ}WJ.X=1;function Qqa(a,d){Jf(a,d)}Qqa.X=1;function ZJ(a,d){v[c[c[a]+6]](a,d)}ZJ.X=1;function $J(a,d,e,f){v[c[c[a]+2]](a,d,e,f)}$J.X=1;function aK(a,d){return v[c[c[a]+5]](a,d)}aK.X=1;function Rqa(a){return xf(a)}Rqa.X=1;function Sqa(a){return zf(a)}Sqa.X=1;function Tqa(a){return Me(a)}Tqa.X=1;function Uqa(a){return Bf(a)}Uqa.X=1;function bK(a){return v[c[c[a]+11]](a)}bK.X=1;function Vqa(a){cJ(a)}Vqa.X=1;function cK(a,d,e){v[c[c[a]+20]](a,d,e)}cK.X=1;function dK(a,d){v[c[c[a]+10]](a,d)}dK.X=1;function Wqa(a){return Gf(a)}Wqa.X=1;function eK(a,d){var e=b;b+=4;0==c[fK]<<24>>24&&Hb(fK);v[c[c[a]+16]](e,a,d);c[gK]=c[e];k[gK]=k[e];c[gK+1]=c[e+1];k[gK+1]=k[e+1];c[gK+2]=c[e+2];k[gK+2]=k[e+2];c[gK+3]=c[e+3];k[gK+3]=k[e+3];b=e;return gK}eK.X=1;function Xqa(a){return Kf(a)}Xqa.X=1;function Yqa(a){return Mf(a)}Yqa.X=1;function hK(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}hK.X=1;function iK(a,d,e,f){v[c[c[a]+17]](a,d,e,f)}iK.X=1;function Zqa(a){return a+7}Zqa.X=1;function jK(a,d,e){var f=b;b+=1;k[f]=e;v[c[c[a]+3]](a,d,f);b=f}jK.X=1;function kK(a){return v[c[c[a]+4]](a)}kK.X=1;function lK(a,d){v[c[c[a]+14]](a,d)}lK.X=1;function mK(a,d,e,f){v[c[c[a]+18]](a,d,e,f)}mK.X=1;function $qa(a,d,e,f,g,h,i){Tf(a,d,e,f,g,h,i)}$qa.X=1;function ara(a){return Uf(a)}ara.X=1;function bra(a){return Ie(a)}bra.X=1;function nK(a,d,e){v[c[c[a]+8]](a,d,e)}nK.X=1;function oK(a,d){var e=b;b+=4;0==c[pK]<<24>>24&&Hb(pK);v[c[c[a]+15]](e,a,d);c[qK]=c[e];k[qK]=k[e];c[qK+1]=c[e+1];k[qK+1]=k[e+1];c[qK+2]=c[e+2];k[qK+2]=k[e+2];c[qK+3]=c[e+3];k[qK+3]=k[e+3];b=e;return qK}oK.X=1;function cra(a,d){Je(a,d)}cra.X=1;function rK(a,d,e){return v[c[c[a]+13]](a,d,e)}rK.X=1;function sK(a){return v[c[c[a]+7]](a)}sK.X=1;function tK(a){return v[c[c[a]+19]](a)}tK.X=1;function dra(a){return Ye(a)}dra.X=1;function uK(a,d){var e=b;b+=4;0==c[vK]<<24>>24&&Hb(vK);tf(e,a,d);c[wK]=c[e];k[wK]=k[e];c[wK+1]=c[e+1];k[wK+1]=k[e+1];c[wK+2]=c[e+2];k[wK+2]=k[e+2];c[wK+3]=c[e+3];k[wK+3]=k[e+3];b=e;return wK}uK.X=1;function era(a,d,e,f){df(a,d,e,f)}era.X=1;function xK(a){return v[c[c[a]+12]](a)}xK.X=1;function yK(a){return v[c[c[a]+9]](a)}yK.X=1;function fra(a){return Ge(a)}fra.X=1;function zK(a,d){var e=b;b+=4;0==c[AK]<<24>>24&&Hb(AK);kf(e,a,d);c[BK]=c[e];k[BK]=k[e];c[BK+1]=c[e+1];k[BK+1]=k[e+1];c[BK+2]=c[e+2];k[BK+2]=k[e+2];c[BK+3]=c[e+3];k[BK+3]=k[e+3];b=e;return BK}zK.X=1;function CK(a,d){v[c[c[a]+6]](a,d)}CK.X=1;function DK(a,d,e,f){v[c[c[a]+2]](a,d,e,f)}DK.X=1;function EK(a,d){return v[c[c[a]+5]](a,d)}EK.X=1;function gra(a){return xf(a)}gra.X=1;function hra(a){return zf(a)}hra.X=1;function ira(a){return Me(a)}ira.X=1;function jra(a){return Bf(a)}jra.X=1;function FK(a){return v[c[c[a]+11]](a)}FK.X=1;function GK(a,d,e){v[c[c[a]+20]](a,d,e)}GK.X=1;function HK(a,d){v[c[c[a]+10]](a,d)}HK.X=1;function kra(a){return Gf(a)}kra.X=1;function IK(a,d){var e=b;b+=4;0==c[JK]<<24>>24&&Hb(JK);v[c[c[a]+16]](e,a,d);c[KK]=c[e];k[KK]=k[e];c[KK+1]=c[e+1];k[KK+1]=k[e+1];c[KK+2]=c[e+2];k[KK+2]=k[e+2];c[KK+3]=c[e+3];k[KK+3]=k[e+3];b=e;return KK}IK.X=1;function lra(a){return Kf(a)}lra.X=1;function mra(a){return Mf(a)}mra.X=1;function LK(a,d,e,f){v[c[c[a]+17]](a,d,e,f)}LK.X=1;function nra(a,d,e,f,g,h,i){Tf(a,d,e,f,g,h,i)}nra.X=1;function MK(a,d,e){var f=b;b+=1;k[f]=e;v[c[c[a]+3]](a,d,f);b=f}MK.X=1;function NK(a){return v[c[c[a]+4]](a)}NK.X=1;function OK(a,d){v[c[c[a]+14]](a,d)}OK.X=1;function PK(a,d,e,f){v[c[c[a]+18]](a,d,e,f)}PK.X=1;function ora(a){return Uf(a)}ora.X=1;function pra(a){return Ie(a)}pra.X=1;function QK(a,d,e,f){v[c[c[a]+2]](a,d,e,f,0)}QK.X=1;function RK(a,d){c[a+5]=d}RK.X=1;function SK(a,d){c[a+2]=d}SK.X=1;function TK(a){return c[a+5]}TK.X=1;function UK(a){return c[a+1]}UK.X=1;function VK(a,d){c[a+7]=d}VK.X=1;function WK(a){return c[a+6]}WK.X=1;function XK(a,d){c[a+6]=d}XK.X=1;function YK(a){return c[a+4]}YK.X=1;function ZK(a,d){c[a+3]=d}ZK.X=1;function $K(a){return c[a+7]}$K.X=1;function qra(a,d){c[a]=d}qra.X=1;function aL(a){return c[a+2]}aL.X=1;function rra(a){return c[a]}rra.X=1;function bL(a,d){c[a+4]=d}bL.X=1;function cL(a){return c[a+3]}cL.X=1;function dL(a,d){c[a+1]=d}dL.X=1;function sra(a){return a+8}sra.X=1;function tra(a){return a}tra.X=1;function eL(a){return k[a+20]}eL.X=1;function fL(a,d){k[a+20]=d}fL.X=1;function gL(a){return k[a+20]}gL.X=1;function ura(a){return a+12}ura.X=1;function vra(a){return a+4}vra.X=1;function wra(a){return a+16}wra.X=1;function hL(a,d,e,f,g){v[c[c[a]+2]](a,d,e,f,g&1)}hL.X=1;function iL(a){0!=(a|0)&&xe(a)}iL.X=1;function jL(){var a=xb(32);Hj(a);return a}jL.X=1;function kL(a,d){return v[c[c[a]+14]](a,d)}kL.X=1;function lL(a,d){return v[c[c[a]+10]](a,d)}lL.X=1;function mL(a){return v[c[c[a]+9]](a)}mL.X=1;function nL(a,d){v[c[c[a]+5]](a,d)}nL.X=1;function oL(a,d){v[c[c[a]+15]](a,d)}oL.X=1;function pL(a){return v[c[c[a]+11]](a)}pL.X=1;function qL(a,d,e){return v[c[c[a]+2]](a,d,e,0)}qL.X=1;function rL(a,d,e,f){return v[c[c[a]+2]](a,d,e,f)}rL.X=1;function sL(a,d,e){return v[c[c[a]+7]](a,d,e)}sL.X=1;function tL(a,d,e){return v[c[c[a]+3]](a,d,e)}tL.X=1;function uL(a,d,e,f){v[c[c[a]+8]](a,d,e,f)}uL.X=1;function vL(a){return v[c[c[a]+12]](a)}vL.X=1;function wL(a,d,e){return v[c[c[a]+6]](a,d,e)}wL.X=1;function xL(a,d){v[c[c[a]+4]](a,d)}xL.X=1;function yL(a){0!=(a|0)&&xe(a)}yL.X=1;function zL(a,d){c[a]=c[d];k[a]=k[d];c[a+1]=c[d+1];k[a+1]=k[d+1];c[a+2]=c[d+2];k[a+2]=k[d+2];c[a+3]=c[d+3];k[a+3]=k[d+3]}zL.X=1;function AL(){return xb(84)}AL.X=1;function BL(a,d,e,f){var g=xb(84);xra(g,a,d,e,f);return g}BL.X=1;function CL(a,d,e,f,g){var h=xb(84);DL(h,a,d,e,f,g);return h}CL.X=1;function EL(a,d,e,f,g,h){var i=xb(84);yra(i,a,d,e,f,g,h);return i}EL.X=1;function FL(a,d,e,f,g,h,i,j,l){var m=xb(84);GL(m,a,d,e,f,g,h,i,j,l);return m}FL.X=1;function HL(a,d){var e=a+4;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}HL.X=1;function zra(a){return eL(a)}zra.X=1;function Ara(a,d,e,f,g){return IL(a,d,e,f,g)}Ara.X=1;function IL(a,d,e,f,g){var h=b;b+=12;var i=h+4,j=h+8;N(h,d,f);ig(i,e,a+4);ig(j,g,a+8);JL(h,a);xn(i,j);xn(i,h);a=k[i]+k[i+1]+k[i+2]+1.1920928955078125e-7;b=h;return a}IL.X=1;function KL(a,d){var e=a+8;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}KL.X=1;function Bra(a,d,e){return LL(a,d,e)}Bra.X=1;function LL(a,d,e){return e*J(a,d)+J(a+12,d+4)}LL.X=1;function Cra(a,d,e,f){return ML(a,d,e,f)}Cra.X=1;function ML(a,d,e,f){var g=b;b+=34;var h=g+1,i=g+2,j=g+6,l=g+10,m=g+14,n=g+18,p=g+22,r=g+26,s=g+30;k[g]=e;k[h]=f;ig(i,a,d);ig(j,a+12,d+4);ig(l,a+16,d+8);Q(m,i,g);Q(n,i,h);wn(s,j,l);wn(r,s,m);wn(p,r,n);a=k[p]+k[p+1]+k[p+2];b=g;return a}ML.X=1;function NL(a,d){var e=a+16;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}NL.X=1;function OL(a,d){var e=a+12;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}OL.X=1;function PL(a,d,e){return v[c[c[a]+2]](a,d,e)}PL.X=1;function QL(a,d,e,f){return v[c[c[a]+3]](a,d,e,f)}QL.X=1;function RL(a,d,e){v[c[c[a]+4]](a,d,e)}RL.X=1;function SL(a){a=c[a];a+=a<<15^-1;a^=a>>10;a=(a<<3)+a;a^=a>>6;a+=a<<11^-1;return a^a>>16}SL.X=1;function TL(a){return c[a+1]&1}TL.X=1;function UL(a,d){c[a+1]=d&1}UL.X=1;function VL(a,d){var e,f;0==(c[a+(d+46)]|0)?0!=(c[a+(d+27)]&1|0)?e=5:(f=0,e=6):e=5;5==e&&(f=1);return f}VL.X=1;function Dra(a){return a+38}Dra.X=1;function Era(a){return a+42}Era.X=1;function Fra(a){return a+19}Fra.X=1;function Gra(a){return a+23}Gra.X=1;function Hra(a){return a}Hra.X=1;function WL(a,d){k[a+14]=d}WL.X=1;function XL(a,d){k[a+12]=d}XL.X=1;function YL(a){return k[a+14]}YL.X=1;function Ira(a){return a+30}Ira.X=1;function Jra(a){return a+34}Jra.X=1;function ZL(a,d){k[a+13]=d}ZL.X=1;function Kra(a){return a+4}Kra.X=1;function $L(a){return k[a+13]}$L.X=1;function Lra(a){return a+15}Lra.X=1;function aM(a){0!=(a|0)&&xe(a)}aM.X=1;function Mra(a,d){c[a]=d}Mra.X=1;function bM(a){var d=xb(4);c[d]=a;return d}bM.X=1;function Nra(a,d){return cM(a,d)}Nra.X=1;function cM(a,d){return(c[a]|0)==(c[d]|0)}cM.X=1;function Ora(a){return c[a]}Ora.X=1;function Pra(a){return SL(a)}Pra.X=1;function dM(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}dM.X=1;function eM(a,d,e,f){return v[c[c[a]+2]](a,d,e,f)}eM.X=1;function fM(){var a=xb(8);gM(a);return a}fM.X=1;function Qra(a,d){Tk(a,d)}Qra.X=1;function hM(a,d){v[c[c[a]+11]](a,d)}hM.X=1;function Rra(a){return Sk(a)}Rra.X=1;function Sra(a){return a+7}Sra.X=1;function iM(a){return v[c[c[a]+4]](a)}iM.X=1;function jM(a){v[c[c[a]+10]](a)}jM.X=1;function Tra(a){return a+1}Tra.X=1;function kM(a,d,e,f){v[c[c[a]+6]](a,d,e,f)}kM.X=1;function lM(a,d,e,f){v[c[c[a]+7]](a,d,e,f)}lM.X=1;function mM(a,d){v[c[c[a]+8]](a,d,1,-1)}mM.X=1;function nM(a,d,e){v[c[c[a]+8]](a,d,e,-1)}nM.X=1;function oM(a,d,e,f){v[c[c[a]+8]](a,d,e,f)}oM.X=1;function pM(a,d,e){var f=xb(88);qM(f,a,d,e);return f}pM.X=1;function Ura(a,d,e){Jl(a,d,e)}Ura.X=1;function Vra(a){return Vk(a)}Vra.X=1;function rM(a){v[c[c[a]+2]](a)}rM.X=1;function sM(a,d){v[c[c[a]+3]](a,d)}sM.X=1;function tM(a){v[c[c[a]+5]](a)}tM.X=1;function uM(a,d,e,f,g){Rl(a,d,e,f,g,0)}uM.X=1;function Wra(a,d,e,f,g,h){Rl(a,d,e,f,g,h)}Wra.X=1;function Xra(a){return Sl(a)}Xra.X=1;function Yra(a,d,e,f){Xl(a,d,e,f)}Yra.X=1;function Zra(a){return am(a)}Zra.X=1;function $ra(a,d,e,f,g,h){mm(a,d,e,f,g,h)}$ra.X=1;function vM(a,d){bm(a,d&1)}vM.X=1;function wM(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}wM.X=1;function asa(a,d,e,f,g,h,i,j){Dm(a,d,e,f,g,h,i,j)}asa.X=1;function bsa(a,d){ym(a,d)}bsa.X=1;function csa(a){return Am(a)}csa.X=1;function xM(a,d){v[c[c[a]+9]](a,d)}xM.X=1;function yM(a,d){var e=a+38;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}yM.X=1;function dsa(a,d){return VL(a,d)}dsa.X=1;function zM(a,d){var e=a+19;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}zM.X=1;function AM(a,d){var e=a+23;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}AM.X=1;function BM(a,d){var e=a+34;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}BM.X=1;function esa(a,d,e){return CM(a,d,e)}esa.X=1;function DM(a,d){var e=a+42;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}DM.X=1;function EM(a,d){var e=a+8;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}EM.X=1;function FM(){var a=xb(188);GM(a);return a}FM.X=1;function HM(a){var d=xb(188);fsa(d,a);return d}HM.X=1;function IM(a,d){var e=a+4;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}IM.X=1;function JM(a){0!=(a|0)&&xe(a)}JM.X=1;function KM(a,d){var e=a+15;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}KM.X=1;function LM(a,d){var e=a+30;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}LM.X=1;function gsa(a,d){return MM(a,d)}gsa.X=1;function hsa(a){return a+8}hsa.X=1;function NM(a){return k[a+12]}NM.X=1;function OM(a){$VOID_IS_8=0;a=c[a];a+=a<<15^-1;a^=a>>10;a=(a<<3)+a;a^=a>>6;a+=a<<11^-1;return a^a>>16}OM.X=1;function MM(a,d){return k[a+4+d]>=k[a+d]}MM.X=1;function PM(a,d){c[a]=c[d];k[a]=k[d];c[a+1]=c[d+1];k[a+1]=k[d+1];c[a+2]=c[d+2];k[a+2]=k[d+2];c[a+3]=c[d+3];k[a+3]=k[d+3]}PM.X=1;function isa(a,d,e,f,g,h,i,j,l,m){return QM(a,d,e,f,g,h,i,j,l,m)}isa.X=1;function RM(a,d,e,f){v[c[c[a]+2]](a,d,e,f)}RM.X=1;function SM(a,d,e){v[c[c[a]+8]](a,d,e)}SM.X=1;function jsa(a){return Ge(a)}jsa.X=1;function TM(a,d){var e=b;b+=4;0==c[UM]<<24>>24&&Hb(UM);v[c[c[a]+15]](e,a,d);c[VM]=c[e];k[VM]=k[e];c[VM+1]=c[e+1];k[VM+1]=k[e+1];c[VM+2]=c[e+2];k[VM+2]=k[e+2];c[VM+3]=c[e+3];k[VM+3]=k[e+3];b=e;return VM}TM.X=1;function ksa(a,d){Je(a,d)}ksa.X=1;function lsa(a){return Le(a)}lsa.X=1;function WM(a,d,e){return v[c[c[a]+13]](a,d,e)}WM.X=1;function XM(a){return v[c[c[a]+7]](a)}XM.X=1;function YM(a){return v[c[c[a]+19]](a)}YM.X=1;function msa(a){return Ye(a)}msa.X=1;function ZM(a,d){var e=b;b+=4;0==c[$M]<<24>>24&&Hb($M);tf(e,a,d);c[aN]=c[e];k[aN]=k[e];c[aN+1]=c[e+1];k[aN+1]=k[e+1];c[aN+2]=c[e+2];k[aN+2]=k[e+2];c[aN+3]=c[e+3];k[aN+3]=k[e+3];b=e;return aN}ZM.X=1;function nsa(a,d,e,f){df(a,d,e,f)}nsa.X=1;function bN(a){return v[c[c[a]+12]](a)}bN.X=1;function cN(a){return v[c[c[a]+9]](a)}cN.X=1;function osa(a){return a+3}osa.X=1;function dN(a,d){var e=b;b+=4;0==c[eN]<<24>>24&&Hb(eN);kf(e,a,d);c[fN]=c[e];k[fN]=k[e];c[fN+1]=c[e+1];k[fN+1]=k[e+1];c[fN+2]=c[e+2];k[fN+2]=k[e+2];c[fN+3]=c[e+3];k[fN+3]=k[e+3];b=e;return fN}dN.X=1;function psa(a,d){Jf(a,d)}psa.X=1;function gN(a,d){v[c[c[a]+6]](a,d)}gN.X=1;function hN(a,d,e,f){v[c[c[a]+2]](a,d,e,f)}hN.X=1;function iN(a,d){return v[c[c[a]+5]](a,d)}iN.X=1;function qsa(a){return xf(a)}qsa.X=1;function rsa(a){return zf(a)}rsa.X=1;function ssa(a){return Me(a)}ssa.X=1;function tsa(a){return Bf(a)}tsa.X=1;function jN(a){return v[c[c[a]+11]](a)}jN.X=1;function kN(a,d,e){v[c[c[a]+20]](a,d,e)}kN.X=1;function lN(a,d){v[c[c[a]+10]](a,d)}lN.X=1;function usa(a){return Gf(a)}usa.X=1;function mN(a,d){var e=b;b+=4;0==c[nN]<<24>>24&&Hb(nN);v[c[c[a]+16]](e,a,d);c[oN]=c[e];k[oN]=k[e];c[oN+1]=c[e+1];k[oN+1]=k[e+1];c[oN+2]=c[e+2];k[oN+2]=k[e+2];c[oN+3]=c[e+3];k[oN+3]=k[e+3];b=e;return oN}mN.X=1;function vsa(a){return Kf(a)}vsa.X=1;function wsa(a){return Mf(a)}wsa.X=1;function pN(a,d,e,f){v[c[c[a]+17]](a,d,e,f)}pN.X=1;function xsa(a){return a+7}xsa.X=1;function qN(a,d,e){var f=b;b+=1;k[f]=e;v[c[c[a]+3]](a,d,f);b=f}qN.X=1;function rN(a){return v[c[c[a]+4]](a)}rN.X=1;function sN(a,d){v[c[c[a]+14]](a,d)}sN.X=1;function tN(a,d,e,f){v[c[c[a]+18]](a,d,e,f)}tN.X=1;function ysa(a,d,e,f,g,h,i){Tf(a,d,e,f,g,h,i)}ysa.X=1;function zsa(a){return Uf(a)}zsa.X=1;function Asa(a){return Ie(a)}Asa.X=1;function uN(a){0!=(a|0)&&xe(a)}uN.X=1;function Bsa(a,d){return vN(a,d)}Bsa.X=1;function vN(a,d){return(c[a]|0)==(c[d]|0)}vN.X=1;function Csa(a){return OM(a)}Csa.X=1;function wN(a){var d=xb(8);c[d]=a;return d}wN.X=1;function Dsa(a){return c[a]}Dsa.X=1;function xN(a,d){return v[c[c[a]+2]](a,d)}xN.X=1;function yN(a,d,e){v[c[c[a]+8]](a,d,e)}yN.X=1;function Esa(a,d){Je(a,d)}Esa.X=1;function zN(a,d,e){return v[c[c[a]+13]](a,d,e)}zN.X=1;function AN(a){return v[c[c[a]+7]](a)}AN.X=1;function BN(a,d,e,f){v[c[c[a]+15]](a,d,e,f)}BN.X=1;function CN(a){return v[c[c[a]+12]](a)}CN.X=1;function DN(a){return v[c[c[a]+9]](a)}DN.X=1;function Fsa(a){return Ge(a)}Fsa.X=1;function Gsa(a){return Ye(a)}Gsa.X=1;function Hsa(a){return a+12}Hsa.X=1;function EN(a,d){v[c[c[a]+6]](a,d)}EN.X=1;function FN(a,d,e,f){v[c[c[a]+2]](a,d,e,f)}FN.X=1;function GN(a,d){return v[c[c[a]+5]](a,d)}GN.X=1;function Isa(a){return xf(a)}Isa.X=1;function Jsa(a){return zf(a)}Jsa.X=1;function Ksa(a){return Me(a)}Ksa.X=1;function HN(a,d){c[a+4]=d}HN.X=1;function Lsa(a){return Bf(a)}Lsa.X=1;function IN(a){return v[c[c[a]+11]](a)}IN.X=1;function JN(a){return k[a+16]}JN.X=1;function KN(a,d){v[c[c[a]+10]](a,d)}KN.X=1;function Msa(a){return Gf(a)}Msa.X=1;function Nsa(a){return Kf(a)}Nsa.X=1;function LN(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}LN.X=1;function Osa(a,d,e,f,g,h,i){Tf(a,d,e,f,g,h,i)}Osa.X=1;function MN(a,d,e){var f=b;b+=1;k[f]=e;v[c[c[a]+3]](a,d,f);b=f}MN.X=1;function NN(a){return v[c[c[a]+4]](a)}NN.X=1;function ON(a,d){v[c[c[a]+14]](a,d)}ON.X=1;function PN(a,d){var e=xb(84);QN(e,a,d);return e}PN.X=1;function Psa(a){return Uf(a)}Psa.X=1;function Qsa(a){return Ie(a)}Qsa.X=1;function RN(a,d){v[c[c[a]+16]](a,d)}RN.X=1;function SN(a,d){v[c[c[a]+15]](a,d)}SN.X=1;function TN(a,d,e){return v[c[c[a]+2]](a,d,e)}TN.X=1;function UN(a,d,e){v[c[c[a]+4]](a,d,e)}UN.X=1;function VN(a){return v[c[c[a]+14]](a)}VN.X=1;function WN(a){return v[c[c[a]+7]](a)}WN.X=1;function XN(a,d,e){return v[c[c[a]+13]](a,d,e)}XN.X=1;function YN(a,d,e){v[c[c[a]+10]](a,d,e)}YN.X=1;function ZN(a,d,e){v[c[c[a]+8]](a,d,e)}ZN.X=1;function $N(a){return v[c[c[a]+9]](a)}$N.X=1;function aO(a,d,e,f){return v[c[c[a]+3]](a,d,e,f)}aO.X=1;function bO(a,d){v[c[c[a]+11]](a,d)}bO.X=1;function cO(a){return v[c[c[a]+5]](a)}cO.X=1;function dO(a,d,e){v[c[c[a]+12]](a,d,e)}dO.X=1;function eO(a,d,e){v[c[c[a]+8]](a,d,e)}eO.X=1;function Rsa(a,d){Je(a,d)}Rsa.X=1;function fO(a,d,e){return v[c[c[a]+13]](a,d,e)}fO.X=1;function gO(a){return v[c[c[a]+7]](a)}gO.X=1;function hO(a){return v[c[c[a]+12]](a)}hO.X=1;function iO(a){return v[c[c[a]+9]](a)}iO.X=1;function Ssa(a){return Ge(a)}Ssa.X=1;function Tsa(a){return Ye(a)}Tsa.X=1;function jO(a,d){v[c[c[a]+6]](a,d)}jO.X=1;function kO(a,d,e,f){v[c[c[a]+2]](a,d,e,f)}kO.X=1;function lO(a,d){return v[c[c[a]+5]](a,d)}lO.X=1;function Usa(a){return xf(a)}Usa.X=1;function Vsa(a){return zf(a)}Vsa.X=1;function Wsa(a){return Me(a)}Wsa.X=1;function Xsa(a){return Bf(a)}Xsa.X=1;function mO(a){return v[c[c[a]+11]](a)}mO.X=1;function nO(a,d){v[c[c[a]+10]](a,d)}nO.X=1;function Ysa(a){return Gf(a)}Ysa.X=1;function Zsa(a){return Kf(a)}Zsa.X=1;function $sa(a,d,e,f,g,h,i){Tf(a,d,e,f,g,h,i)}$sa.X=1;function oO(a,d,e){var f=b;b+=1;k[f]=e;v[c[c[a]+3]](a,d,f);b=f}oO.X=1;function pO(a){return v[c[c[a]+4]](a)}pO.X=1;function qO(a,d){v[c[c[a]+14]](a,d)}qO.X=1;function ata(a){return Uf(a)}ata.X=1;function bta(a){return Ie(a)}bta.X=1;function cta(a){return Ho(a)}cta.X=1;function rO(a){v[c[c[a]+2]](a)}rO.X=1;function sO(a,d,e){v[c[c[a]+7]](a,d,e,-1)}sO.X=1;function tO(a,d,e,f){v[c[c[a]+7]](a,d,e,f)}tO.X=1;function dta(a){return Ip(a)}dta.X=1;function uO(a,d){Hp(a,d&1)}uO.X=1;function eta(a){return a+11}eta.X=1;function fta(a,d){return vO(a,d)}fta.X=1;function gta(a){return a+27}gta.X=1;function hta(a,d,e,f,g,h,i,j){wO(a,d,e,f,g,h,i,j)}hta.X=1;function ita(a){return a+267}ita.X=1;function jta(a){return Lo(a)}jta.X=1;function xO(a,d,e){var e=e&1,f=xb(1304);yO(f,a,d,e&1);return f}xO.X=1;function zO(a,d,e,f,g){var g=g&1,h=xb(1304);AO(h,a,d,e,f,g&1);return h}zO.X=1;function kta(a){return Io(a)}kta.X=1;function lta(a){return Mp(a)}lta.X=1;function BO(a,d){return v[c[c[a]+8]](a,d,-1)}BO.X=1;function mta(a,d){c[a+327]=d&1}mta.X=1;function CO(a,d){return(d<<4)+a+218}CO.X=1;function DO(a){return c[a+327]&1}DO.X=1;function EO(a){return c[a+329]&1}EO.X=1;function FO(a,d){c[a+329]=d&1}FO.X=1;function GO(a){return c[a+4]}GO.X=1;function HO(a,d,e){return v[c[c[a]+8]](a,d,e)}HO.X=1;function IO(a,d){v[c[c[a]+4]](a,d)}IO.X=1;function JO(a,d){v[c[c[a]+5]](a,d)}JO.X=1;function KO(a){v[c[c[a]+11]](a)}KO.X=1;function nta(a,d){LO(a,d)}nta.X=1;function LO(a,d){var e;e=0;for(var f=a+218;;){k[d+e]=k[(e<<4)+f];var g=e+1;e=g;if(3<=(g|0)){break}}}LO.X=1;function MO(a){return v[c[c[a]+9]](a)}MO.X=1;function NO(a,d){var e=b;b+=4;0==c[OO]<<24>>24&&Hb(OO);PO(e,a,d);c[QO]=c[e];k[QO]=k[e];c[QO+1]=c[e+1];k[QO+1]=k[e+1];c[QO+2]=c[e+2];k[QO+2]=k[e+2];c[QO+3]=c[e+3];k[QO+3]=k[e+3];b=e;return QO}NO.X=1;function ota(a){return Lp(a)}ota.X=1;function pta(a){return Ap(a)}pta.X=1;function qta(a,d){Bp(a,d)}qta.X=1;function rta(a,d){RO(a,d)}rta.X=1;function RO(a,d){var e=a+173;c[d]=c[e];k[d]=k[e];c[d+1]=c[e+1];k[d+1]=k[e+1];c[d+2]=c[e+2];k[d+2]=k[e+2];c[d+3]=c[e+3];k[d+3]=k[e+3]}RO.X=1;function sta(a){return Cp(a)}sta.X=1;function SO(a,d){Ko(a,d&1)}SO.X=1;function TO(a,d){mta(a,d&1)}TO.X=1;function tta(a){return Fp(a)}tta.X=1;function UO(a){return c[a+4]}UO.X=1;function uta(a,d){return CO(a,d)}uta.X=1;function vta(a,d){VO(a,d)}vta.X=1;function WO(a,d,e){return v[c[c[a]+10]](a,d,e)}WO.X=1;function wta(a,d){XO(a,d)}wta.X=1;function XO(a,d){var e=a+169;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}XO.X=1;function xta(a){return Dp(a)}xta.X=1;function yta(a,d){YO(a,d)}yta.X=1;function YO(a,d){var e=a+169;c[d]=c[e];k[d]=k[e];c[d+1]=c[e+1];k[d+1]=k[e+1];c[d+2]=c[e+2];k[d+2]=k[e+2];c[d+3]=c[e+3];k[d+3]=k[e+3]}YO.X=1;function zta(a,d){Jp(a,d)}zta.X=1;function Ata(a,d){return ZO(a,d)}Ata.X=1;function ZO(a,d){return 3>(d|0)?MM(a+169,d):Sw((d-3<<4)+a+218)}ZO.X=1;function Bta(a){return DO(a)}Bta.X=1;function Cta(a,d){Kp(a,d)}Cta.X=1;function Dta(a){return a+283}Dta.X=1;function Eta(a){$O(a)}Eta.X=1;function Fta(a,d,e){aP(a,d,e)}Fta.X=1;function Gta(a,d){Ep(a,d)}Gta.X=1;function Hta(a,d){zp(a,d)}Hta.X=1;function bP(a,d,e,f,g,h,i,j,l,m,n,p){return cP(a,d,e,f,g,h,i,j,l,m,n,p,0)}bP.X=1;function Ita(a,d,e,f,g,h,i,j,l,m,n,p,r){return cP(a,d,e,f,g,h,i,j,l,m,n,p,r)}Ita.X=1;function Jta(a){return Op(a)}Jta.X=1;function Kta(a,d,e,f){dP(a,d,e,f)}Kta.X=1;function dP(a,d,e,f){3>(d|0)?(k[a+169+d]=e,k[a+173+d]=f):(e=eP(e),f=eP(f),k[(d-3<<4)+a+218]=e,k[(d-3<<4)+a+219]=f)}dP.X=1;function Lta(a){return a+169}Lta.X=1;function fP(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}fP.X=1;function gP(a,d,e,f,g){v[c[c[a]+3]](a,d,e,f,g)}gP.X=1;function Mta(a,d){return hP(a,d)}Mta.X=1;function Nta(){}Nta.X=1;function Ota(a,d){iP(a,d)}Ota.X=1;function iP(a,d){var e;e=0;for(var f=a+218;;){k[d+e]=k[(e<<4)+f+1];var g=e+1;e=g;if(3<=(g|0)){break}}}iP.X=1;function Pta(a,d){jP(a,d)}Pta.X=1;function jP(a,d){var e;e=0;for(var f=a+218;;){k[(e<<4)+f]=eP(k[d+e]);var g=e+1;e=g;if(3<=(g|0)){break}}}jP.X=1;function Qta(a){return Np(a)}Qta.X=1;function kP(a,d,e,f){v[c[c[a]+6]](a,d,e,f)}kP.X=1;function Rta(a){return Gp(a)}Rta.X=1;function Sta(a,d,e){lP(a,d,e)}Sta.X=1;function Tta(a,d){mP(a,d)}Tta.X=1;function mP(a,d){var e=a+173;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}mP.X=1;function Uta(a,d){nP(a,d)}Uta.X=1;function nP(a,d){var e;e=0;for(var f=a+218;;){k[(e<<4)+f+1]=eP(k[d+e]);var g=e+1;e=g;if(3<=(g|0)){break}}}nP.X=1;function Vta(a,d,e){oP(a,d,e)}Vta.X=1;function Wta(a,d){Pp(a,d)}Wta.X=1;function Xta(a,d){return pP(a,d)}Xta.X=1;function qP(a){return k[a+26]}qP.X=1;function rP(a){return c[a+29]&1}rP.X=1;function Yta(a,d){k[a]=d}Yta.X=1;function sP(a,d){c[a+29]=d&1}sP.X=1;function tP(a,d){k[a+28]=d}tP.X=1;function uP(a,d){k[a+24]=d}uP.X=1;function vP(a){return k[a+27]}vP.X=1;function wP(a,d){k[a+25]=d}wP.X=1;function xP(a){return k[a+23]}xP.X=1;function yP(a){return k[a+24]}yP.X=1;function Zta(a){return k[a]}Zta.X=1;function zP(a,d){k[a+23]=d}zP.X=1;function AP(a,d){k[a+26]=d}AP.X=1;function BP(a){return k[a+33]}BP.X=1;function CP(a){return k[a+32]}CP.X=1;function DP(a,d){c[a+18]=d}DP.X=1;function EP(a,d){k[a+32]=d}EP.X=1;function FP(a,d){k[a+31]=d}FP.X=1;function GP(a){return c[a+18]}GP.X=1;function HP(a,d){c[a+1]=d}HP.X=1;function IP(a){return k[a+25]}IP.X=1;function JP(a,d){k[a+27]=d}JP.X=1;function $ta(a){return a+2}$ta.X=1;function aua(a){return a+19}aua.X=1;function KP(a){return c[a+1]}KP.X=1;function LP(a){return k[a+30]}LP.X=1;function MP(a){return k[a+31]}MP.X=1;function bua(a,d){NP(a,d)}bua.X=1;function NP(a,d){cua(a,d);pe(a+12,d+12,d+13,d+14)}NP.X=1;function dua(a,d){Wb(a,d)}dua.X=1;function eua(a){return a+12}eua.X=1;function fua(a,d){OP(a,d)}fua.X=1;function OP(a,d){Nb(a,d);Ob(a+12,d+12)}OP.X=1;function gua(a,d){PP(a,d)}gua.X=1;function PP(a,d){Pc(a,d);Tc(a+12,d+12)}PP.X=1;function QP(a){var d=b;b+=4;0==c[RP]<<24>>24&&Hb(RP);dc(a,d);c[SP]=c[d];k[SP]=k[d];c[SP+1]=c[d+1];k[SP+1]=k[d+1];c[SP+2]=c[d+2];k[SP+2]=k[d+2];c[SP+3]=c[d+3];k[SP+3]=k[d+3];b=d;return SP}QP.X=1;function TP(a){var d=b;b+=16;0==c[UP]<<24>>24&&Hb(UP);uw(d,a);xi(VP,d);b=d;return VP}TP.X=1;function uw(a,d){var e=b;b+=20;var f=e+12,g=e+16;ue(e,d);WP(g,d+12);Bo(f,e,g);Tz(a,e,f);b=e}uw.X=1;function XP(){Pz();return Rz}XP.X=1;function YP(a,d){var e=b;b+=16;0==c[ZP]<<24>>24&&Hb(ZP);$P(e,a,d);xi(aQ,e);b=e;return aQ}YP.X=1;function $P(a,d,e){var f=b;b+=20;var g=f+4,h=f+16;N(f,e+12,d+12);bc(g,d,e);rn(h,f,d);Tz(a,g,h);b=f}$P.X=1;function bQ(a,d){var e=b;b+=4;0==c[cQ]<<24>>24&&Hb(cQ);vw(e,a,d);c[dQ]=c[e];k[dQ]=k[e];c[dQ+1]=c[e+1];k[dQ+1]=k[e+1];c[dQ+2]=c[e+2];k[dQ+2]=k[e+2];c[dQ+3]=c[e+3];k[dQ+3]=k[e+3];b=e;return dQ}bQ.X=1;function hua(a,d){zb(a,d)}hua.X=1;function iua(a){eQ(a)}iua.X=1;function eQ(a){var d=b;b+=3;var e=d+1,f=d+2;qd(a);k[d]=0;k[e]=0;k[f]=0;pe(a+12,d,e,f);b=d}eQ.X=1;function jua(a,d){return xi(a,d)}jua.X=1;function kua(a,d){fQ(a,d)}kua.X=1;function fQ(a,d){lua(a,d);k[d+12]=k[a+12];k[d+13]=k[a+12+1];k[d+14]=k[a+12+2];k[d+15]=1}fQ.X=1;function mua(a,d){gQ(a,d)}mua.X=1;function gQ(a,d){Lb(a,d);Mb(a+12,d+12)}gQ.X=1;function nua(a,d){hQ(a,d)}nua.X=1;function hQ(a,d){qe(a,d);re(a+12,d+12)}hQ.X=1;function iQ(a,d){var e=b;b+=4;0==c[jQ]<<24>>24&&Hb(jQ);kQ(e,a,d);c[lQ]=c[e];k[lQ]=k[e];c[lQ+1]=c[e+1];k[lQ+1]=k[e+1];c[lQ+2]=c[e+2];k[lQ+2]=k[e+2];c[lQ+3]=c[e+3];k[lQ+3]=k[e+3];b=e;return lQ}iQ.X=1;function kQ(a,d,e){var f=b;b+=16;var g=f+4;N(f,e,d+12);ue(g,d);Bo(a,g,f);b=f}kQ.X=1;function oua(a,d){mQ(a,d)}oua.X=1;function mQ(a,d){lc(a,d);mc(a+12,d+12)}mQ.X=1;function pua(a,d,e){nQ(a,d,e)}pua.X=1;function nQ(a,d,e){var f=b;b+=16;var g=f+12;ww(f,d,e);Wb(a,f);vw(g,d,e+12);a+=12;c[a]=c[g];k[a]=k[g];c[a+1]=c[g+1];k[a+1]=k[g+1];c[a+2]=c[g+2];k[a+2]=k[g+2];c[a+3]=c[g+3];k[a+3]=k[g+3];b=f}nQ.X=1;function oQ(a){0!=(a|0)&&xe(a)}oQ.X=1;function qua(a){return a}qua.X=1;function rua(a,d){pQ(a,d)}rua.X=1;function pQ(a,d){var e=a+12;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}pQ.X=1;function qQ(){return xb(64)}qQ.X=1;function rQ(a){var d=xb(64);sQ(d,a);return d}rQ.X=1;function tQ(a,d){var e=xb(64);uQ(e,a,d);return e}tQ.X=1;function vQ(a,d,e){var f=b;b+=7;var g=f+4,h=f+5,i=f+6,j=xb(136);k[g]=0;k[h]=0;k[i]=0;H(f,g,h,i);wQ(j,a,d,e,f);b=f;return j}vQ.X=1;function xQ(a,d,e,f){var g=xb(136);wQ(g,a,d,e,f);return g}xQ.X=1;function yQ(a,d){xi(a+2,d)}yQ.X=1;function zQ(a,d){var e=a+19;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}zQ.X=1;function AQ(a){0!=(a|0)&&xe(a)}AQ.X=1;function BQ(a,d){k[a+30]=d}BQ.X=1;function CQ(a){return k[a+28]}CQ.X=1;function DQ(a,d){k[a+33]=d}DQ.X=1;function EQ(a){return k[a+32]}EQ.X=1;function sua(a){return a}sua.X=1;function tua(a){return a+16}tua.X=1;function FQ(a,d){c[a+33]=d}FQ.X=1;function GQ(a){return c[a+33]}GQ.X=1;function HQ(a,d){k[a+32]=d}HQ.X=1;function IQ(a){return c[a+16]&1}IQ.X=1;function JQ(a){return c[a+12]}JQ.X=1;function KQ(a,d){c[a+14]=d}KQ.X=1;function LQ(a){return c[a+15]&1}LQ.X=1;function MQ(a){return c[a+14]}MQ.X=1;function NQ(a){return c[a+13]}NQ.X=1;function OQ(a,d){xi(a+16,d)}OQ.X=1;function PQ(){var a=xb(136);QQ(a);return a}PQ.X=1;function uua(a,d){xi(a,d)}uua.X=1;function RQ(a){0!=(a|0)&&xe(a)}RQ.X=1;function SQ(a,d,e){v[c[c[a]+8]](a,d,e)}SQ.X=1;function vua(a){return a+8}vua.X=1;function TQ(a){return Ue(a,16)}TQ.X=1;function UQ(a,d){v[c[c[a]+19]](a,d)}UQ.X=1;function VQ(a,d,e){return v[c[c[a]+13]](a,d,e)}VQ.X=1;function WQ(a,d){var e=b;b+=4;0==c[XQ]<<24>>24&&Hb(XQ);v[c[c[a]+16]](e,a,d);c[YQ]=c[e];k[YQ]=k[e];c[YQ+1]=c[e+1];k[YQ+1]=k[e+1];c[YQ+2]=c[e+2];k[YQ+2]=k[e+2];c[YQ+3]=c[e+3];k[YQ+3]=k[e+3];b=e;return YQ}WQ.X=1;function ZQ(a){return v[c[c[a]+7]](a)}ZQ.X=1;function wua(a){return IQ(a)}wua.X=1;function xua(a){return JQ(a)}xua.X=1;function $Q(a,d,e,f){v[c[c[a]+15]](a,d,e,f)}$Q.X=1;function yua(a,d,e){aR(a,d,e)}yua.X=1;function bR(a){return v[c[c[a]+12]](a)}bR.X=1;function zua(a,d){Je(a,d)}zua.X=1;function Aua(a,d,e,f){cR(a,d,e,f)}Aua.X=1;function Bua(a,d){KQ(a,d)}Bua.X=1;function Cua(a){return LQ(a)}Cua.X=1;function dR(a){return v[c[c[a]+9]](a)}dR.X=1;function Dua(a){return MQ(a)}Dua.X=1;function Eua(a){return Ge(a)}Eua.X=1;function Fua(a){return Ye(a)}Fua.X=1;function eR(a,d){v[c[c[a]+6]](a,d)}eR.X=1;function fR(a,d,e,f){v[c[c[a]+2]](a,d,e,f)}fR.X=1;function Gua(a){return NQ(a)}Gua.X=1;function Hua(a){return a+4}Hua.X=1;function gR(a,d){return v[c[c[a]+5]](a,d)}gR.X=1;function Iua(a){return xf(a)}Iua.X=1;function Jua(a){return zf(a)}Jua.X=1;function Kua(a){hR(a)}Kua.X=1;function Lua(a){return Uf(a)}Lua.X=1;function Mua(a){return Me(a)}Mua.X=1;function Nua(a){return Bf(a)}Nua.X=1;function iR(a){return v[c[c[a]+11]](a)}iR.X=1;function Oua(a){jR(a)}Oua.X=1;function kR(a,d){v[c[c[a]+10]](a,d)}kR.X=1;function Pua(a,d,e){lR(a,d,e)}Pua.X=1;function Qua(a,d,e,f,g,h){mR(a,d,e,f,g,h)}Qua.X=1;function nR(a,d){var e=b;b+=4;0==c[oR]<<24>>24&&Hb(oR);v[c[c[a]+17]](e,a,d);c[pR]=c[e];k[pR]=k[e];c[pR+1]=c[e+1];k[pR+1]=k[e+1];c[pR+2]=c[e+2];k[pR+2]=k[e+2];c[pR+3]=c[e+3];k[pR+3]=k[e+3];b=e;return pR}nR.X=1;function Rua(a){return Kf(a)}Rua.X=1;function qR(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}qR.X=1;function Sua(a,d,e,f,g,h,i){Tf(a,d,e,f,g,h,i)}Sua.X=1;function rR(a,d,e){var f=b;b+=1;k[f]=e;v[c[c[a]+3]](a,d,f);b=f}rR.X=1;function sR(a){return v[c[c[a]+4]](a)}sR.X=1;function tR(a,d){v[c[c[a]+14]](a,d)}tR.X=1;function Tua(a){return Ie(a)}Tua.X=1;function uR(a,d){v[c[c[a]+18]](a,d)}uR.X=1;function vR(a,d){var e=b;b+=7;var f=e+4,g=e+5,h=e+6;k[f]=1;k[g]=1;k[h]=1;H(e,f,g,h);wR(a,d,e);b=e}vR.X=1;function xR(a,d){var e;e=d&1;var f=TQ(76);yR(f,a,e&1,1);return f}xR.X=1;function zR(a,d,e){var d=d&1,e=e&1,f=TQ(76);yR(f,a,d&1,e&1);return f}zR.X=1;function AR(a,d,e,f){var d=d&1,g=TQ(76);BR(g,a,d&1,e,f,1);return g}AR.X=1;function CR(a,d,e,f,g){var d=d&1,g=g&1,h=TQ(76);BR(h,a,d&1,e,f,g&1);return h}CR.X=1;function DR(a){return c[a+8]}DR.X=1;function ER(a){return c[a+7]}ER.X=1;function FR(a){return k[a+273]}FR.X=1;function GR(a){return k[a+280]}GR.X=1;function HR(a){return k[a+272]}HR.X=1;function IR(a,d){k[a+63]=d}IR.X=1;function JR(a){return c[a+275]&1}JR.X=1;function Uua(a,d){c[a+12]=d&1}Uua.X=1;function KR(a,d){k[a+58]=d}KR.X=1;function LR(a,d){k[a+56]=d}LR.X=1;function MR(a){return c[a+74]&1}MR.X=1;function NR(a){return c[a+12]&1}NR.X=1;function OR(a){return k[a+281]}OR.X=1;function PR(a,d){k[a+55]=d}PR.X=1;function QR(a){return k[a+277]}QR.X=1;function RR(a,d){k[a+68]=d}RR.X=1;function SR(a){return c[a+75]&1}SR.X=1;function Vua(a,d){c[a+279]=d&1}Vua.X=1;function TR(a){return k[a+271]}TR.X=1;function UR(a){return c[a+4]}UR.X=1;function VR(a,d){k[a+52]=d}VR.X=1;function WR(a){return k[a+49]}WR.X=1;function XR(a){return k[a+63]}XR.X=1;function YR(a){return k[a+66]}YR.X=1;function ZR(a,d){k[a+46]=d}ZR.X=1;function $R(a){return k[a+51]}$R.X=1;function aS(a,d){k[a+59]=d}aS.X=1;function bS(a,d){k[a+276]=d}bS.X=1;function cS(a){return k[a+47]}cS.X=1;function dS(a,d){k[a+277]=d}dS.X=1;function eS(a){return k[a+48]}eS.X=1;function fS(a,d){k[a+50]=d}fS.X=1;function Wua(a,d,e){wR(a,d,e)}Wua.X=1;function Xua(a){return Gf(a)}Xua.X=1;function gS(a,d,e){return v[c[c[a]+2]](a,d,e)}gS.X=1;function hS(a,d){v[c[c[a]+4]](a,d)}hS.X=1;function iS(a,d,e,f,g){return v[c[c[a]+3]](a,d,e,f,g)}iS.X=1;function jS(a,d,e,f,g){v[c[c[a]+2]](a,d,e,f,g)}jS.X=1;function Yua(a){return DR(a)}Yua.X=1;function Zua(a){return ER(a)}Zua.X=1;function $ua(a){return FR(a)}$ua.X=1;function kS(a){v[c[c[a]+2]](a)}kS.X=1;function ava(a){return GR(a)}ava.X=1;function bva(a){return HR(a)}bva.X=1;function cva(a,d){IR(a,d)}cva.X=1;function lS(a,d){return v[c[c[a]+8]](a,d,-1)}lS.X=1;function mS(a,d,e){return v[c[c[a]+8]](a,d,e)}mS.X=1;function nS(a,d){v[c[c[a]+4]](a,d)}nS.X=1;function oS(a,d){v[c[c[a]+5]](a,d)}oS.X=1;function dva(a){return Ap(a)}dva.X=1;function eva(a){return JR(a)}eva.X=1;function pS(a,d){Uua(a,d&1)}pS.X=1;function fva(a,d){KR(a,d)}fva.X=1;function qS(a){var d=b;b+=4;0==c[rS]<<24>>24&&Hb(rS);gva(d,a);c[sS]=c[d];k[sS]=k[d];c[sS+1]=c[d+1];k[sS+1]=k[d+1];c[sS+2]=c[d+2];k[sS+2]=k[d+2];c[sS+3]=c[d+3];k[sS+3]=k[d+3];b=d;return sS}qS.X=1;function tS(a){var d=b;b+=4;0==c[uS]<<24>>24&&Hb(uS);hva(d,a);c[vS]=c[d];k[vS]=k[d];c[vS+1]=c[d+1];k[vS+1]=k[d+1];c[vS+2]=c[d+2];k[vS+2]=k[d+2];c[vS+3]=c[d+3];k[vS+3]=k[d+3];b=d;return vS}tS.X=1;function iva(a,d){LR(a,d)}iva.X=1;function jva(a){return MR(a)}jva.X=1;function kva(a){return NR(a)}kva.X=1;function lva(a){return OR(a)}lva.X=1;function mva(a,d){PR(a,d)}mva.X=1;function wS(a,d,e,f,g){v[c[c[a]+3]](a,d,e,f,g)}wS.X=1;function nva(a){return Fp(a)}nva.X=1;function ova(a){return QR(a)}ova.X=1;function xS(a){return c[a+4]}xS.X=1;function pva(a,d){RR(a,d)}pva.X=1;function qva(a){return SR(a)}qva.X=1;function yS(a,d){Vua(a,d&1)}yS.X=1;function zS(a,d){Ko(a,d&1)}zS.X=1;function rva(a){return TR(a)}rva.X=1;function sva(a){return a+223}sva.X=1;function tva(a){return a+207}tva.X=1;function uva(a){AS(a)}uva.X=1;function vva(a,d){zp(a,d)}vva.X=1;function wva(a,d){VR(a,d)}wva.X=1;function xva(a){return WR(a)}xva.X=1;function yva(a,d){BS(a,d)}yva.X=1;function BS(a,d){k[a+49]=eP(d)}BS.X=1;function zva(a){return XR(a)}zva.X=1;function Ava(a){return YR(a)}Ava.X=1;function Bva(a,d){ZR(a,d)}Bva.X=1;function Cva(a){return $R(a)}Cva.X=1;function Dva(a,d){CS(0,d)}Dva.X=1;function Eva(a,d){aS(a,d)}Eva.X=1;function Fva(a){return Ip(a)}Fva.X=1;function Gva(a,d){bS(a,d)}Gva.X=1;function Hva(a){return cS(a)}Hva.X=1;function Iva(a,d){dS(a,d)}Iva.X=1;function Jva(a){return eS(a)}Jva.X=1;function Kva(a){return Mp(a)}Kva.X=1;function Lva(a,d){fS(a,d)}Lva.X=1;function Mva(a,d){Pp(a,d)}Mva.X=1;function Nva(a,d,e,f,g,h,i,j){DS(a,d,e,f,g,h,i,j)}Nva.X=1;function ES(a,d){c[a+4]=d}ES.X=1;function FS(a){return k[a+56]}FS.X=1;function GS(a){return k[a+59]}GS.X=1;function HS(a){return k[a+70]}HS.X=1;function IS(a,d){k[a+66]=d}IS.X=1;function JS(a,d){k[a+62]=d}JS.X=1;function KS(a){return k[a+52]}KS.X=1;function LS(a){return k[a+58]}LS.X=1;function Ova(a,d){c[a+275]=d&1}Ova.X=1;function MS(a){return k[a+60]}MS.X=1;function NS(a){return k[a+55]}NS.X=1;function OS(a){return k[a+64]}OS.X=1;function PS(a,d){k[a+67]=d}PS.X=1;function QS(a,d){k[a+51]=d}QS.X=1;function RS(a,d){k[a+64]=d}RS.X=1;function SS(a,d){k[a+54]=d}SS.X=1;function TS(a,d){k[a+47]=d}TS.X=1;function US(a,d){k[a+280]=d}US.X=1;function VS(a){return k[a+54]}VS.X=1;function WS(a,d){k[a+281]=d}WS.X=1;function XS(a){return c[a+279]&1}XS.X=1;function YS(a){return k[a+72]}YS.X=1;function ZS(a){return k[a+67]}ZS.X=1;function $S(a){return k[a+276]}$S.X=1;function aT(a){return k[a+46]}aT.X=1;function bT(a,d){k[a+72]=d}bT.X=1;function cT(a,d){k[a+71]=d}cT.X=1;function dT(a){return k[a+71]}dT.X=1;function eT(a){return k[a+68]}eT.X=1;function fT(a){return k[a+62]}fT.X=1;function gT(a,d){k[a+70]=d}gT.X=1;function hT(a,d){k[a+60]=d}hT.X=1;function iT(a){return k[a+50]}iT.X=1;function Pva(a){return a+13}Pva.X=1;function Qva(a){return a+29}Qva.X=1;function Rva(a){return FS(a)}Rva.X=1;function Sva(a){return GS(a)}Sva.X=1;function Tva(a){return HS(a)}Tva.X=1;function Uva(a,d){IS(a,d)}Uva.X=1;function Vva(a,d){JS(a,d)}Vva.X=1;function Wva(a){return KS(a)}Wva.X=1;function Xva(a){return Dp(a)}Xva.X=1;function Yva(a){return Gp(a)}Yva.X=1;function Zva(a){return LS(a)}Zva.X=1;function jT(a,d){Hp(a,d&1)}jT.X=1;function kT(a,d){Ova(a,d&1)}kT.X=1;function $va(a,d){Jp(a,d)}$va.X=1;function awa(a,d,e){lT(a,d,e)}awa.X=1;function bwa(a){return mT(a)}bwa.X=1;function mT(a){return k[a+259]}mT.X=1;function nT(a,d,e){return v[c[c[a]+10]](a,d,e)}nT.X=1;function cwa(a){return MS(a)}cwa.X=1;function dwa(a){return NS(a)}dwa.X=1;function oT(a,d,e,f){v[c[c[a]+6]](a,d,e,f)}oT.X=1;function ewa(a){return Op(a)}ewa.X=1;function pT(a,d,e){v[c[c[a]+7]](a,d,e,-1)}pT.X=1;function qT(a,d,e,f){v[c[c[a]+7]](a,d,e,f)}qT.X=1;function fwa(a){return OS(a)}fwa.X=1;function gwa(a,d){PS(a,d)}gwa.X=1;function hwa(a,d){QS(a,d)}hwa.X=1;function iwa(a,d){RS(a,d)}iwa.X=1;function rT(a,d,e){var e=e&1,f=xb(1120);sT(f,a,d,e&1);return f}rT.X=1;function tT(a,d,e,f,g){var g=g&1,h=xb(1120);uT(h,a,d,e,f,g&1);return h}tT.X=1;function jwa(a){return Lo(a)}jwa.X=1;function kwa(a,d){SS(a,d)}kwa.X=1;function lwa(a,d){TS(a,d)}lwa.X=1;function vT(a){return v[c[c[a]+9]](a)}vT.X=1;function mwa(a,d){US(a,d)}mwa.X=1;function nwa(a){return VS(a)}nwa.X=1;function owa(a,d){WS(a,d)}owa.X=1;function pwa(a,d){wT(a,d)}pwa.X=1;function wT(a,d){k[a+48]=eP(d)}wT.X=1;function qwa(a,d){Bp(a,d)}qwa.X=1;function rwa(a){return Cp(a)}rwa.X=1;function swa(a){return XS(a)}swa.X=1;function twa(a){return YS(a)}twa.X=1;function uwa(a,d){Ep(a,d)}uwa.X=1;function vwa(a){return ZS(a)}vwa.X=1;function wwa(a){return $S(a)}wwa.X=1;function xwa(a){xT(a)}xwa.X=1;function ywa(a){return aT(a)}ywa.X=1;function zwa(a,d){bT(a,d)}zwa.X=1;function Awa(a){return Np(a)}Awa.X=1;function Bwa(a,d){cT(a,d)}Bwa.X=1;function Cwa(a){return dT(a)}Cwa.X=1;function Dwa(a,d){Kp(a,d)}Dwa.X=1;function Ewa(a){return eT(a)}Ewa.X=1;function Fwa(a){return Lp(a)}Fwa.X=1;function Gwa(a){return fT(a)}Gwa.X=1;function yT(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}yT.X=1;function Hwa(a,d){gT(a,d)}Hwa.X=1;function Iwa(a,d){hT(a,d)}Iwa.X=1;function Jwa(a,d,e){zT(a,d,e)}Jwa.X=1;function zT(a,d,e){xi(a+13,d);xi(a+29,e);lT(a,c[a+7]+1,c[a+8]+1);v[c[c[a]+2]](a)}zT.X=1;function Kwa(a){return iT(a)}Kwa.X=1;function Lwa(a){return AT(a)}Lwa.X=1;function AT(a){return c[a+45]&1}AT.X=1;function BT(a,d){k[a+1]=d}BT.X=1;function CT(a,d){k[a+3]=d}CT.X=1;function DT(a){return k[a+3]}DT.X=1;function Mwa(a,d){k[a]=d}Mwa.X=1;function ET(a){return k[a+4]}ET.X=1;function FT(a){return k[a+2]}FT.X=1;function Nwa(a){return k[a]}Nwa.X=1;function GT(a){return k[a+1]}GT.X=1;function HT(a,d){k[a+2]=d}HT.X=1;function IT(a,d){k[a+4]=d}IT.X=1;function JT(a,d){k[a+5]=d}JT.X=1;function KT(a){return k[a+5]}KT.X=1;function LT(a,d){c[a+4]=d}LT.X=1;function MT(a){return c[a+4]}MT.X=1;function NT(a){return k[a+34]}NT.X=1;function OT(a){return k[a+35]}OT.X=1;function PT(a,d){k[a+28]=d}PT.X=1;function QT(a,d){k[a+34]=d}QT.X=1;function RT(a){return k[a+21]}RT.X=1;function ST(a){return c[a+23]}ST.X=1;function TT(a){return c[a+24]}TT.X=1;function Owa(a){return a+16}Owa.X=1;function UT(a,d){k[a+21]=d}UT.X=1;function VT(a){return c[a+26]}VT.X=1;function WT(a){return c[a+25]}WT.X=1;function XT(a,d){c[a+27]=d}XT.X=1;function YT(a,d){k[a+35]=d}YT.X=1;function ZT(a){return k[a+28]}ZT.X=1;function $T(a){return c[a+27]}$T.X=1;function aU(a){return k[a+20]}aU.X=1;function bU(a){return c[a+36]}bU.X=1;function cU(a,d){c[a+23]=d}cU.X=1;function dU(a,d){c[a+24]=d}dU.X=1;function eU(a,d){k[a+20]=d}eU.X=1;function fU(a){return k[a+30]}fU.X=1;function gU(a){return k[a+31]}gU.X=1;function hU(a,d){c[a+29]=d&1}hU.X=1;function Fk(a){return c[a+36]}Fk.X=1;function iU(a,d){c[a+25]=d}iU.X=1;function jU(){var a=xb(24);Pwa(a);return a}jU.X=1;function kU(a){0!=(a|0)&&xe(a)}kU.X=1;function Qwa(a){return Ho(a)}Qwa.X=1;function lU(a){v[c[c[a]+2]](a)}lU.X=1;function Rwa(a){return Io(a)}Rwa.X=1;function mU(a,d,e){return v[c[c[a]+10]](a,d,e)}mU.X=1;function nU(a,d){Ko(a,d&1)}nU.X=1;function Swa(a){return a+11}Swa.X=1;function Twa(a){return Lo(a)}Twa.X=1;function oU(a,d,e){v[c[c[a]+7]](a,d,e,-1)}oU.X=1;function pU(a,d,e,f){v[c[c[a]+7]](a,d,e,f)}pU.X=1;function qU(a,d){return v[c[c[a]+8]](a,d,-1)}qU.X=1;function rU(a,d,e){return v[c[c[a]+8]](a,d,e)}rU.X=1;function sU(a,d){v[c[c[a]+4]](a,d)}sU.X=1;function tU(a,d){v[c[c[a]+5]](a,d)}tU.X=1;function Uwa(a,d){zp(a,d)}Uwa.X=1;function uU(a){return v[c[c[a]+9]](a)}uU.X=1;function Vwa(a){return Ap(a)}Vwa.X=1;function Wwa(a,d){Bp(a,d)}Wwa.X=1;function Xwa(a,d){vU(a,d)}Xwa.X=1;function Ywa(a){return Cp(a)}Ywa.X=1;function Zwa(a){return Dp(a)}Zwa.X=1;function $wa(a,d){Ep(a,d)}$wa.X=1;function axa(a){return Fp(a)}axa.X=1;function wU(a){return c[a+4]}wU.X=1;function bxa(a){return Gp(a)}bxa.X=1;function xU(a,d){Hp(a,d&1)}xU.X=1;function cxa(a){return Ip(a)}cxa.X=1;function dxa(a,d){Jp(a,d)}dxa.X=1;function exa(a,d){Kp(a,d)}exa.X=1;function fxa(a){return Lp(a)}fxa.X=1;function yU(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}yU.X=1;function zU(a,d,e,f,g){v[c[c[a]+3]](a,d,e,f,g)}zU.X=1;function gxa(a){return Mp(a)}gxa.X=1;function hxa(a){return Np(a)}hxa.X=1;function AU(a,d,e,f){v[c[c[a]+6]](a,d,e,f)}AU.X=1;function ixa(a){return Op(a)}ixa.X=1;function jxa(a,d){Pp(a,d)}jxa.X=1;function BU(){var a=xb(276);CU(a);return a}BU.X=1;function DU(a,d,e,f){var g=xb(276);EU(g,a,d,e,f);return g}DU.X=1;function FU(a,d){var e=a+37;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}FU.X=1;function kxa(a){return aU(a)}kxa.X=1;function lxa(a){return a+8}lxa.X=1;function mxa(a){return a+12}mxa.X=1;function GU(a,d){var e=a+12;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}GU.X=1;function nxa(a,d){eU(a,d)}nxa.X=1;function HU(a,d){var e=a+8;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}HU.X=1;function IU(a){0!=(a|0)&&xe(a)}IU.X=1;function oxa(a){return Fk(a)}oxa.X=1;function JU(a){return k[a+32]}JU.X=1;function KU(a){return k[a+33]}KU.X=1;function LU(a,d){c[a+26]=d}LU.X=1;function pxa(a){return a+37}pxa.X=1;function MU(a,d){k[a+22]=d}MU.X=1;function qxa(a){return a+12}qxa.X=1;function rxa(a){return a+41}rxa.X=1;function sxa(a){return a+8}sxa.X=1;function NU(a,d){k[a+30]=d}NU.X=1;function OU(a,d){k[a+31]=d}OU.X=1;function PU(a){return c[a+29]&1}PU.X=1;function QU(a){return k[a+22]}QU.X=1;function RU(a,d){k[a+32]=d}RU.X=1;function SU(a,d){k[a+33]=d}SU.X=1;function txa(a){return a+4}txa.X=1;function uxa(a){return a}uxa.X=1;function TU(a,d){k[a+20]=d}TU.X=1;function UU(a){return k[a+20]}UU.X=1;function VU(a){return k[a+28]}VU.X=1;function WU(a,d){c[a+36]=d}WU.X=1;function XU(a,d){c[a+4]=d}XU.X=1;function vxa(a){return c[a+4]}vxa.X=1;function wxa(a,d){c[a+85]=d&1}wxa.X=1;function xxa(a){return a+86}xxa.X=1;function yxa(a,d){var e=a+16;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}yxa.X=1;function zxa(a,d){var e=a+41;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}zxa.X=1;function Axa(a,d){var e=a+4;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}Axa.X=1;function Bxa(a,d){c[a]=c[d];k[a]=k[d];c[a+1]=c[d+1];k[a+1]=k[d+1];c[a+2]=c[d+2];k[a+2]=k[d+2];c[a+3]=c[d+3];k[a+3]=k[d+3]}Bxa.X=1;function Cxa(a){return VU(a)}Cxa.X=1;function Dxa(a,d,e,f,g,h,i,j,l){v[c[c[a]+4]](a,d,e,f,g,h,i,j,l,0)}Dxa.X=1;function Exa(a,d,e,f,g,h,i,j,l,m){v[c[c[a]+4]](a,d,e,f,g,h,i,j,l,m)}Exa.X=1;function Fxa(a,d){v[c[c[a]+9]](a,d)}Fxa.X=1;function Gxa(a,d,e){vy(a,d,e)}Gxa.X=1;function Hxa(a,d,e){return v[c[c[a]+14]](a,d,e)}Hxa.X=1;function Ixa(a,d){v[c[c[a]+8]](a,d)}Ixa.X=1;function Jxa(a){return v[c[c[a]+13]](a)}Jxa.X=1;function Kxa(a,d){Iy(a,d)}Kxa.X=1;function Lxa(a){return a+1}Lxa.X=1;function Mxa(a,d,e){v[c[c[a]+11]](a,d,e)}Mxa.X=1;function Nxa(a,d,e,f){v[c[c[a]+2]](a,d,e,f)}Nxa.X=1;function Oxa(a,d,e){v[c[c[a]+12]](a,d,e)}Oxa.X=1;function Pxa(a){return v[c[c[a]+7]](a)}Pxa.X=1;function Qxa(a,d,e,f,g,h,i,j,l){v[c[c[a]+3]](a,d,e,f,g,h,i,j,l,0)}Qxa.X=1;function Rxa(a,d,e,f,g,h,i,j,l,m){v[c[c[a]+3]](a,d,e,f,g,h,i,j,l,m)}Rxa.X=1;function Sxa(a){return v[c[c[a]+10]](a)}Sxa.X=1;function Txa(a,d){v[c[c[a]+5]](a,d)}Txa.X=1;function Uxa(a,d){v[c[c[a]+6]](a,d)}Uxa.X=1;function Vxa(a){return Ho(a)}Vxa.X=1;function Wxa(a,d,e,f){YU(a,d,e,f)}Wxa.X=1;function Xxa(a,d,e){v[c[c[a]+7]](a,d,e,-1)}Xxa.X=1;function Yxa(a,d,e,f){v[c[c[a]+7]](a,d,e,f)}Yxa.X=1;function Zxa(a){return Ip(a)}Zxa.X=1;function $xa(a,d){Hp(a,d&1)}$xa.X=1;function aya(a,d){Bp(a,d)}aya.X=1;function bya(a,d,e){return v[c[c[a]+10]](a,d,e)}bya.X=1;function cya(a){v[c[c[a]+2]](a)}cya.X=1;function dya(a){return Lo(a)}dya.X=1;function eya(a){return Io(a)}eya.X=1;function fya(a,d){return v[c[c[a]+8]](a,d,-1)}fya.X=1;function gya(a,d,e){return v[c[c[a]+8]](a,d,e)}gya.X=1;function hya(a,d){var e=xb(352);iya(e,a,d);return e}hya.X=1;function jya(a,d,e,f){var g=xb(352);kya(g,a,d,e,f);return g}jya.X=1;function lya(a){return c[a+4]}lya.X=1;function mya(a,d){v[c[c[a]+5]](a,d)}mya.X=1;function nya(a){return v[c[c[a]+9]](a)}nya.X=1;function oya(a){return a+74}oya.X=1;function pya(a){return a+78}pya.X=1;function qya(a){return Ap(a)}qya.X=1;function rya(a,d){var e=a+86;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2]}rya.X=1;function sya(a){return Cp(a)}sya.X=1;function tya(a,d){Ko(a,d&1)}tya.X=1;function uya(a,d){Ep(a,d)}uya.X=1;function vya(a){return Fp(a)}vya.X=1;function wya(a,d){xya(a,d)}wya.X=1;function xya(a,d){var e=a+74;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}xya.X=1;function yya(a){return Gp(a)}yya.X=1;function zya(a){return c[a+85]&1}zya.X=1;function Aya(a){return c[a+7]}Aya.X=1;function Bya(a){return c[a+6]}Bya.X=1;function Cya(a,d){c[a+6]=d}Cya.X=1;function ZU(a,d){c[a]=c[d];c[a+1]=c[d+1];c[a+2]=c[d+2];c[a+3]=c[d+3];c[a+4]=c[d+4];c[a+5]=c[d+5]}ZU.X=1;function Dya(a,d){Eya(a,d)}Dya.X=1;function Eya(a,d){var e=a+78;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}Eya.X=1;function Fya(a,d){$U(a,d)}Fya.X=1;function Gya(a,d){v[c[c[a]+4]](a,d)}Gya.X=1;function Hya(a){return Dp(a)}Hya.X=1;function Iya(a,d){Jp(a,d)}Iya.X=1;function Jya(a,d){Kp(a,d)}Jya.X=1;function Kya(a,d){zp(a,d)}Kya.X=1;function Lya(a){return Lp(a)}Lya.X=1;function Mya(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}Mya.X=1;function Nya(a,d,e,f,g){v[c[c[a]+3]](a,d,e,f,g)}Nya.X=1;function Oya(){}Oya.X=1;function Pya(a){return Mp(a)}Pya.X=1;function Qya(a){return Np(a)}Qya.X=1;function Rya(a,d,e,f){v[c[c[a]+6]](a,d,e,f)}Rya.X=1;function Sya(a){return Op(a)}Sya.X=1;function Tya(a,d){Pp(a,d)}Tya.X=1;function Uya(a,d,e){v[c[c[a]+8]](a,d,e)}Uya.X=1;function Vya(a){return Ge(a)}Vya.X=1;function Wya(a,d){var e=b;b+=4;0==c[Xya]<<24>>24&&Hb(Xya);v[c[c[a]+15]](e,a,d);c[aV]=c[e];k[aV]=k[e];c[aV+1]=c[e+1];k[aV+1]=k[e+1];c[aV+2]=c[e+2];k[aV+2]=k[e+2];c[aV+3]=c[e+3];k[aV+3]=k[e+3];b=e;return aV}Wya.X=1;function Yya(a,d){Je(a,d)}Yya.X=1;function Zya(a){return dF(a)}Zya.X=1;function $ya(a,d,e){return v[c[c[a]+13]](a,d,e)}$ya.X=1;function aza(a){return v[c[c[a]+7]](a)}aza.X=1;function bza(a){return v[c[c[a]+19]](a)}bza.X=1;function cza(a){return Ye(a)}cza.X=1;function dza(a){return v[c[c[a]+21]](a)}dza.X=1;function eza(a,d,e,f){df(a,d,e,f)}eza.X=1;function fza(a){return v[c[c[a]+12]](a)}fza.X=1;function gza(a){return v[c[c[a]+9]](a)}gza.X=1;function hza(a){return a+3}hza.X=1;function iza(a,d){var e=b;b+=4;0==c[jza]<<24>>24&&Hb(jza);kf(e,a,d);c[bV]=c[e];k[bV]=k[e];c[bV+1]=c[e+1];k[bV+1]=k[e+1];c[bV+2]=c[e+2];k[bV+2]=k[e+2];c[bV+3]=c[e+3];k[bV+3]=k[e+3];b=e;return bV}iza.X=1;function kza(a,d){Jf(a,d)}kza.X=1;function lza(a,d){v[c[c[a]+6]](a,d)}lza.X=1;function mza(a,d,e,f){v[c[c[a]+2]](a,d,e,f)}mza.X=1;function nza(a){return Le(a)}nza.X=1;function oza(a,d){var e=b;b+=4;0==c[pza]<<24>>24&&Hb(pza);tf(e,a,d);c[cV]=c[e];k[cV]=k[e];c[cV+1]=c[e+1];k[cV+1]=k[e+1];c[cV+2]=c[e+2];k[cV+2]=k[e+2];c[cV+3]=c[e+3];k[cV+3]=k[e+3];b=e;return cV}oza.X=1;function qza(a,d){return v[c[c[a]+5]](a,d)}qza.X=1;function rza(a){return xf(a)}rza.X=1;function sza(a){return zf(a)}sza.X=1;function tza(a){return Me(a)}tza.X=1;function uza(a){return Bf(a)}uza.X=1;function vza(a){return v[c[c[a]+11]](a)}vza.X=1;function wza(a,d,e){v[c[c[a]+20]](a,d,e)}wza.X=1;function xza(a){return a+7}xza.X=1;function yza(a){return Gf(a)}yza.X=1;function zza(a,d){var e=b;b+=4;0==c[Aza]<<24>>24&&Hb(Aza);v[c[c[a]+16]](e,a,d);c[dV]=c[e];k[dV]=k[e];c[dV+1]=c[e+1];k[dV+1]=k[e+1];c[dV+2]=c[e+2];k[dV+2]=k[e+2];c[dV+3]=c[e+3];k[dV+3]=k[e+3];b=e;return dV}zza.X=1;function Bza(a){return Kf(a)}Bza.X=1;function Cza(a){return Mf(a)}Cza.X=1;function Dza(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}Dza.X=1;function Eza(a,d,e,f){v[c[c[a]+17]](a,d,e,f)}Eza.X=1;function Fza(a){return a+7}Fza.X=1;function Gza(a,d,e){var f=b;b+=1;k[f]=e;v[c[c[a]+3]](a,d,f);b=f}Gza.X=1;function Hza(a){return v[c[c[a]+4]](a)}Hza.X=1;function Iza(a,d){v[c[c[a]+14]](a,d)}Iza.X=1;function Jza(a,d,e,f){v[c[c[a]+18]](a,d,e,f)}Jza.X=1;function Kza(a,d){v[c[c[a]+10]](a,d)}Kza.X=1;function Lza(a,d,e,f,g,h,i){Tf(a,d,e,f,g,h,i)}Lza.X=1;function Mza(a){var d=b;b+=4;0==c[Nza]<<24>>24&&Hb(Nza);qG(d,a);c[eV]=c[d];k[eV]=k[d];c[eV+1]=c[d+1];k[eV+1]=k[d+1];c[eV+2]=c[d+2];k[eV+2]=k[d+2];c[eV+3]=c[d+3];k[eV+3]=k[d+3];b=d;return eV}Mza.X=1;function Oza(a){return Uf(a)}Oza.X=1;function Pza(a){return Ie(a)}Pza.X=1;function Qza(a){0!=(a|0)&&yh(a)}Qza.X=1;function Rza(a,d){ZU(a,d)}Rza.X=1;function Sza(){return Tza(32)}Sza.X=1;function Uza(a){var d=Se(56);Vza(d,a);return d}Uza.X=1;function Wza(a,d){c[a+7]=d}Wza.X=1;function Xza(a){return a+8}Xza.X=1;function Yza(a,d){c[a+2]=d}Yza.X=1;function Zza(a,d){k[a+1]=d}Zza.X=1;function $za(a){return k[a+1]}$za.X=1;function aAa(a){return c[a+20]}aAa.X=1;function bAa(a,d){c[a+20]=d}bAa.X=1;function cAa(a){return a+12}cAa.X=1;function dAa(a){return a+16}dAa.X=1;function eAa(a){return c[a+3]}eAa.X=1;function fAa(a){return a+4}fAa.X=1;function gAa(a){return c[a+2]}gAa.X=1;function hAa(a,d){c[a+3]=d}hAa.X=1;function iAa(a){return k[a+22]}iAa.X=1;function jAa(a){return c[a]}jAa.X=1;function kAa(a,d){c[a]=d}kAa.X=1;function lAa(a,d){c[a+3]=d}lAa.X=1;function mAa(a){return a+5}mAa.X=1;function nAa(a,d){c[a+4]=d}nAa.X=1;function oAa(a){return c[a+2]}oAa.X=1;function pAa(a){return a+9}pAa.X=1;function qAa(a,d){c[a+1]=d}qAa.X=1;function rAa(a){return c[a+4]}rAa.X=1;function sAa(a,d){c[a+2]=d}sAa.X=1;function tAa(a){return c[a+3]}tAa.X=1;function uAa(a){return c[a+1]}uAa.X=1;function Tza(a){return Ue(a,16)}Tza.X=1;function vAa(a,d){v[c[c[a]+3]](a,d)}vAa.X=1;function wAa(a,d){v[c[c[a]+2]](a,d)}wAa.X=1;function xAa(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}xAa.X=1;function yAa(a,d){return v[c[c[a]+2]](a,d)}yAa.X=1;function zAa(a,d,e){return v[c[c[a]+3]](a,d,e&1)}zAa.X=1;function AAa(a){return cz(a)}AAa.X=1;function BAa(a,d){var e=a+16;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}BAa.X=1;function CAa(a,d){var e=a+8;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}CAa.X=1;function DAa(a,d){var e=xb(80);fV(e,a,d);return e}DAa.X=1;function EAa(a,d){var e=a+12;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}EAa.X=1;function FAa(a,d){var e=a+4;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}FAa.X=1;function GAa(a,d,e){HAa(a,d,e)}GAa.X=1;function HAa(a,d,e){var f=b;b+=28;var g,h,i=f+4,j=f+8,l=f+12,m=f+16,n=f+20,p=f+24;g=d+12;h=e+12;dc(d,f);dc(e,i);0j&&(j=0),m=a+22,k[m]-=n+j);j=a+8;c[j]=c[g];k[j]=k[g];c[j+1]=c[g+1];k[j+1]=k[g+1];c[j+2]=c[g+2];k[j+2]=k[g+2];c[j+3]=c[g+3];k[j+3]=k[g+3];g=a+12;c[g]=c[h];k[g]=k[h];c[g+1]=c[h+1];k[g+1]=k[h+1];c[g+2]=c[h+2];k[g+2]=k[h+2];c[g+3]=c[h+3];k[g+3]=k[h+3];c[a]=c[f];k[a]=k[f];c[a+1]=c[f+1];k[a+1]=k[f+1];c[a+2]=c[f+2];k[a+2]=k[f+2];c[a+3]=c[f+3];k[a+3]=k[f+3];a+=4;c[a]=c[i];k[a]=k[i];c[a+1]=c[i+1];k[a+1]=k[i+1];c[a+2]=c[i+2];k[a+2]=k[i+2];c[a+3]=c[i+3];k[a+3]=k[i+3];b=f}HAa.X=1;function JAa(a){0!=(a|0)&&xe(a)}JAa.X=1;function KAa(a,d){var e=xb(92);LAa(e,a,d);return e}KAa.X=1;function MAa(a){return iAa(a)}MAa.X=1;function NAa(a,d,e,f,g){OAa(a,d,e,f,g)}NAa.X=1;function OAa(a,d,e,f,g){var h=b;b+=8;var i=h+4;k[a+22]=e;0>24&&Hb(EBa);v[c[c[a]+15]](e,a,d);c[iV]=c[e];k[iV]=k[e];c[iV+1]=c[e+1];k[iV+1]=k[e+1];c[iV+2]=c[e+2];k[iV+2]=k[e+2];c[iV+3]=c[e+3];k[iV+3]=k[e+3];b=e;return iV}DBa.X=1;function FBa(a,d){Je(a,d)}FBa.X=1;function GBa(a,d,e){return v[c[c[a]+28]](a,d,e)}GBa.X=1;function HBa(a){return v[c[c[a]+22]](a)}HBa.X=1;function IBa(a){return v[c[c[a]+7]](a)}IBa.X=1;function JBa(a){return Ye(a)}JBa.X=1;function KBa(a){return v[c[c[a]+19]](a)}KBa.X=1;function LBa(a,d){var e=b;b+=4;0==c[MBa]<<24>>24&&Hb(MBa);kf(e,a,d);c[jV]=c[e];k[jV]=k[e];c[jV+1]=c[e+1];k[jV+1]=k[e+1];c[jV+2]=c[e+2];k[jV+2]=k[e+2];c[jV+3]=c[e+3];k[jV+3]=k[e+3];b=e;return jV}LBa.X=1;function NBa(a,d,e){v[c[c[a]+25]](a,d,e)}NBa.X=1;function OBa(a,d,e){v[c[c[a]+29]](a,d,e)}OBa.X=1;function PBa(a,d){var e=b;b+=4;0==c[QBa]<<24>>24&&Hb(QBa);tf(e,a,d);c[kV]=c[e];k[kV]=k[e];c[kV+1]=c[e+1];k[kV+1]=k[e+1];c[kV+2]=c[e+2];k[kV+2]=k[e+2];c[kV+3]=c[e+3];k[kV+3]=k[e+3];b=e;return kV}PBa.X=1;function RBa(a,d,e,f){df(a,d,e,f)}RBa.X=1;function SBa(a){return v[c[c[a]+12]](a)}SBa.X=1;function TBa(a){return v[c[c[a]+23]](a)}TBa.X=1;function UBa(a){return v[c[c[a]+9]](a)}UBa.X=1;function VBa(a,d,e,f){v[c[c[a]+24]](a,d,e,f)}VBa.X=1;function WBa(a){return a+3}WBa.X=1;function XBa(a,d){Jf(a,d)}XBa.X=1;function YBa(a){return Ge(a)}YBa.X=1;function ZBa(a,d){v[c[c[a]+6]](a,d)}ZBa.X=1;function $Ba(a,d,e,f){v[c[c[a]+2]](a,d,e,f)}$Ba.X=1;function aCa(a){return Le(a)}aCa.X=1;function bCa(a,d){return v[c[c[a]+5]](a,d)}bCa.X=1;function cCa(a){return xf(a)}cCa.X=1;function dCa(a){return zf(a)}dCa.X=1;function eCa(a,d,e){return v[c[c[a]+13]](a,d,e)}eCa.X=1;function fCa(a){return Me(a)}fCa.X=1;function gCa(a){return Bf(a)}gCa.X=1;function hCa(a){return v[c[c[a]+11]](a)}hCa.X=1;function iCa(a,d,e){v[c[c[a]+20]](a,d,e)}iCa.X=1;function jCa(a){return a+7}jCa.X=1;function kCa(a){return v[c[c[a]+21]](a)}kCa.X=1;function lCa(a,d){var e=b;b+=4;0==c[mCa]<<24>>24&&Hb(mCa);v[c[c[a]+16]](e,a,d);c[lV]=c[e];k[lV]=k[e];c[lV+1]=c[e+1];k[lV+1]=k[e+1];c[lV+2]=c[e+2];k[lV+2]=k[e+2];c[lV+3]=c[e+3];k[lV+3]=k[e+3];b=e;return lV}lCa.X=1;function nCa(a){return Kf(a)}nCa.X=1;function oCa(a){return Mf(a)}oCa.X=1;function pCa(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}pCa.X=1;function qCa(a,d,e,f){v[c[c[a]+17]](a,d,e,f)}qCa.X=1;function rCa(a){return a+7}rCa.X=1;function sCa(a,d,e){var f=b;b+=1;k[f]=e;v[c[c[a]+3]](a,d,f);b=f}sCa.X=1;function tCa(a){return v[c[c[a]+4]](a)}tCa.X=1;function uCa(a,d){v[c[c[a]+14]](a,d)}uCa.X=1;function vCa(a,d,e,f){v[c[c[a]+18]](a,d,e,f)}vCa.X=1;function wCa(a,d,e,f,g,h){var i=Fy(84);mV(i,a,d,e,f,g,h);return i}wCa.X=1;function xCa(a){var d=Se(56);yCa(d,a);return d}xCa.X=1;function zCa(a,d,e,f){v[c[c[a]+27]](a,d,e,f)}zCa.X=1;function ACa(a,d){v[c[c[a]+10]](a,d)}ACa.X=1;function BCa(a){return yg(a)}BCa.X=1;function CCa(a,d,e,f,g,h,i){Tf(a,d,e,f,g,h,i)}CCa.X=1;function DCa(a){return Ie(a)}DCa.X=1;function ECa(a){var d=b;b+=4;0==c[FCa]<<24>>24&&Hb(FCa);nV(d,a);c[oV]=c[d];k[oV]=k[d];c[oV+1]=c[d+1];k[oV+1]=k[d+1];c[oV+2]=c[d+2];k[oV+2]=k[d+2];c[oV+3]=c[d+3];k[oV+3]=k[d+3];b=d;return oV}ECa.X=1;function nV(a,d){var e=b;b+=7;var f=e+4,g=e+5,h=e+6,i=d+7;c[a]=c[i];k[a]=k[i];c[a+1]=c[i+1];k[a+1]=k[i+1];c[a+2]=c[i+2];k[a+2]=k[i+2];c[a+3]=c[i+3];k[a+3]=k[i+3];k[f]=v[c[c[d]+11]](d);k[g]=v[c[c[d]+11]](d);k[h]=v[c[c[d]+11]](d);H(e,f,g,h);xn(a,e);b=e}nV.X=1;function GCa(a){return Uf(a)}GCa.X=1;function HCa(a){return Gf(a)}HCa.X=1;function ICa(a,d,e){v[c[c[a]+3]](a,d,e)}ICa.X=1;function JCa(a,d,e){v[c[c[a]+2]](a,d,e)}JCa.X=1;function KCa(a,d,e,f){v[c[c[a]+4]](a,d,e,f)}KCa.X=1;function LCa(a,d,e){v[c[c[a]+8]](a,d,e)}LCa.X=1;function MCa(a){return v[c[c[a]+26]](a)}MCa.X=1;function NCa(a,d){var e=b;b+=4;0==c[OCa]<<24>>24&&Hb(OCa);v[c[c[a]+15]](e,a,d);c[pV]=c[e];k[pV]=k[e];c[pV+1]=c[e+1];k[pV+1]=k[e+1];c[pV+2]=c[e+2];k[pV+2]=k[e+2];c[pV+3]=c[e+3];k[pV+3]=k[e+3];b=e;return pV}NCa.X=1;function PCa(a,d){Je(a,d)}PCa.X=1;function QCa(a,d,e){return v[c[c[a]+28]](a,d,e)}QCa.X=1;function RCa(a){return v[c[c[a]+22]](a)}RCa.X=1;function SCa(a){return v[c[c[a]+7]](a)}SCa.X=1;function TCa(a){return v[c[c[a]+19]](a)}TCa.X=1;function UCa(a){return Ye(a)}UCa.X=1;function VCa(a,d,e){v[c[c[a]+25]](a,d,e)}VCa.X=1;function WCa(a,d){var e=b;b+=4;0==c[XCa]<<24>>24&&Hb(XCa);tf(e,a,d);c[qV]=c[e];k[qV]=k[e];c[qV+1]=c[e+1];k[qV+1]=k[e+1];c[qV+2]=c[e+2];k[qV+2]=k[e+2];c[qV+3]=c[e+3];k[qV+3]=k[e+3];b=e;return qV}WCa.X=1;function YCa(a,d,e,f){df(a,d,e,f)}YCa.X=1;function ZCa(a){return v[c[c[a]+12]](a)}ZCa.X=1;function $Ca(a){return v[c[c[a]+23]](a)}$Ca.X=1;function aDa(a){return v[c[c[a]+9]](a)}aDa.X=1;function bDa(a,d,e,f){v[c[c[a]+24]](a,d,e,f)}bDa.X=1;function cDa(a){return a+3}cDa.X=1;function dDa(a,d){var e=b;b+=4;0==c[eDa]<<24>>24&&Hb(eDa);kf(e,a,d);c[rV]=c[e];k[rV]=k[e];c[rV+1]=c[e+1];k[rV+1]=k[e+1];c[rV+2]=c[e+2];k[rV+2]=k[e+2];c[rV+3]=c[e+3];k[rV+3]=k[e+3];b=e;return rV}dDa.X=1;function fDa(a,d){var e=b;b+=4;0==c[gDa]<<24>>24&&Hb(gDa);v[c[c[a]+16]](e,a,d);c[sV]=c[e];k[sV]=k[e];c[sV+1]=c[e+1];k[sV+1]=k[e+1];c[sV+2]=c[e+2];k[sV+2]=k[e+2];c[sV+3]=c[e+3];k[sV+3]=k[e+3];b=e;return sV}fDa.X=1;function hDa(a,d){v[c[c[a]+6]](a,d)}hDa.X=1;function iDa(a,d,e,f){v[c[c[a]+2]](a,d,e,f)}iDa.X=1;function jDa(a){return Gf(a)}jDa.X=1;function kDa(a,d){return v[c[c[a]+5]](a,d)}kDa.X=1;function lDa(a){return xf(a)}lDa.X=1;function mDa(a){return zf(a)}mDa.X=1;function nDa(a,d,e){return v[c[c[a]+13]](a,d,e)}nDa.X=1;function oDa(a){return Me(a)}oDa.X=1;function pDa(a){return Bf(a)}pDa.X=1;function qDa(a){return v[c[c[a]+11]](a)}qDa.X=1;function rDa(a){bh(a)}rDa.X=1;function sDa(a,d,e){v[c[c[a]+20]](a,d,e)}sDa.X=1;function tDa(a,d){v[c[c[a]+10]](a,d)}tDa.X=1;function uDa(a){return v[c[c[a]+21]](a)}uDa.X=1;function vDa(a){return Le(a)}vDa.X=1;function wDa(a,d){Jf(a,d)}wDa.X=1;function xDa(a){return Kf(a)}xDa.X=1;function yDa(a){return Mf(a)}yDa.X=1;function zDa(a,d,e,f){v[c[c[a]+17]](a,d,e,f)}zDa.X=1;function ADa(a){return a+7}ADa.X=1;function BDa(a,d,e){var f=b;b+=1;k[f]=e;v[c[c[a]+3]](a,d,f);b=f}BDa.X=1;function CDa(a){return v[c[c[a]+4]](a)}CDa.X=1;function DDa(a,d){v[c[c[a]+14]](a,d)}DDa.X=1;function EDa(a,d,e,f){v[c[c[a]+18]](a,d,e,f)}EDa.X=1;function FDa(a,d,e,f){v[c[c[a]+27]](a,d,e,f)}FDa.X=1;function GDa(a){return Ge(a)}GDa.X=1;function HDa(a){return yg(a)}HDa.X=1;function IDa(a,d,e,f,g,h,i){Tf(a,d,e,f,g,h,i)}IDa.X=1;function JDa(a){return Ie(a)}JDa.X=1;function KDa(a){return Uf(a)}KDa.X=1;function LDa(a,d,e,f,g){eh(a,d,e,f,g)}LDa.X=1;function MDa(a,d,e){v[c[c[a]+8]](a,d,e)}MDa.X=1;function NDa(a){return Ge(a)}NDa.X=1;function ODa(a,d){var e=b;b+=4;0==c[PDa]<<24>>24&&Hb(PDa);v[c[c[a]+15]](e,a,d);c[tV]=c[e];k[tV]=k[e];c[tV+1]=c[e+1];k[tV+1]=k[e+1];c[tV+2]=c[e+2];k[tV+2]=k[e+2];c[tV+3]=c[e+3];k[tV+3]=k[e+3];b=e;return tV}ODa.X=1;function QDa(a,d){Je(a,d)}QDa.X=1;function RDa(a){return Ke(a)}RDa.X=1;function SDa(a,d,e){return v[c[c[a]+13]](a,d,e)}SDa.X=1;function TDa(a){return v[c[c[a]+7]](a)}TDa.X=1;function UDa(a){return v[c[c[a]+19]](a)}UDa.X=1;function VDa(a){return Ye(a)}VDa.X=1;function WDa(a){return cf(a)}WDa.X=1;function XDa(a,d,e,f){df(a,d,e,f)}XDa.X=1;function YDa(a){return v[c[c[a]+12]](a)}YDa.X=1;function ZDa(a){return v[c[c[a]+9]](a)}ZDa.X=1;function $Da(a){return gf(a)}$Da.X=1;function aEa(a){return a+3}aEa.X=1;function bEa(a,d){var e=b;b+=4;0==c[cEa]<<24>>24&&Hb(cEa);kf(e,a,d);c[uV]=c[e];k[uV]=k[e];c[uV+1]=c[e+1];k[uV+1]=k[e+1];c[uV+2]=c[e+2];k[uV+2]=k[e+2];c[uV+3]=c[e+3];k[uV+3]=k[e+3];b=e;return uV}bEa.X=1;function dEa(a,d){var e=b;b+=4;0==c[eEa]<<24>>24&&Hb(eEa);v[c[c[a]+16]](e,a,d);c[vV]=c[e];k[vV]=k[e];c[vV+1]=c[e+1];k[vV+1]=k[e+1];c[vV+2]=c[e+2];k[vV+2]=k[e+2];c[vV+3]=c[e+3];k[vV+3]=k[e+3];b=e;return vV}dEa.X=1;function fEa(a,d){v[c[c[a]+6]](a,d)}fEa.X=1;function gEa(a,d,e,f){v[c[c[a]+2]](a,d,e,f)}gEa.X=1;function hEa(a){return Le(a)}hEa.X=1;function iEa(a,d){var e=b;b+=4;0==c[jEa]<<24>>24&&Hb(jEa);tf(e,a,d);c[wV]=c[e];k[wV]=k[e];c[wV+1]=c[e+1];k[wV+1]=k[e+1];c[wV+2]=c[e+2];k[wV+2]=k[e+2];c[wV+3]=c[e+3];k[wV+3]=k[e+3];b=e;return wV}iEa.X=1;function kEa(a,d){return v[c[c[a]+5]](a,d)}kEa.X=1;function lEa(a){return xf(a)}lEa.X=1;function mEa(a){return zf(a)}mEa.X=1;function nEa(a,d){var e=Se(56);oEa(e,a,d);return e}nEa.X=1;function pEa(a){return Me(a)}pEa.X=1;function qEa(a){return Bf(a)}qEa.X=1;function rEa(a){return v[c[c[a]+11]](a)}rEa.X=1;function sEa(a,d,e){v[c[c[a]+20]](a,d,e)}sEa.X=1;function tEa(a,d){v[c[c[a]+10]](a,d)}tEa.X=1;function uEa(a){return Gf(a)}uEa.X=1;function vEa(a,d){Jf(a,d)}vEa.X=1;function wEa(a){return Kf(a)}wEa.X=1;function xEa(a){return Mf(a)}xEa.X=1;function yEa(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}yEa.X=1;function zEa(a,d,e,f){v[c[c[a]+17]](a,d,e,f)}zEa.X=1;function AEa(a){return a+7}AEa.X=1;function BEa(a,d,e){var f=b;b+=1;k[f]=e;v[c[c[a]+3]](a,d,f);b=f}BEa.X=1;function CEa(a){return v[c[c[a]+4]](a)}CEa.X=1;function DEa(a,d){v[c[c[a]+14]](a,d)}DEa.X=1;function EEa(a,d,e,f){v[c[c[a]+18]](a,d,e,f)}EEa.X=1;function FEa(a,d,e,f,g,h,i){Tf(a,d,e,f,g,h,i)}FEa.X=1;function GEa(a){return Uf(a)}GEa.X=1;function HEa(a){return Ie(a)}HEa.X=1;function IEa(a,d){var e=b;b+=4;0==c[JEa]<<24>>24&&Hb(JEa);KEa(e,a,d);c[xV]=c[e];k[xV]=k[e];c[xV+1]=c[e+1];k[xV+1]=k[e+1];c[xV+2]=c[e+2];k[xV+2]=k[e+2];c[xV+3]=c[e+3];k[xV+3]=k[e+3];b=e;return xV}IEa.X=1;function KEa(a,d,e){var f=b;b+=16;var g=f+4,h=f+8,i=f+12;LEa(h,d,e);c[f]=c[h];k[f]=k[h];c[f+1]=c[h+1];k[f+1]=k[h+1];c[f+2]=c[h+2];k[f+2]=k[h+2];c[f+3]=c[h+3];k[f+3]=k[h+3];MEa(i,d,e);c[g]=c[i];k[g]=k[i];c[g+1]=c[i+1];k[g+1]=k[i+1];c[g+2]=c[i+2];k[g+2]=k[i+2];c[g+3]=c[i+3];k[g+3]=k[i+3];yV(f,f)>24&&Hb(QEa);REa(e,a,d);c[zV]=c[e];k[zV]=k[e];c[zV+1]=c[e+1];k[zV+1]=k[e+1];c[zV+2]=c[e+2];k[zV+2]=k[e+2];c[zV+3]=c[e+3];k[zV+3]=k[e+3];b=e;return zV}PEa.X=1;function REa(a,d,e){var f=b;b+=16;var g=f+4,h=f+8,i=f+12;LEa(h,d,e);c[f]=c[h];k[f]=k[h];c[f+1]=c[h+1];k[f+1]=k[h+1];c[f+2]=c[h+2];k[f+2]=k[h+2];c[f+3]=c[h+3];k[f+3]=k[h+3];MEa(i,d,e);c[g]=c[i];k[g]=k[i];c[g+1]=c[i+1];k[g+1]=k[i+1];c[g+2]=c[i+2];k[g+2]=k[i+2];c[g+3]=c[i+3];k[g+3]=k[i+3];yV(f,f)>yV(g,g)?(c[a]=c[e],k[a]=k[e],c[a+1]=c[e+1],k[a+1]=k[e+1],c[a+2]=c[e+2],k[a+2]=k[e+2],c[a+3]=c[e+3],k[a+3]=k[e+3]):NEa(a,e);b=f}REa.X=1;function SEa(a){return k[a]}SEa.X=1;function TEa(a){return k[a+1]}TEa.X=1;function UEa(a){return k[a+2]}UEa.X=1;function VEa(a,d,e,f){var g=b;b+=3;var h=g+1,i=g+2;k[g]=d;k[h]=e;k[i]=f;WEa(a,g,h,i);b=g}VEa.X=1;function WEa(a,d,e,f){var g=b;b+=4;var h,i,j,l=g+1,m=g+2,n=g+3,d=.5*k[d];h=.5*k[e];e=.5*k[f];f=td(d);d=ud(d);i=td(h);h=ud(h);j=td(e);e=ud(e);k[g]=j*h*f+e*i*d;k[l]=j*i*d-e*h*f;k[m]=e*i*f-j*h*d;k[n]=j*i*f+e*h*d;jc(a,g,l,m,n);b=g}WEa.X=1;function XEa(a,d){return YEa(a,d)}XEa.X=1;function YEa(a,d){k[a]-=k[d];var e=a+1;k[e]-=k[d+1];e=a+2;k[e]-=k[d+2];e=a+3;k[e]-=k[d+3];return a}YEa.X=1;function ZEa(a){return k[a+3]}ZEa.X=1;function $Ea(a){return AV(a)}$Ea.X=1;function AV(a){var d=b;b+=1;k[d]=BV(a);a=aFa(a,d);b=d;return a}AV.X=1;function bFa(a,d,e){var f=b;b+=5;var g=f+1;k[f]=e;0==c[cFa]<<24>>24&&Hb(cFa);dFa(g,a,d,f);c[CV]=c[g];k[CV]=k[g];c[CV+1]=c[g+1];k[CV+1]=k[g+1];c[CV+2]=c[g+2];k[CV+2]=k[g+2];c[CV+3]=c[g+3];k[CV+3]=k[g+3];b=f;return CV}bFa.X=1;function eFa(a,d){k[a]*=k[d];var e=a+1;k[e]*=k[d];e=a+2;k[e]*=k[d];e=a+3;k[e]*=k[d];return a}eFa.X=1;function dFa(a,d,e,f){var g=b;b+=8;var h,i,j,l=g+1,m=g+2,n=g+3,p=g+4,r=g+5,s=g+6,t=g+7;h=DV(d,e);if(0!=h){i=1/ud(h);j=ud((1-k[f])*h);f=ud(k[f]*h);h=k[d]*j;var w=k[e];0>yV(d,e)?(k[g]=(h+ -w*f)*i,k[l]=(k[d+1]*j+ -k[e+1]*f)*i,k[m]=(k[d+2]*j+ -k[e+2]*f)*i,k[n]=(k[d+3]*j+ -k[e+3]*f)*i,NG(a,g,l,m,n)):(k[p]=(h+w*f)*i,k[r]=(k[d+1]*j+k[e+1]*f)*i,k[s]=(k[d+2]*j+k[e+2]*f)*i,k[t]=(k[d+3]*j+k[e+3]*f)*i,NG(a,p,r,s,t))}else{c[a]=c[d],k[a]=k[d],c[a+1]=c[d+1],k[a+1]=k[d+1],c[a+2]=c[d+2],k[a+2]=k[d+2],c[a+3]=c[d+3],k[a+3]=k[d+3]}b=g}dFa.X=1;function fFa(a){var d=b;b+=4;0==c[gFa]<<24>>24&&Hb(gFa);EV(d,a);c[FV]=c[d];k[FV]=k[d];c[FV+1]=c[d+1];k[FV+1]=k[d+1];c[FV+2]=c[d+2];k[FV+2]=k[d+2];c[FV+3]=c[d+3];k[FV+3]=k[d+3];b=d;return FV}fFa.X=1;function EV(a,d){var e=b;b+=3;var f=e+1,g=e+2;k[e]=-k[d];k[f]=-k[d+1];k[g]=-k[d+2];NG(a,e,f,g,d+3);b=e}EV.X=1;function hFa(a,d){return DV(a,d)}hFa.X=1;function DV(a,d){var e;e=ec(rd(a)*rd(d));return MB(yV(a,d)/e)}DV.X=1;function iFa(a){var d=b;b+=4;0==c[jFa]<<24>>24&&Hb(jFa);kFa(d,a);c[GV]=c[d];k[GV]=k[d];c[GV+1]=c[d+1];k[GV+1]=k[d+1];c[GV+2]=c[d+2];k[GV+2]=k[d+2];c[GV+3]=c[d+3];k[GV+3]=k[d+3];b=d;return GV}iFa.X=1;function kFa(a,d){var e=b;b+=6;var f,g=e+1,h=e+2,i=e+3,j=e+4,l=e+5;f=1-lFa(k[d+3],2);11920928955078125e-22>f?(k[e]=1,k[g]=0,k[h]=0,H(a,e,g,h)):(f=ec(f),k[i]=k[d]/f,k[j]=k[d+1]/f,k[l]=k[d+2]/f,H(a,i,j,l));b=e}kFa.X=1;function mFa(){nFa();return HV}mFa.X=1;function nFa(){var a=b;b+=4;var d=a+1,e=a+2,f=a+3;0==c[oFa]<<24>>24&&0!=(Hb(oFa)|0)&&(k[a]=0,k[d]=0,k[e]=0,k[f]=1,NG(HV,a,d,e,f));b=a;return HV}nFa.X=1;function pFa(a,d){DG(a,d)}pFa.X=1;function qFa(a,d){return rFa(a,d)}qFa.X=1;function rFa(a,d){k[a]+=k[d];var e=a+1;k[e]+=k[d+1];e=a+2;k[e]+=k[d+2];e=a+3;k[e]+=k[d+3];return a}rFa.X=1;function sFa(a,d){var e=b;b+=1;k[e]=d;var f=eFa(a,e);b=e;return f}sFa.X=1;function tFa(a,d,e){var f=b;b+=1;k[f]=e;IV(a,d,f);b=f}tFa.X=1;function IV(a,d,e){var f=b;b+=4;var g,h=f+1,i=f+2,j=f+3;g=JB(d);g=ud(.5*k[e])/g;k[f]=k[d]*g;k[h]=k[d+1]*g;k[i]=k[d+2]*g;k[j]=td(.5*k[e]);jc(a,f,h,i,j);b=f}IV.X=1;function uFa(a,d,e,f){var g=b;b+=3;var h=g+1,i=g+2;k[g]=d;k[h]=e;k[i]=f;vFa(a,g,h,i);b=g}uFa.X=1;function vFa(a,d,e,f){var g=b;b+=4;var h,i,j,l=g+1,m=g+2,n=g+3,d=.5*k[d];h=.5*k[e];e=.5*k[f];f=td(d);d=ud(d);i=td(h);h=ud(h);j=td(e);e=ud(e);k[g]=e*i*f-j*h*d;k[l]=j*h*f+e*i*d;k[m]=j*i*d-e*h*f;k[n]=j*i*f+e*h*d;jc(a,g,l,m,n);b=g}vFa.X=1;function wFa(a,d,e,f){var g=b;b+=3;var h=g+1,i=g+2;k[g]=d;k[h]=e;k[i]=f;gG(a,g,h,i);b=g}wFa.X=1;function xFa(a,d,e,f,g){var h=b;b+=4;var i=h+1,j=h+2,l=h+3;k[h]=d;k[i]=e;k[j]=f;k[l]=g;jc(a,h,i,j,l);b=h}xFa.X=1;function yFa(){return xb(16)}yFa.X=1;function zFa(a,d){var e=b;b+=1;k[e]=d;var f=xb(16);IV(f,a,e);b=e;return f}zFa.X=1;function AFa(a,d,e){var f=b;b+=3;var g=f+1,h=f+2;k[f]=a;k[g]=d;k[h]=e;a=xb(16);WEa(a,f,g,h);b=f;return a}AFa.X=1;function BFa(a,d,e,f){var g=b;b+=4;var h=g+1,i=g+2,j=g+3;k[g]=a;k[h]=d;k[i]=e;k[j]=f;a=xb(16);NG(a,g,h,i,j);b=g;return a}BFa.X=1;function CFa(a,d){var e=b;b+=1;k[e]=d;var f=aFa(a,e);b=e;return f}CFa.X=1;function aFa(a,d){var e=b;b+=1;k[e]=1/k[d];var f=eFa(a,e);b=e;return f}aFa.X=1;function DFa(a,d){iG(a,d)}DFa.X=1;function EFa(a){var d=b;b+=4;0==c[FFa]<<24>>24&&Hb(FFa);GFa(d,a);c[JV]=c[d];k[JV]=k[d];c[JV+1]=c[d+1];k[JV+1]=k[d+1];c[JV+2]=c[d+2];k[JV+2]=k[d+2];c[JV+3]=c[d+3];k[JV+3]=k[d+3];b=d;return JV}EFa.X=1;function GFa(a,d){var e=b;b+=1;k[e]=BV(d);HFa(a,d,e);b=e}GFa.X=1;function IFa(a,d){k[a]=d}IFa.X=1;function JFa(a,d){jG(a,d)}JFa.X=1;function KFa(a,d){kG(a,d)}KFa.X=1;function LFa(a){0!=(a|0)&&xe(a)}LFa.X=1;function MFa(a){return KV(a)}MFa.X=1;function KV(a){return 2*MB(k[a+3])}KV.X=1;function NFa(a){return rd(a)}NFa.X=1;function rd(a){return yV(a,a)}rd.X=1;function OFa(a){return BV(a)}OFa.X=1;function BV(a){return ec(rd(a))}BV.X=1;function PFa(a){return k[a+3]}PFa.X=1;function QFa(a){return k[a+1]}QFa.X=1;function RFa(a){return k[a]}RFa.X=1;function SFa(a){return k[a+2]}SFa.X=1;function TFa(a,d){return yV(a,d)}TFa.X=1;function yV(a,d){return k[a]*k[d]+k[a+1]*k[d+1]+k[a+2]*k[d+2]+k[a+3]*k[d+3]}yV.X=1;function UFa(a,d,e){v[c[c[a]+8]](a,d,e)}UFa.X=1;function VFa(a){return Ge(a)}VFa.X=1;function WFa(a,d){var e=b;b+=4;0==c[XFa]<<24>>24&&Hb(XFa);v[c[c[a]+15]](e,a,d);c[LV]=c[e];k[LV]=k[e];c[LV+1]=c[e+1];k[LV+1]=k[e+1];c[LV+2]=c[e+2];k[LV+2]=k[e+2];c[LV+3]=c[e+3];k[LV+3]=k[e+3];b=e;return LV}WFa.X=1;function YFa(a,d){Je(a,d)}YFa.X=1;function ZFa(a){return Ke(a)}ZFa.X=1;function $Fa(a,d,e){return v[c[c[a]+13]](a,d,e)}$Fa.X=1;function aGa(a){return v[c[c[a]+7]](a)}aGa.X=1;function bGa(a){return v[c[c[a]+19]](a)}bGa.X=1;function cGa(a){return Ye(a)}cGa.X=1;function dGa(a){return cf(a)}dGa.X=1;function eGa(a,d,e,f){df(a,d,e,f)}eGa.X=1;function fGa(a){return v[c[c[a]+12]](a)}fGa.X=1;function gGa(a){return v[c[c[a]+9]](a)}gGa.X=1;function hGa(a){return gf(a)}hGa.X=1;function iGa(a){return a+3}iGa.X=1;function jGa(a,d){var e=b;b+=4;0==c[kGa]<<24>>24&&Hb(kGa);kf(e,a,d);c[MV]=c[e];k[MV]=k[e];c[MV+1]=c[e+1];k[MV+1]=k[e+1];c[MV+2]=c[e+2];k[MV+2]=k[e+2];c[MV+3]=c[e+3];k[MV+3]=k[e+3];b=e;return MV}jGa.X=1;function lGa(a,d){var e=b;b+=4;0==c[mGa]<<24>>24&&Hb(mGa);v[c[c[a]+16]](e,a,d);c[NV]=c[e];k[NV]=k[e];c[NV+1]=c[e+1];k[NV+1]=k[e+1];c[NV+2]=c[e+2];k[NV+2]=k[e+2];c[NV+3]=c[e+3];k[NV+3]=k[e+3];b=e;return NV}lGa.X=1;function nGa(a,d){v[c[c[a]+6]](a,d)}nGa.X=1;function oGa(a,d,e,f){v[c[c[a]+2]](a,d,e,f)}oGa.X=1;function pGa(a){return Le(a)}pGa.X=1;function qGa(a,d){var e=b;b+=4;0==c[rGa]<<24>>24&&Hb(rGa);tf(e,a,d);c[OV]=c[e];k[OV]=k[e];c[OV+1]=c[e+1];k[OV+1]=k[e+1];c[OV+2]=c[e+2];k[OV+2]=k[e+2];c[OV+3]=c[e+3];k[OV+3]=k[e+3];b=e;return OV}qGa.X=1;function sGa(a,d){return v[c[c[a]+5]](a,d)}sGa.X=1;function tGa(a){return xf(a)}tGa.X=1;function uGa(a){return zf(a)}uGa.X=1;function vGa(a,d){var e=Se(56);wGa(e,a,d);return e}vGa.X=1;function xGa(a){return Me(a)}xGa.X=1;function yGa(a){return Bf(a)}yGa.X=1;function zGa(a){return v[c[c[a]+11]](a)}zGa.X=1;function AGa(a,d,e){v[c[c[a]+20]](a,d,e)}AGa.X=1;function BGa(a,d){v[c[c[a]+10]](a,d)}BGa.X=1;function CGa(a){return Gf(a)}CGa.X=1;function DGa(a,d){Jf(a,d)}DGa.X=1;function EGa(a){return Kf(a)}EGa.X=1;function FGa(a){return Mf(a)}FGa.X=1;function GGa(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}GGa.X=1;function HGa(a,d,e,f){v[c[c[a]+17]](a,d,e,f)}HGa.X=1;function IGa(a){return a+7}IGa.X=1;function JGa(a,d,e){var f=b;b+=1;k[f]=e;v[c[c[a]+3]](a,d,f);b=f}JGa.X=1;function KGa(a){return v[c[c[a]+4]](a)}KGa.X=1;function LGa(a,d){v[c[c[a]+14]](a,d)}LGa.X=1;function MGa(a,d,e,f){v[c[c[a]+18]](a,d,e,f)}MGa.X=1;function NGa(a,d,e,f,g,h,i){Tf(a,d,e,f,g,h,i)}NGa.X=1;function OGa(a){return Uf(a)}OGa.X=1;function PGa(a){return Ie(a)}PGa.X=1;function QGa(a,d,e){v[c[c[a]+8]](a,d,e)}QGa.X=1;function RGa(a,d){Je(a,d)}RGa.X=1;function SGa(a,d,e){return v[c[c[a]+13]](a,d,e)}SGa.X=1;function TGa(a){return v[c[c[a]+7]](a)}TGa.X=1;function UGa(a,d,e,f){v[c[c[a]+15]](a,d,e,f)}UGa.X=1;function VGa(a){return v[c[c[a]+12]](a)}VGa.X=1;function WGa(a){return v[c[c[a]+9]](a)}WGa.X=1;function XGa(a){return Ge(a)}XGa.X=1;function YGa(a){return Ye(a)}YGa.X=1;function ZGa(a,d){v[c[c[a]+6]](a,d)}ZGa.X=1;function $Ga(a,d,e,f){v[c[c[a]+2]](a,d,e,f)}$Ga.X=1;function aHa(a,d){return v[c[c[a]+5]](a,d)}aHa.X=1;function bHa(a){return xf(a)}bHa.X=1;function cHa(a){return zf(a)}cHa.X=1;function dHa(a){return Me(a)}dHa.X=1;function eHa(a){return Bf(a)}eHa.X=1;function fHa(a){return v[c[c[a]+11]](a)}fHa.X=1;function gHa(a,d){v[c[c[a]+10]](a,d)}gHa.X=1;function hHa(a){return Gf(a)}hHa.X=1;function iHa(a){return Kf(a)}iHa.X=1;function jHa(a,d,e,f,g,h,i){Tf(a,d,e,f,g,h,i)}jHa.X=1;function kHa(a,d,e){var f=b;b+=1;k[f]=e;v[c[c[a]+3]](a,d,f);b=f}kHa.X=1;function lHa(a){return v[c[c[a]+4]](a)}lHa.X=1;function mHa(a){return k[a+26]}mHa.X=1;function nHa(a){return k[a+25]}nHa.X=1;function oHa(a,d){k[a+21]=d}oHa.X=1;function pHa(a){return k[a+24]}pHa.X=1;function qHa(a,d){k[a+23]=d}qHa.X=1;function rHa(a,d){k[a+22]=d}rHa.X=1;function sHa(a){return k[a+23]}sHa.X=1;function tHa(a){return k[a+21]}tHa.X=1;function uHa(a,d){k[a+24]=d}uHa.X=1;function vHa(a,d){k[a+25]=d}vHa.X=1;function wHa(a,d){k[a+26]=d}wHa.X=1;function xHa(a){return k[a+22]}xHa.X=1;function yHa(a,d){c[a+1]=d}yHa.X=1;function zHa(a){return a+2}zHa.X=1;function AHa(a){return c[a]}AHa.X=1;function BHa(a,d){k[a+10]=d}BHa.X=1;function CHa(a,d){c[a]=d}CHa.X=1;function DHa(a){return k[a+10]}DHa.X=1;function EHa(a){return c[a+1]}EHa.X=1;function FHa(a){return a+6}FHa.X=1;function GHa(a){return c[a+15]}GHa.X=1;function HHa(a,d){v[c[c[a]+14]](a,d)}HHa.X=1;function IHa(a){return Uf(a)}IHa.X=1;function JHa(a){return Ie(a)}JHa.X=1;function KHa(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}KHa.X=1;function LHa(a){return v[c[c[a]+2]](a)}LHa.X=1;function MHa(a,d){NHa(a,d)}MHa.X=1;function NHa(a,d){var e=b;b+=7;var f,g=e+1,h=e+2,i=e+6;k[a+21]=k[d+4];k[a+22]=k[d+5];k[a+23]=k[d+6];k[a+24]=k[d+7];k[a+26]=k[d+8];f=c[d+10];c[e]=0;PV(a+4,f,e);f=0;var j=(f|0)<(c[d+10]|0);a:do{if(j){for(var l=a+4;;){if(c[QV(l,f)]=c[c[d]+f],f+=1,(f|0)>=(c[d+10]|0)){break a}}}}while(0);f=c[d+9];c[g]=0;PV(a+9,f,g);f=0;g=(f|0)<(c[d+9]|0);a:do{if(g){for(j=a+9;;){if(c[QV(j,f)]=c[c[d+1]+f],f+=1,(f|0)>=(c[d+9]|0)){break a}}}}while(0);f=c[d+11];cE(h);OHa(a+14,f,h);f=0;h=(f|0)<(c[d+11]|0);a:do{if(h){for(var g=a+14,j=a+14,l=a+14,m=a+14;;){if(k[RV(g,f)+1]=k[(f<<2)+c[d+2]+1],k[RV(j,f)+2]=k[(f<<2)+c[d+2]+2],k[RV(l,f)+3]=k[(f<<2)+c[d+2]+3],c[RV(m,f)]=c[(f<<2)+c[d+2]],f+=1,(f|0)>=(c[d+11]|0)){break a}}}}while(0);f=c[d+12];c[i]=0;PHa(a+19,f,i);f=0;i=(f|0)<(c[d+12]|0);a:do{if(i){for(h=a+19;;){if(c[QHa(h,f)]=c[c[d+3]+f],f+=1,(f|0)>=(c[d+12]|0)){break a}}}}while(0);b=e}NHa.X=1;function RHa(a,d,e){return v[c[c[a]+3]](a,d,e)}RHa.X=1;function SHa(a){0!=(a|0)&&xe(a)}SHa.X=1;function THa(a,d){var e=a+2;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}THa.X=1;function UHa(a,d,e,f,g){var h=xb(44);SV(h,a,d,e,f,g);return h}UHa.X=1;function VHa(a,d){var e=a+6;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}VHa.X=1;function WHa(a){return GHa(a)}WHa.X=1;function XHa(a,d,e,f,g,h,i,j){return TV(a,d,e,f,g,h,i,j)}XHa.X=1;function TV(a,d,e,f,g,h,i,j){var l=b;b+=6;var m=l+3;UV(a,l,d,0);UV(a,m,e,1);d=YHa(a);e=VV(a,d);c[e+4]=d;c[e]=f;c[e+1]=g;c[e+2]=h;c[e+3]=j;for(var f=c[a+15]<<1,g=0,h=a+17,j=a+19,n=a+19,p=a+19,r=a+19,s=a+19,t=a+19;;){var w=c[h]+g+16;c[w]+=2;var w=(f+1<<1)+c[j+g],x=(f-1<<1)+c[n+g];c[w]=c[x];k[w]=k[x];c[w+1]=c[x+1];k[w+1]=k[x+1];c[(f-1<<1)+c[p+g]]=c[l+g];c[(f-1<<1)+c[r+g]+1]=d;c[(f<<1)+c[s+g]]=c[m+g];c[(f<<1)+c[t+g]+1]=d;c[e+(g+13)]=f-1;c[e+(g+16)]=f;g=w=g+1;if(3<=w>>>0){break}}WV(a,0,c[e+13],i,0);XV(a,0,c[e+16],i,0);WV(a,1,c[e+14],i,0);XV(a,1,c[e+17],i,0);WV(a,2,c[e+15],i,1);XV(a,2,c[e+18],i,1);b=l;return d}TV.X=1;function ZHa(a,d,e,f){UV(a,d,e,f)}ZHa.X=1;function $Ha(a){return c[a+26]}$Ha.X=1;function YV(a,d,e){var f;$2=a;var g=a=0;a:for(;;){if(3>(g|0)){g=c[d+(a+16)]>>>0>>0;do{if(!g&&c[e+(a+16)]>>>0>=c[d+(a+13)]>>>0){a=g=a+1;continue a}}while(0);f=0;break}f=1;break}return f}YV.X=1;function UV(a,d,e,f){var g=b;b+=8;var h=g+4;N(h,e,a+3);ig(g,h,a+11);c[d]=0>=k[g]?f:k[g]>=c[a+2]>>>0?c[a+1]&c[a+2]|f:Math.floor(k[g])&c[a+1]|f;c[d+1]=0>=k[g+1]?f:k[g+1]>=c[a+2]>>>0?c[a+1]&c[a+2]|f:Math.floor(k[g+1])&c[a+1]|f;c[d+2]=0>=k[g+2]?f:k[g+2]>=c[a+2]>>>0?c[a+1]&c[a+2]|f:Math.floor(k[g+2])&c[a+1]|f;b=g}UV.X=1;function aIa(a,d,e){ZV(a,d,e)}aIa.X=1;function ZV(a,d,e){var f,g,h,i,j;f=VV(a,d);g=c[a+25];v[c[c[g]+14]](g)||(g=c[a+25],v[c[c[g]+4]](g,f,e));g=c[a+15]<<1;h=0;for(var l=a+17;;){var m=c[l]+h+16;c[m]-=2;h=m=h+1;if(3<=(m|0)){break}}h=0;for(var l=a+19,m=a+2,n=a+2,p=a+2;!(i=c[l+h],j=c[f+(h+16)],c[(j<<1)+i]=c[m],bIa(a,h,j,e,0),j=c[f+(h+13)],c[(j<<1)+i]=c[n],cIa(a,h,j,e,0),c[(g-1<<1)+i+1]=0,c[(g-1<<1)+i]=c[p],h=i=h+1,3<=(i|0));){}dIa(a,d)}ZV.X=1;function eIa(a){return $Ha(a)}eIa.X=1;function fIa(a,d){gIa(a,d)}fIa.X=1;function hIa(a,d,e,f){var g=b;b+=14;var h=g+4,i=g+5,j=g+6,l=g+7,m=g+11,n=g+12,p=g+13,r=c[c[a]+6];k[h]=0;k[i]=0;k[j]=0;H(g,h,i,j);k[m]=0;k[n]=0;k[p]=0;H(l,m,n,p);v[r](a,d,e,f,g,l);b=g}hIa.X=1;function iIa(a,d,e,f,g){var h=b;b+=7;var i=h+4,j=h+5,l=h+6,m=c[c[a]+6];k[i]=0;k[j]=0;k[l]=0;H(h,i,j,l);v[m](a,d,e,f,g,h);b=h}iIa.X=1;function jIa(a,d,e,f,g,h){v[c[c[a]+6]](a,d,e,f,g,h)}jIa.X=1;function kIa(a,d,e,f,g){v[c[c[a]+4]](a,d,e,f,g)}kIa.X=1;function lIa(a,d){v[c[c[a]+12]](a,d)}lIa.X=1;function mIa(a,d,e){return YV(a,d,e)}mIa.X=1;function nIa(a,d,e,f){v[c[c[a]+5]](a,d,e,f)}nIa.X=1;function oIa(a,d,e,f,g){$V(a,d,e,f,g)}oIa.X=1;function $V(a,d,e,f,g){var h=b;b+=6;var i=h+3,j,l,m,n,d=VV(a,d);UV(a,h,e,0);UV(a,i,f,1);for(var e=0,f=a+19,p=a+19,r=a+19,s=a+19;!(j=c[d+(e+13)],l=c[d+(e+16)],m=c[h+e]-c[(j<<1)+c[f+e]],n=c[i+e]-c[(l<<1)+c[p+e]],c[(j<<1)+c[r+e]]=c[h+e],c[(l<<1)+c[s+e]]=c[i+e],0>(m|0)&&WV(a,e,j,g,1),0<(n|0)&&bIa(a,e,l,g,1),0<(m|0)&&cIa(a,e,j,g,1),0>(n|0)&&XV(a,e,l,g,1),e=j=e+1,3<=(j|0));){}b=h}$V.X=1;function aW(a){return Ue(a,16)}aW.X=1;function pIa(a){v[c[c[a]+13]](a)}pIa.X=1;function qIa(a,d,e,f,g,h,i,j,l){return v[c[c[a]+2]](a,d,e,f,g,h,i,j,l)}qIa.X=1;function rIa(a,d){var e=aW(124);bW(e,a,d,15e5,0,0);return e}rIa.X=1;function sIa(a,d,e){var f=aW(124);bW(f,a,d,e,0,0);return f}sIa.X=1;function tIa(a,d,e,f){var g=aW(124);bW(g,a,d,e,f,0);return g}tIa.X=1;function uIa(a,d,e,f,g){var g=g&1,h=aW(124);bW(h,a,d,e,f,g&1);return h}uIa.X=1;function vIa(a,d){c[a+26]=d}vIa.X=1;function VV(a,d){return c[a+17]+20*d}VV.X=1;function wIa(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}wIa.X=1;function xIa(a,d){vIa(a,d)}xIa.X=1;function yIa(a,d){v[c[c[a]+8]](a,d)}yIa.X=1;function zIa(a){return v[c[c[a]+9]](a)}zIa.X=1;function AIa(a,d,e,f){BIa(a,d,e,f)}AIa.X=1;function BIa(a,d,e,f){var g=b;b+=12;var h=g+3,i=g+6,j=g+7,l=g+8,m=g+9,n=g+10,p=g+11;c[g]=c[(c[d+13]<<1)+c[a+19]]&65535;c[h]=c[(c[d+16]<<1)+c[a+19]]+1&65535;c[g+1]=c[(c[d+14]<<1)+c[a+20]]&65535;c[h+1]=c[(c[d+17]<<1)+c[a+20]]+1&65535;c[g+2]=c[(c[d+15]<<1)+c[a+21]]&65535;c[h+2]=c[(c[d+18]<<1)+c[a+21]]+1&65535;k[i]=(c[g]&65535)/k[a+11];k[j]=(c[g+1]&65535)/k[a+11+1];k[l]=(c[g+2]&65535)/k[a+11+2];pe(e,i,j,l);xn(e,a+3);k[m]=(c[h]&65535)/k[a+11];k[n]=(c[h+1]&65535)/k[a+11+1];k[p]=(c[h+2]&65535)/k[a+11+2];pe(f,m,n,p);xn(f,a+3);b=g}BIa.X=1;function CIa(a,d,e,f){v[c[c[a]+7]](a,d,e,f)}CIa.X=1;function DIa(a,d,e){v[c[c[a]+11]](a,d,e)}DIa.X=1;function EIa(a,d,e){v[c[c[a]+3]](a,d,e)}EIa.X=1;function FIa(a,d){return VV(a,d)}FIa.X=1;function GIa(a,d){v[c[c[a]+4]](a,d)}GIa.X=1;function HIa(a,d,e,f,g){return v[c[c[a]+3]](a,d,e,f,g)}HIa.X=1;function IIa(a,d,e,f,g){v[c[c[a]+2]](a,d,e,f,g)}IIa.X=1;function JIa(a,d,e){v[c[c[a]+8]](a,d,e)}JIa.X=1;function KIa(a){return Ge(a)}KIa.X=1;function LIa(a,d){var e=b;b+=4;0==c[MIa]<<24>>24&&Hb(MIa);v[c[c[a]+15]](e,a,d);c[cW]=c[e];k[cW]=k[e];c[cW+1]=c[e+1];k[cW+1]=k[e+1];c[cW+2]=c[e+2];k[cW+2]=k[e+2];c[cW+3]=c[e+3];k[cW+3]=k[e+3];b=e;return cW}LIa.X=1;function NIa(a,d){Je(a,d)}NIa.X=1;function OIa(a){return Le(a)}OIa.X=1;function PIa(a,d,e){return v[c[c[a]+13]](a,d,e)}PIa.X=1;function QIa(a){return v[c[c[a]+7]](a)}QIa.X=1;function RIa(a){return v[c[c[a]+19]](a)}RIa.X=1;function SIa(a){return Ye(a)}SIa.X=1;function TIa(a){return dW(a)}TIa.X=1;function dW(a){return k[a+7]*k[a+3]}dW.X=1;function UIa(a,d,e,f){df(a,d,e,f)}UIa.X=1;function VIa(a){return v[c[c[a]+12]](a)}VIa.X=1;function WIa(a){return v[c[c[a]+9]](a)}WIa.X=1;function XIa(a){return a+3}XIa.X=1;function YIa(a,d){var e=b;b+=4;0==c[ZIa]<<24>>24&&Hb(ZIa);kf(e,a,d);c[eW]=c[e];k[eW]=k[e];c[eW+1]=c[e+1];k[eW+1]=k[e+1];c[eW+2]=c[e+2];k[eW+2]=k[e+2];c[eW+3]=c[e+3];k[eW+3]=k[e+3];b=e;return eW}YIa.X=1;function $Ia(a,d){Jf(a,d)}$Ia.X=1;function aJa(a,d){v[c[c[a]+6]](a,d)}aJa.X=1;function bJa(a,d,e,f){v[c[c[a]+2]](a,d,e,f)}bJa.X=1;function cJa(a,d){dJa(a,d)}cJa.X=1;function dJa(a,d){k[a+7]=d;fW(a,d)}dJa.X=1;function eJa(a,d){var e=b;b+=4;0==c[fJa]<<24>>24&&Hb(fJa);tf(e,a,d);c[gW]=c[e];k[gW]=k[e];c[gW+1]=c[e+1];k[gW+1]=k[e+1];c[gW+2]=c[e+2];k[gW+2]=k[e+2];c[gW+3]=c[e+3];k[gW+3]=k[e+3];b=e;return gW}eJa.X=1;function gJa(a,d){return v[c[c[a]+5]](a,d)}gJa.X=1;function hJa(a){return xf(a)}hJa.X=1;function iJa(a){return zf(a)}iJa.X=1;function jJa(a){return Me(a)}jJa.X=1;function kJa(a){return Bf(a)}kJa.X=1;function lJa(a){return v[c[c[a]+11]](a)}lJa.X=1;function mJa(a,d,e){v[c[c[a]+20]](a,d,e)}mJa.X=1;function nJa(a,d){v[c[c[a]+10]](a,d)}nJa.X=1;function oJa(a){return Gf(a)}oJa.X=1;function pJa(a){var d=qJa(52);hW(d,a);return d}pJa.X=1;function qJa(a){return Ue(a,16)}qJa.X=1;function rJa(a,d){var e=b;b+=4;0==c[sJa]<<24>>24&&Hb(sJa);v[c[c[a]+16]](e,a,d);c[iW]=c[e];k[iW]=k[e];c[iW+1]=c[e+1];k[iW+1]=k[e+1];c[iW+2]=c[e+2];k[iW+2]=k[e+2];c[iW+3]=c[e+3];k[iW+3]=k[e+3];b=e;return iW}rJa.X=1;function tJa(a){return Kf(a)}tJa.X=1;function uJa(a){return Mf(a)}uJa.X=1;function vJa(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}vJa.X=1;function wJa(a,d,e,f){v[c[c[a]+17]](a,d,e,f)}wJa.X=1;function xJa(a){return a+7}xJa.X=1;function yJa(a,d,e){var f=b;b+=1;k[f]=e;v[c[c[a]+3]](a,d,f);b=f}yJa.X=1;function zJa(a){return v[c[c[a]+4]](a)}zJa.X=1;function AJa(a,d){v[c[c[a]+14]](a,d)}AJa.X=1;function BJa(){return 0}BJa.X=1;function CJa(){}CJa.X=1;function DJa(){}DJa.X=1;function EJa(){}EJa.X=1;function FJa(a,d){c[a+36]=d}FJa.X=1;function GJa(a){return c[a]}GJa.X=1;function HJa(a,d){c[a+1]=d}HJa.X=1;function IJa(a,d){c[a]=d}IJa.X=1;function JJa(a){return c[a+1]}JJa.X=1;function KJa(a,d,e){$1=a;a=d;for(d=0;;){var f=(c[a]&255)-(c[e]&255),d=f;if(0!=(f|0)){var g=f;break}if(0==c[e]<<24>>24){g=d;break}a+=1;e+=1}0>(g|0)?d=-1:0<(d|0)&&(d=1);return d}KJa.X=1;function LJa(a){return c[a+1]}LJa.X=1;function MJa(a,d,e,f){v[c[c[a]+18]](a,d,e,f)}MJa.X=1;function NJa(a,d,e,f,g,h,i){Tf(a,d,e,f,g,h,i)}NJa.X=1;function OJa(a){return Uf(a)}OJa.X=1;function PJa(a){return Ie(a)}PJa.X=1;function QJa(a,d){FJa(a,d)}QJa.X=1;function RJa(a){So(a)}RJa.X=1;function SJa(a,d,e){return 0!=(v[c[c[a]+4]](a,d,e)|0)}SJa.X=1;function TJa(a,d,e,f){return v[c[c[a]+2]](a,d,e,f&1)}TJa.X=1;function UJa(a){return a+26}UJa.X=1;function VJa(a,d,e){Wo(a,d,e,1)}VJa.X=1;function WJa(a,d,e,f){Wo(a,d,e,f)}WJa.X=1;function XJa(a,d,e,f){Xo(a,d,e,f)}XJa.X=1;function YJa(a){return Go(a)}YJa.X=1;function ZJa(a){return Zo(a)}ZJa.X=1;function $Ja(a){return a+31}$Ja.X=1;function aKa(a,d,e,f){$o(a,d,e,f)}aKa.X=1;function bKa(a,d,e,f){ap(a,d,e,f)}bKa.X=1;function cKa(a,d,e){return dKa(a,d,e&1)}cKa.X=1;function eKa(a,d,e,f){fp(a,d,e,f)}eKa.X=1;function fKa(a,d){v[c[c[a]+6]](a,d)}fKa.X=1;function gKa(a){return v[c[c[a]+3]](a)}gKa.X=1;function hKa(a){if(0!=(a|0)){v[c[c[a]+1]](a)}}hKa.X=1;function iKa(a){return Ue(a,16)}iKa.X=1;function jKa(a,d){v[c[c[a]+5]](a,d)}jKa.X=1;function kKa(a){return a+37}kKa.X=1;function lKa(a,d){var e=b;b+=4;0==c[mKa]<<24>>24&&Hb(mKa);qp(e,a,d);c[jW]=c[e];k[jW]=k[e];c[jW+1]=c[e+1];k[jW+1]=k[e+1];c[jW+2]=c[e+2];k[jW+2]=k[e+2];c[jW+3]=c[e+3];k[jW+3]=k[e+3];b=e;return jW}lKa.X=1;function nKa(a,d,e,f,g,h){sp(a,d,e,f,g,h)}nKa.X=1;function oKa(a){0!=(a|0)&&xe(a)}oKa.X=1;function pKa(a){var d=xb(8);qKa(d,a);return d}pKa.X=1;function rKa(a,d){return sKa(a,d)}rKa.X=1;function sKa(a,d){return(c[a]|0)==(c[d]|0)?1:0==(KJa(a,c[a],c[d])|0)}sKa.X=1;function tKa(a){return JJa(a)}tKa.X=1;function uKa(a,d,e){return KJa(a,d,e)}uKa.X=1;function vKa(){}vKa.X=1;function wKa(a){xe(a)}wKa.X=1;function WV(a,d,e,f,g){var h=b;b+=2;var i,j,l,m;$5=f;f=g&1;e=(e<<1)+c[a+(d+19)];g=e-2;i=VV(a,c[e+1]);var n=c[e]>>>0>>0;a:do{if(n){for(var p=a+25,r=a+26,s=a+26,t=h,w=h;;){if(j=VV(a,c[g+1]),l=d,0!=(kW(g)|0)?(l=1<>>0>=c[g]>>>0){break a}}}}while(0);b=h}WV.X=1;function xKa(){var a=iKa(172);mW(a);return a}xKa.X=1;function kW(a){return c[a]&1}kW.X=1;function lW(a,d,e,f,g){var h;$2=a;c[d+(f+16)]>>>0>>0?a=6:c[e+(f+16)]>>>0>>0?a=6:c[d+(g+16)]>>>0>>0?a=6:c[e+(g+16)]>>>0>>0?a=6:(h=1,a=8);6==a&&(h=0);return h}lW.X=1;function nW(a,d){c[a+13]=d}nW.X=1;function yKa(a){return c[a+13]}yKa.X=1;function bIa(a,d,e,f,g){var h=b;b+=2;var i,j,l,m;$5=f;f=g&1;e=(e<<1)+c[a+(d+19)];g=e+2;i=VV(a,c[e+1]);for(var n=a+25,p=a+26,r=a+26;0!=(c[g+1]|0)&&c[e]>>>0>=c[g]>>>0;){j=VV(a,c[g+1]);l=1<>>0>=c[i]>>>0;){l=VV(a,c[i+1]),0!=(kW(i)|0)?(m=VV(a,c[e+1]),n=VV(a,c[i+1]),p=1<>>0>>0;a:do{if(s){for(var t=h,w=h,x=a+25,y=a+26,z=a+26;;){if(l=VV(a,c[i+1]),0!=(kW(i)|0)?l+=d+16:(m=VV(a,c[e+1]),n=VV(a,c[i+1]),p=1<>>0>=c[i]>>>0){break a}}}}while(0);b=h}XV.X=1;function dIa(a,d){nW(VV(a,d),c[a+18]);c[a+18]=d;var e=a+15;c[e]-=1}dIa.X=1;function ig(a,d,e){var f=b;b+=3;var g=f+1,h=f+2;k[f]=k[d]*k[e];k[g]=k[d+1]*k[e+1];k[h]=k[d+2]*k[e+2];H(a,f,g,h);b=f}ig.X=1;function N(a,d,e){var f=b;b+=3;var g=f+1,h=f+2;k[f]=k[d]-k[e];k[g]=k[d+1]-k[e+1];k[h]=k[d+2]-k[e+2];H(a,f,g,h);b=f}N.X=1;function YHa(a){var d;d=c[a+18];c[a+18]=yKa(VV(a,d));a+=15;c[a]+=1;return d}YHa.X=1;function us(a,d,e,f,g){var h=b;b+=2;var i,j,l,m;$5=f;f=g&1;e=((e&65535)<<1)+c[a+(d+19)];g=e-2;i=ts(a,c[e+1]);var n=(c[e]&65535|0)<(c[g]&65535|0);a:do{if(n){for(var p=a+25,r=a+26,s=a+26,t=h,w=h;;){if(j=ts(a,c[g+1]),l=d,0!=oW(g)<<16>>16?(l=1<=(c[g]&65535|0)){break a}}}}while(0);b=h}us.X=1;function zKa(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}zKa.X=1;function AKa(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}AKa.X=1;function BKa(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}BKa.X=1;function oW(a){return c[a]&1}oW.X=1;function pW(a,d,e,f,g){var h;$2=a;(c[d+(f+16)]&65535|0)<(c[e+(f+13)]&65535|0)?a=6:(c[e+(f+16)]&65535|0)<(c[d+(f+13)]&65535|0)?a=6:(c[d+(g+16)]&65535|0)<(c[e+(g+13)]&65535|0)?a=6:(c[e+(g+16)]&65535|0)<(c[d+(g+13)]&65535|0)?a=6:(h=1,a=8);6==a&&(h=0);return h}pW.X=1;function qW(a,d){c[a+13]=d}qW.X=1;function CKa(a){return c[a+13]}CKa.X=1;function rW(a){return c[a+1]}rW.X=1;function sW(a,d){return c[a+3]+d}sW.X=1;function tW(a){return c[a+1]}tW.X=1;function uW(a){return c[a+1]}uW.X=1;function DKa(a,d){return c[a+3]+d}DKa.X=1;function vW(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}vW.X=1;function Fs(a,d,e,f,g){var h=b;b+=2;var i,j,l,m;$5=f;f=g&1;e=((e&65535)<<1)+c[a+(d+19)];g=e+2;i=ts(a,c[e+1]);for(var n=a+25,p=a+26,r=a+26;0!=c[g+1]<<16>>16&&(c[e]&65535|0)>=(c[g]&65535|0);){j=ts(a,c[g+1]);l=1<>16){j+=d+16}else{if(f&1&&pW(a,i,j,l,m)){l=ts(a,c[e+1]);m=ts(a,c[g+1]);var s=c[n];v[c[c[s]+2]](s,l,m);0!=(c[p]|0)&&(s=c[r],v[c[c[s]+2]](s,l,m))}j+=d+13}c[j]-=1;j=i+(d+16);c[j]+=1;j=e;c[h]=c[j];k[h]=k[j];c[h+1]=c[j+1];k[h+1]=k[j+1];j=e;l=g;c[j]=c[l];k[j]=k[l];c[j+1]=c[l+1];k[j+1]=k[l+1];j=g;c[j]=c[h];k[j]=k[h];c[j+1]=c[h+1];k[j+1]=k[h+1];e+=2;g+=2}b=h}Fs.X=1;function Gs(a,d,e,f,g){var h=b;b+=2;var i,j,l,m,n,p,r,g=g&1,e=((e&65535)<<1)+c[a+(d+19)];i=e+2;j=ts(a,c[e+1]);for(var s=a+25,t=a+26,w=a+26;0!=c[i+1]<<16>>16&&(c[e]&65535|0)>=(c[i]&65535|0);){l=ts(a,c[i+1]),0!=oW(i)<<16>>16?(m=ts(a,c[e+1]),n=ts(a,c[i+1]),p=1<>16?l+=d+16:(m=ts(a,c[e+1]),n=ts(a,c[i+1]),p=1<=(c[i]&65535|0)){break a}}}}while(0);b=h}vs.X=1;function nia(a,d){qW(ts(a,d),c[a+18]);c[a+18]=d;var e=a+15;c[e]-=1}nia.X=1;function kia(a){var d;d=c[a+18];c[a+18]=CKa(ts(a,d));a+=15;c[a]+=1;return d}kia.X=1;function wW(a){zKa(a,0,rW(a));EKa(a);vW(a)}wW.X=1;function EKa(a){0!=(c[a+3]|0)&&(c[a+4]&1&&FKa(a,c[a+3]),c[a+3]=0)}EKa.X=1;function FKa(a,d){$1=a;yh(d)}FKa.X=1;function GKa(a){0!=(c[a+3]|0)&&(c[a+4]&1&&HKa(a,c[a+3]),c[a+3]=0)}GKa.X=1;function HKa(a,d){$1=a;yh(d)}HKa.X=1;function IKa(a){0!=(c[a+3]|0)&&(c[a+4]&1&&JKa(a,c[a+3]),c[a+3]=0)}IKa.X=1;function qKa(a,d){var e,f;c[a]=d;f=0;var g=0!=c[c[a]+f]<<24>>24,h=-2128831035;a:do{if(g){var i=a;for(e=h;;){if(e^=c[c[i]+f]<<24>>24,e*=16777619,f+=1,0==c[c[a]+f]<<24>>24){var j=e;break a}}}else{j=h}}while(0);c[a+1]=j}qKa.X=1;function fW(a,d){k[a+11]=d}fW.X=1;function QV(a,d){return c[a+3]+d}QV.X=1;function RV(a,d){return(d<<2)+c[a+3]}RV.X=1;function QHa(a,d){return c[a+3]+d}QHa.X=1;function KKa(a){return c[a+2]}KKa.X=1;function xW(a){return c[a+2]}xW.X=1;function LKa(a){return c[a+2]}LKa.X=1;function MKa(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=f+d;0!=(i|0)&&(c[i]=c[c[h]+d]);d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}MKa.X=1;function NG(a,d,e,f,g){k[a]=k[d];k[a+1]=k[e];k[a+2]=k[f];k[a+3]=k[g]}NG.X=1;function JKa(a,d){$1=a;yh(d)}JKa.X=1;function hW(a,d){yW(a);c[a]=NKa+2;c[a+1]=8;k[a+7]=d;k[a+11]=d}hW.X=1;function SV(a,d,e,f,g,h){c[a]=d;c[a+1]=e;d=a+2;c[d]=c[f];k[d]=k[f];c[d+1]=c[f+1];k[d+1]=k[f+1];c[d+2]=c[f+2];k[d+2]=k[f+2];c[d+3]=c[f+3];k[d+3]=k[f+3];f=a+6;c[f]=c[g];k[f]=k[g];c[f+1]=c[g+1];k[f+1]=k[g+1];c[f+2]=c[g+2];k[f+2]=k[g+2];c[f+3]=c[g+3];k[f+3]=k[g+3];k[a+10]=h}SV.X=1;function PV(a,d,e){var f,g;f=rW(a);var h=(d|0)<(f|0);a:do{if(h){if(g=d,(g|0)<(f|0)){for(;;){if(g+=1,(g|0)>=(f|0)){break a}}}}else{if((d|0)>(rW(a)|0)&&OKa(a,d),g=f,(g|0)<(d|0)){for(var i=a+3;;){var j=c[i]+g;0!=(j|0)&&(c[j]=c[e]);g+=1;if((g|0)>=(d|0)){break a}}}}}while(0);c[a+1]=d}PV.X=1;function OHa(a,d,e){var f,g;f=tW(a);var h=(d|0)<(f|0);a:do{if(h){if(g=d,(g|0)<(f|0)){for(;;){if(g+=1,(g|0)>=(f|0)){break a}}}}else{if((d|0)>(tW(a)|0)&&PKa(a,d),g=f,(g|0)<(d|0)){for(var i=a+3;;){var j=(g<<2)+c[i];if(0!=(j|0)){var l=e;c[j]=c[l];k[j]=k[l];c[j+1]=c[l+1];k[j+1]=k[l+1];c[j+2]=c[l+2];k[j+2]=k[l+2];c[j+3]=c[l+3];k[j+3]=k[l+3]}g+=1;if((g|0)>=(d|0)){break a}}}}}while(0);c[a+1]=d}OHa.X=1;function PHa(a,d,e){var f,g;f=uW(a);var h=(d|0)<(f|0);a:do{if(h){if(g=d,(g|0)<(f|0)){for(;;){if(g+=1,(g|0)>=(f|0)){break a}}}}else{if((d|0)>(uW(a)|0)&&QKa(a,d),g=f,(g|0)<(d|0)){for(var i=a+3;;){var j=c[i]+g;if(0!=(j|0)){var l=e;c[j]=c[l];k[j]=k[l]}g+=1;if((g|0)>=(d|0)){break a}}}}}while(0);c[a+1]=d}PHa.X=1;function QKa(a,d){var e;(KKa(a)|0)<(d|0)&&(e=RKa(a,d),SKa(a,0,uW(a),e),BKa(a,0,uW(a)),IKa(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}QKa.X=1;function RKa(a,d){return 0!=(d|0)?TKa(a,d,0):0}RKa.X=1;function SKa(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=f+d;if(0!=(i|0)){var j=c[h]+d;c[i]=c[j];k[i]=k[j]}d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}SKa.X=1;function TKa(a,d,e){$1=a;$3=e;return Ue(d<<2,16)}TKa.X=1;function PKa(a,d){var e;(xW(a)|0)<(d|0)&&(e=UKa(a,d),VKa(a,0,tW(a),e),AKa(a,0,tW(a)),GKa(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}PKa.X=1;function UKa(a,d){return 0!=(d|0)?WKa(a,d,0):0}UKa.X=1;function VKa(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=(d<<2)+f;if(0!=(i|0)){var j=(d<<2)+c[h];c[i]=c[j];k[i]=k[j];c[i+1]=c[j+1];k[i+1]=k[j+1];c[i+2]=c[j+2];k[i+2]=k[j+2];c[i+3]=c[j+3];k[i+3]=k[j+3]}d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}VKa.X=1;function WKa(a,d,e){$1=a;$3=e;return Ue(d<<4,16)}WKa.X=1;function OKa(a,d){var e;(LKa(a)|0)<(d|0)&&(e=XKa(a,d),MKa(a,0,rW(a),e),zKa(a,0,rW(a)),EKa(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}OKa.X=1;function XKa(a,d){return 0!=(d|0)?YKa(a,d,0):0}XKa.X=1;function YKa(a,d,e){$1=a;$3=e;return Ue(d<<2,16)}YKa.X=1;function MB(a){var d=a;-1>d?a=-1:1=(e|0)){break a}}}}while(0)}aLa.X=1;function Cy(a){return c[a+1]}Cy.X=1;function zW(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}zW.X=1;function bLa(a){c[a]=cLa+2;k[a+1]=1;c[a+2]=1;c[a+3]=-1}bLa.X=1;function LEa(a,d,e){var f=b;b+=4;var g=f+1,h=f+2,i=f+3;k[f]=k[d]-k[e];k[g]=k[d+1]-k[e+1];k[h]=k[d+2]-k[e+2];k[i]=k[d+3]-k[e+3];NG(a,f,g,h,i);b=f}LEa.X=1;function MEa(a,d,e){var f=b;b+=4;var g=f+1,h=f+2,i=f+3;k[f]=k[d]+k[e];k[g]=k[d+1]+k[e+1];k[h]=k[d+2]+k[e+2];k[i]=k[d+3]+k[e+3];NG(a,f,g,h,i);b=f}MEa.X=1;function NEa(a,d){var e=b;b+=4;var f=e+1,g=e+2,h=e+3;k[e]=-k[d];k[f]=-k[d+1];k[g]=-k[d+2];k[h]=-k[d+3];NG(a,e,f,g,h);b=e}NEa.X=1;function mBa(a){dLa(a);c[a]=AW+2;zW(a+5);c[a+12]=0}mBa.X=1;function dLa(a){var d=b;b+=3;var e=d+1,f=d+2;c[a]=eLa+2;k[d]=1;k[e]=1;k[f]=1;H(a+1,d,e,f);b=d}dLa.X=1;function fLa(a){aLa(a,0,Cy(a));gLa(a);zW(a)}fLa.X=1;function gLa(a){0!=(c[a+3]|0)&&(c[a+4]&1&&hLa(a,c[a+3]),c[a+3]=0)}gLa.X=1;function hLa(a,d){$1=a;yh(d)}hLa.X=1;function hV(a,d,e,f,g,h,i){c[a]=f;c[a+1]=g;c[a+2]=h;f=a+5;c[f]=c[d];k[f]=k[d];c[f+1]=c[d+1];k[f+1]=k[d+1];c[f+2]=c[d+2];k[f+2]=k[d+2];c[f+3]=c[d+3];k[f+3]=k[d+3];d=a+9;c[d]=c[e];k[d]=k[e];c[d+1]=c[e+1];k[d+1]=k[e+1];c[d+2]=c[e+2];k[d+2]=k[e+2];c[d+3]=c[e+3];k[d+3]=k[e+3];c[a+3]=i}hV.X=1;function gV(a){c[a]=0;c[a+3]=0}gV.X=1;function LAa(a,d,e){k[a+20]=d;k[a+21]=e;k[a+22]=0}LAa.X=1;function IAa(a,d,e,f,g,h,i){var j=b;b+=25;var l=j+1,m=j+5,n=j+9,p=j+13,r=j+14,s=j+18,t=j+22,w=j+23,x=j+24;k[j]=g;N(m,d,a);wC(l,m,j);c[h]=c[l];k[h]=k[l];c[h+1]=c[l+1];k[h+1]=k[l+1];c[h+2]=c[l+2];k[h+2]=k[l+2];c[h+3]=c[l+3];k[h+3]=k[l+3];iLa(e,f)?(jLa(e,f,n,p),Q(s,n,p),wC(r,s,j),c[i]=c[r],k[i]=k[r],c[i+1]=c[r+1],k[i+1]=k[r+1],c[i+2]=c[r+2],k[i+2]=k[r+2],c[i+3]=c[r+3],k[i+3]=k[r+3]):(k[t]=0,k[w]=0,k[x]=0,pe(i,t,w,x));b=j}IAa.X=1;function wC(a,d,e){var f=b;b+=1;k[f]=1/k[e];Q(a,d,f);b=f}wC.X=1;function iLa(a,d){return hG(a,d)^1}iLa.X=1;function jLa(a,d,e,f){var g=b;b+=24;var h=g+4,i=g+8,j=g+12,l=g+16,m=g+20,n=g+21,p=g+22,r=g+23;KEa(g,a,d);EV(i,a);BW(h,g,i);k[f]=KV(h);H(j,h,h+1,h+2);c[e]=c[j];k[e]=k[j];c[e+1]=c[j+1];k[e+1]=k[j+1];c[e+2]=c[j+2];k[e+2]=k[j+2];c[e+3]=c[j+3];k[e+3]=k[j+3];k[e+3]=0;a=Um(e);1.4210854715202004e-14>a?(k[m]=1,k[n]=0,k[p]=0,H(l,m,n,p),c[e]=c[l],k[e]=k[l],c[e+1]=c[l+1],k[e+1]=k[l+1],c[e+2]=c[l+2],k[e+2]=k[l+2],c[e+3]=c[l+3],k[e+3]=k[l+3]):(k[r]=ec(a),KB(e,r));b=g}jLa.X=1;function Q(a,d,e){var f=b;b+=3;var g=f+1,h=f+2;k[f]=k[d]*k[e];k[g]=k[d+1]*k[e];k[h]=k[d+2]*k[e];H(a,f,g,h);b=f}Q.X=1;function BW(a,d,e){var f=b;b+=4;var g=f+1,h=f+2,i=f+3;k[f]=k[d+3]*k[e]+k[d]*k[e+3]+k[d+1]*k[e+2]-k[d+2]*k[e+1];k[g]=k[d+3]*k[e+1]+k[d+1]*k[e+3]+k[d+2]*k[e]-k[d]*k[e+2];k[h]=k[d+3]*k[e+2]+k[d+2]*k[e+3]+k[d]*k[e+1]-k[d+1]*k[e];k[i]=k[d+3]*k[e+3]-k[d]*k[e]-k[d+1]*k[e+1]-k[d+2]*k[e+2];NG(a,f,g,h,i);b=f}BW.X=1;function fV(a,d,e){bLa(a);c[a]=kLa+2;var f=a+4;c[f]=c[d];k[f]=k[d];c[f+1]=c[d+1];k[f+1]=k[d+1];c[f+2]=c[d+2];k[f+2]=k[d+2];c[f+3]=c[d+3];k[f+3]=k[d+3];d=a+8;c[d]=c[e];k[d]=k[e];c[d+1]=c[e+1];k[d+1]=k[e+1];c[d+2]=c[e+2];k[d+2]=k[e+2];c[d+3]=c[e+3];k[d+3]=k[e+3];c[a+20]=0}fV.X=1;function lLa(){}lLa.X=1;function mLa(a){xe(a)}mLa.X=1;function yCa(a,d){var e=b;b+=15;var f=e+4,g=e+5,h=e+6,i=e+7,j=e+11;CW(a);c[a]=nLa+2;c[a+1]=0;k[f]=v[c[c[a]+11]](a);k[g]=v[c[c[a]+11]](a);k[h]=v[c[c[a]+11]](a);H(e,f,g,h);ig(j,d,a+3);N(i,j,e);f=a+7;c[f]=c[i];k[f]=k[i];c[f+1]=c[i+1];k[f+1]=k[i+1];c[f+2]=c[i+2];k[f+2]=k[i+2];c[f+3]=c[i+3];k[f+3]=k[i+3];b=e}yCa.X=1;function oLa(a,d){var e;e=0!=(c[a+3]<<16>>16&c[d+1]<<16>>16|0)&1;e=(e&1?0!=(c[d+2]<<16>>16&c[a+2]<<16>>16|0):0)&1;return e&1}oLa.X=1;function Pwa(a){k[a]=5.880000114440918;k[a+1]=.8299999833106995;k[a+2]=.8799999952316284;k[a+3]=500;k[a+4]=10.5;k[a+5]=6e3}Pwa.X=1;function DW(a,d,e){var f=b;b+=4;k[a+1]=k[d+10];c[a+20]=c[d];var g=a+12;e&1?(e=d+2,c[g]=c[e],k[g]=k[e],c[g+1]=c[e+1],k[g+1]=k[e+1],c[g+2]=c[e+2],k[g+2]=k[e+2],c[g+3]=c[e+3],k[g+3]=k[e+3]):(Bo(f,c[a+20]+1,d+2),c[g]=c[f],k[g]=k[f],c[g+1]=c[f+1],k[g+1]=k[f+1],c[g+2]=c[f+2],k[g+2]=k[f+2],c[g+3]=c[f+3],k[g+3]=k[f+3]);a+=16;g=d+6;c[a]=c[g];k[a]=k[g];c[a+1]=c[g+1];k[a+1]=k[g+1];c[a+2]=c[g+2];k[a+2]=k[g+2];c[a+3]=c[g+3];k[a+3]=k[g+3];d=k[d+10];b=f;return d}DW.X=1;function Bo(a,d,e){var f=b;b+=3;var g=f+1,h=f+2;k[f]=J(0+d,e);k[g]=J(4+d,e);k[h]=J(8+d,e);H(a,f,g,h);b=f}Bo.X=1;function pLa(){}pLa.X=1;function qLa(a){xe(a)}qLa.X=1;function EU(a,d,e,f,g){c[a]=c[d];k[a]=k[d];c[a+1]=c[d+1];k[a+1]=k[d+1];c[a+2]=c[d+2];k[a+2]=k[d+2];c[a+3]=c[d+3];k[a+3]=k[d+3];d=a+4;c[d]=c[e];k[d]=k[e];c[d+1]=c[e+1];k[d+1]=k[e+1];c[d+2]=c[e+2];k[d+2]=k[e+2];c[d+3]=c[e+3];k[d+3]=k[e+3];e=a+16;c[e]=c[f];k[e]=k[f];c[e+1]=c[f+1];k[e+1]=k[f+1];c[e+2]=c[f+2];k[e+2]=k[f+2];c[e+3]=c[f+3];k[e+3]=k[f+3];k[a+20]=g;k[a+21]=0;k[a+22]=0;c[a+27]=0;k[a+28]=0;c[a+29]=0;f=a+30;c[f]=0;k[f]=0;c[f+1]=0;k[f+1]=0;c[f+2]=0;k[f+2]=0;c[f+3]=0;k[f+3]=0;c[f+4]=0;k[f+4]=0;c[f+5]=0;k[f+5]=0;c[f+6]=0;k[f+6]=0;k[a+52]=0;k[a+60]=0;k[a+68]=0}EU.X=1;function CU(a){c[a+27]=0;k[a+28]=0;c[a+29]=0;a+=30;c[a]=0;k[a]=0;c[a+1]=0;k[a+1]=0;c[a+2]=0;k[a+2]=0;c[a+3]=0;k[a+3]=0;c[a+4]=0;k[a+4]=0;c[a+5]=0;k[a+5]=0;c[a+6]=0;k[a+6]=0}CU.X=1;function eP(a){var d,a=d=a%6.2831854820251465;return a=-3.1415927410125732>d?a+6.2831854820251465:3.1415927410125732>16&c[d+1]<<16>>16|0)&1;e=(e&1?0!=(c[d+2]<<16>>16&c[a+1]<<16>>16|0):0)&1;return e&1}xLa.X=1;function jpa(a,d,e,f){k[a]=k[d];k[a+1]=k[e];k[a+2]=k[f];k[a+3]=0}jpa.X=1;function GW(a){c[a]=yLa+2;k[a+1]=1;c[a+2]=0;c[a+3]=1;c[a+4]=-1;c[a+5]=0}GW.X=1;function GM(a){var d=b;b+=18;var e=d+1,f=d+2,g=d+3,h=d+4,i=d+5,j=d+6,l=d+7,m=d+8,n=d+9,p=d+10,r=d+11,s=d+12,t=d+13,w=d+14,x=d+15,y=d+16,z=d+17;k[d]=0;k[e]=0;k[f]=0;pe(a,d,e,f);k[g]=0;k[h]=0;k[i]=0;pe(a+4,g,h,i);k[j]=0;k[l]=0;k[m]=0;pe(a+8,j,l,m);k[n]=0;k[p]=0;k[r]=0;pe(a+15,n,p,r);k[s]=.20000000298023224;k[t]=.20000000298023224;k[w]=.20000000298023224;pe(a+19,s,t,w);k[x]=0;k[y]=0;k[z]=0;pe(a+23,x,y,z);k[a+12]=.699999988079071;k[a+13]=1;k[a+14]=.5;e=0;f=a+27;g=a+30;for(a+=34;!(c[f+e]=0,k[g+e]=0,k[a+e]=0,e=h=e+1,3<=(h|0));){}b=d}GM.X=1;function zLa(){}zLa.X=1;function ALa(a){xe(a)}ALa.X=1;function wn(a,d,e){var f=b;b+=3;var g=f+1,h=f+2;k[f]=k[d]+k[e];k[g]=k[d+1]+k[e+1];k[h]=k[d+2]+k[e+2];H(a,f,g,h);b=f}wn.X=1;function GL(a,d,e,f,g,h,i,j,l,m){var n=b;b+=28;var p=n+4,r=n+8,s=n+12,t=n+16,w=n+20,x=n+24;c[a]=c[h];k[a]=k[h];c[a+1]=c[h+1];k[a+1]=k[h+1];c[a+2]=c[h+2];k[a+2]=k[h+2];c[a+3]=c[h+3];k[a+3]=k[h+3];qn(p,f,a);Bo(n,d,p);d=a+4;c[d]=c[n];k[d]=k[n];c[d+1]=c[n+1];k[d+1]=k[n+1];c[d+2]=c[n+2];k[d+2]=k[n+2];c[d+3]=c[n+3];k[d+3]=k[n+3];WP(t,a);qn(s,g,t);Bo(r,e,s);e=a+8;c[e]=c[r];k[e]=k[r];c[e+1]=c[r+1];k[e+1]=k[r+1];c[e+2]=c[r+2];k[e+2]=k[r+2];c[e+3]=c[r+3];k[e+3]=k[r+3];ig(w,i,a+4);i=a+12;c[i]=c[w];k[i]=k[w];c[i+1]=c[w+1];k[i+1]=k[w+1];c[i+2]=c[w+2];k[i+2]=k[w+2];c[i+3]=c[w+3];k[i+3]=k[w+3];ig(x,l,a+8);l=a+16;c[l]=c[x];k[l]=k[x];c[l+1]=c[x+1];k[l+1]=k[x+1];c[l+2]=c[x+2];k[l+2]=k[x+2];c[l+3]=c[x+3];k[l+3]=k[x+3];k[a+20]=j+J(a+12,a+4)+m+J(a+16,a+8);b=n}GL.X=1;function yra(a,d,e,f,g,h,i){var j=b;b+=31;var l=j+4,m=j+8,n=j+12,p=j+16,r=j+20,s=j+24,t=j+28,w=j+29,x=j+30;c[a]=c[g];k[a]=k[g];c[a+1]=c[g+1];k[a+1]=k[g+1];c[a+2]=c[g+2];k[a+2]=k[g+2];c[a+3]=c[g+3];k[a+3]=k[g+3];qn(l,e,g);Bo(j,d,l);e=a+4;c[e]=c[j];k[e]=k[j];c[e+1]=c[j+1];k[e+1]=k[j+1];c[e+2]=c[j+2];k[e+2]=k[j+2];c[e+3]=c[j+3];k[e+3]=k[j+3];WP(p,g);qn(n,f,p);Bo(m,d,n);d=a+8;c[d]=c[m];k[d]=k[m];c[d+1]=c[m+1];k[d+1]=k[m+1];c[d+2]=c[m+2];k[d+2]=k[m+2];c[d+3]=c[m+3];k[d+3]=k[m+3];ig(r,h,a+4);h=a+12;c[h]=c[r];k[h]=k[r];c[h+1]=c[r+1];k[h+1]=k[r+1];c[h+2]=c[r+2];k[h+2]=k[r+2];c[h+3]=c[r+3];k[h+3]=k[r+3];k[t]=0;k[w]=0;k[x]=0;H(s,t,w,x);r=a+16;c[r]=c[s];k[r]=k[s];c[r+1]=c[s+1];k[r+1]=k[s+1];c[r+2]=c[s+2];k[r+2]=k[s+2];c[r+3]=c[s+3];k[r+3]=k[s+3];k[a+20]=i+J(a+12,a+4);b=j}yra.X=1;function DL(a,d,e,f,g,h){var i=b;b+=23;var j=i+1,l=i+2,m=i+3,n=i+7,p=i+11,r=i+15,s=i+19;k[i]=0;k[j]=0;k[l]=0;H(a,i,j,l);Bo(m,e,d);e=a+4;c[e]=c[m];k[e]=k[m];c[e+1]=c[m+1];k[e+1]=k[m+1];c[e+2]=c[m+2];k[e+2]=k[m+2];c[e+3]=c[m+3];k[e+3]=k[m+3];WP(p,d);Bo(n,f,p);d=a+8;c[d]=c[n];k[d]=k[n];c[d+1]=c[n+1];k[d+1]=k[n+1];c[d+2]=c[n+2];k[d+2]=k[n+2];c[d+3]=c[n+3];k[d+3]=k[n+3];ig(r,g,a+4);g=a+12;c[g]=c[r];k[g]=k[r];c[g+1]=c[r+1];k[g+1]=k[r+1];c[g+2]=c[r+2];k[g+2]=k[r+2];c[g+3]=c[r+3];k[g+3]=k[r+3];ig(s,h,a+8);h=a+16;c[h]=c[s];k[h]=k[s];c[h+1]=c[s+1];k[h+1]=k[s+1];c[h+2]=c[s+2];k[h+2]=k[s+2];c[h+3]=c[s+3];k[h+3]=k[s+3];k[a+20]=J(a+12,a+4)+J(a+16,a+8);b=i}DL.X=1;function xra(a,d,e,f,g){var h=b;b+=11;var i=h+1,j=h+2,l=h+3,m=h+7;k[h]=0;k[i]=0;k[j]=0;H(a,h,i,j);i=a+4;c[i]=c[d];k[i]=k[d];c[i+1]=c[d+1];k[i+1]=k[d+1];c[i+2]=c[d+2];k[i+2]=k[d+2];c[i+3]=c[d+3];k[i+3]=k[d+3];WP(a+8,e);ig(l,f,a+4);d=a+12;c[d]=c[l];k[d]=k[l];c[d+1]=c[l+1];k[d+1]=k[l+1];c[d+2]=c[l+2];k[d+2]=k[l+2];c[d+3]=c[l+3];k[d+3]=k[l+3];ig(m,g,a+8);g=a+16;c[g]=c[m];k[g]=k[m];c[g+1]=c[m+1];k[g+1]=k[m+1];c[g+2]=c[m+2];k[g+2]=k[m+2];c[g+3]=c[m+3];k[g+3]=k[m+3];k[a+20]=J(a+12,a+4)+J(a+16,a+8);b=h}xra.X=1;function yI(a){FW(a);c[a]=HW+2;a+=36;c[a]=-1;k[a]=-1;c[a+1]=-1;k[a+1]=-1;c[a+2]=-1;k[a+2]=-1;c[a+3]=-1;k[a+3]=-1}yI.X=1;function BLa(){}BLa.X=1;function CLa(a){xe(a)}CLa.X=1;function Tpa(a){vLa(a);c[a]=DLa+2}Tpa.X=1;function ELa(){}ELa.X=1;function FLa(a){xe(a)}FLa.X=1;function GLa(){}GLa.X=1;function HLa(a){xe(a)}HLa.X=1;function PH(a,d,e,f,g,h){hV(a,d,e,f,g,h,0);c[a+15]=0;c[a+14]=0}PH.X=1;function wG(a){k[a+8]=-1}wG.X=1;function Doa(a,d,e){GW(a);c[a]=IW+2;JW(a+6);var f=a+11;c[f]=c[d];k[f]=k[d];c[f+1]=c[d+1];k[f+1]=k[d+1];c[f+2]=c[d+2];k[f+2]=k[d+2];c[f+3]=c[d+3];k[f+3]=k[d+3];d=a+15;c[d]=c[e];k[d]=k[e];c[d+1]=c[e+1];k[d+1]=k[e+1];c[d+2]=c[e+2];k[d+2]=k[e+2];c[d+3]=c[e+3];k[d+3]=k[e+3];KW(a+19);KW(a+24);LW(a+29)}Doa.X=1;function ILa(a){JLa(a)}ILa.X=1;function KLa(a){JLa(a);xe(a)}KLa.X=1;function LLa(a,d){$1=a;return 0!=(d|0)?d<<1:1}LLa.X=1;function MLa(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}MLa.X=1;function NLa(a,d){$1=a;return 0!=(d|0)?d<<1:1}NLa.X=1;function OLa(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}OLa.X=1;function PLa(a,d){$1=a;return 0!=(d|0)?d<<1:1}PLa.X=1;function QLa(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}QLa.X=1;function RLa(a,d){var e;e=0!=(c[a+4]<<16>>16&c[d+1]<<16>>16|0)&1;e=(e&1?0!=(c[d+2]<<16>>16&c[a+3]<<16>>16|0):0)&1;return e&1}RLa.X=1;function MW(a){return c[a+1]}MW.X=1;function SLa(a){return c[a+2]}SLa.X=1;function TLa(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=f+d;0!=(i|0)&&(k[i]=k[c[h]+d]);d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}TLa.X=1;function NW(a){return c[a+2]}NW.X=1;function Tl(a){return c[a+1]}Tl.X=1;function ULa(a){return c[a+2]}ULa.X=1;function VLa(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=f+d;0!=(i|0)&&(c[i]=c[c[h]+d]);d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}VLa.X=1;function WLa(a,d,e){var f=b;b+=12;var g=f+4,h=f+8,e=e&1;c[a+2]=c[d];OW(a+6,d);e&1?g=d+2:Bo(g,c[a+2]+1,d+2);c[f]=c[g];k[f]=k[g];c[f+1]=c[g+1];k[f+1]=k[g+1];c[f+2]=c[g+2];k[f+2]=k[g+2];c[f+3]=c[g+3];k[f+3]=k[g+3];PW(a+19,f);yB(h,a+11,a+15,k[d+6]);PW(a+24,h);QW(a+29,d+6);a=k[a+1];b=f;return a}WLa.X=1;function OW(a,d){(Tl(a)|0)==(ULa(a)|0)&&XLa(a,PLa(a,Tl(a)));var e=c[a+3]+c[a+1];0!=(e|0)&&(c[e]=c[d]);e=a+1;c[e]+=1}OW.X=1;function PW(a,d){(th(a)|0)==(NW(a)|0)&&RW(a,NLa(a,th(a)));var e=(c[a+1]<<2)+c[a+3];0!=(e|0)&&(c[e]=c[d],k[e]=k[d],c[e+1]=c[d+1],k[e+1]=k[d+1],c[e+2]=c[d+2],k[e+2]=k[d+2],c[e+3]=c[d+3],k[e+3]=k[d+3]);e=a+1;c[e]+=1}PW.X=1;function QW(a,d){(MW(a)|0)==(SLa(a)|0)&&YLa(a,LLa(a,MW(a)));var e=c[a+3]+c[a+1];0!=(e|0)&&(k[e]=k[d]);e=a+1;c[e]+=1}QW.X=1;function YLa(a,d){var e;(SLa(a)|0)<(d|0)&&(e=ZLa(a,d),TLa(a,0,MW(a),e),MLa(a,0,MW(a)),$La(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}YLa.X=1;function ZLa(a,d){return 0!=(d|0)?aMa(a,d,0):0}ZLa.X=1;function $La(a){0!=(c[a+3]|0)&&(c[a+4]&1&&bMa(a,c[a+3]),c[a+3]=0)}$La.X=1;function bMa(a,d){$1=a;yh(d)}bMa.X=1;function aMa(a,d,e){$1=a;$3=e;return Ue(d<<2,16)}aMa.X=1;function RW(a,d){var e;(NW(a)|0)<(d|0)&&(e=cMa(a,d),dMa(a,0,th(a),e),OLa(a,0,th(a)),eMa(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}RW.X=1;function cMa(a,d){return 0!=(d|0)?fMa(a,d,0):0}cMa.X=1;function dMa(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=(d<<2)+f;if(0!=(i|0)){var j=(d<<2)+c[h];c[i]=c[j];k[i]=k[j];c[i+1]=c[j+1];k[i+1]=k[j+1];c[i+2]=c[j+2];k[i+2]=k[j+2];c[i+3]=c[j+3];k[i+3]=k[j+3]}d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}dMa.X=1;function eMa(a){0!=(c[a+3]|0)&&(c[a+4]&1&&gMa(a,c[a+3]),c[a+3]=0)}eMa.X=1;function gMa(a,d){$1=a;yh(d)}gMa.X=1;function fMa(a,d,e){$1=a;$3=e;return Ue(d<<4,16)}fMa.X=1;function XLa(a,d){var e;(ULa(a)|0)<(d|0)&&(e=hMa(a,d),VLa(a,0,Tl(a),e),QLa(a,0,Tl(a)),iMa(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}XLa.X=1;function hMa(a,d){return 0!=(d|0)?jMa(a,d,0):0}hMa.X=1;function iMa(a){0!=(c[a+3]|0)&&(c[a+4]&1&&kMa(a,c[a+3]),c[a+3]=0)}iMa.X=1;function kMa(a,d){$1=a;yh(d)}kMa.X=1;function jMa(a,d,e){$1=a;$3=e;return Ue(d<<2,16)}jMa.X=1;function lMa(a,d){$1=a;return 0!=(d|0)?d<<1:1}lMa.X=1;function mMa(a){c[a]=nMa+2}mMa.X=1;function LW(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}LW.X=1;function JW(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}JW.X=1;function KW(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}KW.X=1;function BE(a){return c[a+1]}BE.X=1;function cE(a){k[a+1]=6.2831854820251465;k[a+2]=6.2831854820251465;k[a+3]=6.2831854820251465;c[a]=0}cE.X=1;function H(a,d,e,f){k[a]=k[d];k[a+1]=k[e];k[a+2]=k[f];k[a+3]=0}H.X=1;function Ez(a,d,e){(c[d+4]|0)<(c[e+4]|0)?(c[a]=d,c[a+1]=e):(c[a]=e,c[a+1]=d);c[a+2]=0;c[a+3]=0}Ez.X=1;function Cz(a,d){c[a]=c[d];c[a+1]=c[d+1];c[a+2]=c[d+2];c[a+3]=c[d+3]}Cz.X=1;function By(a,d){return(d<<3)+c[a+3]}By.X=1;function oMa(a){return c[a+2]}oMa.X=1;function SW(a){MLa(a,0,MW(a));$La(a);LW(a)}SW.X=1;function TW(a){QLa(a,0,Tl(a));iMa(a);JW(a)}TW.X=1;function UW(a){OLa(a,0,th(a));eMa(a);KW(a)}UW.X=1;function pMa(){}pMa.X=1;function qMa(a){xe(a)}qMa.X=1;function pE(a,d,e,f,g){c[a]=d;c[a+1]=e;d=a+2;c[d]=c[f];k[d]=k[f];c[d+1]=c[f+1];k[d+1]=k[f+1];c[d+2]=c[f+2];k[d+2]=k[f+2];c[d+3]=c[f+3];k[d+3]=k[f+3];k[a+6]=g}pE.X=1;function kE(a,d,e){GW(a);c[a]=rMa+2;var f=a+6;c[f]=c[d];k[f]=k[d];c[f+1]=c[d+1];k[f+1]=k[d+1];c[f+2]=c[d+2];k[f+2]=k[d+2];c[f+3]=c[d+3];k[f+3]=k[d+3];a+=10;c[a]=c[e];k[a]=k[e];c[a+1]=c[e+1];k[a+1]=k[e+1];c[a+2]=c[e+2];k[a+2]=k[e+2];c[a+3]=c[e+3];k[a+3]=k[e+3]}kE.X=1;function sMa(){}sMa.X=1;function tMa(a){xe(a)}tMa.X=1;function uMa(a,d,e){var f=b;b+=4;k[a+1]=k[d+6];c[a+2]=c[d];var g=a+14;e&1?(e=d+2,c[g]=c[e],k[g]=k[e],c[g+1]=c[e+1],k[g+1]=k[e+1],c[g+2]=c[e+2],k[g+2]=k[e+2],c[g+3]=c[e+3],k[g+3]=k[e+3]):(Bo(f,c[a+2]+1,d+2),c[g]=c[f],k[g]=k[f],c[g+1]=c[f+1],k[g+1]=k[f+1],c[g+2]=c[f+2],k[g+2]=k[f+2],c[g+3]=c[f+3],k[g+3]=k[f+3]);yB(a+18,a+6,a+10,k[d+6]);a=k[d+6];b=f;return a}uMa.X=1;function jC(a,d,e,f,g){H(a,d,e,f);k[a+3]=k[g]}jC.X=1;function VW(a){return sc(a)}VW.X=1;function sB(a,d){k[a+51]=k[d+12];k[a+52]=k[d+13];k[a+53]=k[d+14];k[a+54]=k[d+15];k[a+55]=k[d+16];k[a+56]=k[d+17];var e=a+39;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3];var e=a+43,f=d+4;c[e]=c[f];k[e]=k[f];c[e+1]=c[f+1];k[e+1]=k[f+1];c[e+2]=c[f+2];k[e+2]=k[f+2];c[e+3]=c[f+3];k[e+3]=k[f+3];e=a+47;f=d+8;c[e]=c[f];k[e]=k[f];c[e+1]=c[f+1];k[e+1]=k[f+1];c[e+2]=c[f+2];k[e+2]=k[f+2];c[e+3]=c[f+3];k[e+3]=k[f+3];k[a+57]=k[d+18];k[a+58]=0;k[a+63]=0;k[a+59]=0;k[a+60]=0;k[a+64]=0;k[a+61]=.10000000149011612;c[a+65]=c[d+20]&1;k[a+62]=k[d+19]}sB.X=1;function Qz(a,d,e){mMa(a);c[a]=vMa+2;sQ(a+1,d);sQ(a+17,e);sQ(a+33,d);c[a+49]=0}Qz.X=1;function wMa(){}wMa.X=1;function xMa(a){xe(a)}xMa.X=1;function yMa(a,d){var e=b;b+=32;var f=e+16;uw(f,a+17);WW(e,f,a+1);xi(d,e);b=e}yMa.X=1;function zMa(a,d){var e=b;b+=16;WW(e,d,a+17);xi(a+1,e);b=e}zMa.X=1;function WW(a,d,e){var f=b;b+=16;var g=f+12;ww(f,d,e);vw(g,d,e+12);Tz(a,f,g);b=f}WW.X=1;function AMa(){}AMa.X=1;function BMa(a){xe(a)}BMa.X=1;function Az(a){c[a]=0;k[a]=0;c[a+1]=0;k[a+1]=0;c[a+2]=0;k[a+2]=0;c[a+3]=0;k[a+3]=0}Az.X=1;function Ay(a,d){(Cy(a)|0)==(oMa(a)|0)&&CMa(a,lMa(a,Cy(a)));var e=(c[a+1]<<3)+c[a+3];c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3];c[e+4]=c[d+4];k[e+4]=k[d+4];c[e+5]=c[d+5];k[e+5]=k[d+5];c[e+6]=c[d+6];k[e+6]=k[d+6];c[e+7]=c[d+7];k[e+7]=k[d+7];e=a+1;c[e]+=1}Ay.X=1;function CMa(a,d){var e;(oMa(a)|0)<(d|0)&&(e=DMa(a,d),EMa(a,0,Cy(a),e),aLa(a,0,Cy(a)),gLa(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}CMa.X=1;function DMa(a,d){return 0!=(d|0)?FMa(a,d,0):0}DMa.X=1;function JLa(a){c[a]=IW+2;SW(a+29);UW(a+24);UW(a+19);TW(a+6)}JLa.X=1;function GMa(a){c[a]=HMa+2}GMa.X=1;function Rka(a,d){k[a+2]=k[d+2];k[a+3]=k[d+3];k[a+6]=k[d+6];k[a]=k[d];k[a+1]=k[d+1];k[a+7]=k[d+7];k[a+8]=k[d+8];k[a+9]=k[d+9];k[a+10]=k[d+10];c[a+14]=c[d+14];k[a+12]=k[d+12];c[a+11]=c[d+11]&1}Rka.X=1;function ax(a){k[a+15]=0;k[a+2]=0;k[a+3]=.10000000149011612;k[a+4]=300;k[a]=1;k[a+1]=-1;k[a+7]=0;k[a+8]=.20000000298023224;k[a+9]=0;k[a+10]=0;k[a+5]=1;k[a+6]=.5;c[a+14]=0;k[a+12]=0;c[a+11]=0}ax.X=1;function ct(a){c[a]=0;c[a+1]=0}ct.X=1;function Qo(a){return c[a+1]}Qo.X=1;function vo(a,d){return c[a+3]+d}vo.X=1;function tfa(a){return c[a+47]}tfa.X=1;function Rm(a){k[a]=.6000000238418579;k[a+1]=1;k[a+2]=.30000001192092896;k[a+4]=0;k[a+6]=20;c[a+5]=10;k[a+8]=.20000000298023224;k[a+9]=.10000000149011612;k[a+10]=0;k[a+7]=1;c[a+11]=0;k[a+12]=-.019999999552965164;k[a+13]=0;k[a+14]=.8500000238418579;c[a+15]=260;c[a+16]=2;c[a+17]=128}Rm.X=1;function Jm(a){k[a]=.30000001192092896;k[a+1]=1;k[a+2]=0}Jm.X=1;function fl(a){return c[a+1]}fl.X=1;function Zk(a,d){return c[a+3]+20*d}Zk.X=1;function EMa(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=(d<<3)+f,j=(d<<3)+c[h];c[i]=c[j];k[i]=k[j];c[i+1]=c[j+1];k[i+1]=k[j+1];c[i+2]=c[j+2];k[i+2]=k[j+2];c[i+3]=c[j+3];k[i+3]=k[j+3];c[i+4]=c[j+4];k[i+4]=k[j+4];c[i+5]=c[j+5];k[i+5]=k[j+5];c[i+6]=c[j+6];k[i+6]=k[j+6];c[i+7]=c[j+7];k[i+7]=k[j+7];d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}EMa.X=1;function FMa(a,d,e){$1=a;$3=e;return Ue(d<<5,16)}FMa.X=1;function rw(a,d,e){var f,g;.7071067690849304e?(rw(d,g,h),k[i]=0,NG(a,g,g+1,g+2,i)):(d=ec(2*(e+1)),g=1/d,k[j]=k[f]*g,k[l]=k[f+1]*g,k[m]=k[f+2]*g,k[n]=.5*d,NG(a,j,l,m,n));b=f}sw.X=1;function tw(a,d,e){var f=b;b+=8;var g=f+4;IMa(f,d,e);EV(g,d);JMa(f,g);H(a,f,f+1,f+2);b=f}tw.X=1;function IMa(a,d,e){var f=b;b+=4;var g=f+1,h=f+2,i=f+3;k[f]=k[d+3]*k[e]+k[d+1]*k[e+2]-k[d+2]*k[e+1];k[g]=k[d+3]*k[e+1]+k[d+2]*k[e]-k[d]*k[e+2];k[h]=k[d+3]*k[e+2]+k[d]*k[e+1]-k[d+1]*k[e];k[i]=-k[d]*k[e]-k[d+1]*k[e+1]-k[d+2]*k[e+2];NG(a,f,g,h,i);b=f}IMa.X=1;function JMa(a,d){var e=b;b+=4;var f=e+1,g=e+2,h=e+3;k[e]=k[a+3]*k[d]+k[a]*k[d+3]+k[a+1]*k[d+2]-k[a+2]*k[d+1];k[f]=k[a+3]*k[d+1]+k[a+1]*k[d+3]+k[a+2]*k[d]-k[a]*k[d+2];k[g]=k[a+3]*k[d+2]+k[a+2]*k[d+3]+k[a]*k[d+1]-k[a+1]*k[d];k[h]=k[a+3]*k[d+3]-k[a]*k[d]-k[a+1]*k[d+1]-k[a+2]*k[d+2];jc(a,e,f,g,h);b=e;return a}JMa.X=1;function Om(a,d){KMa(a);Mm(a,d)}Om.X=1;function KMa(a){c[a]=0;k[a]=0;c[a+1]=0;k[a+1]=0;c[a+2]=0;k[a+2]=0;c[a+3]=0;k[a+3]=0;c[a+4]=0;k[a+4]=0}KMa.X=1;function oea(a,d){GMa(a);c[a]=LMa+2;c[a+1]=d}oea.X=1;function MMa(){}MMa.X=1;function NMa(a){xe(a)}NMa.X=1;function XW(a){c[a]=OMa+2}XW.X=1;function Hj(a){c[a]=0;c[a+1]=0;c[a+2]=0;c[a+3]=4096;c[a+4]=4096;c[a+5]=0;c[a+6]=0;c[a+7]=1}Hj.X=1;function sj(a){k[a]=0;k[a+1]=-1;k[a+2]=.8999999761581421;k[a+3]=.30000001192092896;k[a+4]=1;k[a+5]=0;k[a+6]=0;c[a+7]=0}sj.X=1;function Ah(a){c[a+6]=2;c[a+7]=0}Ah.X=1;function xg(a,d){return(d<<2)+c[a+3]}xg.X=1;function De(a){k[a]=0;c[a+1]=0;c[a+2]=1;k[a+3]=1;c[a+4]=1;c[a+5]=0;c[a+6]=0;c[a+7]=1;c[a+8]=1;k[a+9]=.03999999910593033;c[a+10]=0;k[a+11]=0;c[a+12]=0}De.X=1;function yk(a,d,e,f,g,h){$5=f;c[a]=1025;f=a+1;CU(f);f+=69;CU(f);f+=69;CU(f);CU(f+69);c[a+277]=d;c[a+278]=e;c[a+279]=0;k[a+280]=g;k[a+281]=h}yk.X=1;function hda(a,d){PMa(a,d);c[a]=YW+2}hda.X=1;function lh(a){return jg(a+23,0)}lh.X=1;function fh(a,d,e,f,g,h){var i=b;b+=54;var j=i+1,l=i+5,m=i+6,n=i+10,p=i+14,r=i+18,s=i+19,t=i+23,w=i+35,x=i+39,y=i+43,z=i+44,A=i+45,C=i+46,B=i+50;k[i]=e;k[l]=.5;N(m,d,a);Q(j,m,l);H(n,i,i,i);xn(j,n);k[r]=.5;wn(s,d,a);Q(p,s,r);qc(t,f);vw(w,f,p);k[y]=J(0+t,j);k[z]=J(4+t,j);k[A]=J(8+t,j);H(x,y,z,A);N(C,w,x);c[g]=c[C];k[g]=k[C];c[g+1]=c[C+1];k[g+1]=k[C+1];c[g+2]=c[C+2];k[g+2]=k[C+2];c[g+3]=c[C+3];k[g+3]=k[C+3];wn(B,w,x);c[h]=c[B];k[h]=k[B];c[h+1]=c[B+1];k[h+1]=k[B+1];c[h+2]=c[B+2];k[h+2]=k[B+2];c[h+3]=c[B+3];k[h+3]=k[B+3];b=i}fh.X=1;function je(a,d){return ee(a,d)}je.X=1;function ie(a){var d=a;-1>d?a=-1:1k[s]&&(k[s]*=-1,k[t]=-1,LC(j,t));p=k[s]=(v[c[c[L]+23]](L)|0)){break a}}}}}}while(0);n&1?(N(B,d,w),a=Um(B),a=w;do{if(h&&0>=p&&0>=r){h=9;break a}}while(0);i=0;h=11}}while(0);9==h&&(i=1);b=g;return i}YMa.X=1;function VMa(a,d){return(d<<2)+a+14}VMa.X=1;function ZMa(){}ZMa.X=1;function $Ma(a){xe(a)}$Ma.X=1;function aNa(){}aNa.X=1;function bNa(a){xe(a)}bNa.X=1;function PMa(a,d){ZW(a,d);c[a]=$W+2}PMa.X=1;function aX(a,d,e,f){$3=e;$4=f;ZW(a,d);c[a]=$W+2}aX.X=1;function cNa(a){xe(a)}cNa.X=1;function dNa(){}dNa.X=1;function xs(a,d,e,f,g,h){eNa(a,d,e,-2,-1,f,g,h&1);c[a]=fNa+2}xs.X=1;function eNa(a,d,e,f,g,h,i,j){var l=b;b+=15;var m=l+4,n=l+8,p=l+12,r=l+13,s=l+14,j=j&1;bX(a);c[a]=cX+2;c[a+1]=f;c[a+2]=g;c[a+25]=i;c[a+26]=0;c[a+27]=0;c[a+28]=0;c[a+29]=0;f=(h&65535)+1&65535;0==(c[a+25]|0)&&(g=Ue(76,16),0==(g|0)?g=0:dX(g),c[a+25]=g,c[a+27]=1);j&1||(j=Ue(24,16),0==(j|0)?j=0:(c[j]=0,k[j]=0,c[j+1]=0,k[j+1]=0,c[j+2]=0,k[j+2]=0,c[j+3]=0,k[j+3]=0,c[j+4]=0,k[j+4]=0,c[j+5]=0,k[j+5]=0,gNa(j)),c[a+30]=j,j=Ue(156,16),0==(j|0)?j=0:xr(j,c[a+30]),c[a+29]=j,c[c[a+29]+39]=1);j=a+3;c[j]=c[d];k[j]=k[d];c[j+1]=c[d+1];k[j+1]=k[d+1];c[j+2]=c[d+2];k[j+2]=k[d+2];c[j+3]=c[d+3];k[j+3]=k[d+3];d=a+7;c[d]=c[e];k[d]=k[e];c[d+1]=c[e+1];k[d+1]=k[e+1];c[d+2]=c[e+2];k[d+2]=k[e+2];c[d+3]=c[e+3];k[d+3]=k[e+3];N(l,a+7,a+3);e=c[a+2];k[p]=e&65535;k[r]=e&65535;k[s]=e&65535;H(n,p,r,s);eX(m,n,l);n=a+11;c[n]=c[m];k[n]=k[m];c[n+1]=c[m+1];k[n+1]=k[m+1];c[n+2]=c[m+2];k[n+2]=k[m+2];c[n+3]=c[m+3];k[n+3]=k[m+3];m=f&65535;n=hNa(m,64);n=iNa(n.A?-1:n.v);p=0==(m|0);a:do{if(!p){r=n+20*m;for(s=n;;){if(gV(s),s+=20,(s|0)==(r|0)){break a}}}}while(0);c[a+17]=n;c[a+16]=f;c[a+15]=0;c[a+18]=1;m=c[a+18];n=(m&65535|0)<(f&65535|0);a:do{if(n){for(p=a+17;;){if(qW(c[p]+20*(m&65535),(m&65535)+1&65535),m+=1,(m&65535|0)>=(f&65535|0)){break a}}}}while(0);qW(c[a+17]+20*((f&65535)-1),0);m=0;n=a+22;p=a+22;r=a+19;for(s=0;3>(s|0);){c[n+m]=Ue((f&65535)<<3,16),s=c[p+m],c[r+m]=0==(s|0)?0:s,m=s=m+1}f=c[c[a+17]]=0;m=a+17;n=a+17;p=a+19;r=a+19;s=a+2;e=a+19;for(a+=19;!(c[c[m]+f+13]=0,c[c[n]+f+16]=1,c[c[p+f]]=0,c[c[r+f]+1]=0,c[c[e+f]+2]=c[s],c[c[a+f]+3]=0,f=d=f+1,3<=(d|0));){}b=l}eNa.X=1;function bW(a,d,e,f,g,h){jNa(a,d,e,-2,2147483647,f,g,h&1);c[a]=kNa+2}bW.X=1;function jNa(a,d,e,f,g,h,i,j){var l=b;b+=15;var m=l+4,n=l+8,p=l+12,r=l+13,s=l+14,j=j&1;bX(a);c[a]=fX+2;c[a+1]=f;c[a+2]=g;c[a+25]=i;c[a+26]=0;c[a+27]=0;c[a+28]=0;c[a+29]=0;f=h+1;0==(c[a+25]|0)&&(g=Ue(76,16),0==(g|0)?g=0:dX(g),c[a+25]=g,c[a+27]=1);j&1||(j=Ue(24,16),0==(j|0)?j=0:(c[j]=0,k[j]=0,c[j+1]=0,k[j+1]=0,c[j+2]=0,k[j+2]=0,c[j+3]=0,k[j+3]=0,c[j+4]=0,k[j+4]=0,c[j+5]=0,k[j+5]=0,gNa(j)),c[a+30]=j,j=Ue(156,16),0==(j|0)?j=0:xr(j,c[a+30]),c[a+29]=j,c[c[a+29]+39]=1);j=a+3;c[j]=c[d];k[j]=k[d];c[j+1]=c[d+1];k[j+1]=k[d+1];c[j+2]=c[d+2];k[j+2]=k[d+2];c[j+3]=c[d+3];k[j+3]=k[d+3];d=a+7;c[d]=c[e];k[d]=k[e];c[d+1]=c[e+1];k[d+1]=k[e+1];c[d+2]=c[e+2];k[d+2]=k[e+2];c[d+3]=c[e+3];k[d+3]=k[e+3];N(l,a+7,a+3);e=c[a+2];k[p]=e>>>0;k[r]=e>>>0;k[s]=e>>>0;H(n,p,r,s);eX(m,n,l);n=a+11;c[n]=c[m];k[n]=k[m];c[n+1]=c[m+1];k[n+1]=k[m+1];c[n+2]=c[m+2];k[n+2]=k[m+2];c[n+3]=c[m+3];k[n+3]=k[m+3];m=hNa(f,76);m=lNa(m.A?-1:m.v);n=0==(f|0);a:do{if(!n){p=m+20*f;for(r=m;;){if(gV(r),r+=20,(r|0)==(p|0)){break a}}}}while(0);c[a+17]=m;c[a+16]=f;c[a+15]=0;c[a+18]=1;m=c[a+18];n=m>>>0>>0;a:do{if(n){for(p=a+17;;){if(nW(c[p]+20*m,m+1),m+=1,m>>>0>=f>>>0){break a}}}}while(0);nW(c[a+17]+20*(f-1),0);m=0;n=a+22;p=a+22;r=a+19;for(s=0;3>(s|0);){c[n+m]=Ue(f<<4,16),s=c[p+m],c[r+m]=0==(s|0)?0:s,m=s=m+1}f=c[c[a+17]]=0;m=a+17;n=a+17;p=a+19;r=a+19;s=a+2;e=a+19;for(a+=19;!(c[c[m]+f+13]=0,c[c[n]+f+16]=1,c[c[p+f]]=0,c[c[r+f]+1]=0,c[c[e+f]+2]=c[s],c[c[a+f]+3]=0,f=d=f+1,3<=(d|0));){}b=l}jNa.X=1;function mNa(a){gX(a)}mNa.X=1;function nNa(){}nNa.X=1;function oNa(a){return c[a+25]}oNa.X=1;function pNa(a){return c[a+25]}pNa.X=1;function qNa(a,d,e,f,g,h,i,j,l){l=VV(a,TV(a,d,e,g,h,i,j,l));0!=(c[a+29]|0)&&(a=c[a+29],c[l+19]=v[c[c[a]+2]](a,d,e,f,g,h,i,j,0));return l}qNa.X=1;function rNa(a,d,e){if(0!=(c[a+29]|0)){var f=c[a+29];v[c[c[f]+3]](f,c[d+19],e)}ZV(a,c[d+4],e)}rNa.X=1;function sNa(a,d,e,f,g){var h=d+5;c[h]=c[e];k[h]=k[e];c[h+1]=c[e+1];k[h+1]=k[e+1];c[h+2]=c[e+2];k[h+2]=k[e+2];c[h+3]=c[e+3];k[h+3]=k[e+3];h=d+9;c[h]=c[f];k[h]=k[f];c[h+1]=c[f+1];k[h+1]=k[f+1];c[h+2]=c[f+2];k[h+2]=k[f+2];c[h+3]=c[f+3];k[h+3]=k[f+3];$V(a,c[d+4],e,f,g);0!=(c[a+29]|0)&&(a=c[a+29],v[c[c[a]+4]](a,c[d+19],e,f,g))}sNa.X=1;function tNa(a,d,e,f){$1=a;a=d+5;c[e]=c[a];k[e]=k[a];c[e+1]=c[a+1];k[e+1]=k[a+1];c[e+2]=c[a+2];k[e+2]=k[a+2];c[e+3]=c[a+3];k[e+3]=k[a+3];d+=9;c[f]=c[d];k[f]=k[d];c[f+1]=c[d+1];k[f+1]=k[d+1];c[f+2]=c[d+2];k[f+2]=k[d+2];c[f+3]=c[d+3];k[f+3]=k[d+3]}tNa.X=1;function uNa(a,d,e,f,g,h){var i,j=0!=(c[a+29]|0);a:do{if(j){i=c[a+29],v[c[c[i]+6]](i,d,e,f,g,h)}else{i=1;var l=a+15;if(i>>>0<(c[l]<<1)+1>>>0){for(var m=a+19,n=a+19;;){if(0!=(kW((i<<1)+c[m+0])|0)){var p=f;v[c[c[p]+2]](p,VV(a,c[(i<<1)+c[n+0]+1]))}i+=1;if(i>>>0>=(c[l]<<1)+1>>>0){break a}}}}}while(0)}uNa.X=1;function vNa(a,d,e,f){var g,h,i=0!=(c[a+29]|0);a:do{if(i){g=c[a+29],v[c[c[g]+7]](g,d,e,f)}else{g=1;var j=a+15;if(g>>>0<(c[j]<<1)+1>>>0){for(var l=a+19,m=a+19;;){if(0!=(kW((g<<1)+c[l+0])|0)&&(h=VV(a,c[(g<<1)+c[m+0]+1]),hX(d,e,h+5,h+9))){var n=f;v[c[c[n]+2]](n,h)}g+=1;if(g>>>0>=(c[j]<<1)+1>>>0){break a}}}}}while(0)}vNa.X=1;function wNa(a,d){var e=b;b+=12;var f,g,h=e+4,i,j,l=e+8;f=c[a+25];if(v[c[c[f]+14]](f)){f=c[a+25];f=v[c[c[f]+7]](f);iX(f);g=jX(f)-c[a+28];Az(e);kX(f,g,e);c[a+28]=0;Az(h);c[h]=0;c[h+1]=0;g=c[h+2]=0;var m=(g|0)<(jX(f)|0);a:do{if(m){var n=h,p=a+25,r=a+28;for(i=f;;){i=lX(i,g);j=mX(i,h)&1;var s=i;c[n]=c[s];k[n]=k[s];c[n+1]=c[s+1];k[n+1]=k[s+1];c[n+2]=c[s+2];k[n+2]=k[s+2];c[n+3]=c[s+3];k[n+3]=k[s+3];j=j&1?1:YV(a,c[i],c[i+1])&1?0:1;j&1&&(j=c[p],v[c[c[j]+8]](j,i,d),c[i]=0,c[i+1]=0,c[r]+=1,c[nX]-=1);g+=1;i=f;if((g|0)>=(jX(f)|0)){var t=i;break a}}}else{t=f}}while(0);iX(t);h=jX(f)-c[a+28];Az(l);kX(f,h,l);c[a+28]=0}b=e}wNa.X=1;function xNa(a,d,e){var f=a+3;c[d]=c[f];k[d]=k[f];c[d+1]=c[f+1];k[d+1]=k[f+1];c[d+2]=c[f+2];k[d+2]=k[f+2];c[d+3]=c[f+3];k[d+3]=k[f+3];a+=7;c[e]=c[a];k[e]=k[a];c[e+1]=c[a+1];k[e+1]=k[a+1];c[e+2]=c[a+2];k[e+2]=k[a+2];c[e+3]=c[a+3];k[e+3]=k[a+3]}xNa.X=1;function yNa(a,d){var e;$2=d;if(0==(c[a+15]|0)){c[a+18]=1;e=c[a+18];var f=a+16,g=e>>>0>>0;a:do{if(g){for(var h=a+17;;){if(nW(c[h]+20*e,e+1),e+=1,e>>>0>=c[f]>>>0){break a}}}}while(0);nW(c[a+17]+20*(c[a+16]-1),0)}}yNa.X=1;function zNa(a){oX(a)}zNa.X=1;function ANa(a,d,e,f,g,h,i,j,l){l=ts(a,rs(a,d,e,g,h,i,j,l));0!=(c[a+29]|0)&&(a=c[a+29],c[l+19]=v[c[c[a]+2]](a,d,e,f,g,h,i,j,0));return l}ANa.X=1;function BNa(a,d,e){if(0!=(c[a+29]|0)){var f=c[a+29];v[c[c[f]+3]](f,c[d+19],e)}Es(a,c[d+4]&65535,e)}BNa.X=1;function CNa(a,d,e,f,g){var h=d+5;c[h]=c[e];k[h]=k[e];c[h+1]=c[e+1];k[h+1]=k[e+1];c[h+2]=c[e+2];k[h+2]=k[e+2];c[h+3]=c[e+3];k[h+3]=k[e+3];h=d+9;c[h]=c[f];k[h]=k[f];c[h+1]=c[f+1];k[h+1]=k[f+1];c[h+2]=c[f+2];k[h+2]=k[f+2];c[h+3]=c[f+3];k[h+3]=k[f+3];Ns(a,c[d+4]&65535,e,f,g);0!=(c[a+29]|0)&&(a=c[a+29],v[c[c[a]+4]](a,c[d+19],e,f,g))}CNa.X=1;function DNa(a){gX(a);yh(a)}DNa.X=1;function ENa(a){oX(a);yh(a)}ENa.X=1;function FNa(){}FNa.X=1;function GNa(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}GNa.X=1;function HNa(a){return c[a+25]}HNa.X=1;function INa(a){return c[a+25]}INa.X=1;function jX(a){return c[a+1]}jX.X=1;function lX(a,d){return(d<<2)+c[a+3]}lX.X=1;function mX(a,d){return(c[a]|0)==(c[d]|0)?(c[a+1]|0)==(c[d+1]|0):0}mX.X=1;function pX(a){return c[a+2]}pX.X=1;function JNa(a,d,e,f){$1=a;a=d+5;c[e]=c[a];k[e]=k[a];c[e+1]=c[a+1];k[e+1]=k[a+1];c[e+2]=c[a+2];k[e+2]=k[a+2];c[e+3]=c[a+3];k[e+3]=k[a+3];d+=9;c[f]=c[d];k[f]=k[d];c[f+1]=c[d+1];k[f+1]=k[d+1];c[f+2]=c[d+2];k[f+2]=k[d+2];c[f+3]=c[d+3];k[f+3]=k[d+3]}JNa.X=1;function KNa(a,d,e,f,g,h){var i,j=0!=(c[a+29]|0);a:do{if(j){i=c[a+29],v[c[c[i]+6]](i,d,e,f,g,h)}else{i=1;var l=a+15;if((i&65535|0)<(((c[l]&65535)<<1)+1|0)){for(var m=a+19,n=a+19;;){if(0!=oW(((i&65535)<<1)+c[m+0])<<16>>16){var p=f;v[c[c[p]+2]](p,ts(a,c[((i&65535)<<1)+c[n+0]+1]))}i+=1;if((i&65535|0)>=(((c[l]&65535)<<1)+1|0)){break a}}}}}while(0)}KNa.X=1;function LNa(a,d,e,f){var g,h,i=0!=(c[a+29]|0);a:do{if(i){g=c[a+29],v[c[c[g]+7]](g,d,e,f)}else{g=1;var j=a+15;if((g&65535|0)<(((c[j]&65535)<<1)+1|0)){for(var l=a+19,m=a+19;;){if(0!=oW(((g&65535)<<1)+c[l+0])<<16>>16&&(h=ts(a,c[((g&65535)<<1)+c[m+0]+1]),hX(d,e,h+5,h+9))){var n=f;v[c[c[n]+2]](n,h)}g+=1;if((g&65535|0)>=(((c[j]&65535)<<1)+1|0)){break a}}}}}while(0)}LNa.X=1;function MNa(a,d){var e=b;b+=12;var f,g,h=e+4,i,j,l=e+8;f=c[a+25];if(v[c[c[f]+14]](f)){f=c[a+25];f=v[c[c[f]+7]](f);iX(f);g=jX(f)-c[a+28];Az(e);kX(f,g,e);c[a+28]=0;Az(h);c[h]=0;c[h+1]=0;g=c[h+2]=0;var m=(g|0)<(jX(f)|0);a:do{if(m){var n=h,p=a+25,r=a+28;for(i=f;;){i=lX(i,g);j=mX(i,h)&1;var s=i;c[n]=c[s];k[n]=k[s];c[n+1]=c[s+1];k[n+1]=k[s+1];c[n+2]=c[s+2];k[n+2]=k[s+2];c[n+3]=c[s+3];k[n+3]=k[s+3];j=j&1?1:Cs(a,c[i],c[i+1])&1?0:1;j&1&&(j=c[p],v[c[c[j]+8]](j,i,d),c[i]=0,c[i+1]=0,c[r]+=1,c[nX]-=1);g+=1;i=f;if((g|0)>=(jX(f)|0)){var t=i;break a}}}else{t=f}}while(0);iX(t);h=jX(f)-c[a+28];Az(l);kX(f,h,l);c[a+28]=0}b=e}MNa.X=1;function NNa(a,d,e){var f=a+3;c[d]=c[f];k[d]=k[f];c[d+1]=c[f+1];k[d+1]=k[f+1];c[d+2]=c[f+2];k[d+2]=k[f+2];c[d+3]=c[f+3];k[d+3]=k[f+3];a+=7;c[e]=c[a];k[e]=k[a];c[e+1]=c[a+1];k[e+1]=k[a+1];c[e+2]=c[a+2];k[e+2]=k[a+2];c[e+3]=c[a+3];k[e+3]=k[a+3]}NNa.X=1;function ONa(a,d){var e;$2=d;if(0==(c[a+15]&65535|0)){c[a+18]=1;e=c[a+18];var f=a+16,g=(e&65535|0)<(c[f]&65535|0);a:do{if(g){for(var h=a+17;;){if(qW(c[h]+20*(e&65535),(e&65535)+1&65535),e+=1,(e&65535|0)>=(c[f]&65535|0)){break a}}}}while(0);qW(c[a+17]+20*((c[a+16]&65535)-1),0)}}ONa.X=1;function iX(a){1<(jX(a)|0)&&qX(a,0,jX(a)-1)}iX.X=1;function kX(a,d,e){var f,g;f=jX(a);var h=(d|0)<(f|0);a:do{if(h){if(g=d,(g|0)<(f|0)){for(;;){if(g+=1,(g|0)>=(f|0)){break a}}}}else{if((d|0)>(jX(a)|0)&&rX(a,d),g=f,(g|0)<(d|0)){for(var i=a+3;;){if(Cz((g<<2)+c[i],e),g+=1,(g|0)>=(d|0)){break a}}}}}while(0);c[a+1]=d}kX.X=1;function rX(a,d){var e;(pX(a)|0)<(d|0)&&(e=PNa(a,d),QNa(a,0,jX(a),e),GNa(a,0,jX(a)),RNa(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}rX.X=1;function PNa(a,d){return 0!=(d|0)?SNa(a,d,0):0}PNa.X=1;function QNa(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){if(Cz((d<<2)+f,(d<<2)+c[h]),d+=1,(d|0)>=(e|0)){break a}}}}while(0)}QNa.X=1;function RNa(a){0!=(c[a+3]|0)&&(c[a+4]&1&&TNa(a,c[a+3]),c[a+3]=0)}RNa.X=1;function TNa(a,d){$1=a;yh(d)}TNa.X=1;function SNa(a,d,e){$1=a;$3=e;return Ue(d<<4,16)}SNa.X=1;function UNa(){return 0}UNa.X=1;function VNa(){return 0}VNa.X=1;function WNa(){}WNa.X=1;function bX(a){c[a]=XNa+2}bX.X=1;function sX(a,d,e){var f;$1=a;var g=0!=(c[d]|0)?c[c[d]+4]:-1,h=0!=(c[e]|0)?c[c[e]+4]:-1,a=0!=(c[d+1]|0)?c[c[d+1]+4]:-1;f=0!=(c[e+1]|0)?c[c[e+1]+4]:-1;return(g|0)>(h|0)?1:(c[d]|0)==(c[e]|0)&&(a|0)>(f|0)?1:(c[d]|0)!=(c[e]|0)?0:(c[d+1]|0)!=(c[e+1]|0)?0:c[d+2]>>>0>c[e+2]>>>0}sX.X=1;function qX(a,d,e){var f=b;b+=5;var g,h,i=f+1;g=d;h=e;Cz(i,(((e+d|0)/2&-1)<<2)+c[a+3]);for(var j=a+3,l=a+3;;){if(sX(f,(g<<2)+c[j],i)){g+=1}else{var m=sX(f,i,(h<<2)+c[l]);a:do{if(m){for(;;){if(h-=1,!sX(f,i,(h<<2)+c[l])){break a}}}}while(0);(g|0)<=(h|0)&&(tX(a,g,h),g+=1,h-=1);if(!((g|0)<=(h|0))){break}}}(d|0)<(h|0)&&qX(a,d,h);(g|0)<(e|0)&&qX(a,g,e);b=f}qX.X=1;function tX(a,d,e){var f=b;b+=4;Cz(f,(d<<2)+c[a+3]);var d=(d<<2)+c[a+3],g=(e<<2)+c[a+3];c[d]=c[g];k[d]=k[g];c[d+1]=c[g+1];k[d+1]=k[g+1];c[d+2]=c[g+2];k[d+2]=k[g+2];c[d+3]=c[g+3];k[d+3]=k[g+3];a=(e<<2)+c[a+3];c[a]=c[f];k[a]=k[f];c[a+1]=c[f+1];k[a+1]=k[f+1];c[a+2]=c[f+2];k[a+2]=k[f+2];c[a+3]=c[f+3];k[a+3]=k[f+3];b=f}tX.X=1;function hX(a,d,e,f){var g;g=(k[a]>k[f]?0:k[d]k[f+2]?0:k[d+2]k[f+1]?0:k[d+1]=l)){$k_relativeTol=.9800000190734863;$k_absoluteTol=.0010000000474974513;l>.9800000190734863*i+.0010000000474974513?(m=f,n=d,xi(p,g),xi(r,e),s=c[j],l=1):(m=d,n=f,xi(p,e),xi(r,g),s=c[h],l=0);HOa(t,m,p,s,n,r);m+=18;n=w;var W=(s<<2)+m;c[n]=c[W];k[n]=k[W];c[n+1]=c[W+1];k[n+1]=k[W+1];c[n+2]=c[W+2];k[n+2]=k[W+2];c[n+3]=c[W+3];k[n+3]=k[W+3];n=x;s=4>(s+1|0)?(s+1<<2)+m:m;c[n]=c[s];k[n]=k[s];c[n+1]=c[s+1];k[n+1]=k[s+1];c[n+2]=c[s+2];k[n+2]=k[s+2];c[n+3]=c[s+3];k[n+3]=k[s+3];N(y,x,w);s=p;N(A,x,w);Bo(z,s,A);IB(z);k[B]=k[z+1];k[K]=-1*k[z];k[E]=0;H(C,B,K,E);vw(G,p,w);s=w;m=G;c[s]=c[m];k[s]=k[m];c[s+1]=c[m+1];k[s+1]=k[m+1];c[s+2]=c[m+2];k[s+2]=k[m+2];c[s+3]=c[m+3];k[s+3]=k[m+3];vw(M,p,x);s=x;m=M;c[s]=c[m];k[s]=k[m];c[s+1]=c[m+1];k[s+1]=k[m+1];c[s+2]=c[m+2];k[s+2]=k[m+2];c[s+3]=c[m+3];k[s+3]=k[m+3];s=J(C,w);m=-J(z,w);n=J(z,x);k[F]=0;k[I]=0;k[R]=0;pe(L,F,I,R);k[O]=0;k[Z]=0;k[P]=0;pe(L+5,O,Z,P);k[da]=0;k[V]=0;k[ba]=0;pe(S,da,V,ba);k[$]=0;k[Y]=0;k[la]=0;pe(S+5,$,Y,la);WP(ka,z);if(2<=(IOa(L,t,ka,m)|0)&&(m=IOa(S,L,z,n),2<=(m|0)&&(0!=l<<24>>24?WP(ja,C):(l=ja,m=C,c[l]=c[m],k[l]=k[m],c[l+1]=c[m+1],k[l+1]=k[m+1],c[l+2]=c[m+2],k[l+2]=k[m+2],c[l+3]=c[m+3],k[l+3]=k[m+3]),l=0,(l|0)<(c[JOa]|0)))){for(;;){if(m=J(C,S+5*l)-s,0>=m&&(n=a,W=c[c[n]+4],WP(ea,ja),v[W](n,ea,S+5*l,m)),l+=1,(l|0)>=(c[JOa]|0)){break a}}}}}while(0);b=h}FOa.X=1;function KOa(a,d){$1=a;return 0!=(d|0)?d<<1:1}KOa.X=1;function LOa(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}LOa.X=1;function AX(a){return c[a+1]}AX.X=1;function MOa(a){return c[a+2]}MOa.X=1;function NOa(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=f+d;0!=(i|0)&&(c[i]=c[c[h]+d]);d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}NOa.X=1;function GOa(a,d,e,f,g){var h=b;b+=28;var i,j,l,m=h+4;i=h+8;var n=h+12,p=h+16,r,s,t,w,x;l=d+34;vw(m,g,f+14);vw(i,e,d+14);N(h,m,i);ue(p,e);Bo(n,p,h);m=0;i=-0xde0b6b000000000;p=0;s=4>(p|0);a:do{if(s){for(;;){if(r=J((p<<2)+l,n),r>i&&(i=r,m=p),p+=1,4<=(p|0)){break a}}}}while(0);l=n=BX(d,e,m,f,g);n=0(m+1|0)?m+1:0;var y=BX(d,e,r,f,g);s=y;if(0l){if(p>s){x=-1;t=i;w=p;var z=-1;i=23}else{i=20}}else{i=20}if(20==i){if(s<=l){c[a]=m;j=l;break}x=1;t=r;w=s;z=1}for(;;){m=t;m=-1==(z|0)?0<=(m-1|0)?t-1:3:4>(m+1|0)?t+1:0;i=l=z=BX(d,e,m,f,g);if(0(l|0);a:do{if(j){for(;;){if(m=J(i,(l<<2)+g),m(g+1|0)?g+1:0;vw(n,h,(g<<2)+d);c[a]=c[n];k[a]=k[n];c[a+1]=c[n+1];k[a+1]=k[n+1];c[a+2]=c[n+2];k[a+2]=k[n+2];c[a+3]=c[n+3];k[a+3]=k[n+3];vw(p,h,(e<<2)+d);a+=5;c[a]=c[p];k[a]=k[p];c[a+1]=c[p+1];k[a+1]=k[p+1];c[a+2]=c[p+2];k[a+2]=k[p+2];c[a+3]=c[p+3];k[a+3]=k[p+3];b=i}HOa.X=1;function IOa(a,d,e,f){var g=b;b+=13;var h,i,j=g+1,l=g+5,m=g+9;h=0;i=J(e,d)-f;e=J(e,d+5)-f;0>=i&&(f=h,h=f+1,f=a+5*f,c[f]=c[d],k[f]=k[d],c[f+1]=c[d+1],k[f+1]=k[d+1],c[f+2]=c[d+2],k[f+2]=k[d+2],c[f+3]=c[d+3],k[f+3]=k[d+3],c[f+4]=c[d+4],k[f+4]=k[d+4]);f=e;if(0>=f){f=h;h=f+1;var f=a+5*f,n=d+5;c[f]=c[n];k[f]=k[n];c[f+1]=c[n+1];k[f+1]=k[n+1];c[f+2]=c[n+2];k[f+2]=k[n+2];c[f+3]=c[n+3];k[f+3]=k[n+3];c[f+4]=c[n+4];k[f+4]=k[n+4]}0>i*e&&(k[g]=i/(i-e),N(m,d+5,d),Q(l,m,g),wn(j,d,l),l=a+5*h,c[l]=c[j],k[l]=k[j],c[l+1]=c[j+1],k[l+1]=k[j+1],c[l+2]=c[j+2],k[l+2]=k[j+2],c[l+3]=c[j+3],k[l+3]=k[j+3],c[a+5*h+4]=0(m|0);a:do{if(t){for(;;){if(n=J((m<<2)+f,j),n=(f|0)){break a}}}}while(0);b=g}iPa.X=1;function jPa(a,d,e){var f=b;b+=18;var g=f+1,h=f+2,i=f+3,j=f+4,l=f+5,m=f+6,n=f+7,p=f+8,r=f+9,s=f+10,t=f+11,w=f+12,x=f+13,y=f+14,z=f+15,A=f+16,C=f+17;$1=a;0==(d|0)?(k[f]=1,k[g]=0,k[h]=0,pe(e,f,g,h)):1==(d|0)?(k[i]=-1,k[j]=0,k[l]=0,pe(e,i,j,l)):2==(d|0)?(k[m]=0,k[n]=1,k[p]=0,pe(e,m,n,p)):3==(d|0)?(k[r]=0,k[s]=-1,k[t]=0,pe(e,r,s,t)):4==(d|0)?(k[w]=0,k[x]=0,k[y]=1,pe(e,w,x,y)):5==(d|0)&&(k[z]=0,k[A]=0,k[C]=-1,pe(e,z,A,C));b=f}jPa.X=1;function kPa(a){EX(a);yh(a)}kPa.X=1;function lPa(){return 6}lPa.X=1;function mPa(){return 1}mPa.X=1;function nPa(a,d,e,f){var g,h;h=g=0;0==(d|0)?(g=0,h=1):1==(d|0)?(g=0,h=2):2==(d|0)?(g=1,h=3):3==(d|0)?(g=2,h=3):4==(d|0)?(g=0,h=4):5==(d|0)?(g=1,h=5):6==(d|0)?(g=2,h=6):7==(d|0)?(g=3,h=7):8==(d|0)?(g=4,h=5):9==(d|0)?(g=4,h=6):10==(d|0)?(g=5,h=7):11==(d|0)&&(g=6,h=7);v[c[c[a]+25]](a,g,e);v[c[c[a]+25]](a,h,f)}nPa.X=1;function oPa(a,d,e){var f=b;b+=11;var g=f+4,h=f+8,i=f+9,j=f+10,a=a+7;c[f]=c[a];k[f]=k[a];c[f+1]=c[a+1];k[f+1]=k[a+1];c[f+2]=c[a+2];k[f+2]=k[a+2];c[f+3]=c[a+3];k[f+3]=k[a+3];k[h]=k[f]*(1-(d&1)|0)-k[f]*(d&1|0);k[i]=k[f+1]*(1-((d&2)>>1)|0)-k[f+1]*((d&2)>>1|0);k[j]=k[f+2]*(1-((d&4)>>2)|0)-k[f+2]*((d&4)>>2|0);H(g,h,i,j);c[e]=c[g];k[e]=k[g];c[e+1]=c[g+1];k[e+1]=k[g+1];c[e+2]=c[g+2];k[e+2]=k[g+2];c[e+3]=c[g+3];k[e+3]=k[g+3];b=f}oPa.X=1;function pPa(a,d,e,f){var g=b;b+=16;var h=g+4,i=g+8,j=g+12;v[c[c[a]+29]](a,g,f);H(h,g,g+1,g+2);c[d]=c[h];k[d]=k[h];c[d+1]=c[h+1];k[d+1]=k[h+1];c[d+2]=c[h+2];k[d+2]=k[h+2];c[d+3]=c[h+3];k[d+3]=k[h+3];f=c[c[a]+15];WP(j,d);v[f](i,a,j);c[e]=c[i];k[e]=k[i];c[e+1]=c[i+1];k[e+1]=k[i+1];c[e+2]=c[i+2];k[e+2]=k[i+2];c[e+3]=c[i+3];k[e+3]=k[i+3];b=g}pPa.X=1;function qPa(a,d,e){var f=b;b+=4;a+=7;c[f]=c[a];k[f]=k[a];c[f+1]=c[a+1];k[f+1]=k[a+1];c[f+2]=c[a+2];k[f+2]=k[a+2];c[f+3]=c[a+3];k[f+3]=k[a+3];d=(k[d]<=k[f]+e?k[d]>=-k[f]-e?k[d+1]<=k[f+1]+e?k[d+1]>=-k[f+1]-e?k[d+2]<=k[f+2]+e?k[d+2]>=-k[f+2]-e:0:0:0:0:0)&1;b=f;return d}qPa.X=1;function rPa(a,d,e){var f=b;b+=28;var g=f+4,h=f+5,i=f+6,j=f+7,l=f+8,m=f+9,n=f+10,p=f+11,r=f+12,s=f+13,t=f+14,w=f+15,x=f+16,y=f+17,z=f+18,A=f+19,C=f+20,B=f+21,K=f+22,E=f+23,G=f+24,M=f+25,L=f+26,F=f+27,a=a+7;c[f]=c[a];k[f]=k[a];c[f+1]=c[a+1];k[f+1]=k[a+1];c[f+2]=c[a+2];k[f+2]=k[a+2];c[f+3]=c[a+3];k[f+3]=k[a+3];0==(e|0)?(k[g]=1,k[h]=0,k[i]=0,k[j]=-k[f],$B(d,g,h,i,j)):1==(e|0)?(k[l]=-1,k[m]=0,k[n]=0,k[p]=-k[f],$B(d,l,m,n,p)):2==(e|0)?(k[r]=0,k[s]=1,k[t]=0,k[w]=-k[f+1],$B(d,r,s,t,w)):3==(e|0)?(k[x]=0,k[y]=-1,k[z]=0,k[A]=-k[f+1],$B(d,x,y,z,A)):4==(e|0)?(k[C]=0,k[B]=0,k[K]=1,k[E]=-k[f+2],$B(d,C,B,K,E)):5==(e|0)&&(k[G]=0,k[M]=0,k[L]=-1,k[F]=-k[f+2],$B(d,G,M,L,F));b=f}rPa.X=1;function sPa(a,d,e,f,g){aX(a,e,f,g);c[a]=IX+2;c[a+2]=0;c[a+3]=d;0==(c[a+3]|0)&&(d=c[a+1],v[c[c[d]+6]](d,f,g)&&(d=c[a+1],c[a+3]=v[c[c[d]+3]](d,f,g),c[a+2]=1))}sPa.X=1;function tPa(a){uPa(a);xe(a)}tPa.X=1;function uPa(a){c[a]=IX+2;if(c[a+2]&1&&0!=(c[a+3]|0)){var d=c[a+1];v[c[c[d]+4]](d,c[a+3])}}uPa.X=1;function vPa(a,d,e,f,g){var h=b;b+=37;var i,j,l=h+34;0!=(c[a+3]|0)&&(i=bi(d),j=bi(e),fI(g,c[a+3]),QQ(h),k[h+32]=0xde0b6b000000000,xi(h,d+1),xi(h+16,e+1),wPa(l,i,j),xPa(l,h,g,c[f+5],0),c[a+2]&1&&DI(g));b=h}vPa.X=1;function yPa(){}yPa.X=1;function zPa(a,d){0!=(c[a+3]|0)&&c[a+2]&1&&CX(d,a+3)}zPa.X=1;function wPa(a,d,e){XW(a);c[a]=APa+2;c[a+1]=d;c[a+2]=e}wPa.X=1;function BPa(a,d,e,f,g,h){var i=b;b+=4;k[i]=k[e]-k[a];k[i+1]=k[e+1]-k[a+1];k[i+2]=k[e+2]-k[a+2];a=JX(d,f);d=JX(d,i);f=-JX(f,i);e=1-a*a;9999999747378752e-20>=e?(k[g]=0,k[h]=0):(e=1/e,k[g]=(d+a*f)*e,k[h]=(a*d+f)*e);b=i}BPa.X=1;function JX(a,d){return k[a]*k[d]+k[a+1]*k[d+1]+k[a+2]*k[d+2]}JX.X=1;function CPa(a,d,e,f,g){var h=b;b+=16;var i,j,l,m,n,p=h+8;if(1==(a|0)){l=k[d],m=k[d+1]}else{if(2==(a|0)){l=.5*(k[d]+k[d+2]),m=.5*(k[d+1]+k[d+3])}else{i=m=l=j=0;var r=(i|0)<(a-1|0);a:do{if(r){for(;;){if(n=k[(i<<1)+d]*k[(i<<1)+d+3]-k[(i<<1)+d+2]*k[(i<<1)+d+1],j+=n,l+=n*(k[(i<<1)+d]+k[(i<<1)+d+2]),m+=n*(k[(i<<1)+d+1]+k[(i<<1)+d+3]),i+=1,(i|0)>=(a-1|0)){break a}}}}while(0);n=k[d+((a<<1)-2)]*k[d+1]-k[d]*k[d+((a<<1)-1)];j=1.1920928955078125e-7=(a|0)){break a}}}}while(0);i=0;j=(i|0)<(a|0);a:do{if(j){for(;;){if(c[p+i]=1,i+=1,(i|0)>=(a|0)){break a}}}}while(0);c[p+f]=0;c[g]=f;g+=1;d=1;l=(d|0)<(e|0);a:do{if(l){for(;;){j=i=(d|0)*(6.2831854820251465/(e|0))+k[h+f];3.1415927410125732=(a|0)){break b}}}}while(0);c[p+c[g]]=0;g+=1;d+=1;if((d|0)>=(e|0)){break a}}}}while(0);b=h}CPa.X=1;function DPa(a,d,e,f,g,h,i,j,l,m,n,p,r){var s=b;b+=169;var t,w,x,y=s+4,z=s+8,A=s+12,C=s+13,B=s+14,K,E=s+15,G=s+18,M,L,F,I,R,O,Z,P,S,da,V,ba,$,Y,la,ka,ja,ea,ca,W,U,X,ma,ga,ha,ta=s+21,ra=s+25,ua,za=s+29,Za=s+33,ib=s+34,Ca=s+35,Sa=s+39,mb=s+47,Oa,Pa,fc,jb,La,fb,Rb=s+51,pb=s+55,Sb=s+59,ab,Ib,Fc,Ac=s+63,ob,Gc,Yc,Cc=s+67,Ub,Uc,nd,Ic,tc,hd,Tb,Jc,ub,uc,Kc=s+75,gb=s+77,gc,Lc=s+93,Dc=s+117,Eb,Ra,qb,Ab,hc=s+125,Hc=s+129,ic=s+133,db=s+137,bb,id,Zc=s+141,vb=s+149,rb=s+153,vc=s+157,Qc=s+161,Rc=s+165;x=m;$14=n;$15=p;$fudge_factor=1.0499999523162842;k[A]=0;k[C]=0;k[B]=0;H(z,A,C,B);K=0;N(ta,f,a);c[s]=c[ta];k[s]=k[ta];c[s+1]=c[ta+1];k[s+1]=k[ta+1];c[s+2]=c[ta+2];k[s+2]=k[ta+2];c[s+3]=c[ta+3];k[s+3]=k[ta+3];k[y]=KX(d,s);k[y+1]=KX(d+1,s);k[y+2]=KX(d+2,s);k[E]=.5*k[e];k[E+1]=.5*k[e+1];k[E+2]=.5*k[e+2];k[G]=.5*k[h];k[G+1]=.5*k[h+1];k[G+2]=.5*k[h+2];M=LX(d,g);L=LX(d,g+1);F=LX(d,g+2);I=LX(d+1,g);R=LX(d+1,g+1);O=LX(d+1,g+2);Z=LX(d+2,g);P=LX(d+2,g+1);S=LX(d+2,g+2);da=sc(M);V=sc(L);ba=sc(F);$=sc(I);Y=sc(R);la=sc(O);ka=sc(Z);ja=sc(P);ea=sc(S);ca=-3.4028234663852886e+38;ha=ga=0;W=sc(k[y])-(k[E]+k[G]*da+k[G+1]*V+k[G+2]*ba);var Xd=0ca&&(ca=W,K=d,ga=0>k[y]&1,ha=1);var Sc=sc(k[y+1])-(k[E+1]+k[G]*$+k[G+1]*Y+k[G+2]*la);W=Sc;if(0ca&&(ca=W,K=d+1,ga=0>k[y+1]&1,ha=2);var Mc=sc(k[y+2])-(k[E+2]+k[G]*ka+k[G+1]*ja+k[G+2]*ea);W=Mc;if(0ca&&(ca=W,K=d+2,ga=0>k[y+2]&1,ha=3);var $c=sc(KX(g,s))-(k[E]*da+k[E+1]*$+k[E+2]*ka+k[G]);W=$c;if(0<$c){w=0}else{W>ca&&(ca=W,K=g,ga=0>KX(g,s)&1,ha=4);var Cd=sc(KX(g+1,s))-(k[E]*V+k[E+1]*Y+k[E+2]*ja+k[G+1]);W=Cd;if(0ca&&(ca=W,K=g+1,ga=0>KX(g+1,s)&1,ha=5);var wc=sc(KX(g+2,s))-(k[E]*ba+k[E+1]*la+k[E+2]*ea+k[G+2]);W=wc;if(0ca&&(ca=W,K=g+2,ga=0>KX(g+2,s)&1,ha=6);da+=9999999747378752e-21;V+=9999999747378752e-21;ba+=9999999747378752e-21;$+=9999999747378752e-21;Y+=9999999747378752e-21;la+=9999999747378752e-21;ka+=9999999747378752e-21;ja+=9999999747378752e-21;ea+=9999999747378752e-21;var Bb=sc(k[y+2]*I-k[y+1]*Z)-(k[E+1]*ka+k[E+2]*$+k[G+1]*ba+k[G+2]*V);W=Bb;if(1.1920928955078125e-7ca&&(ca=W,K=0,k[z]=0,k[z+1]=-Z/U,k[z+2]=I/U,ga=0>k[y+2]*I-k[y+1]*Z&1,ha=7));var fd=sc(k[y+2]*R-k[y+1]*P)-(k[E+1]*ja+k[E+2]*Y+k[G]*ba+k[G+2]*da);W=fd;if(1.1920928955078125e-7ca&&(ca=W,K=0,k[z]=0,k[z+1]=-P/U,k[z+2]=R/U,ga=0>k[y+2]*R-k[y+1]*P&1,ha=8));var ad=sc(k[y+2]*O-k[y+1]*S)-(k[E+1]*ea+k[E+2]*la+k[G]*V+k[G+1]*da);W=ad;if(1.1920928955078125e-7ca&&(ca=W,K=0,k[z]=0,k[z+1]=-S/U,k[z+2]=O/U,ga=0>k[y+2]*O-k[y+1]*S&1,ha=9));var wd=sc(k[y]*Z-k[y+2]*M)-(k[E]*ka+k[E+2]*da+k[G+1]*la+k[G+2]*Y);W=wd;if(1.1920928955078125e-7ca&&(ca=W,K=0,k[z]=Z/U,k[z+1]=0,k[z+2]=-M/U,ga=0>k[y]*Z-k[y+2]*M&1,ha=10));var Kd=sc(k[y]*P-k[y+2]*L)-(k[E]*ja+k[E+2]*V+k[G]*la+k[G+2]*$);W=Kd;if(1.1920928955078125e-7ca&&(ca=W,K=0,k[z]=P/U,k[z+1]=0,k[z+2]=-L/U,ga=0>k[y]*P-k[y+2]*L&1,ha=11));var Rd=sc(k[y]*S-k[y+2]*F)-(k[E]*ea+k[E+2]*ba+k[G]*Y+k[G+1]*$);W=Rd;if(1.1920928955078125e-7ca&&(ca=W,K=0,k[z]=S/U,k[z+1]=0,k[z+2]=-F/U,ga=0>k[y]*S-k[y+2]*F&1,ha=12));var Ec=sc(k[y+1]*M-k[y]*I)-(k[E]*$+k[E+1]*da+k[G+1]*ea+k[G+2]*ja);W=Ec;if(1.1920928955078125e-7ca&&(ca=W,K=0,k[z]=-I/U,k[z+1]=M/U,k[z+2]=0,ga=0>k[y+1]*M-k[y]*I&1,ha=13));var xd=sc(k[y+1]*L-k[y]*R)-(k[E]*Y+k[E+1]*V+k[G]*ea+k[G+2]*ka);W=xd;if(1.1920928955078125e-7ca&&(ca=W,K=0,k[z]=-R/U,k[z+1]=L/U,k[z+2]=0,ga=0>k[y+1]*L-k[y]*R&1,ha=14));var od=sc(k[y+1]*F-k[y]*O)-(k[E]*la+k[E+1]*ba+k[G]*ja+k[G+1]*ka);W=od;if(1.1920928955078125e-7ca?(ca=W,K=0,k[z]=-O/U,k[z+1]=F/U,k[z+2]=0,ga=0>k[y+1]*F-k[y]*O&1,ha=15,t=73):t=71):t=71;do{if(71==t&&0==(ha|0)){w=0;break a}}while(0);0!=(K|0)?(k[i]=k[K],k[i+1]=k[K+4],k[i+2]=k[K+8]):(k[i]=JX(d,z),k[i+1]=JX(d+4,z),k[i+2]=JX(d+8,z));0!=(ga|0)&&(k[i]=-k[i],k[i+1]=-k[i+1],k[i+2]=-k[i+2]);k[j]=-ca;if(6<(ha|0)){for(X=0;;){k[ra+X]=k[a+X];var pd=X+1;X=pd;if(3<=(pd|0)){break}}for(ma=0;;){ua=0=(ha|0)?(Oa=d,Pa=g,fc=a,jb=f,La=E,fb=G):(Oa=g,Pa=d,fc=f,jb=a,La=G,fb=E);var wf=k[i];3>=(ha|0)?(k[Rb]=wf,k[Rb+1]=k[i+1],k[Rb+2]=k[i+2]):(k[Rb]=-wf,k[Rb+1]=-k[i+1],k[Rb+2]=-k[i+2]);k[pb]=KX(Pa,Rb);k[pb+1]=KX(Pa+1,Rb);k[pb+2]=KX(Pa+2,Rb);var Oe=sc(k[pb]);k[Sb]=Oe;var If=sc(k[pb+1]);k[Sb+1]=If;var Ai=sc(k[pb+2]);k[Sb+2]=Ai;var qg=Sb;if(k[Sb+1]>k[Sb]){var Yg=k[qg+1];Ib=0;Yg>k[Sb+2]?(ab=1,Fc=2):(Fc=1,ab=2)}else{k[qg]>k[Sb+2]?(ab=0,Ib=1,Fc=2):(Ib=0,Fc=1,ab=2)}var Zg=0>k[pb+ab];X=0;b:do{if(Zg){for(;;){k[Ac+X]=k[jb+X]-k[fc+X]+k[fb+ab]*k[(X<<2)+Pa+ab];var Vf=X+1;X=Vf;if(3<=(Vf|0)){break b}}}else{for(;;){k[Ac+X]=k[jb+X]-k[fc+X]-k[fb+ab]*k[(X<<2)+Pa+ab];var rg=X+1;X=rg;if(3<=(rg|0)){break b}}}}while(0);var sg=ha;if(3>=(ha|0)){var om=sg-1,mn=ob=om}else{var yl=sg-4,mn=ob=yl}0==(mn|0)?(Gc=1,Yc=2):(Gc=0,Yc=1==(ob|0)?2:1);Ub=MX(Ac,Oa+Gc);Uc=MX(Ac,Oa+Yc);nd=LX(Oa+Gc,Pa+Ib);Ic=LX(Oa+Gc,Pa+Fc);tc=LX(Oa+Yc,Pa+Ib);hd=LX(Oa+Yc,Pa+Fc);Tb=nd*k[fb+Ib];Jc=tc*k[fb+Ib];ub=Ic*k[fb+Fc];uc=hd*k[fb+Fc];k[Cc]=Ub-Tb-ub;k[Cc+1]=Uc-Jc-uc;k[Cc+2]=Ub-Tb+ub;k[Cc+3]=Uc-Jc+uc;k[Cc+4]=Ub+Tb+ub;k[Cc+5]=Uc+Jc+uc;k[Cc+6]=Ub+Tb-ub;k[Cc+7]=Uc+Jc-uc;k[Kc]=k[La+Gc];k[Kc+1]=k[La+Yc];var tg=EPa(Kc,Cc,gb);gc=tg;if(1<=(tg|0)){Eb=1/(nd*hd-Ic*tc);nd*=Eb;Ic*=Eb;tc*=Eb;hd*=Eb;ma=Ra=0;var $e=(ma|0)<(gc|0);do{if($e){for(var af=Lc;;){qb=hd*(k[(ma<<1)+gb]-Ub)-Ic*(k[(ma<<1)+gb+1]-Uc);Ab=-tc*(k[(ma<<1)+gb]-Ub)+nd*(k[(ma<<1)+gb+1]-Uc);for(X=0;;){k[Lc+3*Ra+X]=k[Ac+X]+qb*k[(X<<2)+Pa+Ib]+Ab*k[(X<<2)+Pa+Fc];var Wf=X+1;X=Wf;if(3<=(Wf|0)){break}}k[Dc+Ra]=k[La+ob]-JX(Rb,af+3*Ra);0<=k[Dc+Ra]&&(k[(Ra<<1)+gb]=k[(ma<<1)+gb],k[(Ra<<1)+gb+1]=k[(ma<<1)+gb+1],Ra+=1);ma+=1;if((ma|0)>=(gc|0)){break}}if(1<=(Ra|0)){var Xf=x;if((Xf|0)>(Ra|0)){var ug=Ra,vg=x=ug}else{vg=Xf}1>(vg|0)&&(x=1);var rh=(Ra|0)<=(x|0);b:do{if(rh){ma=0;var nn=(ma|0)<(Ra|0);if(4>(ha|0)){if(nn){for(;;){for(X=0;;){k[hc+X]=k[Lc+3*ma+X]+k[fc+X];var on=X+1;X=on;if(3<=(on|0)){break}}var $g=r,Eh=c[c[$g]+4];WP(Hc,i);v[Eh]($g,Hc,hc,-k[Dc+ma]);ma+=1;if((ma|0)>=(Ra|0)){break b}}}}else{if(nn){for(;;){for(X=0;;){k[ic+X]=k[Lc+3*ma+X]+k[fc+X]-k[i+X]*k[Dc+ma];var pn=X+1;X=pn;if(3<=(pn|0)){break}}var $u=r,qja=c[c[$u]+4];WP(db,i);v[qja]($u,db,ic,-k[Dc+ma]);ma+=1;if((ma|0)>=(Ra|0)){break b}}}}}else{bb=0;id=k[Dc];X=1;var hC=(X|0)<(Ra|0);c:do{if(hC){for(;;){if(k[Dc+X]>id&&(id=k[Dc+X],bb=X),X+=1,(X|0)>=(Ra|0)){break c}}}}while(0);CPa(Ra,gb,x,bb,Zc);ma=0;var iC=(ma|0)<(x|0);c:do{if(iC){for(;;){for(X=0;;){k[vb+X]=k[Lc+3*c[Zc+ma]+X]+k[fc+X];var av=X+1;X=av;if(3<=(av|0)){break}}var nr=r,bv=c[c[nr]+4],cv=i;4>(ha|0)?(WP(rb,cv),v[bv](nr,rb,vb,-k[Dc+c[Zc+ma]])):(WP(vc,cv),Q(Rc,i,Dc+c[Zc+ma]),N(Qc,vb,Rc),v[bv](nr,vc,Qc,-k[Dc+c[Zc+ma]]));ma+=1;if((ma|0)>=(x|0)){break c}}}}while(0);Ra=x}}while(0);c[l]=ha;w=Ra;break a}}}while(0)}w=0}}}}}}}}}}}}}}}}}while(0);var rja=w;b=s;return rja}DPa.X=1;function FPa(){return D.Sd}FPa.X=1;function KX(a,d){return k[a]*k[d]+k[a+4]*k[d+1]+k[a+8]*k[d+2]}KX.X=1;function LX(a,d){return k[a]*k[d]+k[a+4]*k[d+4]+k[a+8]*k[d+8]}LX.X=1;function MX(a,d){return k[a]*k[d]+k[a+1]*k[d+4]+k[a+2]*k[d+8]}MX.X=1;function EPa(a,d,e){var f=b;b+=16;var g,h,i,j,l,m,n,p,r;g=4;h=0;i=e;var s=j=0;a:for(;1>=(s|0);){var t=l=-1;b:for(;;){if(!(1>=(t|0))){s=j=l=j+1;continue a}m=d;n=i;h=0;for(p=r=g;;){if(0>=(r|0)){d=i;i=(d|0)==(e|0)?f:e;g=h;t=l=m=l+2;continue b}r=(l|0)*k[m+j]=(f|0)){break a}}}}while(0);b=g}UPa.X=1;function VPa(a,d,e){var f=b;b+=18;var g=f+1,h=f+2,i=f+3,j=f+4,l=f+5,m=f+6,n=f+7,p=f+8,r=f+9,s=f+10,t=f+11,w=f+12,x=f+13,y=f+14,z=f+15,A=f+16,C=f+17;$1=a;0==(d|0)?(k[f]=1,k[g]=0,k[h]=0,pe(e,f,g,h)):1==(d|0)?(k[i]=-1,k[j]=0,k[l]=0,pe(e,i,j,l)):2==(d|0)?(k[m]=0,k[n]=1,k[p]=0,pe(e,m,n,p)):3==(d|0)?(k[r]=0,k[s]=-1,k[t]=0,pe(e,r,s,t)):4==(d|0)?(k[w]=0,k[x]=0,k[y]=1,pe(e,w,x,y)):5==(d|0)&&(k[z]=0,k[A]=0,k[C]=-1,pe(e,z,A,C));b=f}VPa.X=1;function WPa(a,d,e,f){var g,h;h=g=0;0==(d|0)?(g=0,h=1):1==(d|0)?(g=0,h=2):2==(d|0)?(g=1,h=3):3==(d|0)?(g=2,h=3):4==(d|0)?(g=0,h=4):5==(d|0)?(g=1,h=5):6==(d|0)?(g=2,h=6):7==(d|0)?(g=3,h=7):8==(d|0)?(g=4,h=5):9==(d|0)?(g=4,h=6):10==(d|0)?(g=5,h=7):11==(d|0)&&(g=6,h=7);v[c[c[a]+25]](a,g,e);v[c[c[a]+25]](a,h,f)}WPa.X=1;function XPa(a,d,e){var f=b;b+=11;var g=f+4,h=f+8,i=f+9,j=f+10;nV(f,a);k[h]=k[f]*(1-(d&1)|0)-k[f]*(d&1|0);k[i]=k[f+1]*(1-((d&2)>>1)|0)-k[f+1]*((d&2)>>1|0);k[j]=k[f+2]*(1-((d&4)>>2)|0)-k[f+2]*((d&4)>>2|0);H(g,h,i,j);c[e]=c[g];k[e]=k[g];c[e+1]=c[g+1];k[e+1]=k[g+1];c[e+2]=c[g+2];k[e+2]=k[g+2];c[e+3]=c[g+3];k[e+3]=k[g+3];b=f}XPa.X=1;function YPa(a,d,e,f){var g=b;b+=16;var h=g+4,i=g+8,j=g+12;v[c[c[a]+29]](a,g,f);H(h,g,g+1,g+2);c[d]=c[h];k[d]=k[h];c[d+1]=c[h+1];k[d+1]=k[h+1];c[d+2]=c[h+2];k[d+2]=k[h+2];c[d+3]=c[h+3];k[d+3]=k[h+3];f=c[c[a]+15];WP(j,d);v[f](i,a,j);c[e]=c[i];k[e]=k[i];c[e+1]=c[i+1];k[e+1]=k[i+1];c[e+2]=c[i+2];k[e+2]=k[i+2];c[e+3]=c[i+3];k[e+3]=k[i+3];b=g}YPa.X=1;function ZPa(a,d,e){var f=b;b+=4;a+=7;c[f]=c[a];k[f]=k[a];c[f+1]=c[a+1];k[f+1]=k[a+1];c[f+2]=c[a+2];k[f+2]=k[a+2];c[f+3]=c[a+3];k[f+3]=k[a+3];d=(k[d]<=k[f]+e?k[d]>=-k[f]-e?k[d+1]<=k[f+1]+e?k[d+1]>=-k[f+1]-e?k[d+2]<=k[f+2]+e?k[d+2]>=-k[f+2]-e:0:0:0:0:0)&1;b=f;return d}ZPa.X=1;function $Pa(a,d,e){var f=b;b+=28;var g=f+4,h=f+5,i=f+6,j=f+7,l=f+8,m=f+9,n=f+10,p=f+11,r=f+12,s=f+13,t=f+14,w=f+15,x=f+16,y=f+17,z=f+18,A=f+19,C=f+20,B=f+21,K=f+22,E=f+23,G=f+24,M=f+25,L=f+26,F=f+27,a=a+7;c[f]=c[a];k[f]=k[a];c[f+1]=c[a+1];k[f+1]=k[a+1];c[f+2]=c[a+2];k[f+2]=k[a+2];c[f+3]=c[a+3];k[f+3]=k[a+3];0==(e|0)?(k[g]=1,k[h]=0,k[i]=0,k[j]=-k[f],$B(d,g,h,i,j)):1==(e|0)?(k[l]=-1,k[m]=0,k[n]=0,k[p]=-k[f],$B(d,l,m,n,p)):2==(e|0)?(k[r]=0,k[s]=1,k[t]=0,k[w]=-k[f+1],$B(d,r,s,t,w)):3==(e|0)?(k[x]=0,k[y]=-1,k[z]=0,k[A]=-k[f+1],$B(d,x,y,z,A)):4==(e|0)?(k[C]=0,k[B]=0,k[K]=1,k[E]=-k[f+2],$B(d,C,B,K,E)):5==(e|0)&&(k[G]=0,k[M]=0,k[L]=-1,k[F]=-k[f+2],$B(d,G,M,L,F));b=f}$Pa.X=1;function yR(a,d,e,f){e&=1;f&=1;NX(a,d);c[a]=OX+2;c[a+13]=0;c[a+14]=0;c[a+15]=e&1;c[a+16]=0;c[a+1]=21;f&1&&hR(a)}yR.X=1;function hR(a){if(c[a+16]&1){var d=c[a+13];v[c[c[d]]](d);yh(c[a+13])}d=TPa(0,Ue(172,16));xp(d);c[a+13]=d;cp(c[a+13],c[a+12],c[a+15]&1,a+4,a+8);c[a+16]=1}hR.X=1;function BR(a,d,e,f,g,h){e&=1;h&=1;NX(a,d);c[a]=OX+2;c[a+13]=0;c[a+14]=0;c[a+15]=e&1;c[a+16]=0;c[a+1]=21;h&1&&(h=TPa(0,Ue(172,16)),xp(h),c[a+13]=h,cp(c[a+13],d,c[a+15]&1,f,g),c[a+16]=1)}BR.X=1;function lR(a,d,e){dp(c[a+13],c[a+12],d,e);hp(a+4,d);gp(a+8,e)}lR.X=1;function aR(a,d,e){ip(c[a+13],c[a+12],d,e);jR(a)}aR.X=1;function aQa(a){bQa(a);yh(a)}aQa.X=1;function cQa(){return D.Vd}cQa.X=1;function dQa(){return 60}dQa.X=1;function PX(a){c[a]=eQa+2}PX.X=1;function fQa(a,d){k[a+3]=d}fQa.X=1;function gQa(a){return k[a+3]}gQa.X=1;function bQa(a){c[a]=OX+2;if(c[a+16]&1){var d=c[a+13];v[c[c[d]]](d);yh(c[a+13])}}bQa.X=1;function cR(a,d,e,f){var g=b;b+=3;hQa(g,d,c[a+12]);ap(c[a+13],g,e,f);b=g}cR.X=1;function mR(a,d,e,f,g,h){var i=b;b+=3;iQa(i,d,c[a+12]);sp(c[a+13],i,e,f,g,h);b=i}mR.X=1;function jQa(a,d,e,f){var g=b;b+=15;kQa(g,d,c[a+12]);$o(c[a+13],g,e,f);b=g}jQa.X=1;function lQa(a,d){var e=b;b+=4;N(e,v[c[c[a]+7]](a),d);1.1920928955078125e-7e?(k[j]=1,k[l]=0,k[m]=0,pe(i,j,l,m)):(k[n]=1/ec(e),LC(i,n));k[r]=cf(d);k[t]=0;k[w]=0;k[x]=0;H(s,t,w,x);k[s+Ke(d)]=gf(d);ig(C,i,d+3);Q(A,C,r);wn(z,s,A);k[K]=v[c[c[d]+11]](d);Q(B,i,K);N(y,z,B);c[p]=c[y];k[p]=k[y];c[p+1]=c[y+1];k[p+1]=k[y+1];c[p+2]=c[y+2];k[p+2]=k[y+2];c[p+3]=c[y+3];k[p+3]=k[y+3];j=J(i,p);j>g&&(g=j,c[a]=c[p],k[a]=k[p],c[a+1]=c[p+1],k[a+1]=k[p+1],c[a+2]=c[p+2],k[a+2]=k[p+2],c[a+3]=c[p+3],k[a+3]=k[p+3]);k[G]=0;k[M]=0;k[L]=0;H(E,G,M,L);k[E+Ke(d)]=-gf(d);ig(O,i,d+3);Q(R,O,r);wn(I,E,R);k[P]=v[c[c[d]+11]](d);Q(Z,i,P);N(F,I,Z);c[p]=c[F];k[p]=k[F];c[p+1]=c[F+1];k[p+1]=k[F+1];c[p+2]=c[F+2];k[p+2]=k[F+2];c[p+3]=c[F+3];k[p+3]=k[F+3];j=J(i,p);j>g&&(c[a]=c[p],k[a]=k[p],c[a+1]=c[p+1],k[a+1]=k[p+1],c[a+2]=c[p+2],k[a+2]=k[p+2],c[a+3]=c[p+3],k[a+3]=k[p+3]);b=f}EQa.X=1;function FQa(a,d,e,f){var g=b;b+=61;var h,i,j,l=g+1,m,n=g+5,p=g+9,r=g+10,s=g+11,t=g+12,w=g+16,x=g+20,y=g+24,z=g+28,A=g+32,C=g+33,B=g+37,K=g+38,E=g+39,G=g+40,M=g+44,L=g+48,F=g+52,I=g+56,R=g+60;k[g]=cf(a);h=0;var O=(h|0)<(f|0);a:do{if(O){for(var Z=a+3,P=a,S=P,da=l,V=t,ba=l,$=a+3,Y=a,la=Y,ka=l,ja=G,ea=l;;){if(i=-0xde0b6b000000000,j=(h<<2)+d,k[p]=0,k[r]=0,k[s]=0,H(n,p,r,s),k[n+Ke(a)]=gf(a),ig(y,j,Z),Q(x,y,g),wn(w,n,x),k[A]=v[c[c[S]+11]](P),Q(z,j,A),N(t,w,z),c[da]=c[V],k[da]=k[V],c[da+1]=c[V+1],k[da+1]=k[V+1],c[da+2]=c[V+2],k[da+2]=k[V+2],c[da+3]=c[V+3],k[da+3]=k[V+3],m=J(j,l),m>i&&(i=m,m=(h<<2)+e,c[m]=c[ba],k[m]=k[ba],c[m+1]=c[ba+1],k[m+1]=k[ba+1],c[m+2]=c[ba+2],k[m+2]=k[ba+2],c[m+3]=c[ba+3],k[m+3]=k[ba+3]),k[B]=0,k[K]=0,k[E]=0,H(C,B,K,E),k[C+Ke(a)]=-gf(a),ig(F,j,$),Q(L,F,g),wn(M,C,L),k[R]=v[c[c[la]+11]](Y),Q(I,j,R),N(G,M,I),c[ka]=c[ja],k[ka]=k[ja],c[ka+1]=c[ja+1],k[ka+1]=k[ja+1],c[ka+2]=c[ja+2],k[ka+2]=k[ja+2],c[ka+3]=c[ja+3],k[ka+3]=k[ja+3],m=J(j,l),m>i&&(i=(h<<2)+e,c[i]=c[ea],k[i]=k[ea],c[i+1]=c[ea+1],k[i+1]=k[ea+1],c[i+2]=c[ea+2],k[i+2]=k[ea+2],c[i+3]=c[ea+3],k[i+3]=k[ea+3]),h+=1,(h|0)>=(f|0)){break a}}}}while(0);b=g}FQa.X=1;function GQa(a,d,e){var f=b;b+=21;var g=f+16,h=f+17,i;eQ(f);k[g]=cf(a);H(h,g,g,g);g=h+Ke(a);k[g]+=gf(a);i=2*(k[h]+.03999999910593033);a=2*(k[h+1]+.03999999910593033);g=2*(k[h+2]+.03999999910593033);h=i*i;a*=a;g*=g;d*=.0833333283662796;k[e]=d*(a+g);k[e+1]=d*(h+g);k[e+2]=d*(h+a);b=f}GQa.X=1;function oEa(a,d,e){var f=b;b+=2;var g=f+1;k[f]=d;HQa(a);c[a]=IQa+2;c[a+13]=0;k[g]=.5*e;pe(a+7,g,f,f);b=f}oEa.X=1;function JQa(){return D.Ve}JQa.X=1;function KQa(){return 60}KQa.X=1;function LQa(){return 0}LQa.X=1;function MQa(){}MQa.X=1;function NQa(){return D.ee}NQa.X=1;function OQa(){return D.Ne}OQa.X=1;function PQa(a){c[a]=QQa+2}PQa.X=1;function ZW(a,d){c[a]=RQa+2;c[a+1]=c[d]}ZW.X=1;function fs(a,d,e,f){c[a+36*d+e+50]=f}fs.X=1;function HQa(a){yW(a);c[a]=RX+2;c[a+1]=10}HQa.X=1;function wGa(a,d,e){var f=b;b+=2;var g=f+1;k[f]=d;HQa(a);c[a]=SQa+2;c[a+13]=2;k[g]=.5*e;pe(a+7,f,f,g);b=f}wGa.X=1;function TQa(){}TQa.X=1;function UQa(a){yh(a)}UQa.X=1;function VQa(a,d,e,f){var g=b;b+=45;var h=g+4,i=g+5,j=g+6,l=g+7,m=g+11,n=g+12,p=g+13,r=g+14,s=g+26,t=g+30,w=g+34,x=g+35,y=g+36,z=g+37,A=g+41;k[h]=cf(a);k[i]=cf(a);k[j]=cf(a);H(g,h,i,j);k[g+c[a+13]]=cf(a)+gf(a);k[m]=v[c[c[a]+11]](a);k[n]=v[c[c[a]+11]](a);k[p]=v[c[c[a]+11]](a);H(l,m,n,p);xn(g,l);qc(r,d);a=d+12;c[s]=c[a];k[s]=k[a];c[s+1]=c[a+1];k[s+1]=k[a+1];c[s+2]=c[a+2];k[s+2]=k[a+2];c[s+3]=c[a+3];k[s+3]=k[a+3];k[w]=J(0+r,g);k[x]=J(4+r,g);k[y]=J(8+r,g);H(t,w,x,y);N(z,s,t);c[e]=c[z];k[e]=k[z];c[e+1]=c[z+1];k[e+1]=k[z+1];c[e+2]=c[z+2];k[e+2]=k[z+2];c[e+3]=c[z+3];k[e+3]=k[z+3];wn(A,s,t);c[f]=c[A];k[f]=k[A];c[f+1]=c[A+1];k[f+1]=k[A+1];c[f+2]=c[A+2];k[f+2]=k[A+2];c[f+3]=c[A+3];k[f+3]=k[A+3];b=g}VQa.X=1;function WQa(a,d){var e=b;b+=23;var f=e+4,g=e+5,h=e+6,i=e+7,j=e+11,l=e+15,m=e+19;k[f]=v[c[c[a]+11]](a);k[g]=v[c[c[a]+11]](a);k[h]=v[c[c[a]+11]](a);H(e,f,g,h);wn(i,a+7,e);eX(j,i,a+3);FX(a,d);ig(m,j,a+3);N(l,m,e);f=a+7;c[f]=c[l];k[f]=k[l];c[f+1]=c[l+1];k[f+1]=k[l+1];c[f+2]=c[l+2];k[f+2]=k[l+2];c[f+3]=c[l+3];k[f+3]=k[l+3];b=e}WQa.X=1;function XQa(a,d){var e=b;b+=22;var f=e+4,g=e+5,h=e+6,i=e+7,j=e+11,l=e+15,m=e+16,n=e+17,p=e+18;k[f]=v[c[c[a]+11]](a);k[g]=v[c[c[a]+11]](a);k[h]=v[c[c[a]+11]](a);H(e,f,g,h);wn(i,a+7,e);fW(a,d);k[l]=v[c[c[a]+11]](a);k[m]=v[c[c[a]+11]](a);k[n]=v[c[c[a]+11]](a);H(j,l,m,n);N(p,i,j);f=a+7;c[f]=c[p];k[f]=k[p];c[f+1]=c[p+1];k[f+1]=k[p+1];c[f+2]=c[p+2];k[f+2]=k[p+2];c[f+3]=c[p+3];k[f+3]=k[p+3];b=e}XQa.X=1;function YQa(a,d,e){GX(a,d,e);c[d+16]=c[a+13];return D.Ae}YQa.X=1;function ZQa(){}ZQa.X=1;function $Qa(a){yh(a)}$Qa.X=1;function aRa(){}aRa.X=1;function bRa(a){yh(a)}bRa.X=1;function cRa(){}cRa.X=1;function dRa(a){xe(a)}dRa.X=1;function os(a,d,e){var f=b;b+=40;var g,h;g=c[c[a]];h=c[c[a+1]];if(v[c[c[d]+6]](d,g,h)&&(0==(c[a+2]|0)&&(c[a+2]=v[c[c[d]+2]](d,g,h,0)),0!=(c[a+2]|0))){if(AI(f,g,h),a=c[a+2],1==(c[e+2]|0)){v[c[c[a]+2]](a,g,h,e,f)}else{g=v[c[c[a]+3]](a,g,h,e,f),k[e+3]>g&&(k[e+3]=g)}}b=f}os.X=1;function eRa(){}eRa.X=1;function fRa(a){gRa(a);xe(a)}fRa.X=1;function gRa(a){c[a]=SX+2;TX(a+2)}gRa.X=1;function hRa(a,d,e){var f=b;b+=5;var g,h,i;i=f+1;var j;j=f+2;g=f+3;var l,m=f+4;c[UX]+=1;0!=(c[a+1]&2|0)?(l=bi(d),k[f]=v[c[c[l]+5]](l,k[VX]),l=bi(e),k[i]=v[c[c[l]+5]](l,k[VX]),i=k[WX(f,i)]):i=k[VX];k[j]=ni(d);k[g]=ni(e);j=k[WX(j,g)];l=0;0!=(iRa(c[a+49])|0)?(l=jRa(c[a+49],1140),g=10):0==(c[a+1]&4|0)?(l=Ue(1140,16),g=10):(h=0,g=11);10==g&&(h=l,yk(h,d,e,0,i,j),c[m]=h,c[c[m]+284]=AX(a+2),CX(a+2,m),h=c[m]);b=f;return h}hRa.X=1;function Sr(a,d){var e,f;PQa(a);c[a]=SX+2;c[a+1]=2;XX(a+2);yI(a+7);c[a+1346]=d;Tr(a,2);c[a+48]=v[c[c[d]+3]](d);c[a+49]=v[c[c[d]+2]](d);e=0;var g=a+1346,h=a+50;for(f=0;36>(f|0);){for(var i=f=0;36>(i|0);){i=c[g],c[h+36*e+f]=v[c[c[i]+5]](i,e,f),f=i=f+1}e=f=e+1}}Sr.X=1;function kRa(){}kRa.X=1;function WX(a,d){return k[a]>>0>=c[a+4]>>>0?d>>>0>>0?(f=1,e=7):e=6:e=6:e=6;6==e&&(f=0);return f}oRa.X=1;function pRa(a,d){if(0!=(d|0)){c[d]=c[a+3];c[a+3]=d;var e=a+2;c[e]+=1}}pRa.X=1;function qRa(a){return c[a+49]}qRa.X=1;function rRa(a){return c[a+49]}rRa.X=1;function XX(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}XX.X=1;function Li(a,d){4!=(c[a+54]|0)&&5!=(c[a+54]|0)&&(c[a+54]=d)}Li.X=1;function Fi(a,d){c[a+54]=d}Fi.X=1;function sRa(a,d){$1=a;Bk(d)}sRa.X=1;function tRa(a,d){var e;c[UX]-=1;v[c[c[a]+5]](a,d);e=c[d+284];mRa(a+2,e,AX(a+2)-1);c[c[ZX(a+2,e)]+284]=e;nRa(a+2);oRa(c[a+49],d)?pRa(c[a+49],d):yh(d)}tRa.X=1;function uRa(a,d,e,f){var g=b;b+=2;ct(g);c[g]=a;c[g+1]=f;a=c[a+36*Ie(bi(d))+Ie(bi(e))+50];d=v[c[c[a]+2]](a,g,d,e);b=g;return d}uRa.X=1;function vRa(a,d,e){$1=a;a=(li(d)?li(e):0)&1;a=(a&1?Pi(d)?Pi(e)^1:1:0)&1;return a&1}vRa.X=1;function wRa(a,d,e){var f;$1=a;f=1;Ki(d)?a=5:Ki(e)?a=5:(f=0,a=7);5==a&&!Di(d,e)&&(f=0);return f&1}wRa.X=1;function xRa(a,d,e,f){var g=b;b+=3;yRa(g,e,a);v[c[c[d]+12]](d,g,f);b=g}xRa.X=1;function zRa(){}zRa.X=1;function ARa(a,d){return 0!=(iRa(c[a+48])|0)?jRa(c[a+48],d):Ue(d,16)}ARa.X=1;function BRa(a,d){oRa(c[a+48],d)?pRa(c[a+48],d):yh(d)}BRa.X=1;function CRa(a){return AX(a+2)}CRa.X=1;function DRa(a,d){return c[ZX(a+2,d)]}DRa.X=1;function ERa(a){return ZX(a+2,0)}ERa.X=1;function TX(a){LOa(a,0,AX(a));ROa(a);XX(a)}TX.X=1;function yRa(a,d,e){YX(a);c[a]=FRa+2;c[a+1]=d;c[a+2]=e}yRa.X=1;function GRa(a){xe(a)}GRa.X=1;function HRa(a,d){v[Ur(c[a+2])](d,c[a+2],c[a+1]);return 0}HRa.X=1;function IRa(){}IRa.X=1;function JRa(a){xe(a)}JRa.X=1;function Bi(a){var d=b;b+=3;var e=d+1,f=d+2;c[a]=KRa+2;k[d]=1;k[e]=1;k[f]=1;H(a+41,d,e,f);c[a+45]=0;k[a+46]=0xde0b6b000000000;e=a+47;c[e]=0;k[e]=0;c[e+1]=0;k[e+1]=0;c[e+2]=0;k[e+2]=0;c[e+3]=0;k[e+3]=0;c[a+51]=1;c[a+52]=-1;c[a+53]=-1;c[a+54]=1;k[a+55]=0;k[a+56]=.5;k[a+57]=0;c[a+58]=1;c[a+59]=0;k[a+60]=1;k[a+61]=0;k[a+62]=0;c[a+63]=0;eQ(a+1);b=d}Bi.X=1;function LRa(a){yh(a)}LRa.X=1;function ui(a,d){if(4==(d&1?4:0!=(c[a+51]&3|0)?5:4)){Li(a,1),k[a+55]=0}}ui.X=1;function MRa(){return 1}MRa.X=1;function NRa(){return 248}NRa.X=1;function ORa(){return 12}ORa.X=1;function PRa(a,d){c[a+48]=d;c[a+50]=d}PRa.X=1;function $X(a,d){return c[a+3]+d}$X.X=1;function QRa(a,d,e){var f;gQ(a+1,d+4);gQ(a+17,d+20);Mb(a+33,d+36);Mb(a+37,d+40);Mb(a+41,d+44);c[d+55]=c[a+45];k[d+48]=k[a+46];c[d]=0;c[d+1]=v[c[c[e]+7]](e,c[a+48]);c[d+2]=0;c[d+56]=c[a+51];c[d+57]=c[a+52];c[d+58]=c[a+53];c[d+59]=c[a+54];c[d+59]=c[a+54];k[d+49]=k[a+55];k[d+50]=k[a+56];k[d+51]=k[a+57];c[d+60]=c[a+58];f=v[c[c[e]+10]](e,a);c[d+3]=v[c[c[e]+7]](e,f);if(0!=(c[d+3]|0)){v[c[c[e]+12]](e,f)}k[d+52]=k[a+60];k[d+53]=k[a+61];k[d+54]=k[a+62];k[d+54]=k[a+62];c[d+61]=c[a+63];return D.bf}QRa.X=1;function RRa(a,d){var e,f;e=v[c[c[a]+4]](a);e=v[c[c[d]+4]](d,e,1);f=v[c[c[a]+5]](a,c[e+2],d);v[c[c[d]+5]](d,e,f,1245859651,a)}RRa.X=1;function SRa(a,d,e){var f=b;b+=37;var g=f+16,h=f+20,i=f+24,j=f+28,l=f+32,m=f+36;eQ(f);v[c[c[a]+2]](a,f,g,h);N(i,h,g);k[e]=.5*JB(i);wn(l,g,h);k[m]=.5;Q(j,l,m);c[d]=c[j];k[d]=k[j];c[d+1]=c[j+1];k[d+1]=k[j+1];c[d+2]=c[j+2];k[d+2]=k[j+2];c[d+3]=c[j+3];k[d+3]=k[j+3];b=f}SRa.X=1;function TRa(a,d){return v[c[c[a]+4]](a)*d}TRa.X=1;function URa(a){var d=b;b+=5;var e=d+4;v[c[c[a]+3]](a,d,e);a=JB(d);k[e]+=a;e=k[e];b=d;return e}URa.X=1;function Tf(a,d,e,f,g,h,i){var j=b;b+=24;var l=j+1,m=j+2,n=j+3,p=j+4,r=j+5,s=j+6,t=j+7,w=j+11,x=j+12,y=j+16,z=j+20;k[j]=g;v[c[c[a]+2]](a,d,h,i);k[l]=k[i];k[m]=k[i+1];k[n]=k[i+2];k[p]=k[h];k[r]=k[h+1];k[s]=k[h+2];Q(t,e,j);d=k[t];0Um(f)){f=7}else{Li(d,5);if((c[aSa]?0:1)&1&&0!=(c[a+22]|0)){c[aSa]=1,f=c[a+22],v[c[c[f]+9]](f,D.pf),f=c[a+22],v[c[c[f]+9]](f,D.oe),f=c[a+22],v[c[c[f]+9]](f,D.Fe),f=c[a+22],v[c[c[f]+9]](f,D.Pe)}f=11}}if(7==f){v[c[c[h]+4]](h,ci(d),e,g,c[a+6])}b=e}ym.X=1;function cY(a,d){var e=b;b+=1;var f;c[e]=d;f=ci(c[e]);if(0!=(f|0)){var g=am(a),g=v[c[c[g]+9]](g);v[c[c[g]+10]](g,f,c[a+6]);g=am(a);v[c[c[g]+3]](g,f,c[a+6]);Si(c[e],0)}bSa(a+1,e);b=e}cY.X=1;function bSa(a,d){var e;e=dY(a,d);(e|0)<(Tl(a)|0)&&(cSa(a,e,Tl(a)-1),eY(a))}bSa.X=1;function mm(a,d,e,f,g,h){var i=b;b+=326;var j=i+13,l=i+57,m=i+148,n=i+152,p=i+156,r,s=i+163,t=i+179,w=i+183,x=i+187,y=i+217,z=i+233,A=i+237,C=i+241,B=i+271,K=i+275,E,G=i+279,M=i+286,L=i+290,F=i+306,I=i+310,R,O;hW(i,0);fW(i,0);var Z=xf(f);do{if(Z){fY(j),k[j+41]=k[h+1],gY(l),hY(m,i,f,l),iY(m,a,d,g,g,j)&&9999999747378752e-20=(O|0)){break a}hSa(G,R);R+=1}}}while(0)}}}}while(0);b=i}mm.X=1;function iSa(a,d){fW(a,d)}iSa.X=1;function jSa(){}jSa.X=1;function kSa(){}kSa.X=1;function lSa(a){var d=b;b+=17;var e,f,g;jY(d,D.Ye);f=0;for(var h=a+1,i=a+1,j=a+23;(f|0)<(Tl(h)|0);){g=c[$X(i,f)],e=c[j]&1?6:Ki(g)?6:8,6==e&&ym(a,g),f+=1}kY(d);b=d}lSa.X=1;function mSa(a){var d=b;b+=3;var e,f=d+1,g=d+2;jY(d,D.$e);e=a+7;v[c[c[a]+2]](a);jY(f,D.hf);var h=c[a+21];v[c[c[h]+8]](h,c[a+6]);kY(f);f=Sk(a);jY(g,D.sf);if(0!=(f|0)){var h=c[c[f]+8],i=c[a+21],i=v[c[c[i]+9]](i);v[h](f,i,e,c[a+6])}kY(g);kY(d);b=d}mSa.X=1;function hSa(a,d){var e=b;b+=24;var f,g,h=e+16;f=lY(c[a+2],d);WW(e,c[a+3],mY(c[a+2],d));g=bi(c[a+1]);hi(c[a+1],f);nSa(h,d,c[a+6]);mm(c[a+4],c[a+5],c[a+1],f,e,h);hi(c[a+1],g);b=e}hSa.X=1;function oSa(){}oSa.X=1;function pSa(){}pSa.X=1;function qSa(){}qSa.X=1;function mY(a,d){return nY(a+3,d)}mY.X=1;function lY(a,d){return c[nY(a+3,d)+16]}lY.X=1;function gSa(a,d,e,f){var g=b;b+=35;var h=g+4,i=g+8,j=g+11,l=g+19,m,n=g+24,p=g+25,r=g+33,s=g+34;if(0!=(a|0)){N(g,e,d);IB(g);k[h]=0==k[g]?0xde0b6b000000000:1/k[g];k[h+1]=0==k[g+1]?0xde0b6b000000000:1/k[g+1];k[h+2]=0==k[g+2]?0xde0b6b000000000:1/k[g+2];c[i]=0>k[h]&1;m=i+1;c[m]=0>k[h+1]&1;c[m+1]=0>k[h+2]&1;N(j,e,d);e=J(g,j);oY(l);j=1;m=126;c[n]=0;pY(l,128,n);c[qY(l,0)]=a;for(a=p+4;;){var j=n=j-1,t=n=c[qY(l,n)];c[p]=c[t];k[p]=k[t];c[p+1]=c[t+1];k[p+1]=k[t+1];c[p+2]=c[t+2];k[p+2]=k[t+2];c[p+3]=c[t+3];k[p+3]=k[t+3];t=n+4;c[a]=c[t];k[a]=k[t];c[a+1]=c[t+1];k[a+1]=k[t+1];c[a+2]=c[t+2];k[a+2]=k[t+2];c[a+3]=c[t+3];k[a+3]=k[t+3];k[r]=1;$result1=t=rY(d,h,i,p,r,0,e)&1;if(0!=(t|0)){if(sY(n)){(j|0)>(m|0)&&(m=tY(l)<<1,c[s]=0,pY(l,m,s),m=tY(l)-2);var t=c[n+9],w=j,j=w+1;c[qY(l,w)]=t;n=c[n+10];t=j;j=t+1;c[qY(l,t)]=n}else{t=f,v[c[c[t]+3]](t,n)}}if(0==(j|0)){break}}uY(l)}b=g}gSa.X=1;function Dm(a,d,e,f,g,h,i,j){var l=b;b+=507;var m=l+44,n=l+135,p=l+136,r=l+142,s,t=l+153,w=l+169,x=l+173,y=l+177,z=l+193,A=l+205,C=l+209,B=l+210,K=l+211,E=l+212,G=l+268,M=l+272,L=l+276,F=l+320,I=l+326,R=l+337,O=l+353,Z=l+357,P=l+361,S=l+377,da=l+389,V=l+393,ba=l+394,$=l+395,Y=l+396,la=l+452,ka=l+456,ja=l+460,ea=l+464,ca=l+468,W,U=l+469,X,ma=l+485,ga,ha=l+501,ta=xf(g);if(ta){fY(l),k[l+43]=j,k[l+41]=k[i+1],gY(m),vY(n),wY(p,a,g,m,n),s=p,v[c[c[s]+2]](s,d,e,h,h,l)&&9999999747378752e-20=(rW(zY(ua+6,ra))|0)){break b}}}}while(0);k[La]=1/(Sa|0);LC(za,La);k[Rb]=1;k[pb]=1;k[Sb]=0;H(fb,Rb,pb,Sb);H(ab,zY(ua+6,ra)+10,zY(ua+6,ra)+11,zY(ua+6,ra)+12);var Sc=v[c[c[rb]+4]](a),Mc=c[c[Sc]+2];vw(Ib,d,za);wn(Ac,za,ab);vw(Fc,d,Ac);v[Mc](Sc,Ib,Fc,fb);ra+=1;if((ra|0)>=(yY(ua+6)|0)){break a}}}}else{ra=0;var $c=ta;if((ra|0)<(v[c[c[$c]+23]]($c)|0)){for(var Cd=a;;){var wc=ta;v[c[c[wc]+24]](wc,ra,ob,Gc);vw(Yc,d,ob);vw(Cc,d,Gc);var Bb=v[c[c[Cd]+4]](a);v[c[c[Bb]+2]](Bb,Yc,Cc,f);ra+=1;var fd=ta;if((ra|0)>=(v[c[c[fd]+23]](fd)|0)){break a}}}}}}}}}}}}}}while(0);b=g}GSa.X=1;function ISa(){}ISa.X=1;function JSa(a,d){c[a+22]=d}JSa.X=1;function KSa(a){return c[a+22]}KSa.X=1;function AY(a){return c[a+2]}AY.X=1;function BY(a,d){return c[a+3]+d}BY.X=1;function CY(a){return c[a+1]}CY.X=1;function LSa(a){var d=b;b+=83;var e,f=d+4,g=d+5,h=d+6,i,j,l,m,n,p,r=d+7,s=d+11,t=d+12,w=d+13,x=d+14,y=d+18,z=d+19,A=d+20,C=d+21,B=d+25,K=d+26,E=d+27,G=d+28,M=d+32,L=d+33,F=d+34,I=d+35,R=d+39,O=d+40,Z=d+41,P=d+42,S=d+46,da=d+47,V=d+48,ba=d+49,$=d+53,Y=d+54,la=d+55,ka=d+56,ja=d+60,ea=d+64,ca=d+68,W=d+69,U=d+70,X=d+71,ma=d+75,ga=d+79,ha=0!=(v[c[c[a]+4]](a)|0);a:do{if(ha&&(e=v[c[c[a]+4]](a),0!=(v[c[c[e]+12]](e)&8|0)&&(e=Sk(a),e=v[c[c[e]+9]](e),k[f]=0,k[g]=0,k[h]=0,H(d,f,g,h),i=0,(i|0)<(e|0)))){for(var ta=a;;){j=Sk(a);j=v[c[c[j]+10]](j,i);l=Xj(j);m=0;var ra=(m|0)<(l|0);b:do{if(ra){for(;;){n=j+69*m+1;var ua=v[c[c[ta]+4]](a);v[c[c[ua]+8]](ua,n+8,n+16,aU(n),Fk(n),d);m+=1;if((m|0)>=(l|0)){break b}}}}while(0);i+=1;if((i|0)>=(e|0)){break a}}}}while(0);f=0!=(v[c[c[a]+4]](a)|0);a:do{if(f&&(g=v[c[c[a]+4]](a),0!=(v[c[c[g]+12]](g)&3|0)&&(g=0,h=a+1,(g|0)<(Tl(h)|0)))){ha=a+1;i=e=a;ta=r;j=ba;l=a;m=r;n=x;for(var ra=r,ua=C,za=r,Za=G,ib=r,Ca=I,Sa=r,mb=P,Oa=a+22,Pa=a+22,fc=a+22;;){p=c[$X(ha,g)];if(0==($h(p)&32|0)){if(0!=(v[c[c[e]+4]](a)|0)){var jb=v[c[c[i]+4]](a);0!=(v[c[c[jb]+12]](jb)&1|0)&&(k[s]=1,k[t]=1,k[w]=1,H(r,s,t,w),jb=ki(p),1==(jb|0)?(k[y]=1,k[z]=1,k[A]=1,H(x,y,z,A),c[m]=c[n],k[m]=k[n],c[m+1]=c[n+1],k[m+1]=k[n+1],c[m+2]=c[n+2],k[m+2]=k[n+2],c[m+3]=c[n+3],k[m+3]=k[n+3]):2==(jb|0)?(k[B]=0,k[K]=1,k[E]=0,H(C,B,K,E),c[ra]=c[ua],k[ra]=k[ua],c[ra+1]=c[ua+1],k[ra+1]=k[ua+1],c[ra+2]=c[ua+2],k[ra+2]=k[ua+2],c[ra+3]=c[ua+3],k[ra+3]=k[ua+3]):3==(jb|0)?(k[M]=0,k[L]=1,k[F]=1,H(G,M,L,F),c[za]=c[Za],k[za]=k[Za],c[za+1]=c[Za+1],k[za+1]=k[Za+1],c[za+2]=c[Za+2],k[za+2]=k[Za+2],c[za+3]=c[Za+3],k[za+3]=k[Za+3]):4==(jb|0)?(k[R]=1,k[O]=0,k[Z]=0,H(I,R,O,Z),c[ib]=c[Ca],k[ib]=k[Ca],c[ib+1]=c[Ca+1],k[ib+1]=k[Ca+1],c[ib+2]=c[Ca+2],k[ib+2]=k[Ca+2],c[ib+3]=c[Ca+3],k[ib+3]=k[Ca+3]):5==(jb|0)?(k[S]=1,k[da]=1,k[V]=0,H(P,S,da,V),c[Sa]=c[mb],k[Sa]=k[mb],c[Sa+1]=c[mb+1],k[Sa+1]=k[mb+1],c[Sa+2]=c[mb+2],k[Sa+2]=k[mb+2],c[Sa+3]=c[mb+3],k[Sa+3]=k[mb+3]):(k[$]=1,k[Y]=0,k[la]=0,H(ba,$,Y,la),c[ta]=c[j],k[ta]=k[j],c[ta+1]=c[j+1],k[ta+1]=k[j+1],c[ta+2]=c[j+2],k[ta+2]=k[j+2],c[ta+3]=c[j+3],k[ta+3]=k[j+3]),v[c[c[l]+6]](a,p+1,bi(p),r))}0!=(c[Oa]|0)&&(jb=c[Pa],0!=(v[c[c[jb]+12]](jb)&2|0)&&(k[ca]=1,k[W]=0,k[U]=0,H(ea,ca,W,U),jb=bi(p),v[c[c[jb]+2]](jb,p+1,ka,ja),H(X,VX,VX,VX),JC(ka,X),xn(ja,X),2==(ji(p)|0)&&(jb=bi(p),v[c[c[jb]+2]](jb,p+17,ma,ga),JC(ma,X),xn(ga,X),hp(ka,ma),gp(ja,ga)),p=c[fc],v[c[c[p]+13]](p,ka,ja,ea)))}g+=1;if((g|0)>=(Tl(h)|0)){break a}}}}while(0);b=d}LSa.X=1;function MSa(a,d){var e;e=NSa(a,d);return-1==(e|0)?0:BY(a+10,e)}MSa.X=1;function OSa(a,d,e){var f,g,h;f=OM(d);f&=AY(a+10)-1;g=NSa(a,d);-1!=(g|0)?c[BY(a+10,g)]=c[e]:(g=CY(a+10),h=AY(a+10),PSa(a+10,e),QSa(a+15,d),(h|0)<(AY(a+10)|0)&&(RSa(a,d),d=OM(d),f=AY(a+10)-1&d),c[QV(a+5,g)]=c[QV(a,f)],c[QV(a,f)]=g)}OSa.X=1;function SSa(a,d){v[c[c[d]+8]](d);TSa(a,d);v[c[c[d]+9]](d)}SSa.X=1;function NSa(a,d){var e;e=OM(d);e&=AY(a+10)-1;if(e>>>0>=rW(a)>>>0){e=-1}else{var f=c[sW(a,e)];e=f;for(var g=a+15,h=a+5;-1!=(f|0)&&0==(vN(d,USa(g,e))&1|0);){e=f=c[sW(h,e)]}}return e}NSa.X=1;function PSa(a,d){(CY(a)|0)==(AY(a)|0)&&VSa(a,WSa(a,CY(a)));var e=c[a+3]+c[a+1];0!=(e|0)&&(c[e]=c[d]);e=a+1;c[e]+=1}PSa.X=1;function QSa(a,d){(DY(a)|0)==(XSa(a)|0)&&YSa(a,ZSa(a,DY(a)));var e=(c[a+1]<<1)+c[a+3];0!=(e|0)&&(c[e]=c[d],k[e]=k[d],c[e+1]=c[d+1],k[e+1]=k[d+1]);e=a+1;c[e]+=1}QSa.X=1;function TSa(a,d){var e=b;b+=25;var f,g,h=e+20,i=e+21,j=e+23;f=0;var l=a+1,m=(f|0)<(Tl(l)|0);a:do{if(m){for(var n=a+1;;){g=c[$X(n,f)];if(1==(ji(g)|0)){v[c[c[g]+6]](g,d)}f+=1;if((f|0)>=(Tl(l)|0)){break a}}}}while(0);$Sa(e);f=0;l=a+1;for(m=a+1;(f|0)<(Tl(l)|0);){c[h]=bi(c[$X(m,f)]),c[i]=c[h],0==(MSa(e,i)|0)&&(c[j]=c[h],OSa(e,j,h),n=c[h],v[c[c[n]+14]](n,d)),f+=1}aTa(e);b=e}TSa.X=1;function ZSa(a,d){$1=a;return 0!=(d|0)?d<<1:1}ZSa.X=1;function bTa(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}bTa.X=1;function WSa(a,d){$1=a;return 0!=(d|0)?d<<1:1}WSa.X=1;function cTa(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}cTa.X=1;function dTa(a,d){return(d<<1)+c[a+3]}dTa.X=1;function DY(a){return c[a+1]}DY.X=1;function XSa(a){return c[a+2]}XSa.X=1;function eTa(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=f+d;0!=(i|0)&&(c[i]=c[c[h]+d]);d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}eTa.X=1;function USa(a,d){return(d<<1)+c[a+3]}USa.X=1;function cSa(a,d,e){var f;f=c[c[a+3]+d];c[c[a+3]+d]=c[c[a+3]+e];c[c[a+3]+e]=f}cSa.X=1;function eY(a){a+=1;c[a]-=1}eY.X=1;function fTa(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}fTa.X=1;function gTa(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}gTa.X=1;function RSa(a,d){var e=b;b+=2;var f,g,h=e+1,i,j;$3=d;f=AY(a+10);var l=(rW(a)|0)<(f|0);a:do{if(l){g=rW(a);c[e]=0;PV(a,f,e);c[h]=0;PV(a+5,f,h);i=0;var m=(i|0)<(f|0);b:do{if(m){for(var n=a;;){if(c[QV(n,i)]=-1,i+=1,(i|0)>=(f|0)){break b}}}}while(0);i=0;m=(i|0)<(f|0);b:do{if(m){for(n=a+5;;){if(c[QV(n,i)]=-1,i+=1,(i|0)>=(f|0)){break b}}}}while(0);i=0;if((i|0)<(g|0)){for(var m=a+15,n=a+10,p=a,r=a+5,s=a;;){if(j=OM(dTa(m,i)),j&=AY(n)-1,c[QV(r,i)]=c[QV(p,j)],c[QV(s,j)]=i,i+=1,(i|0)>=(g|0)){break a}}}}}while(0);b=e}RSa.X=1;function YSa(a,d){var e;(XSa(a)|0)<(d|0)&&(e=hTa(a,d),iTa(a,0,DY(a),e),bTa(a,0,DY(a)),jTa(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}YSa.X=1;function hTa(a,d){return 0!=(d|0)?kTa(a,d,0):0}hTa.X=1;function iTa(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=(d<<1)+f;if(0!=(i|0)){var j=(d<<1)+c[h];c[i]=c[j];k[i]=k[j];c[i+1]=c[j+1];k[i+1]=k[j+1]}d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}iTa.X=1;function jTa(a){0!=(c[a+3]|0)&&(c[a+4]&1&&lTa(a,c[a+3]),c[a+3]=0)}jTa.X=1;function lTa(a,d){$1=a;yh(d)}lTa.X=1;function kTa(a,d,e){$1=a;$3=e;return Ue(d<<3,16)}kTa.X=1;function VSa(a,d){var e;(AY(a)|0)<(d|0)&&(e=mTa(a,d),eTa(a,0,CY(a),e),cTa(a,0,CY(a)),nTa(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}VSa.X=1;function mTa(a,d){return 0!=(d|0)?oTa(a,d,0):0}mTa.X=1;function nTa(a){0!=(c[a+3]|0)&&(c[a+4]&1&&pTa(a,c[a+3]),c[a+3]=0)}nTa.X=1;function pTa(a,d){$1=a;yh(d)}pTa.X=1;function oTa(a,d,e){$1=a;$3=e;return Ue(d<<2,16)}oTa.X=1;function dY(a,d){var e,f;e=Tl(a);f=0;for(var g=a+3;(f|0)<(Tl(a)|0);){var h=f;if((c[c[g]+f]|0)==(c[d]|0)){e=h;break}f=h+1}return e}dY.X=1;function qTa(a){cTa(a,0,CY(a));nTa(a);fTa(a)}qTa.X=1;function rTa(a){bTa(a,0,DY(a));jTa(a);gTa(a)}rTa.X=1;function $Sa(a){vW(a);vW(a+5);fTa(a+10);gTa(a+15)}$Sa.X=1;function aTa(a){rTa(a+15);qTa(a+10);wW(a+5);wW(a)}aTa.X=1;function EY(a){c[a]=sTa+2}EY.X=1;function FY(a){c[a]=tTa+2}FY.X=1;function uTa(a){c[a]=vTa+2}uTa.X=1;function wTa(a,d,e){c[a+36]=d;c[a+38]=e}wTa.X=1;function xTa(a,d,e){c[a+37]=d;c[a+39]=e}xTa.X=1;function yTa(){}yTa.X=1;function HSa(a,d,e,f){EY(a);FY(a+4);c[a]=GY+2;c[a+4]=GY+8;c[a+2]=d;d=a+3;c[d]=c[f];k[d]=k[f];c[d+1]=c[f+1];k[d+1]=k[f+1];c[d+2]=c[f+2];k[d+2]=k[f+2];c[d+3]=c[f+3];k[d+3]=k[f+3];sQ(a+7,e)}HSa.X=1;function zTa(a){xe(a)}zTa.X=1;function ATa(a,d,e,f){var g=b;b+=60;var h=g+4,i=g+8,j=g+12,l=g+16,m=g+20,n=g+24,p=g+28,r=g+32,s=g+36,t=g+37,w=g+41,x=g+45,y=g+49,z=g+53,A=g+54,C=g+55,B=g+56;$3=e;$4=f;vw(j,a+7,d);c[g]=c[j];k[g]=k[j];c[g+1]=c[j+1];k[g+1]=k[j+1];c[g+2]=c[j+2];k[g+2]=k[j+2];c[g+3]=c[j+3];k[g+3]=k[j+3];vw(l,a+7,d+4);c[h]=c[l];k[h]=k[l];c[h+1]=c[l+1];k[h+1]=k[l+1];c[h+2]=c[l+2];k[h+2]=k[l+2];c[h+3]=c[l+3];k[h+3]=k[l+3];vw(m,a+7,d+8);c[i]=c[m];k[i]=k[m];c[i+1]=c[m+1];k[i+1]=k[m+1];c[i+2]=c[m+2];k[i+2]=k[m+2];c[i+3]=c[m+3];k[i+3]=k[m+3];wn(r,g,h);wn(p,r,i);k[s]=.3333333432674408;Q(n,p,s);N(w,h,g);N(x,i,g);qn(t,w,x);IB(t);k[z]=1;k[A]=1;k[C]=0;H(y,z,A,C);d=c[a+2];e=c[c[d]+2];wn(B,n,t);v[e](d,n,B,y);n=c[a+2];v[c[c[n]+2]](n,g,h,a+3);n=c[a+2];v[c[c[n]+2]](n,h,i,a+3);h=c[a+2];v[c[c[h]+2]](h,i,g,a+3);b=g}ATa.X=1;function BTa(a,d,e,f){v[c[c[a]+2]](a,d,e,f)}BTa.X=1;function CTa(a){xe(a-4)}CTa.X=1;function DTa(a,d,e,f){BTa(a-4,d,e,f)}DTa.X=1;function CSa(a,d,e,f){AI(a,d,e);c[a]=ETa+2;c[a+40]=f}CSa.X=1;function FTa(a){xe(a)}FTa.X=1;function GTa(a,d,e,f){var g=b;b+=102;var h=g+1,i=g+5,j=g+9,l=g+13,m=g+17,n=g+21,p=g+25,r=g+29,s=g+33;k[g]=f;f=($j(c[a+1])|0)!=(c[a+34]|0)&1;Q(i,d,g);wn(h,e,i);f&1?(kQ(m,a+18,h),c[j]=c[m],k[j]=k[m],c[j+1]=c[m+1],k[j+1]=k[m+1],c[j+2]=c[m+2],k[j+2]=k[m+2],c[j+3]=c[m+3],k[j+3]=k[m+3],kQ(n,a+2,e),c[l]=c[n],k[l]=k[n],c[l+1]=c[n+1],k[l+1]=k[n+1],c[l+2]=c[n+2],k[l+2]=k[n+2],c[l+3]=c[n+3],k[l+3]=k[n+3]):(kQ(p,a+2,h),c[j]=c[p],k[j]=k[p],c[j+1]=c[p+1],k[j+1]=k[p+1],c[j+2]=c[p+2],k[j+2]=k[p+2],c[j+3]=c[p+3],k[j+3]=k[p+3],kQ(r,a+18,e),c[l]=c[r],k[l]=k[r],c[l+1]=c[r+1],k[l+1]=k[r+1],c[l+2]=c[r+2],k[l+2]=k[r+2],c[l+3]=c[r+3],k[l+3]=k[r+3]);EU(s,j,l,d,k[g]);d=s+12;c[d]=c[h];k[d]=k[h];c[d+1]=c[h+1];k[d+1]=k[h+1];c[d+2]=c[h+2];k[d+2]=k[h+2];c[d+3]=c[h+3];k[d+3]=k[h+3];h=s+8;c[h]=c[e];k[h]=k[e];c[h+1]=c[e+1];k[h+1]=k[e+1];c[h+2]=c[e+2];k[h+2]=k[e+2];c[h+3]=c[e+3];k[h+3]=k[e+3];f&1?(c[s+23]=c[a+37],c[s+24]=c[a+36],c[s+25]=c[a+39],c[s+26]=c[a+38]):(c[s+23]=c[a+36],c[s+24]=c[a+37],c[s+25]=c[a+38],c[s+26]=c[a+39]);e=c[a+40];v[c[c[e]+3]](e,s,f&1?c[a+35]:c[a+34],c[s+23],c[s+25],f&1?c[a+34]:c[a+35],c[s+24],c[s+26]);b=g}GTa.X=1;function ASa(a,d,e,f){uTa(a);c[a]=HTa+2;c[a+1]=d;c[a+2]=e;c[a+3]=f}ASa.X=1;function ITa(a){xe(a)}ITa.X=1;function JTa(a,d){var e=b;b+=41;var f,g;f=c[d];(f|0)!=(c[a+1]|0)&&(g=c[a+3],v[c[c[g]+2]](g,ci(f))&&(g=Sk(c[a+2]),g=v[c[c[g]+2]](g,c[a+1],f,0),0!=(g|0)&&(CSa(e,c[a+1],f,c[a+3]),v[c[c[g]+2]](g,c[a+1],f,c[a+2]+7,e),v[c[c[g]]](g),f=Sk(c[a+2]),v[c[c[f]+15]](f,g))));b=e;return 1}JTa.X=1;function KTa(){}KTa.X=1;function LTa(a){xe(a)}LTa.X=1;function ESa(a,d,e,f,g,h,i){var j=b;b+=8;var l=j+4;MTa(a);c[a]=NTa+2;sQ(a+9,e);sQ(a+25,f);c[a+45]=g;c[a+46]=h;k[a+47]=i;c[a+48]=d;N(j,a+25+12,a+9+12);uC(l,j);k[a+1]=0==k[l]?0xde0b6b000000000:1/k[l];k[a+1+1]=0==k[l+1]?0xde0b6b000000000:1/k[l+1];k[a+1+2]=0==k[l+2]?0xde0b6b000000000:1/k[l+2];c[a+5]=0>k[a+1]&1;c[a+6]=0>k[a+1+1]&1;c[a+7]=0>k[a+1+2]&1;k[a+8]=J(l,j);b=j}ESa.X=1;function MTa(a){uTa(a);c[a]=OTa+2}MTa.X=1;function PTa(a){xe(a)}PTa.X=1;function QTa(a){c[a]=RTa+2}QTa.X=1;function nY(a,d){return c[a+3]+20*d}nY.X=1;function STa(a,d){var e;if(0==k[c[a+46]+1]){e=0}else{e=c[d];var f=c[a+46];v[c[c[f]+2]](f,ci(e))&&Dm(c[a+48],a+9,a+25,e,bi(e),e+1,c[a+46],k[a+47]);e=1}return e}STa.X=1;function TTa(){}TTa.X=1;function UTa(a){xe(a)}UTa.X=1;function ySa(a,d,e,f){var g=b;b+=40;var h=g+12,i=g+24,j=g+28,l=g+32,m=g+36,n=g+37,p=g+38,r=g+39;Bc(h,a);ww(g,d,h);dc(g,i);AV(i);k[f]=KV(i);H(j,i,i+1,i+2);c[e]=c[j];k[e]=k[j];c[e+1]=c[j+1];k[e+1]=k[j+1];c[e+2]=c[j+2];k[e+2]=k[j+2];c[e+3]=c[j+3];k[e+3]=k[j+3];k[e+3]=0;a=Um(e);1.4210854715202004e-14>a?(k[m]=1,k[n]=0,k[p]=0,H(l,m,n,p),c[e]=c[l],k[e]=k[l],c[e+1]=c[l+1],k[e+1]=k[l+1],c[e+2]=c[l+2],k[e+2]=k[l+2],c[e+3]=c[l+3],k[e+3]=k[l+3]):(k[r]=ec(a),KB(e,r));b=g}ySa.X=1;function wSa(a,d,e,f,g){var h=b;b+=8;var i=h+4;MTa(a);c[a]=VTa+2;var j=a+9;c[j]=c[d];k[j]=k[d];c[j+1]=c[d+1];k[j+1]=k[d+1];c[j+2]=c[d+2];k[j+2]=k[d+2];c[j+3]=c[d+3];k[j+3]=k[d+3];j=a+13;c[j]=c[e];k[j]=k[e];c[j+1]=c[e+1];k[j+1]=k[e+1];c[j+2]=c[e+2];k[j+2]=k[e+2];c[j+3]=c[e+3];k[j+3]=k[e+3];c[a+53]=f;c[a+54]=g;eQ(a+17);pQ(a+17,a+9);eQ(a+33);pQ(a+33,a+13);N(h,e,d);IB(h);k[a+1]=0==k[h]?0xde0b6b000000000:1/k[h];k[a+1+1]=0==k[h+1]?0xde0b6b000000000:1/k[h+1];k[a+1+2]=0==k[h+2]?0xde0b6b000000000:1/k[h+2];c[a+5]=0>k[a+1]&1;c[a+6]=0>k[a+1+1]&1;c[a+7]=0>k[a+1+2]&1;N(i,a+13,a+9);k[a+8]=J(h,i);b=h}wSa.X=1;function WTa(a){xe(a)}WTa.X=1;function XTa(a,d){var e;if(0==k[c[a+54]+1]){e=0}else{e=c[d];var f=c[a+54];v[c[c[f]+2]](f,ci(e))&&mm(a+17,a+33,e,bi(e),e+1,c[a+54]);e=1}return e}XTa.X=1;function YTa(){}YTa.X=1;function uSa(a,d,e){bLa(a);c[a]=ZTa+2;c[a+4]=e;c[a+5]=d;k[a+1]=k[c[a+4]+1]}uSa.X=1;function $Ta(a){xe(a)}$Ta.X=1;function aUa(a,d){var e=c[a+4];return v[c[c[e]+2]](e,d)}aUa.X=1;function bUa(a,d,e){var f=b;b+=2;c[f]=-1;c[f+1]=c[a+5];0==(c[d+1]|0)&&(c[d+1]=f);var g=c[a+4],d=v[c[c[g]+3]](g,d,e&1);k[a+1]=k[c[a+4]+1];b=f;return d}bUa.X=1;function cUa(){}cUa.X=1;function tSa(a,d,e,f,g,h,i,j){dUa(a,d,e,f,j,v[c[c[i]+11]](i));c[a]=eUa+2;c[a+53]=g;c[a+54]=h;c[a+55]=i}tSa.X=1;function fUa(a){xe(a)}fUa.X=1;function gUa(a,d,e,f,g,h){var i=b;b+=13;var j;j=i+2;c[i]=g;c[i+1]=h;f<=k[c[a+53]+1]?(SV(j,c[a+54],i,d,e,f),a=c[a+53],j=v[c[c[a]+3]](a,j,0)):j=f;b=i;return j}gUa.X=1;function hUa(){}hUa.X=1;function rSa(a,d,e,f,g,h,i,j){dUa(a,d,e,f,j,v[c[c[i]+11]](i));c[a]=iUa+2;c[a+53]=g;c[a+54]=h;c[a+55]=i}rSa.X=1;function jUa(a){xe(a)}jUa.X=1;function kUa(a,d,e,f,g,h){var i=b;b+=13;var j;j=i+2;c[i]=g;c[i+1]=h;f<=k[c[a+53]+1]?(SV(j,c[a+54],i,d,e,f),a=c[a+53],j=v[c[c[a]+3]](a,j,1)):j=f;b=i;return j}kUa.X=1;function vY(a){QTa(a);c[a]=lUa+2}vY.X=1;function mUa(){}mUa.X=1;function nUa(a){xe(a)}nUa.X=1;function oUa(){}oUa.X=1;function pUa(){}pUa.X=1;function nSa(a,d,e){GW(a);c[a]=qUa+2;c[a+6]=e;c[a+7]=d;k[a+1]=k[c[a+6]+1]}nSa.X=1;function rUa(a){xe(a)}rUa.X=1;function sUa(a,d){var e=c[a+6];return v[c[c[e]+2]](e,d)}sUa.X=1;function tUa(){}tUa.X=1;function uUa(){return 1}uUa.X=1;function vUa(){return 1}vUa.X=1;function wUa(){}wUa.X=1;function xUa(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}xUa.X=1;function HY(a){c[a]=yUa+2}HY.X=1;function qY(a,d){return c[a+3]+d}qY.X=1;function tY(a){return c[a+1]}tY.X=1;function oY(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}oY.X=1;function IY(a){return 0==(c[a+10]|0)}IY.X=1;function zUa(a){return c[a+2]}zUa.X=1;function AUa(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=f+d;0!=(i|0)&&(c[i]=c[c[h]+d]);d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}AUa.X=1;function BUa(a,d,e){var f=b;b+=2;c[f]=-1;c[f+1]=c[a+7];0==(c[d+1]|0)&&(c[d+1]=f);var g=c[a+6],d=v[c[c[g]+3]](g,d,e&1);k[a+1]=k[c[a+6]+1];b=f;return d}BUa.X=1;function pY(a,d,e){var f,g;f=tY(a);var h=(d|0)<(f|0);a:do{if(h){if(g=d,(g|0)<(f|0)){for(;;){if(g+=1,(g|0)>=(f|0)){break a}}}}else{if((d|0)>(tY(a)|0)&&JY(a,d),g=f,(g|0)<(d|0)){for(var i=a+3;;){var j=c[i]+g;0!=(j|0)&&(c[j]=c[e]);g+=1;if((g|0)>=(d|0)){break a}}}}}while(0);c[a+1]=d}pY.X=1;function rY(a,d,e,f,g,h,i){var j,l,m,n,p;k[g]=(k[(c[e]<<2)+f]-k[a])*k[d];m=(k[(1-c[e]<<2)+f]-k[a])*k[d];n=(k[(c[e+1]<<2)+f+1]-k[a+1])*k[d+1];p=(k[(1-c[e+1]<<2)+f+1]-k[a+1])*k[d+1];var r=k[g]>p;a:do{if(r){j=4}else{if(n>m){j=4}else{n>k[g]&&(k[g]=n);pl;do{if(!s&&j<=m){j>k[g]&&(k[g]=j);lh:0;j=19;break a}}while(0);l=0;j=19}}}while(0);4==j&&(l=0);return l}rY.X=1;function sY(a){return IY(a)^1}sY.X=1;function uY(a){xUa(a,0,tY(a));CUa(a);oY(a)}uY.X=1;function CUa(a){0!=(c[a+3]|0)&&(c[a+4]&1&&DUa(a,c[a+3]),c[a+3]=0)}CUa.X=1;function DUa(a,d){$1=a;yh(d)}DUa.X=1;function JY(a,d){var e;(zUa(a)|0)<(d|0)&&(e=EUa(a,d),AUa(a,0,tY(a),e),xUa(a,0,tY(a)),CUa(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}JY.X=1;function EUa(a,d){return 0!=(d|0)?FUa(a,d,0):0}EUa.X=1;function FUa(a,d,e){$1=a;$3=e;return Ue(d<<2,16)}FUa.X=1;function fSa(a,d,e,f,g,h,i){HY(a);c[a]=GUa+2;c[a+1]=d;c[a+2]=e;c[a+3]=f;c[a+4]=g;c[a+5]=h;c[a+6]=i}fSa.X=1;function HUa(a){xe(a)}HUa.X=1;function IUa(a,d){hSa(a,c[d+9])}IUa.X=1;function JUa(a,d,e){$4=e;v[c[c[a]+3]](a,d)}JUa.X=1;function KUa(){}KUa.X=1;function LUa(a){xe(a)}LUa.X=1;function MUa(){}MUa.X=1;function eSa(a,d,e,f,g,h,i){NUa(a,d,e,c[f+5]);c[a]=OUa+2;c[a+11]=f;c[a+12]=g;c[a+13]=h;sQ(a+14,i)}eSa.X=1;function PUa(a){xe(a)}PUa.X=1;function QUa(a,d,e,f,g){var h=b;b+=13;var i=h+2,j=h+6;c[h]=f;c[h+1]=g;Bo(i,a+14,d);pE(j,c[a+12],h,i,e);a=c[a+11];j=v[c[c[a]+3]](a,j,1);b=h;return j}QUa.X=1;function RUa(){}RUa.X=1;function SUa(){}SUa.X=1;function TUa(){}TUa.X=1;function KY(a){c[a]&=-2;c[a]&=-3;c[a]&=-5;c[a]&=-9}KY.X=1;function LY(a,d){return c[a+3]+d}LY.X=1;function MY(a){return c[a+1]}MY.X=1;function UUa(){}UUa.X=1;function dSa(a,d,e,f,g,h,i){NUa(a,d,e,c[f+5]);c[a]=VUa+2;c[a+11]=f;c[a+12]=g;c[a+13]=h;sQ(a+14,i)}dSa.X=1;function WUa(a){xe(a)}WUa.X=1;function XUa(a,d,e,f,g){var h=b;b+=13;var i=h+2,j=h+6;c[h]=f;c[h+1]=g;Bo(i,a+14,d);pE(j,c[a+12],h,i,e);a=c[a+11];j=v[c[c[a]+3]](a,j,1);b=h;return j}XUa.X=1;function gY(a){k[a+77]=9999999747378752e-20;YUa(a+79)}gY.X=1;function YUa(a){KY(a+4)}YUa.X=1;function fY(a){c[a]=ZUa+2;k[a+41]=0xde0b6b000000000;c[a+42]=0;k[a+43]=0}fY.X=1;function $Ua(a){xe(a)}$Ua.X=1;function kY(a){$1=a;aVa()}kY.X=1;function jY(a,d){$1=a;bVa(d)}jY.X=1;function cVa(a,d,e){var f=b;b+=1;var g,h,i,j;g=c[a+7]&1?e:d;d=c[a+7]&1?d:e;e=bi(g);h=el(e);c[f]=0;dVa(a+2,h,f);i=0;var l=(i|0)<(h|0);a:do{if(l){for(var m=a+2,n=a+1,p=a+8,r=a+2;;){if(0!=(hk(e)|0)){c[LY(m,i)]=0}else{j=bi(g);hi(g,Yk(e,i));var s=c[n],s=v[c[c[s]+2]](s,g,d,c[p]);c[LY(r,i)]=s;hi(g,j)}i+=1;if((i|0)>=(h|0)){break a}}}}while(0);b=f}cVa.X=1;function dVa(a,d,e){var f,g;f=MY(a);var h=(d|0)<(f|0);a:do{if(h){if(g=d,(g|0)<(f|0)){for(;;){if(g+=1,(g|0)>=(f|0)){break a}}}}else{if((d|0)>(MY(a)|0)&&eVa(a,d),g=f,(g|0)<(d|0)){for(var i=a+3;;){var j=c[i]+g;0!=(j|0)&&(c[j]=c[e]);g+=1;if((g|0)>=(d|0)){break a}}}}}while(0);c[a+1]=d}dVa.X=1;function fVa(a){var d,e;d=MY(a+2);e=0;var f=(e|0)<(d|0);a:do{if(f){for(var g=a+2,h=a+2,i=a+1,j=a+2;;){if(0!=(c[LY(g,e)]|0)){var l=c[LY(h,e)];v[c[c[l]]](l);l=c[i];v[c[c[l]+15]](l,c[LY(j,e)])}e+=1;if((e|0)>=(d|0)){break a}}}}while(0)}fVa.X=1;function gVa(a){hVa(a);xe(a)}gVa.X=1;function NY(a,d,e,f,g){g&=1;aX(a,d,e,f);c[a]=OY+2;iVa(a+2);c[a+7]=g&1;c[a+8]=c[d+1];c[a+9]=0;c[a+10]=ik(bi(c[a+7]&1?f:e));cVa(a,e,f)}NY.X=1;function hVa(a){c[a]=OY+2;fVa(a);jVa(a+2)}hVa.X=1;function PY(a,d,e){var f,g;f=AX(a);var h=(d|0)<(f|0);a:do{if(h){if(g=d,(g|0)<(f|0)){for(;;){if(g+=1,(g|0)>=(f|0)){break a}}}}else{if((d|0)>(AX(a)|0)&&POa(a,d),g=f,(g|0)<(d|0)){for(var i=a+3;;){var j=c[i]+g;0!=(j|0)&&(c[j]=c[e]);g+=1;if((g|0)>=(d|0)){break a}}}}}while(0);c[a+1]=d}PY.X=1;function QY(a,d,e){c[a]=c[d];k[a]=k[d];c[a+1]=c[d+1];k[a+1]=k[d+1];c[a+2]=c[d+2];k[a+2]=k[d+2];c[a+3]=c[d+3];k[a+3]=k[d+3];a+=4;c[a]=c[e];k[a]=k[e];c[a+1]=c[e+1];k[a+1]=k[e+1];c[a+2]=c[e+2];k[a+2]=k[e+2];c[a+3]=c[e+3];k[a+3]=k[e+3]}QY.X=1;function kVa(a,d,e){var f=b;b+=86;var g,h=f+16,i=f+32,j=f+48,l=f+52,m=f+56,n=f+60,p=f+72,r=f+76,s=f+77,t=f+78,w=f+79,x=f+83,y=f+84,z=f+85;g=bi(c[a+1]);sQ(f,c[a+1]+1);sQ(h,c[a+1]+17);WW(i,f,al(g,e));v[c[c[d]+2]](d,i,j,l);g=bi(c[a+2]);v[c[c[g]+2]](g,c[a+2]+1,m,n);if(hX(j,l,m,n)){Ji(c[a+1],i);wi(c[a+1],i);i=bi(c[a+1]);hi(c[a+1],d);0==(c[c[a+6]+e]|0)&&(d=c[a+3],d=v[c[c[d]+2]](d,c[a+1],c[a+2],c[a+7]),c[c[a+6]+e]=d);d=c[a+5];g=c[d];if((dI(c[a+5])|0)==(c[a+1]|0)){v[c[g+2]](d,-1,e)}else{v[c[g+3]](d,-1,e)}e=c[c[a+6]+e];v[c[c[e]+2]](e,c[a+1],c[a+2],c[a+4],c[a+5]);0!=(c[c[a+4]+5]|0)&&(e=c[c[a+4]+5],0!=(v[c[c[e]+12]](e)&2|0)&&(e=c[c[a+4]+5],d=c[c[e]+13],k[r]=1,k[s]=1,k[t]=1,H(p,r,s,t),v[d](e,j,l,p),j=c[c[a+4]+5],l=c[c[j]+13],k[x]=1,k[y]=1,k[z]=1,H(w,x,y,z),v[l](j,m,n,w)));hi(c[a+1],i);Ji(c[a+1],f);wi(c[a+1],h)}b=f}kVa.X=1;function lVa(){}lVa.X=1;function mVa(a,d,e,f,g){var h=b;b+=163;var i,j,l,m=h+8,n,p=h+13,r=h+14,s=h+18,t=h+22,w=h+38,x=h+54,y=h+70,z=h+78,A=h+83,C=h+99,B=h+115,K=h+131,E=h+135,G=h+139,M=h+143,L=h+147;i=c[a+7]&1?e:d;j=c[a+7]&1?d:e;l=bi(i);(ik(l)|0)!=(c[a+10]|0)&&(fVa(a),cVa(a,d,e));d=hk(l);nVa(h,i,j,c[a+1],f,g,LY(a+2,0),c[a+8]);XX(m);for(var f=0,e=a+2,F=a+2,I=a+2;(f|0)<(MY(e)|0);){if(0!=(c[LY(F,f)]|0)){n=c[LY(I,f)];v[c[c[n]+4]](n,m);for(n=0;(n|0)<(AX(m)|0);){0!=(Xj(c[ZX(m,n)])|0)&&(fI(g,c[ZX(m,n)]),DI(g),fI(g,0)),n+=1}c[p]=0;PY(m,0,p)}f+=1}TX(m);g=0!=(d|0);a:do{if(g){uw(x,i+1),WW(w,x,j+1),xi(t,w),m=bi(j),v[c[c[m]+2]](m,t,r,s),QY(y,r,s),RY(d,c[d],y,h)}else{m=MY(a+2);for(p=0;;){if((p|0)>=(m|0)){break a}kVa(h,Yk(l,p),p);p+=1}}}while(0);r=MY(a+2);XX(z);s=0;t=a+2;w=a+2;x=a+1;y=a+2;for(a+=2;(s|0)<(r|0);){0!=(c[LY(t,s)]|0)&&(d=Yk(l,s),xi(A,i+1),xi(C,i+17),WW(L,A,al(l,s)),xi(B,L),v[c[c[d]+2]](d,B,K,E),d=bi(j),v[c[c[d]+2]](d,j+1,G,M),hX(K,E,G,M)||(d=c[LY(w,s)],v[c[c[d]]](d),d=c[x],v[c[c[d]+15]](d,c[LY(y,s)]),c[LY(a,s)]=0)),s+=1}TX(z);b=h}mVa.X=1;function RY(a,d,e,f){var g=b;b+=17;var h=g+1,i=g+9,j=g+14,l=g+15,m=g+16;$1=a;c[g]=d;if(0!=(c[g]|0)){c[h]=c[e];k[h]=k[e];c[h+1]=c[e+1];k[h+1]=k[e+1];c[h+2]=c[e+2];k[h+2]=k[e+2];c[h+3]=c[e+3];k[h+3]=k[e+3];c[h+4]=c[e+4];k[h+4]=k[e+4];c[h+5]=c[e+5];k[h+5]=k[e+5];c[h+6]=c[e+6];k[h+6]=k[e+6];c[h+7]=c[e+7];k[h+7]=k[e+7];oY(i);c[j]=0;pY(i,0,j);JY(i,64);for(SY(i,g);!(a=c[qY(i,tY(i)-1)],oVa(i),TY(a,h)&&(sY(a)?(c[l]=c[a+9],SY(i,l),c[m]=c[a+10],SY(i,m)):(d=f,v[c[c[d]+3]](d,a))),0>=(tY(i)|0));){}uY(i)}b=g}RY.X=1;function pVa(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}pVa.X=1;function qVa(a,d){$1=a;return 0!=(d|0)?d<<1:1}qVa.X=1;function rVa(a){return c[a+2]}rVa.X=1;function sVa(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=f+d;0!=(i|0)&&(c[i]=c[c[h]+d]);d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}sVa.X=1;function iVa(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}iVa.X=1;function oVa(a){a+=1;c[a]-=1}oVa.X=1;function UY(a){c[a]=tVa+2;c[a+1]=35;c[a+2]=0}UY.X=1;function uVa(a,d,e,f,g){var h=b;b+=32;var i,j,l,m,n,p=h+16,r;i=c[a+7]&1?e:d;d=c[a+7]&1?d:e;e=bi(i);j=1;l=MY(a+2);m=0;var s=(m|0)<(l|0);a:do{if(s){for(var t=a+2;;){if(n=Yk(e,m),xi(h,i+1),WW(p,h,al(e,m)),Ji(i,p),r=bi(i),hi(i,n),n=c[LY(t,m)],n=v[c[c[n]+3]](n,i,d,f,g),n=(l|0)){break a}}}}while(0);b=h;return j}uVa.X=1;function vVa(a,d){var e;e=0;var f=a+2,g=(e|0)<(MY(f)|0);a:do{if(g){for(var h=a+2,i=a+2;;){if(0!=(c[LY(h,e)]|0)){var j=c[LY(i,e)];v[c[c[j]+4]](j,d)}e+=1;if((e|0)>=(MY(f)|0)){break a}}}}while(0)}vVa.X=1;function eVa(a,d){var e;(rVa(a)|0)<(d|0)&&(e=wVa(a,d),sVa(a,0,MY(a),e),pVa(a,0,MY(a)),xVa(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}eVa.X=1;function wVa(a,d){return 0!=(d|0)?yVa(a,d,0):0}wVa.X=1;function xVa(a){0!=(c[a+3]|0)&&(c[a+4]&1&&zVa(a,c[a+3]),c[a+3]=0)}xVa.X=1;function zVa(a,d){$1=a;yh(d)}zVa.X=1;function yVa(a,d,e){$1=a;$3=e;return Ue(d<<2,16)}yVa.X=1;function jVa(a){pVa(a,0,MY(a));xVa(a);iVa(a)}jVa.X=1;function SY(a,d){(tY(a)|0)==(zUa(a)|0)&&JY(a,qVa(a,tY(a)));var e=c[a+3]+c[a+1];0!=(e|0)&&(c[e]=c[d]);e=a+1;c[e]+=1}SY.X=1;function TY(a,d){return k[a]<=k[d+4]?k[a+4]>=k[d]?k[a+1]<=k[d+4+1]?k[a+4+1]>=k[d+1]?k[a+2]<=k[d+4+2]?k[a+4+2]>=k[d+2]:0:0:0:0:0}TY.X=1;function nVa(a,d,e,f,g,h,i,j){HY(a);c[a]=AVa+2;c[a+1]=d;c[a+2]=e;c[a+3]=f;c[a+4]=g;c[a+5]=h;c[a+6]=i;c[a+7]=j}nVa.X=1;function BVa(a){xe(a)}BVa.X=1;function CVa(a,d){var e=b;b+=31;var f,g,h=e+4,i=e+8,j=e+24,l=e+28,m=e+29,n=e+30;f=c[d+9];g=Yk(bi(c[a+1]),f);if(0!=(c[c[a+4]+5]|0)){var p=c[c[a+4]+5];0!=(v[c[c[p]+12]](p)&2|0)&&(sQ(i,c[a+1]+1),fh(d,d+4,0,i,e,h),i=c[c[a+4]+5],p=c[c[i]+13],k[l]=1,k[m]=0,k[n]=0,H(j,l,m,n),v[p](i,e,h,j))}kVa(a,g,f);b=e}CVa.X=1;function Qk(a,d){var e=b;b+=9;var f,g=e+1,h=e+2,i=e+3,j=e+4,l=e+5,m=e+6,n=e+7,p=e+8;f=d&1;UY(a);c[a]=VY+2;DVa(a+3);k[e]=0xde0b6b000000000;k[g]=0xde0b6b000000000;k[h]=0xde0b6b000000000;H(a+8,e,g,h);k[i]=-0xde0b6b000000000;k[j]=-0xde0b6b000000000;k[l]=-0xde0b6b000000000;H(a+12,i,j,l);c[a+16]=0;c[a+17]=1;k[a+18]=0;k[m]=1;k[n]=1;k[p]=1;H(a+19,m,n,p);c[a+1]=31;f&1&&(f=Ue(40,16),0==(f|0)?f=0:WY(f),c[a+16]=f);b=e}Qk.X=1;function EVa(a){FVa(a);yh(a)}EVa.X=1;function GVa(a){a+=1;c[a]-=1}GVa.X=1;function $k(a,d,e){var f=b;b+=36;var g=f+20,h=f+24,i=f+28,j=a+17;c[j]+=1;c[f+19]=0;xi(f,d);c[f+16]=e;c[f+17]=Ie(e);k[f+18]=v[c[c[e]+11]](e);v[c[c[e]+2]](e,d,g,h);for(var d=0,e=a+8,j=a+8,l=a+12,m=a+12;;){k[e+d]>k[g+d]&&(k[j+d]=k[g+d]);k[l+d]k[m+p]&&(k[g+p]=k[m+p]);k[r+p]=(fl(i)|0)){break a}}}}while(0);b=d}OVa.X=1;function PVa(a,d,e,f){var g=b;b+=62;var h=g+4,i=g+5,j=g+9,l=g+13,m=g+14,n=g+18,p=g+19,r=g+20,s=g+21,t=g+22,w=g+23,x=g+24,y=g+28,z=g+29,A=g+30,C=g+31,B=g+43,K=g+47,E=g+51,G=g+52,M=g+53,L=g+54,F=g+58;k[h]=.5;N(i,a+12,a+8);Q(g,i,h);k[l]=.5;wn(m,a+12,a+8);Q(j,m,l);0==(fl(a+3)|0)&&(k[n]=0,k[p]=0,k[r]=0,pe(g,n,p,r),k[s]=0,k[t]=0,k[w]=0,pe(j,s,t,w));k[y]=v[c[c[a]+11]](a);k[z]=v[c[c[a]+11]](a);k[A]=v[c[c[a]+11]](a);H(x,y,z,A);xn(g,x);qc(C,d);vw(B,d,j);k[E]=J(0+C,g);k[G]=J(4+C,g);k[M]=J(8+C,g);H(K,E,G,M);N(L,B,K);c[e]=c[L];k[e]=k[L];c[e+1]=c[L+1];k[e+1]=k[L+1];c[e+2]=c[L+2];k[e+2]=k[L+2];c[e+3]=c[L+3];k[e+3]=k[L+3];wn(F,B,K);c[f]=c[F];k[f]=k[F];c[f+1]=c[F+1];k[f+1]=k[F+1];c[f+2]=c[F+2];k[f+2]=k[F+2];c[f+3]=c[F+3];k[f+3]=k[F+3];b=g}PVa.X=1;function QVa(a,d,e){var f=b;b+=33;var g=f+16,h=f+20,i=f+24,j=f+28,l=f+32;eQ(f);v[c[c[a]+2]](a,f,g,h);N(j,h,g);k[l]=.5;Q(i,j,l);a=2*k[i];g=2*k[i+1];i=2*k[i+2];k[e]=d/12*(g*g+i*i);k[e+1]=d/12*(a*a+i*i);k[e+2]=d/12*(a*a+g*g);b=f}QVa.X=1;function FVa(a){c[a]=VY+2;0!=(c[a+16]|0)&&(aZ(c[a+16]),yh(c[a+16]));RVa(a+3)}FVa.X=1;function SVa(){return D.He}SVa.X=1;function TVa(){return 24}TVa.X=1;function KVa(a,d){$1=a;return 0!=(d|0)?d<<1:1}KVa.X=1;function UVa(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}UVa.X=1;function VVa(a){return a+19}VVa.X=1;function WVa(a,d){k[a+18]=d}WVa.X=1;function XVa(a){return k[a+18]}XVa.X=1;function IVa(a){return c[a+2]}IVa.X=1;function pl(a,d,e,f){var g=b;b+=99;var h,i=g+1,j=g+5,l=g+6,m=g+7,n=g+8,p=g+12,r=g+24,s=g+25,t=g+26,w=g+27,x=g+28,y=g+29,z=g+30,A=g+31,C=g+32,B=g+33,K=g+37,E=g+41,G=g+53,M=g+65,L=g+66,F=g+67,I=g+68,R=g+69,O=g+70,Z=g+71,P=g+72,S=g+76,da=g+77,V=g+81,ba=g+82,$=g+86,Y=g+87,la=g+91,ka=g+95;h=fl(a+3);k[g]=0;k[j]=0;k[l]=0;k[m]=0;H(i,j,l,m);j=0;l=(j|0)<(h|0);a:do{if(l){for(m=a+3;;){if(Q(n,nY(m,j)+12,d+j),xn(i,n),k[g]+=k[d+j],j+=1,(j|0)>=(h|0)){break a}}}}while(0);KB(i,g);pQ(e,i);k[r]=0;k[s]=0;k[t]=0;k[w]=0;k[x]=0;k[y]=0;k[z]=0;k[A]=0;k[C]=0;Db(p,r,s,t,w,x,y,z,A,C);j=0;n=(j|0)<(h|0);a:do{if(n){r=a+3;for(s=a+3;;){if(t=c[nY(r,j)+16],v[c[c[t]+8]](t,k[d+j],B),t=nY(s,j),N(K,t+12,i),ue(E,t),LC(0+E,B),LC(4+E,B+1),LC(8+E,B+2),ww(G,t,E),Wb(E,G),xn(0+p,0+E),xn(4+p,4+E),xn(8+p,8+E),k[M]=Um(K),t=0+E,k[L]=0,k[F]=0,pe(t,M,L,F),t=4+E,k[I]=0,k[R]=0,pe(t,I,M,R),t=8+E,k[O]=0,k[Z]=0,pe(t,O,Z,M),t=0+E,k[S]=-k[K],Q(P,K,S),xn(t,P),t=4+E,k[V]=-k[K+1],Q(da,K,V),xn(t,da),t=8+E,k[$]=-k[K+2],Q(ba,K,$),xn(t,ba),t=0+p,Q(Y,0+E,d+j),xn(t,Y),t=4+p,Q(la,4+E,d+j),xn(t,la),t=8+p,Q(ka,8+E,d+j),xn(t,ka),j+=1,(j|0)>=(h|0)){break a}}}}while(0);md(p,e,9999999747378752e-21,20);pe(f,0+p,4+p+1,8+p+2);b=g}pl.X=1;function YVa(a,d){var e=b;b+=32;var f,g=e+16,h=e+20,i=e+24,j=e+28;f=0;var l=a+3,m=(f|0)<(fl(l)|0);a:do{if(m){for(var n=a+3,p=g,r=a+19,s=g,t=h,w=a+3;;){sQ(e,al(a,f));var x=c[Zk(n,f)+16],x=v[c[c[x]+7]](x);c[p]=c[x];k[p]=k[x];c[p+1]=c[x+1];k[p+1]=k[x+1];c[p+2]=c[x+2];k[p+2]=k[x+2];c[p+3]=c[x+3];k[p+3]=k[x+3];ig(i,g,d);eX(h,i,r);c[s]=c[t];k[s]=k[t];c[s+1]=c[t+1];k[s+1]=k[t+1];c[s+2]=c[t+2];k[s+2]=k[t+2];c[s+3]=c[t+3];k[s+3]=k[t+3];x=c[Zk(w,f)+16];v[c[c[x]+6]](x,g);ig(j,e+12,d);pQ(e,j);kl(a,f,e,0);f+=1;if((f|0)>=(fl(l)|0)){break a}}}}while(0);f=a+19;c[f]=c[d];k[f]=k[d];c[f+1]=c[d+1];k[f+1]=k[d+1];c[f+2]=c[d+2];k[f+2]=k[d+2];c[f+3]=c[d+3];k[f+3]=k[d+3];v[c[c[a]+16]](a);b=e}YVa.X=1;function Kk(a){var d=b;b+=16;var e,f,g=d+4,h=d+8,i=0!=(c[a+16]|0);a:do{if(!i){e=Ue(40,16);0==(e|0)?e=0:WY(e);c[a+16]=e;e=0;var j=a+3;if((e|0)<(fl(j)|0)){for(var l=a+3,m=a+16;;){f=Zk(l,e);var n=c[f+16];v[c[c[n]+2]](n,f,d,g);QY(h,d,g);c[f+19]=XY(c[m],h,e);e+=1;if((e|0)>=(fl(j)|0)){break a}}}}}while(0);b=d}Kk.X=1;function ZVa(a,d,e){var f,g,h,i,j;HX(a,d,e);k[d+8]=k[a+18];c[d+7]=fl(a+3);c[d+6]=0;if(0!=(c[d+7]|0)){f=v[c[c[e]+4]](e,76,c[d+7]);g=c[f+2];c[d+6]=v[c[c[e]+7]](e,g);h=0;var l=(h|0)<(c[d+7]|0);a:do{if(l){for(var m=a+3,n=a+3,p=a+3,r=a+3,s=a+3,t=a+3,w=a+3,x=a+3;;){k[g+18]=k[nY(m,h)+18];i=e;c[g+16]=v[c[c[i]+7]](i,c[nY(n,h)+16]);i=e;if(0==(v[c[c[i]+6]](i,c[nY(p,h)+16])|0)){i=e;j=c[nY(t,h)+16];i=v[c[c[i]+4]](i,v[c[c[j]+12]](j),1);j=c[nY(w,h)+16];j=v[c[c[j]+13]](j,c[i+2],e);var y=e;v[c[c[y]+5]](y,i,j,1346455635,c[nY(x,h)+16])}c[g+17]=c[nY(r,h)+17];mQ(nY(s,h),g);h+=1;g+=19;if((h|0)>=(c[d+7]|0)){break a}}}}while(0);v[c[c[e]+5]](e,f,D.Af,1497453121,c[f+2])}return D.qe}ZVa.X=1;function MVa(a,d){xi(a,d);c[a+16]=c[d+16];c[a+17]=c[d+17];k[a+18]=k[d+18];c[a+19]=c[d+19];return a}MVa.X=1;function YY(a,d){sQ(a,d);c[a+16]=c[d+16];c[a+17]=c[d+17];k[a+18]=k[d+18];c[a+19]=c[d+19]}YY.X=1;function JVa(a,d){var e;(IVa(a)|0)<(d|0)&&(e=$Va(a,d),aWa(a,0,fl(a),e),UVa(a,0,fl(a)),bWa(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}JVa.X=1;function $Va(a,d){return 0!=(d|0)?cWa(a,d,0):0}$Va.X=1;function aWa(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){if(YY(f+20*d,c[h]+20*d),d+=1,(d|0)>=(e|0)){break a}}}}while(0)}aWa.X=1;function bWa(a){0!=(c[a+3]|0)&&(c[a+4]&1&&dWa(a,c[a+3]),c[a+3]=0)}bWa.X=1;function dWa(a,d){$1=a;yh(d)}dWa.X=1;function eWa(){return D.Pd}eWa.X=1;function bZ(a){c[a]=fWa+2}bZ.X=1;function DVa(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}DVa.X=1;function wx(a,d){0==(d|0)?(c[a+16]=1,c[a+17]=0,c[a+18]=2):1==(d|0)?(c[a+16]=0,c[a+17]=1,c[a+18]=2):2==(d|0)&&(c[a+16]=0,c[a+17]=2,c[a+18]=1)}wx.X=1;function cWa(a,d,e){$1=a;$3=e;return Ue(80*d,16)}cWa.X=1;function RVa(a){UVa(a,0,fl(a));bWa(a);DVa(a)}RVa.X=1;function cZ(a){UY(a);c[a]=gWa+2;k[a+3]=0}cZ.X=1;function hWa(a){xe(a)}hWa.X=1;function iWa(){}iWa.X=1;function PA(a,d,e){var f=b;b+=4;yW(a);c[a]=jWa+2;k[a+14]=d;k[a+15]=e;c[a+1]=11;wx(a,1);k[a+13]=k[a+14]/ec(k[a+14]*k[a+14]+k[a+15]*k[a+15]);b=f}PA.X=1;function ox(a,d,e){PA(a,d,e);c[a]=kWa+2;wx(a,2)}ox.X=1;function Xx(a,d,e){PA(a,d,e);c[a]=lWa+2;wx(a,0)}Xx.X=1;function dZ(a,d,e){var f=b;b+=12;var g,h,i,j=f+4;i=f+8;g=.5*k[d+15];h=k[e+c[d+17]];var l=JB(e);h>l*k[d+13]?(k[f+c[d+16]]=0,k[f+c[d+17]]=g,k[f+c[d+18]]=0,c[a]=c[f],k[a]=k[f],c[a+1]=c[f+1],k[a+1]=k[f+1],c[a+2]=c[f+2],k[a+2]=k[f+2],c[a+3]=c[f+3],k[a+3]=k[f+3]):(h=ec(k[e+c[d+16]]*k[e+c[d+16]]+k[e+c[d+18]]*k[e+c[d+18]]),1.1920928955078125e-7=(f|0)){break a}}}}while(0);b=g}nWa.X=1;function oWa(a,d,e){var f=b;b+=12;var g=f+4,h=f+5,i=f+6,j=f+7,l=f+11;dZ(a,d,e);0!=v[c[c[d]+11]](d)&&(c[f]=c[e],k[f]=k[e],c[f+1]=c[e+1],k[f+1]=k[e+1],c[f+2]=c[e+2],k[f+2]=k[e+2],c[f+3]=c[e+3],k[f+3]=k[e+3],1.4210854715202004e-14>Um(f)&&(k[g]=-1,k[h]=-1,k[i]=-1,pe(f,g,h,i)),IB(f),k[l]=v[c[c[d]+11]](d),Q(j,f,l),xn(a,j));b=f}oWa.X=1;function pWa(a,d){var e,f,g;e=c[a+17];f=c[a+16];g=c[a+18];var h=a+15;k[h]*=k[d+e]/k[a+3+e];e=a+14;k[e]*=(k[d+f]/k[a+3+f]+k[d+g]/k[a+3+g])/2;k[a+13]=k[a+14]/ec(k[a+14]*k[a+14]+k[a+15]*k[a+15]);FX(a,d)}pWa.X=1;function qWa(){}qWa.X=1;function rWa(a){yh(a)}rWa.X=1;function sWa(a,d,e,f){v[c[c[a]+18]](a,d,e,f)}sWa.X=1;function tWa(a,d,e){var f=b;b+=45;var g=f+16,h=f+20,i=f+24,j=f+28,l=f+32,m=f+33,n=f+34,p=f+38,r=f+42,s=f+43,t=f+44;eQ(f);v[c[c[a]+2]](a,f,g,h);N(j,h,g);k[l]=.5;Q(i,j,l);h=v[c[c[a]+11]](a);g=2*(k[i]+h);a=2*(k[i+1]+h);i=2*(k[i+2]+h);g*=g;a*=a;i*=i;k[m]=.0833333283662796*d;k[r]=a+i;k[s]=g+i;k[t]=g+a;H(p,r,s,t);Q(n,p,m);c[e]=c[n];k[e]=k[n];c[e+1]=c[n+1];k[e+1]=k[n+1];c[e+2]=c[n+2];k[e+2]=k[n+2];c[e+3]=c[n+3];k[e+3]=k[n+3];b=f}tWa.X=1;function uWa(){}uWa.X=1;function vWa(a){yh(a)}vWa.X=1;function wWa(){}wWa.X=1;function xWa(a){yh(a)}xWa.X=1;function wY(a,d,e,f,g){bZ(a);c[a]=eZ+2;c[a+1]=f;c[a+2]=g;c[a+3]=d;c[a+4]=e;c[a+5]=0}wY.X=1;function sSa(a,d,e){bZ(a);c[a]=eZ+2;c[a+1]=0;c[a+2]=0;c[a+3]=d;c[a+4]=0;c[a+5]=e}sSa.X=1;function yWa(){}yWa.X=1;function zWa(){}zWa.X=1;function AWa(a,d,e,f){var g=b;b+=198;var h=g+19,i,j=g+53,l=g+69,m=g+85,n=g+101,p=g+117,r=g+133,s=g+149,t=g+165,w=g+169,x=g+173,y=g+177,z=g+181,A=g+182,C=g+186,B=g+190,K=g+194;0!=(c[a+4]|0)?(fZ(c[a+1]),l=c[a+3],p=c[a+4],t=Ie(c[a+3]),w=Ie(c[a+4]),x=c[a+3],x=v[c[c[x]+11]](x),y=c[a+4],y=v[c[c[y]+11]](y),BWa(g,l,p,t,w,x,y,c[a+1],c[a+2]),QQ(h),xi(h,d),xi(h+16,e),gZ(g,h,f,0,0)):(h=c[a+3],i=c[a+5],$hasCollision=0,a=i+12,i+=16,sQ(j,d),uw(n,e),WW(m,n,j),xi(l,m),uw(s,j),WW(r,s,e),xi(p,r),d=c[c[h]+15],WP(x,a),Bo(w,p,x),v[d](t,h,w),vw(y,l,t),k[z]=J(a,y)-k[i],Q(C,a,z),N(A,y,C),vw(B,e,A),Bo(K,e,a),v[c[c[f]+4]](f,K,B,k[z]));b=g}AWa.X=1;function CWa(){}CWa.X=1;function DWa(a,d,e,f,g,h){var i=b;b+=142;var j,l=i+4,m=i+8,n=i+12,p=i+16,r=i+20,s=i+24,t=i+28,w=i+29,x=i+30,y=i+31,z=i+35,A=i+36,C=i+37,B=i+38,K=i+42,E,G=i+53,M=i+57,L=i+58,F=i+59,I=i+60,R=i+76,O=i+92,Z=i+108,P=i+124,S=i+128,da=i+129,V=i+130,ba=i+131;xY(d,e,1,i,l);xY(f,g,1,m,n);e=c[a+3];e=v[c[c[e]+4]](e);0!=(c[a+4]|0)?(g=c[a+4],g=v[c[c[g]+4]](g)):g=0;e=JB(l)*e+JB(n)*g;N(p,m,i);N(r,m,i);if(0==JB(r)+e){j=0}else{r=0;k[t]=1;k[w]=0;k[x]=0;H(s,t,w,x);k[z]=0;k[A]=0;k[C]=0;pe(y,z,A,C);s=r;t=0;hZ(K);AWa(a,d,f,K);w=c[K+10]&1;x=K+5;c[B]=c[x];k[B]=k[x];c[B+1]=c[x+1];k[B+1]=k[x+1];c[B+2]=c[x+2];k[B+2]=k[x+2];c[B+3]=c[x+3];k[B+3]=k[x+3];x=w&1;a:do{if(x){if(w=k[K+9]+k[h+43],z=y,A=K+1,c[z]=c[A],k[z]=k[A],c[z+1]=c[A+1],k[z+1]=k[A+1],c[z+2]=c[A+2],k[z+2]=k[A+2],c[z+3]=c[A+3],k[z+3]=k[A+3],E=J(p,y),1.1920928955078125e-7>=E+e){j=0}else{for(var z=ba+10,A=ba+9,C=B,g=ba+5,$=y,Y=ba+1;;){if(.0010000000474974513>=w){k[h+41]=r;a=h+33;c[a]=c[y];k[a]=k[y];c[a+1]=c[y+1];k[a+1]=k[y+1];c[a+2]=c[y+2];k[a+2]=k[y+2];c[a+3]=c[y+3];k[a+3]=k[y+3];h+=37;c[h]=c[B];k[h]=k[B];c[h+1]=c[B+1];k[h+1]=k[B+1];c[h+2]=c[B+2];k[h+2]=k[B+2];c[h+3]=c[B+3];k[h+3]=k[B+3];j=1;break a}if(0!=(c[h+42]|0)){E=c[h+42];var la=c[c[E]+5];k[M]=1;k[L]=1;k[F]=1;H(G,M,L,F);v[la](E,B,.20000000298023224,G)}E=J(p,y);if(1.1920928955078125e-7>=E+e){j=0;break a}E=w/(E+e);r+=E;if(1r){j=0;break a}if(r<=s){j=0;break a}s=r;iZ(d,i,l,r,I);iZ(f,m,n,r,R);$P(Z,R,I);xi(O,Z);if(0!=(c[h+42]|0)){E=c[h+42];var la=c[c[E]+5],ka=I+12;k[S]=1;k[da]=0;k[V]=0;H(P,S,da,V);v[la](E,ka,.20000000298023224,P)}E=h;v[c[c[E]]](E,r);hZ(ba);AWa(a,I,R,ba);c[z]&1?(w=k[A]+k[h+43],c[C]=c[g],k[C]=k[g],c[C+1]=c[g+1],k[C+1]=k[g+1],c[C+2]=c[g+2],k[C+2]=k[g+2],c[C+3]=c[g+3],k[C+3]=k[g+3],c[$]=c[Y],k[$]=k[Y],c[$+1]=c[Y+1],k[$+1]=k[Y+1],c[$+2]=c[Y+2],k[$+2]=k[Y+2],c[$+3]=c[Y+3],k[$+3]=k[Y+3],t+=1,64<(t|0)?(j=h,v[c[c[j]+2]](j,-2,t),j=0,E=1):E=0):(j=h,v[c[c[j]+2]](j,-1,t),j=0,E=1);if(0!=(E|0)){break a}}}}else{j=0}}while(0)}b=i;return j}DWa.X=1;function iZ(a,d,e,f,g){var h=b;b+=36;var i=h+1,j=h+5,l=h+9,m=h+13,n=h+17,p=h+18,r=h+22,s=h+23,t=h+27,w=h+28,x=h+32;k[h]=f;f=a+12;Q(j,d,h);wn(i,f,j);pQ(g,i);i=d=JB(e);.7853981852531433i?(k[n]=.5*k[h]-.02083333395421505*k[h]*k[h]*k[h]*d*d,Q(m,e,n),c[l]=c[m],k[l]=k[m],c[l+1]=c[m+1],k[l+1]=k[m+1],c[l+2]=c[m+2],k[l+2]=k[m+2],c[l+3]=c[m+3],k[l+3]=k[m+3]):(k[r]=ud(.5*d*k[h])/d,Q(p,e,r),c[l]=c[p],k[l]=k[p],c[l+1]=c[p+1],k[l+1]=k[p+1],c[l+2]=c[p+2],k[l+2]=k[p+2],c[l+3]=c[p+3],k[l+3]=k[p+3]);e=l+1;m=l+2;k[t]=td(.5*d*k[h]);NG(s,l,e,m,t);dc(a,w);BW(x,s,w);AV(x);zb(g,x);b=h}iZ.X=1;function EWa(){}EWa.X=1;function FWa(a){xe(a)}FWa.X=1;function hZ(a){FW(a);c[a]=GWa+2;k[a+9]=0xde0b6b000000000;c[a+10]=0}hZ.X=1;function HWa(a){xe(a)}HWa.X=1;function IWa(a,d,e,f){if(fk[m+41]&&Zh(d,k[m+41]),oi(e)>k[m+41]&&Zh(e,k[m+41]),a>k[m+41]&&(a=k[m+41])),l=bi(e),hW(r,pi(d)),fY(s),gY(t),lZ(w,r,l,t),mZ(w,d+1,d+17,e+1,e+17,s)&&(oi(d)>k[s+41]&&Zh(d,k[s+41]),oi(e)>k[s+41]&&Zh(e,k[s+41]),a>k[s+41]&&(a=k[s+41])),j=a);b=h;return j}TWa.X=1;function UWa(){}UWa.X=1;function VWa(a,d){0!=(c[a+5]|0)&&c[a+4]&1&&CX(d,a+5)}VWa.X=1;function WWa(a,d,e,f){var g=c[d],g=v[c[c[g]+14]](g,36);0==(g|0)?a=0:(PWa(g,c[d+1],d,e,f,c[a+3],c[a+2],c[a+4],c[a+5]),a=g);return a}WWa.X=1;function XWa(a,d){nZ(a);c[a]=YWa+2;c[a+3]=d;c[a+1]=18}XWa.X=1;function ZWa(a){yh(a)}ZWa.X=1;function $Wa(){}$Wa.X=1;function aXa(a,d,e){d=c[d+3];v[c[c[d]+16]](a,d,e)}aXa.X=1;function bXa(a,d,e,f){a=c[a+3];v[c[c[a]+17]](a,d,e,f)}bXa.X=1;function cXa(a,d,e){d=c[d+3];v[c[c[d]+15]](a,d,e)}cXa.X=1;function dXa(a,d,e){a=c[a+3];v[c[c[a]+8]](a,d,e)}dXa.X=1;function eXa(a,d,e,f){a=c[a+3];v[c[c[a]+2]](a,d,e,f)}eXa.X=1;function fXa(a,d,e,f){a=c[a+3];v[c[c[a]+18]](a,d,e,f)}fXa.X=1;function gXa(a,d){var e=c[a+3];v[c[c[e]+6]](e,d)}gXa.X=1;function hXa(a){a=c[a+3];return v[c[c[a]+7]](a)}hXa.X=1;function iXa(a,d){var e=c[a+3];v[c[c[e]+10]](e,d)}iXa.X=1;function jXa(a){a=c[a+3];return v[c[c[a]+11]](a)}jXa.X=1;function kXa(a){a=c[a+3];return v[c[c[a]+19]](a)}kXa.X=1;function lXa(a,d,e){a=c[a+3];v[c[c[a]+20]](a,d,e)}lXa.X=1;function mXa(){return D.Zd}mXa.X=1;function nXa(){}nXa.X=1;function oXa(a){xe(a)}oXa.X=1;function oZ(a,d,e,f,g){g&=1;aX(a,d,e,f);c[a]=pZ+2;c[a+2]=g&1;pXa(a+3,c[d],e,f,g&1)}oZ.X=1;function qXa(a){rXa(a);xe(a)}qXa.X=1;function rXa(a){c[a]=pZ+2;qZ(a+3)}rXa.X=1;function sXa(a,d){0!=(c[a+19]|0)&&CX(d,a+19)}sXa.X=1;function pXa(a,d,e,f,g){g&=1;EY(a);c[a]=rZ+2;c[a+12]=d;c[a+13]=0;c[a+1]=g&1?f:e;c[a+2]=g&1?e:f;d=c[a+12];c[a+16]=v[c[c[d]+3]](d,c[a+1],c[a+2]);tXa(a)}pXa.X=1;function tXa(a){var d=c[a+12];v[c[c[d]+5]](d,c[a+16])}tXa.X=1;function uXa(a){qZ(a);xe(a)}uXa.X=1;function qZ(a){c[a]=rZ+2;tXa(a);var d=c[a+12];v[c[c[d]+4]](d,c[a+16])}qZ.X=1;function vXa(a){EX(a)}vXa.X=1;function wXa(a,d,e,f){var g=b;b+=53;var h=g+16,i=g+32,j=g+48,l=g+49;c[a+13]=e;k[a+14]=d;c[a+11]=f;uw(i,c[a+2]+1);WW(h,i,c[a+1]+1);xi(g,h);e=bi(c[a+1]);v[c[c[e]+2]](e,g,a+3,a+7);k[j]=d;H(l,j,j,j);xn(a+7,l);JC(a+3,l);b=g}wXa.X=1;function xXa(a,d,e,f,g){var h,i;h=c[a+2]&1?e:d;d=c[a+2]&1?d:e;Uf(bi(d))&&(e=bi(d),xf(bi(h))&&(i=v[c[c[e]+11]](e),fI(g,c[a+19]),wXa(a+3,i,f,g),ak(c[a+19],h,d),v[c[c[e]+15]](e,a+3,a+3+3,a+3+7),DI(g)))}xXa.X=1;function yXa(a,d,e,f,g){var h=b;b+=120;var i,j=h+4,l=h+20,m=h+36,n=h+52,p=h+56,r=h+60,s=h+61,t=h+65,w=h+69;$5=f;$6=g;f=c[a+2]&1?e:d;a=c[a+2]&1?d:e;N(h,f+17+12,f+1+12);d=Um(h)=(f|0)){break a}}}}while(0);b=g}NXa.X=1;function OXa(a,d,e){var f=b;b+=1;tZ(a,e);0!=(d|0)&&(k[f]=-1,LC(e,f));b=f}OXa.X=1;function PXa(a,d,e,f){v[c[c[a]+25]](a,d,e);v[c[c[a]+25]](a,(d+1|0)%3,f)}PXa.X=1;function QXa(a,d,e){a=(d<<2)+a+14;c[e]=c[a];k[e]=k[a];c[e+1]=c[a+1];k[e+1]=k[a+1];c[e+2]=c[a+2];k[e+2]=k[a+2];c[e+3]=c[a+3];k[e+3]=k[a+3]}QXa.X=1;function RXa(a,d,e,f){v[c[c[a]+29]](a,f,d,e)}RXa.X=1;function SXa(a,d,e){var f=b;b+=20;var g,h,i,j,l=f+4,m=f+8,n=f+12,p=f+16,r;tZ(a,f);i=J(d,f);i-=J(a+14,f);var s=i>=-e;a:do{if(s){if(i<=e){j=0;var t=a;for(r=0;;){if(3<=(r|0)){h=1;g=11;break a}v[c[c[t]+24]](a,j,l,m);N(n,m,l);qn(p,n,f);IB(p);r=J(d,p);r-=J(l,p);if(r<-e){h=0;g=11;break a}j=r=j+1}}else{g=10}}else{g=10}}while(0);10==g&&(h=0);b=f;return h}SXa.X=1;function TXa(a,d,e,f){$2=d;tZ(a,e);a+=14;c[f]=c[a];k[f]=k[a];c[f+1]=c[a+1];k[f+1]=k[a+1];c[f+2]=c[a+2];k[f+2]=k[a+2];c[f+3]=c[a+3];k[f+3]=k[a+3]}TXa.X=1;function tZ(a,d){var e=b;b+=12;var f=e+4,g=e+8;N(f,a+18,a+14);N(g,a+22,a+14);qn(e,f,g);c[d]=c[e];k[d]=k[e];c[d+1]=c[e+1];k[d+1]=k[e+1];c[d+2]=c[e+2];k[d+2]=k[e+2];c[d+3]=c[e+3];k[d+3]=k[e+3];IB(d);b=e}tZ.X=1;function UXa(a,d,e){gM(a);c[a]=VXa+2;c[a+4]=0;c[a+5]=3;c[a+3]=d;c[a+2]=e}UXa.X=1;function WXa(a){xe(a)}WXa.X=1;function XXa(){}XXa.X=1;function YXa(a,d,e,f,g,h,i,j,l){aX(a,e,f,g);c[a]=uZ+2;c[a+2]=h;c[a+3]=i;c[a+4]=0;c[a+5]=d;c[a+6]=0;c[a+7]=j;c[a+8]=l}YXa.X=1;function ZXa(a){$Xa(a);xe(a)}ZXa.X=1;function $Xa(a){c[a]=uZ+2;if(c[a+4]&1&&0!=(c[a+5]|0)){var d=c[a+1];v[c[c[d]+4]](d,c[a+5])}}$Xa.X=1;function aYa(a,d,e,f){var g=b;b+=194;var h=g+16,i=g+60,j=g+73,l=g+99,m=g+190;$3=e;$4=f;eQ(g);fY(h);k[h+41]=k[a+50];hW(i,k[a+49]);sZ(j,d,d+4,d+8);gY(l);hY(m,i,j,l);iY(m,a+1,a+17,g,g,h)&&k[a+50]>k[h+41]&&(k[a+50]=k[h+41]);EX(j);b=g}aYa.X=1;function bYa(a){EX(a);yh(a)}bYa.X=1;function cYa(a){return k[a+14]}cYa.X=1;function dYa(a,d,e,f,g,h,i,j,l,m,n){var p=b;b+=56;var r=p+1,s=p+5,t=p+9,w=p+13,x=p+17,y=p+21,z=p+25,A=p+29,C=p+35,B=p+39,K=p+43,E=p+44,G=p+48,M=p+52;k[p]=h;Jb(r,l,i);h=l+12;c[s]=c[h];k[s]=k[h];c[s+1]=c[h+1];k[s+1]=k[h+1];c[s+2]=c[h+2];k[s+2]=k[h+2];c[s+3]=c[h+3];k[s+3]=k[h+3];Jb(t,m,j);j=m+12;c[w]=c[j];k[w]=k[j];c[w+1]=c[j+1];k[w+1]=k[j+1];c[w+2]=c[j+2];k[w+2]=k[j+2];c[w+3]=c[j+3];k[w+3]=k[j+3];N(x,w,s);eYa(y,z,A,p+33,p+34,x,r,e,t,g);e=JB(y)-f-k[p];e>n||(n=Um(y),1.4210854715202004e-14>=n?rw(r,a,C):(k[K]=-(1/ec(n)),Q(B,y,K),c[a]=c[B],k[a]=k[B],c[a+1]=c[B+1],k[a+1]=k[B+1],c[a+2]=c[B+2],k[a+2]=k[B+2],c[a+3]=c[B+3],k[a+3]=k[B+3]),wn(G,m+12,A),Q(M,a,p),wn(E,G,M),c[d]=c[E],k[d]=k[E],c[d+1]=c[E+1],k[d+1]=k[E+1],c[d+2]=c[E+2],k[d+2]=k[E+2],c[d+3]=c[E+3],k[d+3]=k[E+3]);b=p;return e}dYa.X=1;function fYa(a,d,e,f,g,h,i){gYa(a,d,e,f,g,h&1,i)}fYa.X=1;function hYa(a,d,e,f,g){var h=b;b+=304;var i,j,l;i=h+4;var m=h+8,n=h+12,p=h+16,r=h+50,s=h+69,t,w,x=h+70,y,z=h+74,A=h+78,C=h+82,B=h+87,K=h+91,E=h+95,G=h+99,M=h+103,L=h+107,F=h+111,I=h+115,R=h+116,O=h+132,Z=h+136,P=h+137,S=h+141,da=h+153,V=h+165,ba=h+169,$=h+173,Y=h+177,la=h+189,ka=h+201,ja=h+205,ea=h+209,ca=h+213;0==(c[a+5]|0)&&(j=c[a+1],c[a+5]=v[c[c[j]+3]](j,d,e),c[a+4]=1);fI(g,c[a+5]);j=bi(d);l=bi(e);if(10==(Ie(j)|0)){if(10!=(Ie(l)|0)){i=9}else{t=v[c[c[j]+7]](j);c[m]=c[t];k[m]=k[t];c[m+1]=c[t+1];k[m+1]=k[t+1];c[m+2]=c[t+2];k[m+2]=k[t+2];c[m+3]=c[t+3];k[m+3]=k[t+3];m=v[c[c[l]+7]](l);c[n]=c[m];k[n]=k[m];c[n+1]=c[m+1];k[n+1]=k[m+1];c[n+2]=c[m+2];k[n+2]=k[m+2];c[n+3]=c[m+3];k[n+3]=k[m+3];n=rk(c[a+5]);m=dYa(h,i,gf(j),cf(j),gf(l),cf(l),Ke(j),Ke(l),d+1,e+1,n);if(m=(c[t]|0)){break a}1.1920928955078125e-7k[m+41]&&Zh(d,k[m+41]),oi(e)>k[m+41]&&Zh(e,k[m+41]),a>k[m+41]&&(a=k[m+41])),l=bi(e),hW(r,pi(d)),fY(s),gY(t),lZ(w,r,l,t),mZ(w,d+1,d+17,e+1,e+17,s)&&(oi(d)>k[s+41]&&Zh(d,k[s+41]),oi(e)>k[s+41]&&Zh(e,k[s+41]),a>k[s+41]&&(a=k[s+41])),j=a));b=h;return j}qYa.X=1;function sYa(a,d){0!=(c[a+5]|0)&&c[a+4]&1&&CX(d,a+5)}sYa.X=1;function tYa(a,d,e,f){var g=c[d],g=v[c[c[g]+14]](g,36);0==(g|0)?a=0:(YXa(g,c[d+1],d,e,f,c[a+3],c[a+2],c[a+4],c[a+5]),a=g);return a}tYa.X=1;function gYa(a,d,e,f,g,h,i){h&=1;yI(a);c[a]=uYa+2;c[a+40]=d;sQ(a+41,e);sQ(a+57,f);sQ(a+73,g);c[a+89]=h&1;c[a+90]=i}gYa.X=1;function vYa(a){xe(a)}vYa.X=1;function wYa(a,d,e,f){var g=b;b+=118;var h=g+1,i=g+5,j=g+9,l=g+14,m=g+18,n=g+22,p=g+26,r=g+42,s=g+58,t=g+62,w=g+66,x=g+70,y=g+74,z=g+78,A=g+82,C=g+98,B=g+114;k[g]=f;c[a+89]&1?(Q(m,d,g),wn(l,e,m),uw(p,a+41),WW(r,a+73,p),vw(n,r,l),c[h]=c[n],k[h]=k[n],c[h+1]=c[n+1],k[h+1]=k[n+1],c[h+2]=c[n+2],k[h+2]=k[n+2],c[h+3]=c[n+3],k[h+3]=k[n+3],N(s,h,e),k[j]=J(s,d),Q(w,d,j),wn(t,h,w),c[i]=c[t],k[i]=k[t],c[i+1]=c[t+1],k[i+1]=k[t+1],c[i+2]=c[t+2],k[i+2]=k[t+2],c[i+3]=c[t+3],k[i+3]=k[t+3]):(Q(y,d,g),wn(x,e,y),c[h]=c[x],k[h]=k[x],c[h+1]=c[x+1],k[h+1]=k[x+1],c[h+2]=c[x+2],k[h+2]=k[x+2],c[h+3]=c[x+3],k[h+3]=k[x+3],uw(A,a+57),WW(C,a+73,A),vw(z,C,e),c[i]=c[z],k[i]=k[z],c[i+1]=c[z+1],k[i+1]=k[z+1],c[i+2]=c[z+2],k[i+2]=k[z+2],c[i+3]=c[z+3],k[i+3]=k[z+3],N(B,h,i),k[j]=J(B,d));a=c[a+40];v[c[c[a]+4]](a,d,i,k[j]);b=g}wYa.X=1;function xYa(){}xYa.X=1;function iYa(a){FW(a);c[a]=yYa+2}iYa.X=1;function zYa(a){xe(a)}zYa.X=1;function eYa(a,d,e,f,g,h,i,j,l,m){var n=b;b+=16;var p,r,s,t,w=n+4,x=n+8,y=n+12;p=J(i,l);r=J(i,h);s=J(l,h);t=1-p*p;0==t?k[f]=0:(k[f]=(r-s*p)/t,k[f]<-j?k[f]=-j:k[f]>j&&(k[f]=j));k[g]=k[f]*p-s;k[g]<-m?(k[g]=-m,k[f]=k[g]*p+r,k[f]<-j?k[f]=-j:k[f]>j&&(k[f]=j)):k[g]>m&&(k[g]=m,k[f]=k[g]*p+r,k[f]<-j?k[f]=-j:k[f]>j&&(k[f]=j));Q(n,i,f);c[d]=c[n];k[d]=k[n];c[d+1]=c[n+1];k[d+1]=k[n+1];c[d+2]=c[n+2];k[d+2]=k[n+2];c[d+3]=c[n+3];k[d+3]=k[n+3];Q(w,l,g);c[e]=c[w];k[e]=k[w];c[e+1]=c[w+1];k[e+1]=k[w+1];c[e+2]=c[w+2];k[e+2]=k[w+2];c[e+3]=c[w+3];k[e+3]=k[w+3];N(y,h,d);wn(x,y,e);c[a]=c[x];k[a]=k[x];c[a+1]=c[x+1];k[a+1]=k[x+1];c[a+2]=c[x+2];k[a+2]=k[x+2];c[a+3]=c[x+3];k[a+3]=k[x+3];b=n}eYa.X=1;function Ch(a,d,e,f){var g=b;b+=8;var h,i,j=g+4;vZ(a);c[a]=wZ+2;KW(a+23);c[a+1]=4;xZ(a+23,e,g);h=0;var l=(h|0)<(e|0);a:do{if(l){for(var m=a+23,n=j;;){i=d;var p=xg(m,h);H(j,i,i+1,i+2);i=p;c[i]=c[n];k[i]=k[n];c[i+1]=c[n+1];k[i+1]=k[n+1];c[i+2]=c[n+2];k[i+2]=k[n+2];c[i+3]=c[n+3];k[i+3]=k[n+3];d+=f;h+=1;if((h|0)>=(e|0)){break a}}}}while(0);bh(a);b=g}Ch.X=1;function AYa(){return 0}AYa.X=1;function BYa(){}BYa.X=1;function CYa(){return 0}CYa.X=1;function DYa(){return D.re}DYa.X=1;function EYa(){return 68}EYa.X=1;function xZ(a,d,e){var f,g;f=th(a);var h=(d|0)<(f|0);a:do{if(h){if(g=d,(g|0)<(f|0)){for(;;){if(g+=1,(g|0)>=(f|0)){break a}}}}else{if((d|0)>(th(a)|0)&&RW(a,d),g=f,(g|0)<(d|0)){for(var i=a+3;;){var j=(g<<2)+c[i];if(0!=(j|0)){var l=e;c[j]=c[l];k[j]=k[l];c[j+1]=c[l+1];k[j+1]=k[l+1];c[j+2]=c[l+2];k[j+2]=k[l+2];c[j+3]=c[l+3];k[j+3]=k[l+3]}g+=1;if((g|0)>=(d|0)){break a}}}}}while(0);c[a+1]=d}xZ.X=1;function FYa(a,d){var e=a+3;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3];bh(a)}FYa.X=1;function Vg(a,d){PW(a+23,d);bh(a)}Vg.X=1;function GYa(a,d,e){var f=b;b+=7;var g=f+1,h=f+2,i,j=f+3;k[f]=0;k[g]=0;k[h]=0;H(a,f,g,h);h=-0xde0b6b000000000;i=0;var l=d+23,m=(i|0)<(th(l)|0);a:do{if(m){for(var n=d+23,p=d+3,r=a,s=j;;){if(ig(j,jg(n,i),p),g=J(e,j),g>h&&(h=g,c[r]=c[s],k[r]=k[s],c[r+1]=c[s+1],k[r+1]=k[s+1],c[r+2]=c[s+2],k[r+2]=k[s+2],c[r+3]=c[s+3],k[r+3]=k[s+3]),i+=1,(i|0)>=(th(l)|0)){break a}}}}while(0);b=f}GYa.X=1;function HYa(a,d,e,f){var g=b;b+=4;var h,i,j;h=0;i=(h|0)<(f|0);a:do{if(i){for(;;){if(k[(h<<2)+e+3]=-0xde0b6b000000000,h+=1,(h|0)>=(f|0)){break a}}}}while(0);i=0;var l=a+23,m=(i|0)<(th(l)|0);a:do{if(m){for(var n=g;;){gg(g,a,i);j=0;var p=(j|0)<(f|0);b:do{if(p){for(;;){h=J((j<<2)+d,g);if(h>k[(j<<2)+e+3]){var r=(j<<2)+e;c[r]=c[n];k[r]=k[n];c[r+1]=c[n+1];k[r+1]=k[n+1];c[r+2]=c[n+2];k[r+2]=k[n+2];c[r+3]=c[n+3];k[r+3]=k[n+3];k[(j<<2)+e+3]=h}j+=1;if((j|0)>=(f|0)){break b}}}}while(0);i+=1;if((i|0)>=(th(l)|0)){break a}}}}while(0);b=g}HYa.X=1;function IYa(a,d,e){var f=b;b+=12;var g=f+4,h=f+5,i=f+6,j=f+7,l=f+11;v[c[c[d]+16]](a,d,e);0!=v[c[c[d]+11]](d)&&(c[f]=c[e],k[f]=k[e],c[f+1]=c[e+1],k[f+1]=k[e+1],c[f+2]=c[e+2],k[f+2]=k[e+2],c[f+3]=c[e+3],k[f+3]=k[e+3],1.4210854715202004e-14>Um(f)&&(k[g]=-1,k[h]=-1,k[i]=-1,pe(f,g,h,i)),IB(f),k[l]=v[c[c[d]+11]](d),Q(j,f,l),xn(a,j));b=f}IYa.X=1;function JYa(a){return th(a+23)}JYa.X=1;function KYa(a){return th(a+23)}KYa.X=1;function LYa(a,d,e,f){var g=b;b+=8;var h,i=g+4;h=(d|0)%(th(a+23)|0);d=(d+1|0)%(th(a+23)|0);gg(g,a,h);c[e]=c[g];k[e]=k[g];c[e+1]=c[g+1];k[e+1]=k[g+1];c[e+2]=c[g+2];k[e+2]=k[g+2];c[e+3]=c[g+3];k[e+3]=k[g+3];gg(i,a,d);c[f]=c[i];k[f]=k[i];c[f+1]=c[i+1];k[f+1]=k[i+1];c[f+2]=c[i+2];k[f+2]=k[i+2];c[f+3]=c[i+3];k[f+3]=k[i+3];b=g}LYa.X=1;function MYa(a,d,e){var f=b;b+=4;gg(f,a,d);c[e]=c[f];k[e]=k[f];c[e+1]=c[f+1];k[e+1]=k[f+1];c[e+2]=c[f+2];k[e+2]=k[f+2];c[e+3]=c[f+3];k[e+3]=k[f+3];b=f}MYa.X=1;function NYa(a,d,e){var f,g,h;GX(a,d,e);f=th(a+23);c[d+18]=f;g=0!=(f|0)?v[c[c[e]+7]](e,jg(a+23,0)):0;c[d+16]=g;c[d+17]=0;if(0!=(f|0)){d=v[c[c[e]+4]](e,16,f);g=c[d+2];h=0;var i=(h|0)<(f|0);a:do{if(i){for(var j=a+23;;){if(Mb(jg(j,h),g),h+=1,g+=4,(h|0)>=(f|0)){break a}}}}while(0);v[c[c[e]+5]](e,d,D.q,1497453121,jg(a+23,0))}return D.Rd}NYa.X=1;function OYa(a){PYa(a)}OYa.X=1;function yW(a){var d=b;b+=3;var e=d+1,f=d+2;nZ(a);c[a]=QYa+2;k[d]=1;k[e]=1;k[f]=1;H(a+3,d,e,f);k[a+11]=.03999999910593033;b=d}yW.X=1;function FX(a,d){var e=b;b+=4;var f=a+3;GB(e,d);c[f]=c[e];k[f]=k[e];c[f+1]=c[e+1];k[f+1]=k[e+1];c[f+2]=c[e+2];k[f+2]=k[e+2];c[f+3]=c[e+3];k[f+3]=k[e+3];b=e}FX.X=1;function RYa(a,d,e,f){var g=b;b+=31;var h,i,j=g+4,l=g+5,m=g+6,n=g+7,p=g+11,r=g+15,s=g+19,t=g+23,w=g+27;h=v[c[c[a]+11]](a);for(i=0;;){k[j]=0;k[l]=0;k[m]=0;H(g,j,l,m);k[g+i]=1;var x=c[c[a]+15];rn(p,g,d);v[x](n,a,p);vw(r,d,n);k[f+i]=k[r+i]+h;k[g+i]=-1;x=c[c[a]+15];rn(w,g,d);v[x](t,a,w);vw(s,d,t);c[r]=c[s];k[r]=k[s];c[r+1]=c[s+1];k[r+1]=k[s+1];c[r+2]=c[s+2];k[r+2]=k[s+2];c[r+3]=c[s+3];k[r+3]=k[s+3];k[e+i]=k[r+i]-h;i=x=i+1;if(3<=(x|0)){break}}b=g}RYa.X=1;function SYa(a,d,e){var f=b;b+=12;var g=f+4,h=f+5,i=f+6,j=f+7,l=f+11;v[c[c[d]+16]](a,d,e);0!=v[c[c[d]+11]](d)&&(c[f]=c[e],k[f]=k[e],c[f+1]=c[e+1],k[f+1]=k[e+1],c[f+2]=c[e+2],k[f+2]=k[e+2],c[f+3]=c[e+3],k[f+3]=k[e+3],1.4210854715202004e-14>Um(f)&&(k[g]=-1,k[h]=-1,k[i]=-1,pe(f,g,h,i)),IB(f),k[l]=v[c[c[d]+11]](d),Q(j,f,l),xn(a,j));b=f}SYa.X=1;function TYa(a){var d=b;b+=6;var e=d+1,f=d+2,g=d+3,h=d+4,i=d+5;yW(a);c[a]=UYa+2;k[d]=1;k[e]=1;k[f]=1;H(a+13,d,e,f);k[g]=-1;k[h]=-1;k[i]=-1;H(a+17,g,h,i);c[a+21]=0;b=d}TYa.X=1;function VYa(a,d,e,f){WYa(a,d,e,f,v[c[c[a]+11]](a))}VYa.X=1;function WYa(a,d,e,f,g){fh(a+13,a+17,g,d,e,f)}WYa.X=1;function XYa(a){PYa(a);yh(a)}XYa.X=1;function PYa(a){c[a]=wZ+2;UW(a+23);EX(a)}PYa.X=1;function YYa(){return 1}YYa.X=1;function ZYa(a,d){FX(a,d);cJ(a)}ZYa.X=1;function cJ(a){var d=b;b+=60;var e=d+1,f=d+2,g=d+3,h=d+4,i=d+5,j=d+6,l=d+7,m=d+8,n=d+9,p=d+10,r=d+11,s=d+12,t=d+13,w=d+14,x=d+15,y=d+16,z=d+17,A=d+18,C=d+42,B=d+43,K=d+44,E=d+45,G=d+46,M=d+47,L=d+48,F=d+49,I=d+50,R=d+51,O=d+52,Z=d+53,P=d+54,S=d+55,da=d+56,V=d+57,ba=d+58,$=d+59;c[a+21]=1;0==c[$Ya]<<24>>24&&0!=(Hb($Ya)|0)&&(k[d]=1,k[e]=0,k[f]=0,H(yZ,d,e,f),k[g]=0,k[h]=1,k[i]=0,H(yZ+4,g,h,i),k[j]=0,k[l]=0,k[m]=1,H(yZ+8,j,l,m),k[n]=-1,k[p]=0,k[r]=0,H(yZ+12,n,p,r),k[s]=0,k[t]=-1,k[w]=0,H(yZ+16,s,t,w),k[x]=0,k[y]=0,k[z]=-1,H(yZ+20,x,y,z));k[C]=0;k[B]=0;k[K]=0;H(A,C,B,K);e=A+4;k[E]=0;k[G]=0;k[M]=0;H(e,E,G,M);E=e+4;k[L]=0;k[F]=0;k[I]=0;H(E,L,F,I);L=E+4;k[R]=0;k[O]=0;k[Z]=0;H(L,R,O,Z);R=L+4;k[P]=0;k[S]=0;k[da]=0;H(R,P,S,da);k[V]=0;k[ba]=0;k[$]=0;H(R+4,V,ba,$);v[c[c[a]+17]](a,yZ,A,6);P=0;S=a+11;da=a+17;V=a+11;for(a+=13;!(k[da+P]=k[(P<<2)+A+P]+k[S],k[a+P]=k[(P+3<<2)+A+P]-k[V],P=ba=P+1,3<=(ba|0));){}b=d}cJ.X=1;function aZa(){}aZa.X=1;function bZa(a){yh(a)}bZa.X=1;function cZa(){}cZa.X=1;function dZa(a){yh(a)}dZa.X=1;function zZ(a,d,e,f,g,h,i,j){h&=1;ZW(a,e);c[a]=AZ+2;c[a+2]=0;c[a+3]=d;c[a+4]=h&1;c[a+5]=i;c[a+6]=j;d=c[a+4]&1?g:f;f=c[a+4]&1?f:g;0==(c[a+3]|0)&&(g=c[a+1],v[c[c[g]+6]](g,d,f)&&(g=c[a+1],c[a+3]=v[c[c[g]+3]](g,d,f),c[a+2]=1))}zZ.X=1;function eZa(a){fZa(a);xe(a)}eZa.X=1;function fZa(a){c[a]=AZ+2;if(c[a+2]&1&&0!=(c[a+3]|0)){var d=c[a+1];v[c[c[d]+4]](d,c[a+3])}}fZa.X=1;function gZa(a,d,e,f,g,h){var i=b;b+=161;var j,l,m;m=i+16;var n=i+32,p=i+48,r=i+64,s=i+76,t=i+92,w=i+108,x=i+124,y=i+128,z=i+132,A=i+136,C=i+140,B=i+141,K=i+145,E=i+149,G=i+153,M=i+157;$5=g;g=c[a+4]&1?f:e;e=c[a+4]&1?e:f;j=bi(g);l=bi(e);f=l+12;l+=16;sQ(i,g+1);uw(p,e+1);WW(n,p,i);xi(m,n);zb(r,d);ld(i,r);uw(w,i);WW(t,w,e+1);xi(s,t);d=c[c[j]+15];WP(z,f);Bo(y,s,z);v[d](x,j,y);vw(A,m,x);k[C]=J(f,A)-k[l];Q(K,f,C);N(B,A,K);vw(E,e+1,B);m=k[C]=(c[G]|0)){break a}}}}}while(0);c[a+2]&1&&0!=(Xj(c[a+3])|0)&&DI(g)}}while(0);b=h}hZa.X=1;function iZa(a,d){0!=(c[a+3]|0)&&c[a+2]&1&&CX(d,a+3)}iZa.X=1;function jZa(a,d){var e=a+3;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3];bh(a)}jZa.X=1;function kZa(a,d,e){var f=b;b+=15;var g=f+1,h=f+2,i,j=f+3;i=f+7;var l=f+8,m=f+9,n=f+10,p=f+11;k[f]=0;k[g]=0;k[h]=0;H(a,f,g,h);g=-0xde0b6b000000000;c[j]=c[e];k[j]=k[e];c[j+1]=c[e+1];k[j+1]=k[e+1];c[j+2]=c[e+2];k[j+2]=k[e+2];c[j+3]=c[e+3];k[j+3]=k[e+3];e=Um(j);9999999747378752e-20>e?(k[i]=1,k[l]=0,k[m]=0,pe(j,i,l,m)):(k[n]=1/ec(e),LC(j,n));l=0;m=d+24;n=(l|0)<(c[m]|0);a:do{if(n){e=a;for(h=p;;){if(lZa(p,d,l),i=J(j,p),i>g&&(g=i,c[e]=c[h],k[e]=k[h],c[e+1]=c[h+1],k[e+1]=k[h+1],c[e+2]=c[h+2],k[e+2]=k[h+2],c[e+3]=c[h+3],k[e+3]=k[h+3]),l+=1,(l|0)>=(c[m]|0)){break a}}}}while(0);b=f}kZa.X=1;function lZa(a,d,e){ig(a,(e<<2)+c[d+23],d+3)}lZa.X=1;function mZa(){return 0}mZa.X=1;function nZa(){}nZa.X=1;function oZa(){return 0}oZa.X=1;function pZa(){}pZa.X=1;function qZa(){return 0}qZa.X=1;function rZa(){return D.Td}rZa.X=1;function sZa(a){return c[a+24]}sZa.X=1;function BZ(a,d){return c[a+3]+14*d}BZ.X=1;function tZa(a,d,e,f){var g=b;b+=4;var h,i,j;h=0;i=(h|0)<(f|0);a:do{if(i){for(;;){if(k[(h<<2)+e+3]=-0xde0b6b000000000,h+=1,(h|0)>=(f|0)){break a}}}}while(0);i=0;var l=a+24,m=(i|0)<(c[l]|0);a:do{if(m){for(var n=g;;){lZa(g,a,i);j=0;var p=(j|0)<(f|0);b:do{if(p){for(;;){h=J((j<<2)+d,g);if(h>k[(j<<2)+e+3]){var r=(j<<2)+e;c[r]=c[n];k[r]=k[n];c[r+1]=c[n+1];k[r+1]=k[n+1];c[r+2]=c[n+2];k[r+2]=k[n+2];c[r+3]=c[n+3];k[r+3]=k[n+3];k[(j<<2)+e+3]=h}j+=1;if((j|0)>=(f|0)){break b}}}}while(0);i+=1;if((i|0)>=(c[l]|0)){break a}}}}while(0);b=g}tZa.X=1;function uZa(a,d,e){var f=b;b+=12;var g=f+4,h=f+5,i=f+6,j=f+7,l=f+11;v[c[c[d]+16]](a,d,e);0!=v[c[c[d]+11]](d)&&(c[f]=c[e],k[f]=k[e],c[f+1]=c[e+1],k[f+1]=k[e+1],c[f+2]=c[e+2],k[f+2]=k[e+2],c[f+3]=c[e+3],k[f+3]=k[e+3],1.4210854715202004e-14>Um(f)&&(k[g]=-1,k[h]=-1,k[i]=-1,pe(f,g,h,i)),IB(f),k[l]=v[c[c[d]+11]](d),Q(j,f,l),xn(a,j));b=f}uZa.X=1;function vZa(a,d,e){var f=b;b+=4;ig(f,(d<<2)+c[a+23],a+3);c[e]=c[f];k[e]=k[f];c[e+1]=c[f+1];k[e+1]=k[f+1];c[e+2]=c[f+2];k[e+2]=k[f+2];c[e+3]=c[f+3];k[e+3]=k[f+3];b=f}vZa.X=1;function wZa(a){EX(a)}wZa.X=1;function xZa(a){c[a]=CZ+2;KW(a+1);yZa(a+6);KW(a+11)}xZa.X=1;function zZa(a){AZa(a);xe(a)}zZa.X=1;function BZa(a,d){var e;e=CZa(a,d);return-1==(e|0)?0:DZa(a+10,e)}BZa.X=1;function DZ(a){var d;1e-6>16),xg(P,c[j]<<16>>16));IB(m);p=n=0;a:for(;(p|0)<(th(S)|0);){N(r,xg(da,p),m);var $=DZ(r);do{if(!$&&(wn(s,xg(V,p),m),!DZ(s))){p+=1;continue a}}while(0);n=1;break}n&1||PW(ba,m);0!=(l|0)?c[l+1]=f&65535:(JZa(t),c[t]=f&65535,KZa(d,j,t));i+=1}f+=1}j=0;r=a+6;s=a+6;t=a+6;f=a+6;g=a+6;for(h=a+6;(j|0)<(yY(r)|0);){m=rW(BZ(s,j));i=BZ(t,j)+5;c[w]=0;PV(i,m,w);i=0;n=(i|0)<(m|0);a:do{if(n){for(;;){if(IZa(x,c[QV(BZ(f,j),i)]&65535,c[QV(BZ(g,j),(i+1|0)%(m|0))]&65535),p=l=BZa(d,x),c[QV(BZ(h,j)+5,i)]=((c[l]<<16>>16|0)==(j|0)?c[p+1]:c[p])<<16>>16,i+=1,(i|0)>=(m|0)){break a}}}}while(0);j+=1}w=0;f=a+6;g=(w|0)<(yY(f)|0);a:do{if(g){h=a+6;i=a+1;l=a+6;n=a+1;p=a+6;L=a+1;F=a+6;for(I=a+16;;){x=rW(BZ(h,w));j=x-2;m=xg(i,c[QV(BZ(l,w),0)]);r=1;R=(r|0)<=(j|0);b:do{if(R){for(;;){if(s=xg(n,c[QV(BZ(p,w),r)]),t=xg(L,c[QV(BZ(F,w),(r+1|0)%(x|0))]),N(z,m,s),N(A,m,t),qn(C,z,A),k[y]=.5*JB(C),wn(E,m,s),wn(K,E,t),k[G]=3,wC(B,K,G),Q(M,B,y),xn(I,M),k[e]+=k[y],r+=1,!((r|0)<=(j|0))){break b}}}}while(0);w+=1;if((w|0)>=(yY(f)|0)){break a}}}}while(0);KB(a+16,e);LZa(d);b=d}GZa.X=1;function MZa(a,d){$1=a;return 0!=(d|0)?d<<1:1}MZa.X=1;function NZa(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}NZa.X=1;function OZa(a,d){$1=a;return 0!=(d|0)?d<<1:1}OZa.X=1;function EZ(a){return(c[a]<<16>>16)+(c[a+1]<<16>>16<<16)}EZ.X=1;function FZ(a){return c[a+2]}FZ.X=1;function DZa(a,d){return(d<<1)+c[a+3]}DZa.X=1;function GZ(a){return c[a+1]}GZ.X=1;function PZa(a,d){return(d<<1)+c[a+3]}PZa.X=1;function HZ(a){return c[a+1]}HZ.X=1;function QZa(a){return c[a+2]}QZa.X=1;function KZa(a,d,e){var f,g,h;f=FZ(a+10)-1&EZ(d);g=CZa(a,d);h=a+10;-1!=(g|0)?(a=DZa(h,g),c[a]=c[e],k[a]=k[e],c[a+1]=c[e+1],k[a+1]=k[e+1]):(g=GZ(h),h=FZ(a+10),RZa(a+10,e),SZa(a+15,d),(h|0)<(FZ(a+10)|0)&&(TZa(a,d),f=FZ(a+10)-1&EZ(d)),c[QV(a+5,g)]=c[QV(a,f)],c[QV(a,f)]=g)}KZa.X=1;function UZa(a,d,e,f,g){var h=b;b+=4;var i,j,l;k[f]=3.4028234663852886e+38;k[g]=-3.4028234663852886e+38;i=th(a+1);j=0;var m=(j|0)<(i|0);a:do{if(m){for(var n=a+1;;){if(vw(h,d,jg(n,j)),l=J(h,e),lk[g]&&(k[g]=l),j+=1,(j|0)>=(i|0)){break a}}}}while(0);k[f]>k[g]&&(a=k[f],k[f]=k[g],k[g]=a);b=h}UZa.X=1;function CZa(a,d){var e;e=FZ(a+10)-1&EZ(d);if(e>>>0>=rW(a)>>>0){e=-1}else{var f=c[sW(a,e)];e=f;for(var g=a+15,h=a+5;-1!=(f|0)&&0==(VZa(d,WZa(g,e))&1|0);){e=f=c[sW(h,e)]}}return e}CZa.X=1;function RZa(a,d){(GZ(a)|0)==(FZ(a)|0)&&XZa(a,OZa(a,GZ(a)));var e=(c[a+1]<<1)+c[a+3];0!=(e|0)&&(c[e]=c[d],k[e]=k[d],c[e+1]=c[d+1],k[e+1]=k[d+1]);e=a+1;c[e]+=1}RZa.X=1;function SZa(a,d){(HZ(a)|0)==(QZa(a)|0)&&YZa(a,MZa(a,HZ(a)));var e=(c[a+1]<<1)+c[a+3];0!=(e|0)&&(c[e]=c[d],k[e]=k[d],c[e+1]=c[d+1],k[e+1]=k[d+1]);e=a+1;c[e]+=1}SZa.X=1;function TZa(a,d){var e=b;b+=2;var f,g,h=e+1,i,j;$3=d;f=FZ(a+10);var l=(rW(a)|0)<(f|0);a:do{if(l){g=rW(a);c[e]=0;PV(a,f,e);c[h]=0;PV(a+5,f,h);i=0;j=(i|0)<(f|0);b:do{if(j){for(var m=a;;){if(c[QV(m,i)]=-1,i+=1,(i|0)>=(f|0)){break b}}}}while(0);i=0;j=(i|0)<(f|0);b:do{if(j){for(m=a+5;;){if(c[QV(m,i)]=-1,i+=1,(i|0)>=(f|0)){break b}}}}while(0);i=0;if((i|0)<(g|0)){for(var m=a+15,n=a+10,p=a,r=a+5,s=a;;){if(j=FZ(n)-1&EZ(PZa(m,i)),c[QV(r,i)]=c[QV(p,j)],c[QV(s,j)]=i,i+=1,(i|0)>=(g|0)){break a}}}}}while(0);b=e}TZa.X=1;function YZa(a,d){var e;(QZa(a)|0)<(d|0)&&(e=ZZa(a,d),$Za(a,0,HZ(a),e),NZa(a,0,HZ(a)),a_a(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}YZa.X=1;function ZZa(a,d){return 0!=(d|0)?b_a(a,d,0):0}ZZa.X=1;function $Za(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=(d<<1)+f;if(0!=(i|0)){var j=(d<<1)+c[h];c[i]=c[j];k[i]=k[j];c[i+1]=c[j+1];k[i+1]=k[j+1]}d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}$Za.X=1;function a_a(a){0!=(c[a+3]|0)&&(c[a+4]&1&&c_a(a,c[a+3]),c[a+3]=0)}a_a.X=1;function c_a(a,d){$1=a;yh(d)}c_a.X=1;function b_a(a,d,e){$1=a;$3=e;return Ue(d<<2,16)}b_a.X=1;function XZa(a,d){var e;(FZ(a)|0)<(d|0)&&(e=d_a(a,d),e_a(a,0,GZ(a),e),f_a(a,0,GZ(a)),g_a(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}XZa.X=1;function d_a(a,d){return 0!=(d|0)?h_a(a,d,0):0}d_a.X=1;function e_a(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=(d<<1)+f;if(0!=(i|0)){var j=(d<<1)+c[h];c[i]=c[j];k[i]=k[j];c[i+1]=c[j+1];k[i+1]=k[j+1]}d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}e_a.X=1;function i_a(a,d){var e;e=c[a];c[a]=c[d];c[d]=e}i_a.X=1;function f_a(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}f_a.X=1;function VZa(a,d){return(c[a]<<16>>16|0)==(c[d]<<16>>16|0)?(c[a+1]<<16>>16|0)==(c[d+1]<<16>>16|0):0}VZa.X=1;function WZa(a,d){return(d<<1)+c[a+3]}WZa.X=1;function yZa(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}yZa.X=1;function j_a(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}j_a.X=1;function k_a(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}k_a.X=1;function JZa(a){c[a]=-1;c[a+1]=-1}JZa.X=1;function g_a(a){0!=(c[a+3]|0)&&(c[a+4]&1&&l_a(a,c[a+3]),c[a+3]=0)}g_a.X=1;function l_a(a,d){$1=a;yh(d)}l_a.X=1;function h_a(a,d,e){$1=a;$3=e;return Ue(d<<2,16)}h_a.X=1;function FZa(a){m_a(a,0,yY(a));n_a(a);yZa(a)}FZa.X=1;function m_a(a,d,e){var f=(d|0)<(e|0);a:do{if(f){for(var g=a+3;;){if(IZ(c[g]+14*d),d+=1,(d|0)>=(e|0)){break a}}}}while(0)}m_a.X=1;function n_a(a){0!=(c[a+3]|0)&&(c[a+4]&1&&o_a(a,c[a+3]),c[a+3]=0)}n_a.X=1;function o_a(a,d){$1=a;yh(d)}o_a.X=1;function p_a(a){f_a(a,0,GZ(a));g_a(a);j_a(a)}p_a.X=1;function q_a(a){NZa(a,0,HZ(a));a_a(a);k_a(a)}q_a.X=1;function IZa(a,d,e){c[a]=d;c[a+1]=e;(c[a+1]<<16>>16|0)>(c[a]<<16>>16|0)&&i_a(a,a+1)}IZa.X=1;function HZa(a){vW(a);vW(a+5);j_a(a+10);k_a(a+15)}HZa.X=1;function nZ(a){UY(a);c[a]=r_a+2}nZ.X=1;function s_a(a){yh(a)}s_a.X=1;function t_a(){}t_a.X=1;function IZ(a){wW(a+5);wW(a)}IZ.X=1;function LZa(a){q_a(a+15);p_a(a+10);wW(a+5);wW(a)}LZa.X=1;function u_a(a){return c[a+23]}u_a.X=1;function v_a(a){return c[a+24]}v_a.X=1;function kf(a,d,e){var f=b;b+=113;var g=f+1,h=f+2,i,j=f+3,l=f+4,m=f+5,n=f+6,p=f+10,r=f+14,s=f+15,t=f+16,w=f+17,x=f+21;i=f+25;var y,z,A,C,B=f+29,K=f+33;z=f+37;A=f+38;var E=f+42,G=f+43,M=f+44;C=f+45;var L=f+49,F=f+50,I=f+51,R=f+52;y=f+53;var O=f+57,Z=f+61,P=f+62,S=f+63,da=f+64,V=f+68,ba=f+72,$=f+76,Y=f+80,la=f+84,ka=f+85,ja=f+89,ea=f+90,ca=f+91,W=f+92,U=f+96,X=f+100,ma=f+104,ga=f+108,ha=f+112,ta=c[d+1];if(8==(ta|0)){k[f]=0,k[g]=0,k[h]=0,H(a,f,g,h)}else{if(0==(ta|0)){i=d+7,k[j]=0<=k[e]?k[i]:-k[i],k[l]=0<=k[e+1]?k[i+1]:-k[i+1],k[m]=0<=k[e+2]?k[i+2]:-k[i+2],H(a,j,l,m)}else{if(1==(ta|0)){H(n,e,e+1,e+2),i=d+14,k[r]=J(n,i),k[s]=J(n,i+4),k[t]=J(n,i+8),H(p,r,s,t),i=(fC(p)<<2)+i,c[w]=c[i],k[w]=k[i],c[w+1]=c[i+1],k[w+1]=k[i+1],c[w+2]=c[i+2],k[w+2]=k[i+2],c[w+3]=c[i+3],k[w+3]=k[i+3],H(a,w,w+1,w+2)}else{if(13==(ta|0)){z=d+7,c[x]=c[z],k[x]=k[z],c[x+1]=c[z+1],k[x+1]=k[z+1],c[x+2]=c[z+2],k[x+2]=k[z+2],c[x+3]=c[z+3],k[x+3]=k[z+3],H(i,e,e+1,e+2),y=dF(d),d=1,z=0,A=2,0==(y|0)?(d=1,z=0,A=2):1==(y|0)?(d=0,z=1,A=2):2==(y|0)&&(d=0,z=2,A=1),C=k[x+d],x=k[x+y],y=ec(k[i+d]*k[i+d]+k[i+A]*k[i+A]),0!=y?(C/=y,k[B+d]=k[i+d]*C,k[B+z]=0>k[i+z]?-x:x,k[B+A]=k[i+A]*C):(k[B+d]=C,k[B+z]=0>k[i+z]?-x:x,k[B+A]=0),H(a,B,B+1,B+2)}else{if(10==(ta|0)){H(K,e,e+1,e+2),i=gf(d),B=Ke(d),k[z]=cf(d),k[E]=0,k[G]=0,k[M]=0,H(A,E,G,M),x=-0xde0b6b000000000,c[C]=c[K],k[C]=k[K],c[C+1]=c[K+1],k[C+1]=k[K+1],c[C+2]=c[K+2],k[C+2]=k[K+2],c[C+3]=c[K+3],k[C+3]=k[K+3],e=Um(C),9999999747378752e-20>e?(k[L]=1,k[F]=0,k[I]=0,pe(C,L,F,I)):(k[R]=1/ec(e),LC(C,R)),k[Z]=0,k[P]=0,k[S]=0,H(O,Z,P,S),k[O+B]=i,ig($,C,d+3),Q(ba,$,z),wn(V,O,ba),k[la]=Le(d),Q(Y,C,la),N(da,V,Y),c[y]=c[da],k[y]=k[da],c[y+1]=c[da+1],k[y+1]=k[da+1],c[y+2]=c[da+2],k[y+2]=k[da+2],c[y+3]=c[da+3],k[y+3]=k[da+3],e=J(C,y),e>x&&(x=e,c[A]=c[y],k[A]=k[y],c[A+1]=c[y+1],k[A+1]=k[y+1],c[A+2]=c[y+2],k[A+2]=k[y+2],c[A+3]=c[y+3],k[A+3]=k[y+3]),k[ja]=0,k[ea]=0,k[ca]=0,H(ka,ja,ea,ca),k[ka+B]=-i,ig(ma,C,d+3),Q(X,ma,z),wn(U,ka,X),k[ha]=Le(d),Q(ga,C,ha),N(W,U,ga),c[y]=c[W],k[y]=k[W],c[y+1]=c[W+1],k[y+1]=k[W+1],c[y+2]=c[W+2],k[y+2]=k[W+2],c[y+3]=c[W+3],k[y+3]=k[W+3],e=J(C,y),e>x&&(c[A]=c[y],k[A]=k[y],c[A+1]=c[y+1],k[A+1]=k[y+1],c[A+2]=c[y+2],k[A+2]=k[y+2],c[A+3]=c[y+3],k[A+3]=k[y+3]),H(a,A,A+1,A+2)}else{if(5==(ta|0)){i=u_a(d),w_a(a,e,i,v_a(d),d+3)}else{if(4==(ta|0)){i=wg(d),w_a(a,e,i,sh(d),d+3)}else{v[c[c[d]+16]](a,d,e)}}}}}}}b=f}kf.X=1;function w_a(a,d,e,f,g){var h=b;b+=4;var i,j,l;ig(h,d,g);i=-0xde0b6b000000000;j=-1;l=0;var m=(l|0)<(f|0);a:do{if(m){for(;;){if(d=J(h,(l<<2)+e),d>i&&(i=d,j=l),l+=1,(l|0)>=(f|0)){break a}}}}while(0);ig(a,(j<<2)+e,g);b=h}w_a.X=1;function tf(a,d,e){var f=b;b+=16;var g=f+4,h=f+5,i=f+6,j=f+7,l=f+11,m=f+15;c[f]=c[e];k[f]=k[e];c[f+1]=c[e+1];k[f+1]=k[e+1];c[f+2]=c[e+2];k[f+2]=k[e+2];c[f+3]=c[e+3];k[f+3]=k[e+3];1.4210854715202004e-14>Um(f)&&(k[g]=-1,k[h]=-1,k[i]=-1,pe(f,g,h,i));IB(f);kf(j,d,f);k[m]=Mf(d);Q(l,f,m);wn(a,j,l);b=f}tf.X=1;function Mf(a){var d=c[a+1];return 8==(d|0)?dW(a):0==(d|0)?Le(a):1==(d|0)?Le(a):13==(d|0)?Le(a):10==(d|0)?Le(a):5==(d|0)||4==(d|0)?Le(a):v[c[c[a]+11]](a)}Mf.X=1;function x_a(){return 0}x_a.X=1;function y_a(){return 0}y_a.X=1;function z_a(){}z_a.X=1;function A_a(){}A_a.X=1;function B_a(){return 0}B_a.X=1;function C_a(){}C_a.X=1;function D_a(){return 0}D_a.X=1;function E_a(){return D.Wd}E_a.X=1;function df(a,d,e,f){var g=b;b+=129;var h,i=g+1,j=g+5,l=g+9,m,n=g+13,p=g+14,r=g+18,s=g+22,t=g+34,w=g+38,x=g+42,y=g+43,z=g+44,A=g+45,C=g+49,B=g+53,K=g+57,E=g+58,G=g+59,M=g+60,L=g+64,F=g+68,I=g+72,R=g+76,O=g+80,Z=g+84,P=g+88,S=g+89,da=g+90,V=g+91,ba=g+95,$=g+96,Y=g+97,la=g+98,ka=g+110,ja=g+114,ea=g+118,ca=g+119,W=g+120,U=g+121,X=g+125,ma=c[a+1];a:do{if(8==(ma|0)){h=a;k[g]=k[h+7]+Mf(h);h=d+12;H(i,g,g,g);N(j,h,i);m=e;var ga=j;c[m]=c[ga];k[m]=k[ga];c[m+1]=c[ga+1];k[m+1]=k[ga+1];c[m+2]=c[ga+2];k[m+2]=k[ga+2];c[m+3]=c[ga+3];k[m+3]=k[ga+3];wn(l,h,i);h=f;m=l;c[h]=c[m];k[h]=k[m];c[h+1]=c[m+1];k[h+1]=k[m+1];c[h+2]=c[m+2];k[h+2]=k[m+2];c[h+3]=c[m+3];k[h+3]=k[m+3]}else{if(13==(ma|0)||0==(ma|0)){m=a,k[n]=Mf(m),h=p,m+=7,c[h]=c[m],k[h]=k[m],c[h+1]=c[m+1],k[h+1]=k[m+1],c[h+2]=c[m+2],k[h+2]=k[m+2],c[h+3]=c[m+3],k[h+3]=k[m+3],H(r,n,n,n),xn(p,r),qc(s,d),h=t,m=d+12,c[h]=c[m],k[h]=k[m],c[h+1]=c[m+1],k[h+1]=k[m+1],c[h+2]=c[m+2],k[h+2]=k[m+2],c[h+3]=c[m+3],k[h+3]=k[m+3],k[x]=J(0+s,p),k[y]=J(4+s,p),k[z]=J(8+s,p),H(w,x,y,z),N(A,t,w),h=e,m=A,c[h]=c[m],k[h]=k[m],c[h+1]=c[m+1],k[h+1]=k[m+1],c[h+2]=c[m+2],k[h+2]=k[m+2],c[h+3]=c[m+3],k[h+3]=k[m+3],wn(C,t,w),h=f,m=C,c[h]=c[m],k[h]=k[m],c[h+1]=c[m+1],k[h+1]=k[m+1],c[h+2]=c[m+2],k[h+2]=k[m+2],c[h+3]=c[m+3],k[h+3]=k[m+3]}else{if(1==(ma|0)){h=Mf(a);m=0;for(var ga=F,ha=I;;){k[K]=0;k[E]=0;k[G]=0;H(B,K,E,G);k[B+m]=1;rn(L,B,d);kf(M,a,L);vw(F,d,M);k[f+m]=k[F+m]+h;k[B+m]=-1;rn(O,B,d);kf(R,a,O);vw(I,d,R);c[ga]=c[ha];k[ga]=k[ha];c[ga+1]=c[ha+1];k[ga+1]=k[ha+1];c[ga+2]=c[ha+2];k[ga+2]=k[ha+2];c[ga+3]=c[ha+3];k[ga+3]=k[ha+3];k[e+m]=k[F+m]-h;var ta=m+1;m=ta;if(3<=(ta|0)){break a}}}else{if(10==(ma|0)){h=a,k[P]=cf(h),k[S]=cf(h),k[da]=cf(h),H(Z,P,S,da),m=Ke(h),k[Z+m]=cf(h)+gf(h),k[ba]=Mf(h),k[$]=Mf(h),k[Y]=Mf(h),H(V,ba,$,Y),xn(Z,V),qc(la,d),h=ka,m=d+12,c[h]=c[m],k[h]=k[m],c[h+1]=c[m+1],k[h+1]=k[m+1],c[h+2]=c[m+2],k[h+2]=k[m+2],c[h+3]=c[m+3],k[h+3]=k[m+3],k[ea]=J(0+la,Z),k[ca]=J(4+la,Z),k[W]=J(8+la,Z),H(ja,ea,ca,W),N(U,ka,ja),h=e,m=U,c[h]=c[m],k[h]=k[m],c[h+1]=c[m+1],k[h+1]=k[m+1],c[h+2]=c[m+2],k[h+2]=k[m+2],c[h+3]=c[m+3],k[h+3]=k[m+3],wn(X,ka,ja),h=f,m=X,c[h]=c[m],k[h]=k[m],c[h+1]=c[m+1],k[h+1]=k[m+1],c[h+2]=c[m+2],k[h+2]=k[m+2],c[h+3]=c[m+3],k[h+3]=k[m+3]}else{if(5==(ma|0)||4==(ma|0)){h=a,eh(h,d,e,f,Mf(h))}else{v[c[c[a]+2]](a,d,e,f)}}}}}}while(0);b=g}df.X=1;function F_a(a,d,e){var f=b;b+=36;var g=f+1,h=f+2,i=f+3,j=f+7,l=f+8,m=f+9,n=f+10,p=f+11,r=f+21,s=f+25,t=f+26,w=f+27,x=f+28,y=f+32;k[f]=0;k[g]=0;k[h]=0;H(a,f,g,h);c[i]=c[e];k[i]=k[e];c[i+1]=c[e+1];k[i+1]=k[e+1];c[i+2]=c[e+2];k[i+2]=k[e+2];c[i+3]=c[e+3];k[i+3]=k[e+3];e=Um(i);9999999747378752e-20>e?(k[j]=1,k[l]=0,k[m]=0,pe(i,j,l,m)):(k[n]=1/ec(e),LC(i,n));G_a(p,i);k[s]=0xde0b6b000000000;k[t]=0xde0b6b000000000;k[w]=0xde0b6b000000000;H(r,s,t,w);d=c[d+23];i=c[c[d]+2];WP(x,r);v[i](d,p,x,r);H_a(y,p);c[a]=c[y];k[a]=k[y];c[a+1]=c[y+1];k[a+1]=k[y+1];c[a+2]=c[y+2];k[a+2]=k[y+2];c[a+3]=c[y+3];k[a+3]=k[y+3];$16=1;b=f}F_a.X=1;function H_a(a,d){var e=d+1;c[a]=c[e];k[a]=k[e];c[a+1]=c[e+1];k[a+1]=k[e+1];c[a+2]=c[e+2];k[a+2]=k[e+2];c[a+3]=c[e+3];k[a+3]=k[e+3]}H_a.X=1;function I_a(){}I_a.X=1;function J_a(a,d,e,f){var g=b;b+=25;var h,i=g+10,j=g+14,l=g+15,m=g+16,n=g+17,p=g+21;h=0;var r=(h|0)<(f|0);a:do{if(r){for(;;){if(k[(h<<2)+e+3]=-0xde0b6b000000000,h+=1,(h|0)>=(f|0)){break a}}}}while(0);h=0;for(a+=23;(h|0)<(f|0);){G_a(g,(h<<2)+d);k[j]=0xde0b6b000000000;k[l]=0xde0b6b000000000;k[m]=0xde0b6b000000000;H(i,j,l,m);var r=c[a],s=c[c[r]+2];WP(n,i);v[s](r,g,n,i);H_a(p,g);r=(h<<2)+e;c[r]=c[p];k[r]=k[p];c[r+1]=c[p+1];k[r+1]=k[p+1];c[r+2]=c[p+2];k[r+2]=k[p+2];c[r+3]=c[p+3];k[r+3]=k[p+3];h+=1}b=g}J_a.X=1;function K_a(a,d,e){var f=b;b+=12;var g=f+4,h=f+5,i=f+6,j=f+7,l=f+11;v[c[c[d]+16]](a,d,e);0!=v[c[c[d]+11]](d)&&(c[f]=c[e],k[f]=k[e],c[f+1]=c[e+1],k[f+1]=k[e+1],c[f+2]=c[e+2],k[f+2]=k[e+2],c[f+3]=c[e+3],k[f+3]=k[e+3],1.4210854715202004e-14>Um(f)&&(k[g]=-1,k[h]=-1,k[i]=-1,pe(f,g,h,i)),IB(f),k[l]=v[c[c[d]+11]](d),Q(j,f,l),xn(a,j));b=f}K_a.X=1;function L_a(a,d){Iy(c[a+23],d);bh(a)}L_a.X=1;function M_a(a){return c[a+23]+1}M_a.X=1;function N_a(a){EX(a)}N_a.X=1;function O_a(){}O_a.X=1;function P_a(a,d,e){e&=1;vZ(a);c[a]=Q_a+2;c[a+23]=d;c[a+1]=3;e&1&&bh(a)}P_a.X=1;function R_a(a){EX(a);yh(a)}R_a.X=1;function S_a(){}S_a.X=1;function T_a(a){xe(a)}T_a.X=1;function U_a(a,d,e,f){var g=b;b+=24;var h=g+12,i=g+16,j=g+20;$3=e;$4=f;N(h,d,a+13);N(i,d+4,a+13);N(j,d+8,a+13);d=.1666666716337204*-sc(ne(h,i,j));for(e=0;;){var f=0,l=(f|0)<=(e|0);a:do{if(l){for(;;){var m=d*(.10000000149011612*(k[h+e]*k[h+f]+k[i+e]*k[i+f]+k[j+e]*k[j+f])+.05000000074505806*(k[h+e]*k[i+f]+k[h+f]*k[i+e]+k[h+e]*k[j+f]+k[h+f]*k[j+e]+k[i+e]*k[j+f]+k[i+f]*k[j+e]));k[(f<<2)+g+e]=m;k[(e<<2)+g+f]=m;f+=1;if(!((f|0)<=(e|0))){break a}}}}while(0);e=f=e+1;if(3<=(f|0)){break}}h=-k[0+g];i=-k[4+g+1];j=-k[8+g+2];k[0+g]=i+j;k[4+g+1]=j+h;k[8+g+2]=h+i;xn(0+(a+1),0+g);xn(4+(a+1),4+g);xn(8+(a+1),8+g);b=g}U_a.X=1;function V_a(a){xe(a)}V_a.X=1;function W_a(a,d,e,f){var g=b;b+=29;var h=g+4,i=g+8,j=g+12,l=g+16,m=g+17,n=g+21,p=g+25;$3=e;$4=f;c[a+1]&1?(j=a+2,c[j]=c[d],k[j]=k[d],c[j+1]=c[d+1],k[j+1]=k[d+1],c[j+2]=c[d+2],k[j+2]=k[d+2],c[j+3]=c[d+3],k[j+3]=k[d+3],c[a+1]=0):(N(g,d,a+2),N(h,d+4,a+2),N(i,d+8,a+2),e=sc(ne(g,h,i)),k[l]=.25*e,wn(p,d,d+4),wn(n,p,d+8),wn(m,n,a+2),Q(j,m,l),xn(a+6,j),a+=10,k[a]+=e);b=g}W_a.X=1;function G_a(a,d){var e=b;b+=3;var f=e+1,g=e+2;FY(a);c[a]=X_a+2;k[e]=0;k[f]=0;k[g]=0;H(a+1,e,f,g);k[a+5]=-0xde0b6b000000000;f=a+6;c[f]=c[d];k[f]=k[d];c[f+1]=c[d+1];k[f+1]=k[d+1];c[f+2]=c[d+2];k[f+2]=k[d+2];c[f+3]=c[d+3];k[f+3]=k[d+3];b=e}G_a.X=1;function Y_a(a){xe(a)}Y_a.X=1;function Z_a(a,d,e,f){var g;$3=e;$4=f;for(var e=0,f=a+6,h=a+5,i=a+5,a=a+1;!(g=J(f,(e<<2)+d),g>k[h]&&(k[i]=g,g=(e<<2)+d,c[a]=c[g],k[a]=k[g],c[a+1]=c[g+1],k[a+1]=k[g+1],c[a+2]=c[g+2],k[a+2]=k[g+2],c[a+3]=c[g+3],k[a+3]=k[g+3]),e=g=e+1,3<=(g|0));){}}Z_a.X=1;function RH(a,d){var e=b;b+=15;var f=e+4,g=e+5,h=e+6,i=e+7,j=e+11;yW(a);c[a]=$_a+2;c[a+13]=1;k[f]=v[c[c[a]+11]](a);k[g]=v[c[c[a]+11]](a);k[h]=v[c[c[a]+11]](a);H(e,f,g,h);ig(j,d,a+3);N(i,j,e);f=a+7;c[f]=c[i];k[f]=k[i];c[f+1]=c[i+1];k[f+1]=k[i+1];c[f+2]=c[i+2];k[f+2]=k[i+2];c[f+3]=c[i+3];k[f+3]=k[i+3];c[a+1]=13;b=e}RH.X=1;function QG(a,d){RH(a,d);c[a]=a0a+2;c[a+13]=0}QG.X=1;function Vza(a,d){RH(a,d);c[a]=b0a+2;c[a+13]=2}Vza.X=1;function c0a(a,d,e,f){DX(a+7,v[c[c[a]+11]](a),d,e,f)}c0a.X=1;function d0a(a,d,e){var f=b;b+=6;var g,h,i=f+4,j=f+5;qG(f,a);h=c[a+13];0==(h|0)?(g=1,h=0):2==(h|0)?(g=0,h=2):(g=0,h=1);g=k[f+g]*k[f+g];k[i]=d/12*4*k[f+h]*k[f+h]+d/4*g;k[j]=d/2*g;a=c[a+13];0==(a|0)?pe(e,j,i,i):2==(a|0)?pe(e,i,i,j):pe(e,i,j,i);b=f}d0a.X=1;function e0a(a,d,e){f0a(a,d+7,e)}e0a.X=1;function f0a(a,d,e){var f,g;$cylinderUpAxis=0;$XX=1;$YY=0;$ZZ=2;f=k[d+1];d=k[d];g=ec(k[e+1]*k[e+1]+k[e+2]*k[e+2]);0!=g?(f/=g,k[a+1]=k[e+1]*f,k[a]=0>k[e]?-d:d,k[a+2]=k[e+2]*f):(k[a+1]=f,k[a]=0>k[e]?-d:d,k[a+2]=0)}f0a.X=1;function g0a(a,d,e){h0a(a,d+7,e)}g0a.X=1;function i0a(){return D.Ue}i0a.X=1;function j0a(){return 60}j0a.X=1;function k0a(){return D.Xd}k0a.X=1;function l0a(){return D.ne}l0a.X=1;function h0a(a,d,e){var f,g;$cylinderUpAxis=2;$XX=0;$YY=2;$ZZ=1;f=k[d];d=k[d+2];g=ec(k[e]*k[e]+k[e+1]*k[e+1]);0!=g?(f/=g,k[a]=k[e]*f,k[a+2]=0>k[e+2]?-d:d,k[a+1]=k[e+1]*f):(k[a]=f,k[a+2]=0>k[e+2]?-d:d,k[a+1]=0)}h0a.X=1;function m0a(a,d,e){n0a(a,d+7,e)}m0a.X=1;function n0a(a,d,e){var f,g;$cylinderUpAxis=1;$XX=0;$YY=1;$ZZ=2;f=k[d];d=k[d+1];g=ec(k[e]*k[e]+k[e+2]*k[e+2]);0!=g?(f/=g,k[a]=k[e]*f,k[a+1]=0>k[e+1]?-d:d,k[a+2]=k[e+2]*f):(k[a]=f,k[a+1]=0>k[e+1]?-d:d,k[a+2]=0)}n0a.X=1;function o0a(a,d,e,f){var g=b;b+=4;var h;h=0;var i=(h|0)<(f|0);a:do{if(i){for(var j=g;;){n0a(g,a+7,(h<<2)+d);var l=(h<<2)+e;c[l]=c[j];k[l]=k[j];c[l+1]=c[j+1];k[l+1]=k[j+1];c[l+2]=c[j+2];k[l+2]=k[j+2];c[l+3]=c[j+3];k[l+3]=k[j+3];h+=1;if((h|0)>=(f|0)){break a}}}}while(0);b=g}o0a.X=1;function p0a(a,d,e,f){var g=b;b+=4;var h;h=0;var i=(h|0)<(f|0);a:do{if(i){for(var j=a,l=g;;){h0a(g,j+7,(h<<2)+d);var m=(h<<2)+e;c[m]=c[l];k[m]=k[l];c[m+1]=c[l+1];k[m+1]=k[l+1];c[m+2]=c[l+2];k[m+2]=k[l+2];c[m+3]=c[l+3];k[m+3]=k[l+3];h+=1;if((h|0)>=(f|0)){break a}}}}while(0);b=g}p0a.X=1;function q0a(a,d,e,f){var g=b;b+=4;var h;h=0;var i=(h|0)<(f|0);a:do{if(i){for(var j=a,l=g;;){f0a(g,j+7,(h<<2)+d);var m=(h<<2)+e;c[m]=c[l];k[m]=k[l];c[m+1]=c[l+1];k[m+1]=k[l+1];c[m+2]=c[l+2];k[m+2]=k[l+2];c[m+3]=c[l+3];k[m+3]=k[l+3];h+=1;if((h|0)>=(f|0)){break a}}}}while(0);b=g}q0a.X=1;function r0a(){}r0a.X=1;function s0a(a){yh(a)}s0a.X=1;function t0a(a,d){var e=b;b+=23;var f=e+4,g=e+5,h=e+6,i=e+7,j=e+11,l=e+15,m=e+19;k[f]=v[c[c[a]+11]](a);k[g]=v[c[c[a]+11]](a);k[h]=v[c[c[a]+11]](a);H(e,f,g,h);wn(i,a+7,e);eX(j,i,a+3);FX(a,d);ig(m,j,a+3);N(l,m,e);f=a+7;c[f]=c[l];k[f]=k[l];c[f+1]=c[l+1];k[f+1]=k[l+1];c[f+2]=c[l+2];k[f+2]=k[l+2];c[f+3]=c[l+3];k[f+3]=k[l+3];b=e}t0a.X=1;function u0a(a,d){var e=b;b+=22;var f=e+4,g=e+5,h=e+6,i=e+7,j=e+11,l=e+15,m=e+16,n=e+17,p=e+18;k[f]=v[c[c[a]+11]](a);k[g]=v[c[c[a]+11]](a);k[h]=v[c[c[a]+11]](a);H(e,f,g,h);wn(i,a+7,e);fW(a,d);k[l]=v[c[c[a]+11]](a);k[m]=v[c[c[a]+11]](a);k[n]=v[c[c[a]+11]](a);H(j,l,m,n);N(p,i,j);f=a+7;c[f]=c[p];k[f]=k[p];c[f+1]=c[p+1];k[f+1]=k[p+1];c[f+2]=c[p+2];k[f+2]=k[p+2];c[f+3]=c[p+3];k[f+3]=k[p+3];b=e}u0a.X=1;function v0a(a,d,e){GX(a,d,e);c[d+16]=c[a+13];return D.te}v0a.X=1;function w0a(a,d,e){var f=b;b+=16;var g=f+4,h=f+8,i=f+9,j=f+10,l=f+11,m=f+15;v[c[c[d]+16]](f,d,e);c[a]=c[f];k[a]=k[f];c[a+1]=c[f+1];k[a+1]=k[f+1];c[a+2]=c[f+2];k[a+2]=k[f+2];c[a+3]=c[f+3];k[a+3]=k[f+3];0!=v[c[c[d]+11]](d)&&(c[g]=c[e],k[g]=k[e],c[g+1]=c[e+1],k[g+1]=k[e+1],c[g+2]=c[e+2],k[g+2]=k[e+2],c[g+3]=c[e+3],k[g+3]=k[e+3],1.4210854715202004e-14>Um(g)&&(k[h]=-1,k[i]=-1,k[j]=-1,pe(g,h,i,j)),IB(g),k[m]=v[c[c[d]+11]](d),Q(l,g,m),xn(a,l));b=f}w0a.X=1;function x0a(a){var d=b;b+=4;qG(d,a);a=k[d];b=d;return a}x0a.X=1;function y0a(){}y0a.X=1;function z0a(a){yh(a)}z0a.X=1;function A0a(a){var d=b;b+=4;qG(d,a);a=k[d+1];b=d;return a}A0a.X=1;function B0a(){}B0a.X=1;function C0a(a){yh(a)}C0a.X=1;function D0a(a){var d=b;b+=4;qG(d,a);a=k[d];b=d;return a}D0a.X=1;function WY(a){E0a(a+5);c[a]=0;c[a+1]=0;c[a+2]=-1;c[a+3]=0;c[a+4]=0}WY.X=1;function JZ(a){0!=(c[a]|0)&&KZ(a,c[a]);yh(c[a+1]);c[a+1]=0;c[a+2]=-1;F0a(a+5);c[a+4]=0}JZ.X=1;function KZ(a,d){IY(d)||(KZ(a,c[d+9]),KZ(a,c[d+10]));(d|0)==(c[a]|0)&&(c[a]=0);LZ(a,d)}KZ.X=1;function F0a(a){G0a(a,0,MZ(a));H0a(a);E0a(a)}F0a.X=1;function aZ(a){JZ(a);F0a(a+5)}aZ.X=1;function NZ(a,d){return c[a+3]+d}NZ.X=1;function OZ(a,d){var e;(I0a(a)|0)<(d|0)&&(e=J0a(a,d),K0a(a,0,PZ(a),e),L0a(a,0,PZ(a)),M0a(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}OZ.X=1;function QZ(a,d,e,f){var g=b;b+=1;c[g]=d;sY(c[g])?0==(f|0)?a=5:(QZ(a,c[c[g]+9],e,f-1),QZ(a,c[c[g]+10],e,f-1),LZ(a,c[g]),a=6):a=5;5==a&&RZ(e,g);b=g}QZ.X=1;function N0a(a,d){var e=b;b+=12;var f,g,h,i,j=e+2,l=e+10,m=1<(PZ(d)|0);a:do{if(m){for(var n=e,p=l,r=e,s=p+1,t=e+1,w=l,x=l+1,y=l,z=l+1,A=l,C=l+1,B=e,K=e+1,E=e,G=e+1;;){f=3.4028234663852886e+38;c[n]=-1;k[n]=-1;c[n+1]=-1;k[n+1]=-1;g=0;var M=(g|0)<(PZ(d)|0);b:do{if(M){for(;;){h=g+1;var L=(h|0)<(PZ(d)|0);c:do{if(L){for(;;){if(O0a(j,c[NZ(d,g)],c[NZ(d,h)]),i=P0a(j),i=(PZ(d)|0)){break c}}}}while(0);g+=1;if((g|0)>=(PZ(d)|0)){break b}}}}while(0);c[p]=c[NZ(d,c[r])];c[s]=c[NZ(d,c[t])];f=Q0a(a,0,c[w],c[x]);c[f+9]=c[y];c[f+10]=c[z];c[c[A]+8]=f;c[c[C]+8]=f;c[NZ(d,c[B])]=f;R0a(d,c[K],PZ(d)-1);S0a(d);if(1>=(PZ(d)|0)){break a}}}}while(0);b=e}N0a.X=1;function T0a(a,d){var e,f,g;e=d;0>(e|0)&&(e=c[a+3]);var h=0!=(c[a]|0);a:do{if(h&&0<(e|0)){for(var i=a,j=a+4,l=a+4,m=a;;){f=c[i];g=0;var n=sY(f);b:do{if(n){for(;;){var p=c[l]>>>(g>>>0)&1;f=c[U0a(f,m)+p+9];g=g+1&31;if(!sY(f)){break b}}}}while(0);V0a(a,f,-1);c[j]+=1;e=f=e-1;if(0==(f|0)){break a}}}}while(0)}T0a.X=1;function W0a(a,d){var e=b;b+=5;0!=(c[a]|0)&&(SZ(e),OZ(e,c[a+3]),QZ(a,c[a],e,-1),c[a]=TZ(a,e,d),UZ(e));b=e}W0a.X=1;function TZ(a,d,e){var f=b;b+=45;var g=f+1,h=f+2,i=f+3,j=f+4,l=f+5,m=f+6,n=f+7,p=f+8,r=f+9,s=f+17,t=f+21,w=f+31,x=f+37,y=f+41;0==c[X0a]<<24>>24&&0!=(Hb(X0a)|0)&&(k[f]=1,k[g]=0,k[h]=0,H(VZ,f,g,h),k[i]=0,k[j]=1,k[l]=0,H(VZ+4,i,j,l),k[m]=0,k[n]=0,k[p]=1,H(VZ+8,m,n,p));if(1<(PZ(d)|0)){if((PZ(d)|0)>(e|0)){Y0a(r,d);WZ(s,r);SZ(t);SZ(t+5);g=-1;h=PZ(d);c[w]=0;k[w]=0;c[w+1]=0;k[w+1]=0;c[w+2]=0;k[w+2]=0;c[w+3]=0;k[w+3]=0;c[w+4]=0;k[w+4]=0;c[w+5]=0;i=k[w+5]=0;l=(i|0)<(PZ(d)|0);a:do{if(l){for(;;){WZ(y,c[NZ(d,i)]);N(x,y,s);for(j=0;!(m=(j<<1)+w+(0=(PZ(d)|0)){break a}}}}while(0);for(x=i=0;3>(x|0);){0<(c[(i<<1)+w]|0)&&0<(c[(i<<1)+w+1]|0)&&(x=sc(c[(i<<1)+w]-c[(i<<1)+w+1]|0)&-1,(x|0)<(h|0)&&(g=i,h=x)),i=x=i+1}h=0<=(g|0);a:do{if(h){OZ(t,c[(g<<1)+w]),OZ(t+5,c[(g<<1)+w+1]),Z0a(d,t,t+5,s,(g<<2)+VZ)}else{OZ(t,((PZ(d)|0)/2&-1)+1);OZ(t+5,(PZ(d)|0)/2&-1);x=0;for(y=PZ(d);;){if((x|0)>=(y|0)){break a}RZ(t+5*(x&1),NZ(d,x));x+=1}}}while(0);d=$0a(a,0,r,0);c[d+9]=TZ(a,t,e);c[d+10]=TZ(a,t+5,e);c[c[d+9]+8]=d;a=c[c[d+10]+8]=d;$17=1;t=t+10-5;UZ(t);UZ(t-5)}else{N0a(a,d),a=c[NZ(d,0)]}}else{a=c[NZ(d,0)]}b=f;return a}TZ.X=1;function U0a(a,d){var e,f,g,h,i;e=c[a+8];e>>>0>a>>>0?(f=XZ(a),g=1-f,h=c[e+(g+9)],i=c[e+8],0!=(i|0)?c[i+XZ(e)+9]=a:c[d]=a,c[h+8]=a,c[e+8]=a,c[a+8]=i,c[e+9]=c[a+9],c[e+10]=c[a+10],c[c[a+9]+8]=e,c[c[a+10]+8]=e,c[a+(f+9)]=e,c[a+(g+9)]=h,a1a(e,a)):e=a;return e}U0a.X=1;function V0a(a,d,e){var f,g;f=YZ(a,d);var h=0!=(f|0);a:do{if(h){if(0<=(e|0)){for(g=0;;){if((g|0)>=(e|0)){break a}if(0==(c[f+8]|0)){break a}f=c[f+8];g+=1}}else{f=c[a]}}}while(0);ZZ(a,f,d)}V0a.X=1;function XY(a,d,e){d=$0a(a,0,d,e);ZZ(a,c[a],d);a+=3;c[a]+=1;return d}XY.X=1;function $0a(a,d,e,f){a=b1a(a,d,f);c[a]=c[e];k[a]=k[e];c[a+1]=c[e+1];k[a+1]=k[e+1];c[a+2]=c[e+2];k[a+2]=k[e+2];c[a+3]=c[e+3];k[a+3]=k[e+3];c[a+4]=c[e+4];k[a+4]=k[e+4];c[a+5]=c[e+5];k[a+5]=k[e+5];c[a+6]=c[e+6];k[a+6]=k[e+6];c[a+7]=c[e+7];k[a+7]=k[e+7];return a}$0a.X=1;function ZZ(a,d,e){var f,g,h=0!=(c[a]|0);a:do{if(h){f=IY(d);b:do{if(!f){for(;;){if(d=c[d+c1a(e,c[d+9],c[d+10])+9],!(IY(d)^1)){break b}}}}while(0);f=c[d+8];g=Q0a(a,f,e,d);if(0!=(f|0)){c[f+XZ(d)+9]=g;c[g+9]=d;c[d+8]=g;c[g+10]=e;for(c[e+8]=g;;){if(d1a(f,g)){break a}$Z(c[f+9],c[f+10],f);g=f;var i=c[g+8];f=i;if(0==(i|0)){break a}}}else{c[g+9]=d,c[d+8]=g,c[g+10]=e,c[e+8]=g,c[a]=g}}else{c[a]=e,c[e+8]=0}}while(0)}ZZ.X=1;function YZ(a,d){var e=b;b+=8;var f,g,h;if((d|0)==(c[a]|0)){f=c[a]=0}else{if(g=c[d+8],f=c[g+8],h=c[g+(1-XZ(d))+9],0!=(f|0)){c[f+XZ(g)+9]=h;c[h+8]=f;LZ(a,g);for(g=f;0!=(g|0);){g=f;c[e]=c[g];k[e]=k[g];c[e+1]=c[g+1];k[e+1]=k[g+1];c[e+2]=c[g+2];k[e+2]=k[g+2];c[e+3]=c[g+3];k[e+3]=k[g+3];c[e+4]=c[g+4];k[e+4]=k[g+4];c[e+5]=c[g+5];k[e+5]=k[g+5];c[e+6]=c[g+6];k[e+6]=k[g+6];c[e+7]=c[g+7];k[e+7]=k[g+7];$Z(c[f+9],c[f+10],f);if(!e1a(e,f)){break}f=g=c[f+8]}f=0!=(f|0)?f:c[a]}else{c[a]=h,c[h+8]=0,LZ(a,g),f=c[a]}}b=e;return f}YZ.X=1;function ZY(a,d,e){var f,g;f=YZ(a,d);var h=0!=(f|0);a:do{if(h){if(0<=(c[a+2]|0)){g=0;for(var i=a+2;;){if((g|0)>=(c[i]|0)){break a}if(0==(c[f+8]|0)){break a}f=c[f+8];g+=1}}else{f=c[a]}}}while(0);c[d]=c[e];k[d]=k[e];c[d+1]=c[e+1];k[d+1]=k[e+1];c[d+2]=c[e+2];k[d+2]=k[e+2];c[d+3]=c[e+3];k[d+3]=k[e+3];c[d+4]=c[e+4];k[d+4]=k[e+4];c[d+5]=c[e+5];k[d+5]=k[e+5];c[d+6]=c[e+6];k[d+6]=k[e+6];c[d+7]=c[e+7];k[d+7]=k[e+7];ZZ(a,f,d)}ZY.X=1;function f1a(a,d,e,f,g){var h=b;b+=5;var i=h+1;k[h]=g;d1a(d,e)?a=0:(H(i,h,h,h),g1a(e,i),h1a(e,f),ZY(a,d,e),a=1);b=h;return a}f1a.X=1;function d1a(a,d){return k[a]<=k[d]?k[a+1]<=k[d+1]?k[a+2]<=k[d+2]?k[a+4]>=k[d+4]?k[a+4+1]>=k[d+4+1]?k[a+4+2]>=k[d+4+2]:0:0:0:0:0}d1a.X=1;function g1a(a,d){JC(a,d);xn(a+4,d)}g1a.X=1;function h1a(a,d){0=(e|0)){break a}}}}while(0)}G0a.X=1;function L0a(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}L0a.X=1;function a_(a,d){return(c[a]|0)>(c[d]|0)?a:d}a_.X=1;function MZ(a){return c[a+1]}MZ.X=1;function E0a(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}E0a.X=1;function I0a(a){return c[a+2]}I0a.X=1;function K0a(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=f+d;0!=(i|0)&&(c[i]=c[c[h]+d]);d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}K0a.X=1;function PZ(a){return c[a+1]}PZ.X=1;function SZ(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}SZ.X=1;function XZ(a){return(c[c[a+8]+10]|0)==(a|0)&1}XZ.X=1;function H0a(a){0!=(c[a+3]|0)&&(c[a+4]&1&&k1a(a,c[a+3]),c[a+3]=0)}H0a.X=1;function k1a(a,d){$1=a;yh(d)}k1a.X=1;function J0a(a,d){return 0!=(d|0)?l1a(a,d,0):0}J0a.X=1;function M0a(a){0!=(c[a+3]|0)&&(c[a+4]&1&&m1a(a,c[a+3]),c[a+3]=0)}M0a.X=1;function m1a(a,d){$1=a;yh(d)}m1a.X=1;function l1a(a,d,e){$1=a;$3=e;return Ue(d<<2,16)}l1a.X=1;function UZ(a){L0a(a,0,PZ(a));M0a(a);SZ(a)}UZ.X=1;function j1a(a){c[a]=n1a+2;uY(a+1)}j1a.X=1;function o1a(a){j1a(a);xe(a)}o1a.X=1;function p1a(a,d){var e=b;b+=1;c[e]=d;SY(a+1,e);b=e}p1a.X=1;function $Z(a,d,e){var f;for(f=0;;){var g=f;k[e+f]=k[a+f]k[d+4+f]?k[a+4+g]:k[d+4+g];f=g=f+1;if(3<=(g|0)){break}}}$Z.X=1;function e1a(a,d){return k[a]!=k[d]?1:k[a+1]!=k[d+1]?1:k[a+2]!=k[d+2]?1:k[a+4]!=k[d+4]?1:k[a+4+1]!=k[d+4+1]?1:k[a+4+2]!=k[d+4+2]}e1a.X=1;function c1a(a,d,e){return q1a(a,d)=(g|0)){var j=i;break a}}}else{j=e}}while(0);c[a]=c[j];k[a]=k[j];c[a+1]=c[j+1];k[a+1]=k[j+1];c[a+2]=c[j+2];k[a+2]=k[j+2];c[a+3]=c[j+3];k[a+3]=k[j+3];c[a+4]=c[j+4];k[a+4]=k[j+4];c[a+5]=c[j+5];k[a+5]=k[j+5];c[a+6]=c[j+6];k[a+6]=k[j+6];c[a+7]=c[j+7];k[a+7]=k[j+7];b=e}Y0a.X=1;function WZ(a,d){var e=b;b+=5;var f=e+4;wn(e,d,d+4);k[f]=2;wC(a,e,f);b=e}WZ.X=1;function Z0a(a,d,e,f,g){var h=b;b+=10;var i=h+1,j,l=h+2,m=h+6;c[h]=0;t1a(d,0,h);c[i]=0;t1a(e,0,i);i=0;j=PZ(a);var n=(i|0)<(j|0);a:do{if(n){for(;;){if(WZ(m,c[b_(a,i)]),N(l,m,f),0>J(g,l)?RZ(d,b_(a,i)):RZ(e,b_(a,i)),i+=1,(i|0)>=(j|0)){break a}}}}while(0);b=h}Z0a.X=1;function RZ(a,d){(PZ(a)|0)==(I0a(a)|0)&&OZ(a,s1a(a,PZ(a)));var e=c[a+3]+c[a+1];0!=(e|0)&&(c[e]=c[d]);e=a+1;c[e]+=1}RZ.X=1;function t1a(a,d,e){var f,g;f=PZ(a);var h=(d|0)<(f|0);a:do{if(h){if(g=d,(g|0)<(f|0)){for(;;){if(g+=1,(g|0)>=(f|0)){break a}}}}else{if((d|0)>(PZ(a)|0)&&OZ(a,d),g=f,(g|0)<(d|0)){for(var i=a+3;;){var j=c[i]+g;0!=(j|0)&&(c[j]=c[e]);g+=1;if((g|0)>=(d|0)){break a}}}}}while(0);c[a+1]=d}t1a.X=1;function P0a(a){var d=b;b+=4;u1a(d,a);a=k[d]*k[d+1]*k[d+2]+k[d]+k[d+1]+k[d+2];b=d;return a}P0a.X=1;function O0a(a,d,e){var f=b;b+=32;$Z(d,e,f);c[a]=c[f];k[a]=k[f];c[a+1]=c[f+1];k[a+1]=k[f+1];c[a+2]=c[f+2];k[a+2]=k[f+2];c[a+3]=c[f+3];k[a+3]=k[f+3];c[a+4]=c[f+4];k[a+4]=k[f+4];c[a+5]=c[f+5];k[a+5]=k[f+5];c[a+6]=c[f+6];k[a+6]=k[f+6];c[a+7]=c[f+7];k[a+7]=k[f+7];b=f}O0a.X=1;function u1a(a,d){N(a,d+4,d)}u1a.X=1;function xr(a,d){var e;bX(a);c[a]=d_+2;e=a+1;WY(e);WY(e+10);c[a+39]=0;c[a+40]=1;c[a+38]=(0!=(d|0)?0:1)&1;k[a+25]=0;c[a+26]=0;c[a+31]=0;c[a+27]=1;c[a+28]=0;c[a+29]=10;c[a+30]=1;c[a+32]=0;c[a+33]=0;k[a+34]=0;0!=(d|0)?e=d:(e=Ue(76,16),0==(e|0)?e=0:dX(e));c[a+24]=e;c[a+37]=0;c[a+35]=0;e=c[a+36]=0;for(var f=a+21;;){c[f+e]=0;var g=e+1;e=g;if(!(2>=(g|0))){break}}}xr.X=1;function v1a(a){w1a(a);xe(a)}v1a.X=1;function x1a(a,d,e,f,g,h,i,j,l){var m=b;b+=11;var n=m+8;$7=f;$11=j;$12=l;f=r1a(0,Ue(64,16));PH(f,d,e,g,h,i);QY(m,d,e);c[f+16]=c[a+26];d=a+37;e=c[d]+1;c[d]=e;c[f+4]=e;c[f+13]=XY(a+1,m,f);c_(f,a+c[a+26]+21);c[a+39]&1||(e_(n,a),c[n+2]=f,RY(a+1,c[a+1],m,n),RY(a+11,c[a+11],m,n));b=m;return f}x1a.X=1;function y1a(){}y1a.X=1;function z1a(a,d,e){var f=a+1;2==(c[d+16]|0)?$Y(f+10,c[d+13]):$Y(f,c[d+13]);f_(d,a+c[d+16]+21);f=c[a+24];v[c[c[f]+4]](f,d,e);yh(d);c[a+40]=1}z1a.X=1;function w1a(a){c[a]=d_+2;if(c[a+38]&1){var d=c[a+24];v[c[c[d]]](d);yh(c[a+24])}a=a+21-10;aZ(a);aZ(a-10)}w1a.X=1;function f_(a,d){var e=c[a+15];0!=(c[a+14]|0)?c[c[a+14]+15]=e:c[d]=e;0!=(c[a+15]|0)&&(c[c[a+15]+14]=c[a+14])}f_.X=1;function A1a(a,d,e,f){$1=a;a=d+5;c[e]=c[a];k[e]=k[a];c[e+1]=c[a+1];k[e+1]=k[a+1];c[e+2]=c[a+2];k[e+2]=k[a+2];c[e+3]=c[a+3];k[e+3]=k[a+3];d+=9;c[f]=c[d];k[f]=k[d];c[f+1]=c[d+1];k[f+1]=k[d+1];c[f+2]=c[d+2];k[f+2]=k[d+2];c[f+3]=c[d+3];k[f+3]=k[d+3]}A1a.X=1;function B1a(a,d,e,f,g,h){var i=b;b+=2;C1a(i,f);D1a(a+1,c[a+1],d,e,f+1,f+5,k[f+8],g,h,i);D1a(a+11,c[a+11],d,e,f+1,f+5,k[f+8],g,h,i);b=i}B1a.X=1;function E1a(){}E1a.X=1;function F1a(a,d,e,f){var g=b;b+=10;var h=g+2;G1a(g,f);QY(h,d,e);RY(a+1,c[a+1],h,g);RY(a+11,c[a+11],h,g);b=g}F1a.X=1;function H1a(){}H1a.X=1;function I1a(a,d,e,f,g){var h=b;b+=28;var i=h+8,j=h+12,l=h+16,m=h+20,n=h+24,p=h+25;$6=g;QY(h,e,f);g=0;if(2==(c[d+16]|0)){$Y(a+11,c[d+13]),c[d+13]=XY(a+1,h,d),g=1}else{var r=a+32;c[r]+=1;TY(c[d+13],h)?(N(i,e,d+5),N(m,d+9,d+5),k[n]=2,wC(l,m,n),Q(j,l,a+25),0>k[i]&&(k[j]=-k[j]),0>k[i+1]&&(k[j+1]=-k[j+1]),0>k[i+2]&&(k[j+2]=-k[j+2]),f1a(a+1,c[d+13],h,j,.05000000074505806)&&(g=a+33,c[g]+=1,g=1)):(ZY(a+1,c[d+13],h),g=a+33,c[g]+=1,g=1)}f_(d,a+c[d+16]+21);i=d+5;c[i]=c[e];k[i]=k[e];c[i+1]=c[e+1];k[i+1]=k[e+1];c[i+2]=c[e+2];k[i+2]=k[e+2];c[i+3]=c[e+3];k[i+3]=k[e+3];e=d+9;c[e]=c[f];k[e]=k[f];c[e+1]=c[f+1];k[e+1]=k[f+1];c[e+2]=c[f+2];k[e+2]=k[f+2];c[e+3]=c[f+3];k[e+3]=k[f+3];c[d+16]=c[a+26];c_(d,a+c[a+26]+21);g&1&&(c[a+40]=1,c[a+39]&1||(e_(p,a),g_(a+11,c[a+11],c[d+13],p),g_(a+1,c[a+1],c[d+13],p)));b=h}I1a.X=1;function D1a(a,d,e,f,g,h,i,j,l,m){var n=b;b+=28;var p=n+4,r=n+9,s=n+10,t=n+18,w=n+22,x=n+26,y=n+27;$1=a;$4=f;if(0!=(d|0)){a=1;f=126;oY(p);c[r]=0;pY(p,128,r);c[qY(p,0)]=d;for(d=s+4;;){a=r=a-1;r=c[qY(p,r)];N(t,r,l);c[s]=c[t];k[s]=k[t];c[s+1]=c[t+1];k[s+1]=k[t+1];c[s+2]=c[t+2];k[s+2]=k[t+2];c[s+3]=c[t+3];k[s+3]=k[t+3];N(w,r+4,j);c[d]=c[w];k[d]=k[w];c[d+1]=c[w+1];k[d+1]=k[w+1];c[d+2]=c[w+2];k[d+2]=k[w+2];c[d+3]=c[w+3];k[d+3]=k[w+3];k[x]=1;$result1=0;var z=rY(e,g,h,s,x,0,i)&1;$result1=z;if(0!=(z|0)){if(sY(r)){(a|0)>(f|0)&&(f=tY(p)<<1,c[y]=0,pY(p,f,y),f=tY(p)-2);var z=c[r+9],A=a,a=A+1;c[qY(p,A)]=z;r=c[r+10];z=a;a=z+1;c[qY(p,z)]=r}else{z=m,v[c[c[z]+3]](z,r)}}if(0==(a|0)){break}}uY(p)}b=n}D1a.X=1;function g_(a,d,e,f){var g=b;b+=30;var h,i,j=g+2,l=g+4,m=g+6,n=g+8,p=g+10,r=g+12,s=g+14,t=g+16,w=g+18,x=g+20,y=g+22,z=g+24,A=g+26,C=g+28,B=0!=(d|0);a:do{if(B&&0!=(e|0)){h=1;i=124;J1a(a+5,128,g);var K=h_(a+5,0);i_(j,d,e);var E=K,G=j;c[E]=c[G];k[E]=k[G];c[E+1]=c[G+1];k[E+1]=k[G+1];for(var M=a+5,L=l,F=a+5,I=a+5,R=a+5,O=l,Z=l+1,P=l,S=a+5,da=l,V=l,ba=n,$=a+5,Y=l,la=l,ka=p,ja=a+5,ea=l,ca=l,W=r,U=l+1,X=l,ma=l+1,ga=a+5,ha=l,ta=l+1,ra=s,ua=a+5,za=l,Za=l+1,ib=t,Ca=a+5,Sa=l,mb=l+1,Oa=w,Pa=a+5,fc=l,jb=l+1,La=x,fb=y,Rb=a+5,pb=l,Sb=l+1,ab=z,Ib=a+5,Fc=l,Ac=l+1,ob=A,Gc=a+5,Yc=l,Cc=l+1,Ub=C,Uc=l,nd=l+1;;){var Ic=h-1;h=Ic;var tc=h_(M,Ic);c[L]=c[tc];k[L]=k[tc];c[L+1]=c[tc+1];k[L+1]=k[tc+1];(h|0)>(i|0)&&(J1a(F,MZ(I)<<1,m),i=MZ(R)-4);var hd=c[P];if((c[O]|0)==(c[Z]|0)){if(sY(hd)){var Tb=h;h=Tb+1;var Jc=h_(S,Tb);i_(n,c[c[da]+9],c[c[V]+9]);var ub=Jc;c[ub]=c[ba];k[ub]=k[ba];c[ub+1]=c[ba+1];k[ub+1]=k[ba+1];var uc=h;h=uc+1;var Kc=h_($,uc);i_(p,c[c[Y]+10],c[c[la]+10]);var gb=Kc;c[gb]=c[ka];k[gb]=k[ka];c[gb+1]=c[ka+1];k[gb+1]=k[ka+1];var gc=h;h=gc+1;var Lc=h_(ja,gc);i_(r,c[c[ea]+9],c[c[ca]+10]);var Dc=Lc;c[Dc]=c[W];k[Dc]=k[W];c[Dc+1]=c[W+1];k[Dc+1]=k[W+1]}}else{if(TY(hd,c[U])){var Eb=sY(c[ma]);if(sY(c[X])){var Ra=h;h=Ra+1;var qb=h_(ga,Ra),Ab=c[c[ha]+9],hc=c[ta];if(Eb){i_(s,Ab,c[hc+9]);var Hc=qb;c[Hc]=c[ra];k[Hc]=k[ra];c[Hc+1]=c[ra+1];k[Hc+1]=k[ra+1];var ic=h;h=ic+1;var db=h_(ua,ic);i_(t,c[c[za]+10],c[c[Za]+9]);var bb=db;c[bb]=c[ib];k[bb]=k[ib];c[bb+1]=c[ib+1];k[bb+1]=k[ib+1];var id=h;h=id+1;var Zc=h_(Ca,id);i_(w,c[c[Sa]+9],c[c[mb]+10]);var vb=Zc;c[vb]=c[Oa];k[vb]=k[Oa];c[vb+1]=c[Oa+1];k[vb+1]=k[Oa+1];var rb=h;h=rb+1;var vc=h_(Pa,rb);i_(x,c[c[fc]+10],c[c[jb]+10]);var Qc=vc;c[Qc]=c[La];k[Qc]=k[La];c[Qc+1]=c[La+1];k[Qc+1]=k[La+1]}else{i_(y,Ab,hc);var Rc=qb;c[Rc]=c[fb];k[Rc]=k[fb];c[Rc+1]=c[fb+1];k[Rc+1]=k[fb+1];var Xd=h;h=Xd+1;var Sc=h_(Rb,Xd);i_(z,c[c[pb]+10],c[Sb]);var Mc=Sc;c[Mc]=c[ab];k[Mc]=k[ab];c[Mc+1]=c[ab+1];k[Mc+1]=k[ab+1]}}else{if(Eb){var $c=h;h=$c+1;var Cd=h_(Ib,$c);i_(A,c[Fc],c[c[Ac]+9]);var wc=Cd;c[wc]=c[ob];k[wc]=k[ob];c[wc+1]=c[ob+1];k[wc+1]=k[ob+1];var Bb=h;h=Bb+1;var fd=h_(Gc,Bb);i_(C,c[Yc],c[c[Cc]+10]);var ad=fd;c[ad]=c[Ub];k[ad]=k[Ub];c[ad+1]=c[Ub+1];k[ad+1]=k[Ub+1]}else{var wd=f;v[c[c[wd]+2]](wd,c[Uc],c[nd])}}}}if(0==(h|0)){break a}}}}while(0);b=g}g_.X=1;function Nr(a,d,e,f,g){var h=b;b+=11;var i=h+8;$6=g;QY(h,e,f);2==(c[d+16]|0)?($Y(a+11,c[d+13]),c[d+13]=XY(a+1,h,d)):(g=a+32,c[g]+=1,ZY(a+1,c[d+13],h),g=a+33,c[g]+=1);f_(d,a+c[d+16]+21);g=d+5;c[g]=c[e];k[g]=k[e];c[g+1]=c[e+1];k[g+1]=k[e+1];c[g+2]=c[e+2];k[g+2]=k[e+2];c[g+3]=c[e+3];k[g+3]=k[e+3];e=d+9;c[e]=c[f];k[e]=k[f];c[e+1]=c[f+1];k[e+1]=k[f+1];c[e+2]=c[f+2];k[e+2]=k[f+2];c[e+3]=c[f+3];k[e+3]=k[f+3];c[d+16]=c[a+26];c_(d,a+c[a+26]+21);c[a+40]=1;c[a+39]&1||(e_(i,a),g_(a+11,c[a+11],c[d+13],i),g_(a+1,c[a+1],c[d+13],i));b=h}Nr.X=1;function K1a(a,d){Hr(a,d);zr(a,d)}K1a.X=1;function Hr(a,d){var e=b;b+=18;var f,g=e+1,h=e+2,i=e+5,j=e+13,l=e+16,m=e+17,n,p;T0a(a+1,((c[a+28]*c[a+4]|0)/100&-1)+1);0!=(c[a+31]|0)&&(f=((c[a+27]*c[a+14]|0)/100&-1)+1,T0a(a+11,((c[a+27]*c[a+14]|0)/100&-1)+1),c[e]=0,c[g]=c[a+31]-f,c[a+31]=c[a_(e,g)]);c[a+26]=(c[a+26]+1|0)%2;f=g=c[a+c[a+26]+21];if(0!=(g|0)){e_(h,a);for(var g=a+21,r=a+23,s=a+1,t=a+11;!(h=c[f+15],f_(f,g+c[f+16]),c_(f,r),$Y(s,c[f+13]),QY(i,f+5,f+9),c[f+13]=XY(t,i,f),c[f+16]=2,f=h,0==(f|0));){}c[a+31]=c[a+14];c[a+40]=1}e_(j,a);c[a+39]&1&&g_(a+1,c[a+1],c[a+11],j);c[a+39]&1&&g_(a+1,c[a+1],c[a+1],j);i=c[a+40]&1;do{if(i&&(j=c[a+24],j=v[c[c[j]+7]](j),0<(jX(j)|0))){c[l]=jX(j);c[m]=(c[a+29]*jX(j)|0)/100&-1;f=c[L1a(l,a_(a+30,m))];h=0;g=(h|0)<(f|0);r=j;a:do{if(g){s=a+36;t=a+24;for(p=r;;){n=lX(p,(h+c[s]|0)%(jX(j)|0));p=c[n];n=c[n+1];if(!TY(c[p+13],c[n+13])){var w=c[t];v[c[c[w]+3]](w,p,n,d);f-=1;h-=1}h+=1;p=j;if((h|0)>=(f|0)){var x=p;break a}}}else{x=r}}while(0);h=a+36;0<(jX(x)|0)?c[a+36]=(f+c[h]|0)%(jX(j)|0):c[h]=0}}while(0);l=a+35;c[l]+=1;c[a+30]=1;c[a+40]=0;k[a+34]=0>>0?(c[a+33]>>>0)/(c[a+32]>>>0):0;l=a+33;c[l]=Math.floor((c[l]>>>0)/2);l=a+32;c[l]=Math.floor((c[l]>>>0)/2);b=e}Hr.X=1;function M1a(){}M1a.X=1;function L1a(a,d){return(c[a]|0)<(c[d]|0)?a:d}L1a.X=1;function N1a(a){return c[a+24]}N1a.X=1;function O1a(a){return c[a+24]}O1a.X=1;function P1a(a){return 0==(c[a]|0)}P1a.X=1;function h_(a,d){return(d<<1)+c[a+3]}h_.X=1;function i_(a,d,e){c[a]=d;c[a+1]=e}i_.X=1;function Q1a(a){return c[a+2]}Q1a.X=1;function zr(a,d){var e=b;b+=8;var f,g,h,i,j,l=e+4;f=c[a+24];if(v[c[c[f]+14]](f)){f=c[a+24];f=v[c[c[f]+7]](f);iX(f);g=0;Az(e);c[e]=0;c[e+1]=0;h=c[e+2]=0;var m=(h|0)<(jX(f)|0);a:do{if(m){var n=e,p=a+24;for(i=f;;){i=lX(i,h);j=mX(i,e)&1;var r=i;c[n]=c[r];k[n]=k[r];c[n+1]=c[r+1];k[n+1]=k[r+1];c[n+2]=c[r+2];k[n+2]=k[r+2];c[n+3]=c[r+3];k[n+3]=k[r+3];j=j&1?1:TY(c[c[i]+13],c[c[i+1]+13])&1?0:1;j&1&&(j=c[p],v[c[c[j]+8]](j,i,d),c[i]=0,c[i+1]=0,g+=1);h+=1;i=f;if((h|0)>=(jX(f)|0)){var s=i;break a}}}else{s=f}}while(0);iX(s);s=jX(f)-g;Az(l);kX(f,s,l)}b=e}zr.X=1;function Kr(a){W0a(a+1,128);W0a(a+11,128)}Kr.X=1;function R1a(a,d,e){var f=b;b+=23;var g=f+8,h=f+16,i=f+20,j=f+21,l=f+22,m=P1a(a+11);P1a(a+1)?m?(k[i]=0,k[j]=0,k[l]=0,H(h,i,j,l),S1a(g,h,0),c[f]=c[g],k[f]=k[g],c[f+1]=c[g+1],k[f+1]=k[g+1],c[f+2]=c[g+2],k[f+2]=k[g+2],c[f+3]=c[g+3],k[f+3]=k[g+3],c[f+4]=c[g+4],k[f+4]=k[g+4],c[f+5]=c[g+5],k[f+5]=k[g+5],c[f+6]=c[g+6],k[f+6]=k[g+6],c[f+7]=c[g+7],k[f+7]=k[g+7]):(a=c[a+11],c[f]=c[a],k[f]=k[a],c[f+1]=c[a+1],k[f+1]=k[a+1],c[f+2]=c[a+2],k[f+2]=k[a+2],c[f+3]=c[a+3],k[f+3]=k[a+3],c[f+4]=c[a+4],k[f+4]=k[a+4],c[f+5]=c[a+5],k[f+5]=k[a+5],c[f+6]=c[a+6],k[f+6]=k[a+6],c[f+7]=c[a+7],k[f+7]=k[a+7]):(g=c[a+1],m?(c[f]=c[g],k[f]=k[g],c[f+1]=c[g+1],k[f+1]=k[g+1],c[f+2]=c[g+2],k[f+2]=k[g+2],c[f+3]=c[g+3],k[f+3]=k[g+3],c[f+4]=c[g+4],k[f+4]=k[g+4],c[f+5]=c[g+5],k[f+5]=k[g+5],c[f+6]=c[g+6],k[f+6]=k[g+6],c[f+7]=c[g+7],k[f+7]=k[g+7]):$Z(g,c[a+11],f));c[d]=c[f];k[d]=k[f];c[d+1]=c[f+1];k[d+1]=k[f+1];c[d+2]=c[f+2];k[d+2]=k[f+2];c[d+3]=c[f+3];k[d+3]=k[f+3];d=f+4;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3];b=f}R1a.X=1;function S1a(a,d,e){var f=b;b+=5;var g=f+1;k[f]=e;H(g,f,f,f);T1a(a,d,g);b=f}S1a.X=1;function U1a(a,d){var e;$2=d;var f=0!=(c[a+14]+c[a+4]|0);a:do{if(!f){JZ(a+1);JZ(a+11);c[a+39]=0;c[a+40]=1;c[a+26]=0;c[a+31]=0;c[a+27]=1;c[a+28]=0;c[a+29]=10;c[a+30]=1;e=a+32;c[e]=0;k[e]=0;c[e+1]=0;k[e+1]=0;c[e+2]=0;k[e+2]=0;c[e+3]=0;k[e+3]=0;c[e+4]=0;k[e+4]=0;c[e+5]=0;e=k[e+5]=0;for(var g=a+21;;){c[g+e]=0;var h=e+1;e=h;if(!(2>=(h|0))){break a}}}}while(0)}U1a.X=1;function T1a(a,d,e){var f=b;b+=8;var g=f+4;N(f,d,e);c[a]=c[f];k[a]=k[f];c[a+1]=c[f+1];k[a+1]=k[f+1];c[a+2]=c[f+2];k[a+2]=k[f+2];c[a+3]=c[f+3];k[a+3]=k[f+3];a+=4;wn(g,d,e);c[a]=c[g];k[a]=k[g];c[a+1]=c[g+1];k[a+1]=k[g+1];c[a+2]=c[g+2];k[a+2]=k[g+2];c[a+3]=c[g+3];k[a+3]=k[g+3];b=f}T1a.X=1;function J1a(a,d,e){var f,g;f=MZ(a);var h=(d|0)<(f|0);a:do{if(h){if(g=d,(g|0)<(f|0)){for(;;){if(g+=1,(g|0)>=(f|0)){break a}}}}else{if((d|0)>(MZ(a)|0)&&V1a(a,d),g=f,(g|0)<(d|0)){for(var i=a+3;;){var j=(g<<1)+c[i];if(0!=(j|0)){var l=e;c[j]=c[l];k[j]=k[l];c[j+1]=c[l+1];k[j+1]=k[l+1]}g+=1;if((g|0)>=(d|0)){break a}}}}}while(0);c[a+1]=d}J1a.X=1;function V1a(a,d){var e;(Q1a(a)|0)<(d|0)&&(e=W1a(a,d),X1a(a,0,MZ(a),e),G0a(a,0,MZ(a)),H0a(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}V1a.X=1;function W1a(a,d){return 0!=(d|0)?Y1a(a,d,0):0}W1a.X=1;function X1a(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=(d<<1)+f;if(0!=(i|0)){var j=(d<<1)+c[h];c[i]=c[j];k[i]=k[j];c[i+1]=c[j+1];k[i+1]=k[j+1]}d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}X1a.X=1;function Y1a(a,d,e){$1=a;$3=e;return Ue(d<<3,16)}Y1a.X=1;function G1a(a,d){HY(a);c[a]=Z1a+2;c[a+1]=d}G1a.X=1;function $1a(a){xe(a)}$1a.X=1;function a2a(a,d){var e=c[a+1];v[c[c[e]+2]](e,c[d+9])}a2a.X=1;function C1a(a,d){HY(a);c[a]=b2a+2;c[a+1]=d}C1a.X=1;function c2a(a){xe(a)}c2a.X=1;function d2a(a,d){var e=c[a+1];v[c[c[e]+2]](e,c[d+9])}d2a.X=1;function e_(a,d){HY(a);c[a]=e2a+2;c[a+1]=d}e_.X=1;function f2a(a){xe(a)}f2a.X=1;function g2a(a,d,e){if((d|0)!=(e|0)){var f=c[c[a+1]+24];v[c[c[f]+2]](f,c[d+9],c[e+9]);a=c[a+1]+30;c[a]+=1}}g2a.X=1;function h2a(a,d){v[c[c[a]+2]](a,d,c[c[a+2]+13])}h2a.X=1;function i2a(a){c[a]=j2a+2}i2a.X=1;function Ij(a,d){var e=b;b+=4;var f,g=e+1,h=e+2,i=e+3;i2a(a);c[a]=j_+2;f=Ue(360,16);0==(f|0)?f=0:gY(f);c[a+8]=f;0!=(c[d+7]|0)?(f=Ue(4,16),0==(f|0)?f=0:vY(f)):(f=Ue(4,16),0==(f|0)?f=0:k2a(f));c[a+9]=f;f=Ue(24,16);0==(f|0)?f=0:UXa(f,c[a+8],c[a+9]);c[a+10]=f;f=Ue(8,16);0==(f|0)?f=0:l2a(f);c[a+11]=f;f=Ue(8,16);0==(f|0)?f=0:m2a(f);c[a+12]=f;f=Ue(8,16);0==(f|0)?f=0:n2a(f);c[a+13]=f;f=Ue(8,16);0==(f|0)?f=0:o2a(f);c[a+14]=f;f=Ue(8,16);0==(f|0)?f=0:p2a(f);c[a+15]=f;f=Ue(8,16);0==(f|0)?f=0:q2a(f);c[a+16]=f;f=Ue(8,16);0==(f|0)?f=0:r2a(f);c[a+18]=f;f=Ue(8,16);0==(f|0)?f=0:r2a(f);c[a+19]=f;c[c[a+19]+1]=1;f=Ue(8,16);0==(f|0)?f=0:s2a(f);c[a+17]=f;f=Ue(16,16);0==(f|0)?f=0:t2a(f);c[a+21]=f;f=Ue(16,16);0==(f|0)?f=0:t2a(f);c[a+20]=f;c[c[a+20]+1]=1;c[e]=36;c[g]=80;c[h]=44;$sl=76;c[i]=c[a_(e,d+5)];c[i]=c[a_(i,g)];c[i]=c[a_(i,h)];g=a+3;0!=(c[d]|0)?(c[g]=0,c[a+2]=c[d]):(c[g]=1,g=Ue(20,16),0==(g|0)?g=0:Om(g,c[d+6]),c[a+2]=g);g=a+5;0!=(c[d+1]|0)?(c[g]=0,c[a+4]=c[d+1]):(c[g]=1,g=Ue(20,16),0==(g|0)?g=0:u2a(g,1140,c[d+3]),c[a+4]=g);g=a+7;0!=(c[d+2]|0)?(c[g]=0,c[a+6]=c[d+2]):(c[g]=1,g=Ue(20,16),0==(g|0)?i=0:(u2a(g,c[i],c[d+4]),i=g),c[a+6]=i);b=e}Ij.X=1;function v2a(a){w2a(a);xe(a)}v2a.X=1;function w2a(a){c[a]=j_+2;c[a+3]&1&&(Lm(c[a+2]),Lm(c[a+2]),yh(c[a+2]));c[a+7]&1&&(x2a(c[a+6]),yh(c[a+6]));c[a+5]&1&&(x2a(c[a+4]),yh(c[a+4]));var d=c[a+10];v[c[c[d]]](d);yh(c[a+10]);d=c[a+11];v[c[c[d]]](d);yh(c[a+11]);d=c[a+12];v[c[c[d]]](d);yh(c[a+12]);d=c[a+13];v[c[c[d]]](d);yh(c[a+13]);d=c[a+14];v[c[c[d]]](d);yh(c[a+14]);d=c[a+15];v[c[c[d]]](d);yh(c[a+15]);d=c[a+16];v[c[c[d]]](d);yh(c[a+16]);d=c[a+18];v[c[c[d]]](d);yh(c[a+18]);d=c[a+19];v[c[c[d]]](d);yh(c[a+19]);d=c[a+17];v[c[c[d]]](d);yh(c[a+17]);d=c[a+21];v[c[c[d]]](d);yh(c[a+21]);d=c[a+20];v[c[c[d]]](d);yh(c[a+20]);yh(c[a+8]);d=c[a+9];v[c[c[d]]](d);yh(c[a+9])}w2a.X=1;function Nj(a,d,e){a=c[a+10];c[a+4]=d;c[a+5]=e}Nj.X=1;function y2a(a){return c[a+4]}y2a.X=1;function z2a(a){return c[a+6]}z2a.X=1;function A2a(a){return c[a+2]}A2a.X=1;function B2a(a){return c[a+8]}B2a.X=1;function C2a(a,d,e){var f,g;if(8==(d|0)){if(8==(e|0)){g=c[a+16],f=35}else{if(8!=(d|0)){var h=d;f=9}else{1!=(e|0)?f=8:(g=c[a+18],f=35)}}}else{f=8}8==f&&(h=d,f=9);a:do{if(9==f){g=1==(h|0);do{if(g&&8==(e|0)){g=c[a+19];break a}}while(0);g=0==(d|0);do{if(g&&0==(e|0)){g=c[a+17];break a}}while(0);g=yf(d);do{if(g&&28==(e|0)){g=c[a+21];break a}}while(0);g=yf(e);do{if(g&&28==(d|0)){g=c[a+20];break a}}while(0);g=yf(d);do{if(g&&yf(e)){g=c[a+10];break a}}while(0);g=yf(d);do{if(g&&Yf(e)){g=c[a+11];break a}}while(0);g=yf(e);do{if(g&&Yf(d)){g=c[a+12];break a}}while(0);g=He(d)?c[a+13]:He(e)?c[a+14]:c[a+15]}}while(0);return g}C2a.X=1;function x2a(a){yh(c[a+4])}x2a.X=1;function u2a(a,d,e){c[a]=d;c[a+1]=e;c[a+4]=Ue(c[a+1]*c[a],16);d=c[a+4];c[a+3]=d;c[a+2]=c[a+1];var e=c[a+1],f=e-1,e=f,f=0!=(f|0),g=d;a:do{if(f){for(var h=a,i=a,j=g;;){c[d]=j+c[h];var d=d+c[i],e=j=e-1,l=d;if(0==(j|0)){var m=l;break a}j=l}}else{m=g}}while(0);c[m]=0}u2a.X=1;function t2a(a){gM(a);c[a]=D2a+2;c[a+2]=1;c[a+3]=1}t2a.X=1;function E2a(){}E2a.X=1;function F2a(a){xe(a)}F2a.X=1;function G2a(a,d,e,f){var g=c[d],g=v[c[c[g]+14]](g,28),h=0==(g|0);c[a+1]&1?h?a=0:(zZ(g,0,d,e,f,1,c[a+2],c[a+3]),a=g):h?a=0:(zZ(g,0,d,e,f,0,c[a+2],c[a+3]),a=g);return a}G2a.X=1;function s2a(a){gM(a);c[a]=H2a+2}s2a.X=1;function I2a(){}I2a.X=1;function J2a(a){xe(a)}J2a.X=1;function K2a(a,d,e,f){$1=a;a=c[d];a=v[c[c[a]+14]](a,16);0==(a|0)?d=0:(sPa(a,0,d,e,f),d=a);return d}K2a.X=1;function r2a(a){gM(a);c[a]=L2a+2}r2a.X=1;function M2a(){}M2a.X=1;function N2a(a){xe(a)}N2a.X=1;function O2a(a,d,e,f){var g=c[d],g=v[c[c[g]+14]](g,20);0==(g|0)?a=0:(P2a(g,c[d+1],d,e,f,c[a+1]&1),a=g);return a}O2a.X=1;function q2a(a){gM(a);c[a]=Q2a+2}q2a.X=1;function R2a(){}R2a.X=1;function S2a(a){xe(a)}S2a.X=1;function T2a(a,d,e,f){$1=a;a=c[d];a=v[c[c[a]+14]](a,16);0==(a|0)?d=0:(Wj(a,0,d,e,f),d=a);return d}T2a.X=1;function p2a(a){gM(a);c[a]=U2a+2}p2a.X=1;function V2a(){}V2a.X=1;function W2a(a){xe(a)}W2a.X=1;function X2a(a,d,e,f){$1=a;$3=e;$4=f;a=c[d];a=v[c[c[a]+14]](a,8);0==(a|0)?d=0:(Y2a(a,d),d=a);return d}X2a.X=1;function o2a(a){gM(a);c[a]=Z2a+2}o2a.X=1;function $2a(){}$2a.X=1;function a3a(a){xe(a)}a3a.X=1;function b3a(a,d,e,f){$1=a;a=c[d];a=v[c[c[a]+14]](a,44);0==(a|0)?d=0:(NY(a,d,e,f,1),d=a);return d}b3a.X=1;function n2a(a){gM(a);c[a]=c3a+2}n2a.X=1;function d3a(){}d3a.X=1;function e3a(a){xe(a)}e3a.X=1;function f3a(a,d,e,f){$1=a;a=c[d];a=v[c[c[a]+14]](a,44);0==(a|0)?d=0:(NY(a,d,e,f,0),d=a);return d}f3a.X=1;function m2a(a){gM(a);c[a]=g3a+2}m2a.X=1;function h3a(){}h3a.X=1;function i3a(a){xe(a)}i3a.X=1;function j3a(){}j3a.X=1;function k3a(){}k3a.X=1;function l3a(){return 1}l3a.X=1;function m3a(){}m3a.X=1;function n3a(){}n3a.X=1;function o3a(){return D.se}o3a.X=1;function p3a(){}p3a.X=1;function q3a(a){return a+4}q3a.X=1;function k_(a,d){return c[a+3]+9*d}k_.X=1;function r3a(a,d,e,f){$1=a;a=c[d];a=v[c[c[a]+14]](a,80);0==(a|0)?d=0:(oZ(a,d,e,f,1),d=a);return d}r3a.X=1;function l2a(a){gM(a);c[a]=s3a+2}l2a.X=1;function t3a(){}t3a.X=1;function u3a(a){xe(a)}u3a.X=1;function v3a(a,d,e,f){$1=a;a=c[d];a=v[c[c[a]+14]](a,80);0==(a|0)?d=0:(oZ(a,d,e,f,0),d=a);return d}v3a.X=1;function k2a(a){QTa(a);c[a]=w3a+2}k2a.X=1;function x3a(){}x3a.X=1;function y3a(a){xe(a)}y3a.X=1;function z3a(a){xe(a)}z3a.X=1;function Y2a(a,d){ZW(a,d);c[a]=A3a+2}Y2a.X=1;function B3a(){}B3a.X=1;function C3a(a){xe(a)}C3a.X=1;function D3a(a){cZ(a);c[a]=E3a+2;c[a+1]=27}D3a.X=1;function F3a(a){xe(a)}F3a.X=1;function G3a(){}G3a.X=1;function H3a(a,d,e,f){var g=b;b+=15;var h=g+4,i=g+5,j=g+6,l=g+7,m=g+11;k[h]=v[c[c[a]+11]](a);k[i]=v[c[c[a]+11]](a);k[j]=v[c[c[a]+11]](a);H(g,h,i,j);N(l,d+12,g);c[e]=c[l];k[e]=k[l];c[e+1]=c[l+1];k[e+1]=k[l+1];c[e+2]=c[l+2];k[e+2]=k[l+2];c[e+3]=c[l+3];k[e+3]=k[l+3];wn(m,d+12,g);c[f]=c[m];k[f]=k[m];c[f+1]=c[m+1];k[f+1]=k[m+1];c[f+2]=c[m+2];k[f+2]=k[m+2];c[f+3]=c[m+3];k[f+3]=k[m+3];b=g}H3a.X=1;function I3a(a,d){var e=a+4;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}I3a.X=1;function J3a(a,d,e){var f=b;b+=9;l_(f,c[a+3]+9*d);for(var g=c[a+3]+9*e,d=c[a+3]+9*d,h=g+9;gk[d]?k[d]:k[a];k[a+1]=k[a+1]>k[d+1]?k[d+1]:k[a+1];k[a+2]=k[a+2]>k[d+2]?k[d+2]:k[a+2];k[a+4]=k[a+4]=(f|0)){break a}}}}else{if((d|0)>(n_(a)|0)&&L3a(a,d),g=f,(g|0)<(d|0)){for(var i=a+3;;){var j=c[i]+9*g;0!=(j|0)&&l_(j,e);g+=1;if((g|0)>=(d|0)){break a}}}}}while(0);c[a+1]=d}K3a.X=1;function M3a(a,d){var e,f;k[a]>k[d+4]?e=8:k[a+4]k[d+4+1]?e=8:k[a+4+1]k[d+4+2]?e=8:k[a+4+2]=(e|0)){break a}}}}while(0)}O3a.X=1;function P3a(a){return c[a+2]}P3a.X=1;function p_(a,d){(rW(a)|0)==(LKa(a)|0)&&OKa(a,N3a(a,rW(a)));var e=c[a+3]+c[a+1];0!=(e|0)&&(c[e]=c[d]);e=a+1;c[e]+=1}p_.X=1;function Q3a(a,d,e){var f=b;b+=32;var g=f+16;uw(f,d);WW(g,f,e);xi(f,g);d=f+12;c[a]=c[d];k[a]=k[d];c[a+1]=c[d+1];k[a+1]=k[d+1];c[a+2]=c[d+2];k[a+2]=k[d+2];c[a+3]=c[d+3];k[a+3]=k[d+3];Wb(a+4,f);R3a(a);b=f}Q3a.X=1;function L3a(a,d){var e;(P3a(a)|0)<(d|0)&&(e=S3a(a,d),T3a(a,0,n_(a),e),O3a(a,0,n_(a)),U3a(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}L3a.X=1;function l_(a,d){V3a(a,d);c[a+8]=c[d+8]}l_.X=1;function V3a(a,d){c[a]=c[d];k[a]=k[d];c[a+1]=c[d+1];k[a+1]=k[d+1];c[a+2]=c[d+2];k[a+2]=k[d+2];c[a+3]=c[d+3];k[a+3]=k[d+3];var e=a+4,f=d+4;c[e]=c[f];k[e]=k[f];c[e+1]=c[f+1];k[e+1]=k[f+1];c[e+2]=c[f+2];k[e+2]=k[f+2];c[e+3]=c[f+3];k[e+3]=k[f+3]}V3a.X=1;function S3a(a,d){return 0!=(d|0)?W3a(a,d,0):0}S3a.X=1;function T3a(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=f+9*d;0!=(i|0)&&l_(i,c[h]+9*d);d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}T3a.X=1;function U3a(a){0!=(c[a+3]|0)&&(c[a+4]&1&&X3a(a,c[a+3]),c[a+3]=0)}U3a.X=1;function X3a(a,d){$1=a;yh(d)}X3a.X=1;function W3a(a,d,e){$1=a;$3=e;return Ue(36*d,16)}W3a.X=1;function Y3a(a,d){$1=a;return 0!=(d|0)?d<<1:1}Y3a.X=1;function Z3a(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}Z3a.X=1;function $3a(a,d,e){c[a]=d;c[a+1]=e}$3a.X=1;function q_(a){return c[a+1]}q_.X=1;function a4a(a){return c[a+2]}a4a.X=1;function b4a(a,d){c[a]=c[d];c[a+1]=c[d+1]}b4a.X=1;function c4a(a,d,e){var f=b;b+=2;$3a(f,d,e);d4a(a,f);b=f}c4a.X=1;function d4a(a,d){(q_(a)|0)==(a4a(a)|0)&&e4a(a,Y3a(a,q_(a)));var e=(c[a+1]<<1)+c[a+3];0!=(e|0)&&b4a(e,d);e=a+1;c[e]+=1}d4a.X=1;function e4a(a,d){var e;(a4a(a)|0)<(d|0)&&(e=f4a(a,d),g4a(a,0,q_(a),e),Z3a(a,0,q_(a)),h4a(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}e4a.X=1;function f4a(a,d){return 0!=(d|0)?i4a(a,d,0):0}f4a.X=1;function g4a(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=(d<<1)+f;0!=(i|0)&&b4a(i,(d<<1)+c[h]);d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}g4a.X=1;function h4a(a){0!=(c[a+3]|0)&&(c[a+4]&1&&j4a(a,c[a+3]),c[a+3]=0)}h4a.X=1;function j4a(a,d){$1=a;yh(d)}j4a.X=1;function i4a(a,d,e){$1=a;$3=e;return Ue(d<<3,16)}i4a.X=1;function k4a(a,d,e,f){var g=b;b+=20;var h,i,j=g+4,l=g+8,m=g+12,n=g+16,p,r,s,t,f=f&1;l4a(a,l,g);l4a(d,m,j);for(d=a=0;;){if(3<=(d|0)){h=7;break}k[n+a]=J((a<<2)+(e+4),m)+k[e+a]-k[l+a];d=J((a<<2)+(e+16),j)+k[g+a];if(sc(k[n+a])>d){i=0;h=22;break}a=d=a+1}a:do{if(7==h){for(d=a=0;3>(d|0);){d=m4a(e+4,n,a);p=m4a(e+16,g,a)+k[j+a];if(sc(d)>p){i=0;break a}a=d=a+1}a=f&1;b:do{if(a){d=a=0;c:for(;;){if(3<=(d|0)){break b}l=(a+1|0)%3;m=(a+2|0)%3;r=0==(a|0)?1:0;s=2==(a|0)?1:2;for(d=i=0;3>(d|0);){p=2==(i|0)?1:2;t=0==(i|0)?1:0;d=k[n+m]*k[(l<<2)+(e+4)+i]-k[n+l]*k[(m<<2)+(e+4)+i];p=k[g+r]*k[(s<<2)+(e+16)+i]+k[g+s]*k[(r<<2)+(e+16)+i]+k[j+t]*k[(a<<2)+(e+16)+p]+k[j+p]*k[(a<<2)+(e+16)+t];if(sc(d)>p){break c}i=d=i+1}a=d=a+1}i=0;break a}}while(0);i=1}}while(0);b=g;return i}k4a.X=1;function n4a(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}n4a.X=1;function l4a(a,d,e){var f=b;b+=13;var g=f+4,h=f+8,i=f+9;wn(g,a+4,a);k[h]=.5;Q(f,g,h);c[d]=c[f];k[d]=k[f];c[d+1]=c[f+1];k[d+1]=k[f+1];c[d+2]=c[f+2];k[d+2]=k[f+2];c[d+3]=c[f+3];k[d+3]=k[f+3];N(i,a+4,d);c[e]=c[i];k[e]=k[i];c[e+1]=c[i+1];k[e+1]=k[i+1];c[e+2]=c[i+2];k[e+2]=k[i+2];c[e+3]=c[i+3];k[e+3]=k[i+3];b=f}l4a.X=1;function m4a(a,d,e){return k[d]*k[0+a+e]+k[d+1]*k[4+a+e]+k[d+2]*k[8+a+e]}m4a.X=1;function R3a(a){var d,e;d=0;for(var f=a+4,a=a+16;;){for(e=0;;){var g=sc(k[(d<<2)+f+e])+9.999999974752427e-7;k[(d<<2)+a+e]=g;e=g=e+1;if(3<=(g|0)){break}}d=e=d+1;if(3<=(e|0)){break}}}R3a.X=1;function o4a(a){O3a(a,0,n_(a));U3a(a);n4a(a)}o4a.X=1;function p4a(a,d,e,f){aX(a,d,e,f);c[a]=r_+2;c[a+3]=0;c[a+2]=0}p4a.X=1;function q4a(a){r4a(a);xe(a)}q4a.X=1;function r4a(a){c[a]=r_+2;s4a(a)}r4a.X=1;function s4a(a){t4a(a);u4a(a);a+=6;c[a]=-1;k[a]=-1;c[a+1]=-1;k[a+1]=-1;c[a+2]=-1;k[a+2]=-1;c[a+3]=-1;k[a+3]=-1}s4a.X=1;function s_(a,d,e,f,g,h){var i=c[a+4];v[c[c[i]+2]](i,c[a+7],c[a+6]);i=c[a+4];v[c[c[i]+3]](i,c[a+9],c[a+8]);v4a(a,d,e);a=c[a+4];v[c[c[a]+4]](a,g,f,h)}s_.X=1;function v4a(a,d,e){0==(t_(a)|0)&&w4a(a,d,e);fI(c[a+4],t_(a))}v4a.X=1;function x4a(a,d,e,f,g){var h,i;h=bi(d);i=bi(e);hi(d,f);hi(e,g);f=y4a(a,d,e);g=c[a+4];v[c[c[g]+2]](g,c[a+7],c[a+6]);g=c[a+4];v[c[c[g]+3]](g,c[a+9],c[a+8]);v[c[c[f]+2]](f,d,e,c[a+5],c[a+4]);v[c[c[f]]](f);a=c[a+1];v[c[c[a]+15]](a,f);hi(d,h);hi(e,i)}x4a.X=1;function y4a(a,d,e){v4a(a,d,e);var f=c[a+1];return v[c[c[f]+2]](f,d,e,t_(a))}y4a.X=1;function z4a(a,d,e,f,g){var h,i;h=bi(d);i=bi(e);hi(d,f);hi(e,g);f=c[a+4];v[c[c[f]+2]](f,c[a+7],c[a+6]);f=c[a+4];v[c[c[f]+3]](f,c[a+9],c[a+8]);A4a(a,d,e);f=c[a+2];v[c[c[f]+2]](f,d,e,c[a+5],c[a+4]);hi(d,h);hi(e,i)}z4a.X=1;function A4a(a,d,e){0==(c[a+2]|0)&&(c[a+2]=y4a(a,d,e))}A4a.X=1;function B4a(a,d,e,f,g,h){var i=b;b+=16;var j=i+8,l,m;$1=a;u_(f)?u_(g)?(C4a(f+17,d,g+17,e,h),a=12):a=5:a=5;a:do{if(5==a){l=f;var n=v[c[c[l]+21]](l);l=n-1;if(0!=(n|0)){for(var n=i,p=i+4,r=j,s=j+4;;){m=f;v[c[c[m]+29]](m,l,d,n,p);m=g;var t=v[c[c[m]+21]](m);m=t-1;t=0!=(t|0);b:do{if(t){for(;;){var w=g;v[c[c[w]+29]](w,l,e,r,s);M3a(j,i)&&c4a(h,l,m);w=m;m=w-1;if(0==(w|0)){break b}}}}while(0);m=l;l=m-1;if(0==(m|0)){break a}}}}}while(0);b=i}B4a.X=1;function u_(a){return 0==(c[a+17]|0)?0:1}u_.X=1;function D4a(a,d,e,f,g,h){var i=b;b+=33;var j=i+8,l=i+24,m=i+32;$1=a;a=u_(f);a:do{if(a){uw(j,d);E4a(j,e);var n=g;v[c[c[n]+2]](n,j,i,i+4);F4a(f+17,i,h)}else{if(n=g,v[c[c[n]+2]](n,e,i,i+4),n=f,n=v[c[c[n]+21]](n),c[m]=n-1,0!=(n|0)){for(var n=l,p=l+4;;){var r=f;v[c[c[r]+29]](r,c[m],d,n,p);M3a(i,l)&&p_(h,m);r=c[m];c[m]=r-1;if(0==(r|0)){break a}}}}}while(0);b=i}D4a.X=1;function E4a(a,d){var e=b;b+=4;Bo(e,a,d+12);xn(a+12,e);ld(a,d);b=e;return a}E4a.X=1;function G4a(a){EX(a)}G4a.X=1;function H4a(a,d,e,f,g,h,i){var j=b;b+=138;var l=j+16,m=j+32,n=j+50,p=j+68,r;sQ(j,d+1);sQ(l,e+1);v_(m);v_(n);v[c[c[f]+27]](f);v[c[c[g]+27]](g);var s=i,i=s-1,s=0!=(s|0);a:do{if(s){for(var t=a+6,w=a+8,x=a+6,y=a+8,z=p+1,A=p+6,C=p+2,B=p;;){c[t]=c[h];c[w]=c[h+1];h+=2;w_(f,c[x],m);w_(g,c[y],n);I4a(m,j);I4a(n,l);J4a(m);J4a(n);var K=K4a(m,n);b:do{if(K&&L4a(m,n,p)){var E=c[z];r=E-1;if(0!=(E|0)){for(;;){if(s_(a,d,e,(r<<2)+A,C,-k[B]),E=r,r=E-1,0==(E|0)){break b}}}}}while(0);r=i;i=r-1;if(0==(r|0)){break a}}}}while(0);v[c[c[f]+28]](f);v[c[c[g]+28]](g);b=j}H4a.X=1;function w_(a,d,e){a=v[c[c[a]+20]](a);v[c[c[a]+5]](a,d,e)}w_.X=1;function I4a(a,d){var e=b;b+=12;var f=e+4,g=e+8;vw(e,d,a);c[a]=c[e];k[a]=k[e];c[a+1]=c[e+1];k[a+1]=k[e+1];c[a+2]=c[e+2];k[a+2]=k[e+2];c[a+3]=c[e+3];k[a+3]=k[e+3];vw(f,d,a+4);var h=a+4;c[h]=c[f];k[h]=k[f];c[h+1]=c[f+1];k[h+1]=k[f+1];c[h+2]=c[f+2];k[h+2]=k[f+2];c[h+3]=c[f+3];k[h+3]=k[f+3];vw(g,d,a+8);f=a+8;c[f]=c[g];k[f]=k[g];c[f+1]=c[g+1];k[f+1]=k[g+1];c[f+2]=c[g+2];k[f+2]=k[g+2];c[f+3]=c[g+3];k[f+3]=k[g+3];b=e}I4a.X=1;function J4a(a){var d=b;b+=13;var e=d+4,f=d+8,g=d+12;N(e,a+4,a);N(f,a+8,a);qn(d,e,f);IB(d);k[g]=J(a,d);$B(a+12,d,d+1,d+2,g);b=d}J4a.X=1;function M4a(a,d){return(d<<1)+c[a+3]}M4a.X=1;function x_(a){return y_(a+37)}x_.X=1;function z_(a,d){return c[A_(a+37,d)]}z_.X=1;function B_(a,d){var e=c[a+73];return v[c[c[e]]](e,d)}B_.X=1;function C_(a,d,e,f,g){var h=b;b+=249;var i,j=h+16,l=h+32,m=h+37,n=h+111,p,r,s,t,w=h+185,x=h+201,y=h+217,z=h+233,A=2==(v[c[c[f]+19]](f)|0);a:do{if(A){if(i=f,c[a+7]=x_(i),p=a+7,r=c[p],c[p]=r-1,0!=(r|0)){for(r=a+7;;){if(C_(a,d,e,z_(i,c[r]),g),s=c[p],c[p]=s-1,0==(s|0)){break a}}}}else{if(i=g,2==(v[c[c[i]+19]](i)|0)){if(i=g,c[a+9]=x_(i),p=a+9,r=c[p],c[p]=r-1,0!=(r|0)){for(r=a+9;;){if(C_(a,d,e,f,z_(i,c[r])),s=c[p],c[p]=s-1,0==(s|0)){break a}}}}else{sQ(h,d+1);sQ(j,e+1);N4a(l);B4a(a,h,j,f,g,l);i=0==(q_(l)|0);b:do{if(i){$8=1}else{p=f;p=1==(v[c[c[p]+19]](p)|0);do{if(p&&(r=g,1==(v[c[c[r]+19]](r)|0))){H4a(a,d,e,f,g,M4a(l,0),q_(l));$8=1;break b}}while(0);p=f;v[c[c[p]+27]](p);p=g;v[c[c[p]+27]](p);D_(m,f);D_(n,g);p=f;p=v[c[c[p]+22]](p)&1;r=g;r=v[c[c[r]+22]](r)&1;var C=l,B=a+6,K=a+8,E=a+6,G=a+8,M=a+6,L=a+8;for(t=q_(l);;){s=t-1;if(0==(t|0)){break}t=M4a(C,s);c[B]=c[t];c[K]=c[t+1];t=B_(m,c[E]);if(p&1){var F=f;v[c[c[F]+32]](x,F,c[M]);WW(w,h,x);Ji(d,w)}r&1&&(F=g,v[c[c[F]+32]](z,F,c[L]),WW(y,j,z),Ji(e,y));z4a(a,d,e,t,B_(n,c[G]));p&1&&Ji(d,h);r&1&&Ji(e,j);t=s}p=f;v[c[c[p]+28]](p);p=g;v[c[c[p]+28]](p);E_(n);E_(m);$8=0}}while(0);O4a(l)}}}while(0);b=h}C_.X=1;function F_(a,d,e,f,g,h){var i=b;b+=143;var j,l,m=i+16,n=i+32,p=i+37,r,s,t=i+111,w=i+127,h=h&1,x=2==(v[c[c[f]+19]](f)|0);a:do{if(x){j=f;l=h&1?a+9:a+7;c[l]=x_(j);var y=l,z=c[y];c[y]=z-1;if(0!=(z|0)){for(;;){if(F_(a,d,e,z_(j,c[l]),g,h&1),y=l,z=c[y],c[y]=z-1,0==(z|0)){break a}}}}else{j=1==(v[c[c[f]+19]](f)|0);do{if(j&&28==(Ie(g)|0)){P4a(a,d,e,f,g,h&1);break a}}while(0);j=g;if(Ge(g)){Q4a(a,d,e,f,j,h&1)}else{if(Uf(j)){R4a(a,d,e,f,g,h&1)}else{sQ(i,d+1);sQ(m,e+1);vW(n);D4a(a,i,m,f,g,n);if(0==(rW(n)|0)){$9=1}else{j=f;v[c[c[j]+27]](j);D_(p,f);j=f;j=v[c[c[j]+22]](j)&1;y=a+8;z=a+6;for(r=rW(n);;){l=r-1;if(0==(r|0)){break}s=r=c[QV(n,l)];h&1?c[y]=s:c[z]=s;s=B_(p,r);if(j&1){var A=f;v[c[c[A]+32]](w,A,r);WW(t,i,w);Ji(d,t)}h&1?x4a(a,e,d,g,s):x4a(a,d,e,s,g);j&1&&Ji(d,i);r=l}j=f;v[c[c[j]+28]](j);E_(p);$9=0}wW(n)}}}}while(0);b=i}F_.X=1;function S4a(){return 1}S4a.X=1;function T4a(a,d){c[a+7]=d}T4a.X=1;function U4a(a,d){c[a+6]=d}U4a.X=1;function V4a(a,d){c[a+9]=d}V4a.X=1;function P4a(a,d,e,f,g,h){var i=b;b+=56;var j=i+16,l=i+32,m=i+36,n=i+44,p=i+48,r,s=i+52,h=h&1;sQ(i,d+1);sQ(j,e+1);W4a(g,j,l);v[c[c[f]+2]](f,i,m,m+4);X4a(m,v[c[c[g]+11]](g));if(1==(Y4a(m,l)|0)){v[c[c[f]+27]](f);g=v[c[c[f]+11]](f)+v[c[c[g]+11]](g);m=Z4a(f);j=m-1;m=0!=(m|0);a:do{if(m){var t=n,w=p,x=l,y=l,z=l,A=l;for(r=f;;){$4a(r,j,n);vw(p,i,n);c[t]=c[w];k[t]=k[w];c[t+1]=c[w+1];k[t+1]=k[w+1];c[t+2]=c[w+2];k[t+2]=k[w+2];c[t+3]=c[w+3];k[t+3]=k[w+3];r=J(n,x)-k[y+3]-g;0>r&&(h&1?(WP(s,z),s_(a,e,d,n,s,r)):s_(a,d,e,n,A,r));r=j;var j=r-1,C=f;if(0==(r|0)){var B=C;break a}r=C}}else{B=f}}while(0);v[c[c[B]+28]](B)}b=i}P4a.X=1;function Q4a(a,d,e,f,g,h){var i=b;b+=32;var j,l,m=i+16,h=h&1;sQ(i,e+1);var n=el(g);j=n-1;n=0!=(n|0);a:do{if(n){for(;;){if(l=Yk(g,j),WW(m,i,al(g,j)),Ji(e,m),F_(a,d,e,f,l,h&1),Ji(e,i),l=j,j=l-1,0==(l|0)){break a}}}}while(0);b=i}Q4a.X=1;function R4a(a,d,e,f,g,h){var i=b;b+=63;var j=i+7,l=i+23,m=i+39,n=i+55,p=i+59,h=h&1;a5a(i);c[i+1]=a;c[i+2]=d;c[i+3]=e;c[i+4]=f;c[i+5]=h&1;k[i+6]=v[c[c[g]+11]](g);uw(m,e+1);WW(l,m,d+1);xi(j,l);v[c[c[f]+2]](f,j,n,p);v[c[c[g]+15]](g,i,n,p);b=i}R4a.X=1;function W4a(a,d,e){k[e]=J(0+d,a+12);k[e+1]=J(4+d,a+12);k[e+2]=J(8+d,a+12);k[e+3]=J(d+12,a+12)+k[a+16]}W4a.X=1;function X4a(a,d){k[a]-=d;var e=a+1;k[e]-=d;e=a+2;k[e]-=d;e=a+4;k[e]+=d;e=a+4+1;k[e]+=d;e=a+4+2;k[e]+=d}X4a.X=1;function Y4a(a,d){var e=b;b+=2;var f=e+1;b5a(a,d,e,f);f=k[d+3]>k[f]+9.999999974752427e-7?0:k[d+3]+9.999999974752427e-7>=k[e]?1:2;b=e;return f}Y4a.X=1;function Z4a(a){return c5a(a+36)}Z4a.X=1;function $4a(a,d,e){G_(a+36,d,e)}$4a.X=1;function d5a(){}d5a.X=1;function e5a(a,d,e,f,g){s4a(a);c[a+4]=g;c[a+5]=f;25==(Ie(bi(d))|0)?(f=bi(d),25==(Ie(bi(e))|0)?(g=bi(e),C_(a,d,e,f,g)):F_(a,d,e,f,bi(e),0)):25==(Ie(bi(e))|0)&&(g=bi(e),F_(a,e,d,g,bi(d),1))}e5a.X=1;function f5a(){}f5a.X=1;function g5a(a,d){0!=(c[a+3]|0)&&CX(d,a+3)}g5a.X=1;function h5a(a){xe(a)}h5a.X=1;function i5a(a,d,e,f){$1=a;a=c[d];a=v[c[c[a]+14]](a,40);0==(a|0)?d=0:(p4a(a,d,e,f),d=a);return d}i5a.X=1;function a5a(a){EY(a);c[a]=j5a+2}a5a.X=1;function k5a(a){xe(a)}k5a.X=1;function l5a(a,d,e,f){var g=b;b+=26;m5a(g,d,d+4,d+8);v[c[c[g]+10]](g,k[a+6]);d=c[a+1];c[a+5]&1?(T4a(d,e),U4a(c[a+1],f)):(V4a(d,e),n5a(c[a+1],f));F_(c[a+1],c[a+2],c[a+3],c[a+4],g,c[a+5]&1);EX(g);b=g}l5a.X=1;function n5a(a,d){c[a+8]=d}n5a.X=1;function c5a(a){return c[a+10]}c5a.X=1;function o5a(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}o5a.X=1;function m5a(a,d,e,f){sZ(a,d,e,f);c[a]=H_+2}m5a.X=1;function p5a(a,d,e,f){var g=b;b+=20;var h=g+4,i=g+8,j=g+12;vw(g,d,a+14);vw(h,d,a+18);vw(i,d,a+22);q5a(j,g,h,i,k[a+11]);c[e]=c[j];k[e]=k[j];c[e+1]=c[j+1];k[e+1]=k[j+1];c[e+2]=c[j+2];k[e+2]=k[j+2];c[e+3]=c[j+3];k[e+3]=k[j+3];a=j+4;c[f]=c[a];k[f]=k[a];c[f+1]=c[a+1];k[f+1]=k[a+1];c[f+2]=c[a+2];k[f+2]=k[a+2];c[f+3]=c[a+3];k[f+3]=k[a+3];b=g}p5a.X=1;function q5a(a,d,e,f,g){k[a]=k[d]>(k[e]>k[f]?k[f]:k[e])?k[e]>k[f]?k[f]:k[e]:k[d];k[a+1]=k[d+1]>(k[e+1]>k[f+1]?k[f+1]:k[e+1])?k[e+1]>k[f+1]?k[f+1]:k[e+1]:k[d+1];k[a+2]=k[d+2]>(k[e+2]>k[f+2]?k[f+2]:k[e+2])?k[e+2]>k[f+2]?k[f+2]:k[e+2]:k[d+2];k[a+4]=k[d]<(k[e]=(n_(d)|0)){break a}}}}while(0);N5a(a+6,a+10,a+14,f,f+4,e);b=f}M5a.X=1;function N5a(a,d,e,f,g,h){var i=b;b+=28;var j=i+1,l=i+5,m=i+9,n=i+13,p=i+17,r=i+21,s=i+25,t=i+26,w=i+27;k[i]=h;H(j,i,i,i);N(l,f,j);c[a]=c[l];k[a]=k[l];c[a+1]=c[l+1];k[a+1]=k[l+1];c[a+2]=c[l+2];k[a+2]=k[l+2];c[a+3]=c[l+3];k[a+3]=k[l+3];wn(m,g,j);c[d]=c[m];k[d]=k[m];c[d+1]=c[m+1];k[d+1]=k[m+1];c[d+2]=c[m+2];k[d+2]=k[m+2];c[d+3]=c[m+3];k[d+3]=k[m+3];N(n,d,a);k[s]=65535;k[t]=65535;k[w]=65535;H(r,s,t,w);eX(p,r,n);c[e]=c[p];k[e]=k[p];c[e+1]=c[p+1];k[e+1]=k[p+1];c[e+2]=c[p+2];k[e+2]=k[p+2];c[e+3]=c[p+3];k[e+3]=k[p+3];b=i}N5a.X=1;function O5a(a,d,e,f){var g=b;b+=42;var h=g+4,i=g+5,j=g+6,l=g+7,m=g+11,n=g+12,p=g+13,r=g+14,s=g+18,t=g+19,w=g+23,x=g+24,y=g+28,z=g+29,A=g+33,C=g+37,B=g+41;$1=a;k[h]=0;k[i]=0;k[j]=0;H(g,h,i,j);k[m]=0;k[n]=0;k[p]=0;H(l,m,n,p);h=f-e;a=e;i=(a|0)<(f|0);a:do{if(i){for(;;){if(k[s]=.5,wn(t,k_(d,a)+4,k_(d,a)),Q(r,t,s),xn(g,r),a+=1,(a|0)>=(f|0)){break a}}}}while(0);k[w]=1/(h|0);LC(g,w);a=e;e=(a|0)<(f|0);a:do{if(e){r=A;for(s=C;;){if(k[y]=.5,wn(z,k_(d,a)+4,k_(d,a)),Q(x,z,y),N(A,x,g),ig(C,A,A),c[r]=c[s],k[r]=k[s],c[r+1]=c[s+1],k[r+1]=k[s+1],c[r+2]=c[s+2],k[r+2]=k[s+2],c[r+3]=c[s+3],k[r+3]=k[s+3],xn(l,A),a+=1,(a|0)>=(f|0)){break a}}}}while(0);k[B]=1/((h|0)-1);LC(l,B);d=fC(l);b=g;return d}O5a.X=1;function D_(a,d){L5a(a+1);I5a(a+27);I_(a+67);E5a(a+69);y5a(a+71);c[a]=d;var e=c[a];v[c[c[e]+23]](e)?c[a+73]=a+69:(e=c[a],c[a+73]=v[c[c[e]+24]](e)?a+71:a+67);c[c[a+73]+1]=a}D_.X=1;function P5a(a){EX(a);yh(a)}P5a.X=1;function N4a(a){o5a(a);e4a(a,32)}N4a.X=1;function J_(a,d){return c[a+3]+7*d}J_.X=1;function Q5a(a,d){c[a+6]=d}Q5a.X=1;function R5a(a,d){c[a+6]=-d}R5a.X=1;function S5a(a,d,e,f,g){var h=b;b+=26;var i,j,l;i=h+4;var m=h+5,n=h+6;l=h+7;var p=h+11,r=h+12,s=h+16,t=h+17,w=h+21,x=h+22;$1=a;a=e;j=f-e;k[i]=0;k[m]=0;k[n]=0;H(h,i,m,n);i=e;m=(i|0)<(f|0);a:do{if(m){for(;;){if(k[p]=.5,wn(r,k_(d,i)+4,k_(d,i)),Q(l,r,p),xn(h,l),i+=1,(i|0)>=(f|0)){break a}}}}while(0);k[s]=1/(j|0);LC(h,s);l=k[h+g];i=e;p=(i|0)<(f|0);a:do{if(p){for(;;){if(k[w]=.5,wn(x,k_(d,i)+4,k_(d,i)),Q(t,x,w),k[t+g]>l&&(J3a(d,i,a),a+=1),i+=1,(i|0)>=(f|0)){break a}}}}while(0);d=(j|0)/3&-1;((a|0)<=(d+e|0)?1:(a|0)>=(f-1+ -d|0))&1&&(a=(j>>1)+e);b=h;return a}S5a.X=1;function K_(a,d,e,f){var g=b;b+=8;var h,i,j;h=c[a];c[a]+=1;if(1==(f-e|0)){L_(a,h,k_(d,e)),Q5a(J_(a+1,h),c[k_(d,e)+8])}else{i=O5a(a,d,e,f);i=S5a(a,d,e,f,i);m_(g);j=e;var l=(j|0)<(f|0);a:do{if(l){for(;;){if(o_(g,k_(d,j)),j+=1,(j|0)>=(f|0)){break a}}}}while(0);L_(a,h,g);K_(a,d,e,i);K_(a,d,i,f);R5a(J_(a+1,h),c[a]-h)}b=g}K_.X=1;function L_(a,d,e){M_(J_(a+1,d),e,a+6,a+10,a+14);M_(J_(a+1,d)+3,e+4,a+6,a+10,a+14)}L_.X=1;function T5a(a,d){var e=b;b+=7;M5a(a,d,1);c[a]=0;var f=n_(d)<<1;U5a(e);V5a(a+1,f,e);K_(a,d,0,n_(d));b=e}T5a.X=1;function V5a(a,d,e){var f,g;f=N_(a);var h=(d|0)<(f|0);a:do{if(h){if(g=d,(g|0)<(f|0)){for(;;){if(g+=1,(g|0)>=(f|0)){break a}}}}else{if((d|0)>(N_(a)|0)&&W5a(a,d),g=f,(g|0)<(d|0)){for(var i=a+3;;){var j=c[i]+7*g;if(0!=(j|0)){var l=e;c[j]=c[l];k[j]=k[l];c[j+1]=c[l+1];k[j+1]=k[l+1];c[j+2]=c[l+2];k[j+2]=k[l+2];c[j+3]=c[l+3];k[j+3]=k[l+3];c[j+4]=c[l+4];k[j+4]=k[l+4];c[j+5]=c[l+5];k[j+5]=k[l+5];c[j+6]=c[l+6];k[j+6]=k[l+6]}g+=1;if((g|0)>=(d|0)){break a}}}}}while(0);c[a+1]=d}V5a.X=1;function X5a(a){var d=b;b+=24;var e,f=d+8,g=d+16,h,i=c[a];e=i-1;i=0!=(i|0);a:do{if(i){for(var j=a+18;;){if(O_(a,e)){h=c[j],v[c[c[h]+4]](h,P_(a,e),d),L_(a,e,d)}else{m_(f);h=e+1;0!=(h|0)&&(Q_(a,h,g),o_(f,g));var l=R_(a,e);h=l;0!=(l|0)&&(Q_(a,h,g),o_(f,g));L_(a,e,f)}h=e;e=h-1;if(0==(h|0)){break a}}}}while(0);b=d}X5a.X=1;function F4a(a,d,e){var f=b;b+=7;var g,h,i,j=f+3,l,m=f+6;h=0;i=c[a];Y5a(a,f,d);Y5a(a,j,d+4);d=(h|0)<(i|0);a:do{if(d){for(var n=a,p=f,r=j;;){if(g=Z5a(n,h,p,r)&1,l=O_(a,h)&1,l&1&&g&1&&(c[m]=P_(a,h),p_(e,m)),g&1?g=9:l&1?g=9:(h+=$5a(a,h),g=11),9==g&&(h+=1),(h|0)>=(i|0)){break a}}}}while(0);a=0<(rW(e)|0)?1:0;b=f;return a}F4a.X=1;function Y5a(a,d,e){M_(d,e,a+6,a+10,a+14)}Y5a.X=1;function Z5a(a,d,e,f){return a6a(S_(a+1,d),e,f)}Z5a.X=1;function b6a(a){var d=b;b+=14;var e=d+5;n4a(d);for(var f=c[a+18],f=v[c[c[f]+3]](f),g=e,h=g+9;g=(e|0)){break a}}}}while(0)}c6a.X=1;function N_(a){return c[a+1]}N_.X=1;function d6a(a){return c[a+2]}d6a.X=1;function S_(a,d){return c[a+3]+7*d}S_.X=1;function e6a(a){return-c[a+6]}e6a.X=1;function a6a(a,d,e){var f;(c[a]&65535|0)>(c[e]&65535|0)?a=8:(c[a+3]&65535|0)<(c[d]&65535|0)?a=8:(c[a+1]&65535|0)>(c[e+1]&65535|0)?a=8:(c[a+4]&65535|0)<(c[d+1]&65535|0)?a=8:(c[a+2]&65535|0)>(c[e+2]&65535|0)?a=8:(c[a+5]&65535|0)<(c[d+2]&65535|0)?a=8:(f=1,a=10);8==a&&(f=0);return f}a6a.X=1;function f6a(a){return 0<=(c[a+6]|0)}f6a.X=1;function g6a(a){return c[a+6]}g6a.X=1;function U5a(a){c[a+6]=0}U5a.X=1;function C4a(a,d,e,f,g){var h=b;b+=28;0!=(c[a]|0)&&0!=(c[e]|0)&&(Q3a(h,d,f),T_(a,e,g,h,0,0,1));b=h}C4a.X=1;function T_(a,d,e,f,g,h,i){if(0!=(h6a(a,d,f,g,h,i&1)&1|0)){if(i=O_(d,h),O_(a,g)){i?c4a(e,P_(a,g),P_(d,h)):(T_(a,d,e,f,g,h+1,0),T_(a,d,e,f,g,R_(d,h),0))}else{var j=g+1;i?(T_(a,d,e,f,j,h,0),T_(a,d,e,f,R_(a,g),h,0)):(T_(a,d,e,f,j,h+1,0),T_(a,d,e,f,g+1,R_(d,h),0),T_(a,d,e,f,R_(a,g),h+1,0),T_(a,d,e,f,R_(a,g),R_(d,h),0))}}}T_.X=1;function W5a(a,d){var e;(d6a(a)|0)<(d|0)&&(e=i6a(a,d),j6a(a,0,N_(a),e),c6a(a,0,N_(a)),k6a(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}W5a.X=1;function i6a(a,d){return 0!=(d|0)?l6a(a,d,0):0}i6a.X=1;function j6a(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=f+7*d;if(0!=(i|0)){var j=c[h]+7*d;c[i]=c[j];k[i]=k[j];c[i+1]=c[j+1];k[i+1]=k[j+1];c[i+2]=c[j+2];k[i+2]=k[j+2];c[i+3]=c[j+3];k[i+3]=k[j+3];c[i+4]=c[j+4];k[i+4]=k[j+4];c[i+5]=c[j+5];k[i+5]=k[j+5];c[i+6]=c[j+6];k[i+6]=k[j+6]}d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}j6a.X=1;function k6a(a){0!=(c[a+3]|0)&&(c[a+4]&1&&m6a(a,c[a+3]),c[a+3]=0)}k6a.X=1;function m6a(a,d){$1=a;yh(d)}m6a.X=1;function l6a(a,d,e){$1=a;$3=e;return Ue(d<<4,16)}l6a.X=1;function h6a(a,d,e,f,g,h){var i=b;b+=16;var j=i+8,h=h&1;Q_(a,f,i);Q_(d,g,j);a=k4a(i,j,e,h&1);b=i;return a}h6a.X=1;function $5a(a,d){return e6a(S_(a+1,d))}$5a.X=1;function M_(a,d,e,f,g){var h=b;b+=12;var i=h+4,j=h+8;c[h]=c[d];k[h]=k[d];c[h+1]=c[d+1];k[h+1]=k[d+1];c[h+2]=c[d+2];k[h+2]=k[d+2];c[h+3]=c[d+3];k[h+3]=k[d+3];gp(h,e);hp(h,f);N(j,h,e);ig(i,j,g);c[a]=Math.floor(k[i]+.5);c[a+1]=Math.floor(k[i+1]+.5);c[a+2]=Math.floor(k[i+2]+.5);b=h}M_.X=1;function R_(a,d){return f6a(S_(a+1,d+1))?d+2:d+e6a(S_(a+1,d+1))+1}R_.X=1;function Q_(a,d,e){var f=b;b+=8;var g=f+4;n6a(f,S_(a+1,d),a+6,a+14);c[e]=c[f];k[e]=k[f];c[e+1]=c[f+1];k[e+1]=k[f+1];c[e+2]=c[f+2];k[e+2]=k[f+2];c[e+3]=c[f+3];k[e+3]=k[f+3];n6a(g,S_(a+1,d)+3,a+6,a+14);a=e+4;c[a]=c[g];k[a]=k[g];c[a+1]=c[g+1];k[a+1]=k[g+1];c[a+2]=c[g+2];k[a+2]=k[g+2];c[a+3]=c[g+3];k[a+3]=k[g+3];b=f}Q_.X=1;function n6a(a,d,e,f){var g=b;b+=3;var h=g+1,i=g+2;k[g]=(c[d]&65535)/k[f];k[h]=(c[d+1]&65535)/k[f+1];k[i]=(c[d+2]&65535)/k[f+2];pe(a,g,h,i);xn(a,e);b=g}n6a.X=1;function P_(a,d){return g6a(S_(a+1,d))}P_.X=1;function O_(a,d){return f6a(S_(a+1,d))}O_.X=1;function o6a(){}o6a.X=1;function p6a(){return D.Ke}p6a.X=1;function q6a(){}q6a.X=1;function r6a(){return 25}r6a.X=1;function s6a(){return 0}s6a.X=1;function U_(a,d){return c[a+3]+d}U_.X=1;function V_(a,d){return(d<<4)+c[a+3]}V_.X=1;function t6a(a){return c[a+43]}t6a.X=1;function u6a(a,d){return c[a+3]+d}u6a.X=1;function v6a(a){return a+13}v6a.X=1;function w6a(a){c[a+12]=1}w6a.X=1;function x6a(a){return a+36}x6a.X=1;function y6a(a,d,e){var f=b;b+=15;var g=f+1,h=f+2,i=f+3,j=f+7,l=f+11;v[c[c[a]+27]](a);k[f]=0;k[g]=0;k[h]=0;pe(e,f,g,h);h=g=v[c[c[a]+21]](a);d/=h|0;g=h-1;h=0!=(h|0);a:do{if(h){for(var m=a+43,n=a,p=a+38,r=j,s=l;;){var t=c[U_(m,g)];v[c[c[t]+8]](t,d,i);var w=t=e;v[c[c[n]+22]](a)?(z6a(j,w,i,V_(p,g)),c[t]=c[r],k[t]=k[r],c[t+1]=c[r+1],k[t+1]=k[r+1],c[t+2]=c[r+2],k[t+2]=k[r+2],c[t+3]=c[r+3],k[t+3]=k[r+3]):(Pz(),z6a(l,w,i,Rz),c[t]=c[s],k[t]=k[s],c[t+1]=c[s+1],k[t+1]=k[s+1],c[t+2]=c[s+2],k[t+2]=k[s+2],c[t+3]=c[s+3],k[t+3]=k[s+3]);t=g;g=t-1;if(0==(t|0)){break a}}}}while(0);v[c[c[a]+28]](a);b=f}y6a.X=1;function z6a(a,d,e,f){var g=b;b+=39;var h=g+12,i=g+24,j=g+36,l=g+37,m=g+38;Vb(h,f,e);ue(i,f);ww(g,h,i);e=k[f+12];e*=e;h=k[f+12+1];h*=h;i=k[f+12+2];i*=i;f=k[0+g]*(h+i);i=k[4+g+1]*(e+i);e=k[8+g+2]*(e+h);k[j]=k[d]+f;k[l]=k[d+1]+i;k[m]=k[d+2]+e;H(a,j,l,m);b=g}z6a.X=1;function A6a(a,d,e){var f=b;b+=11;var g=f+1,h=f+2,i=f+3,j=f+7;v[c[c[a]+27]](a);k[f]=0;k[g]=0;k[h]=0;pe(e,f,g,h);h=g=Z4a(a);d/=h|0;g=h-1;h=0!=(h|0);a:do{if(h){for(var l=i,m=j;;){$4a(a,g,i);B6a(j,i,d);c[l]=c[m];k[l]=k[m];c[l+1]=c[m+1];k[l+1]=k[m+1];c[l+2]=c[m+2];k[l+2]=k[m+2];c[l+3]=c[m+3];k[l+3]=k[m+3];xn(e,i);var n=g,g=n-1;if(0==(n|0)){break a}}}}while(0);v[c[c[a]+28]](a);b=f}A6a.X=1;function B6a(a,d,e){var f=b;b+=3;var g,h,i=f+1,j=f+2;g=k[d]*k[d];h=k[d+1]*k[d+1];d=k[d+2]*k[d+2];k[f]=e*(h+d);k[i]=e*(g+d);k[j]=e*(g+h);H(a,f,i,j);b=f}B6a.X=1;function C6a(a,d,e){var f=b;b+=7;var g=f+1,h=f+2,i=f+3;k[f]=0;k[g]=0;k[h]=0;pe(e,f,g,h);h=g=x_(a);d/=h|0;g=h-1;h=0!=(h|0);a:do{if(h){for(;;){var j=D6a(a,g);v[c[c[j]+8]](j,d,i);xn(e,i);j=g;g=j-1;if(0==(j|0)){break a}}}}while(0);b=f}C6a.X=1;function D6a(a,d){return c[u6a(a+37,d)]}D6a.X=1;function E6a(a,d,e,f){var g,h=y_(a+37);g=h-1;h=0!=(h|0);a:do{if(h){for(var i=a+37;;){var j=c[u6a(i,g)];v[c[c[j]+15]](j,d,e,f);j=g;g=j-1;if(0==(j|0)){break a}}}}while(0)}E6a.X=1;function F6a(a,d,e){HX(a,d,e);var f=c[a+36];v[c[c[f]+14]](f,d+6,e);k[d+20]=k[a+3];mc(a+13,d+16);c[d+21]=v[c[c[a]+19]](a);return D.we}F6a.X=1;function G6a(a){H6a(a)}G6a.X=1;function I6a(a){H6a(a);xe(a)}I6a.X=1;function J6a(a,d,e,f){var g=b;b+=8;V3a(g,a+4);K6a(g,d);c[e]=c[g];k[e]=k[g];c[e+1]=c[g+1];k[e+1]=k[g+1];c[e+2]=c[g+2];k[e+2]=k[g+2];c[e+3]=c[g+3];k[e+3]=k[g+3];a=g+4;c[f]=c[a];k[f]=k[a];c[f+1]=c[a+1];k[f+1]=k[a+1];c[f+2]=c[a+2];k[f+2]=k[a+2];c[f+3]=c[a+3];k[f+3]=k[a+3];b=g}J6a.X=1;function L6a(a,d){var e=a+13;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3];v[c[c[a]+17]](a)}L6a.X=1;function M6a(a,d){var e;k[a+3]=d;var f=v[c[c[a]+21]](a);e=f-1;f=0!=(f|0);a:do{if(f){for(var g=a;;){var h=v[c[c[g]+30]](a,e);v[c[c[h]+10]](h,d);h=e;e=h-1;if(0==(h|0)){break a}}}}while(0);c[a+12]=1}M6a.X=1;function N6a(a){var d=b;b+=8;v[c[c[a]+27]](a);var e=a+17;0==(c[a+17]|0)?b6a(e):X5a(e);v[c[c[a]+28]](a);O6a(d,a+17);a+=4;c[a]=c[d];k[a]=k[d];c[a+1]=c[d+1];k[a+1]=k[d+1];c[a+2]=c[d+2];k[a+2]=k[d+2];c[a+3]=c[d+3];k[a+3]=k[d+3];c[a+4]=c[d+4];k[a+4]=k[d+4];c[a+5]=c[d+5];k[a+5]=k[d+5];c[a+6]=c[d+6];k[a+6]=k[d+6];c[a+7]=c[d+7];k[a+7]=k[d+7];b=d}N6a.X=1;function P6a(a){return CY(a+43)}P6a.X=1;function Q6a(a){return 0==(R6a(a+38)|0)?0:1}Q6a.X=1;function S6a(a,d,e,f){var g=b;b+=31;var h=g+8,i=g+13;v[c[c[a]+27]](a);c[g]=c[e];k[g]=k[e];c[g+1]=c[e+1];k[g+1]=k[e+1];c[g+2]=c[e+2];k[g+2]=k[e+2];c[g+3]=c[e+3];k[g+3]=k[e+3];e=g+4;c[e]=c[f];k[e]=k[f];c[e+1]=c[f+1];k[e+1]=k[f+1];c[e+2]=c[f+2];k[e+2]=k[f+2];c[e+3]=c[f+3];k[e+3]=k[f+3];vW(h);F4a(a+17,g,h);if(0==(rW(h)|0)){v[c[c[a]+28]](a),$7=1}else{f=t6a(a);v_(i);for(var j=rW(h);;){e=j-1;if(0==(j|0)){break}w_(a,c[QV(h,e)],i);j=d;v[c[c[j]+2]](j,i,f,c[QV(h,e)]);j=e}v[c[c[a]+28]](a);$7=0}wW(h);b=g}S6a.X=1;function T6a(){return 0}T6a.X=1;function U6a(){return 0}U6a.X=1;function V6a(){}V6a.X=1;function W6a(){}W6a.X=1;function X6a(){}X6a.X=1;function Y6a(){}Y6a.X=1;function Z6a(){}Z6a.X=1;function $6a(){return D.ve}$6a.X=1;function a7a(){return 1}a7a.X=1;function b7a(){return 0}b7a.X=1;function c7a(){return 1}c7a.X=1;function d7a(){return 0}d7a.X=1;function e7a(){}e7a.X=1;function f7a(){return 0}f7a.X=1;function g7a(){return 0}g7a.X=1;function h7a(){}h7a.X=1;function i7a(){return D.Yd}i7a.X=1;function j7a(){return 64}j7a.X=1;function k7a(){return 2}k7a.X=1;function l7a(){return 0}l7a.X=1;function m7a(){return 0}m7a.X=1;function n7a(){return 0}n7a.X=1;function o7a(){return 0}o7a.X=1;function p7a(){return 0}p7a.X=1;function q7a(){}q7a.X=1;function r7a(){}r7a.X=1;function s7a(){}s7a.X=1;function t7a(){}t7a.X=1;function u7a(){}u7a.X=1;function v7a(){return 0}v7a.X=1;function w7a(){return 0}w7a.X=1;function x7a(){}x7a.X=1;function y7a(a){return a+39}y7a.X=1;function z7a(a){return k[a+37]}z7a.X=1;function A7a(a){return a+36}A7a.X=1;function B7a(a,d,e,f,g){var h=b;b+=16;var i=v[c[c[a]+22]](a),j=c[U_(a+43,d)],l=c[c[j]+2];if(i){WW(h,e,V_(a+38,d)),v[l](j,h,f,g)}else{v[l](j,e,f,g)}b=h}B7a.X=1;function C7a(a,d){return c[BY(a+43,d)]}C7a.X=1;function D7a(a,d){return c[U_(a+43,d)]}D7a.X=1;function E7a(a,d,e){sQ(a,V_(d+38,e))}E7a.X=1;function F7a(a,d,e){xi(G7a(a+38,d),e);v[c[c[a]+17]](a)}F7a.X=1;function H7a(a){W_(a)}H7a.X=1;function I7a(a){W_(a);xe(a)}I7a.X=1;function J7a(a,d){var e=a+39;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3];v[c[c[a]+17]](a)}J7a.X=1;function K7a(a,d){k[a+37]=d;v[c[c[a]+17]](a)}K7a.X=1;function L7a(a){a+=36;return v[c[c[a]+3]](a)}L7a.X=1;function M7a(a,d,e){N7a(a+36,d,e)}M7a.X=1;function O7a(a){P7a(Q7a(a+17))}O7a.X=1;function R7a(a){S7a(Q7a(a+17))}R7a.X=1;function T7a(a,d,e,f,g){var h=b;b+=8;a=v[c[c[a]+20]](a);v[c[c[a]+4]](a,d,h);K6a(h,e);c[f]=c[h];k[f]=k[h];c[f+1]=c[h+1];k[f+1]=k[h+1];c[f+2]=c[h+2];k[f+2]=k[h+2];c[f+3]=c[h+3];k[f+3]=k[h+3];d=h+4;c[g]=c[d];k[g]=k[d];c[g+1]=c[d+1];k[g+1]=k[d+1];c[g+2]=c[d+2];k[g+2]=k[d+2];c[g+3]=c[d+3];k[g+3]=k[d+3];b=h}T7a.X=1;function U7a(a,d,e){$1=d;$2=e}U7a.X=1;function V7a(a){W7a(a)}V7a.X=1;function X7a(a){W7a(a);xe(a)}X7a.X=1;function Y7a(a,d){var e;e=a+13;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3];var f=y_(a+37);e=f-1;f=0!=(f|0);a:do{if(f){for(var g=a+37;;){var h=c[A_(g,e)];v[c[c[h]+6]](h,d);h=e;e=h-1;if(0==(h|0)){break a}}}}while(0);c[a+12]=1}Y7a.X=1;function Z7a(a,d){var e;k[a+3]=d;var f=y_(a+37);e=f-1;f=0!=(f|0);a:do{if(f){for(var g=a+37;;){var h=c[A_(g,e)];v[c[c[h]+10]](h,d);h=e;e=h-1;if(0==(h|0)){break a}}}}while(0);c[a+12]=1}Z7a.X=1;function $7a(a){var d;m_(a+4);var e=y_(a+37);d=e-1;e=0!=(e|0);a:do{if(e){for(var f=a+37,g=a+4,h=a+37;;){a8a(c[A_(f,d)]);o_(g,c[A_(h,d)]+4);var i=d;d=i-1;if(0==(i|0)){break a}}}}while(0)}$7a.X=1;function b8a(a){var d,e=y_(a+37);d=e-1;e=0!=(e|0);a:do{if(e){for(var f=a+37;;){var g=c[A_(f,d)];v[c[c[g]+17]](g);g=d;d=g-1;if(0==(g|0)){break a}}}}while(0);c[a+12]=1}b8a.X=1;function c8a(a,d,e){$1=d;$2=e}c8a.X=1;function a8a(a){c[a+12]&1&&(v[c[c[a]+16]](a),c[a+12]=0)}a8a.X=1;function d8a(a){e8a(a,0,y_(a));f8a(a);g8a(a)}d8a.X=1;function W_(a){c[a]=h8a+2;i8a(a+17)}W_.X=1;function j8a(a){W_(a)}j8a.X=1;function k8a(a){W_(a);xe(a)}k8a.X=1;function i8a(a){l8a(a+1)}i8a.X=1;function l8a(a){c6a(a,0,N_(a));k6a(a);m8a(a)}l8a.X=1;function W7a(a){var d;c[a]=n8a+2;for(var e=a+37,f=y_(a+37);;){d=f-1;if(0==(f|0)){break}f=c[A_(e,d)];if(0!=(f|0)){v[c[c[f]+1]](f)}f=d}d8a(e);d8a(a+37);W_(a)}W7a.X=1;function e8a(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}e8a.X=1;function o8a(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}o8a.X=1;function m8a(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}m8a.X=1;function g8a(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}g8a.X=1;function Q7a(a){return c[a+18]}Q7a.X=1;function p8a(a,d,e,f,g){d=c[a+13]+c[a+14]*d;3==(c[a+16]|0)?(c[e]=c[d]<<16>>16,c[f]=c[d+1]<<16>>16,c[g]=c[d+2]<<16>>16):(c[e]=c[d],c[f]=c[d+1],c[g]=c[d+2])}p8a.X=1;function G7a(a,d){return(d<<4)+c[a+3]}G7a.X=1;function R6a(a){return c[a+1]}R6a.X=1;function q8a(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}q8a.X=1;function f8a(a){0!=(c[a+3]|0)&&(c[a+4]&1&&r8a(a,c[a+3]),c[a+3]=0)}f8a.X=1;function r8a(a,d){$1=a;yh(d)}r8a.X=1;function K6a(a,d){var e=b;b+=44;var f=e+4,g=e+8,h=e+9,i=e+13,j=e+17,l=e+21,m=e+25,n=e+26,p=e+30,r=e+31,s=e+35,t=e+36,w=e+40;wn(f,a+4,a);k[g]=.5;Q(e,f,g);N(h,a+4,e);vw(i,d,e);c[e]=c[i];k[e]=k[i];c[e+1]=c[i+1];k[e+1]=k[i+1];c[e+2]=c[i+2];k[e+2]=k[i+2];c[e+3]=c[i+3];k[e+3]=k[i+3];GB(l,0+d);k[m]=J(h,l);GB(n,4+d);k[p]=J(h,n);GB(r,8+d);k[s]=J(h,r);H(j,m,p,s);N(t,e,j);c[a]=c[t];k[a]=k[t];c[a+1]=c[t+1];k[a+1]=k[t+1];c[a+2]=c[t+2];k[a+2]=k[t+2];c[a+3]=c[t+3];k[a+3]=k[t+3];wn(w,e,j);f=a+4;c[f]=c[w];k[f]=k[w];c[f+1]=c[w+1];k[f+1]=k[w+1];c[f+2]=c[w+2];k[f+2]=k[w+2];c[f+3]=c[w+3];k[f+3]=k[w+3];b=e}K6a.X=1;function S7a(a){if(0!=(c[a+8]|0)){if(1<(c[a+8]|0)){a+=8,c[a]-=1}else{var d=c[a+2];v[c[c[d]+6]](d,c[a+7]);c[a+9]=0;c[a+8]=0}}}S7a.X=1;function P7a(a){if(0<(c[a+8]|0)){a+=8,c[a]+=1}else{var d=c[a+2];v[c[c[d]+4]](d,a+9,a+10,a+11,a+12,a+13,a+14,a+15,a+16,c[a+7]);c[a+8]=1}}P7a.X=1;function N7a(a,d,e){var f=b;b+=3;p8a(a,d,f,f+1,f+2);G_(a,c[f],e+14);G_(a,c[f+1],e+18);G_(a,c[f+2],e+22);v[c[c[e]+10]](e,k[a+1]);b=f}N7a.X=1;function O6a(a,d){Q_(d,0,a)}O6a.X=1;function s8a(a){o8a(a,0,R6a(a));t8a(a);q8a(a)}s8a.X=1;function t8a(a){0!=(c[a+3]|0)&&(c[a+4]&1&&u8a(a,c[a+3]),c[a+3]=0)}t8a.X=1;function u8a(a,d){$1=a;yh(d)}u8a.X=1;function v8a(a){Bi(a);c[a]=X_+2;JW(a+64);c[a+58]=4}v8a.X=1;function Y_(a){c[a]=X_+2;TW(a+64)}Y_.X=1;function w8a(a,d,e){var f=b;b+=1;$3=e;c[f]=c[d];(dY(a+64,f)|0)==(Tl(a+64)|0)&&OW(a+64,f);b=f}w8a.X=1;function x8a(a,d,e,f){var g=b;b+=1;$3=e;$4=f;c[g]=c[d];d=dY(a+64,g);(d|0)<(Tl(a+64)|0)&&(c[$X(a+64,d)]=c[$X(a+64,Tl(a+64)-1)],eY(a+64));b=g}x8a.X=1;function H6a(a){c[a]=y8a+2;qTa(a+43);s8a(a+38);W_(a)}H6a.X=1;function z8a(a){Y_(a);yh(a)}z8a.X=1;function A8a(a){v8a(a);c[a]=Z_+2;var d=Ue(76,16);0==(d|0)?d=0:dX(d);c[a+69]=d}A8a.X=1;function B8a(a){C8a(a);yh(a)}B8a.X=1;function C8a(a){c[a]=Z_+2;var d=c[a+69];v[c[c[d]]](d);yh(c[a+69]);Y_(a)}C8a.X=1;function D8a(a,d){return c[a+3]+d}D8a.X=1;function E8a(a,d,e){var f=b;b+=1;e=0!=(e|0)?e:ci(a);c[f]=c[d];(dY(a+64,f)|0)==(Tl(a+64)|0)&&(OW(a+64,f),a=c[a+69],v[c[c[a]+2]](a,e,d));b=f}E8a.X=1;function F8a(a,d,e,f){var g=b;b+=1;var h;c[g]=c[d];f=0!=(f|0)?f:ci(a);h=dY(a+64,g);(h|0)<(Tl(a+64)|0)&&(c[$X(a+64,h)]=c[$X(a+64,Tl(a+64)-1)],eY(a+64),a=c[a+69],v[c[c[a]+3]](a,f,d,e));b=g}F8a.X=1;function $_(a,d,e,f,g,h){var i=b;b+=81;var j=i+16,l=i+32,m=i+36,n=i+40,p=i+44,r=i+48,s=i+64,t=i+68,w=i+72,x=i+76,y=i+77;xi(i,e);xi(j,f);xY(i,j,1,n,p);eQ(r);dc(i,s);zb(r,s);Tf(d,r,n,p,1,l,m);n=0;r=a+64;s=(n|0)<(Tl(r)|0);a:do{if(s){for(var z=a+64;;){var p=c[D8a(z,n)],A=g;v[c[c[A]+2]](A,ci(p))&&(A=bi(p),v[c[c[A]+2]](A,p+1,t,w),G8a(t,w,l,m),k[x]=1,H8a(e+12,f+12,t,w,x,y)&&Dm(d,i,j,p,bi(p),p+1,g,h));n+=1;if((n|0)>=(Tl(r)|0)){break a}}}}while(0);b=i}$_.X=1;function G8a(a,d,e,f){var g=b;b+=8;var h=g+4;wn(g,a,e);c[a]=c[g];k[a]=k[g];c[a+1]=c[g+1];k[a+1]=k[g+1];c[a+2]=c[g+2];k[a+2]=k[g+2];c[a+3]=c[g+3];k[a+3]=k[g+3];wn(h,d,f);c[d]=c[h];k[d]=k[h];c[d+1]=c[h+1];k[d+1]=k[h+1];c[d+2]=c[h+2];k[d+2]=k[h+2];c[d+3]=c[h+3];k[d+3]=k[h+3];b=g}G8a.X=1;function H8a(a,d,e,f,g,h){var i=b;b+=42;var j,l=i+4,m=i+8,n=i+9,p=i+13,r=i+17,s=i+18,t=i+22,w=i+26,x=i+27,y=i+31,z=i+35,A=i+36,C=i+37,B=i+38,K=i+39,E=i+40,G=i+41;N(l,f,e);k[m]=.5;Q(i,l,m);wn(p,f,e);k[r]=.5;Q(n,p,r);N(s,a,n);N(t,d,n);a=I8a(s,i);d=I8a(t,i);e=0==(d&a|0);do{if(e){f=0;k[w]=k[g];N(x,t,s);l=1;k[z]=0;k[A]=0;k[C]=0;H(y,z,A,C);m=1;for(n=0;;){for(p=0;!(0!=(m&a|0)?(r=(-k[s+p]-k[i+p]*l)/k[x+p],f<=r&&(f=r,k[B]=0,k[K]=0,k[E]=0,pe(y,B,K,E),k[y+p]=l)):0!=(m&d|0)&&(k[G]=(-k[s+p]-k[i+p]*l)/k[x+p],BB(w,G)),m<<=1,p=r=p+1,3==(r|0));){}l=-1;n=p=n+1;if(2<=(p|0)){break}}f<=k[w]?(k[g]=f,j=h,f=y,c[j]=c[f],k[j]=k[f],c[j+1]=c[f+1],k[j+1]=k[f+1],c[j+2]=c[f+2],k[j+2]=k[f+2],c[j+3]=c[f+3],k[j+3]=k[f+3],j=1,f=15):f=14}else{f=14}}while(0);14==f&&(j=0);b=i;return j}H8a.X=1;function I8a(a,d){return(k[a]>k[d]?8:0)|(k[a]<-k[d]?1:0)|(k[a+1]<-k[d+1]?2:0)|(k[a+1]>k[d+1]?16:0)|(k[a+2]<-k[d+2]?4:0)|(k[a+2]>k[d+2]?32:0)}I8a.X=1;function lZ(a,d,e,f){bZ(a);c[a]=J8a+2;c[a+1]=f;c[a+2]=d;c[a+3]=e}lZ.X=1;function mZ(a,d,e,f,g,h){var i=b;b+=118;var j,l=i+4,m=i+8,n=i+12,p=i+20,r=i+21,s=i+22,t=i+23,w=i+27,x=i+28,y=i+29,z=i+30,A=i+34,C=i+38,B=i+54,K=i+65,E=i+84;fZ(c[a+1]);N(m,e+12,d+12);c[i]=c[m];k[i]=k[m];c[i+1]=c[m+1];k[i+1]=k[m+1];c[i+2]=c[m+2];k[i+2]=k[m+2];c[i+3]=c[m+3];k[i+3]=k[m+3];N(n,g+12,f+12);c[l]=c[n];k[l]=k[n];c[l+1]=c[n+1];k[l+1]=k[n+1];c[l+2]=c[n+2];k[l+2]=k[n+2];c[l+3]=c[n+3];k[l+3]=k[n+3];m=0;k[p]=1;k[r]=0;k[s]=0;H(i+16,p,r,s);k[w]=0;k[x]=0;k[y]=0;pe(t,w,x,y);N(A,i,l);l=m;p=0;eQ(C);hZ(B);kZ(K,c[a+2],c[a+3],c[a+1],0);QQ(E);xi(E,d);xi(E+16,f);gZ(K,E,B,0,0);a=c[B+10]&1;C=B+5;c[z]=c[C];k[z]=k[C];c[z+1]=c[C+1];k[z+1]=k[C+1];c[z+2]=c[C+2];k[z+2]=k[C+2];c[z+3]=c[C+3];k[z+3]=k[C+3];a&=1;a:do{if(a){C=k[B+9];r=t;s=B+1;c[r]=c[s];k[r]=k[s];c[r+1]=c[s+1];k[r+1]=k[s+1];c[r+2]=c[s+2];k[r+2]=k[s+2];c[r+3]=c[s+3];k[r+3]=k[s+3];for(var r=E,s=E+16,w=B,x=B+10,y=B+9,n=z,G=B+5,M=t,L=B+1,F=B+9;;){if(.0010000000474974513m){j=0;$18=1;break a}if(m<=l){j=0;$18=1;break a}l=m;C=h;v[c[c[C]]](C,m);yB(r+12,d+12,e+12,m);yB(s+12,f+12,g+12,m);gZ(K,E,w,0,0);if(!(c[x]&1)){j=0;$18=1;break a}if(0>k[y]){k[h+41]=l;z=t;d=B+1;c[z]=c[d];k[z]=k[d];c[z+1]=c[d+1];k[z+1]=k[d+1];c[z+2]=c[d+2];k[z+2]=k[d+2];c[z+3]=c[d+3];k[z+3]=k[d+3];z=h+33;c[z]=c[t];k[z]=k[t];c[z+1]=c[t+1];k[z+1]=k[t+1];c[z+2]=c[t+2];k[z+2]=k[t+2];c[z+3]=c[t+3];k[z+3]=k[t+3];h+=37;B+=5;c[h]=c[B];k[h]=k[B];c[h+1]=c[B+1];k[h+1]=k[B+1];c[h+2]=c[B+2];k[h+2]=k[B+2];c[h+3]=c[B+3];k[h+3]=k[B+3];$18=j=1;break a}c[n]=c[G];k[n]=k[G];c[n+1]=c[G+1];k[n+1]=k[G+1];c[n+2]=c[G+2];k[n+2]=k[G+2];c[n+3]=c[G+3];k[n+3]=k[G+3];c[M]=c[L];k[M]=k[L];c[M+1]=c[L+1];k[M+1]=k[L+1];c[M+2]=c[L+2];k[M+2]=k[L+2];c[M+3]=c[L+3];k[M+3]=k[L+3];C=k[F]}else{if(J(t,A)>=-k[h+43]){j=0;$18=1;break a}k[h+41]=m;B=h+33;c[B]=c[t];k[B]=k[t];c[B+1]=c[t+1];k[B+1]=k[t+1];c[B+2]=c[t+2];k[B+2]=k[t+2];c[B+3]=c[t+3];k[B+3]=k[t+3];h+=37;B=z;c[h]=c[B];k[h]=k[B];c[h+1]=c[B+1];k[h+1]=k[B+1];c[h+2]=c[B+2];k[h+2]=k[B+2];c[h+3]=c[B+3];k[h+3]=k[B+3];$18=j=1;break a}}}else{j=0,$18=1}}while(0);b=i;return j}mZ.X=1;function K8a(a){xe(a)}K8a.X=1;function L8a(a,d,e,f,g,h){var i=b;b+=175;var j=i+32,l=i+127,m=i+131,n=i+132,p=i+133,r=i+134,s=i+138,t=i+139,w=i+140,x=i+141,y=i+142,z=i+146,A=i+150,C=i+154,B=i+158,K=i+162,E=i+166,G=i+170,M=i+174;M8a(a,d,e,f,h,i,0);N8a(j);a=O8a(j,i,g);if(0==(a|0)){k[m]=0;k[n]=0;k[p]=0;H(l,m,n,p);k[s]=0;k[t]=0;k[w]=0;H(r,s,t,w);m=0;n=j+93;p=m>>>0>>0;a:do{if(p){s=j+93;t=j+93;for(w=j+93;;){if(k[x]=k[c[s]+m+4],a0(z,i,c[c[t]+m],0),Q(y,z,x),xn(l,y),WP(B,c[c[w]+m]),a0(C,i,B,1),Q(A,C,x),xn(r,A),m+=1,m>>>0>=c[c[n]+8]>>>0){break a}}}}while(0);vw(K,d,l);j=h+1;c[j]=c[K];k[j]=k[K];c[j+1]=c[K+1];k[j+1]=k[K+1];c[j+2]=c[K+2];k[j+2]=k[K+2];c[j+3]=c[K+3];k[j+3]=k[K+3];vw(E,d,r);d=h+5;c[d]=c[E];k[d]=k[E];c[d+1]=c[E+1];k[d+1]=k[E+1];c[d+2]=c[E+2];k[d+2]=k[E+2];c[d+3]=c[E+3];k[d+3]=k[E+3];N(G,l,r);l=h+9;c[l]=c[G];k[l]=k[G];c[l+1]=c[G+1];k[l+1]=k[G+1];c[l+2]=c[G+2];k[l+2]=k[G+2];c[l+3]=c[G+3];k[l+3]=k[G+3];k[h+13]=JB(h+9);k[M]=9999999747378752e-20x){c[a+94]=1;break}WP(w,I);b0(a,r,w);x=c[r+(c[r+8]-1)]+4;for(var Y=z=y=0;4>Y>>>0;){N(A,x,(z<<2)+i);if(9999999747378752e-20>Um(A)){y=1;break}z=Y=z+1}if(y&1){c0(a,a+9*c[a+92]+37);break}j=y=j+1&3;y=(y<<2)+i;z=x;c[y]=c[z];k[y]=k[z];c[y+1]=c[z+1];k[y+1]=k[z+1];c[y+2]=c[z+2];k[y+2]=k[z+2];c[y+3]=c[z+3];k[y+3]=k[z+3];k[C]=J(R,x)/t;k[f]=k[d0(C,f)];if(0>=t-k[f]-9999999747378752e-20*t){c0(a,a+9*c[a+92]+37);break}c[K]=0;t=c[r+8];2==(t|0)?h=t=S8a(c[r]+4,c[r+1]+4,B,K):3==(t|0)?h=t=T8a(c[r]+4,c[r+1]+4,c[r+2]+4,B,K):4==(t|0)?h=t=U8a(c[r]+4,c[r+1]+4,c[r+2]+4,c[r+3]+4,B,K):t=h;if(!(0<=t)){c0(a,a+9*c[a+92]+37);break}c[s+8]=0;k[G]=0;k[M]=0;k[L]=0;H(E,G,M,L);c[O]=c[E];k[O]=k[E];c[O+1]=c[E+1];k[O+1]=k[E+1];c[O+2]=c[E+2];k[O+2]=k[E+2];c[O+3]=c[E+3];k[O+3]=k[E+3];c[Z]=p;p=0;t=c[r+8];x=p>>>0>>0;y=c[K];a:do{if(x){for(Y=y;;){z=c[r+p];if(0!=(1<>>0>=t>>>0){var ka=z;break a}Y=z}}else{ka=y}}while(0);15==(ka|0)&&(c[P]=1);g=r=g+1;if(128<=r>>>0){c[da]=2;break}r=c[S];c[da]=r;if(0!=(r|0)){break}}c[a+93]=a+9*c[a+92]+37;g=c[a+94];0==(g|0)?k[a+36]=JB(a+32):1==(g|0)&&(k[a+36]=0);a=c[a+94];b=f;return a}O8a.X=1;function a0(a,d,e,f){0!=(f|0)?V8a(a,d,e):W8a(a,d,e)}a0.X=1;function X8a(a,d,e,f,g,h,i){var j=b;b+=3006;var l,m=j+32,n=j+127,p=j+131,r=j+2967,s=j+2971,t=j+2975,w=j+2976,x=j+2977,y=j+2978,z=j+2982,A=j+2986,C=j+2990,B=j+2994,K=j+2998,E=j+3002;M8a(a,d,e,f,h,j,i&1);N8a(m);WP(n,g);a=O8a(m,j,n);do{if(1==(a|0)){if(Y8a(p),WP(r,g),9!=(Z8a(p,m,r)|0)){k[t]=0;k[w]=0;k[x]=0;H(s,t,w,x);l=0;e=p+9;f=l>>>0>>0;a:do{if(f){i=p+1;for(n=p+5;;){if(a0(z,j,c[i+l],0),Q(y,z,n+l),xn(s,y),l+=1,l>>>0>=c[e]>>>0){break a}}}}while(0);c[h]=1;vw(A,d,s);l=h+1;e=A;c[l]=c[e];k[l]=k[e];c[l+1]=c[e+1];k[l+1]=k[e+1];c[l+2]=c[e+2];k[l+2]=k[e+2];c[l+3]=c[e+3];k[l+3]=k[e+3];Q(K,p+10,p+14);N(B,s,K);vw(C,d,B);l=h+5;e=C;c[l]=c[e];k[l]=k[e];c[l+1]=c[e+1];k[l+1]=k[e+1];c[l+2]=c[e+2];k[l+2]=k[e+2];c[l+3]=c[e+3];k[l+3]=k[e+3];WP(E,p+10);l=h+9;e=E;c[l]=c[e];k[l]=k[e];c[l+1]=c[e+1];k[l+1]=k[e+1];c[l+2]=c[e+2];k[l+2]=k[e+2];c[l+3]=c[e+3];k[l+3]=k[e+3];k[h+13]=-k[p+14];l=1;e=11}else{c[h]=3,e=10}}else{2==(a|0)&&(c[h]=2),e=10}}while(0);10==e&&(l=0);b=j;return l}X8a.X=1;function Z8a(a,d,e){var f=b;b+=93;var g,h,i,j=f+4,l=f+8,m=f+12,n=f+16,p,r=f+34,s,t,w,x=f+37,y=f+41,z=f+45,A=f+49,C=f+53,B=f+57,K=f+61,E=f+65,G=f+69,M=f+73,L=f+77,F=f+81,I=f+82,R=f+86,O=f+90,Z=f+91,P=f+92;i=c[d+93];var S=1>>0;do{if(S){if(e0(d)){p=a+2832;var da=0!=(c[p]|0);a:do{if(da){for(var V=a+2832,ba=a+2832,$=a+2834;;){if(g=c[V],f0(ba,g),g0($,g),0==(c[p]|0)){break a}}}}while(0);c[a]=0;c[a+2831]=0;N(f,c[i]+4,c[i+3]+4);N(j,c[i+1]+4,c[i+3]+4);N(l,c[i+2]+4,c[i+3]+4);0>h0(f,j,l)&&($8a(i,i+1),a9a(i+4,i+5));g=m;c[g]=i0(a,c[i],c[i+1],c[i+2],1);g+=1;c[g]=i0(a,c[i+1],c[i],c[i+3],1);g+=1;c[g]=i0(a,c[i+2],c[i+1],c[i+3],1);c[g+1]=i0(a,c[i],c[i+2],c[i+3],1);if(4!=(c[a+2833]|0)){g=27}else{s=h=b9a(a);t=n;for(w=s+18;ss>>>0;){if(64<=c[da]>>>0){c[a]=6;break}c9a(r);s=c[V];c[V]=s+1;s=(s<<3)+ba;t=1;g=w=g+1;c[h+17]=w&255;d9a(d,h,s);if(9999999747378752e-20W>>>0&&t&1;){t=0!=(t&1&k0(a,g,s,c[h+(w+9)],c[h+(w+14)]&255,r)&1|0)&1,w=W=w+1}s=t&1;do{if(s&&3<=c[$]>>>0){j0(c[Y],1,c[la],2);f0(ka,h);g0(ja,h);h=b9a(a);if(k[h+5]>=k[ea]){s=h;t=ca;for(w=s+18;s=e&&g>>0){e=27;break a}k[h]=0;k[i]=0;k[j]=0;H(d,h,i,j);k[d+g]=1;b0(a,c[G],d);if(e0(a)){f=1;e=28;break a}c0(a,c[M]);I=c[L];WP(l,d);b0(a,I,l);if(e0(a)){f=1;e=28;break a}c0(a,c[F]);g=I=g+1}}else{if(2==(E|0)){N(m,c[c[a+93]+1]+4,c[c[a+93]]+4);g=0;G=a+93;M=a+93;L=a+93;F=a+93;for(I=0;;){if(3<=I>>>0){e=27;break a}k[p]=0;k[r]=0;k[s]=0;H(n,p,r,s);k[n+g]=1;qn(t,m,n);if(0k[d]?a:d}d0.X=1;function c9a(a){c[a]=0;c[a+1]=0;c[a+2]=0}c9a.X=1;function c0(a,d){var e=d+8,f=c[e]-1;c[e]=f;var e=c[d+f],f=a+91,g=c[f];c[f]=g+1;c[a+(g+87)]=e}c0.X=1;function f9a(a){c[a]=0;c[a+1]=0}f9a.X=1;function k0(a,d,e,f,g,h){var i,j;(c[f+17]&255|0)!=(d|0)?(j=c[g9a+g],-9999999747378752e-21>J(f,e+4)-k[f+4]?(a=i0(a,c[f+(j+6)],c[f+(g+6)],e,0),0==(a|0)?f=12:(j0(a,0,f,g),0!=(c[h]|0)?j0(c[h],1,a,2):c[h+1]=a,c[h]=a,i=h+2,c[i]+=1,i=1,f=13)):(g=c[h9a+g],c[f+17]=d&255,k0(a,d,e,c[f+(j+9)],c[f+(j+14)]&255,h)?k0(a,d,e,c[f+(g+9)],c[f+(g+14)]&255,h)?(f0(a+2832,f),g0(a+2834,f),i=1,f=13):f=12:f=12)):f=12;12==f&&(i=0);return i}k0.X=1;function e9a(a,d,e){var f=b;b+=12;var g=f+4,h=f+8;W8a(f,d,e);WP(h,e);V8a(g,d,h);N(a,f,g);b=f}e9a.X=1;function W8a(a,d,e){var f=d+30,d=c[d]+c[f+1],f=c[f];v[0!=(f&1|0)?c[c[d]+(f-1)]:f](a,d,e)}W8a.X=1;function V8a(a,d,e){var f=b;b+=8;var g=f+4,h=d+30,i=c[d+1]+c[h+1],h=c[h],h=0!=(h&1|0)?c[c[i]+(h-1)]:h;Bo(g,d+2,e);v[h](f,i,g);vw(a,d+14,f);b=f}V8a.X=1;function b0(a,d,e){k[d+c[d+8]+4]=0;var f=a+91,g=c[f]-1;c[f]=g;c[d+c[d+8]]=c[a+(g+87)];f=d+8;g=c[f];c[f]=g+1;d9a(a,e,c[d+g])}b0.X=1;function Y8a(a){for(var d=a+15,e=d+512;!(d+=8,(d|0)==(e|0));){}d=a+527;for(e=d+2304;!(d+=18,(d|0)==(e|0));){}f9a(a+2832);f9a(a+2834);i9a(a)}Y8a.X=1;function i9a(a){var d=b;b+=7;var e=d+4,f=d+5,g=d+6;c[a]=9;k[e]=0;k[f]=0;k[g]=0;H(d,e,f,g);e=a+10;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3];k[a+14]=0;e=c[a+2831]=0;f=a+2834;for(a+=527;!(g0(f,a+18*(-e+127)),e=g=e+1,128<=g>>>0);){}b=d}i9a.X=1;function R8a(a,d){c[a]=c[d];k[a]=k[d];c[a+1]=c[d+1];k[a+1]=k[d+1];Wb(a+2,d+2);xi(a+14,d+14);var e=d+30,f=c[e+1],g=a+30;c[g]=c[e];c[g+1]=f;return a}R8a.X=1;function S8a(a,d,e,f){var g=b;b+=13;var h,i,j=g+4,l=g+5,m=g+9;N(g,d,a);i=Um(g);var n=0=p)){d=k[j];k[e+1]=d;k[e]=1-d;c[f]=3;Q(l,g,j);wn(m,a,l);h=Um(m);break a}}else{k[j]=0}}while(0);k[e]=1;k[e+1]=0;c[f]=1;h=Um(a)}else{h=-1}}while(0);b=g;return h}S8a.X=1;function T8a(a,d,e,f,g){var h=b;b+=47;var i=h+3,j=h+15,l,m,n=h+19,p=h+21,r,s=h+22,t,w,x=h+26,y=h+30,z=h+31,A=h+35,C=h+39,B=h+43;c[h]=a;l=h+1;c[l]=d;c[l+1]=e;N(i,a,d);l=i+4;N(l,d,e);N(l+4,e,a);qn(j,i,i+4);l=Um(j);if(0m||w>>0){break}}0>m&&(n=J(a,j),a=ec(l),k[y]=n/l,Q(x,j,y),m=Um(x),c[g]=7,N(z,d,x),qn(A,i+4,z),k[f]=JB(A)/a,N(C,e,x),qn(B,i+8,C),k[f+1]=JB(B)/a,k[f+2]=1-(k[f]+k[f+1]));d=m}else{d=-1}b=h;return d}T8a.X=1;function Q8a(a,d){var e=a+30;c[e]=d&1?6:8;c[e+1]=0}Q8a.X=1;function U8a(a,d,e,f,g,h){var i=b;b+=36;var j,l,m=i+4,n,p=i+16;j=i+20;var r=i+24,s=i+28,t=i+31,w,x=i+32,y;c[i]=a;n=i+1;c[n]=d;n+=1;c[n]=e;c[n+1]=f;N(m,a,f);n=m+4;N(n,d,f);N(n+4,e,f);n=h0(m,m+4,m+8);N(j,d,e);N(r,a,d);qn(p,j,r);p=0>=n*J(a,p)&1;do{if(p){if(0l||y>>0){break}}0>l&&(l=0,c[h]=15,k[g]=h0(e,d,f)/n,k[g+1]=h0(a,e,f)/n,k[g+2]=h0(d,a,f)/n,k[g+3]=1-(k[g]+k[g+1]+k[g+2]));j=18}else{j=17}}else{j=17}}while(0);17==j&&(l=-1);b=i;return l}U8a.X=1;function N8a(a){var d=b;b+=7;var e=d+4,f=d+5,g=d+6;k[e]=0;k[f]=0;k[g]=0;H(d,e,f,g);e=a+32;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3];c[a+91]=0;c[a+94]=2;c[a+92]=0;k[a+36]=0;b=d}N8a.X=1;function l9a(a,d,e,f,g,h,i,j,l,m,n){var p=b;b+=18;var r=p+4;$2=a;$3=d;$11=m;$12=n;N(p,g+12,h+12);X8a(e,g,f,h,p,r,1)?(a=r+1,c[j]=c[a],k[j]=k[a],c[j+1]=c[a+1],k[j+1]=k[a+1],c[j+2]=c[a+2],k[j+2]=k[a+2],c[j+3]=c[a+3],k[j+3]=k[a+3],j=r+5,c[l]=c[j],k[l]=k[j],c[l+1]=c[j+1],k[l+1]=k[j+1],c[l+2]=c[j+2],k[l+2]=k[j+2],c[l+3]=c[j+3],k[l+3]=k[j+3],l=r+9,c[i]=c[l],k[i]=k[l],c[i+1]=c[l+1],k[i+1]=k[l+1],c[i+2]=c[l+2],k[i+2]=k[l+2],c[i+3]=c[l+3],k[i+3]=k[l+3],i=1):(L8a(e,g,f,h,p,r)&&(a=r+1,c[j]=c[a],k[j]=k[a],c[j+1]=c[a+1],k[j+1]=k[a+1],c[j+2]=c[a+2],k[j+2]=k[a+2],c[j+3]=c[a+3],k[j+3]=k[a+3],j=r+5,c[l]=c[j],k[l]=k[j],c[l+1]=c[j+1],k[l+1]=k[j+1],c[l+2]=c[j+2],k[l+2]=k[j+2],c[l+3]=c[j+3],k[l+3]=k[j+3],l=r+9,c[i]=c[l],k[i]=k[l],c[i+1]=c[l+1],k[i+1]=k[l+1],c[i+2]=c[l+2],k[i+2]=k[l+2],c[i+3]=c[l+3],k[i+3]=k[l+3]),i=0);b=p;return i}l9a.X=1;function m9a(a){xe(a)}m9a.X=1;function kZ(a,d,e,f,g){var h=b;b+=3;var i=h+1,j=h+2;XW(a);c[a]=l0+2;k[h]=0;k[i]=1;k[j]=0;H(a+1,h,i,j);c[a+5]=g;c[a+6]=f;c[a+7]=d;c[a+8]=e;c[a+9]=Ie(d);c[a+10]=Ie(e);k[a+11]=v[c[c[d]+11]](d);k[a+12]=v[c[c[e]+11]](e);c[a+13]=0;c[a+15]=-1;c[a+18]=1;b=h}kZ.X=1;function BWa(a,d,e,f,g,h,i,j,l){var m=b;b+=3;var n=m+1,p=m+2;XW(a);c[a]=l0+2;k[m]=0;k[n]=1;k[p]=0;H(a+1,m,n,p);c[a+5]=l;c[a+6]=j;c[a+7]=d;c[a+8]=e;c[a+9]=f;c[a+10]=g;k[a+11]=h;k[a+12]=i;c[a+13]=0;c[a+15]=-1;c[a+18]=1;b=m}BWa.X=1;function gZ(a,d,e,f,g){$5=g&1;n9a(a,d,e,f)}gZ.X=1;function o9a(a){return 4==(c[a]|0)}o9a.X=1;function n9a(a,d,e,f){var g=b;b+=141;var h,i=g+4,j=g+5,l=g+6,m=g+7,n=g+11,p=g+15,r=g+31,s=g+47,t=g+51,w=g+55,x=g+56,y=g+57,z=g+58,A=g+59,C=g+60,B,K=g+61,E=g+65,G=g+69,M=g+73,L=g+77,F=g+81,I=g+85,R=g+89,O=g+93,Z=g+97,P=g+98,S=g+102,da=g+103,V=g+107,ba=g+108,$=g+112,Y=g+116,la=g+120,ka=g+121,ja=g+125,ea=g+129,ca=g+133,W=g+137;h=k[a+14]=0;k[i]=0;k[j]=0;k[l]=0;H(g,i,j,l);sQ(p,d);sQ(r,d+16);wn(t,p+12,r+12);k[w]=.5;Q(s,t,w);JC(p+12,s);JC(r+12,s);i=(Gf(c[a+7])?Gf(c[a+8]):0)&1;k[x]=k[a+11];k[y]=k[a+12];c[p9a]+=1;c[a+13]&1&&(k[x]=0,k[y]=0);c[a+16]=0;k[z]=0;k[A]=1;k[C]=0;pe(a+1,z,A,C);j=A=0;c[a+17]=0;c[a+15]=-1;C=0xde0b6b000000000;z=k[x]+k[y];fZ(c[a+6]);var l=a+1,t=a+1,w=a+7,U=a+8,X=a+1,ma=a+6,ga=a+6,ha=a+6,ta=a+1,ra=a+16,ua=a+6;a:for(;;){WP(E,l);rn(K,E,d);rn(G,t,d+16);kf(M,c[w],K);kf(L,c[U],G);vw(F,p,M);vw(I,r,L);i&1&&(k[F+2]=0,k[I+2]=0);N(R,F,I);var za=J(X,R);B=za;za=0C*k[d+32]){c[a+17]=10;j=1;break a}}while(0);if(q9a(c[ma],R)){j=c[a+17]=1;break}B=C-B;if(B<=9.999999974752427e-7*C){c[a+17]=0>=B?2:11;j=1;break}r9a(c[ga],R,F,I);if(!s9a(c[ha],O)){c[a+17]=3;j=1;break}if(9.999999974752427e-7>Um(O)){K=a+1;c[K]=c[O];k[K]=k[O];c[K+1]=c[O+1];k[K+1]=k[O+1];c[K+2]=c[O+2];k[K+2]=k[O+2];c[K+3]=c[O+3];k[K+3]=k[O+3];c[a+17]=6;j=1;break}B=C;C=Um(O);if(B-C<=1.1920928955078125e-7*B){j=1;c[a+17]=12;break}c[ta]=c[O];k[ta]=k[O];c[ta+1]=c[O+1];k[ta+1]=k[O+1];c[ta+2]=c[O+2];k[ta+2]=k[O+2];c[ta+3]=c[O+3];k[ta+3]=k[O+3];B=c[ra];c[ra]=B+1;if(1e3<(B|0)){break}if(!((o9a(c[ua])^1)&1)){c[a+17]=13;break}}j&1&&(t9a(c[a+6],m,n),O=a+1,c[g]=c[O],k[g]=k[O],c[g+1]=c[O+1],k[g+1]=k[O+1],c[g+2]=c[O+2],k[g+2]=k[O+2],c[g+3]=c[O+3],k[g+3]=k[O+3],O=Um(a+1),1e-4>O&&(c[a+17]=5),K=O,1.4210854715202004e-14h+z:0)&1;a:do{if((!(A&1)||Z&1)&&0!=(c[a+5]|0)){if(c[u9a]+=1,EC(a+1),P=c[a+5],v[c[c[P]+2]](P,c[a+6],c[a+7],c[a+8],p,r,a+1,ba,$,f,c[d+33])&1){if(N(Y,$,ba),S=P=Um(Y),1.4210854715202004e-14>=S&&(P=Y,S=a+1,c[P]=c[S],k[P]=k[S],c[P+1]=c[S+1],k[P+1]=k[S+1],c[P+2]=c[S+2],k[P+2]=k[S+2],c[P+3]=c[S+3],k[P+3]=k[S+3],P=S=Um(a+1)),1.4210854715202004e-14=h){c[a+15]=8;break a}}while(0);h=P;A=m;P=ba;c[A]=c[P];k[A]=k[P];c[A+1]=c[P+1];k[A+1]=k[P+1];c[A+2]=c[P+2];k[A+2]=k[P+2];c[A+3]=c[P+3];k[A+3]=k[P+3];A=n;P=$;c[A]=c[P];k[A]=k[P];c[A+1]=c[P+1];k[A+1]=k[P+1];c[A+2]=c[P+2];k[A+2]=k[P+2];c[A+3]=c[P+3];k[A+3]=k[P+3];A=g;P=Y;c[A]=c[P];k[A]=k[P];c[A+1]=c[P+1];k[A+1]=k[P+1];c[A+2]=c[P+2];k[A+2]=k[P+2];c[A+3]=c[P+3];k[A+3]=k[P+3];A=1;c[a+15]=3}else{c[a+15]=9}}else{if(0=h){c[a+15]=5;break a}}while(0);h=P;A=m;P=ba;c[A]=c[P];k[A]=k[P];c[A+1]=c[P+1];k[A+1]=k[P+1];c[A+2]=c[P+2];k[A+2]=k[P+2];c[A+3]=c[P+3];k[A+3]=k[P+3];A=n;P=$;c[A]=c[P];k[A]=k[P];c[A+1]=c[P+1];k[A+1]=k[P+1];c[A+2]=c[P+2];k[A+2]=k[P+2];c[A+3]=c[P+3];k[A+3]=k[P+3];Q(ea,a+1,x);JC(m,ea);Q(ca,a+1,y);xn(n,ca);A=g;P=a+1;c[A]=c[P];k[A]=k[P];c[A+1]=c[P+1];k[A+1]=k[P+1];c[A+2]=c[P+2];k[A+2]=k[P+2];c[A+3]=c[P+3];k[A+3]=k[P+3];IB(g);A=1;c[a+15]=6}}}}while(0);if(A&1&&(0>h||h*ha?a-.5&-1:a+.5&-1}n0.X=1;function z9a(a,d,e){var f;f=0;var g=c[a+24];0==(g|0)?f=k[c[a+23]+c[a+16]*e+d]:5==(g|0)?f=(c[c[a+23]+c[a+16]*e+d]&255|0)*k[a+22]:3==(g|0)&&(f=(c[c[a+23]+c[a+16]*e+d]<<16>>16|0)*k[a+22]);return f}z9a.X=1;function A9a(a){return a+28}A9a.X=1;function B9a(){}B9a.X=1;function C9a(a,d,e,f){var g=b;b+=58;var h=g+4,i=g+8,j=g+12,l=g+13,m=g+17,n=g+18,p=g+19,r=g+20,s=g+32,t=g+36,w=g+40,x=g+41,y=g+42,z=g+43,A=g+47,C=g+48,B=g+49,K=g+50,E=g+54;N(i,a+8,a+4);ig(h,i,a+28);k[j]=.5;Q(g,h,j);k[m]=0;k[n]=0;k[p]=0;H(l,m,n,p);k[l+c[a+27]]=.5*(k[a+18]+k[a+19]);JL(l,a+28);qc(r,d);d+=12;c[s]=c[d];k[s]=k[d];c[s+1]=c[d+1];k[s+1]=k[d+1];c[s+2]=c[d+2];k[s+2]=k[d+2];c[s+3]=c[d+3];k[s+3]=k[d+3];k[w]=J(0+r,g);k[x]=J(4+r,g);k[y]=J(8+r,g);H(t,w,x,y);k[A]=v[c[c[a]+11]](a);k[C]=v[c[c[a]+11]](a);k[B]=v[c[c[a]+11]](a);H(z,A,C,B);xn(t,z);N(K,s,t);c[e]=c[K];k[e]=k[K];c[e+1]=c[K+1];k[e+1]=k[K+1];c[e+2]=c[K+2];k[e+2]=k[K+2];c[e+3]=c[K+3];k[e+3]=k[K+3];wn(E,s,t);c[f]=c[E];k[f]=k[E];c[f+1]=c[E+1];k[f+1]=k[E+1];c[f+2]=c[E+2];k[f+2]=k[E+2];c[f+3]=c[E+3];k[f+3]=k[E+3];b=g}C9a.X=1;function o0(a,d,e,f){var g=b;b+=9;var h,i=g+1,j=g+2,l=g+3,m=g+4,n=g+5,p=g+6,r=g+7,s=g+8;h=v[c[c[a]+16]](a,d,e);var t=c[a+27];0==(t|0)?(k[g]=h-k[a+12],k[i]=-k[a+20]/2+(d|0),k[j]=-k[a+21]/2+(e|0),pe(f,g,i,j)):1==(t|0)?(k[l]=-k[a+20]/2+(d|0),k[m]=h-k[a+12+1],k[n]=-k[a+21]/2+(e|0),pe(f,l,m,n)):2==(t|0)&&(k[p]=-k[a+20]/2+(d|0),k[r]=-k[a+21]/2+(e|0),k[s]=h-k[a+12+2],pe(f,p,r,s));JL(f,a+28);b=g}o0.X=1;function D9a(a,d,e,f){var g=b;b+=4;$5=f;c[g]=c[e];k[g]=k[e];c[g+1]=c[e+1];k[g+1]=k[e+1];c[g+2]=c[e+2];k[g+2]=k[e+2];c[g+3]=c[e+3];k[g+3]=k[e+3];gp(g,a+4);hp(g,a+8);c[d]=n0(k[g]);c[d+1]=n0(k[g+1]);c[d+2]=n0(k[g+2]);b=g}D9a.X=1;function E9a(a,d,e,f){var g=b;b+=40;var h,i=g+4,j=g+8,l=g+9,m=g+10,n=g+11,p=g+15,r=g+19,s=g+20,t=g+21,w=g+22,x=g+25,y=g+28;k[j]=1/k[a+28];k[l]=1/k[a+28+1];k[m]=1/k[a+28+2];H(i,j,l,m);ig(g,e,i);k[r]=1/k[a+28];k[s]=1/k[a+28+1];k[t]=1/k[a+28+2];H(p,r,s,t);ig(n,f,p);xn(g,a+12);xn(n,a+12);D9a(a,w,g,0);D9a(a,x,n,1);for(e=0;!(f=w+e,c[f]-=1,f=x+e,c[f]+=1,e=f=e+1,3<=(f|0));){}e=0;f=c[a+16]-1;j=0;i=c[a+17]-1;l=c[a+27];0==(l|0)?((c[w+1]|0)>(e|0)&&(e=c[w+1]),(c[x+1]|0)<(f|0)&&(f=c[x+1]),(c[w+2]|0)>(j|0)&&(j=c[w+2]),(c[x+2]|0)<(i|0)&&(i=c[x+2])):1==(l|0)?((c[w]|0)>(e|0)&&(e=c[w]),(c[x]|0)<(f|0)&&(f=c[x]),(c[w+2]|0)>(j|0)&&(j=c[w+2]),(c[x+2]|0)<(i|0)&&(i=c[x+2])):2==(l|0)&&((c[w]|0)>(e|0)&&(e=c[w]),(c[x]|0)<(f|0)&&(f=c[x]),(c[w+1]|0)>(j|0)&&(j=c[w+1]),(c[x+1]|0)<(i|0)&&(i=c[x+1]));w=j;j=(w|0)<(i|0);a:do{if(j){for(var l=a+25,m=y,n=y+4,p=y+8,s=r=y,t=y+4,z=y+8,A=y,C=a+26,B=y,K=y+4,E=y+8,G=y,M=y,L=y+4,F=y+8,I=y;;){var x=e,R=(x|0)<(f|0);b:do{if(R){for(;;){if(c[l]&1?h=35:c[C]&1&&0==(x+w&1|0)?h=35:(o0(a,x,w,B),o0(a,x,w+1,K),o0(a,x+1,w,E),h=d,v[c[c[h]+2]](h,G,x,w),o0(a,x+1,w,M),o0(a,x,w+1,L),o0(a,x+1,w+1,F),h=d,v[c[c[h]+2]](h,I,x,w),h=37),35==h&&(o0(a,x,w,m),o0(a,x+1,w,n),o0(a,x+1,w+1,p),h=d,v[c[c[h]+2]](h,r,x,w),o0(a,x,w,s),o0(a,x+1,w+1,t),o0(a,x,w+1,z),h=d,v[c[c[h]+2]](h,A,x,w)),x+=1,(x|0)>=(f|0)){break b}}}}while(0);w+=1;if((w|0)>=(i|0)){break a}}}}while(0);b=g}E9a.X=1;function F9a(a,d,e){var f=b;b+=3;var g=f+1,h=f+2;$2=a;$3=d;k[f]=0;k[g]=0;k[h]=0;pe(e,f,g,h);b=f}F9a.X=1;function G9a(a,d){var e=a+28;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}G9a.X=1;function H9a(){}H9a.X=1;function I9a(a,d,e){var f=b;b+=12;var g=f+4,h=f+8;c[f]=c[a];k[f]=k[a];c[f+1]=c[a+1];k[f+1]=k[a+1];c[f+2]=c[a+2];k[f+2]=k[a+2];c[f+3]=c[a+3];k[f+3]=k[a+3];c[g]=c[d];k[g]=k[d];c[g+1]=c[d+1];k[g+1]=k[d+1];c[g+2]=c[d+2];k[g+2]=k[d+2];c[g+3]=c[d+3];k[g+3]=k[d+3];c[h]=c[e];k[h]=k[e];c[h+1]=c[e+1];k[h+1]=k[e+1];c[h+2]=c[e+2];k[h+2]=k[e+2];c[h+3]=c[e+3];k[h+3]=k[e+3];a=ee(J(h,f),J(h,g));b=f;return a}I9a.X=1;function J9a(a,d){var e;e=K9a(a,d);return-1==(e|0)?0:RV(a+10,e)}J9a.X=1;function K9a(a,d){var e;e=xW(a+10)-1&SL(d);if(e>>>0>=rW(a)>>>0){e=-1}else{var f=c[sW(a,e)];e=f;for(var g=a+15,h=a+5;-1!=(f|0)&&0==(cM(d,DKa(g,e))&1|0);){e=f=c[sW(h,e)]}}return e}K9a.X=1;function L9a(a){xe(a)}L9a.X=1;function M9a(a,d,e){var f,g,h;f=xW(a+10)-1&SL(d);g=K9a(a,d);h=a+10;-1!=(g|0)?(a=RV(h,g),c[a]=c[e],k[a]=k[e],c[a+1]=c[e+1],k[a+1]=k[e+1],c[a+2]=c[e+2],k[a+2]=k[e+2],c[a+3]=c[e+3],k[a+3]=k[e+3]):(g=tW(h),h=xW(a+10),N9a(a+10,e),O9a(a+15,d),(h|0)<(xW(a+10)|0)&&(P9a(a,d),f=xW(a+10)-1&SL(d)),c[QV(a+5,g)]=c[QV(a,f)],c[QV(a,f)]=g)}M9a.X=1;function Q9a(a,d,e,f){var g=b;b+=206;var h=g+3,i=g+6,j=g+10,l=g+14,m=g+18,n=g+22,p=g+26,r,s,t=g+30,w=g+34,x=g+35,y=g+39,z=g+40,A=g+41,C=g+45,B,K=g+71,E=g+97,G=g+101,M=g+105,L=g+109,F=g+113,I=g+117,R=g+118,O=g+122,Z=g+126,P=g+130,S=g+131,da=g+135,V,ba=g+139,$=g+143,Y=g+147,la=g+148,ka=g+152,ja=g+164,ea=g+168,ca=g+172,W=g+173,U=g+177,X=g+178,ma=g+182,ga=g+186,ha=g+187,ta=g+191,ra=g+192,ua=g+196,za=g+200,Za=g+201,ib=g+205,e=(c[a+1]|0)==(e|0)?(c[a+2]|0)==(f|0)?49:4:4;a:do{if(4==e&&(f=0,r=g,c[r]=-1,k[r]=-1,c[r+1]=-1,k[r+1]=-1,c[r+2]=-1,k[r+2]=-1,r=h,c[r]=-1,k[r]=-1,c[r+1]=-1,k[r+1]=-1,c[r+2]=-1,k[r+2]=-1,N(i,d+4,d),N(j,d+8,d),qn(l,i,j),Um(l)>=k[c[a+4]+23]&&(N(m,c[a+3]+4,c[a+3]),N(n,c[a+3]+8,c[a+3]),qn(p,m,n),Um(p)>=k[c[a+4]+23]))){r=0;B=a+3;V=a+4;for(s=0;3>(s|0);){for(var Ca=s=0;3>(Ca|0);){N(t,(r<<2)+c[B],(s<<2)+d);if(Um(t)J(M,F)&&(k[I]=-1,LC(M,I)),qn(O,A,G),V=R,s=IB(O),c[V]=c[s],k[V]=k[s],c[V+1]=c[s+1],k[V+1]=k[s+1],c[V+2]=c[s+2],k[V+2]=k[s+2],c[V+3]=c[s+3],k[V+3]=k[s+3],N(Z,(B<<2)+d,(c[h]<<2)+d),0>J(R,Z)&&(k[P]=-1,LC(R,P)),qn(S,M,R),s=Um(S),B=0,V=da,Ca=E,c[V]=c[Ca],k[V]=k[Ca],c[V+1]=c[Ca+1],k[V+1]=k[Ca+1],c[V+2]=c[Ca+2],k[V+2]=k[Ca+2],c[V+3]=c[Ca+3],k[V+3]=k[Ca+3],V=0,sJ(E,R)&1,B=V&1?B:-B,k[Y]=-B,IV($,S,Y),zb(ka,$),Bo(la,ka,E),s=da,Ca=la,c[s]=c[Ca],k[s]=k[Ca],c[s+1]=c[Ca+1],k[s+1]=k[Ca+1],c[s+2]=c[Ca+2],k[s+2]=k[Ca+2],c[s+3]=c[Ca+3],k[s+3]=k[Ca+3]),1==(r|0)?(N(ja,c[a+3],c[a+3]+4),k[ca]=-B,IV(ea,ja,ca),tw(W,ea,E),0>J(W,G)&&(k[U]=-1,LC(W,U),r=f,c[r]|=8),k[f+1]=-B,V&1&&(c[f]|=1)):2==(r|0)?(N(X,c[a+3]+8,c[a+3]),k[ga]=-B,IV(ma,X,ga),tw(ha,ma,E),0>J(ha,G)&&(k[ta]=-1,LC(ha,ta),r=f,c[r]|=32),k[f+3]=-B,V&1&&(c[f]|=4)):3==(r|0)&&(N(ra,c[a+3]+4,c[a+3]+8),k[za]=-B,IV(ua,ra,za),tw(Za,ua,E),0>J(Za,G)&&(r=f,c[r]|=16,k[ib]=-1,LC(Za,ib)),k[f+2]=-B,V&1&&(c[f]|=2)),$30=8,EX(K),EX(C))}}while(0);b=g}Q9a.X=1;function R9a(a,d){$1=a;return 0!=(d|0)?d<<1:1}R9a.X=1;function S9a(a,d){$1=a;return 0!=(d|0)?d<<1:1}S9a.X=1;function N9a(a,d){(tW(a)|0)==(xW(a)|0)&&PKa(a,S9a(a,tW(a)));var e=(c[a+1]<<2)+c[a+3];0!=(e|0)&&(c[e]=c[d],k[e]=k[d],c[e+1]=c[d+1],k[e+1]=k[d+1],c[e+2]=c[d+2],k[e+2]=k[d+2],c[e+3]=c[d+3],k[e+3]=k[d+3]);e=a+1;c[e]+=1}N9a.X=1;function O9a(a,d){(uW(a)|0)==(KKa(a)|0)&&QKa(a,R9a(a,uW(a)));var e=c[a+3]+c[a+1];0!=(e|0)&&(c[e]=c[d],k[e]=k[d]);e=a+1;c[e]+=1}O9a.X=1;function P9a(a,d){var e=b;b+=2;var f,g,h=e+1,i,j;$3=d;f=xW(a+10);var l=(rW(a)|0)<(f|0);a:do{if(l){g=rW(a);c[e]=0;PV(a,f,e);c[h]=0;PV(a+5,f,h);i=0;j=(i|0)<(f|0);b:do{if(j){for(var m=a;;){if(c[QV(m,i)]=-1,i+=1,(i|0)>=(f|0)){break b}}}}while(0);i=0;j=(i|0)<(f|0);b:do{if(j){for(m=a+5;;){if(c[QV(m,i)]=-1,i+=1,(i|0)>=(f|0)){break b}}}}while(0);i=0;if((i|0)<(g|0)){for(var m=a+15,n=a+10,p=a,r=a+5,s=a;;){if(j=xW(n)-1&SL(QHa(m,i)),c[QV(r,i)]=c[QV(p,j)],c[QV(s,j)]=i,i+=1,(i|0)>=(g|0)){break a}}}}}while(0);b=e}P9a.X=1;function AI(a,d,e){FW(a);c[a]=HW+2;c[a+1]=0;c[a+34]=d;c[a+35]=e;var f=a+36;c[f]=-1;k[f]=-1;c[f+1]=-1;k[f+1]=-1;c[f+2]=-1;k[f+2]=-1;c[f+3]=-1;k[f+3]=-1;xi(a+2,d+1);xi(a+18,e+1)}AI.X=1;function p0(a,d,e,f){var g=b;b+=102;var h=g+1,i=g+5,j=g+9,l=g+13,m=g+17,n=g+21,p=g+25,r=g+29,s=g+33;k[g]=f;if(k[g]<=ck(c[a+1])&&(f=($j(c[a+1])|0)!=(c[a+34]|0)&1,Q(i,d,g),wn(h,e,i),f&1?(kQ(m,a+18,h),c[j]=c[m],k[j]=k[m],c[j+1]=c[m+1],k[j+1]=k[m+1],c[j+2]=c[m+2],k[j+2]=k[m+2],c[j+3]=c[m+3],k[j+3]=k[m+3],kQ(n,a+2,e),c[l]=c[n],k[l]=k[n],c[l+1]=c[n+1],k[l+1]=k[n+1],c[l+2]=c[n+2],k[l+2]=k[n+2],c[l+3]=c[n+3],k[l+3]=k[n+3]):(kQ(p,a+2,h),c[j]=c[p],k[j]=k[p],c[j+1]=c[p+1],k[j+1]=k[p+1],c[j+2]=c[p+2],k[j+2]=k[p+2],c[j+3]=c[p+3],k[j+3]=k[p+3],kQ(r,a+18,e),c[l]=c[r],k[l]=k[r],c[l+1]=c[r+1],k[l+1]=k[r+1],c[l+2]=c[r+2],k[l+2]=k[r+2],c[l+3]=c[r+3],k[l+3]=k[r+3]),EU(s,j,l,d,k[g]),d=s+12,c[d]=c[h],k[d]=k[h],c[d+1]=c[h+1],k[d+1]=k[h+1],c[d+2]=c[h+2],k[d+2]=k[h+2],c[d+3]=c[h+3],k[d+3]=k[h+3],h=s+8,c[h]=c[e],k[h]=k[e],c[h+1]=c[e+1],k[h+1]=k[e+1],c[h+2]=c[e+2],k[h+2]=k[e+2],c[h+3]=c[e+3],k[h+3]=k[e+3],e=Ak(c[a+1],s),k[s+21]=T9a(c[a+34],c[a+35]),k[s+22]=U9a(c[a+34],c[a+35]),f&1?(c[s+23]=c[a+37],c[s+24]=c[a+36],c[s+25]=c[a+39],c[s+26]=c[a+38]):(c[s+23]=c[a+36],c[s+24]=c[a+37],c[s+25]=c[a+38],c[s+26]=c[a+39]),h=c[a+1],0<=(e|0)?Ek(h,s,e):e=zk(h,s),0!=(c[V9a]|0)&&!(0==($h(c[a+34])&8|0)&&0==($h(c[a+35])&8|0)))){v[c[V9a]](c[a+1]+69*e+1,f&1?c[a+35]:c[a+34],c[s+23],c[s+25],f&1?c[a+34]:c[a+35],c[s+24],c[s+26])}b=g}p0.X=1;function T9a(a,d){var e;e=Nh(a)*Nh(d);$MAX_FRICTION=10;var f=e;-10>f?e=-10:10=(P|0)){break a}}}}while(0);var Lc=v[c[c[e]+19]](e),Dc=0!=(Lc|0);a:do{if(Dc&&($=0,($|0)<(Lc|0))){for(var Eb=Y,Ra=la,qb=Y,Ab=ka,hc=ea;;){var Hc=e;v[c[c[Hc]+20]](Hc,$,Y);Bo(la,g,Y);c[Eb]=c[Ra];k[Eb]=k[Ra];c[Eb+1]=c[Ra+1];k[Eb+1]=k[Ra+1];c[Eb+2]=c[Ra+2];k[Eb+2]=k[Ra+2];c[Eb+3]=c[Ra+3];k[Eb+3]=k[Ra+3];q0();var ic=(P<<2)+r0;c[ic]=c[qb];k[ic]=k[qb];c[ic+1]=c[qb+1];k[ic+1]=k[qb+1];c[ic+2]=c[qb+2];k[ic+2]=k[qb+2];c[ic+3]=c[qb+3];k[ic+3]=k[qb+3];WP(ja,Y);rn(ka,ja,g);var db=(P<<2)+R;c[db]=c[Ab];k[db]=k[Ab];c[db+1]=c[Ab+1];k[db+1]=k[Ab+1];c[db+2]=c[Ab+2];k[db+2]=k[Ab+2];c[db+3]=c[Ab+3];k[db+3]=k[Ab+3];rn(ea,Y,h);var bb=(P<<2)+O;c[bb]=c[hc];k[bb]=k[hc];c[bb+1]=c[hc+1];k[bb+1]=k[hc+1];c[bb+2]=c[hc+2];k[bb+2]=k[hc+2];c[bb+3]=c[hc+3];k[bb+3]=k[hc+3];P+=1;$+=1;if(($|0)>=(Lc|0)){break a}}}}while(0);var id=v[c[c[f]+19]](f),Zc=0!=(id|0);a:do{if(Zc&&(ca=0,(ca|0)<(id|0))){for(var vb=W,rb=U,vc=W,Qc=X,Rc=ga;;){var Xd=f;v[c[c[Xd]+20]](Xd,ca,W);Bo(U,h,W);c[vb]=c[rb];k[vb]=k[rb];c[vb+1]=c[rb+1];k[vb+1]=k[rb+1];c[vb+2]=c[rb+2];k[vb+2]=k[rb+2];c[vb+3]=c[rb+3];k[vb+3]=k[rb+3];q0();var Sc=(P<<2)+r0;c[Sc]=c[vc];k[Sc]=k[vc];c[Sc+1]=c[vc+1];k[Sc+1]=k[vc+1];c[Sc+2]=c[vc+2];k[Sc+2]=k[vc+2];c[Sc+3]=c[vc+3];k[Sc+3]=k[vc+3];WP(ma,W);rn(X,ma,g);var Mc=(P<<2)+R;c[Mc]=c[Qc];k[Mc]=k[Qc];c[Mc+1]=c[Qc+1];k[Mc+1]=k[Qc+1];c[Mc+2]=c[Qc+2];k[Mc+2]=k[Qc+2];c[Mc+3]=c[Qc+3];k[Mc+3]=k[Qc+3];rn(ga,W,h);var $c=(P<<2)+O;c[$c]=c[Rc];k[$c]=k[Rc];c[$c+1]=c[Rc+1];k[$c+1]=k[Rc+1];c[$c+2]=c[Rc+2];k[$c+2]=k[Rc+2];c[$c+3]=c[Rc+3];k[$c+3]=k[Rc+3];P+=1;ca+=1;if((ca|0)>=(id|0)){break a}}}}while(0);v[c[c[e]+17]](e,R,F,P);v[c[c[f]+17]](f,O,I,P);Z=0;var Cd=(Z|0)<(P|0);a:do{if(Cd){for(var wc=ha,Bb=C,fd=B,ad=K,wd=E,Kd=G,Rd=ta,Ec=M,xd=ra,od=L,pd=ua,bd=p,jd=ha,Ld=z,Gd=G,Dd=A,fe=M;;){q0();var ge=(Z<<2)+r0;c[wc]=c[ge];k[wc]=k[ge];c[wc+1]=c[ge+1];k[wc+1]=k[ge+1];c[wc+2]=c[ge+2];k[wc+2]=k[ge+2];c[wc+3]=c[ge+3];k[wc+3]=k[ge+3];s&1&&(k[ha+2]=0);if(.01=(P|0)){break a}}}}while(0);k[ib]=Mf(e);Q(Za,p,ib);xn(z,Za);k[Sa]=Mf(f);Q(Ca,p,Sa);JC(A,Ca);if(0>t){r=0}else{var pg=Mf(e);t=t+pg+Mf(f)+.5;kZ(mb,e,f,d,0);k[Oa]=t;Q(Pa,p,Oa);QQ(fc);wn(jb,g+12,Pa);sQ(La,g);pQ(La,jb);xi(fc,La);xi(fc+16,h);k[fc+32]=0xde0b6b000000000;Y9a(fb);WP(Rb,p);Z9a(mb,Rb);gZ(mb,fc,fb,m,0);k[pb]=t-k[fb+9];k[Sb]=1;LC(p,Sb);if(c[fb+10]&1){Q(Ib,p,pb);N(ab,fb+5,Ib);c[j]=c[ab];k[j]=k[ab];c[j+1]=c[ab+1];k[j+1]=k[ab+1];c[j+2]=c[ab+2];k[j+2]=k[ab+2];c[j+3]=c[ab+3];k[j+3]=k[ab+3];var Ze=fb+5;c[l]=c[Ze];k[l]=k[Ze];c[l+1]=c[Ze+1];k[l+1]=k[Ze+1];c[l+2]=c[Ze+2];k[l+2]=k[Ze+2];c[l+3]=c[Ze+3];k[l+3]=k[Ze+3];c[i]=c[p];k[i]=k[p];c[i+1]=c[p+1];k[i+1]=k[p+1];c[i+2]=c[p+2];k[i+2]=k[p+2];c[i+3]=c[p+3];k[i+3]=k[p+3]}r=c[fb+10]&1;$39=1}var Xg=r;b=p;return Xg}X9a.X=1;function q0(){var a=b;b+=126;var d=a+1,e=a+2,f=a+3,g=a+4,h=a+5,i=a+6,j=a+7,l=a+8,m=a+9,n=a+10,p=a+11,r=a+12,s=a+13,t=a+14,w=a+15,x=a+16,y=a+17,z=a+18,A=a+19,C=a+20,B=a+21,K=a+22,E=a+23,G=a+24,M=a+25,L=a+26,F=a+27,I=a+28,R=a+29,O=a+30,Z=a+31,P=a+32,S=a+33,da=a+34,V=a+35,ba=a+36,$=a+37,Y=a+38,la=a+39,ka=a+40,ja=a+41,ea=a+42,ca=a+43,W=a+44,U=a+45,X=a+46,ma=a+47,ga=a+48,ha=a+49,ta=a+50,ra=a+51,ua=a+52,za=a+53,Za=a+54,ib=a+55,Ca=a+56,Sa=a+57,mb=a+58,Oa=a+59,Pa=a+60,fc=a+61,jb=a+62,La=a+63,fb=a+64,Rb=a+65,pb=a+66,Sb=a+67,ab=a+68,Ib=a+69,Fc=a+70,Ac=a+71,ob=a+72,Gc=a+73,Yc=a+74,Cc=a+75,Ub=a+76,Uc=a+77,nd=a+78,Ic=a+79,tc=a+80,hd=a+81,Tb=a+82,Jc=a+83,ub=a+84,uc=a+85,Kc=a+86,gb=a+87,gc=a+88,Lc=a+89,Dc=a+90,Eb=a+91,Ra=a+92,qb=a+93,Ab=a+94,hc=a+95,Hc=a+96,ic=a+97,db=a+98,bb=a+99,id=a+100,Zc=a+101,vb=a+102,rb=a+103,vc=a+104,Qc=a+105,Rc=a+106,Xd=a+107,Sc=a+108,Mc=a+109,$c=a+110,Cd=a+111,wc=a+112,Bb=a+113,fd=a+114,ad=a+115,wd=a+116,Kd=a+117,Rd=a+118,Ec=a+119,xd=a+120,od=a+121,pd=a+122,bd=a+123,jd=a+124,Ld=a+125;0==c[$9a]<<24>>24&&0!=(Hb($9a)|0)&&(k[a]=0,k[d]=0,k[e]=-1,H(r0,a,d,e),k[f]=.7236080169677734,k[g]=-.5257250070571899,k[h]=-.44721901416778564,H(r0+4,f,g,h),k[i]=-.2763879895210266,k[j]=-.8506489992141724,k[l]=-.44721901416778564,H(r0+8,i,j,l),k[m]=-.8944259881973267,k[n]=0,k[p]=-.4472160041332245,H(r0+12,m,n,p),k[r]=-.2763879895210266,k[s]=.8506489992141724,k[t]=-.44721999764442444,H(r0+16,r,s,t),k[w]=.7236080169677734,k[x]=.5257250070571899,k[y]=-.44721901416778564,H(r0+20,w,x,y),k[z]=.2763879895210266,k[A]=-.8506489992141724,k[C]=.44721999764442444,H(r0+24,z,A,C),k[B]=-.7236080169677734,k[K]=-.5257250070571899,k[E]=.44721901416778564,H(r0+28,B,K,E),k[G]=-.7236080169677734,k[M]=.5257250070571899,k[L]=.44721901416778564,H(r0+32,G,M,L),k[F]=.2763879895210266,k[I]=.8506489992141724,k[R]=.44721901416778564,H(r0+36,F,I,R),k[O]=.8944259881973267,k[Z]=0,k[P]=.4472160041332245,H(r0+40,O,Z,P),k[S]=0,k[da]=0,k[V]=1,H(r0+44,S,da,V),k[ba]=.4253230094909668,k[$]=-.3090110123157501,k[Y]=-.8506540060043335,H(r0+48,ba,$,Y),k[la]=-.16245600581169128,k[ka]=-.49999499320983887,k[ja]=-.8506540060043335,H(r0+52,la,ka,ja),k[ea]=.2628690004348755,k[ca]=-.8090119957923889,k[W]=-.525738000869751,H(r0+56,ea,ca,W),k[U]=.4253230094909668,k[X]=.3090110123157501,k[ma]=-.8506540060043335,H(r0+60,U,X,ma),k[ga]=.8506479859352112,k[ha]=0,k[ta]=-.5257359743118286,H(r0+64,ga,ha,ta),k[ra]=-.5257300138473511,k[ua]=0,k[za]=-.8506519794464111,H(r0+68,ra,ua,za),k[Za]=-.6881899833679199,k[ib]=-.49999698996543884,k[Ca]=-.5257359743118286,H(r0+72,Za,ib,Ca),k[Sa]=-.16245600581169128,k[mb]=.49999499320983887,k[Oa]=-.8506540060043335,H(r0+76,Sa,mb,Oa),k[Pa]=-.6881899833679199,k[fc]=.49999698996543884,k[jb]=-.5257359743118286,H(r0+80,Pa,fc,jb),k[La]=.2628690004348755,k[fb]=.8090119957923889,k[Rb]=-.525738000869751,H(r0+84,La,fb,Rb),k[pb]=.9510579705238342,k[Sb]=.3090130090713501,k[ab]=0,H(r0+88,pb,Sb,ab),k[Ib]=.9510579705238342,k[Fc]=-.3090130090713501,k[Ac]=0,H(r0+92,Ib,Fc,Ac),k[ob]=.5877860188484192,k[Gc]=-.80901700258255,k[Yc]=0,H(r0+96,ob,Gc,Yc),k[Cc]=0,k[Ub]=-1,k[Uc]=0,H(r0+100,Cc,Ub,Uc),k[nd]=-.5877860188484192,k[Ic]=-.80901700258255,k[tc]=0,H(r0+104,nd,Ic,tc),k[hd]=-.9510579705238342,k[Tb]=-.3090130090713501,k[Jc]=0,H(r0+108,hd,Tb,Jc),k[ub]=-.9510579705238342,k[uc]=.3090130090713501,k[Kc]=0,H(r0+112,ub,uc,Kc),k[gb]=-.5877860188484192,k[gc]=.80901700258255,k[Lc]=0,H(r0+116,gb,gc,Lc),k[Dc]=0,k[Eb]=1,k[Ra]=0,H(r0+120,Dc,Eb,Ra),k[qb]=.5877860188484192,k[Ab]=.80901700258255,k[hc]=0,H(r0+124,qb,Ab,hc),k[Hc]=.6881899833679199,k[ic]=-.49999698996543884,k[db]=.5257359743118286,H(r0+128,Hc,ic,db),k[bb]=-.2628690004348755,k[id]=-.8090119957923889,k[Zc]=.525738000869751,H(r0+132,bb,id,Zc),k[vb]=-.8506479859352112,k[rb]=0,k[vc]=.5257359743118286,H(r0+136,vb,rb,vc),k[Qc]=-.2628690004348755,k[Rc]=.8090119957923889,k[Xd]=.525738000869751,H(r0+140,Qc,Rc,Xd),k[Sc]=.6881899833679199,k[Mc]=.49999698996543884,k[$c]=.5257359743118286,H(r0+144,Sc,Mc,$c),k[Cd]=.5257300138473511,k[wc]=0,k[Bb]=.8506519794464111,H(r0+148,Cd,wc,Bb),k[fd]=.16245600581169128,k[ad]=-.49999499320983887,k[wd]=.8506540060043335,H(r0+152,fd,ad,wd),k[Kd]=-.4253230094909668,k[Rd]=-.3090110123157501,k[Ec]=.8506540060043335,H(r0+156,Kd,Rd,Ec),k[xd]=-.4253230094909668,k[od]=.3090110123157501,k[pd]=.8506540060043335,H(r0+160,xd,od,pd),k[bd]=.16245600581169128,k[jd]=.49999499320983887,k[Ld]=.8506540060043335,H(r0+164,bd,jd,Ld));b=a;return r0}q0.X=1;function Z9a(a,d){var e=a+1;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}Z9a.X=1;function a$a(){}a$a.X=1;function b$a(){}b$a.X=1;function c$a(){}c$a.X=1;function d$a(){return D.ae}d$a.X=1;function e$a(){}e$a.X=1;function f$a(a){return c[a+1]}f$a.X=1;function g$a(a,d){return c[a+3]+d}g$a.X=1;function h$a(a){xe(a)}h$a.X=1;function i$a(){}i$a.X=1;function Y9a(a){FW(a);c[a]=j$a+2;c[a+10]=0}Y9a.X=1;function k$a(a){xe(a)}k$a.X=1;function l$a(a,d,e,f){var g=a+1;c[g]=c[d];k[g]=k[d];c[g+1]=c[d+1];k[g+1]=k[d+1];c[g+2]=c[d+2];k[g+2]=k[d+2];c[g+3]=c[d+3];k[g+3]=k[d+3];d=a+5;c[d]=c[e];k[d]=k[e];c[d+1]=c[e+1];k[d+1]=k[e+1];c[d+2]=c[e+2];k[d+2]=k[e+2];c[d+3]=c[e+3];k[d+3]=k[e+3];k[a+9]=f;c[a+10]=1}l$a.X=1;function m$a(a,d,e){yW(a);c[a]=n$a+2;c[a+45]=d;c[a+46]=e;c[a+1]=16;eQ(a+13);eQ(a+29)}m$a.X=1;function o$a(a,d,e){var f=b;b+=28;var g=f+4,h=f+8,i=f+12,j=f+16,l=f+20,m=f+24,n=c[d+45],p=c[c[n]+16];rn(h,e,d+13);v[p](g,n,h);vw(f,d+13,g);g=c[d+46];h=c[c[g]+16];WP(m,e);rn(l,m,d+29);v[h](j,g,l);vw(i,d+29,j);N(a,f,i);b=f}o$a.X=1;function p$a(a,d,e,f){var g=b;b+=4;var h;h=0;var i=(h|0)<(f|0);a:do{if(i){for(var j=a,l=g;;){v[c[c[j]+16]](g,a,(h<<2)+d);var m=(h<<2)+e;c[m]=c[l];k[m]=k[l];c[m+1]=c[l+1];k[m+1]=k[l+1];c[m+2]=c[l+2];k[m+2]=k[l+2];c[m+3]=c[l+3];k[m+3]=k[l+3];h+=1;if((h|0)>=(f|0)){break a}}}}while(0);b=g}p$a.X=1;function q$a(a){var d=c[a+45],d=v[c[c[d]+11]](d),a=c[a+46];return d+v[c[c[a]+11]](a)}q$a.X=1;function r$a(a,d,e){var f=b;b+=3;var g=f+1,h=f+2;$1=a;$2=d;k[f]=0;k[g]=0;k[h]=0;pe(e,f,g,h);b=f}r$a.X=1;function s$a(){}s$a.X=1;function t$a(a){yh(a)}t$a.X=1;function u$a(a){v$a(a);xe(a)}u$a.X=1;function w$a(a,d){(s0(a)|0)==(x$a(a)|0)&&y$a(a,z$a(a,s0(a)));var e=c[a+3]+7*c[a+1];c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3];c[e+4]=c[d+4];k[e+4]=k[d+4];c[e+5]=c[d+5];k[e+5]=k[d+5];c[e+6]=c[d+6];k[e+6]=k[d+6];e=a+1;c[e]+=1}w$a.X=1;function A$a(a,d,e,f,g,h,i,j,l){var m=b;b+=1;$10=l;l=r1a(0,Ue(104,16));B$a(l,d,e,f,g,h,i);c[m]=l;C$a(a+12,m);v[c[c[a]+4]](a,c[m],d,e,j);a=c[m];b=m;return a}A$a.X=1;function C$a(a,d){(t0(a)|0)==(D$a(a)|0)&&E$a(a,F$a(a,t0(a)));var e=c[a+3]+c[a+1];0!=(e|0)&&(c[e]=c[d]);e=a+1;c[e]+=1}C$a.X=1;function G$a(a,d,e,f){var g=b;b+=1;$1=a;a=Ue(8,16);c[g]=0==(a|0)?0:a;c[c[g]]=e;c[c[g]+1]=f;H$a(d+13,g);b=g}G$a.X=1;function H$a(a,d){(u0(a)|0)==(I$a(a)|0)&&J$a(a,K$a(a,u0(a)));var e=c[a+3]+c[a+1];0!=(e|0)&&(c[e]=c[d]);e=a+1;c[e]+=1}H$a.X=1;function v$a(a){c[a]=L$a+2;if(c[a+9]&1){var d=c[a+7];v[c[c[d]]](d);yh(c[a+7])}M$a(a+12);N$a(a+1)}v$a.X=1;function O$a(){}O$a.X=1;function P$a(){}P$a.X=1;function t0(a){return c[a+1]}t0.X=1;function Q$a(a,d){return c[a+3]+d}Q$a.X=1;function u0(a){return c[a+1]}u0.X=1;function v0(a,d){return c[a+3]+d}v0.X=1;function R$a(a,d,e){var f;f=c[c[a+3]+d];c[c[a+3]+d]=c[c[a+3]+e];c[c[a+3]+e]=f}R$a.X=1;function S$a(a){a+=1;c[a]-=1}S$a.X=1;function T$a(a){return c[a+7]}T$a.X=1;function U$a(a){return c[a+7]}U$a.X=1;function V$a(a,d,e,f){$1=a;a=d+18;c[e]=c[a];k[e]=k[a];c[e+1]=c[a+1];k[e+1]=k[a+1];c[e+2]=c[a+2];k[e+2]=k[a+2];c[e+3]=c[a+3];k[e+3]=k[a+3];d+=22;c[f]=c[d];k[f]=k[d];c[f+1]=c[d+1];k[f+1]=k[d+1];c[f+2]=c[d+2];k[f+2]=k[d+2];c[f+3]=c[d+3];k[f+3]=k[d+3]}V$a.X=1;function W$a(a,d,e,f,g,h){$2=d;$3=e;$5=g;$6=h;d=0;e=a+12;g=(d|0)<(t0(e)|0);a:do{if(g){for(h=a+12;;){var i=f;v[c[c[i]+2]](i,c[Q$a(h,d)]);d+=1;if((d|0)>=(t0(e)|0)){break a}}}}while(0)}W$a.X=1;function X$a(a,d,e,f,g){var h=b;b+=12;var i=h+4,j=h+8,l;l=d+18;c[l]=c[e];k[l]=k[e];c[l+1]=c[e+1];k[l+1]=k[e+1];c[l+2]=c[e+2];k[l+2]=k[e+2];c[l+3]=c[e+3];k[l+3]=k[e+3];l=d+22;c[l]=c[f];k[l]=k[f];c[l+1]=c[f+1];k[l+1]=k[f+1];c[l+2]=c[f+2];k[l+2]=k[f+2];c[l+3]=c[f+3];k[l+3]=k[f+3];Y$a(h,a,d,g);0!=(c[a+8]|0)&&$o(c[a+8],h,e,f);for(a=0;(a|0)<(u0(d+13)|0);){l=c[c[v0(d+13,a)]+1];v[c[c[l]+11]](l,i,j);if(!(hX(i,j,d+18,d+22)&1)){l=c[v0(d+13,a)];var m=c[l+1];v[c[c[m]+3]](m,c[l],g);R$a(d+13,a,u0(d+13)-1);S$a(d+13)}a+=1}for(a=0;(a|0)<(u0(d+13)|0);){i=c[v0(d+13,a)],j=c[i+1],v[c[c[j]+4]](j,c[i],e,f,g),a+=1}b=h}X$a.X=1;function Z$a(a,d){var e=b;b+=12;var f,g,h=e+4,i,j,l=e+8,m=c[$$a]&1;do{if(!m&&(f=v[c[c[a]+9]](a),v[c[c[f]+14]](f))){f=v[c[c[a]+9]](a);f=v[c[c[f]+7]](f);aab(f);g=jX(f)-c[a+11];Az(e);kX(f,g,e);c[a+11]=0;Az(h);c[h]=0;c[h+1]=0;g=c[h+2]=0;var n=(g|0)<(jX(f)|0),p=f;a:do{if(n){var r=h,s=h,t=h+1,w=h+1,x=h,y=a,z=a+11;for(i=p;;){i=lX(i,g);j=0!=(c[i+1]|0)?c[c[i+1]+3]:0;var A=0!=(c[t]|0)?c[c[w]+3]:0;j=((0!=(c[i]|0)?c[c[i]+3]:0)|0)==((0!=(c[r]|0)?c[c[s]+3]:0)|0)?(j|0)==(A|0):0;A=i;c[x]=c[A];k[x]=k[A];c[x+1]=c[A+1];k[x+1]=k[A+1];c[x+2]=c[A+2];k[x+2]=k[A+2];c[x+3]=c[A+3];k[x+3]=k[A+3];j=j&1?1:bab(a,c[i],c[i+1])&1?0:1;j&1&&(j=v[c[c[y]+9]](a),v[c[c[j]+8]](j,i,d),c[i]=0,c[i+1]=0,c[z]+=1,c[nX]-=1);g+=1;i=f;if((g|0)>=(jX(f)|0)){var C=i;break a}}}else{C=p}}while(0);aab(C);g=jX(f)-c[a+11];Az(l);kX(f,g,l);c[a+11]=0}}while(0);b=e}Z$a.X=1;function aab(a){1<(jX(a)|0)&&w0(a,0,jX(a)-1)}aab.X=1;function bab(a,d,e){$1=a;a=c[d+3];e=c[e+3];return hX(a+18,a+22,e+18,e+22)}bab.X=1;function cab(a,d,e){var f=b;b+=6;var g=f+1,h=f+2,i=f+3,j=f+4,l=f+5;$1=a;k[f]=-0xde0b6b000000000;k[g]=-0xde0b6b000000000;k[h]=-0xde0b6b000000000;pe(d,f,g,h);k[i]=0xde0b6b000000000;k[j]=0xde0b6b000000000;k[l]=0xde0b6b000000000;pe(e,i,j,l);b=f}cab.X=1;function w0(a,d,e){var f=b;b+=5;var g,h,i=f+1;g=d;h=e;Cz(i,(((e+d|0)/2&-1)<<2)+c[a+3]);for(var j=a+3,l=a+3;;){if(x0(f,(g<<2)+c[j],i)){g+=1}else{var m=x0(f,i,(h<<2)+c[l]);a:do{if(m){for(;;){if(h-=1,!x0(f,i,(h<<2)+c[l])){break a}}}}while(0);(g|0)<=(h|0)&&(tX(a,g,h),g+=1,h-=1);if(!((g|0)<=(h|0))){break}}}(d|0)<(h|0)&&w0(a,d,h);(g|0)<(e|0)&&w0(a,g,e);b=f}w0.X=1;function K$a(a,d){$1=a;return 0!=(d|0)?d<<1:1}K$a.X=1;function dab(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}dab.X=1;function F$a(a,d){$1=a;return 0!=(d|0)?d<<1:1}F$a.X=1;function eab(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}eab.X=1;function z$a(a,d){$1=a;return 0!=(d|0)?d<<1:1}z$a.X=1;function fab(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}fab.X=1;function gab(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}gab.X=1;function x0(a,d,e){var f,g,h;$1=a;a=0!=(c[d]|0)?c[c[d]+3]:0;f=0!=(c[d+1]|0)?c[c[d+1]+3]:0;g=0!=(c[e]|0)?c[c[e]+3]:0;h=0!=(c[e+1]|0)?c[c[e+1]+3]:0;return a>>>0>g>>>0?1:(a|0)==(g|0)&&f>>>0>h>>>0?1:(a|0)!=(g|0)?0:(f|0)!=(h|0)?0:c[d+2]>>>0>c[e+2]>>>0}x0.X=1;function I$a(a){return c[a+2]}I$a.X=1;function hab(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=f+d;0!=(i|0)&&(c[i]=c[c[h]+d]);d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}hab.X=1;function D$a(a){return c[a+2]}D$a.X=1;function iab(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=f+d;0!=(i|0)&&(c[i]=c[c[h]+d]);d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}iab.X=1;function s0(a){return c[a+1]}s0.X=1;function x$a(a){return c[a+2]}x$a.X=1;function jab(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}jab.X=1;function J$a(a,d){var e;(I$a(a)|0)<(d|0)&&(e=kab(a,d),hab(a,0,u0(a),e),dab(a,0,u0(a)),lab(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}J$a.X=1;function kab(a,d){return 0!=(d|0)?mab(a,d,0):0}kab.X=1;function lab(a){0!=(c[a+3]|0)&&(c[a+4]&1&&nab(a,c[a+3]),c[a+3]=0)}lab.X=1;function nab(a,d){$1=a;yh(d)}nab.X=1;function mab(a,d,e){$1=a;$3=e;return Ue(d<<2,16)}mab.X=1;function E$a(a,d){var e;(D$a(a)|0)<(d|0)&&(e=oab(a,d),iab(a,0,t0(a),e),eab(a,0,t0(a)),pab(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}E$a.X=1;function oab(a,d){return 0!=(d|0)?qab(a,d,0):0}oab.X=1;function pab(a){0!=(c[a+3]|0)&&(c[a+4]&1&&rab(a,c[a+3]),c[a+3]=0)}pab.X=1;function rab(a,d){$1=a;yh(d)}rab.X=1;function qab(a,d,e){$1=a;$3=e;return Ue(d<<2,16)}qab.X=1;function y$a(a,d){var e;(x$a(a)|0)<(d|0)&&(e=sab(a,d),tab(a,0,s0(a),e),fab(a,0,s0(a)),uab(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}y$a.X=1;function sab(a,d){return 0!=(d|0)?vab(a,d,0):0}sab.X=1;function tab(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=f+7*d,j=c[h]+7*d;c[i]=c[j];k[i]=k[j];c[i+1]=c[j+1];k[i+1]=k[j+1];c[i+2]=c[j+2];k[i+2]=k[j+2];c[i+3]=c[j+3];k[i+3]=k[j+3];c[i+4]=c[j+4];k[i+4]=k[j+4];c[i+5]=c[j+5];k[i+5]=k[j+5];c[i+6]=c[j+6];k[i+6]=k[j+6];d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}tab.X=1;function uab(a){0!=(c[a+3]|0)&&(c[a+4]&1&&wab(a,c[a+3]),c[a+3]=0)}uab.X=1;function wab(a,d){$1=a;yh(d)}wab.X=1;function vab(a,d,e){$1=a;$3=e;return Ue(d<<4,16)}vab.X=1;function M$a(a){eab(a,0,t0(a));pab(a);jab(a)}M$a.X=1;function N$a(a){gab(a,0,f$a(a));xab(a);yab(a)}N$a.X=1;function xab(a){0!=(c[a+3]|0)&&(c[a+4]&1&&zab(a,c[a+3]),c[a+3]=0)}xab.X=1;function yab(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}yab.X=1;function Aab(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}Aab.X=1;function Bab(a,d,e){$1=a;a=c[d+3];e=c[e+3];d=0!=(c[e+2]<<16>>16&c[a+1]<<16>>16|0)&1;d=(d&1?0!=(c[a+2]<<16>>16&c[e+1]<<16>>16|0):0)&1;return d&1}Bab.X=1;function y0(a,d){return c[a+3]+d}y0.X=1;function zab(a,d){$1=a;yh(d)}zab.X=1;function Cab(){}Cab.X=1;function Y$a(a,d,e,f){PX(a);c[a]=Dab+2;c[a+1]=d;c[a+2]=e;c[a+3]=f}Y$a.X=1;function Eab(a){xe(a)}Eab.X=1;function Fab(a,d,e){var f;$3=d;for(var d=c[g$a(c[a+1]+1,e)],e=0,g=a+2,h=a+2;;){if((e|0)>=(u0(c[g]+13)|0)){f=-1;break}var i=e;if((c[c[v0(c[h]+13,e)]+1]|0)==(d|0)){f=i;break}e=i+1}0>(f|0)&&(f=v[c[c[d]+2]](d,c[a+2]+18,c[a+2]+22,c[c[a+2]+26],c[c[a+2]],c[c[a+2]+1],c[c[a+2]+2],c[a+3],c[a+2]),G$a(c[a+1],c[a+2],f,d))}Fab.X=1;function B$a(a,d,e,f,g,h,i){hV(a,d,e,g,h,i,0);Aab(a+13);g=a+18;c[g]=c[d];k[g]=k[d];c[g+1]=c[d+1];k[g+1]=k[d+1];c[g+2]=c[d+2];k[g+2]=k[d+2];c[g+3]=c[d+3];k[g+3]=k[d+3];d=a+22;c[d]=c[e];k[d]=k[e];c[d+1]=c[e+1];k[d+1]=k[e+1];c[d+2]=c[e+2];k[d+2]=k[e+2];c[d+3]=c[e+3];k[d+3]=k[e+3];c[a+26]=f;c[a+3]=a}B$a.X=1;function Gab(a){xe(a)}Gab.X=1;function Hab(){}Hab.X=1;function Iab(){}Iab.X=1;function Jab(a){xe(a)}Jab.X=1;function z0(a,d,e){var f,g;f=MW(a);var h=(d|0)<(f|0);a:do{if(h){if(g=d,(g|0)<(f|0)){for(;;){if(g+=1,(g|0)>=(f|0)){break a}}}}else{if((d|0)>(MW(a)|0)&&YLa(a,d),g=f,(g|0)<(d|0)){for(var i=a+3;;){var j=c[i]+g;0!=(j|0)&&(k[j]=k[e]);g+=1;if((g|0)>=(d|0)){break a}}}}}while(0);c[a+1]=d}z0.X=1;function Kab(a,d,e){var f=b;b+=36;var g,h=f+1,i=f+2,j=f+3;g=f+7;var l=f+8,m=f+9,n=f+10,p=f+11,r=f+15,s=f+19,t=f+23,w=f+27,x=f+31,y=f+35;k[f]=0;k[h]=0;k[i]=0;H(a,f,h,i);h=-0xde0b6b000000000;c[j]=c[e];k[j]=k[e];c[j+1]=c[e+1];k[j+1]=k[e+1];c[j+2]=c[e+2];k[j+2]=k[e+2];c[j+3]=c[e+3];k[j+3]=k[e+3];e=Um(j);1.4210854715202004e-14>e?(k[g]=1,k[l]=0,k[m]=0,pe(j,g,l,m)):(k[n]=1/ec(e),LC(j,n));m=jg(d+22,0);n=LI(d+27,0);e=th(d+22);g=0;i=(g|0)<(e|0);a:do{if(i){for(var z=d+3,A=d,C=A,B=p,K=r,E=a,G=p;;){if(ig(w,j,z),Q(t,w,n),wn(s,m,t),k[y]=v[c[c[C]+11]](A),Q(x,j,y),N(r,s,x),c[B]=c[K],k[B]=k[K],c[B+1]=c[K+1],k[B+1]=k[K+1],c[B+2]=c[K+2],k[B+2]=k[K+2],c[B+3]=c[K+3],k[B+3]=k[K+3],m+=4,n+=1,l=J(j,p),l>h&&(h=l,c[E]=c[G],k[E]=k[G],c[E+1]=c[G+1],k[E+1]=k[G+1],c[E+2]=c[G+2],k[E+2]=k[G+2],c[E+3]=c[G+3],k[E+3]=k[G+3]),g+=1,(g|0)>=(e|0)){break a}}}}while(0);b=f}Kab.X=1;function Lab(a,d,e,f){var g=b;b+=25;var h,i,j,l,m,n,p,r,s=g+4,t=g+8,w=g+12,x=g+16,y=g+20,z=g+24;h=0;var A=(h|0)<(f|0);a:do{if(A){for(var C=a+22,B=a+27,K=a+22,E=a+3,G=a,M=G,L=g,F=s,I=g;;){i=-0xde0b6b000000000;j=(h<<2)+d;m=jg(C,0);n=LI(B,0);p=th(K);r=0;var R=(r|0)<(p|0);b:do{if(R){for(;;){if(ig(x,j,E),Q(w,x,n),wn(t,m,w),k[z]=v[c[c[M]+11]](G),Q(y,j,z),N(s,t,y),c[L]=c[F],k[L]=k[F],c[L+1]=c[F+1],k[L+1]=k[F+1],c[L+2]=c[F+2],k[L+2]=k[F+2],c[L+3]=c[F+3],k[L+3]=k[F+3],m+=4,n+=1,l=J(j,g),l>i&&(i=l,l=(h<<2)+e,c[l]=c[I],k[l]=k[I],c[l+1]=c[I+1],k[l+1]=k[I+1],c[l+2]=c[I+2],k[l+2]=k[I+2],c[l+3]=c[I+3],k[l+3]=k[I+3]),r+=1,(r|0)>=(p|0)){break b}}}}while(0);h+=1;if((h|0)>=(f|0)){break a}}}}while(0);b=g}Lab.X=1;function WI(a,d,e,f){var g=b;b+=5;var h=g+4;TYa(a);c[a]=A0+2;KW(a+22);LW(a+27);c[a+1]=9;xZ(a+22,f,g);k[h]=0;z0(a+27,f,h);var h=0,i=(h|0)<(f|0);a:do{if(i){for(var j=a+22,l=a+27;;){var m=xg(j,h),n=(h<<2)+d;c[m]=c[n];k[m]=k[n];c[m+1]=c[n+1];k[m+1]=k[n+1];c[m+2]=c[n+2];k[m+2]=k[n+2];c[m+3]=c[n+3];k[m+3]=k[n+3];k[y0(l,h)]=k[e+h];h+=1;if((h|0)>=(f|0)){break a}}}}while(0);cJ(a);b=g}WI.X=1;function Mab(){return D.xe}Mab.X=1;function Nab(){return 64}Nab.X=1;function B0(a){return c[a+1]}B0.X=1;function C0(a){return c[a+1]}C0.X=1;function D0(a,d){return c[a+3]+7*d}D0.X=1;function E0(a){return 0<=(c[a+6]|0)}E0.X=1;function F0(a){return-c[a+6]}F0.X=1;function Oab(a,d,e){var f=b;b+=20;var g=f+4,h=f+8,i=f+12,j=f+16,l=f+17,m=f+18,n=f+19;Pab(a,f,g);N(i,g,f);k[j]=.5;Q(h,i,j);a=2*k[h];g=2*k[h+1];h=2*k[h+2];k[l]=d/12*(g*g+h*h);k[m]=d/12*(a*a+h*h);k[n]=d/12*(a*a+g*g);pe(e,l,m,n);b=f}Oab.X=1;function Pab(a,d,e){var f=a+13;c[d]=c[f];k[d]=k[f];c[d+1]=c[f+1];k[d+1]=k[f+1];c[d+2]=c[f+2];k[d+2]=k[f+2];c[d+3]=c[f+3];k[d+3]=k[f+3];a+=17;c[e]=c[a];k[e]=k[a];c[e+1]=c[a+1];k[e+1]=k[a+1];c[e+2]=c[a+2];k[e+2]=k[a+2];c[e+3]=c[a+3];k[e+3]=k[a+3]}Pab.X=1;function Qab(a,d,e){var f,g,h;GX(a,d,e);f=th(a+22);g=0!=(f|0)?v[c[c[e]+7]](e,jg(a+22,0)):0;c[d+16]=g;c[d+17]=f;if(0!=(f|0)){d=v[c[c[e]+4]](e,20,f);g=c[d+2];h=0;var i=(h|0)<(f|0);a:do{if(i){for(var j=a+22,l=a+27;;){if(mc(jg(j,h),g),k[g+4]=k[LI(l,h)],h+=1,g+=5,(h|0)>=(f|0)){break a}}}}while(0);v[c[c[e]+5]](e,d,D.Ee,1497453121,jg(a+22,0))}return D.be}Qab.X=1;function Rab(a){Sab(a)}Rab.X=1;function xp(a){mW(a);c[a]=Tab+2}xp.X=1;function Uab(a){G0(a)}Uab.X=1;function cp(a,d,e,f,g){var h=b;b+=53;var i=h+3,j=h+10,l=h+12,m=h+16,n=h+17,p=h+18,r=h+19,s=h+23,t=h+24,w=h+25,x=h+26,y=h+42;c[a+15]=e&1;if(c[a+15]&1){Wo(a,f,g,1),Vab(h,a+26,a),v[c[c[d]+2]](d,h,a+1,a+5),d=s0(a+26),c[i]=0,k[i]=0,c[i+1]=0,k[i+1]=0,c[i+2]=0,k[i+2]=0,c[i+3]=0,k[i+3]=0,c[i+4]=0,k[i+4]=0,c[i+5]=0,k[i+5]=0,c[i+6]=0,k[i+6]=0,H0(a+31,d<<1,i)}else{Wab(j,a+16);k[m]=-0xde0b6b000000000;k[n]=-0xde0b6b000000000;k[p]=-0xde0b6b000000000;H(l,m,n,p);k[s]=0xde0b6b000000000;k[t]=0xde0b6b000000000;k[w]=0xde0b6b000000000;H(r,s,t,w);v[c[c[d]+2]](d,j,l,r);d=B0(a+16);i=x;for(e=i+16;i=(f|0)){break a}}}}else{if((d|0)>(s0(a)|0)&&y$a(a,d),g=f,(g|0)<(d|0)){for(var i=a+3;;){var j=c[i]+7*g,l=e;c[j]=c[l];k[j]=k[l];c[j+1]=c[l+1];k[j+1]=k[l+1];c[j+2]=c[l+2];k[j+2]=k[l+2];c[j+3]=c[l+3];k[j+3]=k[l+3];c[j+4]=c[l+4];k[j+4]=k[l+4];c[j+5]=c[l+5];k[j+5]=k[l+5];c[j+6]=c[l+6];k[j+6]=k[l+6];g+=1;if((g|0)>=(d|0)){break a}}}}}while(0);c[a+1]=d}H0.X=1;function I0(a,d,e){var f,g;f=B0(a);var h=(d|0)<(f|0);a:do{if(h){if(g=d,(g|0)<(f|0)){for(;;){if(g+=1,(g|0)>=(f|0)){break a}}}}else{if((d|0)>(B0(a)|0)&&Xab(a,d),g=f,(g|0)<(d|0)){for(var i=a+3;;){for(var j=e,l=(g<<4)+c[i],m=j+16;j=(d|0)){break a}}}}}while(0);c[a+1]=d}I0.X=1;function K0(a,d){var e;e=C0(a);(e|0)==(Yab(a)|0)&&Zab(a,$ab(a,C0(a)));var f=a+1;c[f]+=1;for(var f=d,g=c[a+3]+11*e,h=f+11;f=(e|0)){break a}}}}while(0)}abb.X=1;function $ab(a,d){$1=a;return 0!=(d|0)?d<<1:1}$ab.X=1;function P0(a,d){return c[a+3]+11*d}P0.X=1;function Q0(a){return c[a+6]>>21}Q0.X=1;function R0(a){return c[a+6]&2097151}R0.X=1;function O0(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}O0.X=1;function N0(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}N0.X=1;function Yab(a){return c[a+2]}Yab.X=1;function ip(a,d,e,f){var g,h,i=c[a+15]&1;a:do{if(i){Wo(a,e,f,1);Yo(a,d,0,c[a+14],0);g=0;var j=a+37;if((g|0)<(C0(j)|0)){for(var l=a+37,m=a+31;;){if(h=P0(l,g),ZU(h,D0(m,c[h+6])),g+=1,(g|0)>=(C0(j)|0)){break a}}}}}while(0)}ip.X=1;function Yo(a,d,e,f,g){var h=b;b+=48;var i,j=h+1,l=h+2,m=h+3,n=h+4,p=h+5,r=h+6,s=h+7,t=h+8,w=h+20,x=h+24,y,z,A,C,B=h+28,K=h+32,E=h+33,G=h+34,M=h+35,L=h+39,F=h+40,I=h+41,R=h+42,O=h+43,Z=h+44,P=h+45,S=h+46,da=h+47;$5=g;i=-1;c[h]=0;c[j]=0;c[l]=2;c[m]=0;c[n]=0;c[p]=0;c[r]=0;c[s]=2;var g=d+1,f=f-1,V=(f|0)>=(e|0);a:do{if(V){for(var ba=a+31,$=B,Y=M,la=t,ka=t,ja=t+4,ea=t+4,ca=t+8,W=t+8,U=a,X=a,ma=a+31,ga=a+31;;){y=D0(ba,f);var ha=E0(y);b:do{if(ha){z=Q0(y);A=R0(y);(z|0)!=(i|0)&&(0<=(i|0)&&(C=d,v[c[c[C]+6]](C,i)),i=d,v[c[c[i]+4]](i,h,j,l,m,n,p,r,s,z),i=z);z=c[n]+c[p]*A;for(A=2;;){C=A;var ta=z;C=c[h]+c[m]*(3==(c[s]|0)?c[ta+C]&65535:c[ta+C]);0==(c[l]|0)?(k[K]=k[C]*k[g],k[E]=k[C+1]*k[g+1],k[G]=k[C+2]*k[g+2],H(B,K,E,G),C=(A<<2)+t,c[C]=c[$],k[C]=k[$],c[C+1]=c[$+1],k[C+1]=k[$+1],c[C+2]=c[$+2],k[C+2]=k[$+2],c[C+3]=c[$+3],k[C+3]=k[$+3]):(k[L]=k[C]*k[g],k[F]=k[C+1]*k[g+1],k[I]=k[C+2]*k[g+2],H(M,L,F,I),C=(A<<2)+t,c[C]=c[Y],k[C]=k[Y],c[C+1]=c[Y+1],k[C+1]=k[Y+1],c[C+2]=c[Y+2],k[C+2]=k[Y+2],c[C+3]=c[Y+3],k[C+3]=k[Y+3]);A=C=A-1;if(!(0<=(C|0))){break}}k[R]=0xde0b6b000000000;k[O]=0xde0b6b000000000;k[Z]=0xde0b6b000000000;pe(w,R,O,Z);k[P]=-0xde0b6b000000000;k[S]=-0xde0b6b000000000;k[da]=-0xde0b6b000000000;pe(x,P,S,da);hp(w,la);gp(x,ka);hp(w,ja);gp(x,ea);hp(w,ca);gp(x,W);Xo(U,y,w,0);Xo(X,y+3,x,1)}else{z=D0(ma,f+1);A=f;A=E0(z)?D0(ga,A+2):D0(ga,A+F0(z)+1);for(C=0;;){if(c[y+C]=c[z+C],(c[y+C]&65535|0)>(c[A+C]&65535|0)&&(c[y+C]=c[A+C]),c[y+(C+3)]=c[z+(C+3)],(c[y+(C+3)]&65535|0)<(c[A+(C+3)]&65535|0)&&(c[y+(C+3)]=c[A+(C+3)]),C=ta=C+1,3<=(ta|0)){break b}}}}while(0);f-=1;if(!((f|0)>=(e|0))){break a}}}}while(0);if(0<=(i|0)){v[c[c[d]+6]](d,i)}b=h}Yo.X=1;function dp(a,d,e,f){var g=b;b+=6;var h=g+3;Xo(a,g,e,0);Xo(a,h,f,1);var e=0,i=a+37,j=(e|0)<(C0(i)|0);a:do{if(j){for(var l=a+37,m=g,n=h,p=a+31;;){var f=P0(l,e),r=S0(m,n,f,f+3);$overlap=r;0!=(r|0)&&(Yo(a,d,c[f+6],c[f+7]+c[f+6],e),ZU(f,D0(p,c[f+6])));e+=1;if((e|0)>=(C0(i)|0)){break a}}}}while(0);b=g}dp.X=1;function S0(a,d,e,f){return fbb((c[d]&65535|0)>=(c[e]&65535|0)&1&(c[a]&65535|0)<=(c[f]&65535|0)&1&(c[a+2]&65535|0)<=(c[f+2]&65535|0)&1&(c[d+2]&65535|0)>=(c[e+2]&65535|0)&1&(c[a+1]&65535|0)<=(c[f+1]&65535|0)&1&(c[d+1]&65535|0)>=(c[e+1]&65535|0)&1,1,0)}S0.X=1;function cha(a,d,e){return dKa(a,d,e&1)}cha.X=1;function gbb(a,d,e,f){hbb(a,d,e,f&1);return 1}gbb.X=1;function bbb(a){0!=(c[a+3]|0)&&(c[a+4]&1&&ibb(a,c[a+3]),c[a+3]=0)}bbb.X=1;function ibb(a,d){$1=a;yh(d)}ibb.X=1;function Zab(a,d){var e;(Yab(a)|0)<(d|0)&&(e=jbb(a,d),kbb(a,0,C0(a),e),lbb(a,0,C0(a)),mbb(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}Zab.X=1;function jbb(a,d){return 0!=(d|0)?nbb(a,d,0):0}jbb.X=1;function lbb(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}lbb.X=1;function fbb(a,d,e){a=(-a|a)>>31;return(a^-1)&e|a&d}fbb.X=1;function obb(a,d){$1=a;return 0!=(d|0)?d<<1:1}obb.X=1;function pbb(a){return c[a+2]}pbb.X=1;function kbb(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){for(var i=c[h]+11*d,j=f+11*d,l=i+11;i=(e|0)){break a}}}}while(0)}kbb.X=1;function mbb(a){0!=(c[a+3]|0)&&(c[a+4]&1&&qbb(a,c[a+3]),c[a+3]=0)}mbb.X=1;function qbb(a,d){$1=a;yh(d)}qbb.X=1;function nbb(a,d,e){$1=a;$3=e;return Ue(d<<5,16)}nbb.X=1;function Xab(a,d){var e;(pbb(a)|0)<(d|0)&&(e=rbb(a,d),sbb(a,0,B0(a),e),abb(a,0,B0(a)),bbb(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}Xab.X=1;function rbb(a,d){return 0!=(d|0)?tbb(a,d,0):0}rbb.X=1;function sbb(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){for(var i=(d<<4)+c[h],j=(d<<4)+f,l=i+16;i=(e|0)){break a}}}}while(0)}sbb.X=1;function tbb(a,d,e){$1=a;$3=e;return Ue(d<<6,16)}tbb.X=1;function ubb(){}ubb.X=1;function Wab(a,d){FY(a);c[a]=vbb+2;c[a+1]=d}Wab.X=1;function wbb(a){xe(a)}wbb.X=1;function xbb(a,d,e,f){var g=b;b+=30;var h=g+16,i=g+20,j=g+24,l=g+25,m=g+26,n=g+27,p=g+28,r=g+29;k[j]=0xde0b6b000000000;k[l]=0xde0b6b000000000;k[m]=0xde0b6b000000000;pe(h,j,l,m);k[n]=-0xde0b6b000000000;k[p]=-0xde0b6b000000000;k[r]=-0xde0b6b000000000;pe(i,n,p,r);hp(h,d);gp(i,d);hp(h,d+4);gp(i,d+4);hp(h,d+8);gp(i,d+8);c[g]=c[h];k[g]=k[h];c[g+1]=c[h+1];k[g+1]=k[h+1];c[g+2]=c[h+2];k[g+2]=k[h+2];c[g+3]=c[h+3];k[g+3]=k[h+3];d=g+4;c[d]=c[i];k[d]=k[i];c[d+1]=c[i+1];k[d+1]=k[i+1];c[d+2]=c[i+2];k[d+2]=k[i+2];c[d+3]=c[i+3];k[d+3]=k[i+3];c[g+8]=-1;c[g+9]=e;c[g+10]=f;ybb(c[a+1],g);b=g}xbb.X=1;function ybb(a,d){(B0(a)|0)==(pbb(a)|0)&&Xab(a,obb(a,B0(a)));for(var e=d,f=(c[a+1]<<4)+c[a+3],g=e+16;ek[i]-k[h]&&(k[i]+=.0010000000474974513,k[h]-=.0010000000474974513);.0020000000949949026>k[i+1]-k[h+1]&&(cC(i,k[i+1]+.0010000000474974513),cC(h,k[h+1]-.0010000000474974513));.0020000000949949026>k[i+2]-k[h+2]&&(dC(i,k[i+2]+.0010000000474974513),dC(h,k[h+2]-.0010000000474974513));Xo(c[a+2],g,h,0);Xo(c[a+2],g+3,i,1);c[g+6]=e<<21|f;w$a(c[a+1],g);b=g}Cbb.X=1;function Dbb(a){var d=b;b+=2;var e,f,g=d+1,h,i,j;e=pX(a+1);var l=(rW(a+8)|0)<(e|0);a:do{if(l){f=rW(a+8);c[d]=0;PV(a+8,e,d);c[g]=0;PV(a+13,e,g);h=0;var m=(h|0)<(e|0);b:do{if(m){for(var n=a+8;;){if(c[QV(n,h)]=-1,h+=1,(h|0)>=(e|0)){break b}}}}while(0);h=0;m=(h|0)<(e|0);b:do{if(m){for(n=a+13;;){if(c[QV(n,h)]=-1,h+=1,(h|0)>=(e|0)){break b}}}}while(0);h=0;if((h|0)<(f|0)){for(var m=a+1,n=a+1,p=a+8,r=a+13,s=a+8;;){if(i=lX(m,h),j=YG(c[i]),i=pX(n)-1&T0(0,j,YG(c[i+1])),c[QV(r,h)]=c[QV(p,i)],c[QV(s,i)]=h,h+=1,(h|0)>=(f|0)){break a}}}}}while(0);b=d}Dbb.X=1;function Ebb(a){Fbb(a);xe(a)}Ebb.X=1;function dX(a){uX(a);c[a]=U0+2;wX(a+1);c[a+6]=0;c[a+7]=0;vW(a+8);vW(a+13);c[a+18]=0;rX(a+1,2);Dbb(a)}dX.X=1;function V0(a,d){var e;e=c[a];c[a]=c[d];c[d]=e}V0.X=1;function T0(a,d,e){a=e<<16|d;a+=a<<15^-1;a^=a>>10;a=(a<<3)+a;a^=a>>6;a+=a<<11^-1;return a^a>>16}T0.X=1;function Gbb(a,d,e){$1=a;0!=(c[d+2]|0)&&(a=c[d+2],v[c[c[a]]](a),v[c[c[e]+15]](e,c[d+2]),c[d+2]=0)}Gbb.X=1;function Hbb(a,d,e){var f=b;b+=4;Ibb(f,d,a,e);v[c[c[a]+12]](a,f,e);b=f}Hbb.X=1;function Jbb(a,d,e){var f=b;b+=2;Kbb(f,d);v[c[c[a]+12]](a,f,e);b=f}Jbb.X=1;function Lbb(a,d,e){var f=b;b+=2;var g=f+1;c[f]=d;c[g]=e;c[Mbb]+=1;(c[c[f]+4]|0)>(c[c[g]+4]|0)&&V0(f,g);d=YG(c[f]);g=YG(c[g]);e=pX(a+1)-1&T0(0,d,g);if((e|0)>=(rW(a+8)|0)){a=0}else{for(var h=c[QV(a+8,e)],e=h,i=a+1,j=a+13;-1!=(h|0)&&0==(Nbb(a,lX(i,e),d,g)&1|0);){e=h=c[QV(j,e)]}a=-1==(e|0)?0:lX(a+1,e)}b=f;return a}Lbb.X=1;function Nbb(a,d,e,f){$1=a;return(YG(c[d])|0)==(e|0)?(YG(c[d+1])|0)==(f|0):0}Nbb.X=1;function Obb(a,d,e){var f=b;b+=2;var g=f+1,h,i,j,l;c[f]=d;c[g]=e;(c[c[f]+4]|0)>(c[c[g]+4]|0)&&V0(f,g);d=YG(c[f]);e=YG(c[g]);h=pX(a+1)-1&T0(0,d,e);i=j=Pbb(a,c[f],c[g],h);if(0==(j|0)){j=jX(a+1);i=pX(a+1);l=Qbb(a+1);if(0!=(c[a+18]|0)){var m=c[a+18];v[c[c[m]+2]](m,c[f],c[g])}(i|0)<(pX(a+1)|0)&&(Dbb(a),h=pX(a+1)-1&T0(0,d,e));Ez(l,c[f],c[g]);i=l;c[i+2]=0;c[i+3]=0;c[QV(a+13,j)]=c[QV(a+8,h)];c[QV(a+8,h)]=j}b=f;return i}Obb.X=1;function Pbb(a,d,e,f){for(var d=YG(d),e=YG(e),g=c[QV(a+8,f)],f=g,h=a+1,i=a+13;-1!=(g|0)&&0==(Nbb(a,lX(h,f),d,e)&1|0);){f=g=c[QV(i,f)]}return-1==(f|0)?0:lX(a+1,f)}Pbb.X=1;function Qbb(a){var d;d=jX(a);(d|0)==(pX(a)|0)&&rX(a,Rbb(a,jX(a)));var e=a+1;c[e]+=1;return(d<<2)+c[a+3]}Qbb.X=1;function Sbb(a,d,e,f){var g=b;b+=2;var h=g+1,i,j,l;c[g]=d;c[h]=e;c[W0]+=1;(c[c[g]+4]|0)>(c[c[h]+4]|0)&&V0(g,h);i=pX(a+1)-1&T0(0,YG(c[g]),YG(c[h]));e=Pbb(a,c[g],c[h],i);if(0==(e|0)){a=0}else{v[c[c[a]+8]](a,e,f);d=c[e+3];e=(e-lX(a+1,0)|0)/(lX(a+1,1)-lX(a+1,0)|0)&-1;j=c[QV(a+8,i)];l=-1;if((j|0)!=(e|0)){for(var m=a+13;!(l=j,j=c[QV(m,j)],(j|0)==(e|0));){}j=l}else{j=-1}m=c[QV(a+13,e)];-1!=(j|0)?c[QV(a+13,l)]=m:c[QV(a+8,i)]=m;i=jX(a+1)-1;0!=(c[a+18]|0)&&(l=c[a+18],v[c[c[l]+3]](l,c[g],c[h],f));f=a+1;if((i|0)==(e|0)){X0(f)}else{f=lX(f,i);f=pX(a+1)-1&T0(0,YG(c[f]),YG(c[f+1]));j=c[QV(a+8,f)];l=-1;if((j|0)!=(i|0)){for(h=a+13;!(l=j,j=c[QV(h,j)],(j|0)==(i|0));){}h=l}else{h=-1}j=c[QV(a+13,i)];-1!=(h|0)?c[QV(a+13,l)]=j:c[QV(a+8,f)]=j;h=lX(a+1,e);l=lX(a+1,i);c[h]=c[l];k[h]=k[l];c[h+1]=c[l+1];k[h+1]=k[l+1];c[h+2]=c[l+2];k[h+2]=k[l+2];c[h+3]=c[l+3];k[h+3]=k[l+3];c[QV(a+13,e)]=c[QV(a+8,f)];c[QV(a+8,f)]=e;X0(a+1)}a=d}b=g;return a}Sbb.X=1;function Fbb(a){c[a]=U0+2;wW(a+13);wW(a+8);yX(a+1)}Fbb.X=1;function Tbb(){}Tbb.X=1;function X0(a){a+=1;c[a]-=1}X0.X=1;function Ubb(a,d,e){var f,g;f=0;var h=a+1,i=(f|0)<(jX(h)|0);a:do{if(i){for(var j=a+1,l=a;;){g=lX(j,f);var m=d;v[c[c[m]+2]](m,g)?(v[c[c[l]+3]](a,c[g],c[g+1],e),c[nX]-=1):f+=1;if((f|0)>=(jX(h)|0)){break a}}}}while(0)}Ubb.X=1;function Vbb(a,d){(jX(a)|0)==(pX(a)|0)&&rX(a,Rbb(a,jX(a)));Cz((c[a+1]<<2)+c[a+3],d);var e=a+1;c[e]+=1}Vbb.X=1;function Wbb(a,d,e,f){var g=b;b+=4;var h,i,j;v[c[c[a]+14]](a)?a=7:(Ez(g,d,e),i=Xbb(a+1,g),(i|0)<(jX(a+1)|0)?(c[nX]-=1,j=lX(a+1,i),h=c[j+3],v[c[c[a]+8]](a,j,f),0!=(c[a+9]|0)&&(j=c[a+9],v[c[c[j]+3]](j,d,e,f)),tX(a+1,i,pX(a+1)-1),X0(a+1),a=8):a=7);7==a&&(h=0);b=g;return h}Wbb.X=1;function Xbb(a,d){var e,f;e=jX(a);f=0;for(var g=a+3;(f|0)<(jX(a)|0);){var h=f;if(mX((f<<2)+c[g],d)){e=h;break}f=h+1}return e}Xbb.X=1;function Ybb(a,d,e){if(Zbb(a,d,e)){var f;f=Qbb(a+1);Ez(f,d,e);c[nX]+=1;c[Y0]+=1;0!=(c[a+9]|0)&&(a=c[a+9],v[c[c[a]+2]](a,d,e));d=f}else{d=0}return d}Ybb.X=1;function Zbb(a,d,e){0!=(c[a+8]|0)?(a=c[a+8],d=v[c[c[a]+2]](a,d,e)):(a=0!=(c[e+2]<<16>>16&c[d+1]<<16>>16|0)&1,a=(a&1?0!=(c[d+2]<<16>>16&c[e+1]<<16>>16|0):0)&1,d=a&1);return d}Zbb.X=1;function $bb(a,d,e){var f=b;b+=4;Zbb(a,d,e)?(Ez(f,d,e),d=Xbb(a+1,f),a=(d|0)<(jX(a+1)|0)?lX(a+1,d):0):a=0;b=f;return a}$bb.X=1;function acb(a,d,e){var f,g;f=0;var h=a+1,i=(f|0)<(jX(h)|0);a:do{if(i){for(var j=a+1,l=a,m=a+1,n=a+1,p=a+1;;){g=lX(j,f);var r=d;v[c[c[r]+2]](r,g)?(v[c[c[l]+8]](a,g,e),c[g]=0,c[g+1]=0,tX(m,f,jX(n)-1),X0(p),c[nX]-=1):f+=1;if((f|0)>=(jX(h)|0)){break a}}}}while(0)}acb.X=1;function bcb(a){ccb(a);xe(a)}bcb.X=1;function ccb(a){c[a]=Z0+2;yX(a+1)}ccb.X=1;function dcb(a,d,e){$1=a;0!=(c[d+2]|0)&&(a=c[d+2],v[c[c[a]]](a),v[c[c[e]+15]](e,c[d+2]),c[d+2]=0,c[W0]-=1)}dcb.X=1;function ecb(a,d,e){var f=b;b+=4;fcb(f,d,a,e);v[c[c[a]+12]](a,f,e);b=f}ecb.X=1;function gcb(a,d,e){var f=b;b+=2;hcb(f,d);v[c[c[a]+12]](a,f,e);b=f}gcb.X=1;function icb(a,d){var e=b;b+=5;var f;wX(e);f=0;for(var g=a+1,h=a+1;(f|0)<(jX(g)|0);){Vbb(e,lX(h,f)),f+=1}for(f=0;(f|0)<(jX(e)|0);){v[c[c[a]+3]](a,c[lX(e,f)],c[lX(e,f)+1],d),f+=1}f=0;g=a+13;h=(f|0)<(rW(g)|0);a:do{if(h){for(var i=a+13;;){if(c[QV(i,f)]=-1,f+=1,(f|0)>=(rW(g)|0)){break a}}}}while(0);iX(e);for(f=0;(f|0)<(jX(e)|0);){v[c[c[a]+2]](a,c[lX(e,f)],c[lX(e,f)+1]),f+=1}yX(e);b=e}icb.X=1;function jcb(a){uX(a);c[a]=Z0+2;wX(a+1);c[a+6]=0;c[a+7]=1;c[a+8]=0;c[a+9]=0;rX(a+1,2)}jcb.X=1;function kcb(){return 0}kcb.X=1;function Rbb(a,d){$1=a;return 0!=(d|0)?d<<1:1}Rbb.X=1;function lcb(a){return a+1}lcb.X=1;function mcb(a,d){c[a+6]=d}mcb.X=1;function ncb(a,d){c[a+18]=d}ncb.X=1;function ocb(a){return a+1}ocb.X=1;function pcb(a,d){c[a+8]=d}pcb.X=1;function qcb(a){return c[a+7]&1}qcb.X=1;function rcb(a,d){c[a+9]=d}rcb.X=1;function scb(a,d){return(c[d]|0)==(c[a+1]|0)?1:(c[d+1]|0)==(c[a+1]|0)}scb.X=1;function tcb(a,d){return(c[d]|0)==(c[a+1]|0)?1:(c[d+1]|0)==(c[a+1]|0)}tcb.X=1;function rk(a){return k[a+280]}rk.X=1;function ucb(a,d,e){c[Y0]+=1;return vcb(a,d,e)?Obb(a,d,e):0}ucb.X=1;function wcb(a){return lX(a+1,0)}wcb.X=1;function xcb(a){return xX(a+1,0)}xcb.X=1;function ycb(a){return jX(a+1)}ycb.X=1;function zcb(a){return lX(a+1,0)}zcb.X=1;function Acb(a){return xX(a+1,0)}Acb.X=1;function Bcb(a){return jX(a+1)}Bcb.X=1;function vcb(a,d,e){0!=(c[a+6]|0)?(a=c[a+6],d=v[c[c[a]+2]](a,d,e)):(a=0!=(c[e+2]<<16>>16&c[d+1]<<16>>16|0)&1,a=(a&1?0!=(c[d+2]<<16>>16&c[e+1]<<16>>16|0):0)&1,d=a&1);return d}vcb.X=1;function Ccb(){}Ccb.X=1;function hcb(a,d){YX(a);c[a]=Dcb+2;c[a+1]=d}hcb.X=1;function Ecb(a){xe(a)}Ecb.X=1;function Fcb(){}Fcb.X=1;function fcb(a,d,e,f){YX(a);c[a]=Gcb+2;c[a+1]=d;c[a+2]=e;c[a+3]=f}fcb.X=1;function Hcb(a){xe(a)}Hcb.X=1;function Icb(a,d){if(4==((c[d]|0)==(c[a+1]|0)?4:(c[d+1]|0)==(c[a+1]|0)?4:5)){var e=c[a+2];v[c[c[e]+8]](e,d,c[a+3])}return 0}Icb.X=1;function Jcb(){}Jcb.X=1;function Kbb(a,d){YX(a);c[a]=Kcb+2;c[a+1]=d}Kbb.X=1;function Lcb(a){xe(a)}Lcb.X=1;function Mcb(){}Mcb.X=1;function Ibb(a,d,e,f){YX(a);c[a]=Ncb+2;c[a+1]=d;c[a+2]=e;c[a+3]=f}Ibb.X=1;function Ocb(a){xe(a)}Ocb.X=1;function Pcb(a,d){if(4==((c[d]|0)==(c[a+1]|0)?4:(c[d+1]|0)==(c[a+1]|0)?4:5)){var e=c[a+2];v[c[c[e]+8]](e,d,c[a+3])}return 0}Pcb.X=1;function wk(a){c[a]=1025;var d=a+1;CU(d);d+=69;CU(d);d+=69;CU(d);CU(d+69);c[a+277]=0;c[a+278]=0;c[a+279]=0;c[a+284]=0}wk.X=1;function tk(a,d){$1=a;0!=(c[d+27]|0)&&0!=(c[d+27]|0)&0!=(c[Qcb]|0)&&(v[c[Qcb]](c[d+27]),c[d+27]=0)}tk.X=1;function Rcb(a,d){var e=b;b+=56;var f,g,h,i=e+1,j=e+2,l=e+3,m=e+4,n=e+8,p=e+12,r=e+16,s=e+20,t=e+24,w=e+28,x=e+32,y=e+36,z=e+40,A=e+44,C=e+48,B=e+52;g=-1;f=aU(d);h=0;for(var K=a+1,E=a+1;;){aU(K+69*h)=(g|0)){break a}}}}while(0);b=e;return h}Ak.X=1;function zk(a,d){var e;e=Xj(a);if(4==(e|0)){e=Rcb(a,d),tk(a,a+69*e+1)}else{var f=a+279;c[f]+=1}0>(e|0)&&(e=0);for(var f=d,g=a+69*e+1,h=f+69;frk(a)*rk(a)){Ck(a,g)}else{if(0!=(c[Scb]|0)){v[c[Scb]](h,c[w],c[x])}}}else{Ck(a,g)}g=h=g-1;if(!(0<=(h|0))){break a}}}}while(0);b=f}sk.X=1;function Tcb(a,d,e,f){var g=b;b+=18;var h,i,j,l,m=g+4,n=g+8,p=g+12,r=g+13,s=g+17;l=th(a);var t=2>(l|0);a:do{if(!t&&(h=g,i=jg(a,th(a)-1),c[h]=c[i],k[h]=k[i],c[h+1]=c[i+1],k[h+1]=k[i+1],c[h+2]=c[i+2],k[h+2]=k[i+2],c[h+3]=c[i+3],k[h+3]=k[i+3],h=m,i=jg(a,0),c[h]=c[i],k[h]=k[i],c[h+1]=c[i+1],k[h+1]=k[i+1],c[h+2]=c[i+2],k[h+2]=k[i+2],c[h+3]=c[i+3],k[h+3]=k[i+3],i=J(e,g)+f,h=0,(h|0)<(l|0))){for(var w=m,x=g,y=m;;){j=jg(a,h);c[w]=c[j];k[w]=k[j];c[w+1]=c[j+1];k[w+1]=k[j+1];c[w+2]=c[j+2];k[w+2]=k[j+2];c[w+3]=c[j+3];k[w+3]=k[j+3];var z=J(e,m)+f;j=z;z=0>z;if(0>i){var A=d;z?PW(A,m):(k[p]=i/(i-j),PB(n,g,m,p),PW(A,n))}else{z&&(k[s]=i/(i-j),PB(r,g,m,s),PW(d,r),PW(d,m))}c[x]=c[y];k[x]=k[y];c[x+1]=c[y+1];k[x+1]=k[y+1];c[x+2]=c[y+2];k[x+2]=k[y+2];c[x+3]=c[y+3];k[x+3]=k[y+3];i=j;h+=1;if((h|0)>=(l|0)){break a}}}}while(0);b=g}Tcb.X=1;function jYa(a,d,e,f,g){var h=b;b+=63;var i,j,l,m,n,p=h+4,r=h+8,s=h+9,t=h+13,w=h+17,x=h+34,y=h+38,z,A=h+42,C=h+46,B=h+50,K=h+54,E=h+55,G=h+59;c[Ucb]+=1;l=3.4028234663852886e+38;m=yY(a+6);for(n=0;;){if((n|0)>=(m|0)){i=9;break}H(h,zY(a+6,n)+10,zY(a+6,n)+11,zY(a+6,n)+12);Bo(p,e,h);if(!$0(a,d,e,f,p,r)){j=0;i=30;break}if(k[r]=(th(a+11)|0)){N(E,f+12,e+12);0=(th(d+11)|0)){m+=1;continue b}var L=jg(d+11,z);c[p]=c[L];k[p]=k[L];c[p+1]=c[L+1];k[p+1]=k[L+1];c[p+2]=c[L+2];k[p+2]=k[L+2];c[p+3]=c[L+3];k[p+3]=k[L+3];Bo(C,f,A);qn(B,y,C);L=DZ(B);do{if(!L){var F=IB(B);c[r]=c[F];k[r]=k[F];c[r+1]=c[F+1];k[r+1]=k[F+1];c[r+2]=c[F+2];k[r+2]=k[F+2];c[r+3]=c[F+3];k[r+3]=k[F+3];if(!$0(a,d,e,f,B,K)){j=0;break a}k[K]=(yY(d+6)|0)){break a}}}}while(0);if(0>(f|0)){$10=1}else{r=zY(d+6,f);$numContacts=th(c[l]);s=rW(r);for(f=0;(f|0)<(s|0);){n=c[sW(r+5,f)],H(w,zY(d+6,n)+10,zY(d+6,n)+11,zY(d+6,n)+12),n=k[zY(d+6,n)+13],Bo(x,e,w),n-=J(x,e+12),Tcb(c[l],c[m],x,n),Wcb(l,m),xZ(c[m],0,y),f+=1}H(z,r+10,r+11,r+12);d=k[r+13];Bo(A,e,z);e=d-J(A,e+12);for(z=0;(z|0)<(th(c[l])|0);){d=J(A,Xcb(c[l],z))+e,d<=h&&d>=g&&(m=Xcb(c[l],z),c[C]=c[m],k[C]=k[m],c[C+1]=c[m+1],k[C+1]=k[m+1],c[C+2]=c[m+2],k[C+2]=k[m+2],c[C+3]=c[m+3],k[C+3]=k[m+3],m=i,v[c[c[m]+4]](m,a,C,d)),z+=1}$10=0}UW(j);b=j}lYa.X=1;function kYa(a,d,e,f,g,h,i,j){var l=b;b+=17;var m,n,p,r=l+4,s,t=l+8,w=l+13;$curMaxDist=i;m=-1;n=-3.4028234663852886e+38;p=0;var x=(p|0)<(yY(e+6)|0);a:do{if(x){for(;;){if(H(l,zY(e+6,p)+10,zY(e+6,p)+11,zY(e+6,p)+12),Bo(r,g,l),s=J(r,a),s>n&&(n=s,m=p),p+=1,(p|0)>=(yY(e+6)|0)){break a}}}}while(0);if(0<=(m|0)){KW(t);m=zY(e+6,m);n=rW(m);for(p=0;(p|0)<(n|0);){vw(w,g,jg(e+1,c[sW(m,p)])),PW(t,w),p+=1}lYa(a,d,f,t,h,i,j);UW(t)}b=l}kYa.X=1;function Ycb(a){EX(a);yh(a)}Ycb.X=1;function Zcb(a,d){var e;e=c[a];c[a]=c[d];c[d]=e}Zcb.X=1;function b1(a,d){return c[a+3]+3*d}b1.X=1;function $cb(a){return c[a+3*c[a+1]+2]}$cb.X=1;function adb(a){return c[a+2]}adb.X=1;function bdb(a,d){var e;e=th(a);(e|0)==(NW(a)|0)&&RW(a,NLa(a,th(a)));var f=a+1;c[f]+=1;f=(e<<2)+c[a+3];0!=(f|0)&&(c[f]=c[d],k[f]=k[d],c[f+1]=c[d+1],k[f+1]=k[d+1],c[f+2]=c[d+2],k[f+2]=k[d+2],c[f+3]=c[d+3],k[f+3]=k[d+3]);return(e<<2)+c[a+3]}bdb.X=1;function cdb(a,d,e,f,g,h){return ddb(a,d,0,e,f,g,h)}cdb.X=1;function edb(a,d,e){var f,g;f=yY(a);var h=(d|0)<(f|0);a:do{if(h){if(g=d,(g|0)<(f|0)){for(var i=a+3;;){if(IZ(c[i]+14*g),g+=1,(g|0)>=(f|0)){break a}}}}else{if((d|0)>(yY(a)|0)&&fdb(a,d),g=f,(g|0)<(d|0)){for(i=a+3;;){var j=c[i]+14*g;0!=(j|0)&&gdb(j,e);g+=1;if((g|0)>=(d|0)){break a}}}}}while(0);c[a+1]=d}edb.X=1;function hdb(a){return idb(a+3*c[a+1])}hdb.X=1;function jdb(a){var d=b;b+=92;var e,f,g=d+5,h=d+9,i=d+24,j=d+29,l=d+33,m=d+47,n,p,r=d+51,s,t=d+63,w,x=d+64,y=d+68,z=d+72,A=d+76,C=d+80,B,K=d+84,E=d+88,G;0!=(c[a+13]|0)&&yh(c[a+13]);$mem=e=Ue(80,16);0==(e|0)?e=0:xZa(e);c[a+13]=e;KW(d);for(e=0;(e|0)<(v[c[c[a]+22]](a)|0);){f=bdb(d,g),v[c[c[a]+25]](a,e,f),e+=1}kdb(h);cdb(h,xg(d,0),16,th(d),0,0);KW(i);g=rW(h+10);xZ(i,g,j);j=c[a+13]+6;e=l;for(f=e+14;e=(l|0)){break a}}}}while(0);m=0;l=a+13;j=r+4;e=a+13;f=a+13;var M=a+13,L=a+13,F=a+13,I=a+13;B=a+13;for(G=a+13;(m|0)<(g|0);){p=n=b1(h+5,c[QV(h+10,m)]);$maxCross2=s=0;for($chosenEdge=-1;;){c[t]=$cb(p);p_(BZ(c[l]+6,m),t);w=adb(p);var R=xg(h,c[t]);c[x]=c[R];k[x]=k[R];c[x+1]=c[R+1];k[x+1]=k[R+1];c[x+2]=c[R+2];k[x+2]=k[R+2];c[x+3]=c[R+3];k[x+3]=k[R+3];w=xg(h,w);c[y]=c[w];k[y]=k[w];c[y+1]=c[w+1];k[y+1]=k[w+1];c[y+2]=c[w+2];k[y+2]=k[w+2];c[y+3]=c[w+3];k[y+3]=k[w+3];N(z,y,x);IB(z);2>(s|0)&&(w=s,s=w+1,w=(w<<2)+r,c[w]=c[z],k[w]=k[z],c[w+1]=c[z+1],k[w+1]=k[z+1],c[w+2]=c[z+2],k[w+2]=k[z+2],c[w+3]=c[z+3],k[w+3]=k[z+3]);p=hdb(p);if((p|0)==(n|0)){break}}n=1.0000000150474662e+30;p=xg(i,m);2==(s|0)?(qn(A,r,j),s=p,c[s]=c[A],k[s]=k[A],c[s+1]=c[A+1],k[s+1]=k[A+1],c[s+2]=c[A+2],k[s+2]=k[A+2],c[s+3]=c[A+3],k[s+3]=k[A+3],IB(xg(i,m)),k[BZ(c[e]+6,m)+10]=-k[xg(i,m)],k[BZ(c[f]+6,m)+11]=-k[xg(i,m)+1],k[BZ(c[M]+6,m)+12]=-k[xg(i,m)+2],k[BZ(c[L]+6,m)+13]=n):EC(p);s=0;w=(s|0)<(rW(BZ(c[F]+6,m))|0);a:do{if(w){for(;;){if(p=J(xg(c[B]+1,c[QV(BZ(c[G]+6,m),s)]),xg(i,m)),n>p&&(n=p),s+=1,(s|0)>=(rW(BZ(c[F]+6,m))|0)){break a}}}}while(0);k[BZ(c[I]+6,m)+13]=n;m+=1}t=0!=(yY(c[a+13]+6)|0);a:do{if(t&&0!=(th(h)|0)){r=0;x=a+13;y=a+13;z=a+13;A=a+13;g=a+13;l=m=a;j=a+13;e=a+13;f=a+13;M=a+13;L=a+13;F=a+13;for(I=a+13;;){if((r|0)>=(yY(c[x]+6)|0)){break a}H(C,BZ(c[y]+6,r)+10,BZ(c[z]+6,r)+11,BZ(c[A]+6,r)+12);B=k[BZ(c[g]+6,r)+13];G=c[c[l]+15];WP(E,C);v[G](K,m,E);B=J(K,C)=((G|0)/2&-1|0)){break b}}}}while(0);r+=1}}}while(0);GZa(c[a+13]);$10=1;UW(i);mdb(h);UW(d);b=d;return 1}jdb.X=1;function ndb(a){return c[a+2]}ndb.X=1;function odb(a,d,e){var f=b;b+=15;var g=f+1,h=f+2,i,j=f+3;i=f+7;var l=f+8,m=f+9,n=f+10,p=f+11;k[f]=0;k[g]=0;k[h]=0;H(a,f,g,h);g=-0xde0b6b000000000;c[j]=c[e];k[j]=k[e];c[j+1]=c[e+1];k[j+1]=k[e+1];c[j+2]=c[e+2];k[j+2]=k[e+2];c[j+3]=c[e+3];k[j+3]=k[e+3];e=Um(j);9999999747378752e-20>e?(k[i]=1,k[l]=0,k[m]=0,pe(j,i,l,m)):(k[n]=1/ec(e),LC(j,n));i=0;m=(i|0)<(v[c[c[d]+22]](d)|0);a:do{if(m){n=d;e=a;for(h=p;;){if(v[c[c[n]+25]](d,i,p),l=J(j,p),l>g&&(g=l,c[e]=c[h],k[e]=k[h],c[e+1]=c[h+1],k[e+1]=k[h+1],c[e+2]=c[h+2],k[e+2]=k[h+2],c[e+3]=c[h+3],k[e+3]=k[h+3]),i+=1,(i|0)>=(v[c[c[d]+22]](d)|0)){break a}}}}while(0);b=f}odb.X=1;function pdb(a,d,e,f){var g=b;b+=4;var h,i,j,l;h=0;i=(h|0)<(f|0);a:do{if(i){for(;;){if(k[(h<<2)+e+3]=-0xde0b6b000000000,h+=1,(h|0)>=(f|0)){break a}}}}while(0);j=0;var m=(j|0)<(f|0);a:do{if(m){for(var n=a,p=a,r=g;;){l=(j<<2)+d;h=0;var s=(h|0)<(v[c[c[n]+22]](a)|0);b:do{if(s){for(;;){v[c[c[p]+25]](a,h,g);i=J(l,g);if(i>k[(j<<2)+e+3]){var t=(j<<2)+e;c[t]=c[r];k[t]=k[r];c[t+1]=c[r+1];k[t+1]=k[r+1];c[t+2]=c[r+2];k[t+2]=k[r+2];c[t+3]=c[r+3];k[t+3]=k[r+3];k[(j<<2)+e+3]=i}h+=1;if((h|0)>=(v[c[c[n]+22]](a)|0)){break b}}}}while(0);j+=1;if((j|0)>=(f|0)){break a}}}}while(0);b=g}pdb.X=1;function qdb(a,d,e){var f=b;b+=45;var g,h=f+16,i=f+20,j=f+24,l=f+28,m=f+32,n=f+33,p=f+34,r=f+38,s=f+42,t=f+43,w=f+44;g=v[c[c[a]+11]](a);eQ(f);v[c[c[a]+2]](a,f,h,i);N(l,i,h);k[m]=.5;Q(j,l,m);h=2*(k[j]+g);a=2*(k[j+1]+g);g=2*(k[j+2]+g);j=h*h;a*=a;g*=g;k[n]=.0833333283662796*d;k[s]=a+g;k[t]=j+g;k[w]=j+a;H(r,s,t,w);Q(p,r,n);c[e]=c[p];k[e]=k[p];c[e+1]=c[p+1];k[e+1]=k[p+1];c[e+2]=c[p+2];k[e+2]=k[p+2];c[e+3]=c[p+3];k[e+3]=k[p+3];b=f}qdb.X=1;function rdb(a,d){FX(a,d);bh(a)}rdb.X=1;function bh(a){var d=b;b+=60;var e=d+1,f=d+2,g=d+3,h=d+4,i=d+5,j=d+6,l=d+7,m=d+8,n=d+9,p=d+10,r=d+11,s=d+12,t=d+13,w=d+14,x=d+15,y=d+16,z=d+17,A=d+18,C=d+42,B=d+43,K=d+44,E=d+45,G=d+46,M=d+47,L=d+48,F=d+49,I=d+50,R=d+51,O=d+52,Z=d+53,P=d+54,S=d+55,da=d+56,V=d+57,ba=d+58,$=d+59;c[a+22]=1;0==c[sdb]<<24>>24&&0!=(Hb(sdb)|0)&&(k[d]=1,k[e]=0,k[f]=0,H(c1,d,e,f),k[g]=0,k[h]=1,k[i]=0,H(c1+4,g,h,i),k[j]=0,k[l]=0,k[m]=1,H(c1+8,j,l,m),k[n]=-1,k[p]=0,k[r]=0,H(c1+12,n,p,r),k[s]=0,k[t]=-1,k[w]=0,H(c1+16,s,t,w),k[x]=0,k[y]=0,k[z]=-1,H(c1+20,x,y,z));k[C]=0;k[B]=0;k[K]=0;H(A,C,B,K);e=A+4;k[E]=0;k[G]=0;k[M]=0;H(e,E,G,M);E=e+4;k[L]=0;k[F]=0;k[I]=0;H(E,L,F,I);L=E+4;k[R]=0;k[O]=0;k[Z]=0;H(L,R,O,Z);R=L+4;k[P]=0;k[S]=0;k[da]=0;H(R,P,S,da);k[V]=0;k[ba]=0;k[$]=0;H(R+4,V,ba,$);v[c[c[a]+17]](a,c1,A,6);P=0;S=a+11;da=a+18;V=a+11;for(a+=14;!(k[da+P]=k[(P<<2)+A+P]+k[S],k[a+P]=k[(P+3<<2)+A+P]-k[V],P=ba=P+1,3<=(ba|0));){}b=d}bh.X=1;function vZ(a){var d=b;b+=6;var e=d+1,f=d+2,g=d+3,h=d+4,i=d+5;CW(a);c[a]=tdb+2;k[d]=1;k[e]=1;k[f]=1;H(a+14,d,e,f);k[g]=-1;k[h]=-1;k[i]=-1;H(a+18,g,h,i);c[a+22]=0;b=d}vZ.X=1;function udb(a,d,e,f){eh(a,d,e,f,v[c[c[a]+11]](a))}udb.X=1;function vdb(a){EX(a)}vdb.X=1;function fdb(a,d){var e;(ndb(a)|0)<(d|0)&&(e=wdb(a,d),xdb(a,0,yY(a),e),m_a(a,0,yY(a)),n_a(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}fdb.X=1;function ydb(a,d){var e=b;b+=1;var f;vW(a);f=rW(d);c[e]=0;PV(a,f,e);MKa(d,0,f,c[a+3]);b=e}ydb.X=1;function wdb(a,d){return 0!=(d|0)?zdb(a,d,0):0}wdb.X=1;function xdb(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=f+14*d;0!=(i|0)&&gdb(i,c[h]+14*d);d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}xdb.X=1;function zdb(a,d,e){$1=a;$3=e;return Ue(56*d,16)}zdb.X=1;function d1(a){Adb(a,0,e1(a));Bdb(a);Cdb(a)}d1.X=1;function Ddb(a){EX(a);yh(a)}Ddb.X=1;function gdb(a,d){ydb(a,d);ydb(a+5,d+5);var e=a+10,f=d+10;c[e]=c[f];k[e]=k[f];c[e+1]=c[f+1];k[e+1]=k[f+1];c[e+2]=c[f+2];k[e+2]=k[f+2];c[e+3]=c[f+3];k[e+3]=k[f+3]}gdb.X=1;function mdb(a){wW(a+10);d1(a+5);UW(a)}mdb.X=1;function Adb(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}Adb.X=1;function e1(a){return c[a+1]}e1.X=1;function Cdb(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}Cdb.X=1;function idb(a){return a+3*c[a]}idb.X=1;function Bdb(a){0!=(c[a+3]|0)&&(c[a+4]&1&&Edb(a,c[a+3]),c[a+3]=0)}Bdb.X=1;function Edb(a,d){$1=a;yh(d)}Edb.X=1;function ldb(a){vW(a);vW(a+5)}ldb.X=1;function kdb(a){KW(a);Cdb(a+5);vW(a+10)}kdb.X=1;function mW(a){var d=b;b+=6;var e=d+1,f=d+2,g=d+3,h=d+4,i=d+5;c[a]=f1+2;c[a+13]=278;c[a+15]=0;O0(a+16);O0(a+21);N0(a+26);N0(a+31);c[a+36]=0;g1(a+37);c[a+42]=0;k[d]=-3.4028234663852886e+38;k[e]=-3.4028234663852886e+38;k[f]=-3.4028234663852886e+38;pe(a+1,d,e,f);k[g]=3.4028234663852886e+38;k[h]=3.4028234663852886e+38;k[i]=3.4028234663852886e+38;pe(a+5,g,h,i);b=d}mW.X=1;function So(a){var d=b;b+=18;var e,f=d+7;c[a+15]=1;e=0;c[a+15]&1&&(e=s0(a+26),c[d]=0,k[d]=0,c[d+1]=0,k[d+1]=0,c[d+2]=0,k[d+2]=0,c[d+3]=0,k[d+3]=0,c[d+4]=0,k[d+4]=0,c[d+5]=0,k[d+5]=0,c[d+6]=0,k[d+6]=0,H0(a+31,e<<1,d));c[a+14]=0;J0(a,0,e);c[a+15]&1&&0==(C0(a+37)|0)&&(e=K0(a+37,f),ZU(e,D0(a+31,0)),c[e+6]=0,c[e+7]=E0(D0(a+31,0))?1:F0(D0(a+31,0)));c[a+42]=C0(a+37);L0(a+26);M0(a+16);b=d}So.X=1;function J0(a,d,e){var f=b;b+=8;var g,h,i,j,l=f+4;i=c[a+14];if(1==(e-d|0)){Fdb(a,c[a+14],d),a+=14,c[a]+=1}else{g=Gdb(a,d,e,Hdb(a,d,e));j=c[a+14];Idb(a,c[a+14],a+5);Jdb(a,c[a+14],a+1);h=d;var m=(h|0)<(e|0),n=a+14,p=c[n];a:do{if(m){for(var r=p;;){if(h1(f,a,h),i1(l,a,h),Kdb(a,r,f,l),h+=1,r=c[n],(h|0)>=(e|0)){var s=r;break a}}}else{s=p}}while(0);c[n]=s+1;h=c[a+14];J0(a,d,g);d=c[a+14];J0(a,g,e);e=c[a+14]-i;c[a+15]&1&&($sizeQuantizedNode=16,2048<(e<<4|0)&&Ldb(a,h,d));Mdb(a,j,e)}b=f}J0.X=1;function Wo(a,d,e,f){var g=b;b+=28;var h=g+1,i=g+5,j=g+9,l=g+13,m=g+17,n=g+21,p=g+25,r=g+26,s=g+27;k[g]=f;H(h,g,g,g);N(i,d,h);d=a+1;c[d]=c[i];k[d]=k[i];c[d+1]=c[i+1];k[d+1]=k[i+1];c[d+2]=c[i+2];k[d+2]=k[i+2];c[d+3]=c[i+3];k[d+3]=k[i+3];wn(j,e,h);e=a+5;c[e]=c[j];k[e]=k[j];c[e+1]=c[j+1];k[e+1]=k[j+1];c[e+2]=c[j+2];k[e+2]=k[j+2];c[e+3]=c[j+3];k[e+3]=k[j+3];N(l,a+5,a+1);k[p]=65533;k[r]=65533;k[s]=65533;H(n,p,r,s);eX(m,n,l);j=a+9;c[j]=c[m];k[j]=k[m];c[j+1]=c[m+1];k[j+1]=k[m+1];c[j+2]=c[m+2];k[j+2]=k[m+2];c[j+3]=c[m+3];k[j+3]=k[m+3];c[a+15]=1;b=g}Wo.X=1;function Fdb(a,d,e){if(c[a+15]&1){d=D0(a+31,d),a=D0(a+26,e),c[d]=c[a],k[d]=k[a],c[d+1]=c[a+1],k[d+1]=k[a+1],c[d+2]=c[a+2],k[d+2]=k[a+2],c[d+3]=c[a+3],k[d+3]=k[a+3],c[d+4]=c[a+4],k[d+4]=k[a+4],c[d+5]=c[a+5],k[d+5]=k[a+5],c[d+6]=c[a+6],k[d+6]=k[a+6]}else{e=j1(a+16,e);a=j1(a+21,d);for(d=e+16;e=(e|0)){break a}}}}while(0);k[x]=1/(h|0);LC(f,x);g=d;d=(g|0)<(e|0);a:do{if(d){p=K;for(r=E;;){if(k[z]=.5,i1(C,a,g),h1(B,a,g),wn(A,C,B),Q(y,A,z),N(K,y,f),ig(E,K,K),c[p]=c[r],k[p]=k[r],c[p+1]=c[r+1],k[p+1]=k[r+1],c[p+2]=c[r+2],k[p+2]=k[r+2],c[p+3]=c[r+3],k[p+3]=k[r+3],xn(j,K),g+=1,(g|0)>=(e|0)){break a}}}}while(0);k[G]=1/((h|0)-1);LC(j,G);a=fC(j);b=f;return a}Hdb.X=1;function Ndb(a){G0(a);yh(a)}Ndb.X=1;function G0(a){c[a]=f1+2;Odb(a+37);L0(a+31);L0(a+26);M0(a+21);M0(a+16)}G0.X=1;function k1(a,d){return c[a+3]+7*d}k1.X=1;function Gdb(a,d,e,f){var g=b;b+=42;var h,i,j,l;h=g+4;var m=g+5,n=g+6;l=g+7;var p=g+11,r=g+12,s=g+16,t=g+20,w=g+24,x=g+25,y=g+29,z=g+30,A=g+34,C=g+38;i=d;j=e-d;k[h]=0;k[m]=0;k[n]=0;H(g,h,m,n);h=d;m=(h|0)<(e|0);a:do{if(m){for(;;){if(k[p]=.5,i1(s,a,h),h1(t,a,h),wn(r,s,t),Q(l,r,p),xn(g,l),h+=1,(h|0)>=(e|0)){break a}}}}while(0);k[w]=1/(j|0);LC(g,w);l=k[g+f];h=d;p=(h|0)<(e|0);a:do{if(p){for(;;){if(k[y]=.5,i1(A,a,h),h1(C,a,h),wn(z,A,C),Q(x,z,y),k[x+f]>l&&(Pdb(a,h,i),i+=1),h+=1,(h|0)>=(e|0)){break a}}}}while(0);a=(j|0)/3&-1;((i|0)<=(a+d|0)?1:(i|0)>=(e-1+ -a|0))&1&&(i=(j>>1)+d);b=g;return i}Gdb.X=1;function Idb(a,d,e){c[a+15]&1?Xo(a,D0(a+31,d),e,0):(a=j1(a+21,d),c[a]=c[e],k[a]=k[e],c[a+1]=c[e+1],k[a+1]=k[e+1],c[a+2]=c[e+2],k[a+2]=k[e+2],c[a+3]=c[e+3],k[a+3]=k[e+3])}Idb.X=1;function Jdb(a,d,e){c[a+15]&1?Xo(a,D0(a+31,d)+3,e,1):(a=j1(a+21,d)+4,c[a]=c[e],k[a]=k[e],c[a+1]=c[e+1],k[a+1]=k[e+1],c[a+2]=c[e+2],k[a+2]=k[e+2],c[a+3]=c[e+3],k[a+3]=k[e+3])}Jdb.X=1;function Kdb(a,d,e,f){var g=b;b+=6;var h=g+3,i,j=c[a+15]&1;a:do{if(j){Xo(a,g,e,0);Xo(a,h,f,1);i=0;for(var l=a+31,m=a+31,n=a+31,p=a+31;;){(c[D0(l,d)+i]&65535|0)>(c[g+i]&65535|0)&&(c[D0(m,d)+i]=c[g+i]);(c[D0(n,d)+i+3]&65535|0)<(c[h+i]&65535|0)&&(c[D0(p,d)+i+3]=c[h+i]);var r=i+1;i=r;if(3<=(r|0)){break a}}}else{hp(j1(a+21,d),e),gp(j1(a+21,d)+4,f)}}while(0);b=g}Kdb.X=1;function h1(a,d,e){c[d+15]&1?qp(a,d,k1(d+26,e)):(d=l1(d+16,e),c[a]=c[d],k[a]=k[d],c[a+1]=c[d+1],k[a+1]=k[d+1],c[a+2]=c[d+2],k[a+2]=k[d+2],c[a+3]=c[d+3],k[a+3]=k[d+3])}h1.X=1;function i1(a,d,e){c[d+15]&1?qp(a,d,k1(d+26,e)+3):(d=l1(d+16,e)+4,c[a]=c[d],k[a]=k[d],c[a+1]=c[d+1],k[a+1]=k[d+1],c[a+2]=c[d+2],k[a+2]=k[d+2],c[a+3]=c[d+3],k[a+3]=k[d+3])}i1.X=1;function Ldb(a,d,e){var f=b;b+=22;var g,h,i,j,l,m;m=f+11;g=D0(a+31,d);h=E0(g)?1:F0(g);i=D0(a+31,e);j=E0(i)?1:F0(i);var n=j<<4;2048>=(h<<4|0)&&(l=K0(a+37,f),ZU(l,g),c[l+6]=d,c[l+7]=h);d=n;2048>=(d|0)&&(m=K0(a+37,m),ZU(m,i),c[m+6]=e,c[m+7]=j);c[a+42]=C0(a+37);b=f}Ldb.X=1;function Mdb(a,d,e){c[a+15]&1?c[D0(a+31,d)+6]=-e:c[j1(a+21,d)+8]=e}Mdb.X=1;function Pdb(a,d,e){var f=b;b+=23;var g=f+7;if(c[a+15]&1){g=D0(a+26,d);c[f]=c[g];k[f]=k[g];c[f+1]=c[g+1];k[f+1]=k[g+1];c[f+2]=c[g+2];k[f+2]=k[g+2];c[f+3]=c[g+3];k[f+3]=k[g+3];c[f+4]=c[g+4];k[f+4]=k[g+4];c[f+5]=c[g+5];k[f+5]=k[g+5];c[f+6]=c[g+6];k[f+6]=k[g+6];var g=D0(a+26,d),h=D0(a+26,e);c[g]=c[h];k[g]=k[h];c[g+1]=c[h+1];k[g+1]=k[h+1];c[g+2]=c[h+2];k[g+2]=k[h+2];c[g+3]=c[h+3];k[g+3]=k[h+3];c[g+4]=c[h+4];k[g+4]=k[h+4];c[g+5]=c[h+5];k[g+5]=k[h+5];c[g+6]=c[h+6];k[g+6]=k[h+6];a=D0(a+26,e);c[a]=c[f];k[a]=k[f];c[a+1]=c[f+1];k[a+1]=k[f+1];c[a+2]=c[f+2];k[a+2]=k[f+2];c[a+3]=c[f+3];k[a+3]=k[f+3];c[a+4]=c[f+4];k[a+4]=k[f+4];c[a+5]=c[f+5];k[a+5]=k[f+5];c[a+6]=c[f+6];k[a+6]=k[f+6]}else{for(var h=j1(a+16,d),i=g,j=h+16;h=(h|0)){break a}}}}while(0);(c[n1]|0)<(l|0)&&(c[n1]=l)}Qdb.X=1;function Rdb(a,d,e,f){var g,h;g=0;var i=a+37,j=(g|0)<(C0(i)|0);a:do{if(j){for(var l=a+37;;){h=o1(l,g);var m=S0(e,f,h,h+3);$overlap=m;0!=(m|0)&&Qdb(a,d,e,f,c[h+6],c[h+7]+c[h+6]);g+=1;if((g|0)>=(C0(i)|0)){break a}}}}while(0)}Rdb.X=1;function l1(a,d){return(d<<4)+c[a+3]}l1.X=1;function o1(a,d){return c[a+3]+11*d}o1.X=1;function j1(a,d){return(d<<4)+c[a+3]}j1.X=1;function m1(a,d,e,f,g){var h,i;i=S0(f,g,d,d+3);h=E0(d)&1;if(0!=(i|0)){if(h&1){v[c[c[e]+2]](e,Q0(d),R0(d))}else{d+=7,m1(a,d,e,f,g),m1(a,E0(d)?d+7:d+7*F0(d),e,f,g)}}}m1.X=1;function Sdb(a,d,e,f){var g,h,i,j,l,m;h=l1(a+21,0);l=j=0;var a=a+14,n=(j|0)<(c[a]|0);a:do{if(n){for(;;){if(l+=1,m=hX(e,f,h,h+4)&1,i=-1==(c[h+8]|0)&1,i&1?0==(m|0)?g=7:(g=d,v[c[c[g]+2]](g,c[h+9],c[h+10]),g=6):g=6,6==g&&(g=0!=(m|0)?8:7),7==g&&(i&1?g=8:(i=c[h+8],h=(i<<4)+h,j+=i,g=10)),8==g&&(h+=16,j+=1),(j|0)>=(c[a]|0)){break a}}}}while(0);(c[n1]|0)<(l|0)&&(c[n1]=l)}Sdb.X=1;function Tdb(a,d,e,f,g,h,i,j){var l=b;b+=32;var m,n,p,r,s=l+4,t=l+8,w=l+12,x=l+16,y=l+20,z=l+23,A=l+31;$7=i;$8=j;i=l1(a+21,0);$aabbOverlap=p=j=0;c[l]=c[e];k[l]=k[e];c[l+1]=c[e+1];k[l+1]=k[e+1];c[l+2]=c[e+2];k[l+2]=k[e+2];c[l+3]=c[e+3];k[l+3]=k[e+3];c[s]=c[e];k[s]=k[e];c[s+1]=c[e+1];k[s+1]=k[e+1];c[s+2]=c[e+2];k[s+2]=k[e+2];c[s+3]=c[e+3];k[s+3]=k[e+3];hp(l,f);gp(s,f);xn(l,g);xn(s,h);N(t,f,e);IB(t);N(w,f,e);f=J(t,w);k[x]=0==k[t]?0xde0b6b000000000:1/k[t];k[x+1]=0==k[t+1]?0xde0b6b000000000:1/k[t+1];k[x+2]=0==k[t+2]?0xde0b6b000000000:1/k[t+2];c[y]=0>k[x]&1;t=y+1;c[t]=0>k[x+1]&1;c[t+1]=0>k[x+2]&1;a+=14;t=(j|0)<(c[a]|0);a:do{if(t){for(var w=z,C=z+4,B=z,K=z+4,E=y,G=z;;){if(k[A]=1,p+=1,n=i,c[w]=c[n],k[w]=k[n],c[w+1]=c[n+1],k[w+1]=k[n+1],c[w+2]=c[n+2],k[w+2]=k[n+2],c[w+3]=c[n+3],k[w+3]=k[n+3],n=i+4,c[C]=c[n],k[C]=k[n],c[C+1]=c[n+1],k[C+1]=k[n+1],c[C+2]=c[n+2],k[C+2]=k[n+2],c[C+3]=c[n+3],k[C+3]=k[n+3],JC(B,h),JC(K,g),$aabbOverlap=n=hX(l,s,i,i+4)&1,r=(0!=(n|0)?rY(e,x,E,G,A,0,f):0)&1,n=-1==(c[i+8]|0)&1,n&1?0==(r|0)?m=16:(m=d,v[c[c[m]+2]](m,c[i+9],c[i+10]),m=15):m=15,15==m&&(m=0!=(r|0)?17:16),16==m&&(n&1?m=17:(n=c[i+8],i=(n<<4)+i,j+=n,m=19)),17==m&&(i+=16,j+=1),(j|0)>=(c[a]|0)){break a}}}}while(0);(c[n1]|0)<(p|0)&&(c[n1]=p);b=l}Tdb.X=1;function Udb(a,d,e,f,g,h,i,j){var l=b;b+=46;var m,n,p,r,s,t;t=l+4;var w=l+8,x=l+11,y=l+15,z=l+19,A=l+22,C=l+25,B=l+26,K=l+34,E=l+38;n=i;p=0;$subTreeSize=j-i;i=k1(a+31,i);N(l,f,e);IB(l);N(t,f,e);t=J(l,t);k[l]=0==k[l]?0xde0b6b000000000:1/k[l];k[l+1]=0==k[l+1]?0xde0b6b000000000:1/k[l+1];k[l+2]=0==k[l+2]?0xde0b6b000000000:1/k[l+2];c[w]=0>k[l]&1;var G=w+1;c[G]=0>k[l+1]&1;c[G+1]=0>k[l+2]&1;c[x]=c[e];k[x]=k[e];c[x+1]=c[e+1];k[x+1]=k[e+1];c[x+2]=c[e+2];k[x+2]=k[e+2];c[x+3]=c[e+3];k[x+3]=k[e+3];c[y]=c[e];k[y]=k[e];c[y+1]=c[e+1];k[y+1]=k[e+1];c[y+2]=c[e+2];k[y+2]=k[e+2];c[y+3]=c[e+3];k[y+3]=k[e+3];hp(x,f);gp(y,f);xn(x,g);xn(y,h);fp(a,z,x,0);fp(a,A,y,1);f=(n|0)<(j|0);a:do{if(f){for(var x=z,y=A,G=B,M=K,L=B+4,F=E,I=B,R=B+4,O=w,Z=B;;){if(p+=1,k[C]=1,s=0,m=S0(x,y,i,i+3),r=E0(i)&1,0!=(m|0)&&(qp(K,a,i),c[G]=c[M],k[G]=k[M],c[G+1]=c[M+1],k[G+1]=k[M+1],c[G+2]=c[M+2],k[G+2]=k[M+2],c[G+3]=c[M+3],k[G+3]=k[M+3],qp(E,a,i+3),c[L]=c[F],k[L]=k[F],c[L+1]=c[F+1],k[L+1]=k[F+1],c[L+2]=c[F+2],k[L+2]=k[F+2],c[L+3]=c[F+3],k[L+3]=k[F+3],JC(I,h),JC(R,g),s=rY(e,l,O,Z,C,0,t)&1),r&1?0==(s|0)?m=16:(m=d,v[c[c[m]+2]](m,Q0(i),R0(i)),m=15):m=15,15==m&&(m=0!=(s|0)?17:16),16==m&&(r&1?m=17:(r=F0(i),i+=7*r,n+=r,m=19)),17==m&&(i+=7,n+=1),(n|0)>=(j|0)){break a}}}}while(0);(c[n1]|0)<(p|0)&&(c[n1]=p);b=l}Udb.X=1;function ap(a,d,e,f){var g=b;b+=14;var h=g+4,i=g+5,j=g+6,l=g+7,m=g+11,n=g+12,p=g+13;k[h]=0;k[i]=0;k[j]=0;H(g,h,i,j);k[m]=0;k[n]=0;k[p]=0;H(l,m,n,p);sp(a,d,e,f,g,l);b=g}ap.X=1;function sp(a,d,e,f,g,h){var i=c[a+14];c[a+15]&1?Udb(a,d,e,f,g,h,0,i):Tdb(a,d,e,f,g,h,0,i)}sp.X=1;function Zo(a){var d;d=(c[a+42]<<5)+172;var e=c[a+14];return c[a+15]&1?(e<<4)+d:(e<<6)+d}Zo.X=1;function hbb(a,d,e,f){var g,h;$4=e;e=f&1;c[a+42]=C0(a+37);mW(d);f=c[a+14];e&1?(c[d+14]=p1(f),q1(a+1,d+1),q1(a+5,d+5),q1(a+9,d+9),c[d+36]=p1(c[a+36]),c[d+42]=p1(c[a+42])):(c[d+14]=f,f=d+1,g=a+1,c[f]=c[g],k[f]=k[g],c[f+1]=c[g+1],k[f+1]=k[g+1],c[f+2]=c[g+2],k[f+2]=k[g+2],c[f+3]=c[g+3],k[f+3]=k[g+3],f=d+5,g=a+5,c[f]=c[g],k[f]=k[g],c[f+1]=c[g+1],k[f+1]=k[g+1],c[f+2]=c[g+2],k[f+2]=k[g+2],c[f+3]=c[g+3],k[f+3]=k[g+3],f=d+9,g=a+9,c[f]=c[g],k[f]=k[g],c[f+1]=c[g+1],k[f+1]=k[g+1],c[f+2]=c[g+2],k[f+2]=k[g+2],c[f+3]=c[g+3],k[f+3]=k[g+3],c[d+36]=c[a+36],c[d+42]=c[a+42]);c[d+15]=c[a+15]&1;f=d+172;f+=0;g=c[a+14];if(c[a+15]&1){r1(d+31,f,g,g);var i=e&1;a:do{if(i){if(h=0,(h|0)<(g|0)){for(var j=a+31,l=a+31,m=a+31,n=a+31,p=a+31,r=a+31,s=a+31;;){if(c[D0(d+31,h)]=s1(c[k1(j,h)]),c[D0(d+31,h)+1]=s1(c[k1(l,h)+1]),c[D0(d+31,h)+2]=s1(c[k1(m,h)+2]),c[D0(d+31,h)+3]=s1(c[k1(n,h)+3]),c[D0(d+31,h)+4]=s1(c[k1(p,h)+4]),c[D0(d+31,h)+5]=s1(c[k1(r,h)+5]),c[D0(d+31,h)+6]=p1(c[k1(s,h)+6]),h+=1,(h|0)>=(g|0)){break a}}}}else{if(h=0,(h|0)<(g|0)){j=a+31;l=a+31;m=a+31;n=a+31;p=a+31;r=a+31;for(s=a+31;;){if(c[D0(d+31,h)]=c[k1(j,h)],c[D0(d+31,h)+1]=c[k1(l,h)+1],c[D0(d+31,h)+2]=c[k1(m,h)+2],c[D0(d+31,h)+3]=c[k1(n,h)+3],c[D0(d+31,h)+4]=c[k1(p,h)+4],c[D0(d+31,h)+5]=c[k1(r,h)+5],c[D0(d+31,h)+6]=c[k1(s,h)+6],h+=1,(h|0)>=(g|0)){break a}}}}}while(0);f=(g<<4)+f;r1(d+31,0,0,0)}else{t1(d+21,f,g,g);i=e&1;a:do{if(i){if(h=0,(h|0)<(g|0)){j=a+21;l=a+21;m=a+21;n=a+21;for(p=a+21;;){if(q1(l1(j,h),j1(d+21,h)),q1(l1(l,h)+4,j1(d+21,h)+4),c[j1(d+21,h)+8]=p1(c[l1(m,h)+8]),c[j1(d+21,h)+9]=p1(c[l1(n,h)+9]),c[j1(d+21,h)+10]=p1(c[l1(p,h)+10]),h+=1,(h|0)>=(g|0)){break a}}}}else{if(h=0,(h|0)<(g|0)){j=a+21;l=a+21;m=a+21;n=a+21;for(p=a+21;;){if(r=j1(d+21,h),s=l1(j,h),c[r]=c[s],k[r]=k[s],c[r+1]=c[s+1],k[r+1]=k[s+1],c[r+2]=c[s+2],k[r+2]=k[s+2],c[r+3]=c[s+3],k[r+3]=k[s+3],r=j1(d+21,h)+4,s=l1(l,h)+4,c[r]=c[s],k[r]=k[s],c[r+1]=c[s+1],k[r+1]=k[s+1],c[r+2]=c[s+2],k[r+2]=k[s+2],c[r+3]=c[s+3],k[r+3]=k[s+3],c[j1(d+21,h)+8]=c[l1(m,h)+8],c[j1(d+21,h)+9]=c[l1(n,h)+9],c[j1(d+21,h)+10]=c[l1(p,h)+10],h+=1,(h|0)>=(g|0)){break a}}}}}while(0);f=(g<<6)+f;t1(d+21,0,0,0)}f+=0;u1(d+37,f,c[a+42],c[a+42]);e&=1;a:do{if(e){if(f=0,g=a+42,(f|0)<(c[g]|0)){i=a+37;h=a+37;j=a+37;l=a+37;m=a+37;n=a+37;p=a+37;for(r=a+37;;){if(c[P0(d+37,f)]=s1(c[o1(i,f)]),c[P0(d+37,f)+1]=s1(c[o1(h,f)+1]),c[P0(d+37,f)+2]=s1(c[o1(j,f)+2]),c[P0(d+37,f)+3]=s1(c[o1(l,f)+3]),c[P0(d+37,f)+4]=s1(c[o1(m,f)+4]),c[P0(d+37,f)+5]=s1(c[o1(n,f)+5]),c[P0(d+37,f)+6]=p1(c[o1(p,f)+6]),c[P0(d+37,f)+7]=p1(c[o1(r,f)+7]),f+=1,(f|0)>=(c[g]|0)){break a}}}}else{if(f=0,g=a+42,(f|0)<(c[g]|0)){i=a+37;h=a+37;j=a+37;l=a+37;m=a+37;n=a+37;p=a+37;for(r=a+37;;){if(c[P0(d+37,f)]=c[o1(i,f)],c[P0(d+37,f)+1]=c[o1(h,f)+1],c[P0(d+37,f)+2]=c[o1(j,f)+2],c[P0(d+37,f)+3]=c[o1(l,f)+3],c[P0(d+37,f)+4]=c[o1(m,f)+4],c[P0(d+37,f)+5]=c[o1(n,f)+5],c[P0(d+37,f)+6]=c[o1(p,f)+6],c[P0(d+37,f)+7]=c[o1(r,f)+7],c[P0(d+37,f)+8]=0,c[P0(d+37,f)+9]=0,c[P0(d+37,f)+10]=0,f+=1,(f|0)>=(c[g]|0)){break a}}}}}while(0);u1(d+37,0,0,0);c[d]=0;return 1}hbb.X=1;function q1(a,d){var e;for(e=0;;){Vdb(a+e,d+e);var f=e+1;e=f;if(4<=(f|0)){break}}}q1.X=1;function r1(a,d,e,f){L0(a);c[a+4]=0;c[a+3]=d;c[a+1]=e;c[a+2]=f}r1.X=1;function s1(a){return((a&255)<<8|(a&65280)>>8)&65535}s1.X=1;function t1(a,d,e,f){M0(a);c[a+4]=0;c[a+3]=d;c[a+1]=e;c[a+2]=f}t1.X=1;function u1(a,d,e,f){Odb(a);c[a+4]=0;c[a+3]=d;c[a+1]=e;c[a+2]=f}u1.X=1;function dKa(a,d,e){var f,g,e=e&1;if(0==(a|0)){a=0}else{if(e&1&&(c[a+14]=p1(c[a+14]),v1(a+1),v1(a+5),v1(a+9),c[a+36]=p1(c[a+36]),c[a+42]=p1(c[a+42])),Zo(a)>>>0>d>>>0){a=0}else{d=a+172;d+=0;f=c[a+14];Wdb(a,a,0);if(c[a+15]&1){r1(a+31,d,f,f);var h=e&1;a:do{if(h&&(g=0,(g|0)<(f|0))){for(;;){if(c[D0(a+31,g)]=s1(c[D0(a+31,g)]),c[D0(a+31,g)+1]=s1(c[D0(a+31,g)+1]),c[D0(a+31,g)+2]=s1(c[D0(a+31,g)+2]),c[D0(a+31,g)+3]=s1(c[D0(a+31,g)+3]),c[D0(a+31,g)+4]=s1(c[D0(a+31,g)+4]),c[D0(a+31,g)+5]=s1(c[D0(a+31,g)+5]),c[D0(a+31,g)+6]=p1(c[D0(a+31,g)+6]),g+=1,(g|0)>=(f|0)){break a}}}}while(0);d=(f<<4)+d}else{t1(a+21,d,f,f);h=e&1;a:do{if(h&&(g=0,(g|0)<(f|0))){for(;;){if(v1(j1(a+21,g)),v1(j1(a+21,g)+4),c[j1(a+21,g)+8]=p1(c[j1(a+21,g)+8]),c[j1(a+21,g)+9]=p1(c[j1(a+21,g)+9]),c[j1(a+21,g)+10]=p1(c[j1(a+21,g)+10]),g+=1,(g|0)>=(f|0)){break a}}}}while(0);d=(f<<6)+d}d+=0;u1(a+37,d,c[a+42],c[a+42]);d=e&1;a:do{if(d&&(e=0,(e|0)<(c[a+42]|0))){for(;;){if(c[P0(a+37,e)]=s1(c[P0(a+37,e)]),c[P0(a+37,e)+1]=s1(c[P0(a+37,e)+1]),c[P0(a+37,e)+2]=s1(c[P0(a+37,e)+2]),c[P0(a+37,e)+3]=s1(c[P0(a+37,e)+3]),c[P0(a+37,e)+4]=s1(c[P0(a+37,e)+4]),c[P0(a+37,e)+5]=s1(c[P0(a+37,e)+5]),c[P0(a+37,e)+6]=p1(c[P0(a+37,e)+6]),c[P0(a+37,e)+7]=p1(c[P0(a+37,e)+7]),e+=1,(e|0)>=(c[a+42]|0)){break a}}}}while(0)}}return a}dKa.X=1;function v1(a){var d=b;b+=4;var e;for(e=0;;){Vdb(a+e,d+e);var f=e+1;e=f;if(4<=(f|0)){break}}c[a]=c[d];k[a]=k[d];c[a+1]=c[d+1];k[a+1]=k[d+1];c[a+2]=c[d+2];k[a+2]=k[d+2];c[a+3]=c[d+3];k[a+3]=k[d+3];b=d}v1.X=1;function Wdb(a,d,e){$4=e&1;c[a]=f1+2;var e=a+1,f=d+1;c[e]=c[f];k[e]=k[f];c[e+1]=c[f+1];k[e+1]=k[f+1];c[e+2]=c[f+2];k[e+2]=k[f+2];c[e+3]=c[f+3];k[e+3]=k[f+3];e=a+5;f=d+5;c[e]=c[f];k[e]=k[f];c[e+1]=c[f+1];k[e+1]=k[f+1];c[e+2]=c[f+2];k[e+2]=k[f+2];c[e+3]=c[f+3];k[e+3]=k[f+3];e=a+9;d+=9;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3];c[a+13]=278;O0(a+16);O0(a+21);N0(a+26);N0(a+31);g1(a+37)}Wdb.X=1;function Xdb(a,d){var e=b;b+=34;var f,g,h,i=e+16,j=e+23;Tc(a+5,d+4);Tc(a+1,d);Tc(a+9,d+8);c[a+14]=c[d+12];c[a+15]=0!=(c[d+13]|0)&1;f=c[d+14];g=e;for(h=g+16;g=(f|0)){break a}}}}while(0);f=c[d+15];c[i]=0;k[i]=0;c[i+1]=0;k[i+1]=0;c[i+2]=0;k[i+2]=0;c[i+3]=0;k[i+3]=0;c[i+4]=0;k[i+4]=0;c[i+5]=0;k[i+5]=0;c[i+6]=0;k[i+6]=0;H0(a+31,f,i);h=0!=(f|0);a:do{if(h&&(i=c[d+17],g=0,(g|0)<(f|0))){for(var l=a+31,m=a+31,n=a+31,p=a+31,r=a+31,s=a+31,t=a+31;;){if(c[D0(l,g)+6]=c[i+6],c[D0(m,g)+3]=c[i+3],c[D0(n,g)+4]=c[i+4],c[D0(p,g)+5]=c[i+5],c[D0(r,g)]=c[i],c[D0(s,g)+1]=c[i+1],c[D0(t,g)+2]=c[i+2],g+=1,i+=7,(g|0)>=(f|0)){break a}}}}while(0);c[a+36]=c[d+19];i=c[d+20];Ydb(a+37,i,j);g=0!=(i|0);a:do{if(g&&(j=c[d+18],f=0,(f|0)<(i|0))){h=a+37;l=a+37;m=a+37;n=a+37;p=a+37;r=a+37;s=a+37;for(t=a+37;;){if(c[P0(h,f)+3]=c[j+5],c[P0(l,f)+4]=c[j+6],c[P0(m,f)+5]=c[j+7],c[P0(n,f)]=c[j+2],c[P0(p,f)+1]=c[j+3],c[P0(r,f)+2]=c[j+4],c[P0(s,f)+6]=c[j],c[P0(t,f)+7]=c[j+1],f+=1,j+=8,(f|0)>=(i|0)){break a}}}}while(0);b=e}Xdb.X=1;function Ydb(a,d,e){var f,g;f=C0(a);var h=(d|0)<(f|0);a:do{if(h){if(g=d,(g|0)<(f|0)){for(;;){if(g+=1,(g|0)>=(f|0)){break a}}}}else{if((d|0)>(C0(a)|0)&&Zab(a,d),g=f,(g|0)<(d|0)){for(var i=a+3;;){for(var j=e,l=c[i]+11*g,m=j+11;j=(d|0)){break a}}}}}while(0);c[a+1]=d}Ydb.X=1;function Zdb(a,d){var e=b;b+=34;var f,g,h,i=e+16,j=e+23;Ob(a+5,d+4);Ob(a+1,d);Ob(a+9,d+8);c[a+14]=c[d+12];c[a+15]=0!=(c[d+13]|0)&1;f=c[d+14];g=e;for(h=g+16;g=(f|0)){break a}}}}while(0);f=c[d+15];c[i]=0;k[i]=0;c[i+1]=0;k[i+1]=0;c[i+2]=0;k[i+2]=0;c[i+3]=0;k[i+3]=0;c[i+4]=0;k[i+4]=0;c[i+5]=0;k[i+5]=0;c[i+6]=0;k[i+6]=0;H0(a+31,f,i);h=0!=(f|0);a:do{if(h&&(i=c[d+17],g=0,(g|0)<(f|0))){for(var l=a+31,m=a+31,n=a+31,p=a+31,r=a+31,s=a+31,t=a+31;;){if(c[D0(l,g)+6]=c[i+6],c[D0(m,g)+3]=c[i+3],c[D0(n,g)+4]=c[i+4],c[D0(p,g)+5]=c[i+5],c[D0(r,g)]=c[i],c[D0(s,g)+1]=c[i+1],c[D0(t,g)+2]=c[i+2],g+=1,i+=7,(g|0)>=(f|0)){break a}}}}while(0);c[a+36]=c[d+18];i=c[d+19];Ydb(a+37,i,j);g=0!=(i|0);a:do{if(g&&(j=c[d+20],f=0,(f|0)<(i|0))){h=a+37;l=a+37;m=a+37;n=a+37;p=a+37;r=a+37;s=a+37;for(t=a+37;;){if(c[P0(h,f)+3]=c[j+5],c[P0(l,f)+4]=c[j+6],c[P0(m,f)+5]=c[j+7],c[P0(n,f)]=c[j+2],c[P0(p,f)+1]=c[j+3],c[P0(r,f)+2]=c[j+4],c[P0(s,f)+6]=c[j],c[P0(t,f)+7]=c[j+1],f+=1,j+=8,(f|0)>=(i|0)){break a}}}}while(0);b=e}Zdb.X=1;function p1(a){return(a&16711680)>>>8|(a&-16777216)>>>24|(a&65280)<<8|(a&255)<<24}p1.X=1;function g1(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}g1.X=1;function Vdb(a,d){c[d]=c[a+3];c[d+1]=c[a+2];c[d+2]=c[a+1];c[d+3]=c[a]}Vdb.X=1;function $db(a,d,e){var f,g,h,i;Mb(a+5,d+4);Mb(a+1,d);Mb(a+9,d+8);c[d+12]=c[a+14];c[d+13]=c[a+15]&1;c[d+14]=B0(a+21);f=0!=(B0(a+21)|0)?v[c[c[e]+7]](e,l1(a+21,0)):0;c[d+16]=f;if(0!=(c[d+16]|0)){f=B0(a+21);g=v[c[c[e]+4]](e,48,f);h=c[g+2];i=0;var j=(i|0)<(f|0);a:do{if(j){for(var l=a+21,m=a+21,n=a+21,p=a+21,r=a+21;;){if(Mb(l1(l,i)+4,h+4),Mb(l1(m,i),h),c[h+8]=c[l1(n,i)+8],c[h+9]=c[l1(p,i)+9],c[h+10]=c[l1(r,i)+10],i+=1,h+=15,(i|0)>=(f|0)){break a}}}}while(0);v[c[c[e]+5]](e,g,D.Me,1497453121,l1(a+21,0))}c[d+15]=s0(a+31);f=0!=(s0(a+31)|0)?v[c[c[e]+7]](e,k1(a+31,0)):0;c[d+17]=f;if(0!=(c[d+17]|0)){f=s0(a+31);g=v[c[c[e]+4]](e,16,f);h=c[g+2];i=0;j=(i|0)<(f|0);a:do{if(j){for(var l=a+31,m=a+31,n=a+31,p=a+31,r=a+31,s=a+31,t=a+31;;){if(c[h+6]=c[k1(l,i)+6],c[h+3]=c[k1(m,i)+3],c[h+4]=c[k1(n,i)+4],c[h+5]=c[k1(p,i)+5],c[h]=c[k1(r,i)],c[h+1]=c[k1(s,i)+1],c[h+2]=c[k1(t,i)+2],i+=1,h+=7,(i|0)>=(f|0)){break a}}}}while(0);v[c[c[e]+5]](e,g,D.de,1497453121,k1(a+31,0))}c[d+19]=c[a+36];c[d+20]=C0(a+37);f=0!=(C0(a+37)|0)?v[c[c[e]+7]](e,o1(a+37,0)):0;c[d+18]=f;if(0!=(c[d+18]|0)){d=C0(a+37);f=v[c[c[e]+4]](e,20,d);g=c[f+2];h=0;i=(h|0)<(d|0);a:do{if(i){j=a+37;l=a+37;m=a+37;n=a+37;p=a+37;r=a+37;s=a+37;for(t=a+37;;){if(c[g+5]=c[o1(j,h)+3],c[g+6]=c[o1(l,h)+4],c[g+7]=c[o1(m,h)+5],c[g+2]=c[o1(n,h)],c[g+3]=c[o1(p,h)+1],c[g+4]=c[o1(r,h)+2],c[g]=c[o1(s,h)+6],c[g+1]=c[o1(t,h)+7],h+=1,g+=8,(h|0)>=(d|0)){break a}}}}while(0);v[c[c[e]+5]](e,f,D.ze,1497453121,o1(a+37,0))}return D.Le}$db.X=1;function Odb(a){lbb(a,0,C0(a));mbb(a);g1(a)}Odb.X=1;function NUa(a,d,e,f){EY(a);c[a]=aeb+2;var g=a+1;c[g]=c[d];k[g]=k[d];c[g+1]=c[d+1];k[g+1]=k[d+1];c[g+2]=c[d+2];k[g+2]=k[d+2];c[g+3]=c[d+3];k[g+3]=k[d+3];d=a+5;c[d]=c[e];k[d]=k[e];c[d+1]=c[e+1];k[d+1]=k[e+1];c[d+2]=c[e+2];k[d+2]=k[e+2];c[d+3]=c[e+3];k[d+3]=k[e+3];c[a+9]=f;k[a+10]=1}NUa.X=1;function beb(a,d,e,f){var g=b;b+=80;var h,i,j=g+4,l=g+8,m=g+12,n=g+16,p=g+20,r,s=g+24,t=g+28,w=g+32,x=g+36,y=g+40,z=g+44,A=g+48,C=g+52,B=g+56,K=g+60,E=g+64,G=g+68,M=g+72,L=g+76;h=d+4;i=d+8;N(j,h,d);c[g]=c[j];k[g]=k[j];c[g+1]=c[j+1];k[g+1]=k[j+1];c[g+2]=c[j+2];k[g+2]=k[j+2];c[g+3]=c[j+3];k[g+3]=k[j+3];N(m,i,d);c[l]=c[m];k[l]=k[m];c[l+1]=c[m+1];k[l+1]=k[m+1];c[l+2]=c[m+2];k[l+2]=k[m+2];c[l+3]=c[m+3];k[l+3]=k[m+3];qn(p,g,l);c[n]=c[p];k[n]=k[p];c[n+1]=c[p+1];k[n+1]=k[p+1];c[n+2]=c[p+2];k[n+2]=k[p+2];c[n+3]=c[p+3];k[n+3]=k[p+3];m=J(d,n);j=J(n,a+1);j-=m;l=J(n,a+5);l-=m;p=0<=j*l;a:do{if(!p&&!(0!=(c[a+9]&1|0)&&0=r&&(N(B,i,s),F=C,I=B,c[F]=c[I],k[F]=k[I],c[F+1]=c[I+1],k[F+1]=k[I+1],c[F+2]=c[I+2],k[F+2]=k[I+2],c[F+3]=c[I+3],k[F+3]=k[I+3],qn(E,x,C),F=K,I=E,c[F]=c[I],k[F]=k[I],c[F+1]=c[I+1],k[F+1]=k[I+1],c[F+2]=c[I+2],k[F+2]=k[I+2],c[F+3]=c[I+3],k[F+3]=k[I+3],J(K,n)>=r&&(qn(M,C,t),F=G,I=M,c[F]=c[I],k[F]=k[I],c[F+1]=c[I+1],k[F+1]=k[I+1],c[F+2]=c[I+2],k[F+2]=k[I+2],c[F+3]=c[I+3],k[F+3]=k[I+3],J(G,n)>=r))){IB(n);r=0!=(c[a+9]&2|0);do{if(!r&&!(0>=j)){k[a+10]=v[c[c[a]+3]](a,n,m,e,f);break a}}while(0);r=c[c[a]+3];WP(L,n);k[a+10]=v[r](a,L,m,e,f)}}}while(0);b=g}beb.X=1;function ceb(){}ceb.X=1;function deb(){return D.fe}deb.X=1;function eeb(){return 76}eeb.X=1;function feb(a){return a+4}feb.X=1;function dUa(a,d,e,f,g,h){EY(a);c[a]=geb+2;c[a+1]=d;xi(a+2,e);xi(a+18,f);xi(a+34,g);k[a+50]=1;k[a+51]=h;k[a+52]=0}dUa.X=1;function heb(){}heb.X=1;function ieb(a){xe(a)}ieb.X=1;function jeb(){}jeb.X=1;function keb(a){xe(a)}keb.X=1;function leb(a,d,e){cZ(a);c[a]=meb+2;var f=a+4;c[f]=c[e];k[f]=k[e];c[f+1]=c[e+1];k[f+1]=k[e+1];c[f+2]=c[e+2];k[f+2]=k[e+2];c[f+3]=c[e+3];k[f+3]=k[e+3];c[a+8]=d;c[a+1]=22}leb.X=1;function neb(a){xe(a)}neb.X=1;function oeb(){}oeb.X=1;function peb(a,d,e,f){var g=b;b+=21;var h=g+6,i=g+10,j=g+11,l=g+12,m=g+13,n=g+17;qeb(g,d,a+4);k[i]=1/k[a+4];k[j]=1/k[a+4+1];k[l]=1/k[a+4+2];H(h,i,j,l);k[m]=0<=k[a+4]?k[e]*k[h]:k[f]*k[h];k[m+1]=0<=k[a+4+1]?k[e+1]*k[h+1]:k[f+1]*k[h+1];k[m+2]=0<=k[a+4+2]?k[e+2]*k[h+2]:k[f+2]*k[h+2];k[m+3]=0;k[n]=0>=k[a+4]?k[e]*k[h]:k[f]*k[h];k[n+1]=0>=k[a+4+1]?k[e+1]*k[h+1]:k[f+1]*k[h+1];k[n+2]=0>=k[a+4+2]?k[e+2]*k[h+2]:k[f+2]*k[h+2];k[n+3]=0;a=c[a+8];v[c[c[a]+15]](a,g,m,n);b=g}peb.X=1;function reb(){}reb.X=1;function seb(a,d,e,f){var g=b;b+=70;var h=g+4,i=g+8,j=g+12,l=g+16,m=g+20,n=g+21,p=g+25,r=g+26,s=g+30,t=g+34,w=g+35,x=g+39,y=g+51,z=g+55,A=g+59,C=g+60,B=g+61,K=g+62,E=g+66,G=c[a+8]+4;c[g]=c[G];k[g]=k[G];c[g+1]=c[G+1];k[g+1]=k[G+1];c[g+2]=c[G+2];k[g+2]=k[G+2];c[g+3]=c[G+3];k[g+3]=k[G+3];G=c[a+8]+8;c[h]=c[G];k[h]=k[G];c[h+1]=c[G+1];k[h+1]=k[G+1];c[h+2]=c[G+2];k[h+2]=k[G+2];c[h+3]=c[G+3];k[h+3]=k[G+3];ig(i,g,a+4);ig(j,h,a+4);k[g]=0<=k[a+4]?k[i]:k[j];k[g+1]=0<=k[a+4+1]?k[i+1]:k[j+1];k[g+2]=0<=k[a+4+2]?k[i+2]:k[j+2];k[h]=0>=k[a+4]?k[i]:k[j];k[h+1]=0>=k[a+4+1]?k[i+1]:k[j+1];k[h+2]=0>=k[a+4+2]?k[i+2]:k[j+2];k[m]=.5;N(n,h,g);Q(l,n,m);a=c[a+8];k[p]=v[c[c[a]+11]](a);H(r,p,p,p);xn(l,r);k[t]=.5;wn(w,h,g);Q(s,w,t);qc(x,d);vw(y,d,s);k[A]=J(0+x,l);k[C]=J(4+x,l);k[B]=J(8+x,l);H(z,A,C,B);N(K,y,z);c[e]=c[K];k[e]=k[K];c[e+1]=c[K+1];k[e+1]=k[K+1];c[e+2]=c[K+2];k[e+2]=k[K+2];c[e+3]=c[K+3];k[e+3]=k[K+3];wn(E,y,z);c[f]=c[E];k[f]=k[E];c[f+1]=c[E+1];k[f+1]=k[E+1];c[f+2]=c[E+2];k[f+2]=k[E+2];c[f+3]=c[E+3];k[f+3]=k[E+3];b=g}seb.X=1;function teb(a,d){var e=a+4;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3]}teb.X=1;function ueb(a,d,e){var f=c[a+8];v[c[c[f]+13]](f,d,e);c[d+1]=22;mc(a+4,d+24);return D.Qe}ueb.X=1;function qeb(a,d,e){EY(a);c[a]=veb+2;c[a+1]=d;a+=2;c[a]=c[e];k[a]=k[e];c[a+1]=c[e+1];k[a+1]=k[e+1];c[a+2]=c[e+2];k[a+2]=k[e+2];c[a+3]=c[e+3];k[a+3]=k[e+3]}qeb.X=1;function web(a){xe(a)}web.X=1;function xeb(a,d,e,f){var g=b;b+=168;var h=g+26,i=g+117,j=g+118,l=g+124;sZ(g,d,d+4,d+8);v[c[c[g]+10]](g,k[a+51]);gY(h);vY(i);wY(j,c[a+1],g,h,i);fY(l);k[l+41]=1;k[l+43]=k[a+52];DWa(j,a+2,a+18,a+34,a+34,l)&&9999999747378752e-20=(e|0)){break a}}}}while(0)}Aeb.X=1;function x1(a){return c[a+1]}x1.X=1;function Eeb(a){return c[a+2]}Eeb.X=1;function Feb(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=f+d;0!=(i|0)&&(c[i]=c[c[h]+d]);d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}Feb.X=1;function y1(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}y1.X=1;function z1(a,d){c[a+13]=d}z1.X=1;function Geb(a,d){var e;(Eeb(a)|0)<(d|0)&&(e=Heb(a,d),Feb(a,0,x1(a),e),Aeb(a,0,x1(a)),Beb(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}Geb.X=1;function Heb(a,d){return 0!=(d|0)?Ieb(a,d,0):0}Heb.X=1;function Beb(a){0!=(c[a+3]|0)&&(c[a+4]&1&&Jeb(a,c[a+3]),c[a+3]=0)}Beb.X=1;function Jeb(a,d){$1=a;yh(d)}Jeb.X=1;function Ieb(a,d,e){$1=a;$3=e;return Ue(d<<2,16)}Ieb.X=1;function Keb(a,d,e){bX(a);c[a]=A1+2;c[a+7]=e;c[a+8]=0;c[a+9]=0;0==(e|0)&&(e=Ue(76,16),0==(e|0)?e=0:dX(e),c[a+7]=e,c[a+8]=1);c[a+5]=Ue(52*d,16);var e=c[a+5],f=0==(d|0);a:do{if(!f){for(var g=e+14*d,h=e;;){if(gV(h),h+=14,(h|0)==(g|0)){break a}}}}while(0);c[a+4]=e;c[a+2]=d;c[a+1]=0;c[a+6]=0;c[a+3]=-1;e=c[a+6];f=(e|0)<(d|0);a:do{if(f){g=a+4;for(h=a+4;;){if(z1(c[g]+14*e,e+1),c[c[h]+14*e+4]=e+2,e+=1,(e|0)>=(d|0)){break a}}}}while(0);z1(c[a+4]+14*(d-1),0)}Keb.X=1;function Leb(a){Meb(a);xe(a)}Leb.X=1;function Meb(a){c[a]=A1+2;yh(c[a+5]);if(c[a+8]&1){var d=c[a+7];v[c[c[d]]](d);yh(c[a+7])}}Meb.X=1;function Neb(a,d,e,f,g,h,i,j,l){$10=j;(c[a+1]|0)>=(c[a+2]|0)?d=0:(j=Oeb(a),a=c[a+4]+14*j,Peb(a,d,e,f,g,h,i,l),d=a);return d}Neb.X=1;function Qeb(){}Qeb.X=1;function Reb(){}Reb.X=1;function Seb(a){return c[a+7]}Seb.X=1;function Teb(a){return c[a+7]}Teb.X=1;function Ueb(a){return c[a+13]}Ueb.X=1;function Oeb(a){var d;d=c[a+6];c[a+6]=Ueb(c[a+4]+14*d);var e=a+1;c[e]+=1;(d|0)>(c[a+3]|0)&&(c[a+3]=d);return d}Oeb.X=1;function Veb(a,d,e){Web(a,d);a=c[a+7];v[c[c[a]+4]](a,d,e)}Veb.X=1;function Web(a,d){var e;e=(d-c[a+4]|0)/52&-1;if((e|0)==(c[a+3]|0)){var f=a+3;c[f]-=1}z1(d,c[a+6]);c[a+6]=e;c[d]=0;e=a+1;c[e]-=1}Web.X=1;function Xeb(a,d,e,f){a=d+5;c[e]=c[a];k[e]=k[a];c[e+1]=c[a+1];k[e+1]=k[a+1];c[e+2]=c[a+2];k[e+2]=k[a+2];c[e+3]=c[a+3];k[e+3]=k[a+3];d+=9;c[f]=c[d];k[f]=k[d];c[f+1]=c[d+1];k[f+1]=k[d+1];c[f+2]=c[d+2];k[f+2]=k[d+2];c[f+3]=c[d+3];k[f+3]=k[d+3]}Xeb.X=1;function Yeb(a,d,e,f,g){$6=g;a=d+5;c[a]=c[e];k[a]=k[e];c[a+1]=c[e+1];k[a+1]=k[e+1];c[a+2]=c[e+2];k[a+2]=k[e+2];c[a+3]=c[e+3];k[a+3]=k[e+3];d+=9;c[d]=c[f];k[d]=k[f];c[d+1]=c[f+1];k[d+1]=k[f+1];c[d+2]=c[f+2];k[d+2]=k[f+2];c[d+3]=c[f+3];k[d+3]=k[f+3]}Yeb.X=1;function Zeb(a,d,e,f,g,h){$2=d;$3=e;$5=g;$6=h;d=0;g=a+3;h=(d|0)<=(c[g]|0);a:do{if(h){for(var i=a+4;;){e=c[i]+14*d;if(0!=(c[e]|0)){var j=f;v[c[c[j]+2]](j,e)}d+=1;if(!((d|0)<=(c[g]|0))){break a}}}}while(0)}Zeb.X=1;function $eb(a,d,e,f){var g,h;g=0;var i=a+3,j=(g|0)<=(c[i]|0);a:do{if(j){for(var l=a+4;;){h=c[l]+14*g;if(0!=(c[h]|0)&&hX(d,e,h+5,h+9)){var m=f;v[c[c[m]+2]](m,h)}g+=1;if(!((g|0)<=(c[i]|0))){break a}}}}while(0)}$eb.X=1;function afb(a,d){return k[a+5]<=k[d+9]?k[d+5]<=k[a+9]?k[a+5+1]<=k[d+9+1]?k[d+5+1]<=k[a+9+1]?k[a+5+2]<=k[d+9+2]?k[d+5+2]<=k[a+9+2]:0:0:0:0:0}afb.X=1;function bfb(a,d){var e=b;b+=12;var f,g,h,i,j,l,m=e+4,n,p,r=e+8,s=0<=(c[a+1]|0);do{if(s){h=-1;f=0;var t=a+3,w=(f|0)<=(c[t]|0);a:do{if(w){n=a+4;p=a+3;for(var x=a+4,y=a+7,z=a+7,A=a+7,C=a+7;;){i=c[n]+14*f;var B=0!=(c[i]|0);b:do{if(B&&(h=f,g=f+1,(g|0)<=(c[p]|0))){for(;;){j=c[x]+14*g;if(0!=(c[j]|0)){l=i;var K=c[y];afb(l,j)?0==(v[c[c[K]+13]](K,i,j)|0)&&(l=c[z],v[c[c[l]+2]](l,i,j)):v[c[c[K]+14]](K)||(l=c[A],0!=(v[c[c[l]+13]](l,i,j)|0)&&(l=c[C],v[c[c[l]+3]](l,i,j,d)))}g+=1;if(!((g|0)<=(c[p]|0))){break b}}}}while(0);f+=1;if(!((f|0)<=(c[t]|0))){break a}}}}while(0);c[a+3]=h;if(c[a+8]&1&&(f=c[a+7],v[c[c[f]+14]](f))){f=c[a+7];g=v[c[c[f]+7]](f);iX(g);f=jX(g)-c[a+9];Az(e);kX(g,f,e);c[a+9]=0;Az(m);c[m]=0;c[m+1]=0;f=c[m+2]=0;h=(f|0)<(jX(g)|0);i=g;a:do{if(h){j=m;t=a+7;w=a+9;for(n=i;;){if(n=lX(n,f),p=mX(n,m)&1,x=n,c[j]=c[x],k[j]=k[x],c[j+1]=c[x+1],k[j+1]=k[x+1],c[j+2]=c[x+2],k[j+2]=k[x+2],c[j+3]=c[x+3],k[j+3]=k[x+3],p=p&1?1:afb(c[n],c[n+1])&1?0:1,p&1&&(p=c[t],v[c[c[p]+8]](p,n,d),c[n]=0,c[n+1]=0,c[w]+=1,c[nX]-=1),f+=1,n=g,(f|0)>=(jX(g)|0)){var E=n;break a}}}else{E=i}}while(0);iX(E);f=jX(g)-c[a+9];Az(r);kX(g,f,r);c[a+9]=0}}}while(0);b=e}bfb.X=1;function cfb(a,d,e){var f=b;b+=6;var g=f+1,h=f+2,i=f+3,j=f+4,l=f+5;$1=a;k[f]=-0xde0b6b000000000;k[g]=-0xde0b6b000000000;k[h]=-0xde0b6b000000000;pe(d,f,g,h);k[i]=0xde0b6b000000000;k[j]=0xde0b6b000000000;k[l]=0xde0b6b000000000;pe(e,i,j,l);b=f}cfb.X=1;function Peb(a,d,e,f,g,h,i,j){$4=f;hV(a,d,e,g,h,i,j)}Peb.X=1;function dfb(a){c[a]=B1+2;C1(a+1);XX(a+6);JW(a+11);c[a+16]=1}dfb.X=1;function efb(a){ffb(a);xe(a)}efb.X=1;function gfb(a,d){hfb(a+1,d)}gfb.X=1;function ifb(a,d,e){var f,g,h;$3=d;e=Am(e);d=v[c[c[e]+9]](e);e=v[c[c[e]+5]](e);f=0;var i=(f|0)<(d|0);a:do{if(i){for(var j=a+1;;){if(g=(f<<2)+e,h=c[c[g]],g=c[c[g+1]],0!=(h|0)&&Sh(h)&&0!=(g|0)&&Sh(g)&&jfb(j,Uh(h),Uh(g)),f+=1,(f|0)>=(d|0)){break a}}}}while(0)}ifb.X=1;function jfb(a,d,e){d=D1(a,d);e=D1(a,e);(d|0)!=(e|0)&&(c[E1(a,d)]=e,e=E1(a,e)+1,c[e]+=c[E1(a,d)+1])}jfb.X=1;function kfb(a,d,e){var f,g,h;g=f=0;var i=(g|0)<(Tl(d+1)|0);a:do{if(i){for(;;){h=c[$X(d+1,g)];if(!Pi(h)){var j=f;f=j+1;Yh(h,j)}Vh(h,-1);Zh(h,1);g+=1;if((g|0)>=(Tl(d+1)|0)){break a}}}}while(0);gfb(a,f);ifb(a,e,d)}kfb.X=1;function lfb(a,d){var e,f,g;f=e=0;var h=(f|0)<(Tl(d+1)|0);a:do{if(h){for(var i=a+1,j=a+1;;){var l=g=c[$X(d+1,f)];Pi(g)?(Yh(l,-1),Vh(g,-2)):(Yh(l,D1(i,e)),c[E1(j,e)+1]=f,Vh(g,-1),e+=1);f+=1;if((f|0)>=(Tl(d+1)|0)){break a}}}}while(0)}lfb.X=1;function D1(a,d){var e,f;e=d;var g=(e|0)!=(c[E1(a,e)]|0);a:do{if(g){for(var h=a,i=a,j=a;;){if(f=E1(h,c[E1(i,e)]),c[E1(j,e)]=c[f],e=c[f],(e|0)==(c[E1(a,e)]|0)){break a}}}}while(0);return e}D1.X=1;function ffb(a){c[a]=B1+2;TW(a+11);TX(a+6);mfb(a+1)}ffb.X=1;function nfb(a,d,e){var f=b;b+=3;var g,h=f+1,i,j,l,m,n,p=f+2,r;jY(f,D.Re);e+=1;c[h]=0;PY(a+6,0,h);ofb(a+1);h=F1(a+1);j=0;r=(j|0)<(h|0);a:do{if(r){for(;;){l=c[E1(a+1,j)];for(i=j+1;(i|0)<(h|0)&&(c[E1(a+1,i)]|0)==(l|0);){i+=1}g=1;m=j;var s=(m|0)<(i|0);b:do{if(s){for(;;){if(n=c[$X(e,c[E1(a+1,m)+1])],(Uh(n)|0)==(l|0)&&(1==(ki(n)|0)&&(g=0),4==(ki(n)|0)&&(g=0)),m+=1,(m|0)>=(i|0)){break b}}}}while(0);g&=1;b:do{if(g){if(m=j,(m|0)<(i|0)){for(;;){if(n=c[$X(e,c[E1(a+1,m)+1])],(Uh(n)|0)==(l|0)&&Li(n,2),m+=1,(m|0)>=(i|0)){break b}}}}else{if(m=j,(m|0)<(i|0)){for(;;){if(n=c[$X(e,c[E1(a+1,m)+1])],(Uh(n)|0)==(l|0)&&2==(ki(n)|0)&&(Li(n,3),Mi(n,0)),m+=1,(m|0)>=(i|0)){break b}}}}}while(0);j=i;if((j|0)>=(h|0)){break a}}}}while(0);h=v[c[c[d]+9]](d);e=0;i=a+16;for(a+=6;(e|0)<(h|0);){l=d;c[p]=v[c[c[l]+10]](l,e);l=$j(c[p]);r=g=Yj(c[p]);if(0!=(l|0)){if(2!=(ki(l)|0)){g=44}else{var t=r;g=42}}else{t=g,g=42}42==g&&(g=0==(t|0)?54:2!=(ki(r)|0)?44:54);44==g&&(Ti(l)&&2!=(ki(l)|0)&&ui(r,0),Ti(r)&&2!=(ki(r)|0)&&ui(l,0),c[i]&1&&(g=d,v[c[c[g]+7]](g,l,r)&&CX(a,p)));e+=1}kY(f);b=f}nfb.X=1;function pfb(a){return c[a+277]}pfb.X=1;function qfb(a){return c[a+278]}qfb.X=1;function F1(a){return c[a+1]}F1.X=1;function E1(a,d){return(d<<1)+c[a+3]}E1.X=1;function rfb(a){1<(AX(a)|0)&&G1(a,0,AX(a)-1)}rfb.X=1;function H1(a){var d;d=pfb(a);a=qfb(a);return 0<=(Uh(d)|0)?Uh(d):Uh(a)}H1.X=1;function sfb(a,d,e){var f,g;f=Tl(a);var h=(d|0)<(f|0);a:do{if(h){if(g=d,(g|0)<(f|0)){for(;;){if(g+=1,(g|0)>=(f|0)){break a}}}}else{if((d|0)>(Tl(a)|0)&&XLa(a,d),g=f,(g|0)<(d|0)){for(var i=a+3;;){var j=c[i]+g;0!=(j|0)&&(c[j]=c[e]);g+=1;if((g|0)>=(d|0)){break a}}}}}while(0);c[a+1]=d}sfb.X=1;function G1(a,d,e){var f=b;b+=1;var g,h,i;g=d;h=e;i=c[c[a+3]+((e+d|0)/2&-1)];for(var j=a+3,l=a+3;;){if(I1(f,c[c[j]+g],i)){g+=1}else{var m=I1(f,i,c[c[l]+h]);a:do{if(m){for(;;){if(h-=1,!I1(f,i,c[c[l]+h])){break a}}}}while(0);(g|0)<=(h|0)&&(mRa(a,g,h),g+=1,h-=1);if(!((g|0)<=(h|0))){break}}}(d|0)<(h|0)&&G1(a,d,h);(g|0)<(e|0)&&G1(a,g,e);b=f}G1.X=1;function I1(a,d,e){$1=a;return(H1(d)|0)<(H1(e)|0)}I1.X=1;function tfb(a,d,e,f,g,h){h&=1;aX(a,e,f,g);c[a]=J1+2;c[a+2]=0;c[a+3]=d;c[a+4]=h&1;d=c[a+4]&1?g:f;f=c[a+4]&1?f:g;0==(c[a+3]|0)&&(g=c[a+1],v[c[c[g]+6]](g,d,f)&&(g=c[a+1],c[a+3]=v[c[c[g]+3]](g,d,f),c[a+2]=1))}tfb.X=1;function ufb(a){vfb(a);xe(a)}ufb.X=1;function vfb(a){c[a]=J1+2;if(c[a+2]&1&&0!=(c[a+3]|0)){var d=c[a+1];v[c[c[d]+4]](d,c[a+3])}}vfb.X=1;function wfb(a,d,e,f,g){var h=b;b+=24;var i=h+4,j=h+8,l=h+12,m=h+16,n=h+20;$4=f;0!=(c[a+3]|0)&&(f=c[a+4]&1?e:d,d=c[a+4]&1?d:e,e=bi(f),f=f+1+12,c[l]=c[f],k[l]=k[f],c[l+1]=c[f+1],k[l+1]=k[f+1],c[l+2]=c[f+2],k[l+2]=k[f+2],c[l+3]=c[f+3],k[l+3]=k[f+3],l=xfb(a,d,i,j,l,dW(e)),fI(g,c[a+3]),1.1920928955078125e-7>l&&(N(n,i,j),j=IB(n),c[m]=c[j],k[m]=k[j],c[m+1]=c[j+1],k[m+1]=k[j+1],c[m+2]=c[j+2],k[m+2]=k[j+2],c[m+3]=c[j+3],k[m+3]=k[j+3],v[c[c[g]+4]](g,m,i,l)),c[a+2]&1&&0!=(Xj(c[a+3])|0)&&DI(g));b=h}wfb.X=1;function yfb(a,d,e,f){var g=b;b+=3;var h,i,j,l,m,n,p,r=g+1,s,t,w=g+2;h=e+1;nfb(a,d,e);e=F1(a+1);jY(g,D.ge);var x=c[a+16]&1;a:do{if(x){j=AX(a+6);rfb(a+6);l=0;m=1;i=0;for(var y=a+11,z=a+6,A=a+6,C=a+6,B=a+11,K=a+11,E=a+11;;){if((i|0)>=(e|0)){break a}n=c[E1(a+1,i)];for(p=1;(i|0)<(e|0)&&(c[E1(a+1,i)]|0)==(n|0);){c[r]=c[$X(h,c[E1(a+1,i)+1])],OW(y,r),Ki(c[r])&&(p=0),i+=1}t=s=0;var G=(l|0)<(j|0);if(G&&(H1(c[ZX(z,l)])|0)==(n|0)){t=ZX(A,l);for(m=l+1;(m|0)<(j|0)&&(n|0)==(H1(c[ZX(C,m)])|0);){m+=1}s=m-l}p&1||(p=f,v[c[c[p]+2]](p,$X(K,0),Tl(E),t,s,n));0!=(s|0)&&(l=m);c[w]=0;sfb(B,0,w)}}else{j=d,j=v[c[c[j]+11]](j),l=d,l=v[c[c[l]+9]](l),m=f,v[c[c[m]+2]](m,$X(h,0),Tl(h),j,l,-1)}}while(0);kY(g);b=g}yfb.X=1;function zfb(){return 1}zfb.X=1;function Afb(){return D.he}Afb.X=1;function xfb(a,d,e,f,g,h){var i=b;b+=142;var j;j=i+1;var l=i+2,m=i+10,n=i+14,p=i+22,r=i+26,s=i+30,t=i+34,w=i+58,x=i+62,y=i+66,z=i+67,A=i+68,C=i+69,B=i+70,K=i+71,E=i+72,G=i+73,M=i+74,L=i+75,F=i+76,I=i+77,R=i+78,O=i+79,Z=i+80,P=i+81,S=i+82,da=i+83,V=i+84,ba=i+85,$=i+89,Y=i+93,la=i+97,ka=i+101,ja=i+105,ea=i+109,ca=i+113,W=i+117,U=i+121,X=i+125,ma=i+129,ga=i+133,ha=i+137,ta=i+141;k[i]=h;h=bi(d);WP(m,h+7);c[l]=c[m];k[l]=k[m];c[l+1]=c[m+1];k[l+1]=k[m+1];c[l+2]=c[m+2];k[l+2]=k[m+2];c[l+3]=c[m+3];k[l+3]=k[m+3];var m=l+4,ra=h+7;c[m]=c[ra];k[m]=k[ra];c[m+1]=c[ra+1];k[m+1]=k[ra+1];c[m+2]=c[ra+2];k[m+2]=k[ra+2];c[m+3]=c[ra+3];k[m+3]=k[ra+3];k[j]=v[c[c[h]+11]](h);h=d+1;c[n]=c[l];k[n]=k[l];c[n+1]=c[l+1];k[n+1]=k[l+1];c[n+2]=c[l+2];k[n+2]=k[l+2];c[n+3]=c[l+3];k[n+3]=k[l+3];m=n+4;ra=l+4;c[m]=c[ra];k[m]=k[ra];c[m+1]=c[ra+1];k[m+1]=k[ra+1];c[m+2]=c[ra+2];k[m+2]=k[ra+2];c[m+3]=c[ra+3];k[m+3]=k[ra+3];H(p,j,j,j);xn(l,p);JC(l+4,p);p=1e7;k[z]=-1;k[A]=0;k[C]=0;pe(t,z,A,C);k[B]=0;k[K]=-1;k[E]=0;pe(t+4,B,K,E);k[G]=0;k[M]=0;k[L]=-1;pe(t+8,G,M,L);k[F]=1;k[I]=0;k[R]=0;pe(t+12,F,I,R);k[O]=0;k[Z]=1;k[P]=0;pe(t+16,O,Z,P);k[S]=0;k[da]=0;k[V]=1;pe(t+20,S,da,V);kQ(ba,h,g);c[s]=c[ba];k[s]=k[ba];c[s+1]=c[ba+1];k[s+1]=k[ba+1];c[s+2]=c[ba+2];k[s+2]=k[ba+2];c[s+3]=c[ba+3];k[s+3]=k[ba+3];z=0;c[x]=c[s];k[x]=k[s];c[x+1]=c[s+1];k[x+1]=k[s+1];c[x+2]=c[s+2];k[x+2]=k[s+2];c[x+3]=c[s+3];k[x+3]=k[s+3];for(A=0;!(N($,x,((3>(A|0)?0:1)<<2)+l),C=J($,(A<<2)+t),k[y]=C,0=e?e-k[j]:1);b=i;return j}xfb.X=1;function Bfb(a,d,e,f,g,h,i,j){var l=b;b+=114;var m,n=l+8,p=l+12,r=l+16,s=l+20,t=l+44,w=l+48,x,y=l+49,z=l+50,A=l+51,C=l+52,B=l+53,K=l+54,E=l+55,G=l+56,M=l+57,L=l+58,F=l+59,I=l+60,R=l+61,O=l+62,Z=l+63,P=l+64,S=l+65,da=l+66,V=l+67,ba=l+68,$=l+69,Y=l+70,la=l+71,ka=l+72;x=l+73;var ja=l+77,ea=l+81,ca=l+85,W=l+89,U=l+93,X=l+94,ma=l+98,ga=l+102,ha=l+106,ta=l+110;$2=a;c[l]=c[i];k[l]=k[i];c[l+1]=c[i+1];k[l+1]=k[i+1];c[l+2]=c[i+2];k[l+2]=k[i+2];c[l+3]=c[i+3];k[l+3]=k[i+3];a=l+4;c[a]=c[j];k[a]=k[j];c[a+1]=c[j+1];k[a+1]=k[j+1];c[a+2]=c[j+2];k[a+2]=k[j+2];c[a+3]=c[j+3];k[a+3]=k[j+3];k[w]=-1e7;k[y]=0;k[z]=0;k[A]=0;pe(n,y,z,A);k[C]=0;k[B]=0;k[K]=0;pe(t,C,B,K);k[E]=-1;k[G]=0;k[M]=0;pe(s,E,G,M);k[L]=0;k[F]=-1;k[I]=0;pe(s+4,L,F,I);k[R]=0;k[O]=0;k[Z]=-1;pe(s+8,R,O,Z);k[P]=1;k[S]=0;k[da]=0;pe(s+12,P,S,da);k[V]=0;k[ba]=1;k[$]=0;pe(s+16,V,ba,$);k[Y]=0;k[la]=0;k[ka]=1;pe(s+20,Y,la,ka);d+=1;kQ(x,d,g);c[r]=c[x];k[r]=k[x];c[r+1]=c[x+1];k[r+1]=k[x+1];c[r+2]=c[x+2];k[r+2]=k[x+2];c[r+3]=c[x+3];k[r+3]=k[x+3];for(x=g=0;;){if(6<=(x|0)){N(W,r,n);k[U]=J(t,W);Q(ca,t,U);N(ea,r,ca);h=e;c[h]=c[ea];k[h]=k[ea];c[h+1]=c[ea+1];k[h+1]=k[ea+1];c[h+2]=c[ea+2];k[h+2]=k[ea+2];c[h+3]=c[ea+3];k[h+3]=k[ea+3];Q(ma,t,w);wn(X,e,ma);ma=f;c[ma]=c[X];k[ma]=k[X];c[ma+1]=c[X+1];k[ma+1]=k[X+1];c[ma+2]=c[X+2];k[ma+2]=k[X+2];c[ma+3]=c[X+3];k[ma+3]=k[X+3];vw(ga,d,e);X=p;c[X]=c[ga];k[X]=k[ga];c[X+1]=c[ga+1];k[X+1]=k[ga+1];c[X+2]=c[ga+2];k[X+2]=k[ga+2];c[X+3]=c[ga+3];k[X+3]=k[ga+3];ga=e;X=p;c[ga]=c[X];k[ga]=k[X];c[ga+1]=c[X+1];k[ga+1]=k[X+1];c[ga+2]=c[X+2];k[ga+2]=k[X+2];c[ga+3]=c[X+3];k[ga+3]=k[X+3];vw(ha,d,f);ga=p;c[ga]=c[ha];k[ga]=k[ha];c[ga+1]=c[ha+1];k[ga+1]=k[ha+1];c[ga+2]=c[ha+2];k[ga+2]=k[ha+2];c[ga+3]=c[ha+3];k[ga+3]=k[ha+3];ha=f;c[ha]=c[p];k[ha]=k[p];c[ha+1]=c[p+1];k[ha+1]=k[p+1];c[ha+2]=c[p+2];k[ha+2]=k[p+2];c[ha+3]=c[p+3];k[ha+3]=k[p+3];N(ta,e,f);e=t;ta=IB(ta);c[e]=c[ta];k[e]=k[ta];c[e+1]=c[ta+1];k[e+1]=k[ta+1];c[e+2]=c[ta+2];k[e+2]=k[ta+2];c[e+3]=c[ta+3];k[e+3]=k[ta+3];m=k[w];break}j=3>(g|0)?0:1;N(ja,r,(j<<2)+l);x=y=J(ja,(g<<2)+s)-h;if(0k[w]&&(j=(j<<2)+l,c[n]=c[j],k[n]=k[j],c[n+1]=c[j+1],k[n+1]=k[j+1],c[n+2]=c[j+2],k[n+2]=k[j+2],c[n+3]=c[j+3],k[n+3]=k[j+3],j=(g<<2)+s,c[t]=c[j],k[t]=k[j],c[t+1]=c[j+1],k[t+1]=k[j+1],c[t+2]=c[j+2],k[t+2]=k[j+2],c[t+3]=c[j+3],k[t+3]=k[j+3],k[w]=x);g=x=g+1}b=l;return m}Bfb.X=1;function Cfb(a,d){0!=(c[a+3]|0)&&c[a+2]&1&&CX(d,a+3)}Cfb.X=1;function Dfb(a,d,e){var f=b;b+=3;var g=f+1,h=f+2;$1=d;$2=e;k[f]=0;k[g]=0;k[h]=0;H(a,f,g,h);b=f}Dfb.X=1;function Efb(a,d,e,f){var g=b;b+=3;var h=g+1,i=g+2;$1=a;$2=d;a=0;d=(a|0)<(f|0);a:do{if(d){for(;;){if(k[g]=0,k[h]=0,k[i]=0,pe((a<<2)+e,g,h,i),a+=1,(a|0)>=(f|0)){break a}}}}while(0);b=g}Efb.X=1;function Ffb(a,d,e){var f=b;b+=16;var g=f+4,h=f+8,i=f+9,j=f+10,l=f+11,m=f+15;v[c[c[d]+16]](f,d,e);c[a]=c[f];k[a]=k[f];c[a+1]=c[f+1];k[a+1]=k[f+1];c[a+2]=c[f+2];k[a+2]=k[f+2];c[a+3]=c[f+3];k[a+3]=k[f+3];c[g]=c[e];k[g]=k[e];c[g+1]=c[e+1];k[g+1]=k[e+1];c[g+2]=c[e+2];k[g+2]=k[e+2];c[g+3]=c[e+3];k[g+3]=k[e+3];1.4210854715202004e-14>Um(g)&&(k[h]=-1,k[i]=-1,k[j]=-1,pe(g,h,i,j));IB(g);k[m]=v[c[c[d]+11]](d);Q(l,g,m);xn(a,l);b=f}Ffb.X=1;function Gfb(a,d,e,f){var g=b;b+=15;var h=g+4,i=g+5,j=g+6,l=g+7,m=g+11,d=d+12;k[h]=v[c[c[a]+11]](a);k[i]=v[c[c[a]+11]](a);k[j]=v[c[c[a]+11]](a);H(g,h,i,j);N(l,d,g);c[e]=c[l];k[e]=k[l];c[e+1]=c[l+1];k[e+1]=k[l+1];c[e+2]=c[l+2];k[e+2]=k[l+2];c[e+3]=c[l+3];k[e+3]=k[l+3];wn(m,d,g);c[f]=c[m];k[f]=k[m];c[f+1]=c[m+1];k[f+1]=k[m+1];c[f+2]=c[m+2];k[f+2]=k[m+2];c[f+3]=c[m+3];k[f+3]=k[m+3];b=g}Gfb.X=1;function Hfb(a,d,e){var f=b;b+=1;d=.4000000059604645*d*v[c[c[a]+11]](a);k[f]=d*v[c[c[a]+11]](a);pe(e,f,f,f);b=f}Hfb.X=1;function Ifb(a){yh(a)}Ifb.X=1;function Jfb(a){return dW(a)}Jfb.X=1;function Wj(a,d,e,f,g){aX(a,e,f,g);c[a]=YW+2;c[a+2]=0;c[a+3]=d;0==(c[a+3]|0)&&(d=c[a+1],c[a+3]=v[c[c[d]+3]](d,f,g),c[a+2]=1)}Wj.X=1;function Kfb(a){Lfb(a);xe(a)}Kfb.X=1;function Mfb(){return 1}Mfb.X=1;function Nfb(){return 1}Nfb.X=1;function Ofb(){return D.ie}Ofb.X=1;function Pfb(){return 52}Pfb.X=1;function Qfb(){}Qfb.X=1;function Rfb(a){return a+17}Rfb.X=1;function Lfb(a){c[a]=YW+2;if(c[a+2]&1&&0!=(c[a+3]|0)){var d=c[a+1];v[c[c[d]+4]](d,c[a+3])}}Lfb.X=1;function Sfb(a,d,e,f,g){var h=b;b+=25;var i=h+4,j=h+5,l=h+6,m=h+10,n=h+11,p=h+12,r=h+13,s=h+17,t=h+21;$4=f;0!=(c[a+3]|0)&&(fI(g,c[a+3]),f=bi(d),a=bi(e),N(h,d+1+12,e+1+12),k[i]=JB(h),d=dW(f),k[j]=dW(a),k[i]>d+k[j]||(d=k[i]-(d+k[j]),k[m]=1,k[n]=0,k[p]=0,H(l,m,n,p),1.1920928955078125e-7=(c[s]|0)){break b}}}}else{if(3==(Sc|0)){if(t=0,(t|0)<(c[s]|0)){for(;;){I=c[j]+c[l]*t;y=c[g]+(c[I]&65535)*c[p];k[R]=k[y]*k[x];k[O]=k[y+1]*k[x+1];k[Z]=k[y+2]*k[x+2];pe(gb,R,O,Z);y=c[g]+(c[I+1]&65535)*c[p];k[P]=k[y]*k[x];k[S]=k[y+1]*k[x+1];k[da]=k[y+2]*k[x+2];pe(gc,P,S,da);y=c[g]+(c[I+2]&65535)*c[p];k[V]=k[y]*k[x];k[ba]=k[y+1]*k[x+1];k[$]=k[y+2]*k[x+2];pe(Lc,V,ba,$);var $c=d;v[c[c[$c]+2]]($c,Dc,h,t);t+=1;if((t|0)>=(c[s]|0)){break b}}}}else{if(5==(Sc|0)&&(t=0,(t|0)<(c[s]|0))){for(;;){Y=c[j]+c[l]*t;y=c[g]+(c[Y]&255)*c[p];k[la]=k[y]*k[x];k[ka]=k[y+1]*k[x+1];k[ja]=k[y+2]*k[x+2];pe(Eb,la,ka,ja);y=c[g]+(c[Y+1]&255)*c[p];k[ea]=k[y]*k[x];k[ca]=k[y+1]*k[x+1];k[W]=k[y+2]*k[x+2];pe(Ra,ea,ca,W);y=c[g]+(c[Y+2]&255)*c[p];k[U]=k[y]*k[x];k[X]=k[y+1]*k[x+1];k[ma]=k[y+2]*k[x+2];pe(qb,U,X,ma);var Cd=d;v[c[c[Cd]+2]](Cd,Ab,h,t);t+=1;if((t|0)>=(c[s]|0)){break b}}}}}}else{if(1==(Xd|0)){var wc=c[n];if(2==(wc|0)){if(t=0,(t|0)<(c[s]|0)){for(;;){ha=c[j]+c[l]*t;ga=c[g]+c[p]*c[ha];k[ta]=k[ga]*k[x];k[ra]=k[ga+1]*k[x+1];k[ua]=k[ga+2]*k[x+2];pe(hc,ta,ra,ua);ga=c[g]+c[p]*c[ha+1];k[za]=k[ga]*k[x];k[Za]=k[ga+1]*k[x+1];k[ib]=k[ga+2]*k[x+2];pe(Hc,za,Za,ib);ga=c[g]+c[p]*c[ha+2];k[Ca]=k[ga]*k[x];k[Sa]=k[ga+1]*k[x+1];k[mb]=k[ga+2]*k[x+2];pe(ic,Ca,Sa,mb);var Bb=d;v[c[c[Bb]+2]](Bb,db,h,t);t+=1;if((t|0)>=(c[s]|0)){break b}}}}else{if(3==(wc|0)){if(t=0,(t|0)<(c[s]|0)){for(;;){Oa=c[j]+c[l]*t;ga=c[g]+(c[Oa]&65535)*c[p];k[Pa]=k[ga]*k[x];k[fc]=k[ga+1]*k[x+1];k[jb]=k[ga+2]*k[x+2];pe(bb,Pa,fc,jb);ga=c[g]+(c[Oa+1]&65535)*c[p];k[La]=k[ga]*k[x];k[fb]=k[ga+1]*k[x+1];k[Rb]=k[ga+2]*k[x+2];pe(id,La,fb,Rb);ga=c[g]+(c[Oa+2]&65535)*c[p];k[pb]=k[ga]*k[x];k[Sb]=k[ga+1]*k[x+1];k[ab]=k[ga+2]*k[x+2];pe(Zc,pb,Sb,ab);var fd=d;v[c[c[fd]+2]](fd,vb,h,t);t+=1;if((t|0)>=(c[s]|0)){break b}}}}else{if(5==(wc|0)&&(t=0,(t|0)<(c[s]|0))){for(;;){Ib=c[j]+c[l]*t;ga=c[g]+(c[Ib]&255)*c[p];k[Fc]=k[ga]*k[x];k[Ac]=k[ga+1]*k[x+1];k[ob]=k[ga+2]*k[x+2];pe(rb,Fc,Ac,ob);ga=c[g]+(c[Ib+1]&255)*c[p];k[Gc]=k[ga]*k[x];k[Yc]=k[ga+1]*k[x+1];k[Cc]=k[ga+2]*k[x+2];pe(vc,Gc,Yc,Cc);ga=c[g]+(c[Ib+2]&255)*c[p];k[Ub]=k[ga]*k[x];k[Uc]=k[ga+1]*k[x+1];k[nd]=k[ga+2]*k[x+2];pe(Qc,Ub,Uc,nd);var ad=d;v[c[c[ad]+2]](ad,Rc,h,t);t+=1;if((t|0)>=(c[s]|0)){break b}}}}}}}}while(0);v[c[c[Tb]+6]](a,h);h+=1;if((h|0)>=(i|0)){break a}}}}while(0);b=g}ggb.X=1;function hgb(){return 0}hgb.X=1;function igb(){}igb.X=1;function jgb(){}jgb.X=1;function kgb(){return 28}kgb.X=1;function vy(a,d,e){var f=b;b+=15;var g=f+9,h=f+10,i=f+11,j=f+12,l=f+13,m=f+14;lgb(f);k[g]=-0xde0b6b000000000;k[h]=-0xde0b6b000000000;k[i]=-0xde0b6b000000000;pe(d,g,h,i);k[j]=0xde0b6b000000000;k[l]=0xde0b6b000000000;k[m]=0xde0b6b000000000;pe(e,j,l,m);v[c[c[a]+2]](a,f,d,e);a=f+1;c[d]=c[a];k[d]=k[a];c[d+1]=c[a+1];k[d+1]=k[a+1];c[d+2]=c[a+2];k[d+2]=k[a+2];c[d+3]=c[a+3];k[d+3]=k[a+3];d=f+5;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3];b=f}vy.X=1;function mgb(a,d,e){var f=b;b+=12;var g,h,i,j,l=f+1,m=f+2,n=f+3,p=f+4,r=f+5,s=f+6,t=f+7,w;i=f+8;var x,y,z;c[d+5]=v[c[c[a]+7]](a);c[d]=0;if(0!=(c[d+5]|0)){g=v[c[c[e]+4]](e,32,c[d+5]);h=c[g+2];c[d]=v[c[c[e]+7]](e,h);j=v[c[c[a]+7]](a);var A=a+1;c[i]=c[A];k[i]=k[A];c[i+1]=c[A+1];k[i+1]=k[A+1];c[i+2]=c[A+2];k[i+2]=k[A+2];c[i+3]=c[A+3];k[i+3]=k[A+3];i=0;A=(i|0)<(j|0);a:do{if(A){for(var C=a,B=a;;){v[c[c[C]+4]](a,f,s,n,r,l,m,t,p,i);c[h+6]=c[t];c[h+7]=c[s];c[h+5]=0;c[h+2]=0;c[h+3]=0;c[h]=0;c[h+1]=0;var K=c[p];do{if(2==(K|0)){if(w=3*c[t],0!=(w|0)){x=e;x=v[c[c[x]+4]](x,4,w);y=c[x+2];w=e;c[h+2]=v[c[c[w]+7]](w,y);w=0;var E=(w|0)<(c[t]|0);b:do{if(E){for(;;){if(z=c[l]+c[m]*w,c[y+3*w]=c[z],c[y+3*w+1]=c[z+1],c[y+3*w+2]=c[z+2],w+=1,(w|0)>=(c[t]|0)){break b}}}}while(0);w=e;v[c[c[w]+5]](w,x,D.Te,1497453121,c[x+2])}}else{if(3==(K|0)){if(0!=(c[t]|0)){w=e;x=v[c[c[w]+4]](w,8,c[t]);y=c[x+2];w=e;c[h+3]=v[c[c[w]+7]](w,y);w=0;E=(w|0)<(c[t]|0);b:do{if(E){for(;;){if(z=c[l]+c[m]*w,c[y+5*w]=c[z],c[y+5*w+1]=c[z+1],c[y+5*w+2]=c[z+2],w+=1,(w|0)>=(c[t]|0)){break b}}}}while(0);w=e;v[c[c[w]+5]](w,x,D.je,1497453121,c[x+2])}}else{if(5==(K|0)&&0!=(c[t]|0)){w=e;x=v[c[c[w]+4]](w,4,c[t]);y=c[x+2];w=e;c[h+4]=v[c[c[w]+7]](w,y);w=0;E=(w|0)<(c[t]|0);b:do{if(E){for(;;){if(z=c[l]+c[m]*w,c[(w<<2)+y]=c[z],c[(w<<2)+y+1]=c[z+1],c[(w<<2)+y+2]=c[z+2],w+=1,(w|0)>=(c[t]|0)){break b}}}}while(0);w=e;v[c[c[w]+5]](w,x,D.Ce,1497453121,c[x+2])}}}}while(0);K=c[n];do{if(0==(K|0)){if(0!=(c[s]|0)){w=e;w=v[c[c[w]+4]](w,16,c[s]);x=c[w+2];y=e;c[h]=v[c[c[y]+7]](y,x);z=0;E=(z|0)<(c[s]|0);b:do{if(E){for(;;){if(y=c[f]+c[r]*z,k[(z<<2)+x]=k[y],k[(z<<2)+x+1]=k[y+1],k[(z<<2)+x+2]=k[y+2],z+=1,(z|0)>=(c[s]|0)){break b}}}}while(0);x=e;v[c[c[x]+5]](x,w,D.q,1497453121,c[w+2])}}else{if(1==(K|0)&&0!=(c[s]|0)){w=e;w=v[c[c[w]+4]](w,32,c[s]);x=c[w+2];y=e;c[h+1]=v[c[c[y]+7]](y,x);y=0;E=(y|0)<(c[s]|0);b:do{if(E){for(;;){if(z=c[f]+c[r]*y,k[(y<<2)+x]=k[z],k[(y<<2)+x+1]=k[z+1],k[(y<<2)+x+2]=k[z+2],y+=1,(y|0)>=(c[s]|0)){break b}}}}while(0);x=e;v[c[c[x]+5]](x,w,D.We,1497453121,c[w+2])}}}while(0);v[c[c[B]+6]](a,i);i+=1;h+=8;if((i|0)>=(j|0)){break a}}}}while(0);v[c[c[e]+5]](e,g,D.df,1497453121,c[g+2])}mc(a+1,d+1);b=f;return D.kf}mgb.X=1;function ngb(){}ngb.X=1;function lgb(a){var d=b;b+=6;var e=d+1,f=d+2,g=d+3,h=d+4,i=d+5;FY(a);c[a]=ogb+2;k[d]=0xde0b6b000000000;k[e]=0xde0b6b000000000;k[f]=0xde0b6b000000000;pe(a+1,d,e,f);k[g]=-0xde0b6b000000000;k[h]=-0xde0b6b000000000;k[i]=-0xde0b6b000000000;pe(a+5,g,h,i);b=d}lgb.X=1;function pgb(a){xe(a)}pgb.X=1;function qgb(a,d,e,f){$3=e;$4=f;hp(a+1,d);gp(a+5,d);hp(a+1,d+4);gp(a+5,d+4);hp(a+1,d+8);gp(a+5,d+8)}qgb.X=1;function hY(a,d,e,f){bZ(a);c[a]=rgb+2;c[a+1]=f;c[a+2]=d;c[a+3]=e}hY.X=1;function sgb(a){return c[a+23]}sgb.X=1;function tgb(a){a=c[a+23];return 0==(a|0)?0:1==(a|0)?0:2==(a|0)?1:3==(a|0)?3:4==(a|0)?6:0}tgb.X=1;function iY(a,d,e,f,g,h){var i=b;b+=162;var j,l=i+4,m=i+8,n=i+12,p=i+16,r=i+32,s=i+48,t=i+52,w=i+56,x=i+60,y=i+64,z=i+68,A=i+72,C=i+76,B=i+80,K=i+84,E=i+88,G=i+92,M=i+93,L=i+94,F=i+99,I=i+107,R=i+111,O=i+115,Z=i+119,P=i+123,S=i+127,da=i+131,V=i+135,ba=i+139,$=i+143,Y=i+147,la=i+151,ka=i+152,ja=i+153,ea=i+154,ca=i+158;fZ(c[a+1]);N(m,e+12,d+12);c[i]=c[m];k[i]=k[m];c[i+1]=c[m+1];k[i+1]=k[m+1];c[i+2]=c[m+2];k[i+2]=k[m+2];c[i+3]=c[m+3];k[i+3]=k[m+3];N(n,g+12,f+12);c[l]=c[n];k[l]=k[n];c[l+1]=c[n+1];k[l+1]=k[n+1];c[l+2]=c[n+2];k[l+2]=k[n+2];c[l+3]=c[n+3];k[l+3]=k[n+3];m=0;sQ(p,d);sQ(r,f);N(s,i,l);l=c[a+2];n=c[c[l]+15];WP(z,s);rn(y,z,d);v[n](x,l,y);vw(w,d,x);x=c[a+3];y=c[c[x]+15];rn(B,s,f);v[y](C,x,B);vw(A,f,C);N(K,w,A);c[t]=c[K];k[t]=k[K];c[t+1]=c[K+1];k[t+1]=k[K+1];c[t+2]=c[K+2];k[t+2]=k[K+2];c[t+3]=c[K+3];k[t+3]=k[K+3];C=32;k[G]=0;k[M]=0;k[L]=0;pe(E,G,M,L);$hasResult=0;$lastLambda=m;x=Um(t);G=a+2;M=a+3;L=a+1;B=a+1;K=a+1;a:for(;;){x=9999999747378752e-20=-k[h+43]){j=0;break}t9a(c[a+1],ea,ca);a=h+37;c[a]=c[ca];k[a]=k[ca];c[a+1]=c[ca+1];k[a+1]=k[ca+1];c[a+2]=c[ca+2];k[a+2]=k[ca+2];c[a+3]=c[ca+3];k[a+3]=k[ca+3];j=1;break}b=i;return j}iY.X=1;function ugb(a){xe(a)}ugb.X=1;function J5a(a){vZ(a);c[a]=L1+2;c[a+23]=0;c[a+1]=2}J5a.X=1;function M1(a,d){var e=a+23,f=c[e];c[e]=f+1;e=(f<<2)+a+24;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3];bh(a)}M1.X=1;function vgb(a,d,e,f){udb(a,d,e,f)}vgb.X=1;function wgb(a,d,e,f){var g=c[a+23];2==(g|0)?(d=a+24,c[e]=c[d],k[e]=k[d],c[e+1]=c[d+1],k[e+1]=k[d+1],c[e+2]=c[d+2],k[e+2]=k[d+2],c[e+3]=c[d+3],k[e+3]=k[d+3],a+=28,c[f]=c[a],k[f]=k[a],c[f+1]=c[a+1],k[f+1]=k[a+1],c[f+2]=c[a+2],k[f+2]=k[a+2],c[f+3]=c[a+3],k[f+3]=k[a+3]):3==(g|0)?0==(d|0)?(d=a+24,c[e]=c[d],k[e]=k[d],c[e+1]=c[d+1],k[e+1]=k[d+1],c[e+2]=c[d+2],k[e+2]=k[d+2],c[e+3]=c[d+3],k[e+3]=k[d+3],a+=28,c[f]=c[a],k[f]=k[a],c[f+1]=c[a+1],k[f+1]=k[a+1],c[f+2]=c[a+2],k[f+2]=k[a+2],c[f+3]=c[a+3],k[f+3]=k[a+3]):1==(d|0)?(d=a+28,c[e]=c[d],k[e]=k[d],c[e+1]=c[d+1],k[e+1]=k[d+1],c[e+2]=c[d+2],k[e+2]=k[d+2],c[e+3]=c[d+3],k[e+3]=k[d+3],a+=32,c[f]=c[a],k[f]=k[a],c[f+1]=c[a+1],k[f+1]=k[a+1],c[f+2]=c[a+2],k[f+2]=k[a+2],c[f+3]=c[a+3],k[f+3]=k[a+3]):2==(d|0)&&(d=a+32,c[e]=c[d],k[e]=k[d],c[e+1]=c[d+1],k[e+1]=k[d+1],c[e+2]=c[d+2],k[e+2]=k[d+2],c[e+3]=c[d+3],k[e+3]=k[d+3],a+=24,c[f]=c[a],k[f]=k[a],c[f+1]=c[a+1],k[f+1]=k[a+1],c[f+2]=c[a+2],k[f+2]=k[a+2],c[f+3]=c[a+3],k[f+3]=k[a+3]):4==(g|0)&&(0==(d|0)?(d=a+24,c[e]=c[d],k[e]=k[d],c[e+1]=c[d+1],k[e+1]=k[d+1],c[e+2]=c[d+2],k[e+2]=k[d+2],c[e+3]=c[d+3],k[e+3]=k[d+3],a+=28,c[f]=c[a],k[f]=k[a],c[f+1]=c[a+1],k[f+1]=k[a+1],c[f+2]=c[a+2],k[f+2]=k[a+2],c[f+3]=c[a+3],k[f+3]=k[a+3]):1==(d|0)?(d=a+28,c[e]=c[d],k[e]=k[d],c[e+1]=c[d+1],k[e+1]=k[d+1],c[e+2]=c[d+2],k[e+2]=k[d+2],c[e+3]=c[d+3],k[e+3]=k[d+3],a+=32,c[f]=c[a],k[f]=k[a],c[f+1]=c[a+1],k[f+1]=k[a+1],c[f+2]=c[a+2],k[f+2]=k[a+2],c[f+3]=c[a+3],k[f+3]=k[a+3]):2==(d|0)?(d=a+32,c[e]=c[d],k[e]=k[d],c[e+1]=c[d+1],k[e+1]=k[d+1],c[e+2]=c[d+2],k[e+2]=k[d+2],c[e+3]=c[d+3],k[e+3]=k[d+3],a+=24,c[f]=c[a],k[f]=k[a],c[f+1]=c[a+1],k[f+1]=k[a+1],c[f+2]=c[a+2],k[f+2]=k[a+2],c[f+3]=c[a+3],k[f+3]=k[a+3]):3==(d|0)?(d=a+24,c[e]=c[d],k[e]=k[d],c[e+1]=c[d+1],k[e+1]=k[d+1],c[e+2]=c[d+2],k[e+2]=k[d+2],c[e+3]=c[d+3],k[e+3]=k[d+3],a+=36,c[f]=c[a],k[f]=k[a],c[f+1]=c[a+1],k[f+1]=k[a+1],c[f+2]=c[a+2],k[f+2]=k[a+2],c[f+3]=c[a+3],k[f+3]=k[a+3]):4==(d|0)?(d=a+28,c[e]=c[d],k[e]=k[d],c[e+1]=c[d+1],k[e+1]=k[d+1],c[e+2]=c[d+2],k[e+2]=k[d+2],c[e+3]=c[d+3],k[e+3]=k[d+3],a+=36,c[f]=c[a],k[f]=k[a],c[f+1]=c[a+1],k[f+1]=k[a+1],c[f+2]=c[a+2],k[f+2]=k[a+2],c[f+3]=c[a+3],k[f+3]=k[a+3]):5==(d|0)&&(d=a+32,c[e]=c[d],k[e]=k[d],c[e+1]=c[d+1],k[e+1]=k[d+1],c[e+2]=c[d+2],k[e+2]=k[d+2],c[e+3]=c[d+3],k[e+3]=k[d+3],a+=36,c[f]=c[a],k[f]=k[a],c[f+1]=c[a+1],k[f+1]=k[a+1],c[f+2]=c[a+2],k[f+2]=k[a+2],c[f+3]=c[a+3],k[f+3]=k[a+3]))}wgb.X=1;function xgb(a,d,e){a=(d<<2)+a+24;c[e]=c[a];k[e]=k[a];c[e+1]=c[a+1];k[e+1]=k[a+1];c[e+2]=c[a+2];k[e+2]=k[a+2];c[e+3]=c[a+3];k[e+3]=k[a+3]}xgb.X=1;function ygb(a,d){vZ(a);c[a]=L1+2;c[a+23]=0;c[a+1]=2;M1(a,d)}ygb.X=1;function zgb(a,d,e){vZ(a);c[a]=L1+2;c[a+23]=0;c[a+1]=2;M1(a,d);M1(a,e)}zgb.X=1;function Agb(a,d,e,f){vZ(a);c[a]=L1+2;c[a+23]=0;c[a+1]=2;M1(a,d);M1(a,e);M1(a,f)}Agb.X=1;function Bgb(a,d,e,f,g){vZ(a);c[a]=L1+2;c[a+23]=0;c[a+1]=2;M1(a,d);M1(a,e);M1(a,f);M1(a,g)}Bgb.X=1;function Cgb(){}Cgb.X=1;function Dgb(){return 0}Dgb.X=1;function Egb(){return 0}Egb.X=1;function Fgb(){}Fgb.X=1;function Ggb(){}Ggb.X=1;function Hgb(a,d){$1=a;return 0!=(d|0)?d<<1:1}Hgb.X=1;function Igb(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}Igb.X=1;function Jgb(a){a=c[a+23];return 0==(a|0)?0:1==(a|0)?0:2==(a|0)?0:3==(a|0)?2:4==(a|0)?4:0}Jgb.X=1;function N1(a){return c[a+1]}N1.X=1;function Kgb(a){return c[a+2]}Kgb.X=1;function Lgb(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}Lgb.X=1;function Mgb(a,d){return(d<<3)+c[a+3]}Mgb.X=1;function Ngb(a){return 1==(c[a+12]|0)}Ngb.X=1;function Ogb(a){EX(a)}Ogb.X=1;function Pgb(a,d,e,f){var g=b;b+=14;c[g]=c[d];k[g]=k[d];c[g+1]=c[d+1];k[g+1]=k[d+1];c[g+2]=c[d+2];k[g+2]=k[d+2];c[g+3]=c[d+3];k[g+3]=k[d+3];var h=g+4,i=d+4;c[h]=c[i];k[h]=k[i];c[h+1]=c[i+1];k[h+1]=k[i+1];c[h+2]=c[i+2];k[h+2]=k[i+2];c[h+3]=c[i+3];k[h+3]=k[i+3];h=g+8;d+=8;c[h]=c[d];k[h]=k[d];c[h+1]=c[d+1];k[h+1]=k[d+1];c[h+2]=c[d+2];k[h+2]=k[d+2];c[h+3]=c[d+3];k[h+3]=k[d+3];c[g+12]=e;c[g+13]=f;Qgb(a+1,g);b=g}Pgb.X=1;function Qgb(a,d){(N1(a)|0)==(Kgb(a)|0)&&Rgb(a,Hgb(a,N1(a)));var e=c[a+3]+14*c[a+1];if(0!=(e|0)){for(var f=d,g=f+14;f=(e|0)){break a}}}}while(0)}Wgb.X=1;function Xgb(a){0!=(c[a+3]|0)&&(c[a+4]&1&&Zgb(a,c[a+3]),c[a+3]=0)}Xgb.X=1;function Zgb(a,d){$1=a;yh(d)}Zgb.X=1;function Ygb(a,d,e){$1=a;$3=e;return Ue(56*d,16)}Ygb.X=1;function Tgb(a){c[a]=$gb+2;ahb(a+1)}Tgb.X=1;function ahb(a){Igb(a,0,N1(a));Xgb(a);Lgb(a)}ahb.X=1;function bhb(a){xe(a)}bhb.X=1;function chb(a){xe(a)}chb.X=1;function O1(a){c[a]=AW+2;fLa(a+5)}O1.X=1;function dhb(a,d,e,f,g,h,i,j,l,m){a=By(a+5,m);c[e]=c[a+3];c[d]=c[a+4];c[f]=c[a+7];c[g]=c[a+5];c[j]=c[a];c[h]=c[a+1];c[i]=c[a+2];c[l]=c[a+6]}dhb.X=1;function ehb(a,d,e,f,g,h,i,j,l,m){a=Mgb(a+5,m);c[e]=c[a+3];c[d]=c[a+4];c[f]=c[a+7];c[g]=c[a+5];c[j]=c[a];c[h]=c[a+1];c[i]=c[a+2];c[l]=c[a+6]}ehb.X=1;function fhb(a,d,e){var f=a+13;c[f]=c[d];k[f]=k[d];c[f+1]=c[d+1];k[f+1]=k[d+1];c[f+2]=c[d+2];k[f+2]=k[d+2];c[f+3]=c[d+3];k[f+3]=k[d+3];d=a+17;c[d]=c[e];k[d]=k[e];c[d+1]=c[e+1];k[d+1]=k[e+1];c[d+2]=c[e+2];k[d+2]=k[e+2];c[d+3]=c[e+3];k[d+3]=k[e+3];c[a+12]=1}fhb.X=1;function ghb(a){EX(a);yh(a)}ghb.X=1;function mV(a,d,e,f,g,h,i){var j=b;b+=8;dLa(a);c[a]=AW+2;zW(a+5);c[a+12]=0;Ah(j);c[j]=d;c[j+1]=e;c[j+2]=f;c[j+3]=g;c[j+4]=h;c[j+5]=i;zy(a,j,2);b=j}mV.X=1;function hhb(a){O1(a);yh(a)}hhb.X=1;function ihb(){}ihb.X=1;function jhb(){}jhb.X=1;function khb(){}khb.X=1;function lhb(){}lhb.X=1;function mhb(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}mhb.X=1;function nhb(a,d){$1=a;return 0!=(d|0)?d<<1:1}nhb.X=1;function P1(a,d){return(d<<3)+c[a+3]}P1.X=1;function Q1(a){return c[a+1]}Q1.X=1;function ohb(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}ohb.X=1;function phb(a){return c[a+2]}phb.X=1;function qhb(a,d,e){var f=a+13;c[d]=c[f];k[d]=k[f];c[d+1]=c[f+1];k[d+1]=k[f+1];c[d+2]=c[f+2];k[d+2]=k[f+2];c[d+3]=c[f+3];k[d+3]=k[f+3];a+=17;c[e]=c[a];k[e]=k[a];c[e+1]=c[a+1];k[e+1]=k[a+1];c[e+2]=c[a+2];k[e+2]=k[a+2];c[e+3]=c[a+3];k[e+3]=k[a+3]}qhb.X=1;function rhb(a){return Cy(a+5)}rhb.X=1;function shb(a,d,e){thb(a+21,d);c[P1(a+21,Q1(a+21)-1)+7]=e}shb.X=1;function uhb(a,d,e,f,g,h,i,j,l,m){a=P1(a+21,m);c[e]=c[a];c[d]=c[a+1];c[f]=0;c[g]=c[a+2];c[i]=c[a+4];c[h]=c[a+5];c[j]=c[a+6];c[l]=c[a+7]}uhb.X=1;function vhb(a,d,e,f,g,h,i,j,l,m){a=P1(a+21,m);c[e]=c[a];c[d]=c[a+1];c[f]=0;c[g]=c[a+2];c[i]=c[a+4];c[h]=c[a+5];c[j]=c[a+6];c[l]=c[a+7]}vhb.X=1;function whb(a){xhb(a)}whb.X=1;function yhb(a){mhb(a,0,Q1(a));zhb(a);ohb(a)}yhb.X=1;function zhb(a){0!=(c[a+3]|0)&&(c[a+4]&1&&Ahb(a,c[a+3]),c[a+3]=0)}zhb.X=1;function Ahb(a,d){$1=a;yh(d)}Ahb.X=1;function thb(a,d){(Q1(a)|0)==(phb(a)|0)&&Bhb(a,nhb(a,Q1(a)));var e=(c[a+1]<<3)+c[a+3];0!=(e|0)&&(c[e]=c[d],k[e]=k[d],c[e+1]=c[d+1],k[e+1]=k[d+1],c[e+2]=c[d+2],k[e+2]=k[d+2],c[e+3]=c[d+3],k[e+3]=k[d+3],c[e+4]=c[d+4],k[e+4]=k[d+4],c[e+5]=c[d+5],k[e+5]=k[d+5],c[e+6]=c[d+6],k[e+6]=k[d+6],c[e+7]=c[d+7],k[e+7]=k[d+7]);e=a+1;c[e]+=1}thb.X=1;function Bhb(a,d){var e;(phb(a)|0)<(d|0)&&(e=Chb(a,d),Dhb(a,0,Q1(a),e),mhb(a,0,Q1(a)),zhb(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}Bhb.X=1;function Chb(a,d){return 0!=(d|0)?Ehb(a,d,0):0}Chb.X=1;function Dhb(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=(d<<3)+f;if(0!=(i|0)){var j=(d<<3)+c[h];c[i]=c[j];k[i]=k[j];c[i+1]=c[j+1];k[i+1]=k[j+1];c[i+2]=c[j+2];k[i+2]=k[j+2];c[i+3]=c[j+3];k[i+3]=k[j+3];c[i+4]=c[j+4];k[i+4]=k[j+4];c[i+5]=c[j+5];k[i+5]=k[j+5];c[i+6]=c[j+6];k[i+6]=k[j+6];c[i+7]=c[j+7];k[i+7]=k[j+7]}d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}Dhb.X=1;function Ehb(a,d,e){$1=a;$3=e;return Ue(d<<5,16)}Ehb.X=1;function Fhb(a,d,e,f,g,h,i,j,l,m,n,p){var r=b;b+=8;mV(a,d,e,f,g,h,i);c[a]=R1+2;ohb(a+21);c[r]=j;c[r+1]=l;c[r+2]=m;c[r+3]=0;c[r+4]=d;c[r+5]=n;c[r+6]=p;c[r+7]=2;shb(a,r,2);b=r}Fhb.X=1;function Ghb(a){xhb(a);yh(a)}Ghb.X=1;function xhb(a){c[a]=R1+2;yhb(a+21);O1(a)}xhb.X=1;function Hhb(){}Hhb.X=1;function Ihb(){}Ihb.X=1;function Jhb(a,d){$1=a;return 0!=(d|0)?d<<1:1}Jhb.X=1;function Khb(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}Khb.X=1;function S1(a){return c[a+1]}S1.X=1;function Lhb(a,d){return c[a+3]+d}Lhb.X=1;function Mhb(a){return c[a+2]}Mhb.X=1;function Nhb(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=f+d;0!=(i|0)&&(c[i]=c[c[h]+d]);d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}Nhb.X=1;function ty(a,d){var e=b;b+=2;var f=e+1;c[a+41]&1?(c[e]=d,Ohb(a+31,e),c[By(a+5,0)+1]=yeb(a+31,0)):(c[f]=d&65535,Phb(a+36,f),c[By(a+5,0)+1]=Lhb(a+36,0));b=e}ty.X=1;function Ohb(a,d){(x1(a)|0)==(Eeb(a)|0)&&Geb(a,Qhb(a,x1(a)));var e=c[a+3]+c[a+1];0!=(e|0)&&(c[e]=c[d]);e=a+1;c[e]+=1}Ohb.X=1;function Phb(a,d){(S1(a)|0)==(Mhb(a)|0)&&Rhb(a,Jhb(a,S1(a)));var e=c[a+3]+c[a+1];0!=(e|0)&&(c[e]=c[d]);e=a+1;c[e]+=1}Phb.X=1;function xy(a,d,e){var f=b;b+=15;var g,h=f+4,i=f+8,j=f+12,l=f+13,m=f+14,n=c[a+42]&1,e=e&1;a:do{if(n){b:do{if(e){g=0;for(var p=a+21,r=a+21,s=a+43;;){if((g|0)>=(th(p)|0)){break b}N(f,xg(r,g),d);var t=g;if(Um(f)<=k[s]){break}g=t+1}g=t;break a}}while(0);g=By(a+5,0)+3;c[g]+=1;PW(a+21,d);c[By(a+5,0)+4]=xg(a+21,0);g=th(a+21)-1}else{b:do{if(e){g=0;for(var p=a+26,r=a+26,s=a+26,w=a+26,x=a+43;;){if((g|0)>=(MW(p)|0)){break b}H(h,y0(r,g),y0(s,g+1),y0(w,g+2));N(i,h,d);var y=g;if(Um(i)<=k[x]){break}g=y+3}g=(y|0)/3&-1;break a}}while(0);k[j]=k[d];QW(a+26,j);k[l]=k[d+1];QW(a+26,l);k[m]=k[d+2];QW(a+26,m);g=By(a+5,0)+3;c[g]+=1;c[By(a+5,0)+4]=y0(a+26,0);g=((MW(a+26)|0)/3&-1)-1}}while(0);b=f;return g}xy.X=1;function uz(a,d,e,f,g){var g=g&1,h=By(a+5,0);c[h]+=1;ty(a,xy(a,d,g&1));ty(a,xy(a,e,g&1));ty(a,xy(a,f,g&1))}uz.X=1;function oz(a){return c[a+41]&1?(x1(a+31)|0)/3&-1:(S1(a+36)|0)/3&-1}oz.X=1;function Shb(a){Thb(a)}Shb.X=1;function Rhb(a,d){var e;(Mhb(a)|0)<(d|0)&&(e=Uhb(a,d),Nhb(a,0,S1(a),e),Khb(a,0,S1(a)),Vhb(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}Rhb.X=1;function Uhb(a,d){return 0!=(d|0)?Whb(a,d,0):0}Uhb.X=1;function Ky(a,d,e){var f=b;b+=8;d&=1;e&=1;mBa(a);c[a]=T1+2;KW(a+21);LW(a+26);y1(a+31);Xhb(a+36);c[a+41]=d&1;c[a+42]=e&1;k[a+43]=0;Ah(f);c[f]=0;c[f+3]=0;c[f+6]=2;c[f+1]=0;c[f+2]=12;c[f+4]=0;c[f+5]=16;Ay(a+5,f);c[a+41]&1?(c[By(a+5,0)]=(x1(a+31)|0)/3&-1,c[By(a+5,0)+1]=0,c[By(a+5,0)+6]=2,c[By(a+5,0)+2]=12):(c[By(a+5,0)]=(S1(a+36)|0)/3&-1,c[By(a+5,0)+1]=0,c[By(a+5,0)+6]=3,c[By(a+5,0)+2]=6);c[a+42]&1?(c[By(a+5,0)+3]=th(a+21),c[By(a+5,0)+4]=0,c[By(a+5,0)+5]=16):(c[By(a+5,0)+3]=(MW(a+26)|0)/3&-1,c[By(a+5,0)+4]=0,c[By(a+5,0)+5]=12);b=f}Ky.X=1;function Yhb(a){Thb(a);yh(a)}Yhb.X=1;function Thb(a){c[a]=T1+2;Zhb(a+36);w1(a+31);SW(a+26);UW(a+21);O1(a)}Thb.X=1;function $hb(){return D.Ze}$hb.X=1;function Qhb(a,d){$1=a;return 0!=(d|0)?d<<1:1}Qhb.X=1;function Xhb(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}Xhb.X=1;function Vhb(a){0!=(c[a+3]|0)&&(c[a+4]&1&&aib(a,c[a+3]),c[a+3]=0)}Vhb.X=1;function aib(a,d){$1=a;yh(d)}aib.X=1;function Whb(a,d,e){$1=a;$3=e;return Ue(d<<1,16)}Whb.X=1;function Zhb(a){Khb(a,0,S1(a));Vhb(a);Xhb(a)}Zhb.X=1;function NX(a,d){cZ(a);c[a]=bib+2;c[a+12]=d;c[a+1]=21;if(v[c[c[d]+10]](d)){v[c[c[d]+12]](d,a+4,a+8)}else{jR(a)}}NX.X=1;function jR(a){var d=b;b+=15;var e,f=d+4,g=d+5,h=d+6,i=d+7,j=d+11;e=0;for(var l=a+3,m=a+8,n=a+3,p=a+4;;){k[f]=0;k[g]=0;k[h]=0;H(d,f,g,h);k[d+e]=1;v[c[c[a]+16]](i,a,d);k[m+e]=k[i+e]+k[l];k[d+e]=-1;v[c[c[a]+16]](j,a,d);c[i]=c[j];k[i]=k[j];c[i+1]=c[j+1];k[i+1]=k[j+1];c[i+2]=c[j+2];k[i+2]=k[j+2];c[i+3]=c[j+3];k[i+3]=k[j+3];k[p+e]=k[i+e]-k[n];var r=e+1;e=r;if(3<=(r|0)){break}}b=d}jR.X=1;function cib(a){xe(a)}cib.X=1;function dib(){}dib.X=1;function eib(a,d,e,f){var g=b;b+=56;var h=g+4,i=g+5,j=g+9,l=g+13,m=g+14,n=g+15,p=g+16,r=g+20,s=g+21,t=g+25,w=g+37,x=g+41,y=g+45,z=g+46,A=g+47,C=g+48,B=g+52;k[h]=.5;N(i,a+8,a+4);Q(g,i,h);k[l]=v[c[c[a]+11]](a);k[m]=v[c[c[a]+11]](a);k[n]=v[c[c[a]+11]](a);H(j,l,m,n);xn(g,j);k[r]=.5;wn(s,a+8,a+4);Q(p,s,r);qc(t,d);vw(w,d,p);k[y]=J(0+t,g);k[z]=J(4+t,g);k[A]=J(8+t,g);H(x,y,z,A);N(C,w,x);c[e]=c[C];k[e]=k[C];c[e+1]=c[C+1];k[e+1]=k[C+1];c[e+2]=c[C+2];k[e+2]=k[C+2];c[e+3]=c[C+3];k[e+3]=k[C+3];wn(B,w,x);c[f]=c[B];k[f]=k[B];c[f+1]=c[B+1];k[f+1]=k[B+1];c[f+2]=c[B+2];k[f+2]=k[B+2];c[f+3]=c[B+3];k[f+3]=k[B+3];b=g}eib.X=1;function QX(a,d){Iy(c[a+12],d);jR(a)}QX.X=1;function fib(a){return c[a+12]+1}fib.X=1;function gib(a,d,e,f){var g=b;b+=10;hib(g,d,e,f);a=c[a+12];v[c[c[a]+2]](a,g,e,f);b=g}gib.X=1;function iib(a,d,e){var f=b;b+=3;var g=f+1,h=f+2;$1=a;$2=d;k[f]=0;k[g]=0;k[h]=0;pe(e,f,g,h);b=f}iib.X=1;function jib(a,d,e){var f=b;b+=57;var g=f+16,h=f+42,i=f+46,j=f+47,l=f+48,m=f+49,n=f+53;eQ(f);kib(g,e,f);k[i]=0xde0b6b000000000;k[j]=0xde0b6b000000000;k[l]=0xde0b6b000000000;H(h,i,j,l);e=c[c[d]+15];WP(m,h);v[e](d,g,m,h);lib(n,g);c[a]=c[n];k[a]=k[n];c[a+1]=c[n+1];k[a+1]=k[n+1];c[a+2]=c[n+2];k[a+2]=k[n+2];c[a+3]=c[n+3];k[a+3]=k[n+3];$10=1;b=f}jib.X=1;function lib(a,d){var e=d+1;c[a]=c[e];k[a]=k[e];c[a+1]=c[e+1];k[a+1]=k[e+1];c[a+2]=c[e+2];k[a+2]=k[e+2];c[a+3]=c[e+3];k[a+3]=k[e+3]}lib.X=1;function mib(){}mib.X=1;function kib(a,d,e){var f=b;b+=7;var g=f+1,h=f+2,i=f+3;EY(a);c[a]=nib+2;k[f]=0;k[g]=0;k[h]=0;H(a+1,f,g,h);sQ(a+5,e);k[a+21]=-0xde0b6b000000000;rn(i,d,a+5);a+=22;c[a]=c[i];k[a]=k[i];c[a+1]=c[i+1];k[a+1]=k[i+1];c[a+2]=c[i+2];k[a+2]=k[i+2];c[a+3]=c[i+3];k[a+3]=k[i+3];b=f}kib.X=1;function oib(a){xe(a)}oib.X=1;function pib(a,d,e,f){var g;$3=e;$4=f;for(var e=0,f=a+22,h=a+21,i=a+21,a=a+1;!(g=J(f,(e<<2)+d),g>k[h]&&(k[i]=g,g=(e<<2)+d,c[a]=c[g],k[a]=k[g],c[a+1]=c[g+1],k[a+1]=k[g+1],c[a+2]=c[g+2],k[a+2]=k[g+2],c[a+3]=c[g+3],k[a+3]=k[g+3]),e=g=e+1,3<=(g|0));){}}pib.X=1;function qib(){}qib.X=1;function hib(a,d,e,f){FY(a);c[a]=rib+2;c[a+1]=d;d=a+2;c[d]=c[e];k[d]=k[e];c[d+1]=c[e+1];k[d+1]=k[e+1];c[d+2]=c[e+2];k[d+2]=k[e+2];c[d+3]=c[e+3];k[d+3]=k[e+3];a+=6;c[a]=c[f];k[a]=k[f];c[a+1]=c[f+1];k[a+1]=k[f+1];c[a+2]=c[f+2];k[a+2]=k[f+2];c[a+3]=c[f+3];k[a+3]=k[f+3]}hib.X=1;function sib(a){xe(a)}sib.X=1;function tib(a,d,e,f){uib(d,a+2,a+6)&&(a=c[a+1],v[c[c[a]+2]](a,d,e,f))}tib.X=1;function uib(a,d,e){var f,g;f=a+4;g=a+8;return k[WX(WX(a,f),g)]>k[e]?0:k[d0(d0(a,f),g)]k[e+2]?0:k[d0(d0(a+2,f+2),g+2)]k[e+1]?0:k[d0(d0(a+1,f+1),g+1)]k[m]?(k[n]=x,c[p]=i,c[r]=1):x+1.1920928955078125e-7>=k[s]&&(c[h+c[t]]=i,c[w]+=1));i+=1;if((i|0)>=(g|0)){break a}}}}while(0);i=0;d=a+1;e=(i|0)<(c[d]|0);a:do{if(e){for(g=a+6;;){if(j=(i<<2)+g,l=(c[h+i]<<2)+f,c[j]=c[l],k[j]=k[l],c[j+1]=c[l+1],k[j+1]=k[l+1],c[j+2]=c[l+2],k[j+2]=k[l+2],c[j+3]=c[l+3],k[j+3]=k[l+3],i+=1,(i|0)>=(c[d]|0)){break a}}}}while(0);b=h}vib.X=1;function U1(a,d){return J(d,a)-k[a+3]}U1.X=1;function K4a(a,d){var e,f,g,h,i,j;g=k[a+16]+k[d+16];h=U1(a+12,d)-g;i=U1(a+12,d+4)-g;j=U1(a+12,d+8)-g;0=(e|0)){break a}}}}while(0);W1((e-1<<2)+d,d,i,h,f,g);a=c[g];b=g;return a}yib.X=1;function L4a(a,d,e){var f=b;b+=205;var g,h,i=f+64,j=f+134,l=f+135;g=k[a+16]+k[d+16];h=i+2;var m=a+12;c[h]=c[m];k[h]=k[m];c[h+1]=c[m+1];k[h+1]=k[m+1];c[h+2]=c[m+2];k[h+2]=k[m+2];c[h+3]=c[m+3];k[h+3]=k[m+3];h=wib(a,d,f);0==(h|0)?a=0:(vib(i,i+2,g,f,h),0==(c[i+1]|0)?a=0:(k[j]=-1,LC(i+2,j),j=l+2,h=d+12,c[j]=c[h],k[j]=k[h],c[j+1]=c[h+1],k[j+1]=k[h+1],c[j+2]=c[h+2],k[j+2]=k[h+2],c[j+3]=c[h+3],k[j+3]=k[h+3],h=wib(d,a,f),0==(h|0)?a=0:(vib(l,l+2,g,f,h),0==(c[l+1]|0)?a=0:(k[l]=(f|0)){break a}}}}while(0);b=g}Iib.X=1;function Jib(a,d,e){var f=b;b+=8;var g=f+4,h=c[d+3];v[c[c[h]+15]](g,h,e);c[f]=c[g];k[f]=k[g];c[f+1]=c[g+1];k[f+1]=k[g+1];c[f+2]=c[g+2];k[f+2]=k[g+2];c[f+3]=c[g+3];k[f+3]=k[g+3];Q(a,f,d+4);b=f}Jib.X=1;function Kib(a,d,e){var f=b;b+=8;var g=f+4,h=c[a+3];v[c[c[h]+8]](h,d,f);Q(g,f,a+4);c[e]=c[g];k[e]=k[g];c[e+1]=c[g+1];k[e+1]=k[g+1];c[e+2]=c[g+2];k[e+2]=k[g+2];c[e+3]=c[g+3];k[e+3]=k[g+3];b=f}Kib.X=1;function Lib(a,d,e,f){v[c[c[a]+18]](a,d,e,f)}Lib.X=1;function Mib(a,d,e,f){var g=b;b+=125;var h=g+24,i=g+25,j=g+26,l=g+27,m=g+28,n=g+29,p=g+30,r=g+31,s=g+32,t=g+33,w=g+34,x=g+35,y=g+36,z=g+37,A=g+38,C=g+39,B=g+40,K=g+41,E=g+42,G=g+66,M=g+67,L=g+68,F=g+69,I=g+70,R=g+71,O=g+72,Z=g+73,P=g+74,S=g+75,da=g+76,V=g+77,ba=g+78,$=g+79,Y=g+80,la=g+81,ka=g+82,ja=g+83,ea=g+84,ca=g+88,W=g+92,U=g+93,X=g+94,ma=g+95,ga=g+99,ha=g+100,ta=g+101,ra=g+102,ua=g+106,za=g+110,Za=g+114,ib=g+115,Ca=g+116,Sa=g+117,mb=g+121;k[h]=1;k[i]=0;k[j]=0;H(g,h,i,j);h=g+4;k[l]=0;k[m]=1;k[n]=0;H(h,l,m,n);l=h+4;k[p]=0;k[r]=0;k[s]=1;H(l,p,r,s);p=l+4;k[t]=-1;k[w]=0;k[x]=0;H(p,t,w,x);t=p+4;k[y]=0;k[z]=-1;k[A]=0;H(t,y,z,A);k[C]=0;k[B]=0;k[K]=-1;H(t+4,C,B,K);k[G]=0;k[M]=0;k[L]=0;H(E,G,M,L);y=E+4;k[F]=0;k[I]=0;k[R]=0;H(y,F,I,R);F=y+4;k[O]=0;k[Z]=0;k[P]=0;H(F,O,Z,P);O=F+4;k[S]=0;k[da]=0;k[V]=0;H(O,S,da,V);S=O+4;k[ba]=0;k[$]=0;k[Y]=0;H(S,ba,$,Y);k[la]=0;k[ka]=0;k[ja]=0;H(S+4,la,ka,ja);for(ba=0;!(rn(ea,(ba<<2)+g,d),$=(ba<<2)+g,c[$]=c[ea],k[$]=k[ea],c[$+1]=c[ea+1],k[$+1]=k[ea+1],c[$+2]=c[ea+2],k[$+2]=k[ea+2],c[$+3]=c[ea+3],k[$+3]=k[ea+3],ba=$=ba+1,6<=($|0));){}v[c[c[a]+17]](a,g,E,6);k[W]=0;k[U]=0;k[X]=0;H(ca,W,U,X);k[ga]=0;k[ha]=0;k[ta]=0;H(ma,ga,ha,ta);for(ea=0;!(vw(ra,d,(ea<<2)+E),k[ma+ea]=k[ra+ea],vw(ua,d,(ea+3<<2)+E),k[ca+ea]=k[ua+ea],ea=W=ea+1,3<=(W|0));){}k[Za]=v[c[c[a]+11]](a);k[ib]=v[c[c[a]+11]](a);k[Ca]=v[c[c[a]+11]](a);H(za,Za,ib,Ca);N(Sa,ca,za);c[e]=c[Sa];k[e]=k[Sa];c[e+1]=c[Sa+1];k[e+1]=k[Sa+1];c[e+2]=c[Sa+2];k[e+2]=k[Sa+2];c[e+3]=c[Sa+3];k[e+3]=k[Sa+3];wn(mb,ma,za);c[f]=c[mb];k[f]=k[mb];c[f+1]=c[mb+1];k[f+1]=k[mb+1];c[f+2]=c[mb+2];k[f+2]=k[mb+2];c[f+3]=c[mb+3];k[f+3]=k[mb+3];b=g}Mib.X=1;function Nib(a,d){var e=c[a+3];v[c[c[e]+6]](e,d)}Nib.X=1;function Oib(a){a=c[a+3];return v[c[c[a]+7]](a)}Oib.X=1;function Pib(a,d){var e=c[a+3];v[c[c[e]+10]](e,d)}Pib.X=1;function Qib(a){var d=c[a+3];return v[c[c[d]+11]](d)*k[a+4]}Qib.X=1;function Rib(a){a=c[a+3];return v[c[c[a]+19]](a)}Rib.X=1;function Sib(a,d,e){a=c[a+3];v[c[c[a]+20]](a,d,e)}Sib.X=1;function Tib(a){C1(a)}Tib.X=1;function Uib(a,d){var e=b;b+=2;c[e]=0;k[e]=0;c[e+1]=0;k[e+1]=0;Vib(a,d,e);b=e}Uib.X=1;function Vib(a,d,e){var f,g;f=F1(a);var h=(d|0)<(f|0);a:do{if(h){if(g=d,(g|0)<(f|0)){for(;;){if(g+=1,(g|0)>=(f|0)){break a}}}}else{if((d|0)>(F1(a)|0)&&Wib(a,d),g=f,(g|0)<(d|0)){for(var i=a+3;;){var j=(g<<1)+c[i];if(0!=(j|0)){var l=e;c[j]=c[l];k[j]=k[l];c[j+1]=c[l+1];k[j+1]=k[l+1]}g+=1;if((g|0)>=(d|0)){break a}}}}}while(0);c[a+1]=d}Vib.X=1;function Xib(a){Yib(a,0,F1(a));Zib(a);C1(a)}Xib.X=1;function hfb(a,d){var e;Uib(a,d);e=0;var f=(e|0)<(d|0);a:do{if(f){for(var g=a,h=a;;){if(c[E1(g,e)]=e,c[E1(h,e)+1]=1,e+=1,(e|0)>=(d|0)){break a}}}}while(0)}hfb.X=1;function ofb(a){var d,e;d=F1(a);e=0;var f=(e|0)<(d|0);a:do{if(f){for(var g=a;;){var h=D1(a,e);c[E1(g,e)]=h;e+=1;if((e|0)>=(d|0)){break a}}}}while(0);$ib(a)}ofb.X=1;function mfb(a){Xib(a);Xib(a)}mfb.X=1;function Yib(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}Yib.X=1;function X1(a,d,e){$1=a;return(c[d]|0)<(c[e]|0)}X1.X=1;function C1(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}C1.X=1;function ajb(a){return c[a+2]}ajb.X=1;function $ib(a){1<(F1(a)|0)&&Y1(a,0,F1(a)-1)}$ib.X=1;function Y1(a,d,e){var f=b;b+=3;var g,h,i=f+1;g=d;h=e;var j=(((e+d|0)/2&-1)<<1)+c[a+3];c[i]=c[j];k[i]=k[j];c[i+1]=c[j+1];k[i+1]=k[j+1];for(var j=a+3,l=a+3;;){if(X1(f,(g<<1)+c[j],i)){g+=1}else{var m=X1(f,i,(h<<1)+c[l]);a:do{if(m){for(;;){if(h-=1,!X1(f,i,(h<<1)+c[l])){break a}}}}while(0);(g|0)<=(h|0)&&(bjb(a,g,h),g+=1,h-=1);if(!((g|0)<=(h|0))){break}}}(d|0)<(h|0)&&Y1(a,d,h);(g|0)<(e|0)&&Y1(a,g,e);b=f}Y1.X=1;function bjb(a,d,e){var f=b;b+=2;var g=(d<<1)+c[a+3];c[f]=c[g];k[f]=k[g];c[f+1]=c[g+1];k[f+1]=k[g+1];d=(d<<1)+c[a+3];g=(e<<1)+c[a+3];c[d]=c[g];k[d]=k[g];c[d+1]=c[g+1];k[d+1]=k[g+1];a=(e<<1)+c[a+3];c[a]=c[f];k[a]=k[f];c[a+1]=c[f+1];k[a+1]=k[f+1];b=f}bjb.X=1;function Zib(a){0!=(c[a+3]|0)&&(c[a+4]&1&&cjb(a,c[a+3]),c[a+3]=0)}Zib.X=1;function cjb(a,d){$1=a;yh(d)}cjb.X=1;function Wib(a,d){var e;(ajb(a)|0)<(d|0)&&(e=djb(a,d),ejb(a,0,F1(a),e),Yib(a,0,F1(a)),Zib(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}Wib.X=1;function djb(a,d){return 0!=(d|0)?fjb(a,d,0):0}djb.X=1;function ejb(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=(d<<1)+f;if(0!=(i|0)){var j=(d<<1)+c[h];c[i]=c[j];k[i]=k[j];c[i+1]=c[j+1];k[i+1]=k[j+1]}d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}ejb.X=1;function fjb(a,d,e){$1=a;$3=e;return Ue(d<<3,16)}fjb.X=1;function Z1(a,d){c[a]-=1;var e=(d<<2)+a+1,f=(c[a]<<2)+a+1;c[e]=c[f];k[e]=k[f];c[e+1]=c[f+1];k[e+1]=k[f+1];c[e+2]=c[f+2];k[e+2]=k[f+2];c[e+3]=c[f+3];k[e+3]=k[f+3];e=(d<<2)+a+21;f=(c[a]<<2)+a+21;c[e]=c[f];k[e]=k[f];c[e+1]=c[f+1];k[e+1]=k[f+1];c[e+2]=c[f+2];k[e+2]=k[f+2];c[e+3]=c[f+3];k[e+3]=k[f+3];e=(d<<2)+a+41;f=(c[a]<<2)+a+41;c[e]=c[f];k[e]=k[f];c[e+1]=c[f+1];k[e+1]=k[f+1];c[e+2]=c[f+2];k[e+2]=k[f+2];c[e+3]=c[f+3];k[e+3]=k[f+3]}Z1.X=1;function a2(a,d){4<=(c[a]|0)&&0==((c[d]&65535)>>>3&1)<<16>>16&&Z1(a,3);3<=(c[a]|0)&&0==((c[d]&65535)>>>2&1)<<16>>16&&Z1(a,2);2<=(c[a]|0)&&0==((c[d]&65535)>>>1&1)<<16>>16&&Z1(a,1);1<=(c[a]|0)&&0==(c[d]&1)<<16>>16&&Z1(a,0)}a2.X=1;function fZ(a){var d=b;b+=7;var e=d+4,f=d+5,g=d+6;c[a+78]=0;c[a]=0;c[a+90]=1;k[e]=0xde0b6b000000000;k[f]=0xde0b6b000000000;k[g]=0xde0b6b000000000;H(d,e,f,g);e=a+73;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3];b2(a+79);b=d}fZ.X=1;function b2(a){c[a+10]=0;c2(a,0,0,0,0);KY(a+4)}b2.X=1;function r9a(a,d,e,f){var g=a+73;c[g]=c[d];k[g]=k[d];c[g+1]=c[d+1];k[g+1]=k[d+1];c[g+2]=c[d+2];k[g+2]=k[d+2];c[g+3]=c[d+3];k[g+3]=k[d+3];c[a+90]=1;g=(c[a]<<2)+a+1;c[g]=c[d];k[g]=k[d];c[g+1]=c[d+1];k[g+1]=k[d+1];c[g+2]=c[d+2];k[g+2]=k[d+2];c[g+3]=c[d+3];k[g+3]=k[d+3];d=(c[a]<<2)+a+21;c[d]=c[e];k[d]=k[e];c[d+1]=c[e+1];k[d+1]=k[e+1];c[d+2]=c[e+2];k[d+2]=k[e+2];c[d+3]=c[e+3];k[d+3]=k[e+3];e=(c[a]<<2)+a+41;c[e]=c[f];k[e]=k[f];c[e+1]=c[f+1];k[e+1]=k[f+1];c[e+2]=c[f+2];k[e+2]=k[f+2];c[e+3]=c[f+3];k[e+3]=k[f+3];c[a]+=1}r9a.X=1;function c2(a,d,e,f,g){k[a+6]=d;k[a+7]=e;k[a+8]=f;k[a+9]=g}c2.X=1;function d2(a){return(0<=k[a+6]?0<=k[a+7]?0<=k[a+8]?0<=k[a+9]:0:0:0)&1}d2.X=1;function gjb(a){var d=b;b+=185;var e,f=d+4,g=d+8,h=d+12,i=d+13,j=d+14,l=d+15,m=d+19,n=d+23,p,r=d+24,s=d+28,t=d+32,w=d+36,x=d+40,y=d+44,z=d+48,A=d+52,C=d+56,B=d+60,K=d+64,E=d+68,G=d+69,M=d+70,L=d+71,F=d+75,I=d+79,R=d+83,O=d+87,Z=d+91,P=d+95,S=d+99,da=d+103,V=d+107;e=d+111;var ba=d+115,$=d+119,Y=d+120,la=d+121,ka=d+122,ja=d+126,ea=d+130,ca=d+134,W=d+138,U=d+142,X=d+146,ma=d+150,ga=d+154,ha=d+158,ta=d+162,ra=d+166,ua=d+170,za=d+174;p=d+178;var Za=d+182,ib=d+183,Ca=d+184;if(c[a+90]&1){b2(a+79);c[a+90]=0;var Sa=c[a];0==(Sa|0)?c[a+78]=0:1==(Sa|0)?(B=a+61,z=a+21,c[B]=c[z],k[B]=k[z],c[B+1]=c[z+1],k[B+1]=k[z+1],c[B+2]=c[z+2],k[B+2]=k[z+2],c[B+3]=c[z+3],k[B+3]=k[z+3],B=a+65,z=a+41,c[B]=c[z],k[B]=k[z],c[B+1]=c[z+1],k[B+1]=k[z+1],c[B+2]=c[z+2],k[B+2]=k[z+2],c[B+3]=c[z+3],k[B+3]=k[z+3],N(d,a+61,a+65),B=a+69,c[B]=c[d],k[B]=k[d],c[B+1]=c[d+1],k[B+1]=k[d+1],c[B+2]=c[d+2],k[B+2]=k[d+2],c[B+3]=c[d+3],k[B+3]=k[d+3],b2(a+79),c2(a+79,1,0,0,0),c[a+78]=d2(a+79)&1):2==(Sa|0)?(e=a+1,k[h]=0,k[i]=0,k[j]=0,H(g,h,i,j),N(l,g,e),N(m,a+5,e),k[n]=J(m,l),0=a?0>=n?(c[h]=c[e],k[h]=k[e],c[h+1]=c[e+1],k[h+1]=k[e+1],c[h+2]=c[e+2],k[h+2]=k[e+2],c[h+3]=c[e+3],k[h+3]=k[e+3],j=h+4,c[j]=c[j]&-2|1,c2(h,1,0,0,0),l=1,j=24):j=5:j=5;a:do{if(5==j){N(p,d,f);l=J(i,p);r=J(m,p);s=0<=l;do{if(s&&r<=l){t=h;B=f;c[t]=c[B];k[t]=k[B];c[t+1]=c[B+1];k[t+1]=k[B+1];c[t+2]=c[B+2];k[t+2]=k[B+2];c[t+3]=c[B+3];k[t+3]=k[B+3];t=h+4;c[t]=c[t]&-3|2;c2(h,0,1,0,0);l=1;break a}}while(0);s=z=a*r-l*n;z=0>=z;do{if(z&&0<=a&&0>=l){k[t]=a/(a-l);Q(x,i,t);wn(w,e,x);B=h;M=w;c[B]=c[M];k[B]=k[M];c[B+1]=c[M+1];k[B+1]=k[M+1];c[B+2]=c[M+2];k[B+2]=k[M+2];c[B+3]=c[M+3];k[B+3]=k[M+3];B=h+4;c[B]=c[B]&-2|1;B=h+4;c[B]=c[B]&-3|2;c2(h,1-k[t],k[t],0,0);l=1;break a}}while(0);N(y,d,g);z=J(i,y);A=C=J(m,y);C=0<=C;do{if(C&&z<=A){t=h;B=g;c[t]=c[B];k[t]=k[B];c[t+1]=c[B+1];k[t+1]=k[B+1];c[t+2]=c[B+2];k[t+2]=k[B+2];c[t+3]=c[B+3];k[t+3]=k[B+3];t=h+4;c[t]=c[t]&-5|4;c2(h,0,0,1,0);l=1;break a}}while(0);C=G=z*n-a*A;G=0>=G;do{if(G&&0<=n&&0>=A){k[B]=n/(n-A);Q(E,m,B);wn(K,e,E);t=h;M=K;c[t]=c[M];k[t]=k[M];c[t+1]=c[M+1];k[t+1]=k[M+1];c[t+2]=c[M+2];k[t+2]=k[M+2];c[t+3]=c[M+3];k[t+3]=k[M+3];t=h+4;c[t]=c[t]&-2|1;t=h+4;c[t]=c[t]&-5|4;c2(h,1-k[B],0,k[B],0);l=1;break a}}while(0);var V=l*A-z*r;G=V;V=0>=V;do{if(V&&0<=r-l&&0<=z-A){k[M]=(r-l)/(r-l+(z-A));N(I,g,f);Q(F,I,M);wn(L,f,F);t=h;B=L;c[t]=c[B];k[t]=k[B];c[t+1]=c[B+1];k[t+1]=k[B+1];c[t+2]=c[B+2];k[t+2]=k[B+2];c[t+3]=c[B+3];k[t+3]=k[B+3];t=h+4;c[t]=c[t]&-3|2;t=h+4;c[t]=c[t]&-5|4;c2(h,0,1-k[M],k[M],0);l=1;break a}}while(0);l=1/(G+C+s);k[R]=C*l;k[O]=s*l;Q(S,i,R);wn(P,e,S);Q(da,m,O);wn(Z,P,da);l=h;r=Z;c[l]=c[r];k[l]=k[r];c[l+1]=c[r+1];k[l+1]=k[r+1];c[l+2]=c[r+2];k[l+2]=k[r+2];c[l+3]=c[r+3];k[l+3]=k[r+3];l=h+4;c[l]=c[l]&-2|1;l=h+4;c[l]=c[l]&-3|2;l=h+4;c[l]=c[l]&-5|4;c2(h,1-k[R]-k[O],k[R],k[O],0);l=1}}while(0);b=i;return l}e2.X=1;function hjb(a,d,e,f,g,h,i){var j=b;b+=59;var l,m,n,p,r,s,t=j+11,w=j+15,x=j+19,y=j+23,z=j+27,A=j+31,C=j+35,B=j+39,K=j+43,E=j+47,G=j+51,M=j+55;YUa(j);c[i]=c[d];k[i]=k[d];c[i+1]=c[d+1];k[i+1]=k[d+1];c[i+2]=c[d+2];k[i+2]=k[d+2];c[i+3]=c[d+3];k[i+3]=k[d+3];KY(i+4);n=i+4;c[n]=c[n]&-2|1;n=i+4;c[n]=c[n]&-3|2;n=i+4;c[n]=c[n]&-5|4;n=i+4;c[n]=c[n]&-9|8;n=f2(a,d,e,f,g,h);p=f2(a,d,e,g,h,f);r=f2(a,d,e,h,f,g);s=f2(a,d,f,h,g,e);var L=0>(n|0);a:do{if(L){l=6}else{if(0>(p|0)){l=6}else{if(0>(r|0)){l=6}else{if(0>(s|0)){l=6}else{var F=0!=(n|0);do{if(F){m=3.4028234663852886e+38,l=14}else{m=0!=(p|0);do{if(!m&&0==(r|0)&&0==(s|0)){m=0;l=31;break a}}while(0);m=3.4028234663852886e+38;l=0!=(n|0)?14:16}}while(0);14==l&&(e2(a,d,e,f,g,j),l=t,F=j,c[l]=c[F],k[l]=k[F],c[l+1]=c[F+1],k[l+1]=k[F+1],c[l+2]=c[F+2],k[l+2]=k[F+2],c[l+3]=c[F+3],k[l+3]=k[F+3],N(w,t,d),N(x,t,d),l=J(w,x),l>>1&1)<<1,l=i+4,c[l]=c[l]&-5|((c[j+4]&65535)>>>2&1)<<2,c2(i,k[j+6],k[j+7],k[j+8],0)));0!=(p|0)&&(e2(a,d,e,g,h,j),l=y,F=j,c[l]=c[F],k[l]=k[F],c[l+1]=c[F+1],k[l+1]=k[F+1],c[l+2]=c[F+2],k[l+2]=k[F+2],c[l+3]=c[F+3],k[l+3]=k[F+3],N(z,y,d),N(A,y,d),l=J(z,A),l>>1&1)<<2,l=i+4,c[l]=c[l]&-9|((c[j+4]&65535)>>>2&1)<<3,c2(i,k[j+6],0,k[j+7],k[j+8])));0!=(r|0)&&(e2(a,d,e,h,f,j),l=C,F=j,c[l]=c[F],k[l]=k[F],c[l+1]=c[F+1],k[l+1]=k[F+1],c[l+2]=c[F+2],k[l+2]=k[F+2],c[l+3]=c[F+3],k[l+3]=k[F+3],N(B,C,d),N(K,C,d),l=J(B,K),l>>2&1)<<1,l=i+4,c[l]=c[l]&-9|((c[j+4]&65535)>>>1&1)<<3,c2(i,k[j+6],k[j+8],0,k[j+7])));0!=(s|0)&&(e2(a,d,f,h,g,j),l=E,F=j,c[l]=c[F],k[l]=k[F],c[l+1]=c[F+1],k[l+1]=k[F+1],c[l+2]=c[F+2],k[l+2]=k[F+2],c[l+3]=c[F+3],k[l+3]=k[F+3],N(G,E,d),N(M,E,d),l=J(G,M),l>>2&1)<<2,m=i+4,c[m]=c[m]&-9|((c[j+4]&65535)>>>1&1)<<3,c2(i,0,k[j+6],k[j+8],k[j+7])));m=0!=(c[i+4]&1)<<16>>16;do{if(m&&0!=((c[i+4]&65535)>>>1&1)<<16>>16&&0!=((c[i+4]&65535)>>>2&1)<<16>>16&&0!=((c[i+4]&65535)>>>3&1)<<16>>16){m=1;l=31;break a}}while(0);m=1;l=31}}}}}while(0);6==l&&(c[i+10]=1,m=0);b=j;return m}hjb.X=1;function s9a(a,d){var e;e=gjb(a)&1;var f=a+69;c[d]=c[f];k[d]=k[f];c[d+1]=c[f+1];k[d+1]=k[f+1];c[d+2]=c[f+2];k[d+2]=k[f+2];c[d+3]=c[f+3];k[d+3]=k[f+3];return e&1}s9a.X=1;function q9a(a,d){var e,f,g;e=0;g=c[a];f=0;var h=(f|0)<(g|0);a:do{if(h){for(var i=a+1,j=a+77;;){if(kC((f<<2)+i,d)<=k[j]&&(e=1),f+=1,(f|0)>=(g|0)){break a}}}}while(0);return KC(d,a+73)?1:e&1}q9a.X=1;function t9a(a,d,e){gjb(a);var f=a+61;c[d]=c[f];k[d]=k[f];c[d+1]=c[f+1];k[d+1]=k[f+1];c[d+2]=c[f+2];k[d+2]=k[f+2];c[d+3]=c[f+3];k[d+3]=k[f+3];a+=65;c[e]=c[a];k[e]=k[a];c[e+1]=c[a+1];k[e+1]=k[a+1];c[e+2]=c[a+2];k[e+2]=k[a+2];c[e+3]=c[a+3];k[e+3]=k[a+3]}t9a.X=1;function f2(a,d,e,f,g,h){var i=b;b+=20;var j=i+4,l=i+8,m=i+12,n=i+16;$2=a;N(j,f,e);N(l,g,e);qn(i,j,l);N(m,d,e);a=J(m,i);N(n,h,e);e=J(n,i);b=i;return 9.99999905104687e-9>e*e?-1:0>a*e&1}f2.X=1;function Iu(a,d){c[d]=6;c[d+1]=0}Iu.X=1;function Cu(a,d,e,f,g){g2(a,5,d,e);c[a]=h2+2;sQ(a+74,f);sQ(a+90,g);c[a+130]=0;c[a+133]=0;ijb(a)}Cu.X=1;function ijb(a){c[a+130]=0;c[a+131]=0;c[a+132]=0;c[a+140]=0;k[a+146]=-1;Nu(a,0xde0b6b000000000,0xde0b6b000000000,0xde0b6b000000000,1,.30000001192092896,1);k[a+109]=.009999999776482582;k[a+113]=.05000000074505806;c[a+151]=0;k[a+152]=0;k[a+153]=.699999988079071;k[a+154]=0}ijb.X=1;function Au(a,d,e){i2(a,5,d);c[a]=h2+2;sQ(a+74,e);c[a+130]=0;c[a+133]=0;xi(a+90,a+74);ijb(a)}Au.X=1;function jjb(a,d){if(c[a+133]&1){c[d]=0,c[d+1]=0}else{c[d]=3;c[d+1]=3;su(a,c[a+7]+1,c[a+8]+1,c[a+7]+64,c[a+8]+64);if(c[a+132]&1){c[d]+=1;var e=d+1;c[e]-=1;k[a+110]=k[a+113]?k[a+111]>=k[a+113]?(k[O]=0,kjb(a,L,R,Z,O),k[R]>k[O]*k[a+106]&&(c[a+132]=1,k[a+134]=1,k[R]k[a+106]&&(k[a+134]=(k[R]-k[O]*k[a+106])/(k[O]-k[O]*k[a+106])),k[a+125]=k[R]-k[O]*k[a+106],ljb(a,Z),WP(S,Z),tw(P,C,S),i=a+114,x=P,c[i]=c[x],k[i]=k[x],c[i+1]=c[x+1],k[i+1]=k[x+1],c[i+2]=c[x+2],k[i+2]=k[x+2],c[i+3]=c[x+3],k[i+3]=k[x+3],k[da]=0,k[V]=0,k[ba]=0,pe(a+136,da,V,ba),i=l2(a+114,f),k[a+122]=1/(i+l2(a+114,g))),i=32):i=13:i=13;a:do{if(13==i){x=d;Jb(Y,a+74,0);Bo($,x,Y);x=d;Jb(ka,a+74,1);Bo(la,x,ka);x=d;Jb(ea,a+74,2);Bo(ja,x,ea);x=e;Jb(W,a+90,0);Bo(ca,x,W);x=J(ca,$);j=J(ca,la);l=J(ca,ja);m=k[a+110]=k[a+113]&&(j=0,m=ee(l,x),m>k[a+111]?(x=td(k[a+111]),l=ud(k[a+111])):m<-k[a+111]&&(x=td(k[a+111]),l=-ud(k[a+111])))):j2(l)||(c[a+132]=1,k[a+110]>=k[a+113]&&(l=0,m=ee(j,x),m>k[a+110]?(x=td(k[a+110]),j=ud(k[a+110])):m<-k[a+110]&&(x=td(k[a+110]),j=-ud(k[a+110]))));k[U]=x*k[$]+j*k[la]+l*k[ja];k[U+1]=x*k[$+1]+j*k[la+1]+l*k[ja+1];k[U+2]=x*k[$+2]+j*k[la+2]+l*k[ja+2];IB(U);qn(ha,ca,U);WP(ga,ha);x=a+114;j=ga;c[x]=c[j];k[x]=k[j];c[x+1]=c[j+1];k[x+1]=k[j+1];c[x+2]=c[j+2];k[x+2]=k[j+2];c[x+3]=c[j+3];k[x+3]=k[j+3];k[a+125]=JB(a+114);IB(a+114)}}while(0);0<=k[a+112]?(mjb(a,F,a+127,ta),k[a+127]>k[a+112]*k[a+106]&&(c[a+131]=1,k[a+135]=1,k[a+127]k[a+106]&&(k[a+135]=(k[a+127]-k[a+112]*k[a+106])/(k[a+112]-k[a+112]*k[a+106])),k[a+126]=k[a+127]-k[a+112]*k[a+106],WP(ua,ta),tw(ra,C,ua),x=a+118,j=ra,c[x]=c[j],k[x]=k[j],c[x+1]=c[j+1],k[x+1]=k[j+1],c[x+2]=c[j+2],k[x+2]=k[j+2],c[x+3]=c[j+3],k[x+3]=k[j+3],x=l2(a+118,f),k[a+123]=1/(x+l2(a+118,g))),c[a+132]&1&&(WP(Za,ta),tw(za,y,Za),x=a+136,j=za,c[x]=c[j],k[x]=k[j],c[x+1]=c[j+1],k[x+1]=k[j+1],c[x+2]=c[j+2],k[x+2]=k[j+2],c[x+3]=c[j+3],k[x+3]=k[j+3])):k[a+127]=0}}while(0);b=h}su.X=1;function njb(a,d){iv(a,d,c[a+7]+1,c[a+8]+1,c[a+7]+64,c[a+8]+64)}njb.X=1;function iv(a,d,e,f,g,h){var i=b;b+=56;var j,l=i+4,m=i+8,n=i+12,p=i+16,r=i+32,s=i+36,t=i+40,w=i+44,x=i+48,y=i+52;su(a,e,f,g,h);k[c[d+2]]=1;k[c[d+2]+c[d+6]+1]=1;k[(c[d+6]<<1)+c[d+2]+2]=1;Bo(i,e,a+74+12);g=c[d+3];h=c[d+3]+c[d+6];j=(c[d+6]<<1)+c[d+3];WP(l,i);CB(l,g,h,j);Bo(m,f,a+90+12);CB(m,c[d+5],c[d+5]+c[d+6],(c[d+6]<<1)+c[d+5]);l=k[d]*(0!=(c[a+151]&2|0)?k[a+153]:k[d+1]);g=0;h=a+151;for(j=a+152;;){k[c[d+7]+c[d+6]*g]=l*(k[m+g]+k[f+12+g]-k[i+g]-k[e+12+g]);k[c[d+9]+c[d+6]*g]=-3.4028234663852886e+38;k[c[d+10]+c[d+6]*g]=3.4028234663852886e+38;0!=(c[h]&1|0)&&(k[c[d+8]+c[d+6]*g]=k[j]);var z=g+1,g=z;if(3<=(z|0)){break}}f=3*c[d+6];g=c[a+132]&1;a:do{if(g){m=c[d+3];l=c[d+5];h=k[a+110]k[Rb]){IB(pb);LC(pb,Rb);N(Sb,pb,a+147);var Xf=Pa,ug=Sb;c[Xf]=c[ug];k[Xf]=k[ug];c[Xf+1]=c[ug+1];k[Xf+1]=k[ug+1];c[Xf+2]=c[ug+2];k[Xf+2]=k[ug+2];c[Xf+3]=c[ug+3];k[Xf+3]=k[ug+3]}xn(a+147,Pa)}k[ab]=JB(Pa);wC(Ib,Pa,ab);k[Ac]=0;k[ob]=0;k[Gc]=0;H(Fc,Ac,ob,Gc);Bo(Yc,c[a+7]+64,Ib);ho(d,Fc,Yc,k[ab]);k[Ub]=0;k[Uc]=0;k[nd]=0;H(Cc,Ub,Uc,nd);Bo(Ic,c[a+8]+64,Ib);ho(e,Cc,Ic,-k[ab])}}else{1.1920928955078125e-7C*f&&(k[a+126]=e-k[a+112],c[a+131]=1,wn(R,g,d),k[O]=.5,Q(I,R,O),G=a+118,c[G]=c[I],k[G]=k[I],c[G+1]=c[I+1],k[G+1]=k[I+1],c[G+2]=c[I+2],k[G+2]=k[I+2],c[G+3]=c[I+3],k[G+3]=k[I+3],IB(a+118)));b=d}pv.X=1;function m2(a,d){var e;e=sc(a);e=0<=d?.7853981852531433-.7853981852531433*((d-e)/(d+e)):2.35619455575943-.7853981852531433*((d+e)/(e-d));return 0>a?-e:e}m2.X=1;function j2(a){return 1.1920928955078125e-7>sc(a)}j2.X=1;function kjb(a,d,e,f,g){var h=b;b+=4;k[e]=KV(d);1.1920928955078125e-7k[e]&&($wtf1=0);b=h}kjb.X=1;function ljb(a,d){var e,f,g;e=-k[d+2];f=k[d+1];1.1920928955078125e-7k[e]&&($wtf=0);H(i,g,g+1,g+2);c[f]=c[i];k[f]=k[i];c[f+1]=c[i+1];k[f+1]=k[i+1];c[f+2]=c[i+2];k[f+2]=k[i+2];c[f+3]=c[i+3];k[f+3]=k[i+3];1.1920928955078125e-7(f|0)?(k[a+153]=e,a+=151,c[a]|=2):k[a+107]=e}else{if(3==(d|0)||4==(d|0)){0<=(f|0)&3>(f|0)?(k[a+152]=e,a+=151,c[a]|=1):(k[a+154]=e,a+=151,c[a]|=4)}}}wjb.X=1;function xjb(a,d,e){var f;f=0;if(1==(d|0)||2==(d|0)){0<=(e|0)&3>(e|0)?f=k[a+153]:3<=(e|0)&6>(e|0)&&(f=k[a+107])}else{if(3==(d|0)||4==(d|0)){0<=(e|0)&3>(e|0)?f=k[a+152]:3<=(e|0)&6>(e|0)&&(f=k[a+154])}}return f}xjb.X=1;function jv(a,d){var e=b;b+=39;var f=e+4,g=e+8,h=e+12,i=e+16,j=e+17,l=e+18,m=e+22,n=e+26,p=e+27,r=e+31,s=e+35,t=a+142;c[t]=c[d];k[t]=k[d];c[t+1]=c[d+1];k[t+1]=k[d+1];c[t+2]=c[d+2];k[t+2]=k[d+2];c[t+3]=c[d+3];k[t+3]=k[d+3];tw(e,a+142,k2);sw(f,k2,e);AV(f);EV(h,f);BW(g,h,a+142);AV(g);.05000000074505806<=k[a+110]&&.05000000074505806<=k[a+111]&&(kjb(a,f,i,l,j),1.1920928955078125e-71*k[j]?k[i]=1*k[j]:k[i]<1*-k[j]&&(k[i]=1*-k[j]),IV(m,l,i),c[f]=c[m],k[f]=k[m],c[f+1]=c[m+1],k[f+1]=k[m+1],c[f+2]=c[m+2],k[f+2]=k[m+2],c[f+3]=c[m+3],k[f+3]=k[m+3]));.05000000074505806<=k[a+112]&&(mjb(a,g,n,p),1.1920928955078125e-71*k[a+112]?k[n]=1*k[a+112]:k[n]<1*-k[a+112]&&(k[n]=1*-k[a+112]),IV(r,p,n),c[g]=c[r],k[g]=k[r],c[g+1]=c[r+1],k[g+1]=k[r+1],c[g+2]=c[r+2],k[g+2]=k[r+2],c[g+3]=c[r+3],k[g+3]=k[r+3]));BW(s,f,g);f=a+142;c[f]=c[s];k[f]=k[s];c[f+1]=c[s+1];k[f+1]=k[s+1];c[f+2]=c[s+2];k[f+2]=k[s+2];c[f+3]=c[s+3];k[f+3]=k[s+3];b=e}jv.X=1;function yjb(a,d,e){xi(a+74,d);xi(a+90,e);v[c[c[a]+2]](a)}yjb.X=1;function zjb(){}zjb.X=1;function Ajb(a){xe(a)}Ajb.X=1;function Bjb(a,d,e){o2(a,d,e);mQ(a+74,d+14);mQ(a+90,d+30);k[d+46]=k[a+110];k[d+47]=k[a+111];k[d+48]=k[a+112];k[d+49]=k[a+106];k[d+50]=k[a+107];k[d+51]=k[a+108];k[d+52]=k[a+109];return D.cf}Bjb.X=1;function Cjb(a){xe(a)}Cjb.X=1;function Djb(){}Djb.X=1;function vU(a,d){for(var e=d,f=a+11,g=e+285;ek[w]?0:k[w];Q(x,f,w);yn(a,x,i);0!=(j|0)&&(WP(z,f),Q(y,z,w),yn(j,y,l));a=k[w];b=i;return a}Ejb.X=1;function p2(a){return 0!=(ji(a)&2|0)?a:0}p2.X=1;function Fjb(a,d,e,f,g,h,i,j){var l=b;b+=97;var m=l+4,n=l+8,p=l+12,r=l+16,s=l+20,t=l+41,w=l+53,x=l+65,y=l+69,z=l+81,A=l+85;$5=g;$8=j;1.100000023841858f){for(var g=(Ka=b,b+=1,k[Ka]=f,Ka),h=c[r2],i=(function(a){var d;"double"===a?d=k[g+l]:("i64"!=a&&(a="i32"),d=c[g+l]);l+=Math.max(wa(a),xa);return d}),j=D.ef,l=0,m=[],n,p;;){var r=j;n=c[j];if(0===n){break}p=c[j+1];if(37==n){var s=oa,t=oa,w=oa,x=oa;a:for(;;){switch(p){case 43:s=ia;break;case 45:t=ia;break;case 35:w=ia;break;case 48:if(x){break a}else{x=ia;break};default:break a}j++;p=c[j+1]}var y=0;if(42==p){y=i("i32"),j++,p=c[j+1]}else{for(;48<=p&&57>=p;){y=10*y+(p-48),j++,p=c[j+1]}}var z=oa;if(46==p){var A=0,z=ia;j++;p=c[j+1];if(42==p){A=i("i32"),j++}else{for(;;){p=c[j+1];if(48>p||57=C&&(n=(r?taa:saa)(n&Math.pow(256,C)-1,8*C));var K=Math.abs(n),r="";if(100==p||105==p){B=taa(n,8*C).toString(10)}else{if(117==p){B=saa(n,8*C).toString(10),n=Math.abs(n)}else{if(111==p){B=(w?"0":"")+K.toString(8)}else{if(120==p||88==p){r=w?"0x":"";if(0>n){n=-n;B=(K-1).toString(16);K=[];for(w=0;wn?"-"+r:"+"+r);r.length+B.lengthC&&-4<=C?(p=(103==p?"f":"F").charCodeAt(0),A-=C+1):(p=(103==p?"e":"E").charCodeAt(0),A--),C=Math.min(A,20)}if(101==p||69==p){B=n.toExponential(C),/[eE][-+]\d$/.test(B)&&(B=B.slice(0,-1)+"0"+B.slice(-1))}else{if(102==p||70==p){B=n.toFixed(C)}}r=B.split("e");if(z&&!w){for(;1C++;){r[0]+="0"}}B=r[0]+(1n?"-":"")+"inf",x=oa}}for(;B.lengthp&&(B=B.toUpperCase());B.split("").forEach((function(a){m.push(a.charCodeAt(0))}))}else{if(115==p){s=i("i8*")||paa;x=raa(s);z&&(x=Math.min(x,A));if(!t){for(;x=(Tl(A)|0)){break a}}}}while(0);f=c[a+21];v[c[c[f]+8]](f,c[a+6]);b=e}Rjb.X=1;function Sjb(a,d){t2(a,d)}Sjb.X=1;function Tjb(a,d,e,f){qM(a,d,e,f);c[a]=Ujb+2;c[a+24]=0;c[a+25]=0;c[a+26]=0;Rm(a+27)}Tjb.X=1;function Vjb(a){q2(a);xe(a)}Vjb.X=1;function Wjb(a,d){var e,f;e=0;var g=a+1,h=(e|0)<(Tl(g)|0);a:do{if(h){for(var i=a+1;;){var j=p2(c[$X(i,e)]);f=j;0!=(j|0)&&2!=(ki(f)|0)&&Ti(f)&&to(f,d);e+=1;if((e|0)>=(Tl(g)|0)){break a}}}}while(0)}Wjb.X=1;function ot(a,d,e,f,g){var h=b;b+=3;var i=h+1,j=h+2;Tjb(a,d,e,g);c[a]=u2+2;c[a+45]=f;v2(a+47);Xjb(a+52);k[h]=0;k[i]=-10;k[j]=0;H(a+57,h,i,j);k[a+61]=0;c[a+64]=0;Yjb(a+65);c[a+70]=0;0!=(c[a+45]|0)?c[a+63]=0:(d=Ue(128,16),0==(d|0)?d=0:pI(d),c[a+45]=d,c[a+63]=1);d=Ue(68,16);0==(d|0)?d=0:dfb(d);c[a+46]=d;c[a+62]=1;b=h}ot.X=1;function q2(a){c[a]=u2+2;if(c[a+62]&1){var d=c[a+46];v[c[c[d]]](d);yh(c[a+46])}c[a+63]&1&&(d=c[a+45],v[c[c[d]]](d),yh(c[a+45]));Zjb(a+65);$jb(a+52);w2(a+47);aY(a)}q2.X=1;function akb(a){var d=b;b+=1;var e,f;jY(d,D.gf);LSa(a);e=0;0!=(v[c[c[a]+4]](a)|0)&&(f=v[c[c[a]+4]](a),0!=(v[c[c[f]+12]](f)&6144|0)&&(e=1));f=e&1;a:do{if(f){var g=v[c[c[a]+25]](a)-1;e=g;for(var h=a;;){if(!(0<=(g|0))){break a}Ft(a,v[c[c[h]+26]](a,e));e=g=e-1}}}while(0);e=0!=(v[c[c[a]+4]](a)|0);a:do{if(e&&(f=a,f=v[c[c[f]+4]](f),0!=(v[c[c[f]+12]](f)&3|0)&&(f=a,0!=(v[c[c[f]+4]](f)|0)&&(f=a,f=v[c[c[f]+4]](f),0!=(v[c[c[f]+12]](f)|0))))){f=0;for(var h=a+65,g=a+65,i=a+22;;){if((f|0)>=(x2(h)|0)){break a}var j=c[bkb(g,f)];v[c[c[j]+3]](j,c[i]);f+=1}}}while(0);kY(d);b=d}akb.X=1;function Ft(a,d){var e=b;b+=340;var f,g,h,i,j=e+16,l=e+20,m=e+24,n,p=e+28,r=e+44,s,t,w,x,y=e+60,z=e+64,A=e+68,C=e+72,B=e+73,K=e+74,E,G=e+75,M=e+91,L,F,I=e+107,R=e+111,O,Z=e+115,P=e+119,S=e+123,da=e+127,V=e+128,ba=e+129,$=e+130,Y=e+134,la=e+135,ka=e+136,ja,ea,ca=e+137,W=e+153,U=e+169,X=e+173,ma=e+177,ga=e+181,ha=e+185,ta=e+186,ra=e+187,ua,za=e+188,Za,ib=e+204,Ca=e+208,Sa,mb,Oa,Pa,fc=e+212,jb=e+216,La=e+217,fb=e+218,Rb=e+219,pb,Sb,ab,Ib,Fc,Ac,ob=e+223,Gc=e+227,Yc=e+231,Cc,Ub,Uc=e+235,nd=e+239,Ic=e+240,tc=e+241,hd=e+242,Tb=e+246,Jc=e+247,ub=e+248,uc=e+249,Kc=e+253,gb=e+257,gc=e+261,Lc=e+262,Dc=e+263,Eb,Ra=e+264,qb=e+280,Ab=e+296,hc=e+300,Hc=e+304,ic=e+305,db=e+306,bb=e+307,id=e+311,Zc=e+315,vb=e+316,rb=e+317,vc=e+318,Qc=e+322,Rc=e+323,Xd=e+324,Sc=e+325,Mc=e+329,$c,Cd,wc,Bb=e+333,fd=e+337,ad=e+338,wd=e+339,Kd=v[c[c[a]+4]](a);f=0!=(v[c[c[Kd]+12]](Kd)&2048|0)&1;var Rd=v[c[c[a]+4]](a);g=0!=(v[c[c[Rd]+12]](Rd)&4096|0)&1;h=Dp(d);var Ec=0>=h;do{if(!Ec){var xd=Cp(d);if(3==(xd|0)){i=d;eQ(e);var od=j,pd=i+74;c[od]=c[pd];k[od]=k[pd];c[od+1]=c[pd+1];k[od+1]=k[pd+1];c[od+2]=c[pd+2];k[od+2]=k[pd+2];c[od+3]=c[pd+3];k[od+3]=k[pd+3];vw(l,Io(i)+1,j);var bd=j,jd=l;c[bd]=c[jd];k[bd]=k[jd];c[bd+1]=c[jd+1];k[bd+1]=k[jd+1];c[bd+2]=c[jd+2];k[bd+2]=k[jd+2];c[bd+3]=c[jd+3];k[bd+3]=k[jd+3];pQ(e,j);var Ld=a,Gd=v[c[c[Ld]+4]](Ld);v[c[c[Gd]+14]](Gd,e,h);var Dd=j,fe=i+78;c[Dd]=c[fe];k[Dd]=k[fe];c[Dd+1]=c[fe+1];k[Dd+1]=k[fe+1];c[Dd+2]=c[fe+2];k[Dd+2]=k[fe+2];c[Dd+3]=c[fe+3];k[Dd+3]=k[fe+3];vw(m,Ho(i)+1,j);var ge=j,Hd=m;c[ge]=c[Hd];k[ge]=k[Hd];c[ge+1]=c[Hd+1];k[ge+1]=k[Hd+1];c[ge+2]=c[Hd+2];k[ge+2]=k[Hd+2];c[ge+3]=c[Hd+3];k[ge+3]=k[Hd+3];pQ(e,j);if(f&1){var he=a,Zd=v[c[c[he]+4]](he);v[c[c[Zd]+14]](Zd,e,h)}}else{if(4==(xd|0)){n=d;WW(p,Tu(n)+1,n+137);if(f&1){var $d=a,pg=v[c[c[$d]+4]]($d);v[c[c[pg]+14]](pg,p,h)}WW(r,Su(n)+1,n+153);xi(p,r);if(f&1){var Ze=a,Xg=v[c[c[Ze]+4]](Ze);v[c[c[Xg]+14]](Xg,p,h)}s=Vv(n);t=yv(n);if(s!=t&&(w=1,s>t&&(s=0,t=6.2831854820251465,w=0),g&1)){x=p+12;Jb(y,p,2);Jb(z,p,0);var Dh=a,wf=v[c[c[Dh]+4]](Dh),Oe=c[c[wf]+15];k[C]=0;k[B]=0;k[K]=0;H(A,C,B,K);v[Oe](wf,x,y,z,h,h,s,t,A,w&1,10)}}else{if(5==(xd|0)){E=d;WW(G,Mt(E)+1,E+74);if(f&1){var If=a,Ai=v[c[c[If]+4]](If);v[c[c[Ai]+14]](Ai,G,h)}WW(M,Lt(E)+1,E+90);xi(G,M);if(f&1){var qg=a,Yg=v[c[c[qg]+4]](qg);v[c[c[Yg]+14]](Yg,G,h)}if(g&1){L=h;F=6.0868353843688965;nv(I,E,F,L);vw(R,G,I);var Zg=I,Vf=R;c[Zg]=c[Vf];k[Zg]=k[Vf];c[Zg+1]=c[Vf+1];k[Zg+1]=k[Vf+1];c[Zg+2]=c[Vf+2];k[Zg+2]=k[Vf+2];c[Zg+3]=c[Vf+3];k[Zg+3]=k[Vf+3];O=0;for(var rg=Z,sg=P,om=a,mn=om,yl=a,tg=yl,$e=I,af=Z;;){F=6.283185005187988*(O|0)/32;nv(Z,E,F,L);vw(P,G,Z);c[rg]=c[sg];k[rg]=k[sg];c[rg+1]=c[sg+1];k[rg+1]=k[sg+1];c[rg+2]=c[sg+2];k[rg+2]=k[sg+2];c[rg+3]=c[sg+3];k[rg+3]=k[sg+3];var Wf=v[c[c[mn]+4]](om),Xf=c[c[Wf]+2];k[da]=0;k[V]=0;k[ba]=0;H(S,da,V,ba);v[Xf](Wf,I,Z,S);if(0==(O%4|0)){var ug=v[c[c[tg]+4]](yl),vg=c[c[ug]+2],rh=G+12;k[Y]=0;k[la]=0;k[ka]=0;H($,Y,la,ka);v[vg](ug,rh,Z,$)}c[$e]=c[af];k[$e]=k[af];c[$e+1]=c[af+1];k[$e+1]=k[af+1];c[$e+2]=c[af+2];k[$e+2]=k[af+2];c[$e+3]=c[af+3];k[$e+3]=k[af+3];var nn=O+1;O=nn;if(32<=(nn|0)){break}}ja=Ru(E);ea=Tt(E);var on=E;0Ub){var dmb=a,emb=v[c[c[dmb]+4]](dmb),wub=c[c[emb]+15];k[nd]=0;k[Ic]=0;k[tc]=0;H(Uc,nd,Ic,tc);v[wub](emb,Za,Gc,ob,h,h,-3.1415927410125732,3.1415927410125732,Uc,0,10)}else{if(Cc=(y2(e)|0)){break a}}}}while(0)}ckb.X=1;function dkb(a){var d,e;d=0;var f=a+52,g=(d|0)<(y2(f)|0);a:do{if(g){for(var h=a+52;;){if(e=c[z2(h,d)],Ki(e)&&fo(e),d+=1,(d|0)>=(y2(f)|0)){break a}}}}while(0)}dkb.X=1;function ku(a,d){var e=b;b+=16;if(0!=(Un(d)|0)&&!Pi(d)){iZ(d+17,d+33,d+37,k[a+61]*oi(d),e);var f=Un(d);v[c[c[f]+3]](f,e)}b=e}ku.X=1;function Njb(a,d){$1=a;$2=d;ekb()}Njb.X=1;function Pjb(a,d){var e=b;b+=15;var f,g,h=e+1,i=e+5,j=e+6,l=e+7,m=e+8,n=e+12,p=e+13,r=e+14;jY(e,D.ff);f=0;var s=a+52,t=(f|0)<(y2(s)|0);a:do{if(t){for(var w=a+52;;){var x=c[z2(w,f)];g=x;if(0!=(x|0)){if(Tm(g,d),x=g,Vm(g)){var y=g;Pi(x)?Li(y,2):(1==(ki(y)|0)&&Li(g,3),2==(ki(g)|0)&&(k[i]=0,k[j]=0,k[l]=0,H(h,i,j,l),Dn(g,h),k[n]=0,k[p]=0,k[r]=0,H(m,n,p,r),co(g,m)))}else{4!=(ki(x)|0)&&Li(g,1)}}f+=1;if((f|0)>=(y2(s)|0)){break a}}}}while(0);kY(e);b=e}Pjb.X=1;function fkb(a,d){var e,f;e=a+57;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3];e=0;var g=a+52,h=(e|0)<(y2(g)|0);a:do{if(h){for(var i=a+52;;){if(f=c[z2(i,e)],Ki(f)&&0==(Zn(f)&1|0)&&wo(f,d),e+=1,(e|0)>=(y2(g)|0)){break a}}}}while(0)}fkb.X=1;function gkb(a,d){var e=d+57;c[a]=c[e];k[a]=k[e];c[a+1]=c[e+1];k[a+1]=k[e+1];c[a+2]=c[e+2];k[a+2]=k[e+2];c[a+3]=c[e+3];k[a+3]=k[e+3]}gkb.X=1;function hkb(a){var d=b;b+=1;var e,f;jY(d,D.le);var g=c[a+64]&1;a:do{if(g){e=0;for(var h=a+1,i=a+1;;){if((e|0)>=(Tl(h)|0)){break a}f=p2(c[$X(i,e)]);0!=(f|0)&&ku(a,f);e+=1}}else{e=0;h=a+52;for(i=a+52;;){if((e|0)>=(y2(h)|0)){break a}f=c[z2(i,e)];Ki(f)&&ku(a,f);e+=1}}}while(0);kY(d);b=d}hkb.X=1;function ikb(a,d,e,f){var g=b;b+=1;var h,i;Njb(a,d);jY(g,D.De);h=0;0!=(e|0)?(i=a+61,k[i]+=d,k[a+61]>=f&&(h=k[a+61]/f&-1,d=a+61,k[d]-=(h|0)*f)):(f=d,k[a+61]=d,e=j2(d)?h=0:h=1);0!=(v[c[c[a]+4]](a)|0)&&(d=v[c[c[a]+4]](a),c[Wm]=0!=(v[c[c[d]+12]](d)&16|0)&1);var j=0!=(h|0);a:do{if(j){d=(h|0)>(e|0)?e:h;v[c[c[a]+40]](a,f*(d|0));v[c[c[a]+41]](a);i=0;for(var l=a,m=a;;){if((i|0)>=(d|0)){break a}v[c[c[l]+39]](a,f);v[c[c[m]+19]](a);i+=1}}else{v[c[c[a]+19]](a)}}while(0);v[c[c[a]+29]](a);jkb();a=h;$7=1;kY(g);b=g;return a}ikb.X=1;function kkb(a,d){var e=b;b+=1;var f;jY(e,D.Oe);if(0!=(c[a+25]|0)){v[c[a+25]](a,d)}v[c[c[a]+34]](a,d);f=a+7;k[f]=d;c[f+1]=0;c[f+5]=v[c[c[a]+4]](a);v[c[c[a]+10]](a);if(c[a+7+4]&1){v[c[c[a]+36]](a,d)}v[c[c[a]+37]](a);k[a+27+3]=d;v[c[c[a]+38]](a,a+27);v[c[c[a]+35]](a,d);t2(a,d);Pjb(a,d);if(0!=(c[a+24]|0)){v[c[a+24]](a,d)}kY(e);b=e}kkb.X=1;function t2(a,d){var e=b;b+=1;var f;jY(e,D.Xe);f=0;for(var g=a+65,h=a+65;(f|0)<(x2(g)|0);){var i=c[bkb(h,f)];v[c[c[i]+2]](i,a,d);f+=1}kY(e);b=e}t2.X=1;function lkb(a,d,e,f){ZRa(a,d,e,f)}lkb.X=1;function mkb(a,d){var e;e=p2(d);if(0!=(e|0)){v[c[c[a]+22]](a,e)}else{cY(a,d)}}mkb.X=1;function nkb(a,d){var e=b;b+=1;c[e]=d;okb(a+52,e);cY(a,c[e]);b=e}nkb.X=1;function okb(a,d){var e;e=pkb(a,d);(e|0)<(y2(a)|0)&&(qkb(a,e,y2(a)-1),rkb(a))}okb.X=1;function skb(a,d){var e=b;b+=1;var f;c[e]=d;!Pi(c[e])&&0==(Zn(c[e])&1|0)&&wo(c[e],a+57);0!=(Xn(c[e])|0)&&(ai(c[e])?Li(c[e],2):tkb(a+52,e),f=((ai(c[e])?1:Ti(c[e]))^1)&1,v[c[c[a]+8]](a,c[e],f&1?1:2,f&1?-1:-3));b=e}skb.X=1;function tkb(a,d){(y2(a)|0)==(ukb(a)|0)&&vkb(a,wkb(a,y2(a)));var e=c[a+3]+c[a+1];0!=(e|0)&&(c[e]=c[d]);e=a+1;c[e]+=1}tkb.X=1;function xkb(a,d,e,f){var g=b;b+=1;c[g]=d;!Pi(c[g])&&0==(Zn(c[g])&1|0)&&wo(c[g],a+57);0!=(Xn(c[g])|0)&&(ai(c[g])?Li(c[g],2):tkb(a+52,g),v[c[c[a]+8]](a,c[g],e,f));b=g}xkb.X=1;function ykb(a,d,e){var f=b;b+=1;c[f]=d;d=e&1;A2(a+47,f);d&1&&(En(Io(c[f]),c[f]),En(Ho(c[f]),c[f]));b=f}ykb.X=1;function A2(a,d){(Qo(a)|0)==(zkb(a)|0)&&Akb(a,Bkb(a,Qo(a)));var e=c[a+3]+c[a+1];0!=(e|0)&&(c[e]=c[d]);e=a+1;c[e]+=1}A2.X=1;function Ckb(a,d){var e=b;b+=1;c[e]=d;Dkb(a+47,e);ao(Io(c[e]),c[e]);ao(Ho(c[e]),c[e]);b=e}Ckb.X=1;function Dkb(a,d){var e;e=Ekb(a,d);(e|0)<(Qo(a)|0)&&(Fkb(a,e,Qo(a)-1),Gkb(a))}Dkb.X=1;function Hkb(a,d){var e=b;b+=1;c[e]=d;Ikb(a+65,e);b=e}Hkb.X=1;function Ikb(a,d){(x2(a)|0)==(Jkb(a)|0)&&Kkb(a,Lkb(a,x2(a)));var e=c[a+3]+c[a+1];0!=(e|0)&&(c[e]=c[d]);e=a+1;c[e]+=1}Ikb.X=1;function Mkb(a,d){var e=b;b+=1;c[e]=d;Nkb(a+65,e);b=e}Mkb.X=1;function Nkb(a,d){var e;e=Okb(a,d);(e|0)<(x2(a)|0)&&(Pkb(a,e,x2(a)-1),Qkb(a))}Nkb.X=1;function Rkb(a,d){v[c[c[a]+15]](a,d)}Rkb.X=1;function Skb(a,d){v[c[c[a]+16]](a,d)}Skb.X=1;function Tkb(a,d){v[c[c[a]+15]](a,d)}Tkb.X=1;function Ukb(a,d){v[c[c[a]+16]](a,d)}Ukb.X=1;function Vkb(a,d,e){var f,g;f=Qo(a);var h=(d|0)<(f|0);a:do{if(h){if(g=d,(g|0)<(f|0)){for(;;){if(g+=1,(g|0)>=(f|0)){break a}}}}else{if((d|0)>(Qo(a)|0)&&Akb(a,d),g=f,(g|0)<(d|0)){for(var i=a+3;;){var j=c[i]+g;0!=(j|0)&&(c[j]=c[e]);g+=1;if((g|0)>=(d|0)){break a}}}}}while(0);c[a+1]=d}Vkb.X=1;function Wkb(a){1<(Qo(a)|0)&&B2(a,0,Qo(a)-1)}Wkb.X=1;function Xkb(a){var d=b;b+=3;var e=d+1,f=d+2;if(0<(Qo(a+18)+AX(a+13)|0)){var g=c[a+2];v[c[c[g]+3]](g,$X(a+8,0),Tl(a+8),ZX(a+13,0),AX(a+13),vo(a+18,0),Qo(a+18),c[a+1],c[a+5],c[a+6],c[a+7])}c[d]=0;sfb(a+8,0,d);c[e]=0;PY(a+13,0,e);c[f]=0;Vkb(a+18,0,f);b=d}Xkb.X=1;function Ykb(a,d){var e=b;b+=30;var f=e+1,g=e+6,h=e+7;jY(e,D.lf);v2(f);var i=Qo(a+47);c[g]=0;Vkb(f,i,g);g=0;for(i=a+47;(g|0)<(v[c[c[a]+25]](a)|0);){c[vo(f,g)]=c[vo(i,g)],g+=1}Wkb(f);g=0!=(v[c[c[a]+25]](a)|0)?vo(f,0):0;Zkb(h,d,c[a+45],g,Qo(f),c[a+22],c[a+20],c[a+6]);g=c[a+45];i=Sk(a);v[c[c[g]+2]](g,Sl(a),v[c[c[i]+9]](i));yfb(c[a+46],Sk(a),a,h);Xkb(h);g=c[a+45];v[c[c[g]+4]](g,d,c[a+22],c[a+20]);C2(h);w2(f);kY(e);b=e}Ykb.X=1;function $kb(a){return c[a+45]}$kb.X=1;function alb(){}alb.X=1;function blb(a,d){var e=b;b+=1;var f,g;jY(e,D.$d);f=0;var h=a+52,i=(f|0)<(y2(h)|0);a:do{if(i){for(var j=a+52;;){if(g=c[z2(j,f)],Pi(g)||(Fn(g,d),Ro(g,d),Bn(g,d,g+17)),f+=1,(f|0)>=(y2(h)|0)){break a}}}}while(0);kY(e);b=e}blb.X=1;function clb(a,d){c[a+63]&1&&yh(c[a+45]);c[a+63]=0;c[a+45]=d}clb.X=1;function dlb(a){return Qo(a+47)}dlb.X=1;function elb(a,d){return c[vo(a+47,d)]}elb.X=1;function flb(a){var d=b;b+=1;var e,f,g,h;jY(d,D.qf);e=Kt(a);v[c[c[e]+2]](e,a,Sk(a));f=Qo(a+47);e=0;var i=(e|0)<(f|0);a:do{if(i){for(var j=a+47;;){if(g=c[vo(j,e)],h=Io(g),g=Ho(g),0!=(h|0)&&!Pi(h)&&0!=(g|0)&&!Pi(g)&&(Ki(h)||Ki(g))&&jfb(Kt(a)+1,Uh(h),Uh(g)),e+=1,(e|0)>=(f|0)){break a}}}}while(0);e=Kt(a);v[c[c[e]+3]](e,a);kY(d);b=d}flb.X=1;function glb(a,d){var e=b;b+=76;var f,g=e+1,h,i,j,l=e+17,m=e+21,n=e+22,p=e+47,r=e+60,s;jY(e,D.xf);h=0;for(var t=a+52,w=a+52,x=n+22,y=n+2,z=n+3,A=n+1,C=n+1,B=n+20,K=n+16,E=n+12;(h|0)<(y2(t)|0);){i=c[z2(w,h)];Zh(i,1);var G=Ki(i);a:do{if(G&&!Pi(i)){Bn(i,d,g);N(l,g+12,i+1+12);j=Um(l);var M=c[a+7+4]&1;do{if(M&&0!=gi(i)&&gi(i)k[A]?(Zh(i,k[C]),Bn(i,d*oi(i),g),Zh(i,0),kn(i,g),$appliedImpulse=0,$appliedImpulse=Ejb(i,c[B],K,E,a+27,0),s=4,f=19):f=18:f=18;18==f&&(s=0);f=0==(s|0)?21:22}else{f=21}21==f&&(s=0);kY(m);if(4==(s|0)){break a}}}while(0);kn(i,g)}}while(0);h+=1}kY(e);b=e}glb.X=1;function ilb(a,d){var e=b;b+=134;var f=e+1,g,h,i,j=e+17,l=e+21,m=e+22,n=e+47,p=e+60,r,s=e+76,t=e+81,w=e+121,x=e+125,y=e+126,z=e+130;jY(e,D.Od);g=0;for(var A=a+52,C=a+52,B=m+2,K=m+3,E=m+1,G=m+20,M=m+23,L=m+20,F=m+1,I=m+16,R=m+12;(g|0)<(y2(A)|0);){h=c[z2(C,g)];Zh(h,1);if(Ki(h)&&!Pi(h)&&(Bn(h,d,f),N(j,f+12,h+1+12),i=Um(j),0!=gi(h)&&gi(h)k[E]&&(i=ci(h),r=ci(c[G]),O=c[M],i=v[c[c[O]+13]](O,i,r),0!=(i|0)&&0!=(c[i+2]|0)&&(XX(s),i=c[i+2],v[c[c[i]+4]](i,s),0!=(AX(s)|0)&&(AI(t,h,c[L]),fI(t,c[ZX(s,0)]),N(w,p+12,h+1+12),LC(w,F),i=Um(w),k[x]=0,c[y]=c[I],k[y]=k[I],c[y+1]=c[I+1],k[y+1]=k[I+1],c[y+2]=c[I+2],k[y+2]=k[I+2],c[y+3]=c[I+3],k[y+3]=k[I+3],1.1920928955078125e-7=(e|0)){break a}}}}while(0)}klb.X=1;function Lkb(a,d){$1=a;return 0!=(d|0)?d<<1:1}Lkb.X=1;function llb(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}llb.X=1;function mlb(a,d){return c[a+3]+d}mlb.X=1;function Fkb(a,d,e){var f;f=c[c[a+3]+d];c[c[a+3]+d]=c[c[a+3]+e];c[c[a+3]+e]=f}Fkb.X=1;function nlb(a){return c[a+7]}nlb.X=1;function olb(a){return c[a+8]}olb.X=1;function zkb(a){return c[a+2]}zkb.X=1;function plb(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=f+d;0!=(i|0)&&(c[i]=c[c[h]+d]);d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}plb.X=1;function Pkb(a,d,e){var f;f=c[c[a+3]+d];c[c[a+3]+d]=c[c[a+3]+e];c[c[a+3]+e]=f}Pkb.X=1;function Qkb(a){a+=1;c[a]-=1}Qkb.X=1;function Jkb(a){return c[a+2]}Jkb.X=1;function qlb(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=f+d;0!=(i|0)&&(c[i]=c[c[h]+d]);d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}qlb.X=1;function rlb(a,d){return c[mlb(a+47,d)]}rlb.X=1;function slb(a,d){var e,f,g,h;e=0;var i=a+1,j=(e|0)<(Tl(i)|0);a:do{if(j){for(var l=a+1;;){f=c[$X(l,e)];if(0!=(ji(f)&2|0)){g=f;g=v[c[c[g]+4]](g);h=d;g=v[c[c[h]+4]](h,g,1);h=f;h=v[c[c[h]+5]](h,c[g+2],d);var m=d;v[c[c[m]+5]](m,g,h,1497645650,f)}e+=1;if((e|0)>=(Tl(i)|0)){break a}}}}while(0);e=0;i=a+47;j=(e|0)<(Qo(i)|0);a:do{if(j){for(l=a+47;;){if(g=f=c[vo(l,e)],g=v[c[c[g]+9]](g),h=d,g=v[c[c[h]+4]](h,g,1),h=f,h=v[c[c[h]+10]](h,c[g+2],d),m=d,v[c[c[m]+5]](m,g,h,1397641027,f),e+=1,(e|0)>=(Qo(i)|0)){break a}}}}while(0)}slb.X=1;function tlb(a,d){v[c[c[d]+8]](d);slb(a,d);TSa(a,d);v[c[c[d]+9]](d)}tlb.X=1;function B2(a,d,e){var f=b;b+=1;var g,h,i;g=d;h=e;i=c[c[a+3]+((e+d|0)/2&-1)];for(var j=a+3,l=a+3;;){if(E2(f,c[c[j]+g],i)){g+=1}else{var m=E2(f,i,c[c[l]+h]);a:do{if(m){for(;;){if(h-=1,!E2(f,i,c[c[l]+h])){break a}}}}while(0);(g|0)<=(h|0)&&(Fkb(a,g,h),g+=1,h-=1);if(!((g|0)<=(h|0))){break}}}(d|0)<(h|0)&&B2(a,d,h);(g|0)<(e|0)&&B2(a,g,e);b=f}B2.X=1;function E2(a,d,e){$1=a;return(F2(d)|0)<(F2(e)|0)}E2.X=1;function F2(a){var d;d=nlb(a);a=olb(a);return 0<=(Uh(d)|0)?Uh(d):Uh(a)}F2.X=1;function Akb(a,d){var e;(zkb(a)|0)<(d|0)&&(e=ulb(a,d),plb(a,0,Qo(a),e),klb(a,0,Qo(a)),vlb(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}Akb.X=1;function ulb(a,d){return 0!=(d|0)?wlb(a,d,0):0}ulb.X=1;function vlb(a){0!=(c[a+3]|0)&&(c[a+4]&1&&xlb(a,c[a+3]),c[a+3]=0)}vlb.X=1;function xlb(a,d){$1=a;yh(d)}xlb.X=1;function wlb(a,d,e){$1=a;$3=e;return Ue(d<<2,16)}wlb.X=1;function Okb(a,d){var e,f;e=x2(a);f=0;for(var g=a+3;(f|0)<(x2(a)|0);){var h=f;if((c[c[g]+f]|0)==(c[d]|0)){e=h;break}f=h+1}return e}Okb.X=1;function Kkb(a,d){var e;(Jkb(a)|0)<(d|0)&&(e=ylb(a,d),qlb(a,0,x2(a),e),llb(a,0,x2(a)),zlb(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}Kkb.X=1;function ylb(a,d){return 0!=(d|0)?Alb(a,d,0):0}ylb.X=1;function zlb(a){0!=(c[a+3]|0)&&(c[a+4]&1&&Blb(a,c[a+3]),c[a+3]=0)}zlb.X=1;function Blb(a,d){$1=a;yh(d)}Blb.X=1;function Bkb(a,d){$1=a;return 0!=(d|0)?d<<1:1}Bkb.X=1;function wkb(a,d){$1=a;return 0!=(d|0)?d<<1:1}wkb.X=1;function Clb(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}Clb.X=1;function Gkb(a){a+=1;c[a]-=1}Gkb.X=1;function ukb(a){return c[a+2]}ukb.X=1;function Dlb(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=f+d;0!=(i|0)&&(c[i]=c[c[h]+d]);d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}Dlb.X=1;function qkb(a,d,e){var f;f=c[c[a+3]+d];c[c[a+3]+d]=c[c[a+3]+e];c[c[a+3]+e]=f}qkb.X=1;function rkb(a){a+=1;c[a]-=1}rkb.X=1;function Yjb(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}Yjb.X=1;function Xjb(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}Xjb.X=1;function v2(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}v2.X=1;function Alb(a,d,e){$1=a;$3=e;return Ue(d<<2,16)}Alb.X=1;function Ekb(a,d){var e,f;e=Qo(a);f=0;for(var g=a+3;(f|0)<(Qo(a)|0);){var h=f;if((c[c[g]+f]|0)==(c[d]|0)){e=h;break}f=h+1}return e}Ekb.X=1;function vkb(a,d){var e;(ukb(a)|0)<(d|0)&&(e=Elb(a,d),Dlb(a,0,y2(a),e),Clb(a,0,y2(a)),Flb(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}vkb.X=1;function Elb(a,d){return 0!=(d|0)?Glb(a,d,0):0}Elb.X=1;function Flb(a){0!=(c[a+3]|0)&&(c[a+4]&1&&Hlb(a,c[a+3]),c[a+3]=0)}Flb.X=1;function Hlb(a,d){$1=a;yh(d)}Hlb.X=1;function Glb(a,d,e){$1=a;$3=e;return Ue(d<<2,16)}Glb.X=1;function pkb(a,d){var e,f;e=y2(a);f=0;for(var g=a+3;(f|0)<(y2(a)|0);){var h=f;if((c[c[g]+f]|0)==(c[d]|0)){e=h;break}f=h+1}return e}pkb.X=1;function Zjb(a){llb(a,0,x2(a));zlb(a);Yjb(a)}Zjb.X=1;function $jb(a){Clb(a,0,y2(a));Flb(a);Xjb(a)}$jb.X=1;function w2(a){klb(a,0,Qo(a));vlb(a);v2(a)}w2.X=1;function hlb(a,d,e,f,g,h){fV(a,e,f);c[a]=Ilb+2;c[a+21]=d;k[a+22]=0;c[a+23]=g;c[a+24]=h}hlb.X=1;function Jlb(a){xe(a)}Jlb.X=1;function Klb(a,d){var e;(c[d]|0)==(c[a+21]|0)?e=0:oLa(a,d)?(e=c[a+24],e=v[c[c[e]+7]](e,c[a+21],c[d])?1:0):e=0;return e}Klb.X=1;function Llb(a,d,e){var f=b;b+=23;var g=f+4,h=f+8,i=f+12,j=f+16,l=f+17,m=f+18,n=f+19,e=e&1;(c[d]|0)==(c[a+21]|0)?a=1:li(c[d])?(N(h,a+8,a+4),c[f]=c[h],k[f]=k[h],c[f+1]=c[h+1],k[f+1]=k[h+1],c[f+2]=c[h+2],k[f+2]=k[h+2],c[f+3]=c[h+3],k[f+3]=k[h+3],k[j]=0,k[l]=0,k[m]=0,H(i,j,l,m),c[g]=c[i],k[g]=k[i],c[g+1]=c[i+1],k[g+1]=k[i+1],c[g+2]=c[i+2],k[g+2]=k[i+2],c[g+3]=c[i+3],k[g+3]=k[i+3],N(n,f,g),a=J(d+2,n)>=-k[a+22]?1:DW(a,d,e&1)):a=1;b=f;return a}Llb.X=1;function Mlb(a){C2(a);xe(a)}Mlb.X=1;function C2(a){c[a]=G2+2;w2(a+18);TX(a+13);TW(a+8)}C2.X=1;function Nlb(){}Nlb.X=1;function Olb(){}Olb.X=1;function Plb(){return 0}Plb.X=1;function Qlb(){return 0}Qlb.X=1;function Rlb(){return 0}Rlb.X=1;function Slb(){}Slb.X=1;function Tlb(){}Tlb.X=1;function Ulb(){}Ulb.X=1;function Vlb(){}Vlb.X=1;function Wlb(a){c[a]=Xlb+2}Wlb.X=1;function cx(a,d){var e;k[a]>k[a+1]?e=c[a+14]=0:dk[a+1]?(c[e]=2,k[a+12]=d-k[a+1],e=2):e=c[e]=0);return e}cx.X=1;function Ylb(a,d,e,f,g,h){var i,j,l,m=0>(h|0);do{if(m){0!=(c[a+4]+g|0)&&(i=c[a+2],v[c[c[i]+3]](i,d,e,f,g,c[a+3],c[a+4],c[a+1],c[a+5],c[a+6],c[a+7]))}else{l=j=i=0;for(var n=a+4,p=a+3;(l|0)<(c[n]|0);){var r=l;if((F2(c[c[p]+l])|0)==(h|0)){i=c[a+3]+r;break}l=r+1}n=a+4;p=(l|0)<(c[n]|0);a:do{if(p){for(r=a+3;;){if((F2(c[c[r]+l])|0)==(h|0)&&(j+=1),l+=1,(l|0)>=(c[n]|0)){break a}}}}while(0);if(1>=(c[c[a+1]+17]|0)){0!=(j+g|0)&&(l=c[a+2],v[c[c[l]+3]](l,d,e,f,g,i,j,c[a+1],c[a+5],c[a+6],c[a+7]))}else{l=0;n=(l|0)<(e|0);a:do{if(n){for(p=a+8;;){if(OW(p,d+l),l+=1,(l|0)>=(e|0)){break a}}}}while(0);l=0;n=(l|0)<(g|0);a:do{if(n){for(p=a+13;;){if(CX(p,f+l),l+=1,(l|0)>=(g|0)){break a}}}}while(0);l=0;n=(l|0)<(j|0);p=a+18;a:do{if(n){for(;;){if(A2(p,i+l),l+=1,(l|0)>=(j|0)){break a}}}}while(0);(AX(a+13)+Qo(p)|0)>(c[c[a+1]+17]|0)&&Xkb(a)}}}while(0)}Ylb.X=1;function Zkb(a,d,e,f,g,h,i,j){Wlb(a);c[a]=G2+2;c[a+1]=d;c[a+2]=e;c[a+3]=f;c[a+4]=g;c[a+5]=h;c[a+6]=i;c[a+7]=j;JW(a+8);XX(a+13);v2(a+18)}Zkb.X=1;function Zlb(){}Zlb.X=1;function $lb(a){xe(a)}$lb.X=1;function amb(a){aY(a)}amb.X=1;function bmb(a){aY(a);xe(a)}bmb.X=1;function AO(a,d,e,f,g,h){h&=1;g2(a,6,d,e);c[a]=H2+2;sQ(a+11,f);sQ(a+27,g);GM(a+169);d=a+218;ax(d);d+=16;ax(d);ax(d+16);c[a+326]=h&1;c[a+327]=1;c[a+328]=0;c[a+329]=0;$O(a)}AO.X=1;function $O(a){aP(a,c[a+7]+1,c[a+8]+1)}$O.X=1;function yO(a,d,e,f){var g=b;b+=16;f&=1;I2();g2(a,6,J2,d);c[a]=H2+2;sQ(a+27,e);GM(a+169);e=a+218;ax(e);e+=16;ax(e);ax(e+16);c[a+326]=f&1;c[a+327]=1;c[a+328]=0;c[a+329]=0;WW(g,d+1,a+27);xi(a+11,g);$O(a);b=g}yO.X=1;function K2(a,d){return k[((d|0)%3<<2)+a+((d|0)/3&-1)]}K2.X=1;function cmb(a,d){var e;e=K2(a,2);1>e?-1j&-1.1920928955078125e-7j?l:f:f<-j?-l:f,l=k[a+15],f=l+k[r],k[a+15]=0xde0b6b000000000f?0:f,k[r]=k[a+15]-l,Q(s,e,r),k[w]=0,k[x]=0,k[y]=0,H(t,w,x,y),Bo(z,g+64,e),ho(g,t,z,k[r]),k[C]=0,k[B]=0,k[K]=0,H(A,C,B,K),Bo(E,h+64,e),ho(h,A,E,-k[r]),a=k[r]));b=i;return a}xw.X=1;function CM(a,d,e){var f,g;f=k[a+d];g=k[a+4+d];f>g?(c[a+(d+46)]=0,a=k[a+38+d]=0):eg?(c[f]=1,k[a+38+d]=e-g,a=1):(c[f]=0,a=k[a+38+d]=0));return a}CM.X=1;function QM(a,d,e,f,g,h,i,j,l,m){var n=b;b+=55;var p,r,s=n+4;p=n+8;var t=n+12,w=n+16,x;x=n+20;var y=n+24,z=n+25,A=n+29,C=n+33,B=n+37,K=n+41,E=n+42,G=n+46,M=n+50,L=n+51;N(n,m,f+1+12);N(s,m,h+1+12);vn(f,n,p);vn(h,s,t);N(w,p,t);m=J(l,w);N(x,g,i);x=-J(x,l);g=-0xde0b6b000000000;i=0xde0b6b000000000;p=k[a+j];t=k[a+4+j];pt?(x-=t,g=0,p=8):xi?0:ee?1:1.1920928955078125e-7>d)&1,e+=d,k[a+319]=0=e||(ae&&(e=VW(eP(a-e)),a=VW(eP(a-d))>3*(n+3),0==(p&1|0)&&(k[(n<<4)+w+7]=k[c[d+8]]),0==(p&2|0)&&(k[(n<<4)+t+9]=k[c[d+8]]),0==(p&4|0)&&(k[(n<<4)+s+8]=k[d+1]),e+=cP(a,CO(a,n),f,g,h,i,j,l,d,e,m,1,0)),n=p=n+1,3<=(p|0));){}b=m;return e}M2.X=1;function L2(a,d,e,f,g,h,i,j,l){var m=b;b+=20;var n,p=m+16,r,s;ax(m);n=0;for(var t=a+169,w=m+10,x=a+215,y=m+14,z=a+211,A=m+13,C=a+207,B=m+12,K=a+182,E=m+5,G=a+196,M=m+11,L=a+173,F=m+1,I=a+181,R=m+6,O=a+169,Z=m+4,P=a+203,S=m+3,da=a+199,V=m+2,ba=a+267,$=a+328,Y=a+184,la=m+7,ka=a+192,ja=m+9,ea=a+188,ca=m+8,W=a+327,U=a+218,X=a+218;!(VL(t,n)&&(k[w]=0,c[y]=c[x+n],k[A]=k[z+n],k[B]=k[C+n],k[E]=k[K],c[M]=c[G+n]&1,k[F]=k[L+n],k[R]=k[I],k[m]=k[O+n],k[Z]=0,k[S]=k[P+n],k[V]=k[da+n],Jb(p,ba,n),r=c[$]>>3*n,k[la]=0!=(r&1|0)?k[Y+n]:k[c[d+8]],k[ja]=0!=(r&2|0)?k[ka+n]:k[c[d+8]],k[ca]=0!=(r&4|0)?k[ea+n]:k[d+1],c[W]&1?(r=(n+2|0)%3,s=1,0!=(c[((n+1)%3<<4)+U+14]|0)&&0!=(c[(r<<4)+X+14]|0)&&(s=0),e+=cP(a,m,f,g,h,i,j,l,d,e,p,0,s)):e+=cP(a,m,f,g,h,i,j,l,d,e,p,0,0)),n=r=n+1,3<=(r|0));){}b=m;return e}L2.X=1;function wO(a,d,e,f,g,h,i,j){var l;aP(a,e,f);for(l=0;;){pP(a,l);var m=l+1;l=m;if(3<=(m|0)){break}}c[a+327]&1?L2(a,d,M2(a,d,0,e,f,g,h,i,j),e,f,g,h,i,j):M2(a,d,L2(a,d,0,e,f,g,h,i,j),e,f,g,h,i,j)}wO.X=1;function cP(a,d,e,f,g,h,i,j,l,m,n,p,r){var s=b;b+=103;var t,w,x,y,z=s+4,A=s+8,C=s+12,B=s+16,K=s+20,E=s+24,G=s+25,M=s+29,L=s+33,F=s+37,I=s+38,R=s+42,O=s+43,Z=s+47,P=s+51,S=s+55,da=s+59,V=s+63,ba=s+67,$=s+71,Y=s+75,la=s+79,ka=s+83,ja=s+87,ea=s+91,ca=s+95,W=s+99,m=c[l+6]*m;x=c[d+11]&1;y=c[d+14];0!=(x|0)?t=4:0!=(y|0)?t=4:(w=0,t=50);if(4==t){t=0!=(p|0)?c[l+3]:c[l+2];w=0!=(p|0)?c[l+5]:0;k[t+m]=k[n];k[t+(m+1)]=k[n+1];k[t+(m+2)]=k[n+2];0!=(p|0)?(k[w+m]=-k[n],k[w+(m+1)]=-k[n+1],k[w+(m+2)]=-k[n+2],t=0!=(p|0)?20:11):t=11;a:do{if(11==t){if(c[a+327]&1){N(B,a+283+12,f+12);w=C;var U=B;c[w]=c[U];k[w]=k[U];c[w+1]=c[U+1];k[w+1]=k[U+1];c[w+2]=c[U+2];k[w+2]=k[U+2];c[w+3]=c[U+3];k[w+3]=k[U+3];k[E]=J(C,n);Q(K,n,E);N(G,C,K);N(M,a+267+12,e+12);w=A;U=M;c[w]=c[U];k[w]=k[U];c[w+1]=c[U+1];k[w+1]=k[U+1];c[w+2]=c[U+2];k[w+2]=k[U+2];c[w+3]=c[U+3];k[w+3]=k[U+3];k[F]=J(A,n);Q(L,n,F);N(I,A,L);k[R]=k[d+13]-k[d+12];Q(P,n,R);wn(Z,L,P);N(O,Z,K);Q(da,O,a+319);wn(S,I,da);w=A;U=S;c[w]=c[U];k[w]=k[U];c[w+1]=c[U+1];k[w+1]=k[U+1];c[w+2]=c[U+2];k[w+2]=k[U+2];c[w+3]=c[U+3];k[w+3]=k[U+3];Q(ba,O,a+320);N(V,G,ba);w=C;U=V;c[w]=c[U];k[w]=k[U];c[w+1]=c[U+1];k[w+1]=k[U+1];c[w+2]=c[U+2];k[w+2]=k[U+2];c[w+3]=c[U+3];k[w+3]=k[U+3];qn($,A,n);w=s;U=$;c[w]=c[U];k[w]=k[U];c[w+1]=c[U+1];k[w+1]=k[U+1];c[w+2]=c[U+2];k[w+2]=k[U+2];c[w+3]=c[U+3];k[w+3]=k[U+3];qn(Y,C,n);w=z;U=Y;c[w]=c[U];k[w]=k[U];c[w+1]=c[U+1];k[w+1]=k[U+1];c[w+2]=c[U+2];k[w+2]=k[U+2];c[w+3]=c[U+3];k[w+3]=k[U+3];c[a+321]&1&&0==(r|0)&&(LC(s,a+319),LC(z,a+320));for(w=0;!(k[c[l+3]+w+m]=k[s+w],w=U=w+1,3<=(U|0));){}for(w=0;;){if(k[c[l+5]+w+m]=-k[z+w],w=U=w+1,3<=(U|0)){break a}}}else{N(ka,a+283+12,e+12),qn(ja,ka,n),w=la,U=ja,c[w]=c[U],k[w]=k[U],c[w+1]=c[U+1],k[w+1]=k[U+1],c[w+2]=c[U+2],k[w+2]=k[U+2],c[w+3]=c[U+3],k[w+3]=k[U+3],k[c[l+3]+m]=k[la],k[c[l+3]+m+1]=k[la+1],k[c[l+3]+m+2]=k[la+2],N(ea,a+283+12,f+12),w=ka,U=ea,c[w]=c[U],k[w]=k[U],c[w+1]=c[U+1],k[w+1]=k[U+1],c[w+2]=c[U+2],k[w+2]=k[U+2],c[w+3]=c[U+3],k[w+3]=k[U+3],qn(W,ka,n),WP(ca,W),w=la,U=ca,c[w]=c[U],k[w]=k[U],c[w+1]=c[U+1],k[w+1]=k[U+1],c[w+2]=c[U+2],k[w+2]=k[U+2],c[w+3]=c[U+3],k[w+3]=k[U+3],k[c[l+5]+m]=k[la],k[c[l+5]+m+1]=k[la+1],k[c[l+5]+m+2]=k[la+2]}}}while(0);0!=(y|0)&&k[d]==k[d+1]&&(x=0);k[c[l+7]+m]=0;0!=(x|0)?(k[c[l+8]+m]=k[d+7],0!=(y|0)?t=29:(e=k[d+2],a=N2(a,k[d+13],k[d],k[d+1],0!=(p|0)?e:-e,k[l]*k[d+8]),e=c[l+7]+m,k[e]+=a*k[d+2],k[c[l+9]+m]=-k[d+3],k[c[l+10]+m]=k[d+3],t=28)):t=28;28==t&&(t=0!=(y|0)?29:48);29==t&&(a=k[l]*k[d+8],0!=(p|0)?(e=c[l+7]+m,k[e]+=-a*k[d+12]):(e=c[l+7]+m,k[e]+=a*k[d+12]),k[c[l+8]+m]=k[d+9],k[d]==k[d+1]?(k[c[l+9]+m]=-3.4028234663852886e+38,k[c[l+10]+m]=3.4028234663852886e+38):(a=c[l+9]+m,1==(y|0)?(k[a]=0,k[c[l+10]+m]=3.4028234663852886e+38):(k[a]=-3.4028234663852886e+38,k[c[l+10]+m]=0),0h&&(d=-k[d+10]*g,d>k[c[l+7]+m]&&(k[c[l+7]+m]=d)):0(d|0)?c[a+(d+196)]=e&1:c[(d-3<<4)+a+229]=e&1}Bmb.X=1;function Cmb(a,d,e){k[a+(d+1313)]=e}Cmb.X=1;function Dmb(a,d,e){k[a+(d+1319)]=e}Dmb.X=1;function Emb(a){var d=b;b+=14;var e,f,g=d+1,h=d+5,i=d+9,j=d+13;e=Zm(c[a+7]);f=Zm(c[a+8]);k[d]=0==f?1:e/(e+f);e=a+283+12;Q(h,a+267+12,d);k[j]=1-k[d];Q(i,e,j);wn(g,h,i);a+=322;c[a]=c[g];k[a]=k[g];c[a+1]=c[g+1];k[a+1]=k[g+1];c[a+2]=c[g+2];k[a+2]=k[g+2];c[a+3]=c[g+3];k[a+3]=k[g+3];b=d}Emb.X=1;function Fmb(a,d,e,f){0<=(f|0)&3>(f|0)?2==(d|0)?(k[a+188+f]=e,a+=328,c[a]|=4<<3*f):4==(d|0)?(k[a+192+f]=e,a+=328,c[a]|=2<<3*f):3==(d|0)&&(k[a+184+f]=e,a+=328,c[a]|=1<<3*f):3<=(f|0)&6>(f|0)&&(2==(d|0)?(k[(f-3<<4)+a+226]=e,a+=328,c[a]|=4<<3*f):4==(d|0)?(k[(f-3<<4)+a+227]=e,a+=328,c[a]|=2<<3*f):3==(d|0)&&(k[(f-3<<4)+a+225]=e,a+=328,c[a]|=1<<3*f))}Fmb.X=1;function Gmb(a,d,e){var f;f=0;0<=(e|0)&3>(e|0)?2==(d|0)?f=k[a+188+e]:4==(d|0)?f=k[a+192+e]:3==(d|0)&&(f=k[a+184+e]):3<=(e|0)&6>(e|0)&&(2==(d|0)?f=k[(e-3<<4)+a+226]:4==(d|0)?f=k[(e-3<<4)+a+227]:3==(d|0)&&(f=k[(e-3<<4)+a+225]));return f}Gmb.X=1;function oP(a,d,e){var f=b;b+=92;var g=f+4,h=f+8,i=f+12,j=f+28,l=f+44,m=f+60,n=f+76;uC(f,d);uC(g,e);qn(h,g,f);eQ(i);Db(i,h,g,f,h+1,g+1,f+1,h+2,g+2,f+2);uw(l,c[a+7]+1);WW(j,l,i);xi(a+11,j);uw(n,c[a+8]+1);WW(m,n,i);xi(a+27,m);$O(a);b=f}oP.X=1;function Hmb(){}Hmb.X=1;function Imb(a){xe(a)}Imb.X=1;function Jmb(a,d,e){o2(a,d,e);mQ(a+11,d+14);mQ(a+27,d+30);for(var e=0,f=a+218,g=a+218,h=a+169,i=a+173;;){k[d+(e+58)]=k[(e<<4)+f];k[d+(e+54)]=k[(e<<4)+g+1];k[d+(e+50)]=k[h+e];k[d+(e+46)]=k[i+e];var j=e+1,e=j;if(3<=(j|0)){break}}c[d+62]=c[a+326]&1?1:0;c[d+63]=c[a+327]&1?1:0;return D.r}Jmb.X=1;function Kmb(a,d,e,f,g,h){AO(a,d,e,f,g,h&1);c[a]=Lmb+2;c[a+4]=9;d=0;e=a+1301;f=a+1307;g=a+1313;for(a+=1319;!(c[e+d]=0,k[f+d]=0,k[g+d]=0,k[a+d]=1,d=h=d+1,6<=(h|0));){}}Kmb.X=1;function Mmb(a){var d;$O(a);d=0;for(var e=a+315,f=a+1307;;){k[f+d]=k[e+d];var g=d+1;d=g;if(3<=(g|0)){break}}d=0;e=a+299;for(a+=1307;!(k[a+(d+3)]=k[e+d],d=f=d+1,3<=(f|0));){}}Mmb.X=1;function Nmb(a,d){var e=b;b+=4;var f,g;N(e,c[a+8]+76,c[a+7]+76);f=0;for(var h=a+1301,i=a+315,j=a+1307,l=a+1313,m=a+1319,n=a+199,p=a+203;!(c[h+f]&1&&(g=(k[i+f]-k[j+f])*k[l+f],k[n+f]=k[d]*k[m+f]/(c[d+12]|0)*g,g=sc(g)/k[d],k[p+f]=g),f=g=f+1,3<=(g|0));){}f=0;h=a+1301;i=a+299;j=a+1307;l=a+1313;m=a+1319;n=a+218;for(p=a+218;!(c[h+(f+3)]&1&&(g=-(k[i+f]-k[j+(f+3)])*k[l+(f+3)],k[(f<<4)+n+2]=k[d]*k[m+(f+3)]/(c[d+12]|0)*g,g=sc(g),k[(f<<4)+p+3]=g/k[d]),f=g=f+1,3<=(g|0));){}b=e}Nmb.X=1;function Omb(){return 340}Omb.X=1;function Pmb(a,d){Nmb(a,d);zmb(a,d)}Pmb.X=1;function Qmb(a,d,e){var f=b;b+=92;var g=f+4,h=f+8,i=f+12,j=f+28,l=f+44,m=f+60,n=f+76;uC(f,d);uC(g,e);qn(h,g,f);eQ(i);Db(i,h,g,f,h+1,g+1,f+1,h+2,g+2,f+2);uw(l,c[a+7]+1);WW(j,l,i);xi(a+11,j);uw(n,c[a+8]+1);WW(m,n,i);xi(a+27,m);$O(a);b=f}Qmb.X=1;function Rmb(){}Rmb.X=1;function Smb(a){xe(a)}Smb.X=1;function Tmb(a,d,e){Jmb(a,d,e);for(var e=0,f=a+1307,g=a+1319,h=a+1301,a=a+1313;;){k[d+(e+70)]=k[f+e];k[d+(e+82)]=k[g+e];c[d+(e+64)]=c[h+e]&1?1:0;k[d+(e+76)]=k[a+e];var i=e+1,e=i;if(6<=(i|0)){break}}return D.r}Tmb.X=1;function Umb(a,d,e,f,g,h){var i=b;b+=120;var j=i+4,l=i+8,m=i+12,n=i+28,p=i+44,r=i+60,s=i+76,t=i+92,w=i+96,x=i+97,y=i+98,z=i+99,A=i+103,C=i+104,B=i+105,K=i+106,E=i+110,G=i+111,M=i+112,L=i+113,F=i+117,I=i+118,R=i+119;Pz();Pz();Kmb(a,d,e,Rz,Rz,1);c[a]=Vmb+2;var O=a+1325;c[O]=c[f];k[O]=k[f];c[O+1]=c[f+1];k[O+1]=k[f+1];c[O+2]=c[f+2];k[O+2]=k[f+2];c[O+3]=c[f+3];k[O+3]=k[f+3];O=a+1329;c[O]=c[g];k[O]=k[g];c[O+1]=c[g+1];k[O+1]=k[g+1];c[O+2]=c[g+2];k[O+2]=k[g+2];c[O+3]=c[g+3];k[O+3]=k[g+3];O=a+1333;c[O]=c[h];k[O]=k[h];c[O+1]=c[h+1];k[O+1]=k[h+1];c[O+2]=c[h+2];k[O+2]=k[h+2];c[O+3]=c[h+3];k[O+3]=k[h+3];g=IB(g);c[i]=c[g];k[i]=k[g];c[i+1]=c[g+1];k[i+1]=k[g+1];c[i+2]=c[g+2];k[i+2]=k[g+2];c[i+3]=c[g+3];k[i+3]=k[g+3];h=IB(h);c[j]=c[h];k[j]=k[h];c[j+1]=c[h+1];k[j+1]=k[h+1];c[j+2]=c[h+2];k[j+2]=k[h+2];c[j+3]=c[h+3];k[j+3]=k[h+3];qn(l,i,j);eQ(m);Db(m,j,l,i,j+1,l+1,i+1,j+2,l+2,i+2);pQ(m,f);uw(p,d+1);WW(n,p,m);xi(a+11,n);uw(s,e+1);WW(r,s,m);xi(a+27,r);k[w]=0;k[x]=0;k[y]=-1;H(t,w,x,y);XO(a,t);k[A]=0;k[C]=0;k[B]=1;H(z,A,C,B);mP(a,z);k[E]=1;k[G]=0;k[M]=-.7853981852531433;H(K,E,G,M);jP(a,K);k[F]=-1;k[I]=0;k[R]=.7853981852531433;H(L,F,I,R);nP(a,L);Bmb(a,2,1);Cmb(a,2,39.47842025756836);Dmb(a,2,.009999999776482582);Mmb(a);b=i}Umb.X=1;function Wmb(){}Wmb.X=1;function Xmb(a){xe(a)}Xmb.X=1;function Fv(a,d,e,f,g,h,i,j){var l=b;b+=48;var m=l+4,n=l+8,p=l+12,r=l+16,s=l+20,t=l+24,w=l+28,x=l+32,y=l+36,z=l+40,A=l+44,j=j&1;g2(a,4,d,e);c[a]=O2+2;sj(a+171);c[a+183]=0;c[a+184]=0;c[a+185]=0;c[a+186]=1;c[a+187]=j&1;c[a+189]=0;e=a+137+12;c[e]=c[f];k[e]=k[f];c[e+1]=c[f+1];k[e+1]=k[f+1];c[e+2]=c[f+2];k[e+2]=k[f+2];c[e+3]=c[f+3];k[e+3]=k[f+3];Jb(l,d+1,0);f=J(h,l);.9999998807907104<=f?(Jb(p,d+1,2),WP(n,p),c[l]=c[n],k[l]=k[n],c[l+1]=c[n+1],k[l+1]=k[n+1],c[l+2]=c[n+2],k[l+2]=k[n+2],c[l+3]=c[n+3],k[l+3]=k[n+3],Jb(r,d+1,1),c[m]=c[r],k[m]=k[r],c[m+1]=c[r+1],k[m+1]=k[r+1],c[m+2]=c[r+2],k[m+2]=k[r+2],c[m+3]=c[r+3],k[m+3]=k[r+3]):-.9999998807907104>=f?(Jb(s,d+1,2),c[l]=c[s],k[l]=k[s],c[l+1]=c[s+1],k[l+1]=k[s+1],c[l+2]=c[s+2],k[l+2]=k[s+2],c[l+3]=c[s+3],k[l+3]=k[s+3],Jb(t,d+1,1),c[m]=c[t],k[m]=k[t],c[m+1]=c[t+1],k[m+1]=k[t+1],c[m+2]=c[t+2],k[m+2]=k[t+2],c[m+3]=c[t+3],k[m+3]=k[t+3]):(qn(w,h,l),c[m]=c[w],k[m]=k[w],c[m+1]=c[w+1],k[m+1]=k[w+1],c[m+2]=c[w+2],k[m+2]=k[w+2],c[m+3]=c[w+3],k[m+3]=k[w+3],qn(x,m,h),c[l]=c[x],k[l]=k[x],c[l+1]=c[x+1],k[l+1]=k[x+1],c[l+2]=c[x+2],k[l+2]=k[x+2],c[l+3]=c[x+3],k[l+3]=k[x+3]);Db(a+137,l,m,h,l+1,m+1,h+1,l+2,m+2,h+2);sw(y,h,i);tw(z,y,l);qn(A,i,z);d=a+153+12;c[d]=c[g];k[d]=k[g];c[d+1]=c[g+1];k[d+1]=k[g+1];c[d+2]=c[g+2];k[d+2]=k[g+2];c[d+3]=c[g+3];k[d+3]=k[g+3];Db(a+153,z,A,i,z+1,A+1,i+1,z+2,A+2,i+2);k[a+182]=c[a+187]&1?-1:1;b=l}Fv.X=1;function Cv(a,d,e,f,g){var h=b;b+=28;var i=h+4,j=h+8,l=h+12,m=h+16,n=h+20,p=h+24,g=g&1;i2(a,4,d);c[a]=O2+2;sj(a+171);c[a+183]=0;c[a+184]=0;c[a+185]=0;c[a+186]=1;c[a+187]=g&1;c[a+189]=0;rw(f,h,i);g=a+137+12;c[g]=c[e];k[g]=k[e];c[g+1]=c[e+1];k[g+1]=k[e+1];c[g+2]=c[e+2];k[g+2]=k[e+2];c[g+3]=c[e+3];k[g+3]=k[e+3];Db(a+137,h,i,f,h+1,i+1,f+1,h+2,i+2,f+2);Bo(j,d+1,f);sw(l,f,j);tw(m,l,h);qn(n,j,m);f=a+153+12;vw(p,d+1,e);c[f]=c[p];k[f]=k[p];c[f+1]=c[p+1];k[f+1]=k[p+1];c[f+2]=c[p+2];k[f+2]=k[p+2];c[f+3]=c[p+3];k[f+3]=k[p+3];Db(a+153,m,n,j,m+1,n+1,j+1,m+2,n+2,j+2);k[a+182]=c[a+187]&1?-1:1;b=h}Cv.X=1;function Ymb(a,d,e,f,g,h){h&=1;g2(a,4,d,e);c[a]=O2+2;sQ(a+137,f);sQ(a+153,g);sj(a+171);c[a+183]=0;c[a+184]=0;c[a+185]=0;c[a+186]=1;c[a+187]=h&1;c[a+189]=0;k[a+182]=c[a+187]&1?-1:1}Ymb.X=1;function Zmb(a,d,e,f){var g=b;b+=4;f&=1;i2(a,4,d);c[a]=O2+2;sQ(a+137,e);sQ(a+153,e);sj(a+171);c[a+183]=0;c[a+184]=0;c[a+185]=0;c[a+186]=1;c[a+187]=f&1;c[a+189]=0;d=a+153+12;vw(g,c[a+7]+1,a+137+12);c[d]=c[g];k[d]=k[g];c[d+1]=c[g+1];k[d+1]=k[g+1];c[d+2]=c[g+2];k[d+2]=k[g+2];c[d+3]=c[g+3];k[d+3]=k[g+3];k[a+182]=c[a+187]&1?-1:1;b=g}Zmb.X=1;function aw(a,d){c[d]=c[a+185]&1?0:6;c[d+1]=0}aw.X=1;function $mb(a){var d=b;b+=171;var e=d+4,f=d+8,g=d+12,h=d+24,i=d+28,j=d+29,l=d+30,m,n=d+31,p=d+43,r=d+55,s=d+59,t=d+63,w=d+67,x=d+71,y=d+75,z=d+79,A=d+83,C=d+87,B=d+91,K=d+103,E=d+115,G=d+127,M=d+139,L=d+151,F=d+163,I=d+167;if(c[a+185]&1){k[a+9]=0;k[a+188]=0;var R=c[a+183]&1;a:do{if(!R){vw(d,c[a+7]+1,a+137+12);vw(e,c[a+8]+1,a+153+12);N(f,e,d);m=g;if(1.1920928955078125e-7p?1:1.1920928955078125e-7>r)&1;p+=r;k[t]=0h&&(h=-F*g,h>k[c[d+7]+x]&&(k[c[d+7]+x]=h)):0h&&(h=-z*g,h>k[c[d+7]+m]&&(k[c[d+7]+m]=h)):0k[n+2]&&(d=-d);gnb(a,d,e);b=f}ow.X=1;function gnb(a,d,e){var f=b;b+=1;k[f]=d;vj(a+171,f);d=tv(a,c[a+7]+1,c[a+8]+1);k[a+169]=(k[f]-d)/e;b=f}gnb.X=1;function hnb(){}hnb.X=1;function inb(a){xe(a)}inb.X=1;function jnb(a,d,e){o2(a,d,e);gQ(a+137,d+14);gQ(a+153,d+30);c[d+47]=c[a+183]&1;c[d+48]=c[a+184]&1;k[d+50]=k[a+170];k[d+49]=k[a+169];c[d+46]=c[a+187]&1;k[d+51]=Dj(a+171);k[d+52]=Bj(a+171);k[d+53]=Yi(a+171);k[d+54]=Wi(a+171);k[d+55]=$i(a+171);return D.mf}jnb.X=1;function knb(a,d,e,f){var g=b;b+=5;var h=g+4;$1=d;k[h]=2*J(e,f);Q(g,f,h);N(a,e,g);b=g}knb.X=1;function lnb(a,d,e,f){var g=b;b+=1;$1=d;k[g]=J(e,f);Q(a,f,g);b=g}lnb.X=1;function mnb(a,d,e,f){var g=b;b+=4;lnb(g,d,e,f);N(a,e,g);b=g}mnb.X=1;function nnb(a,d,e,f,g){var h=b;b+=3;var i=h+1,j=h+2;onb(a);c[a]=R2+2;XX(a+32);c[a+47]=g;k[a+14]=.019999999552965164;k[h]=0;k[i]=0;k[j]=0;pe(a+15,h,i,j);c[a+44]=1;c[a+2]=d;k[a+13]=f;k[a+12]=0;c[a+3]=e;c[a+45]=1;k[a+46]=0;k[a+4]=0;k[a+5]=0;k[a+11]=29.399999618530273;k[a+6]=55;k[a+7]=10;c[a+42]=0;c[a+43]=0;pnb(a,.7853981573134661);b=h}nnb.X=1;function onb(a){qnb(a);c[a]=rnb+2}onb.X=1;function pnb(a,d){k[a+9]=d;k[a+10]=td(d)}pnb.X=1;function snb(a){tnb(a);xe(a)}snb.X=1;function tnb(a){c[a]=R2+2;TX(a+32)}tnb.X=1;function unb(a,d){var e=b;b+=36;var f,g,h,i,j,l=e+1,m,n,p=e+2,r=e+3,s=e+7,t=e+11,w=e+15,x=e+19,y=e+20;f=0;g=Sk(d);v[c[c[g]+8]](g,Q2(c[a+2]),d+7,Sk(d));g=a+23;h=c[a+2]+1+12;c[g]=c[h];k[g]=k[h];c[g+1]=c[h+1];k[g+1]=k[h+1];c[g+2]=c[h+2];k[g+2]=k[h+2];c[g+3]=c[h+3];k[g+3]=k[h+3];h=g=0;var z=a+2,A=Q2(c[z]),A=(h|0)<(v[c[c[A]+9]](A)|0);a:do{if(A){for(var C=a+32,B=a+2,K=a+32,E=a+32,G=a+32,M=a+2,L=a+38,F=r,I=a+23;;){c[e]=0;PY(C,0,e);i=Q2(c[B]);i=lX(v[c[c[i]+7]](i),h);0!=(c[i+2]|0)&&(i=c[i+2],v[c[c[i]+4]](i,K));i=0;var R=(i|0)<(AX(E)|0);b:do{if(R){for(;;){j=c[ZX(G,i)];k[l]=($j(j)|0)==(c[M]|0)?-1:1;m=0;var O=(m|0)<(Xj(j)|0);c:do{if(O){for(;;){if(n=j+69*m+1,k[p]=aU(n),0>k[p]&&(k[p]=(Xj(j)|0)){break c}}}}while(0);i+=1;if((i|0)>=(AX(E)|0)){break b}}}}while(0);h+=1;i=Q2(c[z]);if((h|0)>=(v[c[c[i]+9]](i)|0)){break a}}}}while(0);sQ(y,c[a+2]+1);pQ(y,a+23);Ji(c[a+2],y);b=e;return f&1}unb.X=1;function vnb(){}vnb.X=1;function wnb(a,d){var e=b;b+=81;var f=e+16,g=e+32,h=e+36,i=e+40,j=e+41,l=e+45,m=e+49,n=e+50,p=e+77,r=c[a+47];S2();k[i]=k[a+13]+(0>24&&0!=(Hb(xnb)|0)&&(k[a]=1,k[d]=0,k[e]=0,H(T2,a,d,e),k[f]=0,k[g]=1,k[h]=0,H(T2+4,f,g,h),k[i]=0,k[j]=0,k[l]=1,H(T2+8,i,j,l));b=a;return T2}S2.X=1;function ynb(){}ynb.X=1;function znb(a,d,e,f){var g=b;b+=29;var h=g+4,i=g+8,j=g+12,l=g+16,m=g+20,n=g+24,p=g+28;$3=e;N(g,a+28,a+23);e=JB(g);1.1920928955078125e-7=(g|0)){break}pQ(f,e);pQ(h,s);N(l,t,w);U2(m,c[x],l,0);c[y]=c[ci(P2(a))+1];c[z]=c[ci(P2(a))+2];g=c[A];g=v[c[c[g]+11]](g);var ba=c[C];v[c[c[ba]+10]](ba,g+k[B]);c[K]&1?$_(c[E],c[G],f,h,m,k[d+7+9]):Rl(d,c[V],f,h,m,k[d+7+9]);ba=c[M];v[c[c[ba]+10]](ba,g);i-=k[L];cz(m)?(N(n,F,I),$hitDistance=JB(n),znb(a,R,0,1),N(p,O,Z),g=Um(p),1.1920928955078125e-7=J(p,P)?(r=3,g=21):g=20):(r=3,g=21)):(c[S]=c[da],k[S]=k[da],c[S+1]=c[da+1],k[S+1]=k[da+1],c[S+2]=c[da+2],k[S+2]=k[da+2],c[S+3]=c[da+3],k[S+3]=k[da+3],g=20);20==g&&(r=0);if(3==(r|0)){break}}b=f}Anb.X=1;function Bnb(a,d,e){var f=b;b+=64;var g=f+16,h=f+32,i=f+36,j=f+37,e=(0>k[a+4]?-k[a+4]:0)*e;if(0JB(a)&&(k[e]=0,k[f]=0,k[g]=0,pe(a,e,f,g));b=e}Dnb.X=1;function Enb(a,d,e){var f=b;b+=4;c[a+45]=0;var g=a+15;c[g]=c[d];k[g]=k[d];c[g+1]=c[d+1];k[g+1]=k[d+1];c[g+2]=c[d+2];k[g+2]=k[d+2];c[g+3]=c[d+3];k[g+3]=k[d+3];Dnb(f,a+15);d=a+19;c[d]=c[f];k[d]=k[f];c[d+1]=c[f+1];k[d+1]=k[f+1];c[d+2]=c[f+2];k[d+2]=k[f+2];c[d+3]=c[f+3];k[d+3]=k[f+3];k[a+46]=e;b=f}Enb.X=1;function Fnb(a,d){var e=b;b+=16;eQ(e);pQ(e,d);Ji(c[a+2],e);b=e}Fnb.X=1;function Gnb(a,d){var e;e=0;c[a+37]=0;for(var f=a+37;unb(a,d)&&!(e+=1,c[f]=1,4<(e|0));){}e=a+23;f=c[a+2]+1+12;c[e]=c[f];k[e]=k[f];c[e+1]=c[f+1];k[e+1]=k[f+1];c[e+2]=c[f+2];k[e+2]=k[f+2];c[e+3]=c[f+3];k[e+3]=k[f+3];e=a+28;f=a+23;c[e]=c[f];k[e]=k[f];c[e+1]=c[f+1];k[e+1]=k[f+1];c[e+2]=c[f+2];k[e+2]=k[f+2];c[e+3]=c[f+3];k[e+3]=k[f+3]}Gnb.X=1;function Hnb(){}Hnb.X=1;function qnb(a){c[a]=Inb+2}qnb.X=1;function Jnb(a){return 0==k[a+4]?0==k[a+5]:0}Jnb.X=1;function $U(a,d){c[a+85]&1?(c[d]=0,c[d+1]=0):(c[d]=3,c[d+1]=3)}$U.X=1;function Knb(a,d,e){var f=b;b+=21;var g=f+16,h=f+17;if(4==(c[a+45]&1?4:0>=k[a+46]?17:4)){c[a+42]=v[c[c[a]+12]](a)&1;var i=a+4;k[i]-=k[a+11]*e;0k[a+7]&&(k[a+4]=k[a+7]);0>k[a+4]&&sc(k[a+4])>sc(k[a+6])&&(k[a+4]=-sc(k[a+6]));k[a+5]=k[a+4]*e;xi(f,c[a+2]+1);wnb(a,d);c[a+45]&1?Anb(a,d,a+15):(k[g]=e>24&&0!=(Hb(fob)|0)&&(k[d]=0,k[e]=0,k[f]=0,H(a,d,e,f),Sn(X2,0,0,0,a),Y2(14,X2));k[h]=0;k[i]=0;k[j]=0;H(g,h,i,j);fn(X2,0,g);b=a;return X2}eob.X=1;function gob(a){hob(a)}gob.X=1;function hF(a,d,e,f){qnb(a);c[a]=Z2+2;KW(a+1);KW(a+6);LW(a+11);LW(a+16);c[a+25]=f;k[a+26]=0;iob(a+33);c[a+29]=e;c[a+30]=0;c[a+31]=2;c[a+32]=1;aob(a)}hF.X=1;function job(a){kob(a);xe(a)}job.X=1;function hoa(a,d,e,f,g,h,i,j){var l=b;b+=92;var m=l+21;c[l]=c[d];k[l]=k[d];c[l+1]=c[d+1];k[l+1]=k[d+1];c[l+2]=c[d+2];k[l+2]=k[d+2];c[l+3]=c[d+3];k[l+3]=k[d+3];d=l+4;c[d]=c[e];k[d]=k[e];c[d+1]=c[e+1];k[d+1]=k[e+1];c[d+2]=c[e+2];k[d+2]=k[e+2];c[d+3]=c[e+3];k[d+3]=k[e+3];e=l+8;c[e]=c[f];k[e]=k[f];c[e+1]=c[f+1];k[e+1]=k[f+1];c[e+2]=c[f+2];k[e+2]=k[f+2];c[e+3]=c[f+3];k[e+3]=k[f+3];k[l+12]=g;k[l+14]=h;k[l+15]=k[i];k[l+16]=k[i+1];k[l+17]=k[i+2];k[l+18]=k[i+4];c[l+20]=j&1;k[l+13]=k[i+3];k[l+19]=k[i+5];sB(m,l);lob(a+33,m);f=W2(a+33,AE(a)-1);KE(a,f,0);yE(a,AE(a)-1,0);b=l;return f}hoa.X=1;function lob(a,d){(BE(a)|0)==(mob(a)|0)&&nob(a,oob(a,BE(a)));var e=c[a+3]+71*c[a+1];0!=(e|0)&&pob(e,d);e=a+1;c[e]+=1}lob.X=1;function KE(a,d,e){var f=b;b+=28;var g=f+16,h=f+20,i=f+24,e=e&1;c[d+21]=0;sQ(f,HE(a));e&1&&0!=(Un(TD(a))|0)&&(a=Un(TD(a)),v[c[c[a]+2]](a,f));vw(g,f,d+39);a=d+9;c[a]=c[g];k[a]=k[g];c[a+1]=c[g+1];k[a+1]=k[g+1];c[a+2]=c[g+2];k[a+2]=k[g+2];c[a+3]=c[g+3];k[a+3]=k[g+3];Bo(h,f,d+43);g=d+13;c[g]=c[h];k[g]=k[h];c[g+1]=c[h+1];k[g+1]=k[h+1];c[g+2]=c[h+2];k[g+2]=k[h+2];c[g+3]=c[h+3];k[g+3]=k[h+3];Bo(i,f,d+47);d+=17;c[d]=c[i];k[d]=k[i];c[d+1]=c[i+1];k[d+1]=k[i+1];c[d+2]=c[i+2];k[d+2]=k[i+2];c[d+3]=c[i+3];k[d+3]=k[i+3];b=f}KE.X=1;function kob(a){c[a]=Z2+2;qob(a+33);SW(a+16);SW(a+11);UW(a+6);UW(a+1)}kob.X=1;function rob(a,d){return c[a+3]+71*d}rob.X=1;function sob(a){return c[a+29]}sob.X=1;function yE(a,d,e){var f=b;b+=86;var g=f+4,h=f+8,i=f+9,j=f+13,l=f+25,m=f+29,n=f+30,p=f+42,r=f+54,s=f+66,t=f+78,w=f+82,d=W2(a+33,d);KE(a,d,e&1);WP(f,d+13);a=d+17;qn(g,f,a);e=IB(g);c[g]=c[e];k[g]=k[e];c[g+1]=c[e+1];k[g+1]=k[e+1];c[g+2]=c[e+2];k[g+2]=k[e+2];c[g+3]=c[e+3];k[g+3]=k[e+3];k[h]=k[d+58];IV(i,f,h);zb(j,i);k[m]=-k[d+59];IV(l,a,m);zb(n,l);Db(p,a,g,f,a+1,g+1,f+1,a+2,g+2,f+2);ww(s,j,n);ww(r,s,p);Wb(d+23,r);Q(w,d+13,d+8);wn(t,d+9,w);pQ(d+23,t);b=f}yE.X=1;function vE(a,d){return rob(a+33,d)+23}vE.X=1;function ME(a){var d=b;b+=4;var e,f;e=0;var g=a+33,h=(e|0)<(BE(g)|0);a:do{if(h){for(var i=a+33,j=d;;){f=W2(i,e);k[f+8]=pB(f);k[f+68]=0;WP(d,f+13);var l=f;c[l]=c[j];k[l]=k[j];c[l+1]=c[j+1];k[l+1]=k[j+1];c[l+2]=c[j+2];k[l+2]=k[j+2];c[l+3]=c[j+3];k[l+3]=k[j+3];k[f+67]=1;e+=1;if((e|0)>=(BE(g)|0)){break a}}}}while(0);b=d}ME.X=1;function HE(a){return sob(a)+1}HE.X=1;function CE(a,d){var e=b;b+=34;var f,g=e+1,h,i=e+5,j,l=e+9,m=e+18,n=e+22,p=e+26;j=e+30;KE(a,d,0);f=-1;k[e]=pB(d)+k[d+53];Q(g,d+13,e);h=d+9;wn(i,h,g);g=d+4;c[g]=c[i];k[g]=k[i];c[g+1]=c[i+1];k[g+1]=k[i+1];c[g+2]=c[i+2];k[g+2]=k[i+2];c[g+3]=c[i+3];k[g+3]=k[i+3];wG(l);i=c[a+25];h=v[c[c[i]+2]](i,h,d+4,l);c[d+22]=0;0!=(h|0)?(j=k[l+8],f=k[e]*k[l+8],h=l+4,c[d]=c[h],k[d]=k[h],c[d+1]=c[h+1],k[d+1]=k[h+1],c[d+2]=c[h+2],k[d+2]=k[h+2],c[d+3]=c[h+3],k[d+3]=k[h+3],c[d+21]=1,eob(),c[d+22]=X2,k[d+8]=j*k[e]-k[d+53],j=pB(d)-.009999999776482582*k[d+52],h=pB(d)+.009999999776482582*k[d+52],k[d+8]h&&(k[d+8]=h),j=d+4,c[j]=c[l],k[j]=k[l],c[j+1]=c[l+1],k[j+1]=k[l+1],c[j+2]=c[l+2],k[j+2]=k[l+2],c[j+3]=c[l+3],k[j+3]=k[l+3],l=J(d,d+13),N(n,d+4,TD(a)+1+12),no(p,TD(a),n),c[m]=c[p],k[m]=k[p],c[m+1]=c[p+1],k[m+1]=k[p+1],c[m+2]=c[p+2],k[m+2]=k[p+2],c[m+3]=c[p+3],k[m+3]=k[p+3],-.10000000149011612<=l?(k[d+68]=0,k[d+67]=10):(n=-1/l,k[d+68]=J(d,m)*n,k[d+67]=n)):(k[d+8]=pB(d),k[d+68]=0,WP(j,d+13),c[d]=c[j],k[d]=k[j],c[d+1]=c[j+1],k[d+1]=k[j+1],c[d+2]=c[j+2],k[d+2]=k[j+2],c[d+3]=c[j+3],k[d+3]=k[j+3],k[d+67]=1);b=e;return f}CE.X=1;function tob(a,d){var e=b;b+=35;var f,g=e+1,h=e+5,i=e+6,j=e+10,l=e+14,m,n=e+18,p=e+22,r,s=e+26,t=e+30,w=e+31;k[e]=d;f=0;var x=(f|0)<(AE(a)|0);a:do{if(x){for(;;){if(yE(a,f,0),f+=1,(f|0)>=(AE(a)|0)){break a}}}}while(0);k[a+28]=3.5999999046325684*JB(TD(a)+76);f=HE(a);H(g,0+f+c[a+32],4+f+c[a+32],8+f+c[a+32]);0>J(g,TD(a)+76)&&(g=a+28,k[g]*=-1);g=0;f=a+33;x=(g|0)<(BE(f)|0);a:do{if(x){for(m=a+33;;){if($depth=CE(a,W2(m,g)),g+=1,(g|0)>=(BE(f)|0)){break a}}}}while(0);uE(a,k[e]);g=0;x=a+33;m=(g|0)<(BE(x)|0);a:do{if(m){for(r=a+33;;){if(f=W2(r,g),k[h]=k[f+69],k[h]>k[f+62]&&(k[h]=k[f+62]),Q(j,f,h),Q(i,j,e),N(l,f+4,TD(a)+1+12),yn(TD(a),i,l),g+=1,(g|0)>=(BE(x)|0)){break a}}}}while(0);v[c[c[a]+5]](a,k[e]);g=0;h=a+33;i=(g|0)<(BE(h)|0);a:do{if(i){j=a+33;l=a+32;f=a+32;for(x=a+32;;){if(m=W2(j,g),N(n,m+9,TD(a)+1+12),no(p,TD(a),n),c[m+21]&1&&(r=HE(a),H(s,0+r+c[l],4+r+c[f],8+r+c[x]),k[t]=J(s,m),Q(w,m,t),JC(s,w),k[m+60]=J(s,p)*k[e]/k[m+53]),r=m+59,k[r]+=k[m+60],m+=60,k[m]*=.9900000095367432,g+=1,(g|0)>=(BE(h)|0)){break a}}}}while(0);b=e}tob.X=1;function uE(a,d){var e,f,g,h,i,j;$2=d;e=1/Zm(c[a+29]);f=0;var l=(f|0)<(AE(a)|0);a:do{if(l){for(var m=a+33;;){if(h=g=W2(m,f),c[g+21]&1?(h=pB(h),h=k[g+54]*(h-k[g+8])*k[g+67],i=k[g+68],j=g,j=0>i?k[j+55]:k[j+56],h-=j*i,k[g+69]=h*e,0>k[g+69]&&(k[g+69]=0)):k[h+69]=0,f+=1,(f|0)>=(AE(a)|0)){break a}}}}while(0)}uE.X=1;function kF(a,d,e){k[IE(a,e)+58]=d}kF.X=1;function IE(a,d){return W2(a+33,d)}IE.X=1;function iF(a,d){return k[uob(a,d)+58]}iF.X=1;function uob(a,d){return rob(a+33,d)}uob.X=1;function DE(a,d,e){k[IE(a,e)+63]=d}DE.X=1;function jF(a,d,e){k[IE(a,e)+64]=d}jF.X=1;function vob(a){var d=b;b+=23;var e,f=d+1,g=d+5,h=d+9,i=d+10,j=d+14,l=d+18,m=d+22;k[d]=0;e=a+2;N(f,e,c[a]+1+12);N(g,e,c[a+1]+1+12);k[h]=k[a+11];no(i,c[a],f);no(j,c[a+1],g);N(l,i,j);k[d]=-J(a+6,l)*k[a+10];BB(d,h);k[m]=-k[h];RB(d,m);a=k[d];b=d;return a}vob.X=1;function wob(a,d){var e=b;b+=76;var f,g=e+4,h=e+8,i=e+9,j,l,m,n=e+10,p=e+22,r,s=e+26,t=e+27,w=e+31,x,y,z,A,C,B=e+35,K,E,G,M,L,F,I,R=e+47,O=e+51,Z,P=e+55,S=e+59,da=e+63,V=e+67,ba=e+71,$=e+72;f=AE(a);var Y=0!=(f|0);a:do{if(Y){xZ(a+1,f,e);xZ(a+6,f,g);k[h]=0;z0(a+11,f,h);k[i]=0;z0(a+16,f,i);j=0;var la=(j|0)<(AE(a)|0);b:do{if(la){for(var ka=a+33,ja=a+16,ea=a+11;;){if($groundObject=c[W2(ka,j)+22],k[y0(ja,j)]=0,k[y0(ea,j)]=0,j+=1,(j|0)>=(AE(a)|0)){break b}}}}while(0);l=0;var ca=(l|0)<(AE(a)|0);b:do{if(ca){for(var W=a+33,U=a+6,X=a+30,ma=a+30,ga=a+30,ha=p,ta=a+6,ra=a+6,ua=a+6,za=a+6,Za=a+1,ib=a+6,Ca=w,Sa=a+1,mb=a+29,Oa=a+6,Pa=a+16,fc=a+16;;){m=W2(W,l);var jb=c[m+22];if(0!=(jb|0)){EW(n,vE(a,l));var La=xg(U,l);H(p,0+n+c[X],4+n+c[ma],8+n+c[ga]);var fb=La;c[fb]=c[ha];k[fb]=k[ha];c[fb+1]=c[ha+1];k[fb+1]=k[ha+1];c[fb+2]=c[ha+2];k[fb+2]=k[ha+2];c[fb+3]=c[ha+3];k[fb+3]=k[ha+3];r=m;k[s]=J(xg(ta,l),r);var Rb=xg(ra,l);Q(t,r,s);JC(Rb,t);var pb=xg(ua,l),Sb=IB(xg(za,l));c[pb]=c[Sb];k[pb]=k[Sb];c[pb+1]=c[Sb+1];k[pb+1]=k[Sb+1];c[pb+2]=c[Sb+2];k[pb+2]=k[Sb+2];c[pb+3]=c[Sb+3];k[pb+3]=k[Sb+3];var ab=xg(Za,l);qn(w,r,xg(ib,l));var Ib=ab;c[Ib]=c[Ca];k[Ib]=k[Ca];c[Ib+1]=c[Ca+1];k[Ib+1]=k[Ca+1];c[Ib+2]=c[Ca+2];k[Ib+2]=k[Ca+2];c[Ib+3]=c[Ca+3];k[Ib+3]=k[Ca+3];IB(xg(Sa,l));Fjb(c[mb],m+4,jb,m+4,0,xg(Oa,l),y0(Pa,l),d);var Fc=y0(fc,l);k[Fc]*=k[xob]}l+=1;if((l|0)>=(AE(a)|0)){break b}}}}while(0);y=x=0;var Ac=(y|0)<(AE(a)|0);b:do{if(Ac){for(var ob=a+33,Gc=a+29,Yc=a+1,Cc=a+11,Ub=a+33,Uc=a+33,nd=a+11,Ic=a+11,tc=a+16,hd=a+33;;){z=W2(ob,y);var Tb=c[z+22];A=Tb;C=0;0!=(Tb|0)&&(0!=k[z+63]?C=k[z+63]*d:(yob(B,c[Gc],A,z+4,xg(Yc,y),0!=k[z+64]?k[z+64]:0),C=vob(B)));k[y0(Cc,y)]=0;k[W2(Ub,y)+70]=1;if(0!=(A|0)&&(k[W2(Uc,y)+70]=1,K=k[z+69]*d*k[z+57],k[y0(nd,y)]=C,E=.5*k[y0(Ic,y)],G=1*k[y0(tc,y)],M=E*E+G*G,M>K*K)){x=1;var Jc=K/ec(M),ub=W2(hd,y)+70;k[ub]*=Jc}y+=1;if((y|0)>=(AE(a)|0)){break b}}}}while(0);var uc=x&1;b:do{if(uc&&(L=0,(L|0)<(AE(a)|0))){for(var Kc=a+16,gb=a+33,gc=a+33,Lc=a+11,Dc=a+33,Eb=a+16;;){if(0!=k[y0(Kc,L)]&&1>k[W2(gb,L)+70]){var Ra=y0(Lc,L);k[Ra]*=k[W2(gc,L)+70];var qb=y0(Eb,L);k[qb]*=k[W2(Dc,L)+70]}L+=1;if((L|0)>=(AE(a)|0)){break b}}}}while(0);F=0;if((F|0)<(AE(a)|0)){for(var Ab=a+33,hc=a+29,Hc=a+11,ic=a+29,db=a+1,bb=a+11,id=a+16,Zc=a+33,vb=a+6,rb=a+16,vc=a+31,Qc=a+29;;){I=W2(Ab,F);N(R,I+4,c[hc]+1+12);if(0!=k[y0(Hc,F)]){var Rc=c[ic];Q(O,xg(db,F),y0(bb,F));yn(Rc,O,R)}0!=k[y0(id,F)]&&(Z=c[W2(Zc,F)+22],N(P,I+4,Z+1+12),Q(S,xg(vb,F),y0(rb,F)),Jb(da,TD(a)+1,c[vc]),k[ba]=J(da,R)*(1-k[I+61]),Q(V,da,ba),JC(R,V),yn(c[Qc],S,R),WP($,S),yn(Z,$,P));F+=1;if((F|0)>=(AE(a)|0)){break a}}}}}while(0);b=e}wob.X=1;function zob(a,d){var e=b;b+=25;var f,g=e+4,h=e+5,i=e+6,j=e+7,l=e+8,m=e+9,n=e+10,p=e+11,r=e+12,s=e+13,t=e+17,w=e+21;f=0;var x=(f|0)<(AE(a)|0);a:do{if(x){for(var y=s;;){k[g]=0;k[h]=1;k[i]=1;H(e,g,h,i);c[IE(a,f)+21]&1?(k[j]=0,k[l]=0,k[m]=1,pe(e,j,l,m)):(k[n]=1,k[p]=0,k[r]=1,pe(e,n,p,r));var z=IE(a,f)+23+12;c[y]=c[z];k[y]=k[z];c[y+1]=c[z+1];k[y+1]=k[z+1];c[y+2]=c[z+2];k[y+2]=k[z+2];c[y+3]=c[z+3];k[y+3]=k[z+3];H(t,0+(IE(a,f)+23)+WD(a),4+(IE(a,f)+23)+WD(a),8+(IE(a,f)+23)+WD(a));var z=d,A=c[c[z]+2];wn(w,s,t);v[A](z,s,w,e);z=d;v[c[c[z]+2]](z,s,IE(a,f)+4,e);f+=1;if((f|0)>=(AE(a)|0)){break a}}}}while(0);b=e}zob.X=1;function Aob(a,d,e,f){var g=b;b+=22;var h;kE(g,d,e);a=c[a+1];v[c[c[a]+7]](a,d,e,g);ND(g)?(d=p2(c[g+2]),0==(d|0)?f=7:li(d)?(h=g+18,c[f]=c[h],k[f]=k[h],c[f+1]=c[h+1],k[f+1]=k[h+1],c[f+2]=c[h+2],k[f+2]=k[h+2],c[f+3]=c[h+3],k[f+3]=k[h+3],h=f+4,e=g+14,c[h]=c[e],k[h]=k[e],c[h+1]=c[e+1],k[h+1]=k[e+1],c[h+2]=c[e+2],k[h+2]=k[e+2],c[h+3]=c[e+3],k[h+3]=k[e+3],IB(f+4),k[f+8]=k[g+1],h=d,$8=1,f=8):f=7):f=7;7==f&&(h=0,$8=1);b=g;return h}Aob.X=1;function oob(a,d){$1=a;return 0!=(d|0)?d<<1:1}oob.X=1;function Bob(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}Bob.X=1;function Cob(a,d,e,f){c[a+30]=d;c[a+31]=e;c[a+32]=f}Cob.X=1;function mob(a){return c[a+2]}mob.X=1;function iob(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}iob.X=1;function Dob(a,d,e){$2=d;v[c[c[a]+4]](a,e)}Dob.X=1;function Eob(){}Eob.X=1;function Fob(a){xe(a)}Fob.X=1;function nob(a,d){var e;(mob(a)|0)<(d|0)&&(e=Gob(a,d),Hob(a,0,BE(a),e),Bob(a,0,BE(a)),Iob(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}nob.X=1;function pob(a,d){for(var e=d,f=a,g=e+23;e=(e|0)){break a}}}}while(0)}Hob.X=1;function Iob(a){0!=(c[a+3]|0)&&(c[a+4]&1&&Kob(a,c[a+3]),c[a+3]=0)}Iob.X=1;function Kob(a,d){$1=a;yh(d)}Kob.X=1;function Job(a,d,e){$1=a;$3=e;return Ue(284*d,16)}Job.X=1;function qob(a){Bob(a,0,BE(a));Iob(a);iob(a)}qob.X=1;function yob(a,d,e,f,g,h){c[a]=d;c[a+1]=e;var i=a+2;c[i]=c[f];k[i]=k[f];c[i+1]=c[f+1];k[i+1]=k[f+1];c[i+2]=c[f+2];k[i+2]=k[f+2];c[i+3]=c[f+3];k[i+3]=k[f+3];i=a+6;c[i]=c[g];k[i]=k[g];c[i+1]=c[g+1];k[i+1]=k[g+1];c[i+2]=c[g+2];k[i+2]=k[g+2];c[i+3]=c[g+3];k[i+3]=k[g+3];k[a+11]=h;d=ln(d,f,g);k[a+10]=1/(d+ln(e,f,g))}yob.X=1;function hob(a){c[a]=a3+2;w2(a+119)}hob.X=1;function Lob(a,d){var e=b;b+=34;var f=e+1,g=e+2,h=e+3,i=e+4,j=e+5,l=e+6,m=e+7,n=e+8,p=e+9,r=e+10,s=e+11,t=e+12,w=e+13,x=e+14,y=e+15,z=e+16,A=e+17,C=e+18,B=e+19,K=e+20,E=e+21,G=e+22,M=e+23,L=e+24,F=e+25,I=e+26,R=e+27,O=e+28,Z=e+29,P=e+30;c[a+58]=2;k[e]=0;k[f]=0;k[g]=0;pe(a+76,e,f,g);k[h]=0;k[i]=0;k[j]=0;pe(a+80,h,i,j);k[l]=1;k[m]=1;k[n]=1;pe(a+134,l,m,n);k[p]=1;k[r]=1;k[s]=1;pe(a+85,p,r,s);k[t]=0;k[w]=0;k[x]=0;pe(a+89,t,w,x);k[y]=0;k[z]=0;k[A]=0;pe(a+93,y,z,A);k[C]=0;k[B]=0;k[K]=0;pe(a+101,C,B,K);k[E]=0;k[G]=0;k[M]=0;pe(a+105,E,G,M);zo(a,k[d+23],k[d+24]);k[a+116]=k[d+27];k[a+117]=k[d+28];c[a+118]=c[d+1];c[a+150]=0;c[a+151]=0;c[a+111]=c[d+29]&1;k[a+112]=k[d+30];k[a+113]=k[d+31];k[a+114]=k[d+32];k[a+115]=k[d+33];0!=(c[a+118]|0)?(f=c[a+118],v[c[c[f]+2]](f,a+1)):xi(a+1,d+2);xi(a+17,a+1);k[L]=0;k[F]=0;k[I]=0;pe(a+33,L,F,I);k[R]=0;k[O]=0;k[Z]=0;pe(a+37,R,O,Z);k[a+56]=k[d+25];k[a+57]=k[d+26];v[c[c[a]+3]](a,c[d+18]);L=c[Mob];c[Mob]=L+1;c[a+125]=L;fn(a,k[d],d+19);yo(a);c[a+124]=0;EC(a+126);EC(a+130);Q(P,a+85,a+84);L=a+138;c[L]=c[P];k[L]=k[P];c[L+1]=c[P+1];k[L+1]=k[P+1];c[L+2]=c[P+2];k[L+2]=k[P+2];c[L+3]=c[P+3];k[L+3]=k[P+3];EC(a+142);EC(a+146);b=e}Lob.X=1;function Qn(a,d){Bi(a);c[a]=a3+2;v2(a+119);Lob(a,d)}Qn.X=1;function Nob(){return 480}Nob.X=1;function Oob(a,d,e){return k[a]k[g]?(uC(h,x),Q(i,h,g),JC(a+76,i)):(k[j]=0,k[l]=0,k[m]=0,pe(x,j,l,m))}g=JB(a+80);gk[n]?(uC(p,h),Q(r,p,n),JC(a+80,r)):(k[s]=0,k[t]=0,k[w]=0,pe(h,s,t,w)))}b=e}Ro.X=1;function fo(a){Pi(a)||tn(a,a+89)}fo.X=1;function kn(a,d){var e=a+17;Pi(a)?xi(e,a+1):xi(e,d);var e=a+33,f=a+76;c[e]=c[f];k[e]=k[f];c[e+1]=c[f+1];k[e+1]=k[f+1];c[e+2]=c[f+2];k[e+2]=k[f+2];c[e+3]=c[f+3];k[e+3]=k[f+3];e=a+37;f=a+80;c[e]=c[f];k[e]=k[f];c[e+1]=c[f+1];k[e+1]=k[f+1];c[e+2]=c[f+2];k[e+2]=k[f+2];c[e+3]=c[f+3];k[e+3]=k[f+3];xi(a+1,d);yo(a)}kn.X=1;function Fn(a,d){var e=b;b+=15;var f=e+1,g=e+5,h=e+6,i=e+10,j=e+14;k[e]=d;Pi(a)||(k[g]=k[a+84]*k[e],Q(f,a+101,g),xn(a+76,f),Bo(i,a+64,a+105),Q(h,i,e),xn(a+80,h),f=JB(a+80),1.5707963705062866k[f+32]?(a=k[f+32]-k[f+21],k[f+21]=k[f+32]):k[f+21]=h;ig(g,f+4,d+138);ho(d,g,f+12,a);WP(l,f+4);ig(j,l,e+138);ho(e,j,f+16,a);b=g}d3.X=1;function Yob(a,d,e,f){var g=b;b+=12;var h,i,j=g+4,l=g+8;$1=a;a=k[f+29]-k[f+21]*k[f+30];h=J(f+4,d+126)+J(f,d+130);i=-J(f+4,e+126)+J(f+8,e+130);a-=h*k[f+23];a-=i*k[f+23];h=k[f+21]+a;h=d>>>0&&(e^=e>>>16,256>=d>>>0&&(e^=e>>>8,16>=d>>>0&&(e^=e>>>4,4>=d>>>0&&(e^=e>>>2,2>=d>>>0&&(e^=e>>>1)))));return(e>>>0)%(d>>>0)}uI.X=1;function f3(a,d){var e=b;b+=8;var f=e+4;0!=(a|0)&&Ri(a)&&(rn(e,d,a+1),JL(e,a+41),Bo(f,a+1,e),c[d]=c[f],k[d]=k[f],c[d+1]=c[f+1],k[d+1]=k[f+1],c[d+2]=c[f+2],k[d+2]=k[f+2],c[d+3]=c[f+3],k[d+3]=k[f+3]);b=e}f3.X=1;function cpb(a,d,e,f,g,h,i,j,l,m,n,p,r){var s=b;b+=78;var t=s+4,w=s+8,x=s+12,y=s+13,z=s+14,A=s+15,C=s+19,B=s+23,K=s+27,E=s+31,G=s+32,M=s+33,L=s+34,F=s+38,I=s+42,R=s+46,O,Z=s+50,P=s+54,S=s+55,da=s+56;O=s+57;var V=s+61,ba=s+62,$=s+63,Y=s+64,la=s+68,ka=s+69,ja=s+70,ea=s+71,ca=s+75,W=s+76,U=s+77;$1=a;$4=f;$5=g;a=p2(l);m=p2(m);f=d+4;c[f]=c[e];k[f]=k[e];c[f+1]=c[e+1];k[f+1]=k[e+1];c[f+2]=c[e+2];k[f+2]=k[e+2];c[f+3]=c[e+3];k[f+3]=k[e+3];0!=(a|0)?f=a:(g3(),f=h3);c[d+26]=f;0!=(m|0)?f=m:(g3(),f=h3);c[d+27]=f;k[d+22]=k[h+21];c[d+28]=0;k[d+21]=0;k[d+20]=0;qn(s,i,d+4);c[d]=c[s];k[d]=k[s];c[d+1]=c[s+1];k[d+1]=k[s+1];c[d+2]=c[s+2];k[d+2]=k[s+2];c[d+3]=c[s+3];k[d+3]=k[s+3];0!=(a|0)?(Bo(w,a+64,s),ig(t,w,a+134)):(k[x]=0,k[y]=0,k[z]=0,H(t,x,y,z));h=d+12;c[h]=c[t];k[h]=k[t];c[h+1]=c[t+1];k[h+1]=k[t+1];c[h+2]=c[t+2];k[h+2]=k[t+2];c[h+3]=c[t+3];k[h+3]=k[t+3];WP(C,d+4);qn(A,j,C);t=d+8;c[t]=c[A];k[t]=k[A];c[t+1]=c[A+1];k[t+1]=k[A+1];c[t+2]=c[A+2];k[t+2]=k[A+2];c[t+3]=c[A+3];k[t+3]=k[A+3];0!=(m|0)?(Bo(K,m+64,A),ig(B,K,m+134)):(k[E]=0,k[G]=0,k[M]=0,H(B,E,G,M));A=d+16;c[A]=c[B];k[A]=k[B];c[A+1]=c[B+1];k[A+1]=k[B+1];c[A+2]=c[B+2];k[A+2]=k[B+2];c[A+3]=c[B+3];k[A+3]=k[B+3];A=B=0;0!=(a|0)&&(qn(F,d+12,i),c[L]=c[F],k[L]=k[F],c[L+1]=c[F+1],k[L+1]=k[F+1],c[L+2]=c[F+2],k[L+2]=k[F+2],c[L+3]=c[F+3],k[L+3]=k[F+3],B=Zm(a)+J(e,L));0!=(m|0)&&(WP(R,d+16),qn(I,R,j),c[L]=c[I],k[L]=k[I],c[L+1]=c[I+1],k[L+1]=k[I+1],c[L+2]=c[I+2],k[L+2]=k[I+2],c[L+3]=c[I+3],k[L+3]=k[I+3],A=Zm(m)+J(e,L));k[d+23]=n/(B+A);0!=(a|0)?(e=a+76,c[Z]=c[e],k[Z]=k[e],c[Z+1]=c[e+1],k[Z+1]=k[e+1],c[Z+2]=c[e+2],k[Z+2]=k[e+2],c[Z+3]=c[e+3],k[Z+3]=k[e+3]):(k[P]=0,k[S]=0,k[da]=0,H(Z,P,S,da));Z=J(d+4,Z);0!=(a|0)?(V=a+80,c[O]=c[V],k[O]=k[V],c[O+1]=c[V+1],k[O+1]=k[V+1],c[O+2]=c[V+2],k[O+2]=k[V+2],c[O+3]=c[V+3],k[O+3]=k[V+3]):(k[V]=0,k[ba]=0,k[$]=0,H(O,V,ba,$));O=Z+J(d,O);0!=(m|0)?(la=m+76,c[Y]=c[la],k[Y]=k[la],c[Y+1]=c[la+1],k[Y+1]=k[la+1],c[Y+2]=c[la+2],k[Y+2]=k[la+2],c[Y+3]=c[la+3],k[Y+3]=k[la+3]):(k[la]=0,k[ka]=0,k[ja]=0,H(Y,la,ka,ja));Y=-J(d+4,Y);0!=(m|0)?(ca=m+80,c[ea]=c[ca],k[ea]=k[ca],c[ea+1]=c[ca+1],k[ea+1]=k[ca+1],c[ea+2]=c[ca+2],k[ea+2]=k[ca+2],c[ea+3]=c[ca+3],k[ea+3]=k[ca+3]):(k[ca]=0,k[W]=0,k[U]=0,H(ea,ca,W,U));k[d+29]=(p-(O+Y+J(d+8,ea)))*k[d+23];k[d+30]=r;k[d+31]=0;k[d+32]=1e10;b=s}cpb.X=1;function g3(){var a=b;b+=14;var d=a+4,e=a+5,f=a+6,g=a+7,h=a+11,i=a+12,j=a+13;0==c[dpb]<<24>>24&&0!=(Hb(dpb)|0)&&(k[d]=0,k[e]=0,k[f]=0,H(a,d,e,f),Sn(h3,0,0,0,a),Y2(14,h3));k[h]=0;k[i]=0;k[j]=0;H(g,h,i,j);fn(h3,0,g);b=a;return h3}g3.X=1;function i3(a,d,e,f,g,h,i,j,l,m,n,p,r){var s;s=epb(a+11);c[s+25]=g;cpb(a,s,d,e,f,h,i,j,l,m,n,p,r);return s}i3.X=1;function epb(a){var d;d=j3(a);(d|0)==(fpb(a)|0)&&gpb(a,hpb(a,j3(a)));var e=a+1;c[e]+=1;return c[a+3]+34*d}epb.X=1;function k3(a,d){return c[a+3]+34*d}k3.X=1;function ipb(a,d,e,f,g,h,i,j,l,m,n){a=b;b+=138;var p,r,s,t=a+4,w=a+8,x=a+12,y=a+16,z=a+20,A=a+21,C=a+22,B=a+23,K=a+27,E=a+31,G=a+35,M=a+39,L=a+40,F=a+41,I=a+42,R=a+46,O=a+50,Z=a+54,P=a+58,S=a+62,da=a+66,V=a+70,ba=a+74,$=a+75,Y=a+76,la=a+77,ka=a+81,ja=a+82,ea=a+83,ca=a+84,W=a+88,U=a+92,X=a+96,ma=a+97,ga=a+101,ha=a+105,ta=a+106,ra,ua=a+110,za=a+114,Za=a+115,ib=a+116;ra=a+117;var Ca=a+121,Sa=a+122,mb=a+123,Oa=a+124,Pa=a+128,fc=a+129,jb=a+130,La=a+131,fb=a+135,Rb=a+136,pb=a+137;p=p2(e);r=p2(f);s=g+8;N(a,g+12,e+1+12);c[m]=c[a];k[m]=k[a];c[m+1]=c[a+1];k[m+1]=k[a+1];c[m+2]=c[a+2];k[m+2]=k[a+2];c[m+3]=c[a+3];k[m+3]=k[a+3];N(t,s,f+1+12);c[n]=c[t];k[n]=k[t];c[n+1]=c[t+1];k[n+1]=k[t+1];c[n+2]=c[t+2];k[n+2]=k[t+2];c[n+3]=c[t+3];k[n+3]=k[t+3];k[l]=1;qn(w,m,g+16);0!=(p|0)?(Bo(y,p+64,w),ig(x,y,p+134)):(k[z]=0,k[A]=0,k[C]=0,H(x,z,A,C));e=d+12;c[e]=c[x];k[e]=k[x];c[e+1]=c[x+1];k[e+1]=k[x+1];c[e+2]=c[x+2];k[e+2]=k[x+2];c[e+3]=c[x+3];k[e+3]=k[x+3];qn(B,n,g+16);0!=(r|0)?(e=r+64,WP(G,B),Bo(E,e,G),ig(K,E,r+134)):(k[M]=0,k[L]=0,k[F]=0,H(K,M,L,F));B=d+16;c[B]=c[K];k[B]=k[K];c[B+1]=c[K+1];k[B+1]=k[K+1];c[B+2]=c[K+2];k[B+2]=k[K+2];c[B+3]=c[K+3];k[B+3]=k[K+3];B=K=0;0!=(p|0)&&(qn(R,d+12,m),c[I]=c[R],k[I]=k[R],c[I+1]=c[R+1],k[I+1]=k[R+1],c[I+2]=c[R+2],k[I+2]=k[R+2],c[I+3]=c[R+3],k[I+3]=k[R+3],K=Zm(p)+J(g+16,I));0!=(r|0)&&(WP(Z,d+16),qn(O,Z,n),c[I]=c[O],k[I]=k[O],c[I+1]=c[O+1],k[I+1]=k[O+1],c[I+2]=c[O+2],k[I+2]=k[O+2],c[I+3]=c[O+3],k[I+3]=k[O+3],B=Zm(r)+J(g+16,I));k[d+23]=k[l]/(K+B);l=d+4;I=g+16;c[l]=c[I];k[l]=k[I];c[l+1]=c[I+1];k[l+1]=k[I+1];c[l+2]=c[I+2];k[l+2]=k[I+2];c[l+3]=c[I+3];k[l+3]=k[I+3];qn(P,m,g+16);c[d]=c[P];k[d]=k[P];c[d+1]=c[P+1];k[d+1]=k[P+1];c[d+2]=c[P+2];k[d+2]=k[P+2];c[d+3]=c[P+3];k[d+3]=k[P+3];WP(da,g+16);qn(S,n,da);P=d+8;c[P]=c[S];k[P]=k[S];c[P+1]=c[S+1];k[P+1]=k[S+1];c[P+2]=c[S+2];k[P+2]=k[S+2];c[P+3]=c[S+3];k[P+3]=k[S+3];0!=(p|0)?no(V,p,m):(k[ba]=0,k[$]=0,k[Y]=0,H(V,ba,$,Y));0!=(r|0)?no(la,r,n):(k[ka]=0,k[ja]=0,k[ea]=0,H(la,ka,ja,ea));N(ca,V,la);c[i]=c[ca];k[i]=k[ca];c[i+1]=c[ca+1];k[i+1]=k[ca+1];c[i+2]=c[ca+2];k[i+2]=k[ca+2];c[i+3]=c[ca+3];k[i+3]=k[ca+3];k[j]=J(g+16,i);i=aU(g)+k[h+13];k[d+22]=k[g+21];(c[g+36]|0)>(c[h+16]|0)?j=0:(j=k[g+22]*-k[j],0>=j&&(j=0));0!=(c[h+15]&4|0)?(k[d+21]=k[g+28]*k[h+14],0!=(p|0)&&(k[X]=Zm(p),Q(U,d+4,X),ig(W,U,p+85),ho(p,W,d+12,k[d+21])),0!=(r|0)&&(k[ha]=Zm(r),Q(ga,d+4,ha),ig(ma,ga,r+85),WP(ta,d+16),ho(r,ma,ta,-k[d+21]))):k[d+21]=0;k[d+20]=0;0!=(p|0)?(g=p+76,c[ua]=c[g],k[ua]=k[g],c[ua+1]=c[g+1],k[ua+1]=k[g+1],c[ua+2]=c[g+2],k[ua+2]=k[g+2],c[ua+3]=c[g+3],k[ua+3]=k[g+3]):(k[za]=0,k[Za]=0,k[ib]=0,H(ua,za,Za,ib));g=J(d+4,ua);0!=(p|0)?(p+=80,c[ra]=c[p],k[ra]=k[p],c[ra+1]=c[p+1],k[ra+1]=k[p+1],c[ra+2]=c[p+2],k[ra+2]=k[p+2],c[ra+3]=c[p+3],k[ra+3]=k[p+3]):(k[Ca]=0,k[Sa]=0,k[mb]=0,H(ra,Ca,Sa,mb));ra=g+J(d,ra);0!=(r|0)?(Pa=r+76,c[Oa]=c[Pa],k[Oa]=k[Pa],c[Oa+1]=c[Pa+1],k[Oa+1]=k[Pa+1],c[Oa+2]=c[Pa+2],k[Oa+2]=k[Pa+2],c[Oa+3]=c[Pa+3],k[Oa+3]=k[Pa+3]):(k[Pa]=0,k[fc]=0,k[jb]=0,H(Oa,Pa,fc,jb));Oa=-J(d+4,Oa);0!=(r|0)?(r+=80,c[La]=c[r],k[La]=k[r],c[La+1]=c[r+1],k[La+1]=k[r+1],c[La+2]=c[r+2],k[La+2]=k[r+2],c[La+3]=c[r+3],k[La+3]=k[r+3]):(k[fb]=0,k[Rb]=0,k[pb]=0,H(La,fb,Rb,pb));r=j-(ra+Oa+J(d+8,La));0k[h+12]?h=45:(k[d+29]=r,k[d+33]=La,h=47):h=45;45==h&&(k[d+29]=La+r,k[d+33]=0);k[d+30]=0;k[d+31]=0;k[d+32]=1e10;b=a}ipb.X=1;function jpb(a,d,e,f,g,h){var i=b;b+=36;var j=i+4,l=i+8,m=i+9,n=i+13,p=i+17,r=i+18,s=i+22,t=i+26,w=i+27,x=i+31,y=i+32,z=k3(a+11,c[d+25]);0!=(c[h+15]&8|0)?(0!=(c[h+15]&4|0)?(k[z+21]=k[g+30]*k[h+14],0!=(e|0)&&(k[l]=Zm(e),Q(j,z+4,l),ig(i,j,e+85),ho(e,i,z+12,k[z+21])),0!=(f|0)&&(k[p]=Zm(f),Q(n,z+4,p),ig(m,n,f+85),WP(r,z+16),ho(f,m,r,-k[z+21]))):k[z+21]=0,0!=(c[h+15]&16|0)&&(a=k3(a+11,c[d+25]+1),0!=(c[h+15]&4|0)?(k[a+21]=k[g+31]*k[h+14],0!=(e|0)&&(k[t]=Zm(e),Q(s,a+4,t),ho(e,s,a+12,k[a+21])),0!=(f|0)&&(k[x]=Zm(f),Q(w,a+4,x),WP(y,a+16),ho(f,w,y,-k[a+21]))):k[a+21]=0)):(k[z+21]=0,0!=(c[h+15]&16|0)&&(k[k3(a+11,c[d+25]+1)+21]=0));b=i}jpb.X=1;function j3(a){return c[a+1]}j3.X=1;function kpb(a,d,e){var f=b;b+=27;var g,h,i,j,l,m,n=f+4,p=f+8,r=f+9,s=f+10,t,w,x,y,z=f+14,A=f+18,C,B=f+22,K=f+23;h=$j(d);i=Yj(d);j=p2(h);var E=p2(i);0!=(j|0)?0!=Zm(j)?g=7:(l=E,g=5):(l=E,g=5);5==g&&(g=0==(l|0)?30:0!=Zm(E)?7:30);a:do{if(7==g&&(l=0,(l|0)<(Xj(d)|0))){for(var G=a+1,M=a+1,L=a+11,F=z,I=K;;){m=d+69*l+1;if(aU(m)<=ck(d)){t=j3(G);w=epb(M);x=p2(h);y=p2(i);0!=(x|0)?g=x:(g3(),g=h3);c[w+26]=g;0!=(y|0)?g=y:(g3(),g=h3);c[w+27]=g;c[w+28]=m;ipb(0,w,h,i,m,e,s,r,p,f,n);c[w+25]=j3(L);0!=(c[e+15]&32|0)?c[m+29]&1?(i3(a,m+37,j,E,t,m,f,n,h,i,k[p],k[m+32],k[m+34]),0!=(c[e+15]&16|0)&&i3(a,m+41,j,E,t,m,f,n,h,i,k[p],k[m+33],k[m+35]),g=28):g=18:g=18;b:do{if(18==g){Q(A,m+16,r);N(z,s,A);C=m+37;c[C]=c[F];k[C]=k[F];c[C+1]=c[F+1];k[C+1]=k[F+1];c[C+2]=c[F+2];k[C+2]=k[F+2];c[C+3]=c[F+3];k[C+3]=k[F+3];C=Um(m+37);var R=0!=(c[e+15]&64|0);do{if(!R&&1.1920928955078125e-7=(Xj(d)|0)){break a}}}}while(0);b=f}kpb.X=1;function lpb(a,d,e){var f,g;f=l3(a);var h=(d|0)<(f|0);a:do{if(h){if(g=d,(g|0)<(f|0)){for(;;){if(g+=1,(g|0)>=(f|0)){break a}}}}else{if((d|0)>(l3(a)|0)&&mpb(a,d),g=f,(g|0)<(d|0)){for(var i=a+3;;){var j=(g<<1)+c[i];if(0!=(j|0)){var l=e;c[j]=c[l];k[j]=k[l];c[j+1]=c[l+1];k[j+1]=k[l+1]}g+=1;if((g|0)>=(d|0)){break a}}}}}while(0);c[a+1]=d}lpb.X=1;function npb(a,d,e,f,g,h,i,j,l,m){var n=b;b+=117;var p,r,s,t,w,x,y,z,A=n+1,C,B=n+3,K,E,G,M,L,F,I,R=n+37,O=n+38,Z=n+39,P=n+40,S=n+41,da=n+42,V=n+43,ba=n+44,$=n+45,Y=n+46,la=n+47,ka=n+48,ja=n+49,ea,ca=n+63,W=n+67,U=n+71,X=n+75,ma=n+79,ga=n+83,ha=n+84,ta=n+88,ra=n+92,ua=n+93,za,Za,ib,Ca,Sa,mb=n+97,Oa,Pa,fc=n+115,jb=n+116,La;$10=l;$11=m;jY(n,D.uf);if(0!=(g+i|0)){var fb=0!=(c[j+11]|0);a:do{if(fb){if(p=0,(p|0)<(e|0)){for(;;){var Rb=p2(c[d+p]);r=Rb;0!=(Rb|0)&&(EC(r+126),EC(r+130),EC(r+142),EC(r+146));p+=1;if((p|0)>=(e|0)){break a}}}}else{if(s=0,(s|0)<(e|0)){for(;;){var pb=p2(c[d+s]);t=pb;0!=(pb|0)&&(EC(t+126),EC(t+130));s+=1;if((s|0)>=(e|0)){break a}}}}}while(0);for(w=0;(w|0)<(i|0);){var Sb=x=c[h+w];v[c[c[Sb]+2]](Sb);Ep(x,0);w+=1}y=0;c[A]=0;k[A]=0;c[A+1]=0;k[A+1]=0;lpb(a+26,i,A);z=0;for(var ab=a+26;(z|0)<(i|0);){C=m3(ab,z);if(Ap(c[h+z])){var Ib=c[h+z];v[c[c[Ib]+4]](Ib,C)}else{c[C]=0,c[C+1]=0}y+=c[C];z+=1}for(var Fc=a+6,Ac=y,ob=B,Gc=ob+34;ob=(c[E]|0)){break b}}}}while(0);var Ra=L+126;k[R]=0;k[O]=0;k[Z]=0;pe(Ra,R,O,Z);var qb=L+130;k[P]=0;k[S]=0;k[da]=0;pe(qb,P,S,da);var Ab=F+126;k[V]=0;k[ba]=0;k[$]=0;pe(Ab,V,ba,$);var hc=F+130;k[Y]=0;k[la]=0;k[ka]=0;pe(hc,Y,la,ka);k[ja]=1/k[j+3];k[Ub]=k[j+8];c[Uc]=G+4;c[nd]=G;c[Ic]=0;c[tc]=G+8;c[hd]=34;c[Tb]=G+29;k[G+30]=k[j+10];k[Jc]=k[j+1];c[ub]=G+30;c[uc]=G+31;c[Kc]=G+32;c[gb]=c[j+5];var Hc=c[h+z];v[c[c[Hc]+5]](Hc,ja);k[G+32]>Mp(c[h+z])&&(k[G+32]=Mp(c[h+z]));k[G+31]<-Mp(c[h+z])&&(k[G+31]=-Mp(c[h+z]));I=0;if((I|0)<(c[E]|0)){for(;;){ea=G+34*I;c[ea+28]=M;Bo(W,Io(M)+64,ea);ig(ca,W,Io(M)+134);var ic=ea+12;c[ic]=c[ca];k[ic]=k[ca];c[ic+1]=c[ca+1];k[ic+1]=k[ca+1];c[ic+2]=c[ca+2];k[ic+2]=k[ca+2];c[ic+3]=c[ca+3];k[ic+3]=k[ca+3];Bo(X,Ho(M)+64,ea+8);ig(U,X,Ho(M)+134);var db=ea+16;c[db]=c[U];k[db]=k[U];c[db+1]=c[U+1];k[db+1]=k[U+1];c[db+2]=c[U+2];k[db+2]=k[U+2];c[db+3]=c[U+3];k[db+3]=k[U+3];k[ga]=Zm(L);Q(ma,ea+4,ga);Bo(ha,L+64,ea);k[ra]=Zm(F);Q(ta,ea+4,ra);Bo(ua,F+64,ea+8);za=J(ma,ea+4);za+=J(ha,ea);za+=J(ta,ea+4);za+=J(ua,ea+8);k[ea+23]=1/za;ib=J(ea+4,L+76)+J(ea,L+80);Za=ib+ -J(ea+4,F+76)+J(ea+8,F+80);k[ea+29]=k[ea+29]*k[ea+23]+(0-Za*k[gc])*k[ea+23];k[ea+21]=0;I+=1;if((I|0)>=(c[E]|0)){break a}}}}}while(0);K+=c[m3(Lc,z)];z+=1}for(Ca=Sa=0;(Ca|0)<(g|0);){Sa=c[f+Ca],kpb(a,Sa,j),Ca+=1}for(var bb=j,ob=mb,Gc=bb+18;bb=(Oa|0)){break a}}}}while(0);La=0;var vb=(La|0)<(Pa|0);a:do{if(vb){for(var rb=a+21;;){if(c[QV(rb,La)]=La,La+=1,(La|0)>=(Pa|0)){break a}}}}while(0)}$12=1;kY(n);b=n;return 0}npb.X=1;function m3(a,d){return(d<<1)+c[a+3]}m3.X=1;function n3(a,d,e){var f,g;f=j3(a);var h=(d|0)<(f|0);a:do{if(h){if(g=d,(g|0)<(f|0)){for(;;){if(g+=1,(g|0)>=(f|0)){break a}}}}else{if((d|0)>(j3(a)|0)&&gpb(a,d),g=f,(g|0)<(d|0)){for(var i=a+3;;){for(var j=e,l=c[i]+34*g,m=j+34;j=(d|0)){break a}}}}}while(0);c[a+1]=d}n3.X=1;function opb(a,d,e,f,g,h,i,j,l,m,n){$9=e;$10=f;$11=g;$12=h;$16=m;$17=n;f=j3(a+1);g=j3(a+11);h=0!=(c[l+15]&1|0);a:do{if(h&&0==(d&7|0)){var e=0,p=(e|0)<(f|0);b:do{if(p){for(var r=a+16,s=a+16,t=a+16,w=a+16;;){if(m=c[QV(r,e)],n=uI(a,e+1),c[QV(t,e)]=c[QV(s,n)],c[QV(w,n)]=m,e+=1,(e|0)>=(f|0)){break b}}}}while(0);e=0;if((e|0)<(g|0)){p=a+21;r=a+21;s=a+21;for(t=a+21;;){if(m=c[QV(p,e)],n=uI(a,e+1),c[QV(s,e)]=c[QV(r,n)],c[QV(t,n)]=m,e+=1,(e|0)>=(g|0)){break a}}}}}while(0);d=0!=(c[l+15]&256|0);e=0;f=a+6;g=(e|0)<(j3(f)|0);a:do{b:do{if(g){for(m=a+6;;){if(h=k3(m,e),d3(a,c[h+26],c[h+27],h),e+=1,(e|0)>=(j3(f)|0)){break b}}}}while(0);e=0;h=(e|0)<(j|0);b:do{if(h){for(;;){if(m=c[i+e],v[c[c[m]+6]](m,Io(c[i+e]),Ho(c[i+e]),k[l+3]),e+=1,(e|0)>=(j|0)){break b}}}}while(0);h=j3(a+1);e=0;n=(e|0)<(h|0);b:do{if(n){p=a+1;for(r=a+16;;){if(m=k3(p,c[QV(r,e)]),Yob(a,c[m+26],c[m+27],m),e+=1,(e|0)>=(h|0)){break b}}}}while(0);h=j3(a+11);e=0;if((e|0)<(h|0)){p=a+11;r=a+21;for(s=a+1;;){if(m=k3(p,c[QV(r,e)]),n=t=k[k3(s,c[m+25])+21],0=(h|0)){break a}}}}while(0);return 0}opb.X=1;function ppb(a,d,e,f,g,h,i,j,l,m){$2=d;$3=e;$4=f;$5=g;$6=h;$7=i;$9=l;$10=m;e=0!=(c[j+11]|0);a:do{if(e){if(d=0,f=(d|0)<(c[j+5]|0),0!=(c[j+15]&256|0)){if(f){i=a+1;l=a+1;for(m=a+16;;){var f=j3(i),g=0,n=(g|0)<(f|0);b:do{if(n){for(;;){if(h=k3(l,c[QV(m,g)]),Zob(a,c[h+26],c[h+27],h),g+=1,(g|0)>=(f|0)){break b}}}}while(0);d+=1;if((d|0)>=(c[j+5]|0)){break a}}}}else{if(f){i=a+1;l=a+1;for(m=a+16;;){f=j3(i);g=0;n=(g|0)<(f|0);b:do{if(n){for(;;){if(h=k3(l,c[QV(m,g)]),Zob(a,c[h+26],c[h+27],h),g+=1,(g|0)>=(f|0)){break b}}}}while(0);d+=1;if((d|0)>=(c[j+5]|0)){break a}}}}}}while(0)}ppb.X=1;function qpb(a,d,e,f,g,h,i,j,l,m){var n=b;b+=1;var p;jY(n,D.pe);v[c[c[a]+6]](a,d,e,f,g,h,i,j,l,m);for(p=0;(p|0)<(c[j+5]|0);){opb(a,p,d,e,f,g,h,i,j,l,m),p+=1}$13=1;kY(n);b=n;return 0}qpb.X=1;function rpb(){}rpb.X=1;function spb(){}spb.X=1;function tpb(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}tpb.X=1;function upb(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}upb.X=1;function hpb(a,d){$1=a;return 0!=(d|0)?d<<1:1}hpb.X=1;function vpb(a){c[a+31]=0}vpb.X=1;function fpb(a){return c[a+2]}fpb.X=1;function l3(a){return c[a+1]}l3.X=1;function wpb(a){return c[a+2]}wpb.X=1;function Vob(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}Vob.X=1;function c3(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}c3.X=1;function xpb(a,d,e,f,g,h,i,j,l,m){var n=b;b+=102;var p=n+34,r=n+68;$10=f;$11=g;$12=h;$13=i;$15=l;$16=m;f=j3(a+1);g=0;l=(g|0)<(f|0);a:do{if(l){for(var m=a+1,s=a+11,t=a+11;;){if(h=k3(m,g),i=c[h+28],k[i+28]=k[h+21],0!=(c[j+15]&8|0)&&(k[i+30]=k[k3(s,c[h+25])+21],k[i+31]=k[k3(t,c[h+25]+1)+21]),g+=1,(g|0)>=(f|0)){break a}}}}while(0);f=j3(a+6);g=0;l=(g|0)<(f|0);a:do{if(l){for(m=a+6;;){if(h=k3(m,g),i=c[h+28],Ep(i,k[h+21]),k[h+21]>Mp(i)&&Hp(i,0),g+=1,(g|0)>=(f|0)){break a}}}}while(0);g=0!=(c[j+11]|0);f=0;h=(f|0)<(e|0);a:do{if(g){if(h){for(;;){if(i=p2(c[d+f]),0!=(i|0)&&eo(i,k[j+3]),f+=1,(f|0)>=(e|0)){break a}}}}else{if(h){for(;;){if(i=p2(c[d+f]),0!=(i|0)&&bo(i),f+=1,(f|0)>=(e|0)){break a}}}}}while(0);d=n;for(e=d+34;d=(e|0)){break a}}}}while(0)}zpb.X=1;function Apb(a){0!=(c[a+3]|0)&&(c[a+4]&1&&Cpb(a,c[a+3]),c[a+3]=0)}Apb.X=1;function Cpb(a,d){$1=a;yh(d)}Cpb.X=1;function Bpb(a,d,e){$1=a;$3=e;return Ue(136*d,16)}Bpb.X=1;function mpb(a,d){var e;(wpb(a)|0)<(d|0)&&(e=Dpb(a,d),Epb(a,0,l3(a),e),upb(a,0,l3(a)),Fpb(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}mpb.X=1;function Dpb(a,d){return 0!=(d|0)?Gpb(a,d,0):0}Dpb.X=1;function Epb(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=(d<<1)+f;if(0!=(i|0)){var j=(d<<1)+c[h];c[i]=c[j];k[i]=k[j];c[i+1]=c[j+1];k[i+1]=k[j+1]}d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}Epb.X=1;function Fpb(a){0!=(c[a+3]|0)&&(c[a+4]&1&&Hpb(a,c[a+3]),c[a+3]=0)}Fpb.X=1;function Hpb(a,d){$1=a;yh(d)}Hpb.X=1;function Gpb(a,d,e){$1=a;$3=e;return Ue(d<<3,16)}Gpb.X=1;function bpb(a){upb(a,0,l3(a));Fpb(a);Vob(a)}bpb.X=1;function e3(a){tpb(a,0,j3(a));Apb(a);c3(a)}e3.X=1;function Ipb(){}Ipb.X=1;function Jpb(a,d,e,f,g,h,i,j,l,m,n){var p=b;b+=1;$12=n;jY(p,D.Ge);v[c[c[a]+8]](a,d,e,f,g,h,i,j,l,m);v[c[c[a]+9]](a,d,e,f,g,h,i,j,l,m);v[c[c[a]+7]](a,d,e,f,g,h,i,j,l,m);$15=1;kY(p);b=p;return 0}Jpb.X=1;function Kpb(){}Kpb.X=1;function Lpb(){}Lpb.X=1;function Mpb(){}Mpb.X=1;function Npb(){return 1}Npb.X=1;function Opb(a){return c[a+45]}Opb.X=1;function Ppb(a){xe(a)}Ppb.X=1;function Qpb(a,d,e,f,g){var h=b;b+=3;var i=h+1,j=h+2;Tjb(a,d,e,g);c[a]=o3+2;c[a+45]=f;c[a+46]=0;k[h]=0;k[i]=0;k[j]=-10;H(a+47,h,i,j);b=h}Qpb.X=1;function Rpb(a){Spb(a);xe(a)}Rpb.X=1;function Tpb(a,d,e,f){var g=b;b+=18;$3=e;$4=f;Upb(a,d);e=a+7;k[e]=d;c[e+1]=0;c[e+5]=v[c[c[a]+4]](a);v[c[c[a]+10]](a);e=c[a+6];e=v[c[c[e]+9]](e);if(0!=(e|0)){f=c[a+6];f=v[c[c[f]+11]](f);Rm(g);k[g+3]=d;var h=c[a+45];v[c[c[h]+2]](h,0,e);h=c[a+45];v[c[c[h]+3]](h,$X(a+1,0),Sl(a),f,e,0,0,g,c[a+22],c[a+20],c[a+6]);e=c[a+45];v[c[c[e]+4]](e,g,c[a+22],c[a+20])}Vpb(a,d);v[c[c[a]+2]](a);v[c[c[a]+19]](a);v[c[c[a]+29]](a);b=g;return 1}Tpb.X=1;function Upb(a,d){var e,f;e=0;var g=a+1,h=(e|0)<(Tl(g)|0);a:do{if(h){for(var i=a+1;;){var j=p2(c[$X(i,e)]);f=j;0!=(j|0)&&!ai(f)&&Ki(f)&&(fo(f),Fn(f,d),Ro(f,d),Bn(f,d,f+17));e+=1;if((e|0)>=(Tl(g)|0)){break a}}}}while(0)}Upb.X=1;function Vpb(a,d){var e=b;b+=16;var f,g;f=0;var h=a+1,i=(f|0)<(Tl(h)|0);a:do{if(i){for(var j=a+1;;){var l=p2(c[$X(j,f)]);g=l;0!=(l|0)&&Ki(g)&&!ai(g)&&(Bn(g,d,e),kn(g,e));f+=1;if((f|0)>=(Tl(h)|0)){break a}}}}while(0);b=e}Vpb.X=1;function Wpb(a){var d;d=0;var e=a+1,f=(d|0)<(Tl(e)|0);a:do{if(f){for(var g=a+1;;){var h=p2(c[$X(g,d)]);0!=(h|0)&&hn(h);d+=1;if((d|0)>=(Tl(e)|0)){break a}}}}while(0)}Wpb.X=1;function Xpb(a,d){var e;e=a+47;c[e]=c[d];k[e]=k[d];c[e+1]=c[d+1];k[e+1]=k[d+1];c[e+2]=c[d+2];k[e+2]=k[d+2];c[e+3]=c[d+3];k[e+3]=k[d+3];e=0;var f=a+1,g=(e|0)<(Tl(f)|0);a:do{if(g){for(var h=a+1;;){var i=p2(c[$X(h,e)]);0!=(i|0)&&wo(i,d);e+=1;if((e|0)>=(Tl(f)|0)){break a}}}}while(0)}Xpb.X=1;function Ypb(a,d){var e=d+47;c[a]=c[e];k[a]=k[e];c[a+1]=c[e+1];k[a+1]=k[e+1];c[a+2]=c[e+2];k[a+2]=k[e+2];c[a+3]=c[e+3];k[a+3]=k[e+3]}Ypb.X=1;function Zpb(a,d){cY(a,d)}Zpb.X=1;function $pb(a,d){var e;e=p2(d);if(0!=(e|0)){v[c[c[a]+22]](a,e)}else{cY(a,d)}}$pb.X=1;function aqb(a,d){wo(d,a+47);if(0!=(Xn(d)|0)){v[c[c[a]+8]](a,d,1,-1)}}aqb.X=1;function bqb(a,d,e,f){wo(d,a+47);if(0!=(Xn(d)|0)){v[c[c[a]+8]](a,d,e,f)}}bqb.X=1;function cqb(a){var d=b;b+=24;var e,f,g,h=d+16,i=d+20;e=0;var j=a+1,l=(e|0)<(Tl(j)|0);a:do{if(l){for(var m=a+1,n=a,p=a+6;;){f=c[$X(m,e)];var r=p2(f);g=r;0!=(r|0)&&Ki(g)&&!ai(g)&&(r=bi(f),v[c[c[r]+2]](r,f+1,h,i),f=am(n),v[c[c[f]+4]](f,ci(g),h,i,c[p]));e+=1;if((e|0)>=(Tl(j)|0)){break a}}}}while(0);b=d}cqb.X=1;function dqb(a){var d,e;d=0;var f=a+1,g=(d|0)<(Tl(f)|0);a:do{if(g){for(var h=a+1;;){var i=p2(c[$X(h,d)]);e=i;0!=(i|0)&&0!=(Un(e)|0)&&2!=(ki(e)|0)&&(i=Un(e),v[c[c[i]+3]](i,e+1));d+=1;if((d|0)>=(Tl(f)|0)){break a}}}}while(0)}dqb.X=1;function eqb(a,d){c[a+46]&1&&yh(c[a+45]);c[a+46]=0;c[a+45]=d}eqb.X=1;function fqb(a){k[a+46]=1;k[a+47]=-1;k[a+48]=0;k[a+49]=0;k[a+50]=1;k[a+51]=.699999988079071;k[a+52]=0;k[a+53]=0;k[a+54]=1;k[a+55]=.699999988079071;k[a+56]=0;k[a+57]=0;k[a+66]=1;k[a+67]=.699999988079071;k[a+68]=1;k[a+69]=0;k[a+70]=1;k[a+71]=.699999988079071;k[a+72]=1;k[a+73]=0;k[a+58]=1;k[a+59]=.699999988079071;k[a+60]=1;k[a+61]=0;k[a+62]=1;k[a+63]=.699999988079071;k[a+64]=1;k[a+65]=0;c[a+275]=0;k[a+280]=0;k[a+281]=0;k[a+282]=0;c[a+76]=0;c[a+76]=0;var d=a+276;c[d]=0;k[d]=0;c[d+1]=0;k[d+1]=0;c[d+2]=0;k[d+2]=0;c[d+3]=0;k[d+3]=0;c[a+12]=1;lT(a,c[a+7]+1,c[a+8]+1)}fqb.X=1;function Spb(a){c[a]=o3+2;c[a+46]&1&&yh(c[a+45]);aY(a)}Spb.X=1;function CS(a,d){c[d]=6;c[d+1]=0}CS.X=1;function lT(a,d,e){var f=b;b+=93;var g,h=f+16;g=f+32;var i=f+48,j=f+64,l=f+68,m=f+72,n=f+76,p=f+80,r=f+84,s=f+85,t=f+89;c[a+45]&1?g=4:c[a+11]&1?(WW(g,e,a+29),xi(a+207,g),WW(i,d,a+13),xi(a+223,i),g=6):g=4;4==g&&(WW(f,d,a+13),xi(a+207,f),WW(h,e,a+29),xi(a+223,h));d=a+243;e=a+207+12;c[d]=c[e];k[d]=k[e];c[d+1]=c[e+1];k[d+1]=k[e+1];c[d+2]=c[e+2];k[d+2]=k[e+2];c[d+3]=c[e+3];k[d+3]=k[e+3];d=a+247;e=a+223+12;c[d]=c[e];k[d]=k[e];c[d+1]=c[e+1];k[d+1]=k[e+1];c[d+2]=c[e+2];k[d+2]=k[e+2];c[d+3]=c[e+3];k[d+3]=k[e+3];Jb(j,a+207,0);d=a+239;c[d]=c[j];k[d]=k[j];c[d+1]=c[j+1];k[d+1]=k[j+1];c[d+2]=c[j+2];k[d+2]=k[j+2];c[d+3]=c[j+3];k[d+3]=k[j+3];c[a+45]&1?g=8:c[a+11]&1?g=8:(N(m,a+243,a+247),j=a+255,c[j]=c[m],k[j]=k[m],c[j+1]=c[m+1],k[j+1]=k[m+1],c[j+2]=c[m+2],k[j+2]=k[m+2],c[j+3]=c[m+3],k[j+3]=k[m+3],g=10);8==g&&(N(l,a+247,a+243),m=a+255,c[m]=c[l],k[m]=k[l],c[m+1]=c[l+1],k[m+1]=k[l+1],c[m+2]=c[l+2],k[m+2]=k[l+2],c[m+3]=c[l+3],k[m+3]=k[l+3]);k[r]=J(a+239,a+255);Q(p,a+239,r);wn(n,a+243,p);l=a+251;c[l]=c[n];k[l]=k[n];c[l+1]=c[n+1];k[l+1]=k[n+1];c[l+2]=c[n+2];k[l+2]=k[n+2];c[l+3]=c[n+3];k[l+3]=k[n+3];n=0;l=a+207;p=a+255;for(a+=259;!(Jb(t,l,n),c[s]=c[t],k[s]=k[t],c[s+1]=c[t+1],k[s+1]=k[t+1],c[s+2]=c[t+2],k[s+2]=k[t+2],c[s+3]=c[t+3],k[s+3]=k[t+3],k[a+n]=J(p,s),n=r=n+1,3<=(r|0));){}b=f}lT.X=1;function uT(a,d,e,f,g,h){h&=1;g2(a,7,d,e);c[a]=p3+2;c[a+11]=0;sQ(a+13,f);sQ(a+29,g);c[a+45]=h&1;fqb(a)}uT.X=1;function sT(a,d,e,f){var g=b;b+=16;f&=1;I2();g2(a,7,J2,d);c[a]=p3+2;c[a+11]=0;sQ(a+29,e);c[a+45]=f&1;WW(g,d+1,a+29);xi(a+13,g);fqb(a);b=g}sT.X=1;function gqb(a,d){var e;if(c[a+11]&1){c[d]=0,c[d+1]=0}else{if(c[d]=4,c[d+1]=2,lT(a,c[a+7]+1,c[a+8]+1),AS(a),xT(a),e=MR(a)?6:JR(a)?6:7,6==e&&(c[d]+=1,e=d+1,c[e]-=1),SR(a)||XS(a)){c[d]+=1,e=d+1,c[e]-=1}}}gqb.X=1;function AS(a){var d=b;b+=12;var e=d+4,f=d+8;k[a+273]=0;c[a+75]=0;k[a+48]<=k[a+49]&&(Jb(d,a+207,1),Jb(e,a+207,2),Jb(f,a+223,1),e=ee(J(f,e),J(f,d)),e=wmb(e,k[a+48],k[a+49]),f=k[a+272]=e,ek[a+49]&&(k[a+273]=e-k[a+49],c[a+75]=1));b=d}AS.X=1;function xT(a){c[a+74]=0;k[a+271]=k[a+259];var d=a+259;k[a+46]<=k[a+47]?k[d]>k[a+47]?(d=a+259,k[d]-=k[a+47],c[a+74]=1):k[a+259]i?1:1.1920928955078125e-7>j)&1;var Xd=i+j;k[x]=0ug&&(id=-Xf*bb,id>k[c[d+7]+S]&&(k[c[d+7]+S]=id)):0Eh&&(Qc=-$g*vc,Qc>k[c[d+7]+S]&&(k[c[d+7]+S]=Qc)):0(f|0)?(k[a+58]=e,a+=76,c[a]|=512):3>(f|0)?(k[a+66]=e,a+=76,c[a]|=32):3==(f|0)?(k[a+62]=e,a+=76,c[a]|=2048):6>(f|0)&&(k[a+70]=e,a+=76,c[a]|=128):3==(d|0)?1>(f|0)?(k[a+53]=e,a+=76,c[a]|=1):3==(f|0)&&(k[a+57]=e,a+=76,c[a]|=4):4==(d|0)&&(1>(f|0)?(k[a+61]=e,a+=76,c[a]|=256):3>(f|0)?(k[a+69]=e,a+=76,c[a]|=16):3==(f|0)?(k[a+65]=e,a+=76,c[a]|=1024):6>(f|0)&&(k[a+73]=e,a+=76,c[a]|=64))}jqb.X=1;function kqb(a,d,e){var f;f=3.4028234663852886e+38;2==(d|0)?1>(e|0)?f=k[a+58]:3>(e|0)?f=k[a+66]:3==(e|0)?f=k[a+62]:6>(e|0)&&(f=k[a+70]):3==(d|0)?1>(e|0)?f=k[a+53]:3==(e|0)&&(f=k[a+57]):4==(d|0)&&(1>(e|0)?f=k[a+61]:3>(e|0)?f=k[a+69]:3==(e|0)?f=k[a+65]:6>(e|0)&&(f=k[a+73]));return f}kqb.X=1;function gva(a,d){var e=b;b+=29;var f=e+4,g=e+8,h=e+9,i=e+13;k[g]=.5*(k[d+46]+k[d+47]);Q(f,d+239,g);wn(e,d+243,f);c[a]=c[e];k[a]=k[e];c[a+1]=c[e+1];k[a+1]=k[e+1];c[a+2]=c[e+2];k[a+2]=k[e+2];c[a+3]=c[e+3];k[a+3]=k[e+3];uw(i,c[d+7]+1);vw(h,i,a);c[a]=c[h];k[a]=k[h];c[a+1]=c[h+1];k[a+1]=k[h+1];c[a+2]=c[h+2];k[a+2]=k[h+2];c[a+3]=c[h+3];k[a+3]=k[h+3];b=e}gva.X=1;function hva(a,d){var e=d+29+12;c[a]=c[e];k[a]=k[e];c[a+1]=c[e+1];k[a+1]=k[e+1];c[a+2]=c[e+2];k[a+2]=k[e+2];c[a+3]=c[e+3];k[a+3]=k[e+3]}hva.X=1;function lqb(){}lqb.X=1;function mqb(a){xe(a)}mqb.X=1;function nqb(a,d,e){o2(a,d,e);mQ(a+13,d+14);mQ(a+29,d+30);k[d+46]=k[a+47];k[d+47]=k[a+46];k[d+48]=k[a+49];k[d+49]=k[a+48];c[d+50]=c[a+45]&1;c[d+51]=c[a+12]&1;return D.vf}nqb.X=1;function i2(a,d,e){c[a+4]=d;c[a]=q3+2;c[a+2]=-1;c[a+3]=-1;k[a+4]=3.4028234663852886e+38;c[a+5]=1;c[a+6]=0;c[a+7]=e;I2();c[a+8]=J2;k[a+9]=0;k[a+10]=.30000001192092896}i2.X=1;function N2(a,d,e,f,g,h){$2=a;if(e>f){d=1}else{if(e==f){d=0}else{a=g/h;g=0>a;a:do{if(g){h=d>=e;do{if(h&&df-a){h=(f-d)/a;break a}}while(0);h=d>f?0:1}else{h=0}}}while(0);d=h}}return d}N2.X=1;function oqb(a,d){return a<=d?a<-d^1:0}oqb.X=1;function tj(a){return k[a+5]*k[a+6]}tj.X=1;function pB(a){return k[a+51]}pB.X=1;function I2(){var a=b;b+=14;var d=a+4,e=a+5,f=a+6,g=a+7,h=a+11,i=a+12,j=a+13;0==c[pqb]<<24>>24&&0!=(Hb(pqb)|0)&&(k[d]=0,k[e]=0,k[f]=0,H(a,d,e,f),Sn(J2,0,0,0,a),Y2(14,J2));k[h]=0;k[i]=0;k[j]=0;H(g,h,i,j);fn(J2,0,g);b=a;return J2}I2.X=1;function g2(a,d,e,f){c[a+4]=d;c[a]=q3+2;c[a+2]=-1;c[a+3]=-1;k[a+4]=3.4028234663852886e+38;c[a+5]=1;c[a+6]=0;c[a+7]=e;c[a+8]=f;k[a+9]=0;k[a+10]=.30000001192092896}g2.X=1;function o2(a,d,e){var f;c[d]=v[c[c[e]+7]](e,c[a+7]);c[d+1]=v[c[c[e]+7]](e,c[a+8]);f=v[c[c[e]+10]](e,a);c[d+2]=v[c[c[e]+7]](e,f);if(0!=(c[d+2]|0)){v[c[c[e]+12]](e,f)}c[d+3]=c[a+4];c[d+6]=c[a+6]&1;c[d+5]=c[a+3];c[d+4]=c[a+2];k[d+7]=k[a+9];k[d+8]=k[a+10];e=c[d+9]=0;f=a+7;var g=(e|0)<(Po(c[f])|0);a:do{if(g){for(var h=a+7;;){if((uo(c[h],e)|0)==(a|0)&&(c[d+9]=1),e+=1,(e|0)>=(Po(c[f])|0)){break a}}}}while(0);e=0;f=a+8;g=(e|0)<(Po(c[f])|0);a:do{if(g){for(h=a+8;;){if((uo(c[h],e)|0)==(a|0)&&(c[d+9]=1),e+=1,(e|0)>=(Po(c[f])|0)){break a}}}}while(0);return D.wf}o2.X=1;function yj(a,d,e,f,g,h){k[a+1]=(e-d)/2;k[a]=eP(d+k[a+1]);k[a+2]=f;k[a+3]=g;k[a+4]=h}yj.X=1;function Cj(a,d){var e;k[a+5]=0;k[a+6]=0;c[a+7]=0;0<=k[a+1]&&(e=eP(d-k[a]),e<-k[a+1]?(c[a+7]=1,k[a+5]=-(e+k[a+1]),k[a+6]=1):e>k[a+1]&&(c[a+7]=1,k[a+5]=k[a+1]-e,k[a+6]=-1))}Cj.X=1;function vj(a,d){var e;0=(f|0)){break a}}}}else{if((d|0)>(s3(a)|0)&&Fqb(a,d),g=f,(g|0)<(d|0)){for(var i=a+3;;){var j=c[i]+3*g;if(0!=(j|0)){var l=e;c[j]=c[l];k[j]=k[l];c[j+1]=c[l+1];k[j+1]=k[l+1];c[j+2]=c[l+2];k[j+2]=k[l+2]}g+=1;if((g|0)>=(d|0)){break a}}}}}while(0);c[a+1]=d}Eqb.X=1;function Gqb(a,d,e){var f,g;f=t3(a);var h=(d|0)<(f|0);a:do{if(h){if(g=d,(g|0)<(f|0)){for(;;){if(g+=1,(g|0)>=(f|0)){break a}}}}else{if((d|0)>(t3(a)|0)&&Hqb(a,d),g=f,(g|0)<(d|0)){for(var i=a+3;;){var j=c[i]+5*g;if(0!=(j|0)){var l=e;c[j]=c[l];k[j]=k[l];c[j+1]=c[l+1];k[j+1]=k[l+1];c[j+2]=c[l+2];k[j+2]=k[l+2];c[j+3]=c[l+3];k[j+3]=k[l+3];c[j+4]=c[l+4];k[j+4]=k[l+4]}g+=1;if((g|0)>=(d|0)){break a}}}}}while(0);c[a+1]=d}Gqb.X=1;function Iqb(a,d,e,f){var g=b;b+=12;var h=g+4,i=g+7;KW(a);Jqb(a+5);Kqb(a+10);xZ(a,d,g);Eqb(a+5,e,h);Lqb(i);Gqb(a+10,f,i);b=g}Iqb.X=1;function Mqb(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}Mqb.X=1;function t3(a){return c[a+1]}t3.X=1;function Nqb(a){return c[a+2]}Nqb.X=1;function s3(a){return c[a+1]}s3.X=1;function Oqb(a){return c[a+2]}Oqb.X=1;function Hqb(a,d){var e;(Nqb(a)|0)<(d|0)&&(e=Pqb(a,d),Qqb(a,0,t3(a),e),Mqb(a,0,t3(a)),Rqb(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}Hqb.X=1;function Pqb(a,d){return 0!=(d|0)?Sqb(a,d,0):0}Pqb.X=1;function Qqb(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=f+5*d;if(0!=(i|0)){var j=c[h]+5*d;c[i]=c[j];k[i]=k[j];c[i+1]=c[j+1];k[i+1]=k[j+1];c[i+2]=c[j+2];k[i+2]=k[j+2];c[i+3]=c[j+3];k[i+3]=k[j+3];c[i+4]=c[j+4];k[i+4]=k[j+4]}d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}Qqb.X=1;function Rqb(a){0!=(c[a+3]|0)&&(c[a+4]&1&&Tqb(a,c[a+3]),c[a+3]=0)}Rqb.X=1;function Tqb(a,d){$1=a;yh(d)}Tqb.X=1;function Sqb(a,d,e){$1=a;$3=e;return Ue(20*d,16)}Sqb.X=1;function Fqb(a,d){var e;(Oqb(a)|0)<(d|0)&&(e=Uqb(a,d),Vqb(a,0,s3(a),e),Wqb(a,0,s3(a)),Xqb(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}Fqb.X=1;function Uqb(a,d){return 0!=(d|0)?Yqb(a,d,0):0}Uqb.X=1;function Wqb(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}Wqb.X=1;function Kqb(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}Kqb.X=1;function Jqb(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}Jqb.X=1;function u3(a,d){var e;e=c[a+1];var f=c[d+1];(0<=e?e:e+0x10000000000000000)<(0<=f?f:f+0x10000000000000000)?e=-1:(e=c[a+1],f=c[d+1],(0<=e?e:e+0x10000000000000000)>(0<=f?f:f+0x10000000000000000)?e=1:(e=c[a],f=c[d],(0<=e?e:e+0x10000000000000000)<(0<=f?f:f+0x10000000000000000)?e=-1:(e=c[a],f=c[d],e=(0<=e?e:e+0x10000000000000000)>(0<=f?f:f+0x10000000000000000)?1:0)));return e}u3.X=1;function Vqb(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=f+3*d;if(0!=(i|0)){var j=c[h]+3*d;c[i]=c[j];k[i]=k[j];c[i+1]=c[j+1];k[i+1]=k[j+1];c[i+2]=c[j+2];k[i+2]=k[j+2]}d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}Vqb.X=1;function Xqb(a){0!=(c[a+3]|0)&&(c[a+4]&1&&Zqb(a,c[a+3]),c[a+3]=0)}Xqb.X=1;function Zqb(a,d){$1=a;yh(d)}Zqb.X=1;function Yqb(a,d,e){$1=a;$3=e;return Ue(d<<2,16)}Yqb.X=1;function Lqb(a){k[a+4]=0}Lqb.X=1;function v3(a,d,e){var f=b;b+=4;var g,h=f+2;g=c[d+1];g=0>(0x7ffffffffffffc00<=g?g-0x10000000000000000:g)&1;g&1?w3(f,d):(c[f]=c[d],k[f]=k[d],c[f+1]=c[d+1],k[f+1]=k[d+1]);d=e;if(0>(0x7ffffffffffffc00<=d?d-0x10000000000000000:d)){g=(g&1^1)&1,e=-e}x3(h,c[f],e);d=h+1;c[d]+=e*c[f+1];g&1?w3(a,h):(c[a]=c[h],k[a]=k[h],c[a+1]=c[h+1],k[a+1]=k[h+1]);b=f}v3.X=1;function w3(a,d){var e=c[d],f=c[d+1];y3(a,-c[d],(0==(0x7ffffffffffffc00<=e?e-0x10000000000000000:e)&1)+(((f|0)^-1)+4294967296*(Math.round(f/4294967296)^Math.round(-1/4294967296))))}w3.X=1;function x3(a,d,e){$qb(d,e,a,a+1)}x3.X=1;function z3(a,d,e){var f=b;b+=2;var g;g=d;g=0>(0x7ffffffffffffc00<=g?g-0x10000000000000000:g)&1;g&1&&(d=-d);var h=e;if(0>(0x7ffffffffffffc00<=h?h-0x10000000000000000:h)){g=(g&1^1)&1,e=-e}$qb(d,e,f,f+1);g&1?w3(a,f):(c[a]=c[f],k[a]=k[f],c[a+1]=c[f+1],k[a+1]=k[f+1]);b=f}z3.X=1;function $qb(a,d,e,f){var g=b;b+=1;var h,i,j;h=A3(a&4294967295,d&4294967295);i=A3(a&4294967295,B3(d));j=B3(a);j=A3(j,d&4294967295);a=B3(a);d=A3(a,B3(d));c[g]=((j&4294967295)>>>0)+((i&4294967295)>>>0);d+=B3(i)>>>0;d+=B3(j)>>>0;d+=B3(c[g])>>>0;arb(g);i=h+=c[g];j=c[g];if((0<=i?i:i+0x10000000000000000)<(0<=j?j:j+0x10000000000000000)){d+=1}c[e]=h;c[f]=d;b=g}$qb.X=1;function C3(a,d){var e=b;b+=4;var f;f=e+2;var g=c[a+2];(c[a+2]|0)!=(c[d+2]|0)?f=g-c[d+2]:0==(g|0)?f=0:(g=c[a+2],x3(e,c[a],c[d+1]),x3(f,c[a+1],c[d]),f=u3(e,f)*g);b=e;return f}C3.X=1;function brb(a,d){var e=b;b+=16;var f,g=e+2;f=e+4;var h=e+6,i=e+8,j=e+10,l=e+12,m=e+14,n=c[a+4];(c[a+4]|0)!=(c[d+4]|0)?f=n-c[d+4]:0==(n|0)?f=0:c[a+5]&1?f=-D3(d,(c[a+4]|0)*c[a]):(c[i]=c[a],k[i]=k[a],c[i+1]=c[a+1],k[i+1]=k[a+1],n=d+2,c[j]=c[n],k[j]=k[n],c[j+1]=c[n+1],k[j+1]=k[n+1],crb(i,n,e,g),i=a+2,c[l]=c[i],k[l]=k[i],c[l+1]=c[i+1],k[l+1]=k[i+1],c[m]=c[d],k[m]=k[d],c[m+1]=c[d+1],k[m+1]=k[d+1],crb(l,d,f,h),g=u3(g,h),f=0!=(g|0)?c[a+4]*g:c[a+4]*u3(e,f));b=e;return f}brb.X=1;function D3(a,d){var e=b;b+=2;var f,g;g=d;var h=c[a+5]&1;a:do{if(h){var i=f=(c[a+4]|0)*c[a],j=g;(0x7ffffffffffffc00<=i?i-0x10000000000000000:i)>(0x7ffffffffffffc00<=j?j-0x10000000000000000:j)?f=1:(i=g,f=(0x7ffffffffffffc00<=f?f-0x10000000000000000:f)<(0x7ffffffffffffc00<=i?i-0x10000000000000000:i)?-1:0)}else{f=g;f=0<(0x7ffffffffffffc00<=f?f-0x10000000000000000:f);do{if(f){if(!(0>=(c[a+4]|0))){break}f=-1;break a}i=g;j=c[a+4];if(0<=(0x7ffffffffffffc00<=i?i-0x10000000000000000:i)){f=j;break a}if(0<=(j|0)){f=1;break a}g=-g}while(0);v3(e,a+2,g);f=c[a+4]*u3(a,e)}}while(0);b=e;return f}D3.X=1;function crb(a,d,e,f){var g=b;b+=46;var h=a,a=b;b+=2;c[a]=c[h];k[a]=k[h];c[a+1]=c[h+1];k[a+1]=k[h+1];h=d;d=b;b+=2;c[d]=c[h];k[d]=k[h];c[d+1]=c[h+1];k[d+1]=k[h+1];var i=g+6,j=g+12,h=g+18,l=g+24,m=g+26,n=g+30,p=g+34,r=g+38,s=g+42,t=g+2,w=a;c[t]=c[w];k[t]=k[w];c[t+1]=c[w+1];k[t+1]=k[w+1];var t=E3(a),w=g+4,x=d;c[w]=c[x];k[w]=k[x];c[w+1]=c[x+1];k[w+1]=k[x+1];w=E3(d);x3(g,t,w);t=g+8;w=a;c[t]=c[w];k[t]=k[w];c[t+1]=c[w+1];k[t+1]=k[w+1];t=E3(a);w=g+10;x=d;c[w]=c[x];k[w]=k[x];c[w+1]=c[x+1];k[w+1]=k[x+1];w=F3(d);x3(i,t,w);t=g+14;w=a;c[t]=c[w];k[t]=k[w];c[t+1]=c[w+1];k[t+1]=k[w+1];t=F3(a);w=g+16;x=d;c[w]=c[x];k[w]=k[x];c[w+1]=c[x+1];k[w+1]=k[x+1];w=E3(d);x3(j,t,w);t=g+20;w=a;c[t]=c[w];k[t]=k[w];c[t+1]=c[w+1];k[t+1]=k[w+1];a=F3(a);t=g+22;w=d;c[t]=c[w];k[t]=k[w];c[t+1]=c[w+1];k[t+1]=k[w+1];d=F3(d);x3(h,a,d);d=g+28;c[d]=c[i];k[d]=k[i];c[d+1]=c[i+1];k[d+1]=k[i+1];d=E3(i);G3(m,d);d=g+32;c[d]=c[j];k[d]=k[j];c[d+1]=c[j+1];k[d+1]=k[j+1];d=E3(j);G3(n,d);H3(l,m,n);m=g+36;c[m]=c[i];k[m]=k[i];c[m+1]=c[i+1];k[m+1]=k[i+1];i=F3(i);G3(p,i);I3(h,p);p=g+40;c[p]=c[j];k[p]=k[j];c[p+1]=c[j+1];k[p+1]=k[j+1];j=F3(j);G3(r,j);I3(h,r);r=g+44;c[r]=c[l];k[r]=k[l];c[r+1]=c[l+1];k[r+1]=k[l+1];r=F3(l);G3(s,r);I3(h,s);drb(l);I3(g,l);erb(g,l)&&frb(h);c[e]=c[g];k[e]=k[g];c[e+1]=c[g+1];k[e+1]=k[g+1];c[f]=c[h];k[f]=k[h];c[f+1]=c[h+1];k[f+1]=k[h+1];b=g}crb.X=1;function J3(a,d,e){var f,g;f=grb(a+12);g=grb(a+12);c[f+2]=g;c[g+2]=f;c[f+5]=c[a+25];c[g+5]=c[a+25];c[f+3]=e;c[g+3]=d;c[f+4]=0;c[g+4]=0;d=a+29;c[d]+=1;(c[a+29]|0)>(c[a+30]|0)&&(c[a+30]=c[a+29]);return f}J3.X=1;function grb(a){var d;d=c[a+2];0==(d|0)&&(d=c[a+1],0!=(d|0)?c[a+1]=c[d+2]:(d=Ue(12,16),0==(d|0)?d=0:hrb(d,c[a+3]),c[d+2]=c[a],c[a]=d),d=irb(d));c[a+2]=c[d];a=d;0==(a|0)?a=0:(c[a]=0,k[a]=0,c[a+1]=0,k[a+1]=0,c[a+2]=0,k[a+2]=0,c[a+3]=0,k[a+3]=0,c[a+4]=0,k[a+4]=0,c[a+5]=0,k[a+5]=0);return a}grb.X=1;function jrb(a,d,e,f,g){var h,i,j,l,m,n,p,r,s,t,w;$2=a;a=c[d+3];j=c[e+2];m=(c[a+13]|0)==(c[j+13]|0);a:do{if(m){if((c[a+14]|0)!=(c[j+14]|0)){h=20}else{if(h=c[j+1],(h|0)==(j|0)){c[f]=a,0!=(c[j+2]|0)&&(j=c[c[j+2]+3]),c[g]=j,i=0,h=86}else{l=c[j];c[h]=l;c[l+1]=h;var x=(j|0)==(c[e]|0);b:do{if(x){p=(c[l+13]|0)<(c[h+13]|0);do{if(!p&&!((c[l+13]|0)==(c[h+13]|0)&&(c[l+14]|0)<(c[h+14]|0))){c[e]=h;break b}}while(0);c[e]=l}}while(0);if((j|0)==(c[e+1]|0)){x=(c[l+13]|0)>(c[h+13]|0);do{if(!x&&!((c[l+13]|0)==(c[h+13]|0)&&(c[l+14]|0)>(c[h+14]|0))){c[e+1]=h;h=20;break a}}while(0);c[e+1]=l}h=20}}}else{h=20}}while(0);if(20==h){a=c[d+1];j=c[e+1];m=i=0;h=1;l=0;for(x=j;;){n=x=(c[x+13]-c[a+13])*h;x=0<(x|0);a:do{if(x){b:for(;;){p=c[j+14]-c[a+14];r=a;r=0!=(l|0)?c[r]:c[r+1];w=(r|0)!=(a|0);do{if(w&&(s=(c[r+13]-c[a+13])*h,t=c[r+14]-c[a+14],0>=(t|0))){if(0!=(s|0)){if(0<=(s|0)){break}if(!((n*t|0)<=(s*p|0))){break}}a=r;n=(c[j+13]-c[a+13])*h;continue b}}while(0);r=j;r=0!=(l|0)?c[r]:c[r+1];if((r|0)==(j|0)){break a}s=(c[r+13]-c[j+13])*h;t=c[r+14]-c[j+14];w=(c[r+13]-c[a+13])*h;if(0>=(w|0)){break a}if(0<=(t|0)){break a}if(0!=(s|0)){if(0<=(s|0)){break a}if((n*t|0)>=(s*p|0)){break a}}j=r;n=w}}else{if(0>(n|0)){b:for(;;){p=c[j+14]-c[a+14];r=j;r=0!=(l|0)?c[r+1]:c[r];w=(r|0)!=(j|0);do{if(w&&(s=(c[r+13]-c[j+13])*h,t=c[r+14]-c[j+14],0<=(t|0))){if(0!=(s|0)){if(0<=(s|0)){break}if(!((n*t|0)<=(s*p|0))){break}}j=r;n=(c[j+13]-c[a+13])*h;continue b}}while(0);r=a;r=0!=(l|0)?c[r+1]:c[r];if((r|0)==(a|0)){break a}s=(c[r+13]-c[a+13])*h;t=c[r+14]-c[a+14];w=(c[j+13]-c[r+13])*h;if(0<=(w|0)){break a}if(0>=(t|0)){break a}if(0!=(s|0)){if(0<=(s|0)){break a}if((n*t|0)>=(s*p|0)){break a}}a=r;n=w}}else{p=c[a+13];s=c[a+14];for(t=a;;){r=t;r=w=0!=(l|0)?c[r]:c[r+1];if((w|0)==(a|0)){break}if((c[r+13]|0)!=(p|0)){break}if(!((c[r+14]|0)<=(s|0))){break}t=r;s=c[r+14]}a=t;s=c[j+14];for(t=j;;){r=t;r=w=0!=(l|0)?c[r+1]:c[r];if((w|0)==(j|0)){break}if((c[r+13]|0)!=(p|0)){break}if(!((c[r+14]|0)>=(s|0))){break}t=r;s=c[r+14]}j=t}}}while(0);0==(l|0)&&(i=a,m=j,a=c[d],j=c[e],h=-1);l=x=l+1;n=j;if(!(1>=(x|0))){break}x=n}c[a+1]=n;c[j]=a;c[i]=m;c[m+1]=i;(c[c[e]+13]|0)<(c[c[d]+13]|0)&&(c[d]=c[e]);(c[c[e+1]+13]|0)>=(c[c[d+1]+13]|0)&&(c[d+1]=c[e+1]);c[d+3]=c[e+3];c[f]=i;c[g]=m;i=1}return i}jrb.X=1;function K3(a,d){return c[a+3]+d}K3.X=1;function krb(a,d){return(c[a]|0)!=(c[d]|0)?1:(c[a+1]|0)!=(c[d+1]|0)?1:(c[a+2]|0)!=(c[d+2]|0)}krb.X=1;function L3(a,d){c[a]=d;c[d+1]=a}L3.X=1;function lrb(a,d){return(c[a]|0)==(c[d]|0)?(c[a+1]|0)!=(c[d+1]|0)?0:(c[a+2]|0)==(c[d+2]|0):0}lrb.X=1;function M3(a,d,e,f){var g=b;b+=8;var h,i,j,l,m,n,p=g+4;i=e-d;do{if(0==(i|0)){c[f]=0,c[f+1]=0,c[f+2]=0,c[f+3]=0,h=27}else{if(2==(i|0)){if(j=c[K3(a+20,d)],l=j+18,krb(j+13,l+13)){m=c[j+13]-c[l+13];n=c[j+14]-c[l+14];0==(m|0)?0!=(n|0)?h=10:((c[j+15]|0)>(c[l+15]|0)&&(h=l,l=j,j=h),c[j]=j,c[j+1]=j,c[f]=j,c[f+1]=j,c[f+2]=j,c[f+3]=j,h=20):h=10;a:do{if(10==h){c[j]=l;c[j+1]=l;c[l]=j;c[l+1]=j;0>(m|0)?h=13:0==(m|0)&&0>(n|0)?h=13:(c[f]=l,c[f+1]=j,h=15);13==h&&(c[f]=j,c[f+1]=l);var r=0>(n|0);do{if(!r&&!(0==(n|0)&&0>(m|0))){c[f+2]=l;c[f+3]=j;break a}}while(0);c[f+2]=j;c[f+3]=l}}while(0);m=J3(a,j,l);L3(m,m);c[j+2]=m;m=c[m+2];L3(m,m);c[l+2]=m;h=27}else{h=21}}else{if(1==(i|0)){h=21}else{j=((i|0)/2&-1)+d;l=g;m=c[K3(a+20,j-1)]+13;c[l]=c[m];k[l]=k[m];c[l+1]=c[m+1];k[l+1]=k[m+1];c[l+2]=c[m+2];k[l+2]=k[m+2];c[l+3]=c[m+3];k[l+3]=k[m+3];l=j;for(m=a+20;(l|0)<(e|0)&&lrb(c[K3(m,l)]+13,g);){l+=1}M3(a,d,j,f);mrb(p);M3(a,l,e,p);nrb(a,f,p);h=27}}}}while(0);21==h&&(a=c[K3(a+20,d)],c[a+2]=0,c[a]=a,c[a+1]=a,c[f]=a,c[f+1]=a,c[f+2]=a,c[f+3]=a);b=g}M3.X=1;function orb(a,d){return c[d+1]*c[a+1]+c[d]*c[a]+c[d+2]*c[a+2]}orb.X=1;function nrb(a,d,e){var f=b;b+=68;var g,h,i,j,l,m=f+1,n,p,r,s,t=f+2,w=f+6,x=f+10,y=f+13,z=f+17,A,C=f+20,B=f+21,K=f+25,E=f+29,G=f+33,M=f+34,L=f+38,F=f+42,I,R,O=f+46,Z=f+50,P=f+54,S=f+57,da=f+60,V,ba=f+63,$,Y,la=f+66,ka=f+67,ja,ea=0!=(c[e+1]|0);a:do{if(ea){if(0!=(c[d+1]|0)){p=a+25;c[p]-=1;l=j=i=h=c[f]=0;s=r=p=n=c[m]=0;I=jrb(a,d,e,f,m);A=c[m];if(I){N3(w,A,c[f]);O3(y,0,0,-1);P3(x,y,w);Q3(z,w,x);A=c[c[f]+2];c[C]=0;I=0!=(A|0);b:do{if(I){for(;;){N3(B,c[A+3],c[f]);$dot=V=R3(B,x);V=0==(0x7ffffffffffffc00<=V?V-0x10000000000000000:V);do{if(V){N3(K,c[A+3],c[f]);var ca=R3(K,z);if(0<(0x7ffffffffffffc00<=ca?ca-0x10000000000000000:ca)){if(0!=(c[C]|0)&&(ca=c[C],O3(E,0,0,-1),1!=(S3(ca,A,w,E)|0))){break}c[C]=A}}}while(0);A=c[A];if((A|0)==(c[c[f]+2]|0)){break b}}}}while(0);A=I=c[c[m]+2];c[G]=0;I=0!=(I|0);b:do{if(I){for(;;){N3(M,c[A+3],c[m]);$dot1=V=R3(M,x);V=0==(0x7ffffffffffffc00<=V?V-0x10000000000000000:V);do{if(V&&(N3(L,c[A+3],c[m]),ca=R3(L,z),0<(0x7ffffffffffffc00<=ca?ca-0x10000000000000000:ca))){if(0!=(c[G]|0)&&(ca=c[G],O3(F,0,0,-1),2!=(S3(ca,A,w,F)|0))){break}c[G]=A}}while(0);A=c[A];if((A|0)==(c[c[m]+2]|0)){break b}}}}while(0);g=0!=(c[C]|0)?22:0!=(c[G]|0)?22:26;22==g&&(prb(a,c[f],c[m],C,G,0,0),0!=(c[C]|0)&&(c[f]=c[c[C]+3]),0!=(c[G]|0)&&(c[m]=c[c[G]+3]));A=t;I=c[m]+13;c[A]=c[I];k[A]=k[I];c[A+1]=c[I+1];k[A+1]=k[I+1];c[A+2]=c[I+2];k[A+2]=k[I+2];c[A+3]=c[I+3];k[A+3]=k[I+3];A=t+2}else{I=t,A+=13,c[I]=c[A],k[I]=k[A],c[I+1]=c[A+1],k[I+1]=k[A+1],c[I+2]=c[A+2],k[I+2]=k[A+2],c[I+3]=c[A+3],k[I+3]=k[A+3],A=t}c[A]+=1;A=c[f];I=c[m];R=1;for(var W=ca=t;;){N3(O,c[m],c[f]);T3(Z,t,c[f]+13);P3(P,Z,O);Q3(S,O,P);U3(da,0,0);V=qrb(a,0,c[f],O,P,S,da);U3(ba,0,0);$=Y=qrb(a,1,c[m],O,P,S,ba);ja=0!=(V|0);do{if(ja){var U=Y;g=34}else{if(0!=($|0)){if(0==(V|0)){var X=1;g=36}else{U=$,g=34}}else{a=J3(a,c[f],c[m]);L3(a,a);c[c[f]+2]=a;a=c[a+2];L3(a,a);c[c[m]+2]=a;break a}}}while(0);34==g&&(X=0==(U|0)?-1:C3(da,ba));Y=X;g=R&1?40:0<=(Y|0)?rrb(ba)?47:40:rrb(da)?47:40;40==g&&(R=g=J3(a,c[f],c[m]),0!=(l|0)?c[l+1]=R:j=R,c[g]=l,l=g,R=g=c[g+2],0!=(s|0)?c[s]=R:r=R,c[g+1]=s,s=g);c[la]=V;c[ka]=$;g=Y;0==(g|0)&&(prb(a,c[f],c[m],la,ka,0,0),g=Y);g=0<=(g|0);do{if(g&&0!=(c[ka]|0)){if(0!=(n|0)){R=c[n];var ma=(R|0)!=($|0);b:do{if(ma){for(;;){if(ja=c[R],V3(a,R),R=ja,(R|0)==($|0)){break b}}}}while(0);R=n}else{R=0}R=0!=(R|0);0!=(s|0)?(R?L3(n,r):(L3(c[$+1],r),p=r),L3(s,$),s=r=0):R||(p=$);n=c[m]+13;c[ca]=c[n];k[ca]=k[n];c[ca+1]=c[n+1];k[ca+1]=k[n+1];c[ca+2]=c[n+2];k[ca+2]=k[n+2];c[ca+3]=c[n+3];k[ca+3]=k[n+3];c[m]=c[c[ka]+3];n=c[c[ka]+2]}}while(0);$=0>=(Y|0);do{if($&&0!=(c[la]|0)){if(0!=(h|0)){Y=c[h+1];R=(Y|0)!=(V|0);b:do{if(R){for(;;){if(g=c[Y+1],V3(a,Y),Y=g,(Y|0)==(V|0)){break b}}}}while(0);Y=h}else{Y=0}Y=0!=(Y|0);0!=(l|0)?(g=j,Y?L3(g,h):(L3(g,c[V]),i=j),L3(V,l),l=j=0):Y||(i=V);h=c[f]+13;c[W]=c[h];k[W]=k[h];c[W+1]=c[h+1];k[W+1]=k[h+1];c[W+2]=c[h+2];k[W+2]=k[h+2];c[W+3]=c[h+3];k[W+3]=k[h+3];c[f]=c[c[la]+3];h=c[c[la]+2]}}while(0);if((c[f]|0)==(A|0)&&(c[m]|0)==(I|0)){break}R=0}V=0==(h|0);do{if(V){L3(j,l),c[c[f]+2]=l}else{A=c[h+1];ca=(A|0)!=(i|0);b:do{if(ca){for(;;){if(I=c[A+1],V3(a,A),A=I,(A|0)==(i|0)){break b}}}}while(0);0!=(l|0)&&(L3(j,h),L3(i,l))}}while(0);if(0==(n|0)){L3(s,r),c[c[m]+2]=s}else{i=c[n];l=(i|0)!=(p|0);b:do{if(l){for(;;){if(j=c[i],V3(a,i),i=j,(i|0)==(p|0)){break b}}}}while(0);0!=(s|0)&&(L3(n,r),L3(s,p))}}else{p=d,r=e,c[p]=c[r],k[p]=k[r],c[p+1]=c[r+1],k[p+1]=k[r+1],c[p+2]=c[r+2],k[p+2]=k[r+2],c[p+3]=c[r+3],k[p+3]=k[r+3]}}}while(0);b=f}nrb.X=1;function S3(a,d,e,f){var g=b;b+=14;var h=g+3,i=g+6,j=g+10,l=(c[a+1]|0)==(d|0);(c[a]|0)==(d|0)?l?(P3(g,f,e),N3(i,c[a+3],c[c[d+2]+3]),N3(j,c[d+3],c[c[d+2]+3]),P3(h,i,j),a=orb(g,h),a=0<(0x7ffffffffffffc00<=a?a-0x10000000000000000:a)?2:1):a=2:a=l?1:0;b=g;return a}S3.X=1;function P3(a,d,e){srb(a,c[e+2]*c[d+1]-c[e+1]*c[d+2]|0,c[e]*c[d+2]-c[e+2]*c[d]|0,c[e+1]*c[d]-c[e]*c[d+1]|0)}P3.X=1;function N3(a,d,e){T3(a,d+13,e+13)}N3.X=1;function R3(a,d){return c[d+1]*(c[a+1]|0)+c[d]*(c[a]|0)+c[d+2]*(c[a+2]|0)}R3.X=1;function trb(a){0==(c[a+2]|0)?(a=c[a+1],a=0==(0x7ffffffffffffc00<=a?a-0x10000000000000000:a)):a=0;return a}trb.X=1;function qrb(a,d,e,f,g,h,i){var j=b;b+=7;var l,m,n=j+4,p,d=d&1;l=0;m=c[e+2];var r=0!=(m|0);a:do{if(r){for(var s=a+25,t=n,w=n;;){if((c[m+5]|0)>(c[s]|0)&&(N3(j,c[m+3],e),U3(n,R3(j,h),R3(j,g)),!trb(n))){if(p=i,0==(l|0)){l=p,c[l]=c[t],k[l]=k[t],c[l+1]=c[t+1],k[l+1]=k[t+1],c[l+2]=c[t+2],k[l+2]=k[t+2],l=m}else{var x=C3(n,p);p=x;0>(x|0)?(l=i,c[l]=c[w],k[l]=k[w],c[l+1]=c[w+1],k[l+1]=k[w+1],c[l+2]=c[w+2],k[l+2]=k[w+2],l=m):0==(p|0)&&(d&1|0)==(2==(S3(l,m,f,j)|0)&1|0)&&(l=m)}}m=c[m];if((m|0)==(c[e+2]|0)){break a}}}}while(0);b=j;return l}qrb.X=1;function prb(a,d,e,f,g,h,i){var j=b;b+=94;var l,m,n=j+4,p=j+8,r=j+12,s=j+15,t,w=j+19,x,y,z,A,C,B,K,E,G=j+22,M,L,F=j+26,I,R=j+30,O=j+34,Z=j+37,P=j+40,S,da=j+44,V,ba,$,Y=j+48,la=j+52,ka=j+55,ja,ea=j+58,ca,W,U=j+62,X,ma=j+66,ga=j+70,ha=j+73,ta=j+76,ra,ua=j+80,za,Za,ib,Ca=j+84,Sa=j+88,mb=j+91;l=c[f];m=c[g];var Oa=0!=(l|0)?c[l+3]+13:d+13;c[j]=c[Oa];k[j]=k[Oa];c[j+1]=c[Oa+1];k[j+1]=k[Oa+1];c[j+2]=c[Oa+2];k[j+2]=k[Oa+2];c[j+3]=c[Oa+3];k[j+3]=k[Oa+3];var Pa=0!=(m|0)?c[m+3]+13:e+13;c[n]=c[Pa];k[n]=k[Pa];c[n+1]=c[Pa+1];k[n+1]=k[Pa+1];c[n+2]=c[Pa+2];k[n+2]=k[Pa+2];c[n+3]=c[Pa+3];k[n+3]=k[Pa+3];T3(p,e+13,d+13);T3(s,c[(0!=(l|0)?l:m)+3]+13,d+13);P3(r,s,p);t=R3(d+13,r);Q3(w,p,r);x=R3(j,w);var fc=0!=(c[f]|0);a:do{if(fc){for(var jb=a+25,La=j;;){if((c[c[f]+3]|0)==(h|0)){break a}y=c[c[c[f]+2]+1];var fb=R3(c[y+3]+13,r),Rb=t;if((0x7ffffffffffffc00<=fb?fb-0x10000000000000000:fb)<(0x7ffffffffffffc00<=Rb?Rb-0x10000000000000000:Rb)){break a}if((c[y+5]|0)==(c[jb]|0)){break a}var pb=z=R3(c[y+3]+13,w),Sb=x;if((0x7ffffffffffffc00<=pb?pb-0x10000000000000000:pb)<=(0x7ffffffffffffc00<=Sb?Sb-0x10000000000000000:Sb)){break a}x=z;c[f]=y;var ab=c[y+3]+13;c[La]=c[ab];k[La]=k[ab];c[La+1]=c[ab+1];k[La+1]=k[ab+1];c[La+2]=c[ab+2];k[La+2]=k[ab+2];c[La+3]=c[ab+3];k[La+3]=k[ab+3]}}}while(0);A=R3(n,w);var Ib=0!=(c[g]|0);a:do{if(Ib){for(var Fc=a+25,Ac=n;;){if((c[c[g]+3]|0)==(i|0)){break a}C=c[c[c[g]+2]];var ob=R3(c[C+3]+13,r),Gc=t;if((0x7ffffffffffffc00<=ob?ob-0x10000000000000000:ob)<(0x7ffffffffffffc00<=Gc?Gc-0x10000000000000000:Gc)){break a}if((c[C+5]|0)==(c[Fc]|0)){break a}var Yc=B=R3(c[C+3]+13,w),Cc=A;if((0x7ffffffffffffc00<=Yc?Yc-0x10000000000000000:Yc)<=(0x7ffffffffffffc00<=Cc?Cc-0x10000000000000000:Cc)){break a}A=B;c[g]=C;var Ub=c[C+3]+13;c[Ac]=c[Ub];k[Ac]=k[Ub];c[Ac+1]=c[Ub+1];k[Ac+1]=k[Ub+1];c[Ac+2]=c[Ub+2];k[Ac+2]=k[Ub+2];c[Ac+3]=c[Ub+3];k[Ac+3]=k[Ub+3]}}}while(0);var Uc=A-x;K=Uc;var nd=0<(0x7ffffffffffffc00<=Uc?Uc-0x10000000000000000:Uc);a:do{if(nd){var Ic=a+25,tc=j,hd=a+25,Tb=n;b:for(;;){T3(G,n,j);E=W3(G,p);var Jc=0!=(c[f]|0);do{if(Jc&&(c[c[f]+3]|0)!=(h|0)&&(M=c[c[c[f]]+2],(c[M+5]|0)>(c[Ic]|0))){T3(F,c[M+3]+13,j);L=R3(F,w);T3(R,c[M+3]+13,j);I=W3(R,p);var ub=L;if(0==(0x7ffffffffffffc00<=ub?ub-0x10000000000000000:ub)){var uc=I;if(0<=(0x7ffffffffffffc00<=uc?uc-0x10000000000000000:uc)){break}}else{var Kc=L;if(0<=(0x7ffffffffffffc00<=Kc?Kc-0x10000000000000000:Kc)){break}U3(O,I,L);U3(Z,E,K);if(!(0<=(C3(O,Z)|0))){break}}var gb=c[M+3]+13;c[tc]=c[gb];k[tc]=k[gb];c[tc+1]=c[gb+1];k[tc+1]=k[gb+1];c[tc+2]=c[gb+2];k[tc+2]=k[gb+2];c[tc+3]=c[gb+3];k[tc+3]=k[gb+3];T3(P,n,j);K=R3(P,w);c[f]=(c[f]|0)==(l|0)?0:M;continue b}}while(0);if(0==(c[g]|0)){break a}if((c[c[g]+3]|0)==(i|0)){break a}S=c[c[c[g]+2]];if((c[S+5]|0)<=(c[hd]|0)){break a}T3(da,c[S+3]+13,n);var gc=R3(da,r);if(0!=(0x7ffffffffffffc00<=gc?gc-0x10000000000000000:gc)){break a}V=R3(da,w);ba=W3(da,p);T3(Y,c[S+3]+13,j);var Lc=$=R3(Y,w);if(0>=(0x7ffffffffffffc00<=Lc?Lc-0x10000000000000000:Lc)){break a}var Dc=V;if(0==(0x7ffffffffffffc00<=Dc?Dc-0x10000000000000000:Dc)){var Eb=ba;if(0<=(0x7ffffffffffffc00<=Eb?Eb-0x10000000000000000:Eb)){break a}}else{var Ra=V;if(0<=(0x7ffffffffffffc00<=Ra?Ra-0x10000000000000000:Ra)){break a}U3(la,ba,V);U3(ka,E,K);if(0>=(C3(la,ka)|0)){break a}}c[g]=S;var qb=c[c[g]+3]+13;c[Tb]=c[qb];k[Tb]=k[qb];c[Tb+1]=c[qb+1];k[Tb+1]=k[qb+1];c[Tb+2]=c[qb+2];k[Tb+2]=k[qb+2];c[Tb+3]=c[qb+3];k[Tb+3]=k[qb+3];K=$}}else{var Ab=K;if(0>(0x7ffffffffffffc00<=Ab?Ab-0x10000000000000000:Ab)){var hc=a+25,Hc=n,ic=a+25,db=j;b:for(;;){T3(ea,n,j);ja=W3(ea,p);var bb=0!=(c[g]|0);do{if(bb&&(c[c[g]+3]|0)!=(i|0)&&(ca=c[c[c[g]+1]+2],(c[ca+5]|0)>(c[hc]|0))){T3(U,c[ca+3]+13,n);W=R3(U,w);T3(ma,c[ca+3]+13,n);X=W3(ma,p);var id=W;if(0==(0x7ffffffffffffc00<=id?id-0x10000000000000000:id)){var Zc=X;if(0>=(0x7ffffffffffffc00<=Zc?Zc-0x10000000000000000:Zc)){break}}else{var vb=W;if(0<=(0x7ffffffffffffc00<=vb?vb-0x10000000000000000:vb)){break}U3(ga,X,W);U3(ha,ja,K);if(!(0>=(C3(ga,ha)|0))){break}}var rb=c[ca+3]+13;c[Hc]=c[rb];k[Hc]=k[rb];c[Hc+1]=c[rb+1];k[Hc+1]=k[rb+1];c[Hc+2]=c[rb+2];k[Hc+2]=k[rb+2];c[Hc+3]=c[rb+3];k[Hc+3]=k[rb+3];T3(ta,n,j);K=R3(ta,w);c[g]=(c[g]|0)==(m|0)?0:ca;continue b}}while(0);if(0==(c[f]|0)){break a}if((c[c[f]+3]|0)==(h|0)){break a}ra=c[c[c[f]+2]+1];if((c[ra+5]|0)<=(c[ic]|0)){break a}T3(ua,c[ra+3]+13,j);var vc=R3(ua,r);if(0!=(0x7ffffffffffffc00<=vc?vc-0x10000000000000000:vc)){break a}za=R3(ua,w);Za=W3(ua,p);T3(Ca,n,c[ra+3]+13);var Qc=ib=R3(Ca,w);if(0<=(0x7ffffffffffffc00<=Qc?Qc-0x10000000000000000:Qc)){break a}var Rc=za;if(0==(0x7ffffffffffffc00<=Rc?Rc-0x10000000000000000:Rc)){var Xd=Za;if(0>=(0x7ffffffffffffc00<=Xd?Xd-0x10000000000000000:Xd)){break a}}else{var Sc=za;if(0<=(0x7ffffffffffffc00<=Sc?Sc-0x10000000000000000:Sc)){break a}U3(Sa,Za,za);U3(mb,ja,K);if(0<=(C3(Sa,mb)|0)){break a}}c[f]=ra;var Mc=c[c[f]+3]+13;c[db]=c[Mc];k[db]=k[Mc];c[db+1]=c[Mc+1];k[db+1]=k[Mc+1];c[db+2]=c[Mc+2];k[db+2]=k[Mc+2];c[db+3]=c[Mc+3];k[db+3]=k[Mc+3];K=ib}}}}while(0);b=j}prb.X=1;function T3(a,d,e){O3(a,c[d]-c[e],c[d+1]-c[e+1],c[d+2]-c[e+2])}T3.X=1;function Q3(a,d,e){srb(a,c[e+2]*(c[d+1]|0)-c[e+1]*(c[d+2]|0),c[e]*(c[d+2]|0)-c[e+2]*(c[d]|0),c[e+1]*(c[d]|0)-c[e]*(c[d+1]|0))}Q3.X=1;function W3(a,d){return c[d+1]*c[a+1]+c[d]*c[a]+c[d+2]*c[a+2]|0}W3.X=1;function rrb(a){0>(c[a+2]|0)?(a=c[a+1],a=0==(0x7ffffffffffffc00<=a?a-0x10000000000000000:a)):a=0;return a}rrb.X=1;function X3(a,d){return(d<<2)+c[a+3]}X3.X=1;function urb(a,d){return(c[a+1]|0)<(c[d+1]|0)?1:(c[a+1]|0)!=(c[d+1]|0)?0:(c[a]|0)<(c[d]|0)?1:(c[a]|0)!=(c[d]|0)?0:(c[a+2]|0)<(c[d+2]|0)}urb.X=1;function vrb(a){c[a+1]=c[a];c[a+2]=0}vrb.X=1;function wrb(a,d){c[a+3]=d}wrb.X=1;function V3(a,d){var e,f;e=c[d];f=c[d+2];(e|0)!=(d|0)?(c[e+1]=c[d+1],c[c[d+1]]=e,c[c[f+3]+2]=e):c[c[f+3]+2]=0;e=c[f];(e|0)!=(f|0)?(c[e+1]=c[f+1],c[c[f+1]]=e,c[c[d+3]+2]=e):c[c[d+3]+2]=0;xrb(a+12,d);xrb(a+12,f);e=a+29;c[e]-=1}V3.X=1;function yrb(a,d,e){var f,g;f=Y3(a);var h=(d|0)<(f|0);a:do{if(h){if(g=d,(g|0)<(f|0)){for(;;){if(g+=1,(g|0)>=(f|0)){break a}}}}else{if((d|0)>(Y3(a)|0)&&zrb(a,d),g=f,(g|0)<(d|0)){for(var i=a+3;;){var j=(g<<2)+c[i];if(0!=(j|0)){var l=e;c[j]=c[l];k[j]=k[l];c[j+1]=c[l+1];k[j+1]=k[l+1];c[j+2]=c[l+2];k[j+2]=k[l+2];c[j+3]=c[l+3];k[j+3]=k[l+3]}g+=1;if((g|0)>=(d|0)){break a}}}}}while(0);c[a+1]=d}yrb.X=1;function Arb(a,d){1<(Y3(a)|0)&&Z3(a,d,0,Y3(a)-1)}Arb.X=1;function Brb(a,d,e,f,g){var h=b;b+=80;var i=h+4,j=h+5,l=h+6,m=h+7,n=h+11,p=h+12,r=h+13,s=h+14,t=h+18,w=h+19,x=h+20,y=h+21,z=h+25,A=h+29,C=h+30,B=h+34,K=h+38,E=h+39,G=h+44,M=h+48,L=h+52,F=h+53,I=h+54,R=h+55,O=h+59,Z=h+63,P=h+67,S=h+71,da=h+75,V=h+76,e=e&1;k[i]=1.0000000150474662e+30;k[j]=1.0000000150474662e+30;k[l]=1.0000000150474662e+30;H(h,i,j,l);k[n]=-1.0000000150474662e+30;k[p]=-1.0000000150474662e+30;k[r]=-1.0000000150474662e+30;H(m,n,p,r);i=d;j=e&1;a:do{if(j){if(l=0,(l|0)<(g|0)){for(;;){if(n=i,k[t]=k[n],k[w]=k[n+1],k[x]=k[n+2],H(s,t,w,x),i+=f,hp(h,s),gp(m,s),l+=1,(l|0)>=(g|0)){break a}}}}else{if(l=0,(l|0)<(g|0)){for(;;){if(n=i,H(y,n,n+1,n+2),i+=f,hp(h,y),gp(m,y),l+=1,(l|0)>=(g|0)){break a}}}}}while(0);N(z,m,h);c[a+28]=fC(z);c[a+26]=aC(z);(c[a+26]|0)==(c[a+28]|0)&&(c[a+26]=(c[a+28]+1|0)%3);c[a+27]=-c[a+28]+ -c[a+26]+3;k[A]=10216;KB(z,A);c[a]=c[z];k[a]=k[z];c[a+1]=c[z+1];k[a+1]=k[z+1];c[a+2]=c[z+2];k[a+2]=k[z+2];c[a+3]=c[z+3];k[a+3]=k[z+3];0=(g|0)){break a}}}}else{if(C=0,(C|0)<(g|0)){e=a+4;m=Z;s=P;t=a+27;w=a+28;for(x=a+26;;){if(G=i,H(Z,G,G+1,G+2),i+=f,N(S,Z,e),ig(P,S,z),c[m]=c[s],k[m]=k[s],c[m+1]=c[s+1],k[m+1]=k[s+1],c[m+2]=c[s+2],k[m+2]=k[s+2],c[m+3]=c[s+3],k[m+3]=k[s+3],c[X3(E,C)]=k[Z+c[t]]&-1,c[X3(E,C)+1]=k[Z+c[w]]&-1,c[X3(E,C)+2]=k[Z+c[x]]&-1,c[X3(E,C)+3]=C,C+=1,(C|0)>=(g|0)){break a}}}}}while(0);Arb(E,24);vrb(a+8);wrb(a+8,g);c[da]=0;a4(a+20,g,da);f=0;M=a+8;for(L=a+20;(f|0)<(g|0);){z=Drb(M),c[z+2]=0,F=z+13,I=X3(E,f),c[F]=c[I],k[F]=k[I],c[F+1]=c[I+1],k[F+1]=k[I+1],c[F+2]=c[I+2],k[F+2]=k[I+2],c[F+3]=c[I+3],k[F+3]=k[I+3],c[z+17]=-1,c[K3(L,f)]=z,f+=1}Erb(E);Frb(a+12);Grb(a+12,6*g);c[a+29]=0;c[a+30]=0;c[a+25]=-3;mrb(V);M3(a,0,g,V);c[a+31]=c[V];Erb(E);b=h}Brb.X=1;function Frb(a){c[a+1]=c[a];c[a+2]=0}Frb.X=1;function Grb(a,d){c[a+3]=d}Grb.X=1;function a4(a,d,e){var f,g;f=b4(a);var h=(d|0)<(f|0);a:do{if(h){if(g=d,(g|0)<(f|0)){for(;;){if(g+=1,(g|0)>=(f|0)){break a}}}}else{if((d|0)>(b4(a)|0)&&Hrb(a,d),g=f,(g|0)<(d|0)){for(var i=a+3;;){var j=c[i]+g;0!=(j|0)&&(c[j]=c[e]);g+=1;if((g|0)>=(d|0)){break a}}}}}while(0);c[a+1]=d}a4.X=1;function Drb(a){var d;d=c[a+2];0==(d|0)&&(d=c[a+1],0!=(d|0)?c[a+1]=c[d+2]:(d=Ue(12,16),0==(d|0)?d=0:Irb(d,c[a+3]),c[d+2]=c[a],c[a]=d),d=Jrb(d));c[a+2]=c[d];a=d;0==(a|0)?a=0:Krb(a);return a}Drb.X=1;function Erb(a){Lrb(a,0,Y3(a));Mrb(a);Crb(a)}Erb.X=1;function c4(a,d,e){var f=b;b+=4;k[f+c[d+27]]=c[e]|0;k[f+c[d+28]]=c[e+1]|0;k[f+c[d+26]]=c[e+2]|0;ig(a,f,d);b=f}c4.X=1;function Nrb(a,d,e){var f=b;b+=9;var g=f+4,h=f+8;c4(f,d,e+7);c4(g,d,e+11);qn(a,f,g);if((c[d+27]+1|0)==(c[d+28]|0)){d=4}else{if((c[d+27]-2|0)==(c[d+28]|0)){d=4}else{var i=-JB(a),d=6}}4==d&&(i=JB(a));k[h]=i;KB(a,h);b=f}Nrb.X=1;function Orb(a,d,e){var f=b;b+=8;var g=f+4,h=Prb(e);k[f+c[d+27]]=h;h=Qrb(e);k[f+c[d+28]]=h;e=Rrb(e);k[f+c[d+26]]=e;ig(g,f,d);wn(a,g,d+4);b=f}Orb.X=1;function Prb(a){return 0<=(c[a+16]|0)?c[a+13]|0:Srb(a+5)}Prb.X=1;function Qrb(a){return 0<=(c[a+16]|0)?c[a+14]|0:Trb(a+5)}Qrb.X=1;function Rrb(a){return 0<=(c[a+16]|0)?c[a+15]|0:Urb(a+5)}Rrb.X=1;function Vrb(a,d,e){var f=b;b+=82;var g,h=f+1,i=f+6,j=f+11,l=f+15,m=f+17,n=f+19,p=f+21,r,s,t=f+23,w,x,y,z,A=f+24,C=f+28,B=f+31,K=f+35,E=f+39,G=f+43,M=f+47,L=f+51,F=f+53,I=f+55,R=f+57,O=f+59,Z=f+63,P=f+64,S=f+68,da=f+72,V=f+76,ba=f+77;k[f]=d;if(0!=(c[a+31]|0)){r=a+25;d=c[r]-1;c[r]=d;d4(h);c[c[a+31]+17]=d;e4(h,a+31);Wrb(i);r=c[a+31]+13;c[j]=c[r];k[j]=k[r];c[j+1]=c[r+1];k[j+1]=k[r+1];c[j+2]=c[r+2];k[j+2]=k[r+2];c[j+3]=c[r+3];k[j+3]=k[r+3];y3(l,0,0);y3(m,0,0);y3(n,0,0);y3(p,0,0);var $=a+16,Y=E+1,la=E+2;a:for(;0<(b4(h)|0);){if(r=c[K3(h,b4(h)-1)],Xrb(h),s=c[r+2],0!=(s|0)){for(;;){(c[c[s+3]+17]|0)!=(d|0)&&(c[c[s+3]+17]=d,e4(h,s+3));var ka=(c[s+5]|0)!=(d|0);b:do{if(ka){c[t]=Yrb($);Zrb(c[t],c[s+3],c[c[c[s+2]+1]+3],r);$rb(i,t);w=s;for(z=y=x=0;;){0!=(z|0)&&0!=(y|0)&&(T3(A,r+13,j),T3(B,x+13,j),T3(K,y+13,j),P3(C,B,K),z=R3(A,C),f4(G,r+13,x+13),f4(M,G,y+13),f4(E,M,j),g4(L,(c[E]|0)*z),I3(l,L),g4(F,(c[Y]|0)*z),I3(m,F),g4(I,(c[la]|0)*z),I3(n,I),g4(R,z),I3(p,R));c[w+5]=d;c[w+4]=c[t];x=y;y=c[w+3];w=c[c[w+2]+1];if((w|0)==(s|0)){break b}z=x}}}while(0);s=c[s];if((s|0)==(c[r+2]|0)){continue a}}}}j=0>=(h4(p)|0);a:do{if(j){g=0,$17=1}else{t=i4(l);k[O+c[a+27]]=t;t=i4(m);k[O+c[a+28]]=t;t=i4(n);k[O+c[a+26]]=t;k[Z]=4*i4(p);KB(O,Z);JL(O,a);t=j4(i);if(0=(t|0));){}if(0>=A){g=0;$17=1;break a}}}while(0);k[V]=A*e;k[f]=k[WX(f,V)]}A=243703;C=0;B=(C|0)<(t|0);b:do{if(B){for(;;){if(asb(k4(i,C),k4(i,(A>>>0)%(t>>>0))),C+=1,A=1664525*A+1013904223,(C|0)>=(t|0)){break b}}}}while(0);for(A=0;;){if((A|0)>=(t|0)){g=k[f];$17=1;break a}C=c[k4(i,A)];B=k[f];bsb(ba,h);C=csb(a,C,B,ba)^1;l4(ba);if(C){g=-k[f];$17=1;break a}A+=1}}}while(0);dsb(i);l4(h)}else{g=0}b=f;return g}Vrb.X=1;function asb(a,d){var e;e=c[a];c[a]=c[d];c[d]=e}asb.X=1;function b4(a){return c[a+1]}b4.X=1;function Xrb(a){a+=1;c[a]-=1}Xrb.X=1;function I3(a,d){var e;e=c[d]+c[a];var f=c[a];if((0<=e?e:e+0x10000000000000000)<(0<=f?f:f+0x10000000000000000)){f=a+1,c[f]+=1}c[a]=e;e=a+1;c[e]+=c[d+1];return a}I3.X=1;function h4(a){var d=c[a+1];0>(0x7ffffffffffffc00<=d?d-0x10000000000000000:d)?a=-1:(d=c[a+1],0!=(0x7ffffffffffffc00<=d?d-0x10000000000000000:d)?a=1:(a=c[a],a=0!=(0x7ffffffffffffc00<=a?a-0x10000000000000000:a)),a=a?1:0);return a}h4.X=1;function j4(a){return c[a+1]}j4.X=1;function k4(a,d){return c[a+3]+d}k4.X=1;function e4(a,d){(b4(a)|0)==(esb(a)|0)&&Hrb(a,fsb(a,b4(a)));var e=c[a+3]+c[a+1];0!=(e|0)&&(c[e]=c[d]);e=a+1;c[e]+=1}e4.X=1;function Yrb(a){var d;d=c[a+2];0==(d|0)&&(d=c[a+1],0!=(d|0)?c[a+1]=c[d+2]:(d=Ue(12,16),0==(d|0)?d=0:gsb(d,c[a+3]),c[d+2]=c[a],c[a]=d),d=hsb(d));c[a+2]=c[d];a=d;0==(a|0)?a=0:isb(a);return a}Yrb.X=1;function Zrb(a,d,e,f){var g=b;b+=8;var h=g+4;c[a+1]=d;var i=a+3,j=d+13;c[i]=c[j];k[i]=k[j];c[i+1]=c[j+1];k[i+1]=k[j+1];c[i+2]=c[j+2];k[i+2]=k[j+2];c[i+3]=c[j+3];k[i+3]=k[j+3];N3(g,e,d);e=a+7;c[e]=c[g];k[e]=k[g];c[e+1]=c[g+1];k[e+1]=k[g+1];c[e+2]=c[g+2];k[e+2]=k[g+2];c[e+3]=c[g+3];k[e+3]=k[g+3];N3(h,f,d);f=a+11;c[f]=c[h];k[f]=k[h];c[f+1]=c[h+1];k[f+1]=k[h+1];c[f+2]=c[h+2];k[f+2]=k[h+2];c[f+3]=c[h+3];k[f+3]=k[h+3];0!=(c[d+4]|0)?c[c[d+4]+2]=a:c[d+3]=a;c[d+4]=a;b=g}Zrb.X=1;function $rb(a,d){(j4(a)|0)==(jsb(a)|0)&&ksb(a,lsb(a,j4(a)));var e=c[a+3]+c[a+1];0!=(e|0)&&(c[e]=c[d]);e=a+1;c[e]+=1}$rb.X=1;function f4(a,d,e){O3(a,c[e]+c[d],c[e+1]+c[d+1],c[e+2]+c[d+2])}f4.X=1;function i4(a){var d=b;b+=2;var e=c[a+1];0<=(0x7ffffffffffffc00<=e?e-0x10000000000000000:e)?(e=c[a+1],a=c[a],a=0x10000000000000000*(0<=e?e:e+0x10000000000000000)+(0<=a?a:a+0x10000000000000000)):(w3(d,a),a=-i4(d));b=d;return a}i4.X=1;function csb(a,d,e,f){var g=b;b+=150;var h,i,j=g+4,l=g+8,m=g+9,n=g+13,p,r=g+16,s,t,w,x=g+20,y,z,A=g+26,C,B,K=g+32,E,G=g+38,M,L,F,I,R=g+44,O,Z,P,S,da=g+50,V=g+56,ba=g+57,$=g+60,Y,la,ka,ja,ea,ca=g+63,W,U=g+67,X=g+71,ma=g+73,ga=g+75,ha=g+77,ta=g+78,ra=g+86,ua=g+88,za=g+90,Za=g+92,ib=g+94,Ca=g+96,Sa=g+98,mb=g+100,Oa=g+102,Pa=g+104,fc=g+106,jb=g+108,La=g+110,fb=g+112,Rb=g+114,pb=g+116,Sb=g+118,ab=g+120,Ib=g+122,Fc=g+124,Ac=g+126,ob=g+128,Gc=g+130,Yc=g+132,Cc=g+134,Ub=g+136,Uc=g+138,nd=g+140,Ic=g+142,tc=g+143,hd=g+144,Tb=g+145,Jc=g+146,ub,uc,Kc=g+147,gb,gc,Lc=g+148,Dc=g+149;Nrb(j,a,d);k[l]=-e;Q(g,j,l);0=(0x7ffffffffffffc00<=hc?hc-0x10000000000000000:hc)){i=0}else{t=0;w=c[c[d+1]+2];n4(x,c[d+1],n);y=D3(x,s);var Hc=0<=(y|0),ic=w;do{if(Hc){z=ic;for(var db=x,bb=A;;){n4(A,c[z+3],n);if(0>(brb(A,x)|0)){C=D3(A,s);c[db]=c[bb];k[db]=k[bb];c[db+1]=c[bb+1];k[db+1]=k[bb+1];c[db+2]=c[bb+2];k[db+2]=k[bb+2];c[db+3]=c[bb+3];k[db+3]=k[bb+3];c[db+4]=c[bb+4];k[db+4]=k[bb+4];c[db+5]=c[bb+5];k[db+5]=k[bb+5];w=z=c[z+2];if(0>(C|0)){var id=z,Zc=t=id;break}y=C}z=c[z+1];if((z|0)==(w|0)){Zc=t;break}}if(0!=(Zc|0)){break}i=0;break a}B=ic;for(var vb=x,rb=K;;){n4(K,c[B+3],n);if(0<(brb(K,x)|0)){y=D3(K,s);if(0<=(y|0)){var vc=B,Qc=t=vc;break}c[vb]=c[rb];k[vb]=k[rb];c[vb+1]=c[rb+1];k[vb+1]=k[rb+1];c[vb+2]=c[rb+2];k[vb+2]=k[rb+2];c[vb+3]=c[rb+3];k[vb+3]=k[rb+3];c[vb+4]=c[rb+4];k[vb+4]=k[rb+4];c[vb+5]=c[rb+5];k[vb+5]=k[rb+5];w=B=c[B+2]}B=c[B+1];if((B|0)==(w|0)){Qc=t;break}}if(0==(Qc|0)){i=1;break a}}while(0);var Rc=0==(y|0);b:do{if(Rc){for(E=c[c[t+2]];;){n4(G,c[E+3],n);if(!(0>=(D3(G,s)|0))){break b}E=c[E];if((E|0)==(c[t+2]|0)){break}}i=1;break a}}while(0);F=L=M=0;for(var Xd=a+8,Sc=r,Mc=r+1,$c=r+2,Cd=nd,wc=X,Bb=ta;;){var fd=0==(y|0);b:do{if(fd){for(w=I=c[c[t+2]];;){n4(R,c[I+3],n);if(0<=(D3(R,s)|0)){break b}t=c[I+2];I=c[I];if((I|0)==(w|0)){break}}i=1;break a}}while(0);var ad=t;if(0!=(M|0)){if((ad|0)==(M|0)){break}}else{M=ad}O=y;Z=t;P=L;for(S=c[t+2];;){S=c[c[S+2]+1];n4(da,c[S+3],n);var wd=D3(da,s);y=wd;if(0<=(wd|0)){break}}t=S;var Kd=y;if(0<(Kd|0)){c[V]=c[t+3];S=c[t+2];(c[S+1]|0)==(S|0)?c[c[V]+2]=0:(c[c[V]+2]=c[S+1],L3(c[S+1],c[S]),L3(S,S));m4(ba,c[t+4]);m4($,c[c[t+2]+4]);Y=R3(d+7,ba);la=R3(d+11,ba);ka=R3(d+7,$);ja=R3(d+11,$);T3(ca,c[t+4]+3,r);ea=R3(ca,ba);T3(U,c[c[t+2]+4]+3,r);W=R3(U,$);z3(ma,Y,ja);z3(ga,la,ka);o4(X,ma,ga);c[ha]=Drb(Xd);c[c[ha]+16]=-1;c[c[ha]+17]=-1;var Rd=c[ha]+5;z3(ua,(c[d+7]|0)*ea,ja);z3(za,(c[d+7]|0)*W,la);o4(Za,ua,za);z3(ib,(c[d+11]|0)*W,Y);H3(Ca,Za,ib);z3(Sa,(c[d+11]|0)*ea,ka);o4(mb,Ca,Sa);v3(Oa,X,c[Sc]|0);H3(ra,mb,Oa);z3(fc,(c[d+8]|0)*ea,ja);z3(jb,(c[d+8]|0)*W,la);o4(La,fc,jb);z3(fb,(c[d+12]|0)*W,Y);H3(Rb,La,fb);z3(pb,(c[d+12]|0)*ea,ka);o4(Sb,Rb,pb);v3(ab,X,c[Mc]|0);H3(Pa,Sb,ab);z3(Fc,(c[d+9]|0)*ea,ja);z3(Ac,(c[d+9]|0)*W,la);o4(ob,Fc,Ac);z3(Gc,(c[d+13]|0)*W,Y);H3(Yc,ob,Gc);z3(Cc,(c[d+13]|0)*ea,ka);o4(Ub,Yc,Cc);v3(Uc,X,c[$c]|0);H3(Ib,Ub,Uc);c[Cd]=c[wc];k[Cd]=k[wc];c[Cd+1]=c[wc+1];k[Cd+1]=k[wc+1];nsb(ta,ra,Pa,Ib,X);var Ec=Rd;c[Ec]=c[Bb];k[Ec]=k[Bb];c[Ec+1]=c[Bb+1];k[Ec+1]=k[Bb+1];c[Ec+2]=c[Bb+2];k[Ec+2]=k[Bb+2];c[Ec+3]=c[Bb+3];k[Ec+3]=k[Bb+3];c[Ec+4]=c[Bb+4];k[Ec+4]=k[Bb+4];c[Ec+5]=c[Bb+5];k[Ec+5]=k[Bb+5];c[Ec+6]=c[Bb+6];k[Ec+6]=k[Bb+6];c[Ec+7]=c[Bb+7];k[Ec+7]=k[Bb+7];var xd=Srb(c[ha]+5)&-1;c[c[ha]+13]=xd;var od=Trb(c[ha]+5)&-1;c[c[ha]+14]=od;var pd=Urb(c[ha]+5)&-1;c[c[ha]+15]=pd;c[t+3]=c[ha];c[c[ha]+2]=S;e4(f,ha);e4(f,V);c[Ic]=0;e4(f,Ic);var bd=y}else{bd=Kd}0!=(bd|0)?h=55:0!=(O|0)?h=55:(c[c[c[Z+2]]+3]|0)!=(c[t+3]|0)?h=55:(L=c[c[Z+2]],h=63);55==h&&(L=J3(a,c[Z+3],c[t+3]),0==(O|0)?(L3(L,c[c[Z+2]]),h=0==(O|0)?58:57):h=57,57==h&&(h=0!=(P|0)?58:59),58==h&&L3(c[Z+2],L),0==(y|0)&&L3(c[c[t+2]+1],c[L+2]),L3(c[L+2],c[t+2]));var jd=0!=(P|0);do{if(jd){var Ld=L,Gd=c[P+2];if(0<(O|0)){L3(Ld,Gd)}else{if((Ld|0)!=(Gd|0)){e4(f,P+3);var Dd=(c[L]|0)!=(c[P+2]|0);b:do{if(Dd){for(;;){if(c[tc]=c[c[L]+3],V3(a,c[L]),e4(f,tc),(c[L]|0)==(c[P+2]|0)){break b}}}}while(0);c[hd]=0;e4(f,hd)}}}}while(0);c[L+4]=d;c[c[L+2]+4]=c[t+4];0==(F|0)&&(F=L)}var fe=0<(y|0);do{if(fe){c[c[F+2]+3]=c[L+3],L3(c[M+2],F),L3(F,c[L+2])}else{if((F|0)!=(c[L+2]|0)){e4(f,L+3);var ge=(c[F]|0)!=(c[L+2]|0);b:do{if(ge){for(;;){if(c[Tb]=c[c[F]+3],V3(a,c[F]),e4(f,Tb),(c[F]|0)==(c[L+2]|0)){break b}}}}while(0);c[Jc]=0;e4(f,Jc)}}}while(0);c[a+31]=c[K3(f,0)];ub=0;var Hd=(ub|0)<(b4(f)|0);b:do{if(Hd){for(;;){uc=b4(f);var he=(ub|0)<(uc|0);c:do{if(he){for(;;){var Zd=ub;ub=Zd+1;c[Kc]=c[K3(f,Zd)];gb=0;var $d=ub;ub=$d+1;var pg=c[K3(f,$d)];gc=pg;var Ze=0!=(pg|0);d:do{if(Ze){for(;;){osb(c[Kc],gc);var Xg=0!=(c[gc+2]|0);e:do{if(Xg){for(;;){if(gb&1||(gb=1,e4(f,Kc)),e4(f,c[gc+2]+3),V3(a,c[gc+2]),0==(c[gc+2]|0)){break e}}}}while(0);var Dh=ub;ub=Dh+1;var wf=c[K3(f,Dh)];gc=wf;if(0==(wf|0)){break d}}}}while(0);gb&1&&(c[Lc]=0,e4(f,Lc));if((ub|0)>=(uc|0)){break c}}}}while(0);if((ub|0)>=(b4(f)|0)){break b}}}}while(0);c[Dc]=0;a4(f,0,Dc);var Oe=d+3,If=r;c[Oe]=c[If];k[Oe]=k[If];c[Oe+1]=c[If+1];k[Oe+1]=k[If+1];c[Oe+2]=c[If+2];k[Oe+2]=k[If+2];c[Oe+3]=c[If+3];k[Oe+3]=k[If+3];i=1}}}while(0);var Ai=i;b=g;return Ai}csb.X=1;function psb(a,d){$1=a;return 0!=(d|0)?d<<1:1}psb.X=1;function msb(a){return 0==(c[a]|0)?0!=(c[a+1]|0)?0:0==(c[a+2]|0):0}msb.X=1;function osb(a,d){var e;e=c[d+3];0!=(c[a+4]|0)?c[c[a+4]+2]=e:c[a+3]=e;0!=(c[d+4]|0)&&(c[a+4]=c[d+4]);var f=c[d+3];e=f;f=0!=(f|0);a:do{if(f){for(;;){c[e+1]=a;var g=c[e+2];e=g;if(0==(g|0)){break a}}}}while(0);c[d+3]=0;c[d+4]=0}osb.X=1;function qsb(a){return c[a+2]}qsb.X=1;function m4(a,d){P3(a,d+7,d+11)}m4.X=1;function n4(a,d,e){var f=b;b+=10;var g=f+2,h=f+4,i=f+6,j=f+8;0<=(c[d+16]|0)?rsb(a,R3(d+13,e)):(v3(g,d+5,c[e]),v3(h,d+7,c[e+1]),H3(i,g,h),v3(j,d+9,c[e+2]),H3(f,i,j),ssb(a,f,d+11));b=f}n4.X=1;function o4(a,d,e){var f=b;b+=2;w3(f,e);H3(a,d,f);b=f}o4.X=1;function nsb(a,d,e,f,g){var h=b,i=d,d=b;b+=2;c[d]=c[i];k[d]=k[i];c[d+1]=c[i+1];k[d+1]=k[i+1];i=e;e=b;b+=2;c[e]=c[i];k[e]=k[i];c[e+1]=c[i+1];k[e+1]=k[i+1];i=f;f=b;b+=2;c[f]=c[i];k[f]=k[i];c[f+1]=c[i+1];k[f+1]=k[i+1];i=g;g=b;b+=2;c[g]=c[i];k[g]=k[i];c[g+1]=c[i+1];k[g+1]=k[i+1];tsb(a,d,e,f,g);b=h}nsb.X=1;function H3(a,d,e){var f;f=c[e]+c[d];var g=c[d];y3(a,f,c[e+1]+c[d+1]+((0<=f?f:f+0x10000000000000000)<(0<=g?g:g+0x10000000000000000)&1))}H3.X=1;function Srb(a){return i4(a)/i4(a+6)}Srb.X=1;function Trb(a){return i4(a+2)/i4(a+6)}Trb.X=1;function Urb(a){return i4(a+4)/i4(a+6)}Urb.X=1;function usb(a,d,e){var f,g;f=e1(a);var h=(d|0)<(f|0);a:do{if(h){if(g=d,(g|0)<(f|0)){for(;;){if(g+=1,(g|0)>=(f|0)){break a}}}}else{if((d|0)>(e1(a)|0)&&vsb(a,d),g=f,(g|0)<(d|0)){for(var i=a+3;;){var j=c[i]+3*g;if(0!=(j|0)){var l=e;c[j]=c[l];k[j]=k[l];c[j+1]=c[l+1];k[j+1]=k[l+1];c[j+2]=c[l+2];k[j+2]=k[l+2]}g+=1;if((g|0)>=(d|0)){break a}}}}}while(0);c[a+1]=d}usb.X=1;function wsb(a,d){var e=b;b+=1;var f;c[e]=a;f=c[c[e]+17];0>(f|0)&&(f=b4(d),c[c[e]+17]=f,e4(d,e));b=e;return f}wsb.X=1;function xsb(a,d){(e1(a)|0)==(qsb(a)|0)&&vsb(a,psb(a,e1(a)));var e=c[a+3]+3*c[a+1];0!=(e|0)&&(c[e]=c[d],k[e]=k[d],c[e+1]=c[d+1],k[e+1]=k[d+1],c[e+2]=c[d+2],k[e+2]=k[d+2]);e=a+1;c[e]+=1}xsb.X=1;function vsb(a,d){var e;(qsb(a)|0)<(d|0)&&(e=ysb(a,d),zsb(a,0,e1(a),e),Adb(a,0,e1(a)),Bdb(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}vsb.X=1;function ddb(a,d,e,f,g,h,i){var j=b;b+=55;var l,m=j+32,n=j+36,p=j+39,r=j+40,s=j+45,t,w,x,y,z=j+49,A=j+52,C,B,e=e&1;if(0>=(g|0)){UW(a),d1(a+5),wW(a+10),l=0}else{Asb(j);Brb(j,d,e&1,f,g);d=0;0h?(UW(a),d1(a+5),wW(a+10),l=d,$11=1,h=49):h=13):h=13;if(13==h){xZ(a,0,m);c[n]=0;k[n]=0;c[n+1]=0;k[n+1]=0;c[n+2]=0;k[n+2]=0;usb(a+5,0,n);c[p]=0;PV(a+10,0,p);d4(r);wsb(c[j+31],r);l=0;m=a+5;n=a+5;p=a+5;h=a+5;i=a+5;f=a+5;for(g=a+5;(l|0)<(b4(r)|0);){e=c[K3(r,l)];Orb(s,j,e);PW(a,s);e=c[e+2];if(0!=(e|0)){w=t=-1;for(x=e;!(0>(c[x+5]|0)&&(y=e1(m),c[z]=0,k[z]=0,c[z+1]=0,k[z+1]=0,c[z+2]=0,k[z+2]=0,xsb(n,z),c[A]=0,k[A]=0,c[A+1]=0,k[A+1]=0,c[A+2]=0,k[A+2]=0,xsb(p,A),C=b1(h,y),B=b1(i,y+1),c[x+5]=y,c[c[x+2]+5]=y+1,c[C+1]=1,c[B+1]=-1,c[C+2]=wsb(c[x+3],r),c[B+2]=l),0<=(w|0)?c[b1(f,c[x+5])]=w-c[x+5]:t=c[x+5],w=c[x+5],x=c[x],(x|0)==(e|0));){}c[b1(g,t)]=w-t}l+=1}s=0;for(m=a+10;(s|0)<(l|0);){a=c[c[K3(r,s)]+2];n=0!=(a|0);a:do{if(n){for(z=a;;){p=0<=(c[z+5]|0);b:do{if(p){p_(m,z+5);for(A=z;;){if(c[A+5]=-1,A=c[c[A+2]+1],(A|0)==(z|0)){break b}}}}while(0);z=c[z];if((z|0)==(a|0)){break a}}}}while(0);s+=1}l=d;$11=1;l4(r)}Bsb(j)}b=j;return l}ddb.X=1;function lsb(a,d){$1=a;return 0!=(d|0)?d<<1:1}lsb.X=1;function Csb(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}Csb.X=1;function fsb(a,d){$1=a;return 0!=(d|0)?d<<1:1}fsb.X=1;function Dsb(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}Dsb.X=1;function Lrb(a,d,e){$1=a;a=d;d=(a|0)<(e|0);a:do{if(d){for(;;){if(a+=1,(a|0)>=(e|0)){break a}}}}while(0)}Lrb.X=1;function d4(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}d4.X=1;function Esb(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=f+d;0!=(i|0)&&(c[i]=c[c[h]+d]);d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}Esb.X=1;function jsb(a){return c[a+2]}jsb.X=1;function Fsb(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=f+d;0!=(i|0)&&(c[i]=c[c[h]+d]);d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}Fsb.X=1;function hsb(a){var d,e;d=c[a];e=0;var f=a+1,g=(e|0)<(c[f]|0);a:do{if(g){for(var h=a+1;;){if(c[d]=(e+1|0)<(c[h]|0)?d+15:0,e+=1,d+=15,(e|0)>=(c[f]|0)){break a}}}}while(0);return c[a]}hsb.X=1;function Wrb(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}Wrb.X=1;function esb(a){return c[a+2]}esb.X=1;function Y3(a){return c[a+1]}Y3.X=1;function Crb(a){c[a+4]=1;c[a+3]=0;c[a+1]=0;c[a+2]=0}Crb.X=1;function ysb(a,d){return 0!=(d|0)?Gsb(a,d,0):0}ysb.X=1;function zsb(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=f+3*d;if(0!=(i|0)){var j=c[h]+3*d;c[i]=c[j];k[i]=k[j];c[i+1]=c[j+1];k[i+1]=k[j+1];c[i+2]=c[j+2];k[i+2]=k[j+2]}d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}zsb.X=1;function Gsb(a,d,e){$1=a;$3=e;return Ue(12*d,16)}Gsb.X=1;function bsb(a,d){var e=b;b+=1;var f;d4(a);f=b4(d);c[e]=0;a4(a,f,e);Esb(d,0,f,c[a+3]);b=e}bsb.X=1;function ksb(a,d){var e;(jsb(a)|0)<(d|0)&&(e=Hsb(a,d),Fsb(a,0,j4(a),e),Csb(a,0,j4(a)),Isb(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}ksb.X=1;function Hsb(a,d){return 0!=(d|0)?Jsb(a,d,0):0}Hsb.X=1;function Isb(a){0!=(c[a+3]|0)&&(c[a+4]&1&&Ksb(a,c[a+3]),c[a+3]=0)}Isb.X=1;function Ksb(a,d){$1=a;yh(d)}Ksb.X=1;function Jsb(a,d,e){$1=a;$3=e;return Ue(d<<2,16)}Jsb.X=1;function isb(a){c[a]=0;c[a+1]=0;c[a+2]=0}isb.X=1;function gsb(a,d){c[a+1]=d;c[a+2]=0;c[a]=Ue(60*d,16)}gsb.X=1;function dsb(a){Csb(a,0,j4(a));Isb(a);Wrb(a)}dsb.X=1;function Hrb(a,d){var e;(esb(a)|0)<(d|0)&&(e=Lsb(a,d),Esb(a,0,b4(a),e),Dsb(a,0,b4(a)),Msb(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}Hrb.X=1;function Lsb(a,d){return 0!=(d|0)?Nsb(a,d,0):0}Lsb.X=1;function Msb(a){0!=(c[a+3]|0)&&(c[a+4]&1&&Osb(a,c[a+3]),c[a+3]=0)}Msb.X=1;function Osb(a,d){$1=a;yh(d)}Osb.X=1;function Nsb(a,d,e){$1=a;$3=e;return Ue(d<<2,16)}Nsb.X=1;function l4(a){Dsb(a,0,b4(a));Msb(a);d4(a)}l4.X=1;function Mrb(a){0!=(c[a+3]|0)&&(c[a+4]&1&&Psb(a,c[a+3]),c[a+3]=0)}Mrb.X=1;function Psb(a,d){$1=a;yh(d)}Psb.X=1;function A3(a,d){return(d>>>0)*(a>>>0)}A3.X=1;function B3(a){return(Ma=(0<=a?a:a+0x10000000000000000)/4294967296,Ma-Ma%1)&4294967295}B3.X=1;function arb(a){c[a]*=4294967296}arb.X=1;function Jrb(a){var d,e;d=c[a];e=0;var f=a+1,g=(e|0)<(c[f]|0);a:do{if(g){for(var h=a+1;;){if(c[d]=(e+1|0)<(c[h]|0)?d+18:0,e+=1,d+=18,(e|0)>=(c[f]|0)){break a}}}}while(0);return c[a]}Jrb.X=1;function Qsb(a){return c[a+2]}Qsb.X=1;function irb(a){var d,e;d=c[a];e=0;var f=a+1,g=(e|0)<(c[f]|0);a:do{if(g){for(var h=a+1;;){if(c[d]=(e+1|0)<(c[h]|0)?d+6:0,e+=1,d+=6,(e|0)>=(c[f]|0)){break a}}}}while(0);return c[a]}irb.X=1;function E3(a){var d=b,e=a,a=b;b+=2;c[a]=c[e];k[a]=k[e];c[a+1]=c[e+1];k[a+1]=k[e+1];a=c[a];b=d;return a}E3.X=1;function F3(a){var d=b,e=a,a=b;b+=2;c[a]=c[e];k[a]=k[e];c[a+1]=c[e+1];k[a+1]=k[e+1];a=c[a+1];b=d;return a}F3.X=1;function drb(a){c[a+1]=c[a];c[a]=0}drb.X=1;function erb(a,d){var e=c[a+1],f=c[d+1];(0<=e?e:e+0x10000000000000000)<(0<=f?f:f+0x10000000000000000)?e=1:(e=c[a+1],f=c[d+1],(0x7ffffffffffffc00<=e?e-0x10000000000000000:e)!=(0x7ffffffffffffc00<=f?f-0x10000000000000000:f)?e=0:(e=c[a],f=c[d],e=(0<=e?e:e+0x10000000000000000)<(0<=f?f:f+0x10000000000000000)));return e}erb.X=1;function frb(a){var d=c[a]+1;c[a]=d;if(0==(0x7ffffffffffffc00<=d?d-0x10000000000000000:d)){d=a+1,c[d]+=1}return a}frb.X=1;function G3(a,d){c[a]=d;c[a+1]=0}G3.X=1;function Krb(a){c[a]=0;k[a]=0;c[a+1]=0;k[a+1]=0;c[a+2]=0;k[a+2]=0;c[a+3]=0;k[a+3]=0;c[a+4]=0;k[a+4]=0;c[a+17]=-1}Krb.X=1;function Irb(a,d){c[a+1]=d;c[a+2]=0;c[a]=Ue(104*d,16)}Irb.X=1;function Z3(a,d,e,f){var g=b;b+=4;var h,i;h=e;i=f;var j=(((f+e|0)/2&-1)<<2)+c[a+3];c[g]=c[j];k[g]=k[j];c[g+1]=c[j+1];k[g+1]=k[j+1];c[g+2]=c[j+2];k[g+2]=k[j+2];c[g+3]=c[j+3];k[g+3]=k[j+3];for(var j=a+3,l=a+3;;){if(v[d]((h<<2)+c[j],g)){h+=1}else{var m=v[d](g,(i<<2)+c[l]);a:do{if(m){for(;;){if(i-=1,!v[d](g,(i<<2)+c[l])){break a}}}}while(0);(h|0)<=(i|0)&&(Rsb(a,h,i),h+=1,i-=1);if(!((h|0)<=(i|0))){break}}}(e|0)<(i|0)&&Z3(a,d,e,i);(h|0)<(f|0)&&Z3(a,d,h,f);b=g}Z3.X=1;function Rsb(a,d,e){var f=b;b+=4;var g=(d<<2)+c[a+3];c[f]=c[g];k[f]=k[g];c[f+1]=c[g+1];k[f+1]=k[g+1];c[f+2]=c[g+2];k[f+2]=k[g+2];c[f+3]=c[g+3];k[f+3]=k[g+3];d=(d<<2)+c[a+3];g=(e<<2)+c[a+3];c[d]=c[g];k[d]=k[g];c[d+1]=c[g+1];k[d+1]=k[g+1];c[d+2]=c[g+2];k[d+2]=k[g+2];c[d+3]=c[g+3];k[d+3]=k[g+3];a=(e<<2)+c[a+3];c[a]=c[f];k[a]=k[f];c[a+1]=c[f+1];k[a+1]=k[f+1];c[a+2]=c[f+2];k[a+2]=k[f+2];c[a+3]=c[f+3];k[a+3]=k[f+3];b=f}Rsb.X=1;function zrb(a,d){var e;(Qsb(a)|0)<(d|0)&&(e=Ssb(a,d),Tsb(a,0,Y3(a),e),Lrb(a,0,Y3(a)),Mrb(a),c[a+4]=1,c[a+3]=e,c[a+2]=d)}zrb.X=1;function Ssb(a,d){return 0!=(d|0)?Usb(a,d,0):0}Ssb.X=1;function Tsb(a,d,e,f){var g=(d|0)<(e|0);a:do{if(g){for(var h=a+3;;){var i=(d<<2)+f;if(0!=(i|0)){var j=(d<<2)+c[h];c[i]=c[j];k[i]=k[j];c[i+1]=c[j+1];k[i+1]=k[j+1];c[i+2]=c[j+2];k[i+2]=k[j+2];c[i+3]=c[j+3];k[i+3]=k[j+3]}d+=1;if((d|0)>=(e|0)){break a}}}}while(0)}Tsb.X=1;function Usb(a,d,e){$1=a;$3=e;return Ue(d<<4,16)}Usb.X=1;function hrb(a,d){c[a+1]=d;c[a+2]=0;c[a]=Ue(24*d,16)}hrb.X=1;function Vsb(a){var d,e=0!=(c[a]|0);a:do{if(e){for(var f=a,g=a;;){if(d=c[f],c[g]=c[d+2],Wsb(d),yh(d),0==(c[a]|0)){break a}}}}while(0)}Vsb.X=1;function Wsb(a){yh(c[a])}Wsb.X=1;function Xsb(a){var d,e=0!=(c[a]|0);a:do{if(e){for(var f=a,g=a;;){if(d=c[f],c[g]=c[d+2],Ysb(d),yh(d),0==(c[a]|0)){break a}}}}while(0)}Xsb.X=1;function Ysb(a){yh(c[a])}Ysb.X=1;function Zsb(a){var d,e=0!=(c[a]|0);a:do{if(e){for(var f=a,g=a;;){if(d=c[f],c[g]=c[d+2],$sb(d),yh(d),0==(c[a]|0)){break a}}}}while(0)}Zsb.X=1;function $sb(a){yh(c[a])}$sb.X=1;function Bsb(a){l4(a+20);Zsb(a+16);Xsb(a+12);Vsb(a+8)}Bsb.X=1;function atb(a){c[a]=0;c[a+1]=0;c[a+2]=0;c[a+3]=256}atb.X=1;function btb(a){c[a]=0;c[a+1]=0;c[a+2]=0;c[a+3]=256}btb.X=1;function ctb(a){c[a]=0;c[a+1]=0;c[a+2]=0;c[a+3]=256}ctb.X=1;function g4(a,d){c[a]=d;c[a+1]=0<=(0x7ffffffffffffc00<=d?d-0x10000000000000000:d)?0:-1}g4.X=1;function y3(a,d,e){c[a]=d;c[a+1]=e}y3.X=1;function O3(a,d,e,f){c[a]=d;c[a+1]=e;c[a+2]=f;c[a+3]=-1}O3.X=1;function srb(a,d,e,f){c[a]=d;c[a+1]=e;c[a+2]=f}srb.X=1;function U3(a,d,e){if(0<(0x7ffffffffffffc00<=d?d-0x10000000000000000:d)){c[a+2]=1,c[a]=d}else{var f=a+2;0>(0x7ffffffffffffc00<=d?d-0x10000000000000000:d)?(c[f]=-1,c[a]=-d):(c[f]=0,c[a]=0)}0<(0x7ffffffffffffc00<=e?e-0x10000000000000000:e)?c[a+1]=e:0>(0x7ffffffffffffc00<=e?e-0x10000000000000000:e)?(c[a+2]=-c[a+2],c[a+1]=-e):c[a+1]=0}U3.X=1;function Asb(a){ctb(a+8);btb(a+12);atb(a+16);d4(a+20)}Asb.X=1;function tsb(a,d,e,f,g){var h=b,i=d,d=b;b+=2;c[d]=c[i];k[d]=k[i];c[d+1]=c[i+1];k[d+1]=k[i+1];i=e;e=b;b+=2;c[e]=c[i];k[e]=k[i];c[e+1]=c[i+1];k[e+1]=k[i+1];i=f;f=b;b+=2;c[f]=c[i];k[f]=k[i];c[f+1]=c[i+1];k[f+1]=k[i+1];i=g;g=b;b+=2;c[g]=c[i];k[g]=k[i];c[g+1]=c[i+1];k[g+1]=k[i+1];c[a]=c[d];k[a]=k[d];c[a+1]=c[d+1];k[a+1]=k[d+1];d=a+2;c[d]=c[e];k[d]=k[e];c[d+1]=c[e+1];k[d+1]=k[e+1];e=a+4;c[e]=c[f];k[e]=k[f];c[e+1]=c[f+1];k[e+1]=k[f+1];a+=6;c[a]=c[g];k[a]=k[g];c[a+1]=c[g+1];k[a+1]=k[g+1];b=h}tsb.X=1;function ssb(a,d,e){var f=b;b+=4;var g=f+2;c[a+4]=h4(d);0<=(c[a+4]|0)?(c[a]=c[d],k[a]=k[d],c[a+1]=c[d+1],k[a+1]=k[d+1]):(w3(f,d),c[a]=c[f],k[a]=k[f],c[a+1]=c[f+1],k[a+1]=k[f+1]);$dsign=d=h4(e);0<=(d|0)?(g=a+2,c[g]=c[e],k[g]=k[e],c[g+1]=c[e+1],k[g+1]=k[e+1]):(c[a+4]=-c[a+4],w3(g,e),e=a+2,c[e]=c[g],k[e]=k[g],c[e+1]=c[g+1],k[e+1]=k[g+1]);c[a+5]=0;b=f}ssb.X=1;function rsb(a,d){var e=b;b+=8;var f=e+2,g=e+4,h=e+6;if(0<(0x7ffffffffffffc00<=d?d-0x10000000000000000:d)){c[a+4]=1,g4(e,d),c[a]=c[e],k[a]=k[e],c[a+1]=c[e+1],k[a+1]=k[e+1]}else{var i=a+4;0>(0x7ffffffffffffc00<=d?d-0x10000000000000000:d)?(c[i]=-1,g4(f,-d),c[a]=c[f],k[a]=k[f],c[a+1]=c[f+1],k[a+1]=k[f+1]):(c[i]=0,G3(g,0),c[a]=c[g],k[a]=k[g],c[a+1]=c[g+1],k[a+1]=k[g+1])}G3(h,1);f=a+2;c[f]=c[h];k[f]=k[h];c[f+1]=c[h+1];k[f+1]=k[h+1];c[a+5]=1;b=e}rsb.X=1;function xrb(a,d){dtb(d);c[d]=c[a+2];c[a+2]=d}xrb.X=1;function dtb(a){c[a]=0;k[a]=0;c[a+1]=0;k[a+1]=0;c[a+2]=0;k[a+2]=0;c[a+3]=0;k[a+3]=0;c[a+4]=0;k[a+4]=0}dtb.X=1;function mrb(a){c[a]=0;k[a]=0;c[a+1]=0;k[a+1]=0;c[a+2]=0;k[a+2]=0;c[a+3]=0;k[a+3]=0}mrb.X=1;function jkb(){c[p4]+=1}jkb.X=1;function etb(a){return c[a+6]}etb.X=1;function ftb(a){return c[a+5]}ftb.X=1;function gtb(){htb(q4);Y2(26,q4)}gtb.X=1;function htb(a){c[a]=xb(8);itb(a)}htb.X=1;function itb(a){jtb(c[a])}itb.X=1;function ktb(a){a=c[a];0!=(a|0)&&xe(a)}ktb.X=1;function ltb(a,d){c[a]=xb(8);var e=c[a],f=c[d];c[e]=c[f];k[e]=k[f];c[e+1]=c[f+1];k[e+1]=k[f+1]}ltb.X=1;function mtb(a){var d=b;b+=2;jtb(d);a=1e6*(c[d]-c[c[a]])+c[d+1]+ -c[c[a]+1];b=d;return a}mtb.X=1;function r4(a,d,e){c[a]=d;d=a+1;c[d]=0;k[d]=0;c[d+1]=0;k[d+1]=0;c[d+2]=0;k[d+2]=0;c[d+3]=0;k[d+3]=0;c[a+5]=e;c[a+6]=0;c[a+7]=0;s4(a)}r4.X=1;function s4(a){c[a+1]=0;k[a+2]=0;0!=(c[a+6]|0)&&s4(c[a+6]);0!=(c[a+7]|0)&&s4(c[a+7])}s4.X=1;function t4(a){var d=c[a+6];0!=(d|0)&&(t4(d),xe(d));a=c[a+7];0!=(a|0)&&(t4(a),xe(a))}t4.X=1;function ntb(a,d){var e,f,g=c[a+6];for(f=g;;){if(0==(g|0)){e=xb(32);r4(e,d,a);c[e+7]=c[a+6];c[a+6]=e;break}g=f;if((c[f]|0)==(d|0)){e=g;break}f=g=c[g+7]}return e}ntb.X=1;function otb(a){var d=a+1;c[d]+=1;var d=a+4,e=c[d];c[d]=e+1;0==(e|0)&&u4(a+3)}otb.X=1;function u4(a){c[a]=mtb(q4)}u4.X=1;function ptb(a){var d=b;b+=1;var e=a+4,f=c[e]-1;c[e]=f;0==(f|0)&&0!=(c[a+1]|0)&&(u4(d),c[d]-=c[a+3],e=a+2,k[e]+=(c[d]>>>0)/1e3);a=0==(c[a+4]|0);b=d;return a}ptb.X=1;function qtb(a,d){c[a]=d;c[a+1]=etb(c[a])}qtb.X=1;function rtb(){r4(v4,D.yf,0);Y2(28,v4)}rtb.X=1;function bVa(a){(a|0)!=(c[c[w4]]|0)&&(c[w4]=ntb(c[w4],a));otb(c[w4])}bVa.X=1;function aVa(){ptb(c[w4])&&(c[w4]=ftb(c[w4]))}aVa.X=1;function ekb(){itb(q4);s4(v4);otb(v4);c[p4]=0;u4(stb)}ekb.X=1;function ttb(){gtb();rtb()}ttb.X=1;function Wa(a){var d,e,f,g,h,i,j;244>=a>>>0?(a=11>a>>>0?16:a+11&-8,d=a>>>3,f=c[x4]>>>(d>>>0),0!=(f&3|0)?(d+=(f^-1)&1,f=(d<<1)+x4+10,e=c[f+2],g=c[e+2],(f|0)==(g|0)?c[x4]&=1<>>0>=c[x4+4]>>>0&1)|0)?(c[f+2]=g,c[g+3]=f):y4(),c[e+1]=d<<3|3,d=(d<<3)+e+1,c[d]|=1,e+=8,d=41):a>>>0>c[x4+2]>>>0?0!=(f|0)?(e=(-(1<>>12&16,e>>>=f>>>0,f=e>>>5&8,e>>>=f>>>0,g=e>>>2&4,d=g+(f+d),e>>>=g>>>0,f=e>>>1&2,d=f+d,e>>>=f>>>0,f=e>>>1&1,d=f+d,e>>>=f>>>0,f=e+d,d=(f<<1)+x4+10,e=c[d+2],g=c[e+2],(d|0)==(g|0)?c[x4]&=1<>>0>=c[x4+4]>>>0&1)|0)?(c[d+2]=g,c[g+3]=d):y4(),f=(f<<3)-a,c[e+1]=a|3,d=e+a,c[d+1]=f|1,c[d+f]=f,h=c[x4+2],0!=(h|0)&&(g=c[x4+5],h>>>=3,j=i=(h<<1)+x4+10,0!=(1<>>0>=c[x4+4]>>>0&1)|0)?j=c[i+2]:y4():c[x4]|=1<>>0?(a=-1,d=33):(a=a+11&-8,0==(c[x4+1]|0)?d=33:(e=d=vtb(a),d=0!=(d|0)?41:33));33==d&&(a>>>0<=c[x4+2]>>>0?(d=c[x4+2]-a,e=c[x4+5],16<=d>>>0?(f=e+a,c[x4+5]=f,c[x4+2]=d,c[f+1]=d|1,c[f+d]=d,c[e+1]=a|3):(a=c[x4+2],c[x4+2]=0,c[x4+5]=0,c[e+1]=a|3,a=e+(a+1),c[a]|=1),e+=8):(e=a,a>>>0>>0?(d=c[x4+3]-e,c[x4+3]=d,e=c[x4+6],f=e+a,c[x4+6]=f,c[f+1]=d|1,c[e+1]=a|3,e+=8):e=wtb(e)));return e}Module._malloc=Wa;Wa.X=1;function utb(a){var d,e,f,g,h,i,j,l,m;d=x4;f=(-c[d+1]&c[d+1])-1;g=e=f>>>12&16;f>>>=e>>>0;e=f>>>5&8;f>>>=e>>>0;h=f>>>2&4;g=h+(e+g);f>>>=h>>>0;e=f>>>1&2;g=e+g;f>>>=e>>>0;e=f>>>1&1;g=e+g;f>>>=e>>>0;e=f=c[f+(g+(d+76))];for(g=(c[e+1]&-8)-a;;){h=e+4;e=h=0!=(c[e+4]|0)?c[h]:c[h+1];if(0==(h|0)){break}h=(c[e+1]&-8)-a;h>>>0>>0&&(g=h,f=e)}h=0!=(1==(f>>>0>=c[d+4]>>>0&1)|0);do{if(h&&(e=f+a,0!=(1==(f>>>0>>0&1)|0))){i=c[f+6];m=(c[f+3]|0)!=(f|0);var n=f;do{if(m){j=c[n+2],h=c[f+3],0!=(1==(j>>>0>=c[d+4]>>>0&1)|0)?(c[j+3]=h,c[h+2]=j):y4()}else{j=h=n+5;h=l=c[h];if(0!=(l|0)){__label__=17}else{if(j=h=f+4,h=l=c[h],0==(l|0)){break}}for(;;){var p=h+5;l=p;if(0==(c[p]|0)&&(l=p=h+4,0==(c[p]|0))){break}j=h=l;h=c[h]}0!=(1==(j>>>0>=c[d+4]>>>0&1)|0)?c[j]=0:y4()}}while(0);0!=(i|0)&&(m=d+c[f+7]+76,(f|0)==(c[m]|0)?(n=h,c[m]=n,0==(n|0)&&(m=d+1,c[m]&=1<>>0>=c[d+4]>>>0&1)|0)?(m=h,n=i+4,(c[i+4]|0)==(f|0)?c[n]=m:c[n+1]=m):y4(),0!=(h|0)&&(0!=(1==(h>>>0>=c[d+4]>>>0&1)|0)?(c[h+6]=i,i=m=c[f+4],0!=(m|0)&&(0!=(1==(i>>>0>=c[d+4]>>>0&1)|0)?(c[h+4]=i,c[i+6]=h):y4()),i=m=c[f+5],0!=(m|0)&&(0!=(1==(i>>>0>=c[d+4]>>>0&1)|0)?(c[h+5]=i,c[i+6]=h):y4())):y4()));16>g>>>0?(c[f+1]=a+g|3,d=a+(g+(f+1)),c[d]|=1):(c[f+1]=a|3,c[e+1]=g|1,c[e+g]=g,h=c[d+2],0!=(h|0)&&(a=c[d+5],h>>>=3,m=i=(h<<1)+d+10,0!=(1<>>0>=c[d+4]>>>0&1)|0)?m=c[i+2]:y4():(n=d,c[n]|=1<>>8;0==(i|0)?j=0:65535>>0?j=31:(j=i,i=j-256>>>16&8,s=j<>>16&4,i+=j,j=s<>>16&2,j=-(s+i)+(j<>>15)+14,j=(j<<1)+(a>>>(j+7>>>0)&1));i=s=c[f+(j+76)];s=0!=(s|0);do{if(s){d=a<<(31==(j|0)?0:-(j>>>1)+25);for(l=0;;){n=(c[i+1]&-8)-a;if(n>>>0>>0&&(g=m=i,h=n,0==(n|0))){p=m;break}m=c[i+5];i=n=c[i+(d>>>31&1)+4];0!=(m|0)?(n=i,(m|0)==(n|0)?m=n:(l=m,m=i)):m=n;if(0==(m|0)){i=p=l;break}d<<=1}d=0==(p|0)?20:23}else{d=20}}while(0);20==d&&(0!=(g|0)?d=23:(p=(-(1<>>12&16,r>>>=p>>>0,p=r>>>5&8,r>>>=p>>>0,j=r>>>2&4,i=j+(p+i),r>>>=j>>>0,p=r>>>1&2,i=p+i,r>>>=p>>>0,p=r>>>1&1,i=p+i,r>>>=p>>>0,i=r=c[r+(i+(f+76))],d=24)));23==d&&(r=i);r=0!=(r|0);a:do{if(r){for(;;){if(p=(c[i+1]&-8)-a,p>>>0>>0&&(h=p,g=i),p=i+4,i=p=0!=(c[i+4]|0)?c[p]:c[p+1],0==(p|0)){break a}}}}while(0);i=0!=(g|0);a:do{if(i){if(h>>>0>>0){p=0!=(1==(g>>>0>=c[f+4]>>>0&1)|0);do{if(p&&(r=g+a,0!=(1==(g>>>0>>0&1)|0))){i=c[g+6];p=(c[g+3]|0)!=(g|0);j=g;do{if(p){s=c[j+2],e=c[g+3],0!=(1==(s>>>0>=c[f+4]>>>0&1)|0)?(c[s+3]=e,c[e+2]=s):y4()}else{s=e=j+5;e=d=c[e];if(0==(d|0)&&(s=e=g+4,e=d=c[e],0==(d|0))){break}for(;;){d=l=e+5;if(0==(c[l]|0)&&(d=l=e+4,0==(c[l]|0))){break}s=e=d;e=c[e]}0!=(1==(s>>>0>=c[f+4]>>>0&1)|0)?c[s]=0:y4()}}while(0);0!=(i|0)&&(p=f+c[g+7]+76,(g|0)==(c[p]|0)?(j=e,c[p]=j,0==(j|0)&&(p=f+1,c[p]&=1<>>0>=c[f+4]>>>0&1)|0)?(p=e,j=i+4,(c[i+4]|0)==(g|0)?c[j]=p:c[j+1]=p):y4(),0!=(e|0)&&(0!=(1==(e>>>0>=c[f+4]>>>0&1)|0)?(c[e+6]=i,i=p=c[g+4],0!=(p|0)&&(0!=(1==(i>>>0>=c[f+4]>>>0&1)|0)?(c[e+4]=i,c[i+6]=e):y4()),i=p=c[g+5],0!=(p|0)&&(0!=(1==(i>>>0>=c[f+4]>>>0&1)|0)?(c[e+5]=i,c[i+6]=e):y4())):y4()));e=16>h>>>0;b:do{if(e){c[g+1]=a+h|3,i=a+(h+(g+1)),c[i]|=1}else{if(c[g+1]=a|3,c[r+1]=h|1,c[r+h]=h,32>h>>>3>>>0){i=h>>>3,j=p=(i<<1)+f+10,0!=(1<>>0>=c[f+4]>>>0&1)|0)?j=c[p+2]:y4():(s=f,c[s]|=1<>>8,0==(p|0)?j=0:65535
    ', + item: '
  • ', + indent: '', + icon: '', + link: '
    ', + badge: '' + }; + + Tree.prototype.css = '.treeview .list-group-item{cursor:pointer}.treeview span.indent{margin-left:10px;margin-right:10px}.treeview span.icon{width:12px;margin-right:5px}.treeview .node-disabled{color:silver;cursor:not-allowed}' + + + /** + Returns a single node object that matches the given node id. + @param {Number} nodeId - A node's unique identifier + @return {Object} node - Matching node + */ + Tree.prototype.getNode = function (nodeId) { + return this.nodes[nodeId]; + }; + + /** + Returns the parent node of a given node, if valid otherwise returns undefined. + @param {Object|Number} identifier - A valid node or node id + @returns {Object} node - The parent node + */ + Tree.prototype.getParent = function (identifier) { + var node = this.identifyNode(identifier); + return this.nodes[node.parentId]; + }; + + /** + Returns an array of sibling nodes for a given node, if valid otherwise returns undefined. + @param {Object|Number} identifier - A valid node or node id + @returns {Array} nodes - Sibling nodes + */ + Tree.prototype.getSiblings = function (identifier) { + var node = this.identifyNode(identifier); + var parent = this.getParent(node); + var nodes = parent ? parent.nodes : this.tree; + return nodes.filter(function (obj) { + return obj.nodeId !== node.nodeId; + }); + }; + + /** + Returns an array of selected nodes. + @returns {Array} nodes - Selected nodes + */ + Tree.prototype.getSelected = function () { + return this.findNodes('true', 'g', 'state.selected'); + }; + + /** + Returns an array of unselected nodes. + @returns {Array} nodes - Unselected nodes + */ + Tree.prototype.getUnselected = function () { + return this.findNodes('false', 'g', 'state.selected'); + }; + + /** + Returns an array of expanded nodes. + @returns {Array} nodes - Expanded nodes + */ + Tree.prototype.getExpanded = function () { + return this.findNodes('true', 'g', 'state.expanded'); + }; + + /** + Returns an array of collapsed nodes. + @returns {Array} nodes - Collapsed nodes + */ + Tree.prototype.getCollapsed = function () { + return this.findNodes('false', 'g', 'state.expanded'); + }; + + /** + Returns an array of checked nodes. + @returns {Array} nodes - Checked nodes + */ + Tree.prototype.getChecked = function () { + return this.findNodes('true', 'g', 'state.checked'); + }; + + /** + Returns an array of unchecked nodes. + @returns {Array} nodes - Unchecked nodes + */ + Tree.prototype.getUnchecked = function () { + return this.findNodes('false', 'g', 'state.checked'); + }; + + /** + Returns an array of disabled nodes. + @returns {Array} nodes - Disabled nodes + */ + Tree.prototype.getDisabled = function () { + return this.findNodes('true', 'g', 'state.disabled'); + }; + + /** + Returns an array of enabled nodes. + @returns {Array} nodes - Enabled nodes + */ + Tree.prototype.getEnabled = function () { + return this.findNodes('false', 'g', 'state.disabled'); + }; + + + /** + Set a node state to selected + @param {Object|Number} identifiers - A valid node, node id or array of node identifiers + @param {optional Object} options + */ + Tree.prototype.selectNode = function (identifiers, options) { + this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) { + this.setSelectedState(node, true, options); + }, this)); + + this.render(); + }; + + /** + Set a node state to unselected + @param {Object|Number} identifiers - A valid node, node id or array of node identifiers + @param {optional Object} options + */ + Tree.prototype.unselectNode = function (identifiers, options) { + this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) { + this.setSelectedState(node, false, options); + }, this)); + + this.render(); + }; + + /** + Toggles a node selected state; selecting if unselected, unselecting if selected. + @param {Object|Number} identifiers - A valid node, node id or array of node identifiers + @param {optional Object} options + */ + Tree.prototype.toggleNodeSelected = function (identifiers, options) { + this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) { + this.toggleSelectedState(node, options); + }, this)); + + this.render(); + }; + + + /** + Collapse all tree nodes + @param {optional Object} options + */ + Tree.prototype.collapseAll = function (options) { + var identifiers = this.findNodes('true', 'g', 'state.expanded'); + this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) { + this.setExpandedState(node, false, options); + }, this)); + + this.render(); + }; + + /** + Collapse a given tree node + @param {Object|Number} identifiers - A valid node, node id or array of node identifiers + @param {optional Object} options + */ + Tree.prototype.collapseNode = function (identifiers, options) { + this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) { + this.setExpandedState(node, false, options); + }, this)); + + this.render(); + }; + + /** + Expand all tree nodes + @param {optional Object} options + */ + Tree.prototype.expandAll = function (options) { + options = $.extend({}, _default.options, options); + + if (options && options.levels) { + this.expandLevels(this.tree, options.levels, options); + } + else { + var identifiers = this.findNodes('false', 'g', 'state.expanded'); + this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) { + this.setExpandedState(node, true, options); + }, this)); + } + + this.render(); + }; + + /** + Expand a given tree node + @param {Object|Number} identifiers - A valid node, node id or array of node identifiers + @param {optional Object} options + */ + Tree.prototype.expandNode = function (identifiers, options) { + this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) { + this.setExpandedState(node, true, options); + if (node.nodes && (options && options.levels)) { + this.expandLevels(node.nodes, options.levels-1, options); + } + }, this)); + + this.render(); + }; + + Tree.prototype.expandLevels = function (nodes, level, options) { + options = $.extend({}, _default.options, options); + + $.each(nodes, $.proxy(function (index, node) { + this.setExpandedState(node, (level > 0) ? true : false, options); + if (node.nodes) { + this.expandLevels(node.nodes, level-1, options); + } + }, this)); + }; + + /** + Reveals a given tree node, expanding the tree from node to root. + @param {Object|Number|Array} identifiers - A valid node, node id or array of node identifiers + @param {optional Object} options + */ + Tree.prototype.revealNode = function (identifiers, options) { + this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) { + var parentNode = this.getParent(node); + while (parentNode) { + this.setExpandedState(parentNode, true, options); + parentNode = this.getParent(parentNode); + }; + }, this)); + + this.render(); + }; + + /** + Toggles a nodes expanded state; collapsing if expanded, expanding if collapsed. + @param {Object|Number} identifiers - A valid node, node id or array of node identifiers + @param {optional Object} options + */ + Tree.prototype.toggleNodeExpanded = function (identifiers, options) { + this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) { + this.toggleExpandedState(node, options); + }, this)); + + this.render(); + }; + + + /** + Check all tree nodes + @param {optional Object} options + */ + Tree.prototype.checkAll = function (options) { + var identifiers = this.findNodes('false', 'g', 'state.checked'); + this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) { + this.setCheckedState(node, true, options); + }, this)); + + this.render(); + }; + + /** + Check a given tree node + @param {Object|Number} identifiers - A valid node, node id or array of node identifiers + @param {optional Object} options + */ + Tree.prototype.checkNode = function (identifiers, options) { + this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) { + this.setCheckedState(node, true, options); + }, this)); + + this.render(); + }; + + /** + Uncheck all tree nodes + @param {optional Object} options + */ + Tree.prototype.uncheckAll = function (options) { + var identifiers = this.findNodes('true', 'g', 'state.checked'); + this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) { + this.setCheckedState(node, false, options); + }, this)); + + this.render(); + }; + + /** + Uncheck a given tree node + @param {Object|Number} identifiers - A valid node, node id or array of node identifiers + @param {optional Object} options + */ + Tree.prototype.uncheckNode = function (identifiers, options) { + this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) { + this.setCheckedState(node, false, options); + }, this)); + + this.render(); + }; + + /** + Toggles a nodes checked state; checking if unchecked, unchecking if checked. + @param {Object|Number} identifiers - A valid node, node id or array of node identifiers + @param {optional Object} options + */ + Tree.prototype.toggleNodeChecked = function (identifiers, options) { + this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) { + this.toggleCheckedState(node, options); + }, this)); + + this.render(); + }; + + + /** + Disable all tree nodes + @param {optional Object} options + */ + Tree.prototype.disableAll = function (options) { + var identifiers = this.findNodes('false', 'g', 'state.disabled'); + this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) { + this.setDisabledState(node, true, options); + }, this)); + + this.render(); + }; + + /** + Disable a given tree node + @param {Object|Number} identifiers - A valid node, node id or array of node identifiers + @param {optional Object} options + */ + Tree.prototype.disableNode = function (identifiers, options) { + this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) { + this.setDisabledState(node, true, options); + }, this)); + + this.render(); + }; + + /** + Enable all tree nodes + @param {optional Object} options + */ + Tree.prototype.enableAll = function (options) { + var identifiers = this.findNodes('true', 'g', 'state.disabled'); + this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) { + this.setDisabledState(node, false, options); + }, this)); + + this.render(); + }; + + /** + Enable a given tree node + @param {Object|Number} identifiers - A valid node, node id or array of node identifiers + @param {optional Object} options + */ + Tree.prototype.enableNode = function (identifiers, options) { + this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) { + this.setDisabledState(node, false, options); + }, this)); + + this.render(); + }; + + /** + Toggles a nodes disabled state; disabling is enabled, enabling if disabled. + @param {Object|Number} identifiers - A valid node, node id or array of node identifiers + @param {optional Object} options + */ + Tree.prototype.toggleNodeDisabled = function (identifiers, options) { + this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) { + this.setDisabledState(node, !node.state.disabled, options); + }, this)); + + this.render(); + }; + + + /** + Common code for processing multiple identifiers + */ + Tree.prototype.forEachIdentifier = function (identifiers, options, callback) { + + options = $.extend({}, _default.options, options); + + if (!(identifiers instanceof Array)) { + identifiers = [identifiers]; + } + + $.each(identifiers, $.proxy(function (index, identifier) { + callback(this.identifyNode(identifier), options); + }, this)); + }; + + /* + Identifies a node from either a node id or object + */ + Tree.prototype.identifyNode = function (identifier) { + return ((typeof identifier) === 'number') ? + this.nodes[identifier] : + identifier; + }; + + /** + Searches the tree for nodes (text) that match given criteria + @param {String} pattern - A given string to match against + @param {optional Object} options - Search criteria options + @return {Array} nodes - Matching nodes + */ + Tree.prototype.search = function (pattern, options) { + options = $.extend({}, _default.searchOptions, options); + + this.clearSearch({ render: false }); + + var results = []; + if (pattern && pattern.length > 0) { + + if (options.exactMatch) { + pattern = '^' + pattern + '$'; + } + + var modifier = 'g'; + if (options.ignoreCase) { + modifier += 'i'; + } + + results = this.findNodes(pattern, modifier); + + // Add searchResult property to all matching nodes + // This will be used to apply custom styles + // and when identifying result to be cleared + $.each(results, function (index, node) { + node.searchResult = true; + }) + } + + // If revealResults, then render is triggered from revealNode + // otherwise we just call render. + if (options.revealResults) { + this.revealNode(results); + } + else { + this.render(); + } + + this.$element.trigger('searchComplete', $.extend(true, {}, results)); + + return results; + }; + + /** + Clears previous search results + */ + Tree.prototype.clearSearch = function (options) { + + options = $.extend({}, { render: true }, options); + + var results = $.each(this.findNodes('true', 'g', 'searchResult'), function (index, node) { + node.searchResult = false; + }); + + if (options.render) { + this.render(); + } + + this.$element.trigger('searchCleared', $.extend(true, {}, results)); + }; + + /** + Find nodes that match a given criteria + @param {String} pattern - A given string to match against + @param {optional String} modifier - Valid RegEx modifiers + @param {optional String} attribute - Attribute to compare pattern against + @return {Array} nodes - Nodes that match your criteria + */ + Tree.prototype.findNodes = function (pattern, modifier, attribute) { + + modifier = modifier || 'g'; + attribute = attribute || 'text'; + + var _this = this; + return $.grep(this.nodes, function (node) { + var val = _this.getNodeValue(node, attribute); + if (typeof val === 'string') { + return val.match(new RegExp(pattern, modifier)); + } + }); + }; + + /** + Recursive find for retrieving nested attributes values + All values are return as strings, unless invalid + @param {Object} obj - Typically a node, could be any object + @param {String} attr - Identifies an object property using dot notation + @return {String} value - Matching attributes string representation + */ + Tree.prototype.getNodeValue = function (obj, attr) { + var index = attr.indexOf('.'); + if (index > 0) { + var _obj = obj[attr.substring(0, index)]; + var _attr = attr.substring(index + 1, attr.length); + return this.getNodeValue(_obj, _attr); + } + else { + if (obj.hasOwnProperty(attr)) { + return obj[attr].toString(); + } + else { + return undefined; + } + } + }; + + var logError = function (message) { + if (window.console) { + window.console.error(message); + } + }; + + // Prevent against multiple instantiations, + // handle updates and method calls + $.fn[pluginName] = function (options, args) { + + var result; + + this.each(function () { + var _this = $.data(this, pluginName); + if (typeof options === 'string') { + if (!_this) { + logError('Not initialized, can not call method : ' + options); + } + else if (!$.isFunction(_this[options]) || options.charAt(0) === '_') { + logError('No such method : ' + options); + } + else { + if (!(args instanceof Array)) { + args = [ args ]; + } + result = _this[options].apply(_this, args); + } + } + else if (typeof options === 'boolean') { + result = _this; + } + else { + $.data(this, pluginName, new Tree(this, $.extend(true, {}, options))); + } + }); + + return result || this; + }; + +})(jQuery, window, document); diff --git a/client/js/custom-color-plus-scrollbar.js b/client/js/custom-color-plus-scrollbar.js new file mode 100644 index 0000000..5701650 --- /dev/null +++ b/client/js/custom-color-plus-scrollbar.js @@ -0,0 +1,58 @@ +var config = { + container: "#OrganiseChart1", + rootOrientation: 'NORTH', // NORTH || EAST || WEST || SOUTH + // levelSeparation: 30, + siblingSeparation: 5, + subTeeSeparation: 10, + scrollbar: "fancy", + + connectors: { + type: 'step' + }, + node: { + HTMLclass: 'nodeExample1' + } + }, + ceo = { + text: { + name: "Part 1", + title: "Part Name", + }, + HTMLid: "ceo" + }, + + cto = { + parent: ceo, + text:{ + name: "Part 2", + title: "Part Name", + }, + stackChildren: true, + HTMLid: "coo" + }, + cbo = { + parent: ceo, + text:{ + name: "Part 3", + title: "Part Name", + }, + HTMLid: "cbo" + }, + + cio = { + parent: cto, + text:{ + name: "Part 4", + title: "Part Name" + }, + HTMLid: "cio" + } + + + ALTERNATIVE = [ + config, + ceo, + cto, + cbo, + cio, + ]; \ No newline at end of file diff --git a/client/js/dat.gui.min.js b/client/js/dat.gui.min.js new file mode 100644 index 0000000..5b69be5 --- /dev/null +++ b/client/js/dat.gui.min.js @@ -0,0 +1,14 @@ +/** + * dat-gui JavaScript Controller Library + * https://github.com/dataarts/dat.gui + * + * Copyright 2016 Data Arts Team, Google Creative Lab + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + */ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.dat=t():e.dat=t()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={exports:{},id:o,loaded:!1};return e[o].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}var i=n(1),r=o(i);e.exports=r["default"]},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}t.__esModule=!0;var i=n(2),r=o(i),a=n(6),l=o(a),s=n(3),u=o(s),d=n(7),c=o(d),f=n(8),_=o(f),p=n(10),h=o(p),m=n(11),b=o(m),g=n(12),v=o(g),y=n(13),w=o(y),x=n(14),E=o(x),C=n(15),A=o(C),S=n(16),k=o(S),O=n(9),T=o(O),R=n(17),L=o(R);t["default"]={color:{Color:r["default"],math:l["default"],interpret:u["default"]},controllers:{Controller:c["default"],BooleanController:_["default"],OptionController:h["default"],StringController:b["default"],NumberController:v["default"],NumberControllerBox:w["default"],NumberControllerSlider:E["default"],FunctionController:A["default"],ColorController:k["default"]},dom:{dom:T["default"]},gui:{GUI:L["default"]},GUI:L["default"]}},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t,n){Object.defineProperty(e,t,{get:function(){return"RGB"===this.__state.space?this.__state[t]:(h.recalculateRGB(this,t,n),this.__state[t])},set:function(e){"RGB"!==this.__state.space&&(h.recalculateRGB(this,t,n),this.__state.space="RGB"),this.__state[t]=e}})}function a(e,t){Object.defineProperty(e,t,{get:function(){return"HSV"===this.__state.space?this.__state[t]:(h.recalculateHSV(this),this.__state[t])},set:function(e){"HSV"!==this.__state.space&&(h.recalculateHSV(this),this.__state.space="HSV"),this.__state[t]=e}})}t.__esModule=!0;var l=n(3),s=o(l),u=n(6),d=o(u),c=n(4),f=o(c),_=n(5),p=o(_),h=function(){function e(){if(i(this,e),this.__state=s["default"].apply(this,arguments),this.__state===!1)throw new Error("Failed to interpret color arguments");this.__state.a=this.__state.a||1}return e.prototype.toString=function(){return(0,f["default"])(this)},e.prototype.toHexString=function(){return(0,f["default"])(this,!0)},e.prototype.toOriginal=function(){return this.__state.conversion.write(this)},e}();h.recalculateRGB=function(e,t,n){if("HEX"===e.__state.space)e.__state[t]=d["default"].component_from_hex(e.__state.hex,n);else{if("HSV"!==e.__state.space)throw new Error("Corrupted color state");p["default"].extend(e.__state,d["default"].hsv_to_rgb(e.__state.h,e.__state.s,e.__state.v))}},h.recalculateHSV=function(e){var t=d["default"].rgb_to_hsv(e.r,e.g,e.b);p["default"].extend(e.__state,{s:t.s,v:t.v}),p["default"].isNaN(t.h)?p["default"].isUndefined(e.__state.h)&&(e.__state.h=0):e.__state.h=t.h},h.COMPONENTS=["r","g","b","h","s","v","hex","a"],r(h.prototype,"r",2),r(h.prototype,"g",1),r(h.prototype,"b",0),a(h.prototype,"h"),a(h.prototype,"s"),a(h.prototype,"v"),Object.defineProperty(h.prototype,"a",{get:function(){return this.__state.a},set:function(e){this.__state.a=e}}),Object.defineProperty(h.prototype,"hex",{get:function(){return"HEX"!==!this.__state.space&&(this.__state.hex=d["default"].rgb_to_hex(this.r,this.g,this.b)),this.__state.hex},set:function(e){this.__state.space="HEX",this.__state.hex=e}}),t["default"]=h},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}t.__esModule=!0;var i=n(4),r=o(i),a=n(5),l=o(a),s=[{litmus:l["default"].isString,conversions:{THREE_CHAR_HEX:{read:function(e){var t=e.match(/^#([A-F0-9])([A-F0-9])([A-F0-9])$/i);return null!==t&&{space:"HEX",hex:parseInt("0x"+t[1].toString()+t[1].toString()+t[2].toString()+t[2].toString()+t[3].toString()+t[3].toString(),0)}},write:r["default"]},SIX_CHAR_HEX:{read:function(e){var t=e.match(/^#([A-F0-9]{6})$/i);return null!==t&&{space:"HEX",hex:parseInt("0x"+t[1].toString(),0)}},write:r["default"]},CSS_RGB:{read:function(e){var t=e.match(/^rgb\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\)/);return null!==t&&{space:"RGB",r:parseFloat(t[1]),g:parseFloat(t[2]),b:parseFloat(t[3])}},write:r["default"]},CSS_RGBA:{read:function(e){var t=e.match(/^rgba\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\)/);return null!==t&&{space:"RGB",r:parseFloat(t[1]),g:parseFloat(t[2]),b:parseFloat(t[3]),a:parseFloat(t[4])}},write:r["default"]}}},{litmus:l["default"].isNumber,conversions:{HEX:{read:function(e){return{space:"HEX",hex:e,conversionName:"HEX"}},write:function(e){return e.hex}}}},{litmus:l["default"].isArray,conversions:{RGB_ARRAY:{read:function(e){return 3===e.length&&{space:"RGB",r:e[0],g:e[1],b:e[2]}},write:function(e){return[e.r,e.g,e.b]}},RGBA_ARRAY:{read:function(e){return 4===e.length&&{space:"RGB",r:e[0],g:e[1],b:e[2],a:e[3]}},write:function(e){return[e.r,e.g,e.b,e.a]}}}},{litmus:l["default"].isObject,conversions:{RGBA_OBJ:{read:function(e){return!!(l["default"].isNumber(e.r)&&l["default"].isNumber(e.g)&&l["default"].isNumber(e.b)&&l["default"].isNumber(e.a))&&{space:"RGB",r:e.r,g:e.g,b:e.b,a:e.a}},write:function(e){return{r:e.r,g:e.g,b:e.b,a:e.a}}},RGB_OBJ:{read:function(e){return!!(l["default"].isNumber(e.r)&&l["default"].isNumber(e.g)&&l["default"].isNumber(e.b))&&{space:"RGB",r:e.r,g:e.g,b:e.b}},write:function(e){return{r:e.r,g:e.g,b:e.b}}},HSVA_OBJ:{read:function(e){return!!(l["default"].isNumber(e.h)&&l["default"].isNumber(e.s)&&l["default"].isNumber(e.v)&&l["default"].isNumber(e.a))&&{space:"HSV",h:e.h,s:e.s,v:e.v,a:e.a}},write:function(e){return{h:e.h,s:e.s,v:e.v,a:e.a}}},HSV_OBJ:{read:function(e){return!!(l["default"].isNumber(e.h)&&l["default"].isNumber(e.s)&&l["default"].isNumber(e.v))&&{space:"HSV",h:e.h,s:e.s,v:e.v}},write:function(e){return{h:e.h,s:e.s,v:e.v}}}}}],u=void 0,d=void 0,c=function(){d=!1;var e=arguments.length>1?l["default"].toArray(arguments):arguments[0];return l["default"].each(s,function(t){if(t.litmus(e))return l["default"].each(t.conversions,function(t,n){if(u=t.read(e),d===!1&&u!==!1)return d=u,u.conversionName=n,u.conversion=t,l["default"].BREAK}),l["default"].BREAK}),d};t["default"]=c},function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e,t){var n=e.__state.conversionName.toString(),o=Math.round(e.r),i=Math.round(e.g),r=Math.round(e.b),a=e.a,l=Math.round(e.h),s=e.s.toFixed(1),u=e.v.toFixed(1);if(t||"THREE_CHAR_HEX"===n||"SIX_CHAR_HEX"===n){for(var d=e.hex.toString(16);d.length<6;)d="0"+d;return"#"+d}return"CSS_RGB"===n?"rgb("+o+","+i+","+r+")":"CSS_RGBA"===n?"rgba("+o+","+i+","+r+","+a+")":"HEX"===n?"0x"+e.hex.toString(16):"RGB_ARRAY"===n?"["+o+","+i+","+r+"]":"RGBA_ARRAY"===n?"["+o+","+i+","+r+","+a+"]":"RGB_OBJ"===n?"{r:"+o+",g:"+i+",b:"+r+"}":"RGBA_OBJ"===n?"{r:"+o+",g:"+i+",b:"+r+",a:"+a+"}":"HSV_OBJ"===n?"{h:"+l+",s:"+s+",v:"+u+"}":"HSVA_OBJ"===n?"{h:"+l+",s:"+s+",v:"+u+",a:"+a+"}":"unknown format"}},function(e,t){"use strict";t.__esModule=!0;var n=Array.prototype.forEach,o=Array.prototype.slice,i={BREAK:{},extend:function(e){return this.each(o.call(arguments,1),function(t){var n=this.isObject(t)?Object.keys(t):[];n.forEach(function(n){this.isUndefined(t[n])||(e[n]=t[n])}.bind(this))},this),e},defaults:function(e){return this.each(o.call(arguments,1),function(t){var n=this.isObject(t)?Object.keys(t):[];n.forEach(function(n){this.isUndefined(e[n])&&(e[n]=t[n])}.bind(this))},this),e},compose:function(){var e=o.call(arguments);return function(){for(var t=o.call(arguments),n=e.length-1;n>=0;n--)t=[e[n].apply(this,t)];return t[0]}},each:function(e,t,o){if(e)if(n&&e.forEach&&e.forEach===n)e.forEach(t,o);else if(e.length===e.length+0){var i=void 0,r=void 0;for(i=0,r=e.length;i>8*t&255},hex_with_component:function(e,t,o){return o<<(n=8*t)|e&~(255<-1?t.length-t.indexOf(".")-1:0}t.__esModule=!0;var s=n(7),u=o(s),d=n(5),c=o(d),f=function(e){function t(n,o,a){i(this,t);var s=r(this,e.call(this,n,o)),u=a||{};return s.__min=u.min,s.__max=u.max,s.__step=u.step,c["default"].isUndefined(s.__step)?0===s.initialValue?s.__impliedStep=1:s.__impliedStep=Math.pow(10,Math.floor(Math.log(Math.abs(s.initialValue))/Math.LN10))/10:s.__impliedStep=s.__step,s.__precision=l(s.__impliedStep),s}return a(t,e),t.prototype.setValue=function(t){var n=t;return void 0!==this.__min&&nthis.__max&&(n=this.__max),void 0!==this.__step&&n%this.__step!==0&&(n=Math.round(n/this.__step)*this.__step),e.prototype.setValue.call(this,n)},t.prototype.min=function(e){return this.__min=e,this},t.prototype.max=function(e){return this.__max=e,this},t.prototype.step=function(e){return this.__step=e,this.__impliedStep=e,this.__precision=l(e),this},t}(u["default"]);t["default"]=f},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function l(e,t){var n=Math.pow(10,t);return Math.round(e*n)/n}t.__esModule=!0;var s=n(12),u=o(s),d=n(9),c=o(d),f=n(5),_=o(f),p=function(e){function t(n,o,a){function l(){var e=parseFloat(m.__input.value);_["default"].isNaN(e)||m.setValue(e)}function s(){m.__onFinishChange&&m.__onFinishChange.call(m,m.getValue())}function u(){s()}function d(e){var t=b-e.clientY;m.setValue(m.getValue()+t*m.__impliedStep),b=e.clientY}function f(){c["default"].unbind(window,"mousemove",d),c["default"].unbind(window,"mouseup",f),s()}function p(e){c["default"].bind(window,"mousemove",d),c["default"].bind(window,"mouseup",f),b=e.clientY}i(this,t);var h=r(this,e.call(this,n,o,a));h.__truncationSuspended=!1;var m=h,b=void 0;return h.__input=document.createElement("input"),h.__input.setAttribute("type","text"),c["default"].bind(h.__input,"change",l),c["default"].bind(h.__input,"blur",u),c["default"].bind(h.__input,"mousedown",p),c["default"].bind(h.__input,"keydown",function(e){13===e.keyCode&&(m.__truncationSuspended=!0,this.blur(),m.__truncationSuspended=!1,s())}),h.updateDisplay(),h.domElement.appendChild(h.__input),h}return a(t,e),t.prototype.updateDisplay=function(){return this.__input.value=this.__truncationSuspended?this.getValue():l(this.getValue(),this.__precision),e.prototype.updateDisplay.call(this)},t}(u["default"]);t["default"]=p},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function l(e,t,n,o,i){return o+(i-o)*((e-t)/(n-t))}t.__esModule=!0;var s=n(12),u=o(s),d=n(9),c=o(d),f=function(e){function t(n,o,a,s,u){function d(e){document.activeElement.blur(),c["default"].bind(window,"mousemove",f),c["default"].bind(window,"mouseup",_),f(e)}function f(e){e.preventDefault();var t=h.__background.getBoundingClientRect();return h.setValue(l(e.clientX,t.left,t.right,h.__min,h.__max)),!1}function _(){c["default"].unbind(window,"mousemove",f),c["default"].unbind(window,"mouseup",_),h.__onFinishChange&&h.__onFinishChange.call(h,h.getValue())}i(this,t);var p=r(this,e.call(this,n,o,{min:a,max:s,step:u})),h=p;return p.__background=document.createElement("div"),p.__foreground=document.createElement("div"),c["default"].bind(p.__background,"mousedown",d),c["default"].addClass(p.__background,"slider"),c["default"].addClass(p.__foreground,"slider-fg"),p.updateDisplay(),p.__background.appendChild(p.__foreground),p.domElement.appendChild(p.__background),p}return a(t,e),t.prototype.updateDisplay=function(){var t=(this.getValue()-this.__min)/(this.__max-this.__min);return this.__foreground.style.width=100*t+"%",e.prototype.updateDisplay.call(this)},t}(u["default"]);t["default"]=f},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}t.__esModule=!0;var l=n(7),s=o(l),u=n(9),d=o(u),c=function(e){function t(n,o,a){i(this,t);var l=r(this,e.call(this,n,o)),s=l;return l.__button=document.createElement("div"),l.__button.innerHTML=void 0===a?"Fire":a,d["default"].bind(l.__button,"click",function(e){return e.preventDefault(),s.fire(),!1}),d["default"].addClass(l.__button,"button"),l.domElement.appendChild(l.__button),l}return a(t,e),t.prototype.fire=function(){this.__onChange&&this.__onChange.call(this),this.getValue().call(this.object),this.__onFinishChange&&this.__onFinishChange.call(this,this.getValue())},t}(s["default"]);t["default"]=c},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function l(e,t,n,o){e.style.background="",g["default"].each(y,function(i){e.style.cssText+="background: "+i+"linear-gradient("+t+", "+n+" 0%, "+o+" 100%); "})}function s(e){e.style.background="",e.style.cssText+="background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);",e.style.cssText+="background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);"}t.__esModule=!0;var u=n(7),d=o(u),c=n(9),f=o(c),_=n(2),p=o(_),h=n(3),m=o(h),b=n(5),g=o(b),v=function(e){function t(n,o){function a(e){h(e),f["default"].bind(window,"mousemove",h),f["default"].bind(window,"mouseup",u)}function u(){f["default"].unbind(window,"mousemove",h),f["default"].unbind(window,"mouseup",u),_()}function d(){var e=(0,m["default"])(this.value);e!==!1?(y.__color.__state=e,y.setValue(y.__color.toOriginal())):this.value=y.__color.toString()}function c(){f["default"].unbind(window,"mousemove",b),f["default"].unbind(window,"mouseup",c),_()}function _(){y.__onFinishChange&&y.__onFinishChange.call(y,y.__color.toOriginal())}function h(e){e.preventDefault();var t=y.__saturation_field.getBoundingClientRect(),n=(e.clientX-t.left)/(t.right-t.left),o=1-(e.clientY-t.top)/(t.bottom-t.top);return o>1?o=1:o<0&&(o=0),n>1?n=1:n<0&&(n=0),y.__color.v=o,y.__color.s=n,y.setValue(y.__color.toOriginal()),!1}function b(e){e.preventDefault();var t=y.__hue_field.getBoundingClientRect(),n=1-(e.clientY-t.top)/(t.bottom-t.top);return n>1?n=1:n<0&&(n=0),y.__color.h=360*n,y.setValue(y.__color.toOriginal()),!1}i(this,t);var v=r(this,e.call(this,n,o));v.__color=new p["default"](v.getValue()),v.__temp=new p["default"](0);var y=v;v.domElement=document.createElement("div"),f["default"].makeSelectable(v.domElement,!1),v.__selector=document.createElement("div"),v.__selector.className="selector",v.__saturation_field=document.createElement("div"),v.__saturation_field.className="saturation-field",v.__field_knob=document.createElement("div"),v.__field_knob.className="field-knob",v.__field_knob_border="2px solid ",v.__hue_knob=document.createElement("div"),v.__hue_knob.className="hue-knob",v.__hue_field=document.createElement("div"),v.__hue_field.className="hue-field",v.__input=document.createElement("input"),v.__input.type="text",v.__input_textShadow="0 1px 1px ",f["default"].bind(v.__input,"keydown",function(e){13===e.keyCode&&d.call(this)}),f["default"].bind(v.__input,"blur",d),f["default"].bind(v.__selector,"mousedown",function(){f["default"].addClass(this,"drag").bind(window,"mouseup",function(){f["default"].removeClass(y.__selector,"drag")})});var w=document.createElement("div");return g["default"].extend(v.__selector.style,{width:"122px",height:"102px",padding:"3px",backgroundColor:"#222",boxShadow:"0px 1px 3px rgba(0,0,0,0.3)"}),g["default"].extend(v.__field_knob.style,{position:"absolute",width:"12px",height:"12px",border:v.__field_knob_border+(v.__color.v<.5?"#fff":"#000"),boxShadow:"0px 1px 3px rgba(0,0,0,0.5)",borderRadius:"12px",zIndex:1}),g["default"].extend(v.__hue_knob.style,{position:"absolute",width:"15px",height:"2px",borderRight:"4px solid #fff",zIndex:1}),g["default"].extend(v.__saturation_field.style,{width:"100px",height:"100px",border:"1px solid #555",marginRight:"3px",display:"inline-block",cursor:"pointer"}),g["default"].extend(w.style,{width:"100%",height:"100%",background:"none"}),l(w,"top","rgba(0,0,0,0)","#000"),g["default"].extend(v.__hue_field.style,{width:"15px",height:"100px",border:"1px solid #555",cursor:"ns-resize",position:"absolute",top:"3px",right:"3px"}),s(v.__hue_field),g["default"].extend(v.__input.style,{outline:"none",textAlign:"center",color:"#fff",border:0,fontWeight:"bold",textShadow:v.__input_textShadow+"rgba(0,0,0,0.7)"}),f["default"].bind(v.__saturation_field,"mousedown",a),f["default"].bind(v.__field_knob,"mousedown",a),f["default"].bind(v.__hue_field,"mousedown",function(e){b(e),f["default"].bind(window,"mousemove",b),f["default"].bind(window,"mouseup",c)}),v.__saturation_field.appendChild(w),v.__selector.appendChild(v.__field_knob),v.__selector.appendChild(v.__saturation_field),v.__selector.appendChild(v.__hue_field),v.__hue_field.appendChild(v.__hue_knob),v.domElement.appendChild(v.__input),v.domElement.appendChild(v.__selector),v.updateDisplay(),v}return a(t,e),t.prototype.updateDisplay=function(){var e=(0,m["default"])(this.getValue());if(e!==!1){var t=!1;g["default"].each(p["default"].COMPONENTS,function(n){if(!g["default"].isUndefined(e[n])&&!g["default"].isUndefined(this.__color.__state[n])&&e[n]!==this.__color.__state[n])return t=!0,{}},this),t&&g["default"].extend(this.__color.__state,e)}g["default"].extend(this.__temp.__state,this.__color.__state),this.__temp.a=1;var n=this.__color.v<.5||this.__color.s>.5?255:0,o=255-n;g["default"].extend(this.__field_knob.style,{marginLeft:100*this.__color.s-7+"px",marginTop:100*(1-this.__color.v)-7+"px",backgroundColor:this.__temp.toHexString(),border:this.__field_knob_border+"rgb("+n+","+n+","+n+")"}),this.__hue_knob.style.marginTop=100*(1-this.__color.h/360)+"px",this.__temp.s=1,this.__temp.v=1,l(this.__saturation_field,"left","#fff",this.__temp.toHexString()),this.__input.value=this.__color.toString(),g["default"].extend(this.__input.style,{backgroundColor:this.__color.toHexString(),color:"rgb("+n+","+n+","+n+")",textShadow:this.__input_textShadow+"rgba("+o+","+o+","+o+",.7)"})},t}(d["default"]),y=["-moz-","-o-","-webkit-","-ms-",""];t["default"]=v},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t,n){var o=document.createElement("li");return t&&o.appendChild(t),n?e.__ul.insertBefore(o,n):e.__ul.appendChild(o),e.onResize(),o}function r(e,t){var n=e.__preset_select[e.__preset_select.selectedIndex];t?n.innerHTML=n.value+"*":n.innerHTML=n.value}function a(e,t,n){if(n.__li=t,n.__gui=e,U["default"].extend(n,{options:function(t){if(arguments.length>1){var o=n.__li.nextElementSibling;return n.remove(),s(e,n.object,n.property,{before:o,factoryArgs:[U["default"].toArray(arguments)]})}if(U["default"].isArray(t)||U["default"].isObject(t)){var i=n.__li.nextElementSibling;return n.remove(),s(e,n.object,n.property,{before:i,factoryArgs:[t]})}},name:function(e){return n.__li.firstElementChild.firstElementChild.innerHTML=e,n},listen:function(){return n.__gui.listen(n),n},remove:function(){ +return n.__gui.remove(n),n}}),n instanceof B["default"])!function(){var e=new N["default"](n.object,n.property,{min:n.__min,max:n.__max,step:n.__step});U["default"].each(["updateDisplay","onChange","onFinishChange","step"],function(t){var o=n[t],i=e[t];n[t]=e[t]=function(){var t=Array.prototype.slice.call(arguments);return i.apply(e,t),o.apply(n,t)}}),z["default"].addClass(t,"has-slider"),n.domElement.insertBefore(e.domElement,n.domElement.firstElementChild)}();else if(n instanceof N["default"]){var o=function(t){if(U["default"].isNumber(n.__min)&&U["default"].isNumber(n.__max)){var o=n.__li.firstElementChild.firstElementChild.innerHTML,i=n.__gui.__listening.indexOf(n)>-1;n.remove();var r=s(e,n.object,n.property,{before:n.__li.nextElementSibling,factoryArgs:[n.__min,n.__max,n.__step]});return r.name(o),i&&r.listen(),r}return t};n.min=U["default"].compose(o,n.min),n.max=U["default"].compose(o,n.max)}else n instanceof O["default"]?(z["default"].bind(t,"click",function(){z["default"].fakeEvent(n.__checkbox,"click")}),z["default"].bind(n.__checkbox,"click",function(e){e.stopPropagation()})):n instanceof R["default"]?(z["default"].bind(t,"click",function(){z["default"].fakeEvent(n.__button,"click")}),z["default"].bind(t,"mouseover",function(){z["default"].addClass(n.__button,"hover")}),z["default"].bind(t,"mouseout",function(){z["default"].removeClass(n.__button,"hover")})):n instanceof j["default"]&&(z["default"].addClass(t,"color"),n.updateDisplay=U["default"].compose(function(e){return t.style.borderLeftColor=n.__color.toString(),e},n.updateDisplay),n.updateDisplay());n.setValue=U["default"].compose(function(t){return e.getRoot().__preset_select&&n.isModified()&&r(e.getRoot(),!0),t},n.setValue)}function l(e,t){var n=e.getRoot(),o=n.__rememberedObjects.indexOf(t.object);if(o!==-1){var i=n.__rememberedObjectIndecesToControllers[o];if(void 0===i&&(i={},n.__rememberedObjectIndecesToControllers[o]=i),i[t.property]=t,n.load&&n.load.remembered){var r=n.load.remembered,a=void 0;if(r[e.preset])a=r[e.preset];else{if(!r[Q])return;a=r[Q]}if(a[o]&&void 0!==a[o][t.property]){var l=a[o][t.property];t.initialValue=l,t.setValue(l)}}}}function s(e,t,n,o){if(void 0===t[n])throw new Error('Object "'+t+'" has no property "'+n+'"');var r=void 0;if(o.color)r=new j["default"](t,n);else{var s=[t,n].concat(o.factoryArgs);r=C["default"].apply(e,s)}o.before instanceof S["default"]&&(o.before=o.before.__li),l(e,r),z["default"].addClass(r.domElement,"c");var u=document.createElement("span");z["default"].addClass(u,"property-name"),u.innerHTML=r.property;var d=document.createElement("div");d.appendChild(u),d.appendChild(r.domElement);var c=i(e,d,o.before);return z["default"].addClass(c,oe.CLASS_CONTROLLER_ROW),r instanceof j["default"]?z["default"].addClass(c,"color"):z["default"].addClass(c,g(r.getValue())),a(e,c,r),e.__controllers.push(r),r}function u(e,t){return document.location.href+"."+t}function d(e,t,n){var o=document.createElement("option");o.innerHTML=t,o.value=t,e.__preset_select.appendChild(o),n&&(e.__preset_select.selectedIndex=e.__preset_select.length-1)}function c(e,t){t.style.display=e.useLocalStorage?"block":"none"}function f(e){var t=e.__save_row=document.createElement("li");z["default"].addClass(e.domElement,"has-save"),e.__ul.insertBefore(t,e.__ul.firstChild),z["default"].addClass(t,"save-row");var n=document.createElement("span");n.innerHTML=" ",z["default"].addClass(n,"button gears");var o=document.createElement("span");o.innerHTML="Save",z["default"].addClass(o,"button"),z["default"].addClass(o,"save");var i=document.createElement("span");i.innerHTML="New",z["default"].addClass(i,"button"),z["default"].addClass(i,"save-as");var r=document.createElement("span");r.innerHTML="Revert",z["default"].addClass(r,"button"),z["default"].addClass(r,"revert");var a=e.__preset_select=document.createElement("select");e.load&&e.load.remembered?U["default"].each(e.load.remembered,function(t,n){d(e,n,n===e.preset)}):d(e,Q,!1),z["default"].bind(a,"change",function(){for(var t=0;t0&&(e.preset=this.preset,e.remembered||(e.remembered={}),e.remembered[this.preset]=h(this)),e.folders={},U["default"].each(this.__folders,function(t,n){e.folders[n]=t.getSaveObject()}),e},save:function(){this.load.remembered||(this.load.remembered={}),this.load.remembered[this.preset]=h(this),r(this,!1),this.saveToLocalStorageIfPossible()},saveAs:function(e){this.load.remembered||(this.load.remembered={},this.load.remembered[Q]=h(this,!0)),this.load.remembered[e]=h(this),this.preset=e,d(this,e,!0),this.saveToLocalStorageIfPossible()},revert:function(e){U["default"].each(this.__controllers,function(t){this.getRoot().load.remembered?l(e||this.getRoot(),t):t.setValue(t.initialValue),t.__onFinishChange&&t.__onFinishChange.call(t,t.getValue())},this),U["default"].each(this.__folders,function(e){e.revert(e)}),e||r(this.getRoot(),!1)},listen:function(e){var t=0===this.__listening.length;this.__listening.push(e),t&&b(this.__listening)},updateDisplay:function(){U["default"].each(this.__controllers,function(e){e.updateDisplay()}),U["default"].each(this.__folders,function(e){e.updateDisplay()})}}),e.exports=oe},function(e,t){"use strict";e.exports={load:function(e,t){var n=t||document,o=n.createElement("link");o.type="text/css",o.rel="stylesheet",o.href=e,n.getElementsByTagName("head")[0].appendChild(o)},inject:function(e,t){var n=t||document,o=document.createElement("style");o.type="text/css",o.innerHTML=e;var i=n.getElementsByTagName("head")[0];try{i.appendChild(o)}catch(r){}}}},function(e,t){e.exports="
    Here's the new load parameter for your GUI's constructor:
    Automatically save values to localStorage on exit.
    The values saved to localStorage will override those passed to dat.GUI's constructor. This makes it easier to work incrementally, but localStorage is fragile, and your friends may not see the same values you do.
    "},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}t.__esModule=!0;var i=n(10),r=o(i),a=n(13),l=o(a),s=n(14),u=o(s),d=n(11),c=o(d),f=n(15),_=o(f),p=n(8),h=o(p),m=n(5),b=o(m),g=function(e,t){var n=e[t];return b["default"].isArray(arguments[2])||b["default"].isObject(arguments[2])?new r["default"](e,t,arguments[2]):b["default"].isNumber(n)?b["default"].isNumber(arguments[2])&&b["default"].isNumber(arguments[3])?b["default"].isNumber(arguments[4])?new u["default"](e,t,arguments[2],arguments[3],arguments[4]):new u["default"](e,t,arguments[2],arguments[3]):b["default"].isNumber(arguments[4])?new l["default"](e,t,{min:arguments[2],max:arguments[3],step:arguments[4]}):new l["default"](e,t,{min:arguments[2],max:arguments[3]}):b["default"].isString(n)?new c["default"](e,t):b["default"].isFunction(n)?new _["default"](e,t,""):b["default"].isBoolean(n)?new h["default"](e,t):null};t["default"]=g},function(e,t){"use strict";function n(e){setTimeout(e,1e3/60)}t.__esModule=!0,t["default"]=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||n},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}t.__esModule=!0;var r=n(9),a=o(r),l=n(5),s=o(l),u=function(){function e(){i(this,e),this.backgroundElement=document.createElement("div"),s["default"].extend(this.backgroundElement.style,{backgroundColor:"rgba(0,0,0,0.8)",top:0,left:0,display:"none",zIndex:"1000",opacity:0,WebkitTransition:"opacity 0.2s linear",transition:"opacity 0.2s linear"}),a["default"].makeFullscreen(this.backgroundElement),this.backgroundElement.style.position="fixed",this.domElement=document.createElement("div"),s["default"].extend(this.domElement.style,{position:"fixed",display:"none",zIndex:"1001",opacity:0,WebkitTransition:"-webkit-transform 0.2s ease-out, opacity 0.2s linear",transition:"transform 0.2s ease-out, opacity 0.2s linear"}),document.body.appendChild(this.backgroundElement),document.body.appendChild(this.domElement);var t=this;a["default"].bind(this.backgroundElement,"click",function(){t.hide()})}return e.prototype.show=function(){var e=this;this.backgroundElement.style.display="block",this.domElement.style.display="block",this.domElement.style.opacity=0,this.domElement.style.webkitTransform="scale(1.1)",this.layout(),s["default"].defer(function(){e.backgroundElement.style.opacity=1,e.domElement.style.opacity=1,e.domElement.style.webkitTransform="scale(1)"})},e.prototype.hide=function t(){var e=this,t=function n(){e.domElement.style.display="none",e.backgroundElement.style.display="none",a["default"].unbind(e.domElement,"webkitTransitionEnd",n),a["default"].unbind(e.domElement,"transitionend",n),a["default"].unbind(e.domElement,"oTransitionEnd",n)};a["default"].bind(this.domElement,"webkitTransitionEnd",t),a["default"].bind(this.domElement,"transitionend",t),a["default"].bind(this.domElement,"oTransitionEnd",t),this.backgroundElement.style.opacity=0,this.domElement.style.opacity=0,this.domElement.style.webkitTransform="scale(1.1)"},e.prototype.layout=function(){this.domElement.style.left=window.innerWidth/2-a["default"].getWidth(this.domElement)/2+"px",this.domElement.style.top=window.innerHeight/2-a["default"].getHeight(this.domElement)/2+"px"},e}();t["default"]=u},function(e,t,n){t=e.exports=n(24)(),t.push([e.id,".dg ul{list-style:none;margin:0;padding:0;width:100%;clear:both}.dg.ac{position:fixed;top:0;left:0;right:0;height:0;z-index:0}.dg:not(.ac) .main{overflow:hidden}.dg.main{-webkit-transition:opacity .1s linear;transition:opacity .1s linear}.dg.main.taller-than-window{overflow-y:auto}.dg.main.taller-than-window .close-button{opacity:1;margin-top:-1px;border-top:1px solid #2c2c2c}.dg.main ul.closed .close-button{opacity:1!important}.dg.main .close-button.drag,.dg.main:hover .close-button{opacity:1}.dg.main .close-button{-webkit-transition:opacity .1s linear;transition:opacity .1s linear;border:0;position:absolute;line-height:19px;height:20px;cursor:pointer;text-align:center;background-color:#000}.dg.main .close-button:hover{background-color:#111}.dg.a{float:right;margin-right:15px;overflow-x:hidden}.dg.a.has-save>ul{margin-top:27px}.dg.a.has-save>ul.closed{margin-top:0}.dg.a .save-row{position:fixed;top:0;z-index:1002}.dg li{-webkit-transition:height .1s ease-out;transition:height .1s ease-out}.dg li:not(.folder){cursor:auto;height:27px;line-height:27px;overflow:hidden;padding:0 4px 0 5px}.dg li.folder{padding:0;border-left:4px solid transparent}.dg li.title{cursor:pointer;margin-left:-4px}.dg .closed li:not(.title),.dg .closed ul li,.dg .closed ul li>*{height:0;overflow:hidden;border:0}.dg .cr{clear:both;padding-left:3px;height:27px}.dg .property-name{cursor:default;float:left;clear:left;width:40%;overflow:hidden;text-overflow:ellipsis}.dg .c{float:left;width:60%}.dg .c input[type=text]{border:0;margin-top:4px;padding:3px;width:100%;float:right}.dg .has-slider input[type=text]{width:30%;margin-left:0}.dg .slider{float:left;width:66%;margin-left:-5px;margin-right:0;height:19px;margin-top:4px}.dg .slider-fg{height:100%}.dg .c input[type=checkbox]{margin-top:9px}.dg .c select{margin-top:5px}.dg .cr.boolean,.dg .cr.boolean *,.dg .cr.function,.dg .cr.function *,.dg .cr.function .property-name{cursor:pointer}.dg .selector{display:none;position:absolute;margin-left:-9px;margin-top:23px;z-index:10}.dg .c:hover .selector,.dg .selector.drag{display:block}.dg li.save-row{padding:0}.dg li.save-row .button{display:inline-block;padding:0 6px}.dg.dialogue{background-color:#222;width:460px;padding:15px;font-size:13px;line-height:15px}#dg-new-constructor{padding:10px;color:#222;font-family:Monaco,monospace;font-size:10px;border:0;resize:none;box-shadow:inset 1px 1px 1px #888;word-wrap:break-word;margin:12px 0;display:block;width:440px;overflow-y:scroll;height:100px;position:relative}#dg-local-explain{display:none;font-size:11px;line-height:17px;border-radius:3px;background-color:#333;padding:8px;margin-top:10px}#dg-local-explain code{font-size:10px}#dat-gui-save-locally{display:none}.dg{color:#eee;font:11px Lucida Grande,sans-serif;text-shadow:0 -1px 0 #111}.dg.main::-webkit-scrollbar{width:5px;background:#1a1a1a}.dg.main::-webkit-scrollbar-corner{height:0;display:none}.dg.main::-webkit-scrollbar-thumb{border-radius:5px;background:#676767}.dg li:not(.folder){background:#1a1a1a;border-bottom:1px solid #2c2c2c}.dg li.save-row{line-height:25px;background:#dad5cb;border:0}.dg li.save-row select{margin-left:5px;width:108px}.dg li.save-row .button{margin-left:5px;margin-top:1px;border-radius:2px;font-size:9px;line-height:7px;padding:4px 4px 5px;background:#c5bdad;color:#fff;text-shadow:0 1px 0 #b0a58f;box-shadow:0 -1px 0 #b0a58f;cursor:pointer}.dg li.save-row .button.gears{background:#c5bdad url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB/9ZQ7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQJJREFUeNpiYKAU/P//PwGIC/ApCABiBSAW+I8AClAcgKxQ4T9hoMAEUrxx2QSGN6+egDX+/vWT4e7N82AMYoPAx/evwWoYoSYbACX2s7KxCxzcsezDh3evFoDEBYTEEqycggWAzA9AuUSQQgeYPa9fPv6/YWm/Acx5IPb7ty/fw+QZblw67vDs8R0YHyQhgObx+yAJkBqmG5dPPDh1aPOGR/eugW0G4vlIoTIfyFcA+QekhhHJhPdQxbiAIguMBTQZrPD7108M6roWYDFQiIAAv6Aow/1bFwXgis+f2LUAynwoIaNcz8XNx3Dl7MEJUDGQpx9gtQ8YCueB+D26OECAAQDadt7e46D42QAAAABJRU5ErkJggg==) 2px 1px no-repeat;height:7px;width:8px}.dg li.save-row .button:hover{background-color:#bab19e;box-shadow:0 -1px 0 #b0a58f}.dg li.folder{border-bottom:0}.dg li.title{padding-left:16px;background:#000 url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlI+hKgFxoCgAOw==) 6px 10px no-repeat;cursor:pointer;border-bottom:1px solid hsla(0,0%,100%,.2)}.dg .closed li.title{background-image:url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlGIWqMCbWAEAOw==)}.dg .cr.boolean{border-left:3px solid #806787}.dg .cr.color{border-left:3px solid}.dg .cr.function{border-left:3px solid #e61d5f}.dg .cr.number{border-left:3px solid #2fa1d6}.dg .cr.number input[type=text]{color:#2fa1d6}.dg .cr.string{border-left:3px solid #1ed36f}.dg .cr.string input[type=text]{color:#1ed36f}.dg .cr.boolean:hover,.dg .cr.function:hover{background:#111}.dg .c input[type=text]{background:#303030;outline:none}.dg .c input[type=text]:hover{background:#3c3c3c}.dg .c input[type=text]:focus{background:#494949;color:#fff}.dg .c .slider{background:#303030;cursor:ew-resize}.dg .c .slider-fg{background:#2fa1d6;max-width:100%}.dg .c .slider:hover{background:#3c3c3c}.dg .c .slider:hover .slider-fg{background:#44abda}",""])},function(e,t){e.exports=function(){var e=[];return e.toString=function(){for(var e=[],t=0;t=0&&n0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),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("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w("

    >>0?j=31:(j=p-256>>>16&8,p=s=p<>>16&4,j+=s,p=s=p<>>16&2,j=d+j,s=-j+(p<>>15)+14,j=(s<<1)+(h>>>(s+7>>>0)&1)),p=f+(j+76),c[i+7]=j,c[i+5]=0,c[i+4]=0,0!=(1<>>1)+25);;){if((c[p+1]&-8|0)!=(h|0)){if(s=p+(j>>>31&1)+4,j<<=1,d=s,0!=(c[s]|0)){p=c[d]}else{if(0!=(1==(d>>>0>=c[f+4]>>>0&1)|0)){c[s]=i;c[i+6]=p;a=i;c[i+3]=a;c[i+2]=a;break b}y4()}}else{s=c[p+2];if(0!=(1==((p>>>0>=c[f+4]>>>0?s>>>0>=c[f+4]>>>0:0)&1)|0)){a=i;c[s+3]=a;c[p+2]=a;c[i+2]=s;c[i+3]=p;c[i+6]=0;break b}y4()}}}else{s=f+1,c[s]|=1<j>>>0){if(i=p=B4(j),(p|0)!=(c[d]+c[d+1]|0)){d=18}else{var r=i;g=r;h=j;d=19}}else{d=18}}}8==d&&(d=p=B4(0),-1==(p|0)?d=18:(j=(c[z4+2]-1^-1)&a+c[z4+2]+47,0==(c[z4+1]-1&d|0)?p=j:j=p=(d-1+c[z4+1]&(c[z4+1]-1^-1))-d+j,2147483647>p>>>0?(i=p=B4(j),(p|0)!=(d|0)?d=18:(g=r=d,h=j,d=19)):d=18));18==d&&(r=g);if(-1==(r|0)){p=-1!=(i|0);b:do{if(p){var s=2147483647>j>>>0;do{if(s&&j>>>0>>0&&(d=(c[z4+2]-1^-1)&a+ -j+c[z4+2]+47,2147483647>d>>>0)){if(-1==(B4(d)|0)){B4(-j);break b}j+=d}}while(0);if(-1!=(i|0)){g=l=i;h=j;m=l;d=31;break a}}}while(0);j=f+110;c[j]|=4}}d=30}while(0);30==d&&(m=g);if(-1==(m|0)){if(j=(c[z4+2]-1^-1)&a+c[z4+2]+47,2147483647>j>>>0){if(j=B4(j),l=B4(0),-1==(j|0)){d=38}else{if(-1==(l|0)){d=38}else{if(j>>>0>>0){if(l-=j,l>>>0>a+40>>>0){g=j;h=l;var t=j;d=39}else{d=38}}else{d=38}}}}else{d=38}}else{d=38}38==d&&(t=g);t=-1!=(t|0);a:do{if(t){j=f+108;l=c[j]+h;c[j]=l;l>>>0>c[f+109]>>>0&&(c[f+109]=c[f+108]);j=0!=(c[f+6]|0);l=f;b:do{if(j){for(m=i=l+111;;){if(0==(i|0)){n=m;break}i=m;if((g|0)==(c[m]+c[m+1]|0)){n=i;break}m=i=c[i+2]}i=0!=(n|0);do{if(i&&0==(c[m+3]&8|0)&&c[f+6]>>>0>=c[m]>>>0&&c[f+6]>>>0>>0){j=m+1;c[j]+=h;C4(f,c[f+6],h+c[f+3]);break b}}while(0);g>>>0>>0&&(c[f+4]=g);for(r=m=i=f+111;;){i=m;if(0==(r|0)){var w=i;break}r=m;if((c[i]|0)==(g+h|0)){w=r;break}r=m=i=c[r+2]}i=0!=(w|0);do{if(i&&0==(c[m+3]&8|0)){n=c[m];c[m]=g;w=m+1;c[w]+=h;e=ytb(f,g,n,a);d=74;break a}}while(0);ztb(f,g,h,0)}else{d=0==(c[l+4]|0)?45:g>>>0>>0?45:46,45==d&&(c[f+4]=g),c[f+111]=g,c[f+112]=h,c[f+114]=0,c[f+9]=c[z4],c[f+8]=-1,Atb(f),m=f,(f|0)==(x4|0)?C4(m,g,h-40):(m=m-8+(c[f-8+1]&-8),C4(f,m,g+h-40+ -m))}}while(0);a>>>0>>0?(j=f+3,e=c[j]-a,c[j]=e,j=c[f+6],l=j+a,c[f+6]=l,c[l+1]=e|1,c[j+1]=a|3,e=j+8,d=74):d=73}else{d=73}}while(0);73==d&&(c[D4]=12,e=0);return e}wtb.X=1;function r3(a){var d,e,f,g,h,i,j,l,m,n,p,r,s=0!=(a|0);a:do{if(s){e=a-8;n=0!=(1==((e>>>0>=c[x4+4]>>>0?1!=(c[e+1]&3|0):0)&1)|0);b:do{if(n){f=c[e+1]&-8;g=e+f;r=0!=(c[e+1]&1|0);do{if(!r){d=c[e];if(0==(c[e+1]&3|0)){break a}h=e+ -d;f+=d;e=h;if(0==(1==(h>>>0>=c[x4+4]>>>0&1)|0)){break b}if((e|0)==(c[x4+5]|0)){if(3!=(c[g+1]&3|0)){break}c[x4+2]=f;g+=1;c[g]&=-2;c[e+1]=f|1;c[e+f]=f;break a}h=e;if(32>d>>>3>>>0){if(h=c[h+2],i=c[e+3],j=d>>>3,(h|0)==(i|0)){c[x4]&=1<>>0>=c[x4+4]>>>0){d=16}else{var t=0;d=18}}16==d&&(t=(i|0)==((j<<1)+x4+10|0)?1:i>>>0>=c[x4+4]>>>0);0!=(1==(t&1)|0)?(c[h+3]=i,c[i+2]=h):y4()}}else{d=h;i=c[d+6];j=(c[d+3]|0)!=(d|0);var w=d;do{if(j){l=c[w+2],h=c[d+3],0!=(1==(l>>>0>=c[x4+4]>>>0&1)|0)?(c[l+3]=h,c[h+2]=l):y4()}else{l=h=w+5;h=m=c[h];if(0==(m|0)&&(l=h=d+4,h=m=c[h],0==(m|0))){break}for(;;){var x=h+5;m=x;if(0==(c[x]|0)&&(m=x=h+4,0==(c[x]|0))){break}l=h=m;h=c[h]}0!=(1==(l>>>0>=c[x4+4]>>>0&1)|0)?c[l]=0:y4()}}while(0);0!=(i|0)&&(j=x4+c[d+7]+76,(d|0)==(c[j]|0)?(w=h,c[j]=w,0==(w|0)&&(c[x4+1]&=1<>>0>=c[x4+4]>>>0&1)|0)?(j=h,w=i+4,(c[i+4]|0)==(d|0)?c[w]=j:c[w+1]=j):y4(),0!=(h|0)&&(0!=(1==(h>>>0>=c[x4+4]>>>0&1)|0)?(c[h+6]=i,i=j=c[d+4],0!=(j|0)&&(0!=(1==(i>>>0>=c[x4+4]>>>0&1)|0)?(c[h+4]=i,c[i+6]=h):y4()),d=i=c[d+5],0!=(i|0)&&(0!=(1==(d>>>0>=c[x4+4]>>>0&1)|0)?(c[h+5]=d,c[d+6]=h):y4())):y4()))}}}while(0);if(0!=(1==((e>>>0>>0?0!=(c[g+1]&1|0):0)&1)|0)){a=0!=(c[g+1]&2|0);s=g;do{if(a){n=s+1,c[n]&=-2,c[e+1]=f|1,c[e+f]=f}else{if((s|0)==(c[x4+6]|0)){f=c[x4+3]+f;c[x4+3]=f;c[x4+6]=e;c[e+1]=f|1;(e|0)==(c[x4+5]|0)&&(c[x4+5]=0,c[x4+2]=0);if(f>>>0<=c[x4+7]>>>0){break a}Btb(0);break a}if((g|0)==(c[x4+5]|0)){f=c[x4+2]+f;c[x4+2]=f;c[x4+5]=e;c[e+1]=f|1;c[e+f]=f;break a}n=c[g+1]&-8;f+=n;r=32>n>>>3>>>0;t=g;do{if(r){h=c[t+2],i=c[g+3],j=n>>>3,(h|0)==(i|0)?c[x4]&=1<>>0>=c[x4+4]>>>0?d=71:(p=0,d=73),71==d&&(p=(i|0)==((j<<1)+x4+10|0)?1:i>>>0>=c[x4+4]>>>0),0!=(1==(p&1)|0)?(c[h+3]=i,c[i+2]=h):y4())}else{d=t;i=c[d+6];j=(c[d+3]|0)!=(d|0);w=d;do{if(j){l=c[w+2],h=c[d+3],0!=(1==(l>>>0>=c[x4+4]>>>0&1)|0)?(c[l+3]=h,c[h+2]=l):y4()}else{l=h=w+5;h=m=c[h];if(0==(m|0)&&(l=h=d+4,h=m=c[h],0==(m|0))){break}for(;;){m=x=h+5;if(0==(c[x]|0)&&(m=x=h+4,0==(c[x]|0))){break}l=h=m;h=c[h]}0!=(1==(l>>>0>=c[x4+4]>>>0&1)|0)?c[l]=0:y4()}}while(0);0!=(i|0)&&(j=x4+c[d+7]+76,(d|0)==(c[j]|0)?(w=h,c[j]=w,0==(w|0)&&(c[x4+1]&=1<>>0>=c[x4+4]>>>0&1)|0)?(j=h,w=i+4,(c[i+4]|0)==(d|0)?c[w]=j:c[w+1]=j):y4(),0!=(h|0)&&(0!=(1==(h>>>0>=c[x4+4]>>>0&1)|0)?(c[h+6]=i,i=j=c[d+4],0!=(j|0)&&(0!=(1==(i>>>0>=c[x4+4]>>>0&1)|0)?(c[h+4]=i,c[i+6]=h):y4()),d=i=c[d+5],0!=(i|0)&&(0!=(1==(d>>>0>=c[x4+4]>>>0&1)|0)?(c[h+5]=d,c[d+6]=h):y4())):y4()))}}while(0);c[e+1]=f|1;c[e+f]=f;if((e|0)==(c[x4+5]|0)){c[x4+2]=f;break a}}}while(0);if(32>f>>>3>>>0){f>>>=3;p=g=(f<<1)+x4+10;0!=(1<>>0>=c[x4+4]>>>0&1)|0)?p=c[g+2]:y4():c[x4]|=1<>>8;0==(g|0)?p=0:65535>>0?p=31:(p=g-256>>>16&8,g=a=g<>>16&4,p+=a,g=a=g<>>16&2,p=s+p,a=-p+(g<>>15)+14,p=(a<<1)+(f>>>(a+7>>>0)&1));g=x4+(p+76);c[e+7]=p;c[e+5]=0;c[e+4]=0;s=0!=(1<>>1)+25);;){if((c[a+1]&-8|0)!=(f|0)){if(r=a+(n>>>31&1)+4,n<<=1,t=r,0!=(c[r]|0)){a=c[t]}else{if(0!=(1==(t>>>0>=c[x4+4]>>>0&1)|0)){c[r]=e;c[e+6]=a;f=e;c[e+3]=f;c[e+2]=f;break c}y4()}}else{r=c[a+2];if(0!=(1==((a>>>0>=c[x4+4]>>>0?r>>>0>=c[x4+4]>>>0:0)&1)|0)){f=e;c[r+3]=f;c[a+2]=f;c[e+2]=r;c[e+3]=a;c[e+6]=0;break c}y4()}}}else{c[x4+1]|=1<>>0?d:-1}Ctb.X=1;function Btb(a){var d,e,f,g,h;e=x4;f=a;a=0;0==(c[z4]|0)&&xtb();if(4294967232>f>>>0&&0!=(c[e+6]|0)){f+=40;if(c[e+3]>>>0>f>>>0){d=c[z4+2];g=(Math.floor((c[e+3]-1+ -f+d>>>0)/(d>>>0))-1)*d;f=A4(e,c[e+6]);if(0!=(c[f+3]&8|0)){d=14}else{if(2147483647<=g>>>0&&(g=-2147483648-d),d=B4(0),(d|0)!=(c[f]+c[f+1]|0)){d=14}else{if(g=B4(-g),h=B4(0),-1==(g|0)){d=14}else{if(h>>>0>>0){var i=d-h,a=i;d=15}else{d=14}}}}14==d&&(i=a);0!=(i|0)&&(i=f+1,c[i]-=a,i=e+108,c[i]-=a,C4(e,c[e+6],c[e+3]-a))}0==(a|0)&&c[e+3]>>>0>c[e+7]>>>0&&(c[e+7]=-1)}return 0!=(a|0)?1:0}Btb.X=1;function xtb(){var a,d,e=0==(c[z4]|0);a:do{if(e){d=a=Dtb();var f=0!=(d-1&d|0);do{if(!f&&0==(a-1&a|0)){c[z4+2]=d;c[z4+1]=a;c[z4+3]=-1;c[z4+4]=2097152;c[z4+5]=0;c[x4+110]=c[z4+5];a=Math.floor(Date.now()/1e3)^1431655765;a|=8;a&=-8;c[z4]=a;break a}}while(0);y4()}}while(0)}xtb.X=1;function A4(a,d){var e,f;f=a+111;a:for(;;){var g=d>>>0>=c[f]>>>0;do{if(g&&d>>>0>>0){e=f;break a}}while(0);f=g=c[f+2];if(0==(g|0)){e=0;break}}return e}A4.X=1;function C4(a,d,e){var f;f=0==(d+8&7|0)?0:8-(d+8&7)&7;d+=f;e-=f;c[a+6]=d;c[a+3]=e;c[d+1]=e|1;c[d+(e+1)]=40;c[a+7]=c[z4+4]}C4.X=1;function Atb(a){var d,e;for(d=0;;){var f=e=(d<<1)+a+10;c[e+3]=f;c[e+2]=f;d=e=d+1;if(32<=e>>>0){break}}}Atb.X=1;function ytb(a,d,e,f){var g,h,i,j,l,m,n,p,r,s,t,d=d+(0==(d+8&7|0)?0:8-(d+8&7)&7),e=e+(0==(e+8&7|0)?0:8-(e+8&7)&7);h=d+f;i=e-d-f;c[d+1]=f|3;f=(e|0)==(c[a+6]|0);a:do{if(f){j=a+3,s=c[j]+i,c[j]=s,c[a+6]=h,c[h+1]=s|1}else{if((e|0)==(c[a+5]|0)){j=a+2,s=c[j]+i,j=c[j]=s,c[a+5]=h,c[h+1]=j|1,c[h+j]=j}else{if(1==(c[e+1]&3|0)){j=c[e+1]&-8;s=32>j>>>3>>>0;t=e;do{if(s){if(l=c[t+2],m=c[e+3],n=j>>>3,(l|0)==(m|0)){g=a,c[g]&=1<>>0>=c[a+4]>>>0){g=16}else{var w=0;g=18}}16==g&&(w=(m|0)==((n<<1)+a+10|0)?1:m>>>0>=c[a+4]>>>0);0!=(1==(w&1)|0)?(c[l+3]=m,c[m+2]=l):y4()}}else{n=t;l=c[n+6];m=(c[n+3]|0)!=(n|0);var x=n;do{if(m){p=c[x+2],g=c[n+3],0!=(1==(p>>>0>=c[a+4]>>>0&1)|0)?(c[p+3]=g,c[g+2]=p):y4()}else{p=g=x+5;g=r=c[g];if(0==(r|0)&&(p=g=n+4,g=r=c[g],0==(r|0))){break}for(;;){var y=g+5;r=y;if(0==(c[y]|0)&&(r=y=g+4,0==(c[y]|0))){break}p=g=r;g=c[g]}0!=(1==(p>>>0>=c[a+4]>>>0&1)|0)?c[p]=0:y4()}}while(0);0!=(l|0)&&(m=a+c[n+7]+76,(n|0)==(c[m]|0)?(x=g,c[m]=x,0==(x|0)&&(m=a+1,c[m]&=1<>>0>=c[a+4]>>>0&1)|0)?(m=g,x=l+4,(c[l+4]|0)==(n|0)?c[x]=m:c[x+1]=m):y4(),0!=(g|0)&&(0!=(1==(g>>>0>=c[a+4]>>>0&1)|0)?(c[g+6]=l,l=m=c[n+4],0!=(m|0)&&(0!=(1==(l>>>0>=c[a+4]>>>0&1)|0)?(c[g+4]=l,c[l+6]=g):y4()),n=l=c[n+5],0!=(l|0)&&(0!=(1==(n>>>0>=c[a+4]>>>0&1)|0)?(c[g+5]=n,c[n+6]=g):y4())):y4()))}}while(0);e+=j;i+=j}j=e+1;c[j]&=-2;c[h+1]=i|1;c[h+i]=i;if(32>i>>>3>>>0){j=i>>>3,t=s=(j<<1)+a+10,0!=(1<>>0>=c[a+4]>>>0&1)|0)?t=c[s+2]:y4():(n=a,c[n]|=1<>>8,0==(s|0)?t=0:65535>>0?t=31:(t=s-256>>>16&8,s=n=s<>>16&4,t+=n,s=n=s<>>16&2,t=g+t,n=-t+(s<>>15)+14,t=(n<<1)+(i>>>(n+7>>>0)&1)),s=a+(t+76),c[j+7]=t,c[j+5]=0,c[j+4]=0,0!=(1<>>1)+25);;){if((c[s+1]&-8|0)!=(i|0)){if(n=s+(t>>>31&1)+4,t<<=1,g=n,0!=(c[n]|0)){s=c[g]}else{if(0!=(1==(g>>>0>=c[a+4]>>>0&1)|0)){c[n]=j;c[j+6]=s;a=j;c[j+3]=a;c[j+2]=a;break a}y4()}}else{n=c[s+2];if(0!=(1==((s>>>0>=c[a+4]>>>0?n>>>0>=c[a+4]>>>0:0)&1)|0)){a=j;c[n+3]=a;c[s+2]=a;c[j+2]=n;c[j+3]=s;c[j+6]=0;break a}y4()}}}else{n=a+1,c[n]|=1<>>0>>0?g:h;j=h+8;l=h+24;C4(a,d,e-40);c[h+1]=27;var m=a+111;c[j]=c[m];k[j]=k[m];c[j+1]=c[m+1];k[j+1]=k[m+1];c[j+2]=c[m+2];k[j+2]=k[m+2];c[j+3]=c[m+3];k[j+3]=k[m+3];c[a+111]=d;c[a+112]=e;c[a+114]=f;c[a+113]=j;d=l+4;c[l+1]=7;e=d+1>>>0>>0;a:do{if(e){for(;;){if(l=d,d=l+4,c[l+1]=7,d+1>>>0>=i>>>0){break a}}}}while(0);i=(h|0)!=(g|0);a:do{if(i){if(d=g,e=h-g,f=d+(e+1),c[f]&=-2,c[d+1]=e|1,c[d+e]=e,32>e>>>3>>>0){e>>>=3,l=f=(e<<1)+a+10,0!=(1<>>0>=c[a+4]>>>0&1)|0)?l=c[f+2]:y4():(j=a,c[j]|=1<>>8,0==(f|0)?l=0:65535>>0?l=31:(l=f-256>>>16&8,f=j=f<>>16&4,l+=j,f=j=f<>>16&2,l=m+l,j=-l+(f<>>15)+14,l=(j<<1)+(e>>>(j+7>>>0)&1)),f=a+(l+76),c[d+7]=l,c[d+5]=0,c[d+4]=0,0!=(1<>>1)+25);;){if((c[f+1]&-8|0)!=(e|0)){if(j=f+(l>>>31&1)+4,l<<=1,m=j,0!=(c[j]|0)){f=c[m]}else{if(0!=(1==(m>>>0>=c[a+4]>>>0&1)|0)){c[j]=d;c[d+6]=f;a=d;c[d+3]=a;c[d+2]=a;break a}y4()}}else{j=c[f+2];if(0!=(1==((f>>>0>=c[a+4]>>>0?j>>>0>=c[a+4]>>>0:0)&1)|0)){a=d;c[j+3]=a;c[f+2]=a;c[d+2]=j;c[d+3]=f;c[d+6]=0;break a}y4()}}}else{e=a+1,c[e]|=1<>>=0;d>>>=0;return{v:a*d>>>0,A:4294967295e){return K4(Ttb),-1}if(f.object.e){if(f.object.i){for(var g=0;ge||0>g){K4(Ttb),d=-1}else{for(var i=a.object.d;i.length?/.test(a)||"%"==a[0])?(d=Types.types[a].g,h=Types.types[a].k):aa("Unclear type in struct: "+a+", in "+e.Hf+" :: "+dump(Types.types[e.Hf]));h=e.ag?1:Math.min(h,xa);e.k=Math.max(e.k,h);a=Ia(e.g,h);e.g=a+d;0<=g&&f.push(a-g);return g=a}));e.g=Ia(e.g,e.k);if(0==f.length){e.B=e.g}else{var h={};1==f.filter((function(a){return h[a]?oa:h[a]=ia})).length&&(e.B=f[0])}e.$f=1!=e.B;d=e.Ef;var i=Date.now();c[a+d[0]]=Math.floor(i/1e3);c[a+d[1]]=Math.floor(1e3*(i-1e3*Math.floor(i/1e3)))}function y4(){aa("abort() at "+Error().stack)}function Dtb(){switch(8){case 8:return naa;case 54:;case 56:;case 21:;case 61:;case 63:;case 22:;case 67:;case 23:;case 24:;case 25:;case 26:;case 27:;case 69:;case 28:;case 101:;case 70:;case 71:;case 29:;case 30:;case 199:;case 75:;case 76:;case 32:;case 43:;case 44:;case 80:;case 46:;case 47:;case 45:;case 48:;case 49:;case 42:;case 82:;case 33:;case 7:;case 108:;case 109:;case 107:;case 112:;case 119:;case 121:return 200809;case 13:;case 104:;case 94:;case 95:;case 34:;case 35:;case 77:;case 81:;case 83:;case 84:;case 85:;case 86:;case 87:;case 88:;case 89:;case 90:;case 91:;case 94:;case 95:;case 110:;case 111:;case 113:;case 114:;case 115:;case 116:;case 117:;case 118:;case 120:;case 40:;case 16:;case 79:;case 19:return-1;case 92:;case 93:;case 5:;case 72:;case 6:;case 74:;case 92:;case 93:;case 96:;case 97:;case 98:;case 99:;case 102:;case 103:;case 105:return 1;case 38:;case 66:;case 50:;case 51:;case 4:return 1024;case 15:;case 64:;case 41:return 32;case 55:;case 37:;case 17:return 2147483647;case 18:;case 1:return 47839;case 59:;case 57:return 99;case 68:;case 58:return 2048;case 0:return 2097152;case 3:return 65536;case 14:return 32768;case 73:return 32767;case 39:return 16384;case 60:return 1e3;case 106:return 700;case 52:return 256;case 62:return 255;case 2:return 100;case 65:return 64;case 36:return 20;case 100:return 16;case 20:return 6;case 53:return 4}K4(Ttb);return-1}function B4(a){fub||(Ea=Ea+4095>>12<<12,fub=ia);var d=Ea;0!=a&&haa(a);return d}var fub;function I4(){return!!I4.L}var Qtb,Ltb;function P8a(a,d){var e=4;if(d>h-6&63,h=h-6,e=e+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[l]}}2==h?(e+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(f&3)<<4],e+="=="):4==h&&(e+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(f&15)<<2],e+="=");n.src="data:audio/x-"+d.substr(-3)+";base64,"+e;g(n)}});n.src=j;setTimeout((function(){g(n)}),1e4)}else{return h()}})})}for(var p,r=[a,d],s=r[0],t=1;ti.status||304===i.status||aa(Error("Couldn't load "+e+". Status: "+i.status));var j=Number(i.getResponseHeader("Content-length")),l,m=1048576;if(!((l=i.getResponseHeader("Accept-Ranges"))&&"bytes"===l)){m=j}var n=new h(m,j);n.Mf((function(a){var d=a*n.t,f=(a+1)*n.t-1,f=Math.min(f,j-1);if("undefined"===typeof n.l[a]){var g=n.l;d>f&&aa(Error("invalid range ("+d+", "+f+") or no bytes requested!"));f>j-1&&aa(Error("only "+j+" bytes available! programmer error!"));var h=new XMLHttpRequest;h.open("GET",e,oa);j!==m&&h.setRequestHeader("Range","bytes="+d+"-"+f);"undefined"!=typeof Uint8Array&&(h.responseType="arraybuffer");h.overrideMimeType&&h.overrideMimeType("text/plain; charset=x-user-defined");h.send(na);200<=h.status&&300>h.status||304===h.status||aa(Error("Couldn't load "+e+". Status: "+h.status));d=h.response!==fa?new Uint8Array(h.response||[]):Xa(h.responseText||"",ia);g[a]=d}"undefined"===typeof n.l[a]&&aa(Error("doXHR failed!"));return n.l[a]}));h={e:oa,d:n}}else{h={e:oa,url:e}}return P4(a,d,h,f,g)});Module.FS_createLink=(function(a,d,e,f,g){return P4(a,d,{e:oa,link:e},f,g)});Module.FS_createDevice=Q4;K4(0);var Rtb=u(12,"void*",q);u([0],"i8",q);Module.requestFullScreen=(function(){function a(){}function d(){var a=oa;if((document.webkitFullScreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.mozFullscreenElement||document.fullScreenElement||document.fullscreenElement)===e){e.Lf=e.requestPointerLock||e.mozRequestPointerLock||e.webkitRequestPointerLock,e.Lf(),a=ia}if(Module.onFullScreen){Module.onFullScreen(a)}}var e=Module.canvas;document.addEventListener("fullscreenchange",d,oa);document.addEventListener("mozfullscreenchange",d,oa);document.addEventListener("webkitfullscreenchange",d,oa);document.addEventListener("pointerlockchange",a,oa);document.addEventListener("mozpointerlockchange",a,oa);document.addEventListener("webkitpointerlockchange",a,oa);e.Kf=e.requestFullScreen||e.mozRequestFullScreen||(e.webkitRequestFullScreen?(function(){e.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}):na);e.Kf()});Module.requestAnimationFrame=(function(a){window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||window.setTimeout);window.requestAnimationFrame(a)});Module.pauseMainLoop=pa();Module.resumeMainLoop=(function(){gub&&(gub=oa,na())});Module.Cf=(function(a){function d(){for(var a=0;0>a;a++){f.push(0)}}var e=a.length+1,f=[u(Xa("/bin/this.program"),"i8",q)];d();for(var g=0;g 0) { + + // Grab the lowest f(x) to process next. Heap keeps this sorted for us. + var currentNode = openHeap.pop(); + + // End case -- result has been found, return the traced path. + if (currentNode === end) { + return pathTo(currentNode); + } + + // Normal case -- move currentNode from open to closed, process each of its neighbors. + currentNode.closed = true; + + // Find all neighbors for the current node. + var neighbors = graph.neighbors(currentNode); + + for (var i = 0, il = neighbors.length; i < il; ++i) { + var neighbor = neighbors[i]; + + if (neighbor.closed || neighbor.isWall()) { + // Not a valid node to process, skip to next neighbor. + continue; + } + + // The g score is the shortest distance from start to current node. + // We need to check if the path we have arrived at this neighbor is the shortest one we have seen yet. + var gScore = currentNode.g + neighbor.getCost(currentNode); + var beenVisited = neighbor.visited; + + if (!beenVisited || gScore < neighbor.g) { + + // Found an optimal (so far) path to this node. Take score for node to see how good it is. + neighbor.visited = true; + neighbor.parent = currentNode; + neighbor.h = neighbor.h || heuristic(neighbor, end); + neighbor.g = gScore; + neighbor.f = neighbor.g + neighbor.h; + graph.markDirty(neighbor); + if (closest) { + // If the neighbour is closer than the current closestNode or if it's equally close but has + // a cheaper path than the current closest node then it becomes the closest node + if (neighbor.h < closestNode.h || (neighbor.h === closestNode.h && neighbor.g < closestNode.g)) { + closestNode = neighbor; + } + } + + if (!beenVisited) { + // Pushing to heap will put it in proper place based on the 'f' value. + openHeap.push(neighbor); + } else { + // Already seen the node, but since it has been rescored we need to reorder it in the heap + openHeap.rescoreElement(neighbor); + } + } + } + } + + if (closest) { + return pathTo(closestNode); + } + + // No result was found - empty array signifies failure to find path. + return []; + }, + // See list of heuristics: http://theory.stanford.edu/~amitp/GameProgramming/Heuristics.html + heuristics: { + manhattan: function(pos0, pos1) { + var d1 = Math.abs(pos1.x - pos0.x); + var d2 = Math.abs(pos1.y - pos0.y); + return d1 + d2; + }, + diagonal: function(pos0, pos1) { + var D = 1; + var D2 = Math.sqrt(2); + var d1 = Math.abs(pos1.x - pos0.x); + var d2 = Math.abs(pos1.y - pos0.y); + return (D * (d1 + d2)) + ((D2 - (2 * D)) * Math.min(d1, d2)); + } + }, + cleanNode: function(node) { + node.f = 0; + node.g = 0; + node.h = 0; + node.visited = false; + node.closed = false; + node.parent = null; + } +}; + +/** + * A graph memory structure + * @param {Array} gridIn 2D array of input weights + * @param {Object} [options] + * @param {bool} [options.diagonal] Specifies whether diagonal moves are allowed + */ +function Graph(gridIn, options) { + options = options || {}; + this.nodes = []; + this.diagonal = !!options.diagonal; + this.grid = []; + for (var x = 0; x < gridIn.length; x++) { + this.grid[x] = []; + + for (var y = 0, row = gridIn[x]; y < row.length; y++) { + var node = new GridNode(x, y, row[y]); + this.grid[x][y] = node; + this.nodes.push(node); + } + } + this.init(); +} + +Graph.prototype.init = function() { + this.dirtyNodes = []; + for (var i = 0; i < this.nodes.length; i++) { + astar.cleanNode(this.nodes[i]); + } +}; + +Graph.prototype.cleanDirty = function() { + for (var i = 0; i < this.dirtyNodes.length; i++) { + astar.cleanNode(this.dirtyNodes[i]); + } + this.dirtyNodes = []; +}; + +Graph.prototype.markDirty = function(node) { + this.dirtyNodes.push(node); +}; + +Graph.prototype.neighbors = function(node) { + var ret = []; + var x = node.x; + var y = node.y; + var grid = this.grid; + + // West + if (grid[x - 1] && grid[x - 1][y]) { + ret.push(grid[x - 1][y]); + } + + // East + if (grid[x + 1] && grid[x + 1][y]) { + ret.push(grid[x + 1][y]); + } + + // South + if (grid[x] && grid[x][y - 1]) { + ret.push(grid[x][y - 1]); + } + + // North + if (grid[x] && grid[x][y + 1]) { + ret.push(grid[x][y + 1]); + } + + if (this.diagonal) { + // Southwest + if (grid[x - 1] && grid[x - 1][y - 1]) { + ret.push(grid[x - 1][y - 1]); + } + + // Southeast + if (grid[x + 1] && grid[x + 1][y - 1]) { + ret.push(grid[x + 1][y - 1]); + } + + // Northwest + if (grid[x - 1] && grid[x - 1][y + 1]) { + ret.push(grid[x - 1][y + 1]); + } + + // Northeast + if (grid[x + 1] && grid[x + 1][y + 1]) { + ret.push(grid[x + 1][y + 1]); + } + } + + return ret; +}; + +Graph.prototype.toString = function() { + var graphString = []; + var nodes = this.grid; + for (var x = 0; x < nodes.length; x++) { + var rowDebug = []; + var row = nodes[x]; + for (var y = 0; y < row.length; y++) { + rowDebug.push(row[y].weight); + } + graphString.push(rowDebug.join(" ")); + } + return graphString.join("\n"); +}; + +function GridNode(x, y, weight) { + this.x = x; + this.y = y; + this.weight = weight; +} + +GridNode.prototype.toString = function() { + return "[" + this.x + " " + this.y + "]"; +}; + +GridNode.prototype.getCost = function(fromNeighbor) { + // Take diagonal weight into consideration. + if (fromNeighbor && fromNeighbor.x != this.x && fromNeighbor.y != this.y) { + return this.weight * 1.41421; + } + return this.weight; +}; + +GridNode.prototype.isWall = function() { + return this.weight === 0; +}; + +function BinaryHeap(scoreFunction) { + this.content = []; + this.scoreFunction = scoreFunction; +} + +BinaryHeap.prototype = { + push: function(element) { + // Add the new element to the end of the array. + this.content.push(element); + + // Allow it to sink down. + this.sinkDown(this.content.length - 1); + }, + pop: function() { + // Store the first element so we can return it later. + var result = this.content[0]; + // Get the element at the end of the array. + var end = this.content.pop(); + // If there are any elements left, put the end element at the + // start, and let it bubble up. + if (this.content.length > 0) { + this.content[0] = end; + this.bubbleUp(0); + } + return result; + }, + remove: function(node) { + var i = this.content.indexOf(node); + + // When it is found, the process seen in 'pop' is repeated + // to fill up the hole. + var end = this.content.pop(); + + if (i !== this.content.length - 1) { + this.content[i] = end; + + if (this.scoreFunction(end) < this.scoreFunction(node)) { + this.sinkDown(i); + } else { + this.bubbleUp(i); + } + } + }, + size: function() { + return this.content.length; + }, + rescoreElement: function(node) { + this.sinkDown(this.content.indexOf(node)); + }, + sinkDown: function(n) { + // Fetch the element that has to be sunk. + var element = this.content[n]; + + // When at 0, an element can not sink any further. + while (n > 0) { + + // Compute the parent element's index, and fetch it. + var parentN = ((n + 1) >> 1) - 1; + var parent = this.content[parentN]; + // Swap the elements if the parent is greater. + if (this.scoreFunction(element) < this.scoreFunction(parent)) { + this.content[parentN] = element; + this.content[n] = parent; + // Update 'n' to continue at the new position. + n = parentN; + } + // Found a parent that is less, no need to sink any further. + else { + break; + } + } + }, + bubbleUp: function(n) { + // Look up the target element and its score. + var length = this.content.length; + var element = this.content[n]; + var elemScore = this.scoreFunction(element); + + while (true) { + // Compute the indices of the child elements. + var child2N = (n + 1) << 1; + var child1N = child2N - 1; + // This is used to store the new position of the element, if any. + var swap = null; + var child1Score; + // If the first child exists (is inside the array)... + if (child1N < length) { + // Look it up and compute its score. + var child1 = this.content[child1N]; + child1Score = this.scoreFunction(child1); + + // If the score is less than our element's, we need to swap. + if (child1Score < elemScore) { + swap = child1N; + } + } + + // Do the same checks for the other child. + if (child2N < length) { + var child2 = this.content[child2N]; + var child2Score = this.scoreFunction(child2); + if (child2Score < (swap === null ? elemScore : child1Score)) { + swap = child2N; + } + } + + // If the element needs to be moved, swap it, and continue. + if (swap !== null) { + this.content[n] = this.content[swap]; + this.content[swap] = element; + n = swap; + } + // Otherwise, we are done. + else { + break; + } + } + } +}; + +return { + astar: astar, + Graph: Graph +}; + +}); \ No newline at end of file diff --git a/client/js/bootstrap-treeview.js b/client/js/bootstrap-treeview.js new file mode 100644 index 0000000..3fda160 --- /dev/null +++ b/client/js/bootstrap-treeview.js @@ -0,0 +1,1249 @@ +/* ========================================================= + * bootstrap-treeview.js v1.2.0 + * ========================================================= + * Copyright 2013 Jonathan Miles + * Project URL : http://www.jondmiles.com/bootstrap-treeview + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================= */ + +;(function ($, window, document, undefined) { + + /*global jQuery, console*/ + + 'use strict'; + + var pluginName = 'treeview'; + + var _default = {}; + + _default.settings = { + + injectStyle: true, + + levels: 2, + + expandIcon: 'glyphicon glyphicon-triangle-right', + collapseIcon: 'glyphicon glyphicon-triangle-bottom', + emptyIcon: '', + nodeIcon: '', + selectedIcon: '', + checkedIcon: 'glyphicon glyphicon-eye-open', + uncheckedIcon: 'glyphicon glyphicon-eye-close', + + color: undefined, // '#000000', + backColor: undefined, // '#FFFFFF', + borderColor: undefined, // '#dddddd', + onhoverColor: '#F5F5F5', + selectedColor: '#FFFFFF', + selectedBackColor: '#428bca', + searchResultColor: '#D9534F', + searchResultBackColor: undefined, //'#FFFFFF', + + enableLinks: false, + highlightSelected: true, + highlightSearchResults: true, + showBorder: true, + showIcon: true, + showCheckbox: false, + showTags: false, + multiSelect: false, + + // Event handlers + onNodeChecked: undefined, + onNodeCollapsed: undefined, + onNodeDisabled: undefined, + onNodeEnabled: undefined, + onNodeExpanded: undefined, + onNodeSelected: undefined, + onNodeUnchecked: undefined, + onNodeUnselected: undefined, + onSearchComplete: undefined, + onSearchCleared: undefined + }; + + _default.options = { + silent: false, + ignoreChildren: false + }; + + _default.searchOptions = { + ignoreCase: true, + exactMatch: false, + revealResults: true + }; + + var Tree = function (element, options) { + + this.$element = $(element); + this.elementId = element.id; + this.styleId = this.elementId + '-style'; + + this.init(options); + + return { + + // Options (public access) + options: this.options, + + // Initialize / destroy methods + init: $.proxy(this.init, this), + remove: $.proxy(this.remove, this), + + // Get methods + getNode: $.proxy(this.getNode, this), + getParent: $.proxy(this.getParent, this), + getSiblings: $.proxy(this.getSiblings, this), + getSelected: $.proxy(this.getSelected, this), + getUnselected: $.proxy(this.getUnselected, this), + getExpanded: $.proxy(this.getExpanded, this), + getCollapsed: $.proxy(this.getCollapsed, this), + getChecked: $.proxy(this.getChecked, this), + getUnchecked: $.proxy(this.getUnchecked, this), + getDisabled: $.proxy(this.getDisabled, this), + getEnabled: $.proxy(this.getEnabled, this), + + // Select methods + selectNode: $.proxy(this.selectNode, this), + unselectNode: $.proxy(this.unselectNode, this), + toggleNodeSelected: $.proxy(this.toggleNodeSelected, this), + + // Expand / collapse methods + collapseAll: $.proxy(this.collapseAll, this), + collapseNode: $.proxy(this.collapseNode, this), + expandAll: $.proxy(this.expandAll, this), + expandNode: $.proxy(this.expandNode, this), + toggleNodeExpanded: $.proxy(this.toggleNodeExpanded, this), + revealNode: $.proxy(this.revealNode, this), + + // Expand / collapse methods + checkAll: $.proxy(this.checkAll, this), + checkNode: $.proxy(this.checkNode, this), + uncheckAll: $.proxy(this.uncheckAll, this), + uncheckNode: $.proxy(this.uncheckNode, this), + toggleNodeChecked: $.proxy(this.toggleNodeChecked, this), + + // Disable / enable methods + disableAll: $.proxy(this.disableAll, this), + disableNode: $.proxy(this.disableNode, this), + enableAll: $.proxy(this.enableAll, this), + enableNode: $.proxy(this.enableNode, this), + toggleNodeDisabled: $.proxy(this.toggleNodeDisabled, this), + + // Search methods + search: $.proxy(this.search, this), + clearSearch: $.proxy(this.clearSearch, this) + }; + }; + + Tree.prototype.init = function (options) { + + this.tree = []; + this.nodes = []; + + if (options.data) { + if (typeof options.data === 'string') { + options.data = $.parseJSON(options.data); + } + this.tree = $.extend(true, [], options.data); + delete options.data; + } + this.options = $.extend({}, _default.settings, options); + + this.destroy(); + this.subscribeEvents(); + this.setInitialStates({ nodes: this.tree }, 0); + this.render(); + }; + + Tree.prototype.remove = function () { + this.destroy(); + $.removeData(this, pluginName); + $('#' + this.styleId).remove(); + }; + + Tree.prototype.destroy = function () { + + if (!this.initialized) return; + + this.$wrapper.remove(); + this.$wrapper = null; + + // Switch off events + this.unsubscribeEvents(); + + // Reset this.initialized flag + this.initialized = false; + }; + + Tree.prototype.unsubscribeEvents = function () { + + this.$element.off('click'); + this.$element.off('nodeChecked'); + this.$element.off('nodeCollapsed'); + this.$element.off('nodeDisabled'); + this.$element.off('nodeEnabled'); + this.$element.off('nodeExpanded'); + this.$element.off('nodeSelected'); + this.$element.off('nodeUnchecked'); + this.$element.off('nodeUnselected'); + this.$element.off('searchComplete'); + this.$element.off('searchCleared'); + }; + + Tree.prototype.subscribeEvents = function () { + + this.unsubscribeEvents(); + + this.$element.on('click', $.proxy(this.clickHandler, this)); + + if (typeof (this.options.onNodeChecked) === 'function') { + this.$element.on('nodeChecked', this.options.onNodeChecked); + } + + if (typeof (this.options.onNodeCollapsed) === 'function') { + this.$element.on('nodeCollapsed', this.options.onNodeCollapsed); + } + + if (typeof (this.options.onNodeDisabled) === 'function') { + this.$element.on('nodeDisabled', this.options.onNodeDisabled); + } + + if (typeof (this.options.onNodeEnabled) === 'function') { + this.$element.on('nodeEnabled', this.options.onNodeEnabled); + } + + if (typeof (this.options.onNodeExpanded) === 'function') { + this.$element.on('nodeExpanded', this.options.onNodeExpanded); + } + + if (typeof (this.options.onNodeSelected) === 'function') { + this.$element.on('nodeSelected', this.options.onNodeSelected); + } + + if (typeof (this.options.onNodeUnchecked) === 'function') { + this.$element.on('nodeUnchecked', this.options.onNodeUnchecked); + } + + if (typeof (this.options.onNodeUnselected) === 'function') { + this.$element.on('nodeUnselected', this.options.onNodeUnselected); + } + + if (typeof (this.options.onSearchComplete) === 'function') { + this.$element.on('searchComplete', this.options.onSearchComplete); + } + + if (typeof (this.options.onSearchCleared) === 'function') { + this.$element.on('searchCleared', this.options.onSearchCleared); + } + }; + + /* + Recurse the tree structure and ensure all nodes have + valid initial states. User defined states will be preserved. + For performance we also take this opportunity to + index nodes in a flattened structure + */ + Tree.prototype.setInitialStates = function (node, level) { + + if (!node.nodes) return; + level += 1; + + var parent = node; + var _this = this; + $.each(node.nodes, function checkStates(index, node) { + + // nodeId : unique, incremental identifier + node.nodeId = _this.nodes.length; + + // parentId : transversing up the tree + node.parentId = parent.nodeId; + + // if not provided set selectable default value + if (!node.hasOwnProperty('selectable')) { + node.selectable = true; + } + + // where provided we should preserve states + node.state = node.state || {}; + + // set checked state; unless set always false + if (!node.state.hasOwnProperty('checked')) { + node.state.checked = false; + } + + // set enabled state; unless set always false + if (!node.state.hasOwnProperty('disabled')) { + node.state.disabled = false; + } + + // set expanded state; if not provided based on levels + if (!node.state.hasOwnProperty('expanded')) { + if (!node.state.disabled && + (level < _this.options.levels) && + (node.nodes && node.nodes.length > 0)) { + node.state.expanded = true; + } + else { + node.state.expanded = false; + } + } + + // set selected state; unless set always false + if (!node.state.hasOwnProperty('selected')) { + node.state.selected = false; + } + + // index nodes in a flattened structure for use later + _this.nodes.push(node); + + // recurse child nodes and transverse the tree + if (node.nodes) { + _this.setInitialStates(node, level); + } + }); + }; + + Tree.prototype.clickHandler = function (event) { + + if (!this.options.enableLinks) event.preventDefault(); + + var target = $(event.target); + var node = this.findNode(target); + if (!node || node.state.disabled) return; + + var classList = target.attr('class') ? target.attr('class').split(' ') : []; + if ((classList.indexOf('expand-icon') !== -1)) { + + this.toggleExpandedState(node, _default.options); + this.render(); + } + else if ((classList.indexOf('check-icon') !== -1)) { + + this.toggleCheckedState(node, _default.options); + this.render(); + } + else { + + if (node.selectable) { + this.toggleSelectedState(node, _default.options); + } else { + this.toggleExpandedState(node, _default.options); + } + + this.render(); + } + }; + + // Looks up the DOM for the closest parent list item to retrieve the + // data attribute nodeid, which is used to lookup the node in the flattened structure. + Tree.prototype.findNode = function (target) { + + var nodeId = target.closest('li.list-group-item').attr('data-nodeid'); + var node = this.nodes[nodeId]; + + if (!node) { + console.log('Error: node does not exist'); + } + return node; + }; + + Tree.prototype.toggleExpandedState = function (node, options) { + if (!node) return; + this.setExpandedState(node, !node.state.expanded, options); + }; + + Tree.prototype.setExpandedState = function (node, state, options) { + + if (state === node.state.expanded) return; + + if (state && node.nodes) { + + // Expand a node + node.state.expanded = true; + if (!options.silent) { + this.$element.trigger('nodeExpanded', $.extend(true, {}, node)); + } + } + else if (!state) { + + // Collapse a node + node.state.expanded = false; + if (!options.silent) { + this.$element.trigger('nodeCollapsed', $.extend(true, {}, node)); + } + + // Collapse child nodes + if (node.nodes && !options.ignoreChildren) { + $.each(node.nodes, $.proxy(function (index, node) { + this.setExpandedState(node, false, options); + }, this)); + } + } + }; + + Tree.prototype.toggleSelectedState = function (node, options) { + if (!node) return; + this.setSelectedState(node, !node.state.selected, options); + }; + + Tree.prototype.setSelectedState = function (node, state, options) { + + if (state === node.state.selected) return; + + if (state) { + + // If multiSelect false, unselect previously selected + if (!this.options.multiSelect) { + $.each(this.findNodes('true', 'g', 'state.selected'), $.proxy(function (index, node) { + this.setSelectedState(node, false, options); + }, this)); + } + + // Continue selecting node + node.state.selected = true; + if (!options.silent) { + this.$element.trigger('nodeSelected', $.extend(true, {}, node)); + } + } + else { + + // Unselect node + node.state.selected = false; + if (!options.silent) { + this.$element.trigger('nodeUnselected', $.extend(true, {}, node)); + } + } + }; + + Tree.prototype.toggleCheckedState = function (node, options) { + if (!node) return; + this.setCheckedState(node, !node.state.checked, options); + }; + + Tree.prototype.setCheckedState = function (node, state, options) { + + if (state === node.state.checked) return; + + if (state) { + + // Check node + node.state.checked = true; + + if (!options.silent) { + this.$element.trigger('nodeChecked', $.extend(true, {}, node)); + } + } + else { + + // Uncheck node + node.state.checked = false; + if (!options.silent) { + this.$element.trigger('nodeUnchecked', $.extend(true, {}, node)); + } + } + }; + + Tree.prototype.setDisabledState = function (node, state, options) { + + if (state === node.state.disabled) return; + + if (state) { + + // Disable node + node.state.disabled = true; + + // Disable all other states + this.setExpandedState(node, false, options); + this.setSelectedState(node, false, options); + this.setCheckedState(node, false, options); + + if (!options.silent) { + this.$element.trigger('nodeDisabled', $.extend(true, {}, node)); + } + } + else { + + // Enabled node + node.state.disabled = false; + if (!options.silent) { + this.$element.trigger('nodeEnabled', $.extend(true, {}, node)); + } + } + }; + + Tree.prototype.render = function () { + + if (!this.initialized) { + + // Setup first time only components + this.$element.addClass(pluginName); + this.$wrapper = $(this.template.list); + + this.injectStyle(); + + this.initialized = true; + } + + this.$element.empty().append(this.$wrapper.empty()); + + // Build tree + this.buildTree(this.tree, 0); + }; + + // Starting from the root node, and recursing down the + // structure we build the tree one node at a time + Tree.prototype.buildTree = function (nodes, level) { + + if (!nodes) return; + level += 1; + + var _this = this; + $.each(nodes, function addNodes(id, node) { + + var treeItem = $(_this.template.item) + .addClass('node-' + _this.elementId) + .addClass(node.state.checked ? 'node-checked' : '') + .addClass(node.state.disabled ? 'node-disabled': '') + .addClass(node.state.selected ? 'node-selected' : '') + .addClass(node.searchResult ? 'search-result' : '') + .attr('data-nodeid', node.nodeId) + .attr('style', _this.buildStyleOverride(node)); + + // Add indent/spacer to mimic tree structure + for (var i = 0; i < (level - 1); i++) { + treeItem.append(_this.template.indent); + } + + // Add expand, collapse or empty spacer icons + var classList = []; + if (node.nodes) { + classList.push('expand-icon'); + if (node.state.expanded) { + classList.push(_this.options.collapseIcon); + } + else { + classList.push(_this.options.expandIcon); + } + } + else { + classList.push(_this.options.emptyIcon); + } + + treeItem + .append($(_this.template.icon) + .addClass(classList.join(' ')) + ); + + + // Add node icon + if (_this.options.showIcon) { + + var classList = ['node-icon']; + + classList.push(node.icon || _this.options.nodeIcon); + if (node.state.selected) { + classList.pop(); + classList.push(node.selectedIcon || _this.options.selectedIcon || + node.icon || _this.options.nodeIcon); + } + + treeItem + .append($(_this.template.icon) + .addClass(classList.join(' ')) + ); + } + + // Add check / unchecked icon + if (_this.options.showCheckbox) { + + var classList = ['check-icon']; + if (node.state.checked) { + classList.push(_this.options.checkedIcon); + } + else { + classList.push(_this.options.uncheckedIcon); + } + + treeItem + .append($(_this.template.icon) + .addClass(classList.join(' ')) + ); + } + + // Add text + if (_this.options.enableLinks) { + // Add hyperlink + treeItem + .append($(_this.template.link) + .attr('href', node.href) + .append(node.text) + ); + } + else { + // otherwise just text + treeItem + .append(node.text); + } + + // Add tags as badges + if (_this.options.showTags && node.tags) { + $.each(node.tags, function addTag(id, tag) { + treeItem + .append($(_this.template.badge) + .append(tag) + ); + }); + } + + // Add item to the tree + _this.$wrapper.append(treeItem); + + // Recursively add child ndoes + if (node.nodes && node.state.expanded && !node.state.disabled) { + return _this.buildTree(node.nodes, level); + } + }); + }; + + // Define any node level style override for + // 1. selectedNode + // 2. node|data assigned color overrides + Tree.prototype.buildStyleOverride = function (node) { + + if (node.state.disabled) return ''; + + var color = node.color; + var backColor = node.backColor; + + if (this.options.highlightSelected && node.state.selected) { + if (this.options.selectedColor) { + color = this.options.selectedColor; + } + if (this.options.selectedBackColor) { + backColor = this.options.selectedBackColor; + } + } + + if (this.options.highlightSearchResults && node.searchResult && !node.state.disabled) { + if (this.options.searchResultColor) { + color = this.options.searchResultColor; + } + if (this.options.searchResultBackColor) { + backColor = this.options.searchResultBackColor; + } + } + + return 'color:' + color + + ';background-color:' + backColor + ';'; + }; + + // Add inline style into head + Tree.prototype.injectStyle = function () { + + if (this.options.injectStyle && !document.getElementById(this.styleId)) { + $('').appendTo('head'); + } + }; + + // Construct trees style based on user options + Tree.prototype.buildStyle = function () { + + var style = '.node-' + this.elementId + '{'; + + if (this.options.color) { + style += 'color:' + this.options.color + ';'; + } + + if (this.options.backColor) { + style += 'background-color:' + this.options.backColor + ';'; + } + + if (!this.options.showBorder) { + style += 'border:none;'; + } + else if (this.options.borderColor) { + style += 'border:1px solid ' + this.options.borderColor + ';'; + } + style += '}'; + + if (this.options.onhoverColor) { + style += '.node-' + this.elementId + ':not(.node-disabled):hover{' + + 'background-color:' + this.options.onhoverColor + ';' + + '}'; + } + + return this.css + style; + }; + + Tree.prototype.template = { + list: '