Link to R code here
Last active
February 15, 2016 19:30
-
-
Save sachsmc/dca2651f460ef50e264e to your computer and use it in GitHub Desktop.
DC Vision Zero Crash Data
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| license: gpl-3.0 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| library(sp) | |
| library(rgdal) | |
| download.file("https://drive.google.com/uc?id=0B3bjEjYnux8nWVhFVlRlLXVtMXc&export=download", | |
| "CrashData2010.shp.zip") | |
| unzip("CrashData2010.shp.zip") | |
| crash <- readOGR(".", layer = "CrashData_2010") | |
| summary(crash@data) | |
| table(crash@data$ACCIDENT_1, exclude = NULL) | |
| table(crash@data$ACCIDENTTY, exclude = NULL) | |
| table(crash@data$FBIBOOL, exclude = NULL) | |
| library(leaflet) | |
| leaflet(crash@data) %>% addTiles() %>% | |
| addMarkers(~LONGITUDE, ~LATITUDE, clusterOptions = markerClusterOptions()) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <!DOCTYPE html> | |
| <html xmlns="http://www.w3.org/1999/xhtml"> | |
| <head> | |
| <meta charset="utf-8"> | |
| <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | |
| <meta name="generator" content="pandoc" /> | |
| <title></title> | |
| <script src="data:application/x-javascript;base64,KGZ1bmN0aW9uKCkgewogIC8vIElmIHdpbmRvdy5IVE1MV2lkZ2V0cyBpcyBhbHJlYWR5IGRlZmluZWQsIHRoZW4gdXNlIGl0OyBvdGhlcndpc2UgY3JlYXRlIGEKICAvLyBuZXcgb2JqZWN0LiBUaGlzIGFsbG93cyBwcmVjZWRpbmcgY29kZSB0byBzZXQgb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUKICAvLyBpbml0aWFsaXphdGlvbiBwcm9jZXNzICh0aG91Z2ggbm9uZSBjdXJyZW50bHkgZXhpc3QpLgogIHdpbmRvdy5IVE1MV2lkZ2V0cyA9IHdpbmRvdy5IVE1MV2lkZ2V0cyB8fCB7fTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSB2aWV3ZXIgcGFuZS4gSWYgbm90LCB3ZSdyZSBpbiBhIHdlYiBicm93c2VyLgogIHZhciB2aWV3ZXJNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnZpZXdlck1vZGUgPQogICAgICAvXGJ2aWV3ZXJfcGFuZT0xXGIvLnRlc3Qod2luZG93LmxvY2F0aW9uKTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gU2hpbnkgbW9kZS4gSWYgbm90LCBpdCdzIGEgc3RhdGljIGRvY3VtZW50LgogIC8vIE5vdGUgdGhhdCBzdGF0aWMgd2lkZ2V0cyBjYW4gYXBwZWFyIGluIGJvdGggU2hpbnkgYW5kIHN0YXRpYyBtb2RlcywgYnV0CiAgLy8gb2J2aW91c2x5LCBTaGlueSB3aWRnZXRzIGNhbiBvbmx5IGFwcGVhciBpbiBTaGlueSBhcHBzL2RvY3VtZW50cy4KICB2YXIgc2hpbnlNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnNoaW55TW9kZSA9CiAgICAgIHR5cGVvZih3aW5kb3cuU2hpbnkpICE9PSAidW5kZWZpbmVkIiAmJiAhIXdpbmRvdy5TaGlueS5vdXRwdXRCaW5kaW5nczsKCiAgLy8gV2UgY2FuJ3QgY291bnQgb24galF1ZXJ5IGJlaW5nIGF2YWlsYWJsZSwgc28gd2UgaW1wbGVtZW50IG91ciBvd24KICAvLyB2ZXJzaW9uIGlmIG5lY2Vzc2FyeS4KICBmdW5jdGlvbiBxdWVyeVNlbGVjdG9yQWxsKHNjb3BlLCBzZWxlY3RvcikgewogICAgaWYgKHR5cGVvZihqUXVlcnkpICE9PSAidW5kZWZpbmVkIiAmJiBzY29wZSBpbnN0YW5jZW9mIGpRdWVyeSkgewogICAgICByZXR1cm4gc2NvcGUuZmluZChzZWxlY3Rvcik7CiAgICB9CiAgICBpZiAoc2NvcGUucXVlcnlTZWxlY3RvckFsbCkgewogICAgICByZXR1cm4gc2NvcGUucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBhc0FycmF5KHZhbHVlKSB7CiAgICBpZiAodmFsdWUgPT09IG51bGwpCiAgICAgIHJldHVybiBbXTsKICAgIGlmICgkLmlzQXJyYXkodmFsdWUpKQogICAgICByZXR1cm4gdmFsdWU7CiAgICByZXR1cm4gW3ZhbHVlXTsKICB9CgogIC8vIEltcGxlbWVudCBqUXVlcnkncyBleHRlbmQKICBmdW5jdGlvbiBleHRlbmQodGFyZ2V0IC8qLCAuLi4gKi8pIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHsKICAgICAgcmV0dXJuIHRhcmdldDsKICAgIH0KICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07CiAgICAgIGZvciAodmFyIHByb3AgaW4gc291cmNlKSB7CiAgICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSkgewogICAgICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcmV0dXJuIHRhcmdldDsKICB9CgogIC8vIElFOCBkb2Vzbid0IHN1cHBvcnQgQXJyYXkuZm9yRWFjaC4KICBmdW5jdGlvbiBmb3JFYWNoKHZhbHVlcywgY2FsbGJhY2ssIHRoaXNBcmcpIHsKICAgIGlmICh2YWx1ZXMuZm9yRWFjaCkgewogICAgICB2YWx1ZXMuZm9yRWFjaChjYWxsYmFjaywgdGhpc0FyZyk7CiAgICB9IGVsc2UgewogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykgewogICAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdmFsdWVzW2ldLCBpLCB2YWx1ZXMpOwogICAgICB9CiAgICB9CiAgfQoKICAvLyBSZXBsYWNlcyB0aGUgc3BlY2lmaWVkIG1ldGhvZCB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgZnVuY1NvdXJjZS4KICAvLwogIC8vIE5vdGUgdGhhdCBmdW5jU291cmNlIHNob3VsZCBub3QgQkUgdGhlIG5ldyBtZXRob2QsIGl0IHNob3VsZCBiZSBhIGZ1bmN0aW9uCiAgLy8gdGhhdCBSRVRVUk5TIHRoZSBuZXcgbWV0aG9kLiBmdW5jU291cmNlIHJlY2VpdmVzIGEgc2luZ2xlIGFyZ3VtZW50IHRoYXQgaXMKICAvLyB0aGUgb3ZlcnJpZGRlbiBtZXRob2QsIGl0IGNhbiBiZSBjYWxsZWQgZnJvbSB0aGUgbmV3IG1ldGhvZC4gVGhlIG92ZXJyaWRkZW4KICAvLyBtZXRob2QgY2FuIGJlIGNhbGxlZCBsaWtlIGEgcmVndWxhciBmdW5jdGlvbiwgaXQgaGFzIHRoZSB0YXJnZXQgcGVybWFuZW50bHkKICAvLyBib3VuZCB0byBpdCBzbyAidGhpcyIgd2lsbCB3b3JrIGNvcnJlY3RseS4KICBmdW5jdGlvbiBvdmVycmlkZU1ldGhvZCh0YXJnZXQsIG1ldGhvZE5hbWUsIGZ1bmNTb3VyY2UpIHsKICAgIHZhciBzdXBlckZ1bmMgPSB0YXJnZXRbbWV0aG9kTmFtZV0gfHwgZnVuY3Rpb24oKSB7fTsKICAgIHZhciBzdXBlckZ1bmNCb3VuZCA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gc3VwZXJGdW5jLmFwcGx5KHRhcmdldCwgYXJndW1lbnRzKTsKICAgIH07CiAgICB0YXJnZXRbbWV0aG9kTmFtZV0gPSBmdW5jU291cmNlKHN1cGVyRnVuY0JvdW5kKTsKICB9CgogIC8vIEltcGxlbWVudCBhIHZhZ3VlIGZhY3NpbWlsaWUgb2YgalF1ZXJ5J3MgZGF0YSBtZXRob2QKICBmdW5jdGlvbiBlbGVtZW50RGF0YShlbCwgbmFtZSwgdmFsdWUpIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDIpIHsKICAgICAgcmV0dXJuIGVsWyJodG1sd2lkZ2V0X2RhdGFfIiArIG5hbWVdOwogICAgfSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDMpIHsKICAgICAgZWxbImh0bWx3aWRnZXRfZGF0YV8iICsgbmFtZV0gPSB2YWx1ZTsKICAgICAgcmV0dXJuIGVsOwogICAgfSBlbHNlIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBlbGVtZW50RGF0YTogIiArCiAgICAgICAgYXJndW1lbnRzLmxlbmd0aCk7CiAgICB9CiAgfQoKICAvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzM0NDYxNzAvZXNjYXBlLXN0cmluZy1mb3ItdXNlLWluLWphdmFzY3JpcHQtcmVnZXgKICBmdW5jdGlvbiBlc2NhcGVSZWdFeHAoc3RyKSB7CiAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1tcLVxbXF1cL1x7XH1cKFwpXCpcK1w/XC5cXFxeXCRcfF0vZywgIlxcJCYiKTsKICB9CgogIGZ1bmN0aW9uIGhhc0NsYXNzKGVsLCBjbGFzc05hbWUpIHsKICAgIHZhciByZSA9IG5ldyBSZWdFeHAoIlxcYiIgKyBlc2NhcGVSZWdFeHAoY2xhc3NOYW1lKSArICJcXGIiKTsKICAgIHJldHVybiByZS50ZXN0KGVsLmNsYXNzTmFtZSk7CiAgfQoKICAvLyBlbGVtZW50cyAtIGFycmF5IChvciBhcnJheS1saWtlIG9iamVjdCkgb2YgSFRNTCBlbGVtZW50cwogIC8vIGNsYXNzTmFtZSAtIGNsYXNzIG5hbWUgdG8gdGVzdCBmb3IKICAvLyBpbmNsdWRlIC0gaWYgdHJ1ZSwgb25seSByZXR1cm4gZWxlbWVudHMgd2l0aCBnaXZlbiBjbGFzc05hbWU7CiAgLy8gICBpZiBmYWxzZSwgb25seSByZXR1cm4gZWxlbWVudHMgKndpdGhvdXQqIGdpdmVuIGNsYXNzTmFtZQogIGZ1bmN0aW9uIGZpbHRlckJ5Q2xhc3MoZWxlbWVudHMsIGNsYXNzTmFtZSwgaW5jbHVkZSkgewogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKGhhc0NsYXNzKGVsZW1lbnRzW2ldLCBjbGFzc05hbWUpID09IGluY2x1ZGUpCiAgICAgICAgcmVzdWx0cy5wdXNoKGVsZW1lbnRzW2ldKTsKICAgIH0KICAgIHJldHVybiByZXN1bHRzOwogIH0KCiAgZnVuY3Rpb24gb24ob2JqLCBldmVudE5hbWUsIGZ1bmMpIHsKICAgIGlmIChvYmouYWRkRXZlbnRMaXN0ZW5lcikgewogICAgICBvYmouYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGZ1bmMsIGZhbHNlKTsKICAgIH0gZWxzZSBpZiAob2JqLmF0dGFjaEV2ZW50KSB7CiAgICAgIG9iai5hdHRhY2hFdmVudChldmVudE5hbWUsIGZ1bmMpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gb2ZmKG9iaiwgZXZlbnROYW1lLCBmdW5jKSB7CiAgICBpZiAob2JqLnJlbW92ZUV2ZW50TGlzdGVuZXIpCiAgICAgIG9iai5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgZnVuYywgZmFsc2UpOwogICAgZWxzZSBpZiAob2JqLmRldGFjaEV2ZW50KSB7CiAgICAgIG9iai5kZXRhY2hFdmVudChldmVudE5hbWUsIGZ1bmMpOwogICAgfQogIH0KCiAgLy8gVHJhbnNsYXRlIGFycmF5IG9mIHZhbHVlcyB0byB0b3AvcmlnaHQvYm90dG9tL2xlZnQsIGFzIHVzdWFsIHdpdGgKICAvLyB0aGUgInBhZGRpbmciIENTUyBwcm9wZXJ0eQogIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9wYWRkaW5nCiAgZnVuY3Rpb24gdW5wYWNrUGFkZGluZyh2YWx1ZSkgewogICAgaWYgKHR5cGVvZih2YWx1ZSkgPT09ICJudW1iZXIiKQogICAgICB2YWx1ZSA9IFt2YWx1ZV07CiAgICBpZiAodmFsdWUubGVuZ3RoID09PSAxKSB7CiAgICAgIHJldHVybiB7dG9wOiB2YWx1ZVswXSwgcmlnaHQ6IHZhbHVlWzBdLCBib3R0b206IHZhbHVlWzBdLCBsZWZ0OiB2YWx1ZVswXX07CiAgICB9CiAgICBpZiAodmFsdWUubGVuZ3RoID09PSAyKSB7CiAgICAgIHJldHVybiB7dG9wOiB2YWx1ZVswXSwgcmlnaHQ6IHZhbHVlWzFdLCBib3R0b206IHZhbHVlWzBdLCBsZWZ0OiB2YWx1ZVsxXX07CiAgICB9CiAgICBpZiAodmFsdWUubGVuZ3RoID09PSAzKSB7CiAgICAgIHJldHVybiB7dG9wOiB2YWx1ZVswXSwgcmlnaHQ6IHZhbHVlWzFdLCBib3R0b206IHZhbHVlWzJdLCBsZWZ0OiB2YWx1ZVsxXX07CiAgICB9CiAgICBpZiAodmFsdWUubGVuZ3RoID09PSA0KSB7CiAgICAgIHJldHVybiB7dG9wOiB2YWx1ZVswXSwgcmlnaHQ6IHZhbHVlWzFdLCBib3R0b206IHZhbHVlWzJdLCBsZWZ0OiB2YWx1ZVszXX07CiAgICB9CiAgfQoKICAvLyBDb252ZXJ0IGFuIHVucGFja2VkIHBhZGRpbmcgb2JqZWN0IHRvIGEgQ1NTIHZhbHVlCiAgZnVuY3Rpb24gcGFkZGluZ1RvQ3NzKHBhZGRpbmdPYmopIHsKICAgIHJldHVybiBwYWRkaW5nT2JqLnRvcCArICJweCAiICsgcGFkZGluZ09iai5yaWdodCArICJweCAiICsgcGFkZGluZ09iai5ib3R0b20gKyAicHggIiArIHBhZGRpbmdPYmoubGVmdCArICJweCI7CiAgfQoKICAvLyBNYWtlcyBhIG51bWJlciBzdWl0YWJsZSBmb3IgQ1NTCiAgZnVuY3Rpb24gcHgoeCkgewogICAgaWYgKHR5cGVvZih4KSA9PT0gIm51bWJlciIpCiAgICAgIHJldHVybiB4ICsgInB4IjsKICAgIGVsc2UKICAgICAgcmV0dXJuIHg7CiAgfQoKICAvLyBSZXRyaWV2ZXMgcnVudGltZSB3aWRnZXQgc2l6aW5nIGluZm9ybWF0aW9uIGZvciBhbiBlbGVtZW50LgogIC8vIFRoZSByZXR1cm4gdmFsdWUgaXMgZWl0aGVyIG51bGwsIG9yIGFuIG9iamVjdCB3aXRoIGZpbGwsIHBhZGRpbmcsCiAgLy8gZGVmYXVsdFdpZHRoLCBkZWZhdWx0SGVpZ2h0IGZpZWxkcy4KICBmdW5jdGlvbiBzaXppbmdQb2xpY3koZWwpIHsKICAgIHZhciBzaXppbmdFbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNjcmlwdFtkYXRhLWZvcj0nIiArIGVsLmlkICsgIiddW3R5cGU9J2FwcGxpY2F0aW9uL2h0bWx3aWRnZXQtc2l6aW5nJ10iKTsKICAgIGlmICghc2l6aW5nRWwpCiAgICAgIHJldHVybiBudWxsOwogICAgdmFyIHNwID0gSlNPTi5wYXJzZShzaXppbmdFbC50ZXh0Q29udGVudCB8fCBzaXppbmdFbC50ZXh0IHx8ICJ7fSIpOwogICAgaWYgKHZpZXdlck1vZGUpIHsKICAgICAgcmV0dXJuIHNwLnZpZXdlcjsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBzcC5icm93c2VyOwogICAgfQogIH0KCiAgZnVuY3Rpb24gaW5pdFNpemluZyhlbCkgewogICAgdmFyIHNpemluZyA9IHNpemluZ1BvbGljeShlbCk7CiAgICBpZiAoIXNpemluZykKICAgICAgcmV0dXJuOwoKICAgIHZhciBjZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaHRtbHdpZGdldF9jb250YWluZXIiKTsKICAgIGlmICghY2VsKQogICAgICByZXR1cm47CgogICAgaWYgKHR5cGVvZihzaXppbmcucGFkZGluZykgIT09ICJ1bmRlZmluZWQiKSB7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUubWFyZ2luID0gIjAiOwogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmcgPSBwYWRkaW5nVG9Dc3ModW5wYWNrUGFkZGluZyhzaXppbmcucGFkZGluZykpOwogICAgfQoKICAgIGlmIChzaXppbmcuZmlsbCkgewogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gImhpZGRlbiI7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUud2lkdGggPSAiMTAwJSI7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuaGVpZ2h0ID0gIjEwMCUiOwogICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUud2lkdGggPSAiMTAwJSI7CiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5oZWlnaHQgPSAiMTAwJSI7CiAgICAgIGlmIChjZWwpIHsKICAgICAgICBjZWwuc3R5bGUucG9zaXRpb24gPSAiYWJzb2x1dGUiOwogICAgICAgIHZhciBwYWQgPSB1bnBhY2tQYWRkaW5nKHNpemluZy5wYWRkaW5nKTsKICAgICAgICBjZWwuc3R5bGUudG9wID0gcGFkLnRvcCArICJweCI7CiAgICAgICAgY2VsLnN0eWxlLnJpZ2h0ID0gcGFkLnJpZ2h0ICsgInB4IjsKICAgICAgICBjZWwuc3R5bGUuYm90dG9tID0gcGFkLmJvdHRvbSArICJweCI7CiAgICAgICAgY2VsLnN0eWxlLmxlZnQgPSBwYWQubGVmdCArICJweCI7CiAgICAgICAgZWwuc3R5bGUud2lkdGggPSAiMTAwJSI7CiAgICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gIjEwMCUiOwogICAgICB9CgogICAgICByZXR1cm4gewogICAgICAgIGdldFdpZHRoOiBmdW5jdGlvbigpIHsgcmV0dXJuIGNlbC5vZmZzZXRXaWR0aDsgfSwKICAgICAgICBnZXRIZWlnaHQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gY2VsLm9mZnNldEhlaWdodDsgfQogICAgICB9OwoKICAgIH0gZWxzZSB7CiAgICAgIGVsLnN0eWxlLndpZHRoID0gcHgoc2l6aW5nLndpZHRoKTsKICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gcHgoc2l6aW5nLmhlaWdodCk7CgogICAgICByZXR1cm4gewogICAgICAgIGdldFdpZHRoOiBmdW5jdGlvbigpIHsgcmV0dXJuIGVsLm9mZnNldFdpZHRoOyB9LAogICAgICAgIGdldEhlaWdodDogZnVuY3Rpb24oKSB7IHJldHVybiBlbC5vZmZzZXRIZWlnaHQ7IH0KICAgICAgfTsKICAgIH0KICB9CgogIC8vIERlZmF1bHQgaW1wbGVtZW50YXRpb25zIGZvciBtZXRob2RzCiAgdmFyIGRlZmF1bHRzID0gewogICAgZmluZDogZnVuY3Rpb24oc2NvcGUpIHsKICAgICAgcmV0dXJuIHF1ZXJ5U2VsZWN0b3JBbGwoc2NvcGUsICIuIiArIHRoaXMubmFtZSk7CiAgICB9LAogICAgcmVuZGVyRXJyb3I6IGZ1bmN0aW9uKGVsLCBlcnIpIHsKICAgICAgdmFyICRlbCA9ICQoZWwpOwoKICAgICAgdGhpcy5jbGVhckVycm9yKGVsKTsKCiAgICAgIC8vIEFkZCBhbGwgdGhlc2UgZXJyb3IgY2xhc3NlcywgYXMgU2hpbnkgZG9lcwogICAgICB2YXIgZXJyQ2xhc3MgPSAic2hpbnktb3V0cHV0LWVycm9yIjsKICAgICAgaWYgKGVyci50eXBlICE9PSBudWxsKSB7CiAgICAgICAgLy8gdXNlIHRoZSBjbGFzc2VzIG9mIHRoZSBlcnJvciBjb25kaXRpb24gYXMgQ1NTIGNsYXNzIG5hbWVzCiAgICAgICAgZXJyQ2xhc3MgPSBlcnJDbGFzcyArICIgIiArICQubWFwKGFzQXJyYXkoZXJyLnR5cGUpLCBmdW5jdGlvbih0eXBlKSB7CiAgICAgICAgICByZXR1cm4gZXJyQ2xhc3MgKyAiLSIgKyB0eXBlOwogICAgICAgIH0pLmpvaW4oIiAiKTsKICAgICAgfQogICAgICBlcnJDbGFzcyA9IGVyckNsYXNzICsgIiBodG1sd2lkZ2V0cy1lcnJvciI7CgogICAgICAvLyBJcyBlbCBpbmxpbmUgb3IgYmxvY2s/IElmIGlubGluZSBvciBpbmxpbmUtYmxvY2ssIGp1c3QgZGlzcGxheTpub25lIGl0CiAgICAgIC8vIGFuZCBhZGQgYW4gaW5saW5lIGVycm9yLgogICAgICB2YXIgZGlzcGxheSA9ICRlbC5jc3MoImRpc3BsYXkiKTsKICAgICAgJGVsLmRhdGEoInJlc3RvcmUtZGlzcGxheS1tb2RlIiwgZGlzcGxheSk7CgogICAgICBpZiAoZGlzcGxheSA9PT0gImlubGluZSIgfHwgZGlzcGxheSA9PT0gImlubGluZS1ibG9jayIpIHsKICAgICAgICAkZWwuaGlkZSgpOwogICAgICAgIGlmIChlcnIubWVzc2FnZSAhPT0gIiIpIHsKICAgICAgICAgIHZhciBlcnJvclNwYW4gPSAkKCI8c3Bhbj4iKS5hZGRDbGFzcyhlcnJDbGFzcyk7CiAgICAgICAgICBlcnJvclNwYW4udGV4dChlcnIubWVzc2FnZSk7CiAgICAgICAgICAkZWwuYWZ0ZXIoZXJyb3JTcGFuKTsKICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiAoZGlzcGxheSA9PT0gImJsb2NrIikgewogICAgICAgIC8vIElmIGJsb2NrLCBhZGQgYW4gZXJyb3IganVzdCBhZnRlciB0aGUgZWwsIHNldCB2aXNpYmlsaXR5Om5vbmUgb24gdGhlCiAgICAgICAgLy8gZWwsIGFuZCBwb3NpdGlvbiB0aGUgZXJyb3IgdG8gYmUgb24gdG9wIG9mIHRoZSBlbC4KICAgICAgICAvLyBNYXJrIGl0IHdpdGggYSB1bmlxdWUgSUQgYW5kIENTUyBjbGFzcyBzbyB3ZSBjYW4gcmVtb3ZlIGl0IGxhdGVyLgogICAgICAgICRlbC5jc3MoInZpc2liaWxpdHkiLCAiaGlkZGVuIik7CiAgICAgICAgaWYgKGVyci5tZXNzYWdlICE9PSAiIikgewogICAgICAgICAgdmFyIGVycm9yRGl2ID0gJCgiPGRpdj4iKS5hZGRDbGFzcyhlcnJDbGFzcykuY3NzKCJwb3NpdGlvbiIsICJhYnNvbHV0ZSIpCiAgICAgICAgICAgIC5jc3MoInRvcCIsIGVsLm9mZnNldFRvcCkKICAgICAgICAgICAgLmNzcygibGVmdCIsIGVsLm9mZnNldExlZnQpCiAgICAgICAgICAgIC8vIHNldHRpbmcgd2lkdGggY2FuIHB1c2ggb3V0IHRoZSBwYWdlIHNpemUsIGZvcmNpbmcgb3RoZXJ3aXNlCiAgICAgICAgICAgIC8vIHVubmVjZXNzYXJ5IHNjcm9sbGJhcnMgdG8gYXBwZWFyIGFuZCBtYWtpbmcgaXQgaW1wb3NzaWJsZSBmb3IKICAgICAgICAgICAgLy8gdGhlIGVsZW1lbnQgdG8gc2hyaW5rOyBzbyB1c2UgbWF4LXdpZHRoIGluc3RlYWQKICAgICAgICAgICAgLmNzcygibWF4V2lkdGgiLCBlbC5vZmZzZXRXaWR0aCkKICAgICAgICAgICAgLmNzcygiaGVpZ2h0IiwgZWwub2Zmc2V0SGVpZ2h0KTsKICAgICAgICAgIGVycm9yRGl2LnRleHQoZXJyLm1lc3NhZ2UpOwogICAgICAgICAgJGVsLmFmdGVyKGVycm9yRGl2KTsKCiAgICAgICAgICAvLyBSZWFsbHkgZHVtYiB3YXkgdG8ga2VlcCB0aGUgc2l6ZS9wb3NpdGlvbiBvZiB0aGUgZXJyb3IgaW4gc3luYyB3aXRoCiAgICAgICAgICAvLyB0aGUgcGFyZW50IGVsZW1lbnQgYXMgdGhlIHdpbmRvdyBpcyByZXNpemVkIG9yIHdoYXRldmVyLgogICAgICAgICAgdmFyIGludElkID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICghZXJyb3JEaXZbMF0ucGFyZW50RWxlbWVudCkgewogICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50SWQpOwogICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlcnJvckRpdgogICAgICAgICAgICAgIC5jc3MoInRvcCIsIGVsLm9mZnNldFRvcCkKICAgICAgICAgICAgICAuY3NzKCJsZWZ0IiwgZWwub2Zmc2V0TGVmdCkKICAgICAgICAgICAgICAuY3NzKCJtYXhXaWR0aCIsIGVsLm9mZnNldFdpZHRoKQogICAgICAgICAgICAgIC5jc3MoImhlaWdodCIsIGVsLm9mZnNldEhlaWdodCk7CiAgICAgICAgICB9LCA1MDApOwogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIGNsZWFyRXJyb3I6IGZ1bmN0aW9uKGVsKSB7CiAgICAgIHZhciAkZWwgPSAkKGVsKTsKICAgICAgdmFyIGRpc3BsYXkgPSAkZWwuZGF0YSgicmVzdG9yZS1kaXNwbGF5LW1vZGUiKTsKICAgICAgJGVsLmRhdGEoInJlc3RvcmUtZGlzcGxheS1tb2RlIiwgbnVsbCk7CgogICAgICBpZiAoZGlzcGxheSA9PT0gImlubGluZSIgfHwgZGlzcGxheSA9PT0gImlubGluZS1ibG9jayIpIHsKICAgICAgICBpZiAoZGlzcGxheSkKICAgICAgICAgICRlbC5jc3MoImRpc3BsYXkiLCBkaXNwbGF5KTsKICAgICAgICAkKGVsLm5leHRTaWJsaW5nKS5maWx0ZXIoIi5odG1sd2lkZ2V0cy1lcnJvciIpLnJlbW92ZSgpOwogICAgICB9IGVsc2UgaWYgKGRpc3BsYXkgPT09ICJibG9jayIpewogICAgICAgICRlbC5jc3MoInZpc2liaWxpdHkiLCAiaW5oZXJpdCIpOwogICAgICAgICQoZWwubmV4dFNpYmxpbmcpLmZpbHRlcigiLmh0bWx3aWRnZXRzLWVycm9yIikucmVtb3ZlKCk7CiAgICAgIH0KICAgIH0sCiAgICBzaXppbmc6IHt9CiAgfTsKCiAgLy8gQ2FsbGVkIGJ5IHdpZGdldCBiaW5kaW5ncyB0byByZWdpc3RlciBhIG5ldyB0eXBlIG9mIHdpZGdldC4gVGhlIGRlZmluaXRpb24KICAvLyBvYmplY3QgY2FuIGNvbnRhaW4gdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgogIC8vIC0gbmFtZSAocmVxdWlyZWQpIC0gQSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgYmluZGluZyBuYW1lLCB3aGljaCB3aWxsIGJlCiAgLy8gICB1c2VkIGJ5IGRlZmF1bHQgYXMgdGhlIENTUyBjbGFzc25hbWUgdG8gbG9vayBmb3IuCiAgLy8gLSBpbml0aWFsaXplIChvcHRpb25hbCkgLSBBIGZ1bmN0aW9uKGVsKSB0aGF0IHdpbGwgYmUgY2FsbGVkIG9uY2UgcGVyCiAgLy8gICB3aWRnZXQgZWxlbWVudDsgaWYgYSB2YWx1ZSBpcyByZXR1cm5lZCwgaXQgd2lsbCBiZSBwYXNzZWQgYXMgdGhlIHRoaXJkCiAgLy8gICB2YWx1ZSB0byByZW5kZXJWYWx1ZS4KICAvLyAtIHJlbmRlclZhbHVlIChyZXF1aXJlZCkgLSBBIGZ1bmN0aW9uKGVsLCBkYXRhLCBpbml0VmFsdWUpIHRoYXQgd2lsbCBiZQogIC8vICAgY2FsbGVkIHdpdGggZGF0YS4gU3RhdGljIGNvbnRleHRzIHdpbGwgY2F1c2UgdGhpcyB0byBiZSBjYWxsZWQgb25jZSBwZXIKICAvLyAgIGVsZW1lbnQ7IFNoaW55IGFwcHMgd2lsbCBjYXVzZSB0aGlzIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBwZXIKICAvLyAgIGVsZW1lbnQsIGFzIHRoZSBkYXRhIGNoYW5nZXMuCiAgd2luZG93LkhUTUxXaWRnZXRzLndpZGdldCA9IGZ1bmN0aW9uKGRlZmluaXRpb24pIHsKICAgIGlmICghZGVmaW5pdGlvbi5uYW1lKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiV2lkZ2V0IG11c3QgaGF2ZSBhIG5hbWUiKTsKICAgIH0KICAgIGlmICghZGVmaW5pdGlvbi50eXBlKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiV2lkZ2V0IG11c3QgaGF2ZSBhIHR5cGUiKTsKICAgIH0KICAgIC8vIEN1cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnQgb3V0cHV0IHdpZGdldHMKICAgIGlmIChkZWZpbml0aW9uLnR5cGUgIT09ICJvdXRwdXQiKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHdpZGdldCB0eXBlICciICsgZGVmaW5pdGlvbi50eXBlICsgIiciKTsKICAgIH0KICAgIC8vIFRPRE86IFZlcmlmeSB0aGF0IC5uYW1lIGlzIGEgdmFsaWQgQ1NTIGNsYXNzbmFtZQogICAgaWYgKCFkZWZpbml0aW9uLnJlbmRlclZhbHVlKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiV2lkZ2V0IG11c3QgaGF2ZSBhIHJlbmRlclZhbHVlIGZ1bmN0aW9uIik7CiAgICB9CgogICAgLy8gRm9yIHN0YXRpYyByZW5kZXJpbmcgKG5vbi1TaGlueSksIHVzZSBhIHNpbXBsZSB3aWRnZXQgcmVnaXN0cmF0aW9uCiAgICAvLyBzY2hlbWUuIFdlIGFsc28gdXNlIHRoaXMgc2NoZW1lIGZvciBTaGlueSBhcHBzL2RvY3VtZW50cyB0aGF0IGFsc28KICAgIC8vIGNvbnRhaW4gc3RhdGljIHdpZGdldHMuCiAgICB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0cyA9IHdpbmRvdy5IVE1MV2lkZ2V0cy53aWRnZXRzIHx8IFtdOwogICAgLy8gTWVyZ2UgZGVmYXVsdHMgaW50byB0aGUgZGVmaW5pdGlvbjsgZG9uJ3QgbXV0YXRlIHRoZSBvcmlnaW5hbCBkZWZpbml0aW9uLgogICAgdmFyIHN0YXRpY0JpbmRpbmcgPSBleHRlbmQoe30sIGRlZmF1bHRzLCBkZWZpbml0aW9uKTsKICAgIG92ZXJyaWRlTWV0aG9kKHN0YXRpY0JpbmRpbmcsICJmaW5kIiwgZnVuY3Rpb24oc3VwZXJmdW5jKSB7CiAgICAgIHJldHVybiBmdW5jdGlvbihzY29wZSkgewogICAgICAgIHZhciByZXN1bHRzID0gc3VwZXJmdW5jKHNjb3BlKTsKICAgICAgICAvLyBGaWx0ZXIgb3V0IFNoaW55IG91dHB1dHMsIHdlIG9ubHkgd2FudCB0aGUgc3RhdGljIGtpbmQKICAgICAgICByZXR1cm4gZmlsdGVyQnlDbGFzcyhyZXN1bHRzLCAiaHRtbC13aWRnZXQtb3V0cHV0IiwgZmFsc2UpOwogICAgICB9OwogICAgfSk7CiAgICB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0cy5wdXNoKHN0YXRpY0JpbmRpbmcpOwoKICAgIGlmIChzaGlueU1vZGUpIHsKICAgICAgLy8gU2hpbnkgaXMgcnVubmluZy4gUmVnaXN0ZXIgdGhlIGRlZmluaXRpb24gYXMgYW4gb3V0cHV0IGJpbmRpbmcuCgogICAgICAvLyBNZXJnZSBkZWZhdWx0cyBpbnRvIHRoZSBkZWZpbml0aW9uOyBkb24ndCBtdXRhdGUgdGhlIG9yaWdpbmFsIGRlZmluaXRpb24uCiAgICAgIC8vIFRoZSBiYXNlIG9iamVjdCBpcyBhIFNoaW55IG91dHB1dCBiaW5kaW5nIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gU2hpbnkgbW9kZSwKICAgICAgLy8gb3IgYW4gZW1wdHkgb2JqZWN0IGlmIHdlJ3JlIG5vdC4KICAgICAgdmFyIHNoaW55QmluZGluZyA9IGV4dGVuZChuZXcgU2hpbnkuT3V0cHV0QmluZGluZygpLCBkZWZhdWx0cywgZGVmaW5pdGlvbik7CgogICAgICAvLyBXcmFwIHJlbmRlclZhbHVlIHRvIGhhbmRsZSBpbml0aWFsaXphdGlvbiwgd2hpY2ggdW5mb3J0dW5hdGVseSBpc24ndAogICAgICAvLyBzdXBwb3J0ZWQgbmF0aXZlbHkgYnkgU2hpbnkgYXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLgoKICAgICAgLy8gTkI6IHNoaW55QmluZGluZy5pbml0aWFsaXplIG1heSBiZSB1bmRlZmluZWQsIGFzIGl0J3Mgb3B0aW9uYWwuCgogICAgICAvLyBSZW5hbWUgaW5pdGlhbGl6ZSB0byBtYWtlIHN1cmUgaXQgaXNuJ3QgY2FsbGVkIGJ5IGEgZnV0dXJlIHZlcnNpb24KICAgICAgLy8gb2YgU2hpbnkgdGhhdCBkb2VzIHN1cHBvcnQgaW5pdGlhbGl6ZSBkaXJlY3RseS4KICAgICAgc2hpbnlCaW5kaW5nLl9odG1sd2lkZ2V0c19pbml0aWFsaXplID0gc2hpbnlCaW5kaW5nLmluaXRpYWxpemU7CiAgICAgIGRlbGV0ZSBzaGlueUJpbmRpbmcuaW5pdGlhbGl6ZTsKCiAgICAgIG92ZXJyaWRlTWV0aG9kKHNoaW55QmluZGluZywgImZpbmQiLCBmdW5jdGlvbihzdXBlcmZ1bmMpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24oc2NvcGUpIHsKCiAgICAgICAgICB2YXIgcmVzdWx0cyA9IHN1cGVyZnVuYyhzY29wZSk7CgogICAgICAgICAgLy8gT25seSByZXR1cm4gZWxlbWVudHMgdGhhdCBhcmUgU2hpbnkgb3V0cHV0cywgbm90IHN0YXRpYyBvbmVzCiAgICAgICAgICB2YXIgZHluYW1pY1Jlc3VsdHMgPSByZXN1bHRzLmZpbHRlcigiLmh0bWwtd2lkZ2V0LW91dHB1dCIpOwoKICAgICAgICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB3aGF0ZXZlciBjYXVzZWQgU2hpbnkgdG8gdGhpbmsgdGhlcmUgbWlnaHQgYmUKICAgICAgICAgIC8vIG5ldyBkeW5hbWljIG91dHB1dHMsIGFsc28gY2F1c2VkIHRoZXJlIHRvIGJlIG5ldyBzdGF0aWMgb3V0cHV0cy4KICAgICAgICAgIC8vIFNpbmNlIHRoZXJlIG1pZ2h0IGJlIGxvdHMgb2YgZGlmZmVyZW50IGh0bWx3aWRnZXRzIGJpbmRpbmdzLCB3ZQogICAgICAgICAgLy8gc2NoZWR1bGUgZXhlY3V0aW9uIGZvciBsYXRlci0tbm8gbmVlZCB0byBzdGF0aWNSZW5kZXIgbXVsdGlwbGUKICAgICAgICAgIC8vIHRpbWVzLgogICAgICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoICE9PSBkeW5hbWljUmVzdWx0cy5sZW5ndGgpCiAgICAgICAgICAgIHNjaGVkdWxlU3RhdGljUmVuZGVyKCk7CgogICAgICAgICAgcmV0dXJuIGR5bmFtaWNSZXN1bHRzOwogICAgICAgIH07CiAgICAgIH0pOwoKICAgICAgb3ZlcnJpZGVNZXRob2Qoc2hpbnlCaW5kaW5nLCAicmVuZGVyVmFsdWUiLCBmdW5jdGlvbihzdXBlcmZ1bmMpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24oZWwsIGRhdGEpIHsKICAgICAgICAgIC8vIFJlc29sdmUgc3RyaW5ncyBtYXJrZWQgYXMgamF2YXNjcmlwdCBsaXRlcmFscyB0byBvYmplY3RzCiAgICAgICAgICBpZiAoIShkYXRhLmV2YWxzIGluc3RhbmNlb2YgQXJyYXkpKSBkYXRhLmV2YWxzID0gW2RhdGEuZXZhbHNdOwogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGRhdGEuZXZhbHMgJiYgaSA8IGRhdGEuZXZhbHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgd2luZG93LkhUTUxXaWRnZXRzLmV2YWx1YXRlU3RyaW5nTWVtYmVyKGRhdGEueCwgZGF0YS5ldmFsc1tpXSk7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoIXRoaXMucmVuZGVyT25OdWxsVmFsdWUpIHsKICAgICAgICAgICAgaWYgKGRhdGEueCA9PT0gbnVsbCkgewogICAgICAgICAgICAgIGVsLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgZWwuc3R5bGUudmlzaWJpbGl0eSA9ICJpbmhlcml0IjsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgaWYgKCFlbGVtZW50RGF0YShlbCwgImluaXRpYWxpemVkIikpIHsKICAgICAgICAgICAgaW5pdFNpemluZyhlbCk7CgogICAgICAgICAgICBlbGVtZW50RGF0YShlbCwgImluaXRpYWxpemVkIiwgdHJ1ZSk7CiAgICAgICAgICAgIGlmICh0aGlzLl9odG1sd2lkZ2V0c19pbml0aWFsaXplKSB7CiAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuX2h0bWx3aWRnZXRzX2luaXRpYWxpemUoZWwsIGVsLm9mZnNldFdpZHRoLAogICAgICAgICAgICAgICAgZWwub2Zmc2V0SGVpZ2h0KTsKICAgICAgICAgICAgICBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IiwgcmVzdWx0KTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgU2hpbnkucmVuZGVyRGVwZW5kZW5jaWVzKGRhdGEuZGVwcyk7CiAgICAgICAgICBzdXBlcmZ1bmMoZWwsIGRhdGEueCwgZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIpKTsKICAgICAgICB9OwogICAgICB9KTsKCiAgICAgIG92ZXJyaWRlTWV0aG9kKHNoaW55QmluZGluZywgInJlc2l6ZSIsIGZ1bmN0aW9uKHN1cGVyZnVuYykgewogICAgICAgIHJldHVybiBmdW5jdGlvbihlbCwgd2lkdGgsIGhlaWdodCkgewogICAgICAgICAgLy8gU2hpbnkgY2FuIGNhbGwgcmVzaXplIGJlZm9yZSBpbml0aWFsaXplL3JlbmRlclZhbHVlIGhhdmUgYmVlbgogICAgICAgICAgLy8gY2FsbGVkLCB3aGljaCBkb2Vzbid0IG1ha2Ugc2Vuc2UgZm9yIHdpZGdldHMuCiAgICAgICAgICBpZiAoZWxlbWVudERhdGEoZWwsICJpbml0aWFsaXplZCIpKSB7CiAgICAgICAgICAgIHN1cGVyZnVuYyhlbCwgd2lkdGgsIGhlaWdodCwgZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIpKTsKICAgICAgICAgIH0KICAgICAgICB9OwogICAgICB9KTsKCiAgICAgIFNoaW55Lm91dHB1dEJpbmRpbmdzLnJlZ2lzdGVyKHNoaW55QmluZGluZywgc2hpbnlCaW5kaW5nLm5hbWUpOwogICAgfQogIH07CgogIHZhciBzY2hlZHVsZVN0YXRpY1JlbmRlclRpbWVySWQgPSBudWxsOwogIGZ1bmN0aW9uIHNjaGVkdWxlU3RhdGljUmVuZGVyKCkgewogICAgaWYgKCFzY2hlZHVsZVN0YXRpY1JlbmRlclRpbWVySWQpIHsKICAgICAgc2NoZWR1bGVTdGF0aWNSZW5kZXJUaW1lcklkID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICBzY2hlZHVsZVN0YXRpY1JlbmRlclRpbWVySWQgPSBudWxsOwogICAgICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy5zdGF0aWNSZW5kZXIoKTsKICAgICAgfSwgMSk7CiAgICB9CiAgfQoKICAvLyBSZW5kZXIgc3RhdGljIHdpZGdldHMgYWZ0ZXIgdGhlIGRvY3VtZW50IGZpbmlzaGVzIGxvYWRpbmcKICAvLyBTdGF0aWNhbGx5IHJlbmRlciBhbGwgZWxlbWVudHMgdGhhdCBhcmUgb2YgdGhpcyB3aWRnZXQncyBjbGFzcwogIHdpbmRvdy5IVE1MV2lkZ2V0cy5zdGF0aWNSZW5kZXIgPSBmdW5jdGlvbigpIHsKICAgIHZhciBiaW5kaW5ncyA9IHdpbmRvdy5IVE1MV2lkZ2V0cy53aWRnZXRzIHx8IFtdOwogICAgZm9yRWFjaChiaW5kaW5ncywgZnVuY3Rpb24oYmluZGluZykgewogICAgICB2YXIgbWF0Y2hlcyA9IGJpbmRpbmcuZmluZChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOwogICAgICBmb3JFYWNoKG1hdGNoZXMsIGZ1bmN0aW9uKGVsKSB7CiAgICAgICAgdmFyIHNpemVPYmogPSBpbml0U2l6aW5nKGVsLCBiaW5kaW5nKTsKCiAgICAgICAgaWYgKGhhc0NsYXNzKGVsLCAiaHRtbC13aWRnZXQtc3RhdGljLWJvdW5kIikpCiAgICAgICAgICByZXR1cm47CiAgICAgICAgZWwuY2xhc3NOYW1lID0gZWwuY2xhc3NOYW1lICsgIiBodG1sLXdpZGdldC1zdGF0aWMtYm91bmQiOwoKICAgICAgICB2YXIgaW5pdFJlc3VsdDsKICAgICAgICBpZiAoYmluZGluZy5pbml0aWFsaXplKSB7CiAgICAgICAgICBpbml0UmVzdWx0ID0gYmluZGluZy5pbml0aWFsaXplKGVsLAogICAgICAgICAgICBzaXplT2JqID8gc2l6ZU9iai5nZXRXaWR0aCgpIDogZWwub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgIHNpemVPYmogPyBzaXplT2JqLmdldEhlaWdodCgpIDogZWwub2Zmc2V0SGVpZ2h0CiAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKGJpbmRpbmcucmVzaXplKSB7CiAgICAgICAgICB2YXIgbGFzdFNpemUgPSB7fTsKICAgICAgICAgIHZhciByZXNpemVIYW5kbGVyID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgc2l6ZSA9IHsKICAgICAgICAgICAgICB3OiBzaXplT2JqID8gc2l6ZU9iai5nZXRXaWR0aCgpIDogZWwub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgICAgaDogc2l6ZU9iaiA/IHNpemVPYmouZ2V0SGVpZ2h0KCkgOiBlbC5vZmZzZXRIZWlnaHQKICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKHNpemUudyA9PT0gMCAmJiBzaXplLmggPT09IDApCiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICBpZiAoc2l6ZS53ID09PSBsYXN0U2l6ZS53ICYmIHNpemUuaCA9PT0gbGFzdFNpemUuaCkKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIGxhc3RTaXplID0gc2l6ZTsKICAgICAgICAgICAgYmluZGluZy5yZXNpemUoZWwsIHNpemUudywgc2l6ZS5oLCBpbml0UmVzdWx0KTsKICAgICAgICAgIH07CgogICAgICAgICAgb24od2luZG93LCAicmVzaXplIiwgcmVzaXplSGFuZGxlcik7CgogICAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgZm9yIGNhc2VzIHdoZXJlIHdlJ3JlIHJ1bm5pbmcgaW4gYSBTaGlueQogICAgICAgICAgLy8gYXBwLCBidXQgdGhlIHdpZGdldCBpdHNlbGYgaXMgbm90IGEgU2hpbnkgb3V0cHV0LCBidXQKICAgICAgICAgIC8vIHJhdGhlciBhIHNpbXBsZSBzdGF0aWMgd2lkZ2V0LiBPbmUgZXhhbXBsZSBvZiB0aGlzIGlzCiAgICAgICAgICAvLyBhbiBybWFya2Rvd24gZG9jdW1lbnQgdGhhdCBoYXMgcnVudGltZTpzaGlueSBhbmQgd2lkZ2V0CiAgICAgICAgICAvLyB0aGF0IGlzbid0IGluIGEgcmVuZGVyIGZ1bmN0aW9uLiBTaGlueSBvbmx5IGtub3dzIHRvCiAgICAgICAgICAvLyBjYWxsIHJlc2l6ZSBoYW5kbGVycyBmb3IgU2hpbnkgb3V0cHV0cywgbm90IGZvciBzdGF0aWMKICAgICAgICAgIC8vIHdpZGdldHMsIHNvIHdlIGRvIGl0IG91cnNlbHZlcy4KICAgICAgICAgIGlmICh3aW5kb3cualF1ZXJ5KSB7CiAgICAgICAgICAgIHdpbmRvdy5qUXVlcnkoZG9jdW1lbnQpLm9uKCJzaG93biIsIHJlc2l6ZUhhbmRsZXIpOwogICAgICAgICAgICB3aW5kb3cualF1ZXJ5KGRvY3VtZW50KS5vbigiaGlkZGVuIiwgcmVzaXplSGFuZGxlcik7CiAgICAgICAgICB9CgogICAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBzcGVjaWZpYyBjYXNlIG9mIGlvc2xpZGVzLCB3aGljaAogICAgICAgICAgLy8gZmxpcHMgc2xpZGVzIGJldHdlZW4gZGlzcGxheTpub25lIGFuZCBkaXNwbGF5OmJsb2NrLgogICAgICAgICAgLy8gSWRlYWxseSB3ZSB3b3VsZCBub3QgaGF2ZSB0byBoYXZlIGlvc2xpZGUtc3BlY2lmaWMgY29kZQogICAgICAgICAgLy8gaGVyZSwgYnV0IHJhdGhlciBoYXZlIGlvc2xpZGVzIHJhaXNlIGEgZ2VuZXJpYyBldmVudCwKICAgICAgICAgIC8vIGJ1dCB0aGUgcm1hcmtkb3duIHBhY2thZ2UganVzdCB3ZW50IHRvIENSQU4gc28gdGhlCiAgICAgICAgICAvLyB3aW5kb3cgdG8gZ2V0dGluZyB0aGF0IGZpeGVkIG1heSBiZSBsb25nLgogICAgICAgICAgaWYgKHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKSB7CiAgICAgICAgICAgIC8vIEl0J3MgT0sgdG8gbGltaXQgdGhpcyB0byB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcgogICAgICAgICAgICAvLyBicm93c2VycyBiZWNhdXNlIGlvc2xpZGVzIGl0c2VsZiBvbmx5IHN1cHBvcnRzCiAgICAgICAgICAgIC8vIHN1Y2ggYnJvd3NlcnMuCiAgICAgICAgICAgIG9uKGRvY3VtZW50LCAic2xpZGVlbnRlciIsIHJlc2l6ZUhhbmRsZXIpOwogICAgICAgICAgICBvbihkb2N1bWVudCwgInNsaWRlbGVhdmUiLCByZXNpemVIYW5kbGVyKTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHZhciBzY3JpcHREYXRhID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic2NyaXB0W2RhdGEtZm9yPSciICsgZWwuaWQgKyAiJ11bdHlwZT0nYXBwbGljYXRpb24vanNvbiddIik7CiAgICAgICAgaWYgKHNjcmlwdERhdGEpIHsKICAgICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShzY3JpcHREYXRhLnRleHRDb250ZW50IHx8IHNjcmlwdERhdGEudGV4dCk7CiAgICAgICAgICAvLyBSZXNvbHZlIHN0cmluZ3MgbWFya2VkIGFzIGphdmFzY3JpcHQgbGl0ZXJhbHMgdG8gb2JqZWN0cwogICAgICAgICAgaWYgKCEoZGF0YS5ldmFscyBpbnN0YW5jZW9mIEFycmF5KSkgZGF0YS5ldmFscyA9IFtkYXRhLmV2YWxzXTsKICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBkYXRhLmV2YWxzICYmIGsgPCBkYXRhLmV2YWxzLmxlbmd0aDsgaysrKSB7CiAgICAgICAgICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy5ldmFsdWF0ZVN0cmluZ01lbWJlcihkYXRhLngsIGRhdGEuZXZhbHNba10pOwogICAgICAgICAgfQogICAgICAgICAgYmluZGluZy5yZW5kZXJWYWx1ZShlbCwgZGF0YS54LCBpbml0UmVzdWx0KTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSk7CiAgfQoKICAvLyBXYWl0IHVudGlsIGFmdGVyIHRoZSBkb2N1bWVudCBoYXMgbG9hZGVkIHRvIHJlbmRlciB0aGUgd2lkZ2V0cy4KICBpZiAoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcikgewogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGZ1bmN0aW9uKCkgewogICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgYXJndW1lbnRzLmNhbGxlZSwgZmFsc2UpOwogICAgICB3aW5kb3cuSFRNTFdpZGdldHMuc3RhdGljUmVuZGVyKCk7CiAgICB9LCBmYWxzZSk7CiAgfSBlbHNlIGlmIChkb2N1bWVudC5hdHRhY2hFdmVudCkgewogICAgZG9jdW1lbnQuYXR0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsIGZ1bmN0aW9uKCkgewogICAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gImNvbXBsZXRlIikgewogICAgICAgIGRvY3VtZW50LmRldGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCBhcmd1bWVudHMuY2FsbGVlKTsKICAgICAgICB3aW5kb3cuSFRNTFdpZGdldHMuc3RhdGljUmVuZGVyKCk7CiAgICAgIH0KICAgIH0pOwogIH0KCgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5nZXRBdHRhY2htZW50VXJsID0gZnVuY3Rpb24oZGVwbmFtZSwga2V5KSB7CiAgICAvLyBJZiBubyBrZXksIGRlZmF1bHQgdG8gdGhlIGZpcnN0IGl0ZW0KICAgIGlmICh0eXBlb2Yoa2V5KSA9PT0gInVuZGVmaW5lZCIpCiAgICAgIGtleSA9IDE7CgogICAgdmFyIGxpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkZXBuYW1lICsgIi0iICsga2V5ICsgIi1hdHRhY2htZW50Iik7CiAgICBpZiAoIWxpbmspIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJBdHRhY2htZW50ICIgKyBkZXBuYW1lICsgIi8iICsga2V5ICsgIiBub3QgZm91bmQgaW4gZG9jdW1lbnQiKTsKICAgIH0KICAgIHJldHVybiBsaW5rLmdldEF0dHJpYnV0ZSgiaHJlZiIpOwogIH07CgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5kYXRhZnJhbWVUb0QzID0gZnVuY3Rpb24oZGYpIHsKICAgIHZhciBuYW1lcyA9IFtdOwogICAgdmFyIGxlbmd0aDsKICAgIGZvciAodmFyIG5hbWUgaW4gZGYpIHsKICAgICAgICBpZiAoZGYuaGFzT3duUHJvcGVydHkobmFtZSkpCiAgICAgICAgICAgIG5hbWVzLnB1c2gobmFtZSk7CiAgICAgICAgaWYgKHR5cGVvZihkZltuYW1lXSkgIT09ICJvYmplY3QiIHx8IHR5cGVvZihkZltuYW1lXS5sZW5ndGgpID09PSAidW5kZWZpbmVkIikgewogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkFsbCBmaWVsZHMgbXVzdCBiZSBhcnJheXMiKTsKICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZihsZW5ndGgpICE9PSAidW5kZWZpbmVkIiAmJiBsZW5ndGggIT09IGRmW25hbWVdLmxlbmd0aCkgewogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkFsbCBmaWVsZHMgbXVzdCBiZSBhcnJheXMgb2YgdGhlIHNhbWUgbGVuZ3RoIik7CiAgICAgICAgfQogICAgICAgIGxlbmd0aCA9IGRmW25hbWVdLmxlbmd0aDsKICAgIH0KICAgIHZhciByZXN1bHRzID0gW107CiAgICB2YXIgaXRlbTsKICAgIGZvciAodmFyIHJvdyA9IDA7IHJvdyA8IGxlbmd0aDsgcm93KyspIHsKICAgICAgICBpdGVtID0ge307CiAgICAgICAgZm9yICh2YXIgY29sID0gMDsgY29sIDwgbmFtZXMubGVuZ3RoOyBjb2wrKykgewogICAgICAgICAgICBpdGVtW25hbWVzW2NvbF1dID0gZGZbbmFtZXNbY29sXV1bcm93XTsKICAgICAgICB9CiAgICAgICAgcmVzdWx0cy5wdXNoKGl0ZW0pOwogICAgfQogICAgcmV0dXJuIHJlc3VsdHM7CiAgfTsKCiAgd2luZG93LkhUTUxXaWRnZXRzLnRyYW5zcG9zZUFycmF5MkQgPSBmdW5jdGlvbihhcnJheSkgewogICAgICB2YXIgbmV3QXJyYXkgPSBhcnJheVswXS5tYXAoZnVuY3Rpb24oY29sLCBpKSB7CiAgICAgICAgICByZXR1cm4gYXJyYXkubWFwKGZ1bmN0aW9uKHJvdykgewogICAgICAgICAgICAgIHJldHVybiByb3dbaV0KICAgICAgICAgIH0pCiAgICAgIH0pOwogICAgICByZXR1cm4gbmV3QXJyYXk7CiAgfTsKICAvLyBTcGxpdCB2YWx1ZSBhdCBzcGxpdENoYXIsIGJ1dCBhbGxvdyBzcGxpdENoYXIgdG8gYmUgZXNjYXBlZAogIC8vIHVzaW5nIGVzY2FwZUNoYXIuIEFueSBvdGhlciBjaGFyYWN0ZXJzIGVzY2FwZWQgYnkgZXNjYXBlQ2hhcgogIC8vIHdpbGwgYmUgaW5jbHVkZWQgYXMgdXN1YWwgKGluY2x1ZGluZyBlc2NhcGVDaGFyIGl0c2VsZikuCiAgZnVuY3Rpb24gc3BsaXRXaXRoRXNjYXBlKHZhbHVlLCBzcGxpdENoYXIsIGVzY2FwZUNoYXIpIHsKICAgIHZhciByZXN1bHRzID0gW107CiAgICB2YXIgZXNjYXBlTW9kZSA9IGZhbHNlOwogICAgdmFyIGN1cnJlbnRSZXN1bHQgPSAiIjsKICAgIGZvciAodmFyIHBvcyA9IDA7IHBvcyA8IHZhbHVlLmxlbmd0aDsgcG9zKyspIHsKICAgICAgaWYgKCFlc2NhcGVNb2RlKSB7CiAgICAgICAgaWYgKHZhbHVlW3Bvc10gPT09IHNwbGl0Q2hhcikgewogICAgICAgICAgcmVzdWx0cy5wdXNoKGN1cnJlbnRSZXN1bHQpOwogICAgICAgICAgY3VycmVudFJlc3VsdCA9ICIiOwogICAgICAgIH0gZWxzZSBpZiAodmFsdWVbcG9zXSA9PT0gZXNjYXBlQ2hhcikgewogICAgICAgICAgZXNjYXBlTW9kZSA9IHRydWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGN1cnJlbnRSZXN1bHQgKz0gdmFsdWVbcG9zXTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY3VycmVudFJlc3VsdCArPSB2YWx1ZVtwb3NdOwogICAgICAgIGVzY2FwZU1vZGUgPSBmYWxzZTsKICAgICAgfQogICAgfQogICAgaWYgKGN1cnJlbnRSZXN1bHQgIT09ICIiKSB7CiAgICAgIHJlc3VsdHMucHVzaChjdXJyZW50UmVzdWx0KTsKICAgIH0KICAgIHJldHVybiByZXN1bHRzOwogIH0KICAvLyBGdW5jdGlvbiBhdXRob3JlZCBieSBZaWh1aS9KSiBBbGxhaXJlCiAgd2luZG93LkhUTUxXaWRnZXRzLmV2YWx1YXRlU3RyaW5nTWVtYmVyID0gZnVuY3Rpb24obywgbWVtYmVyKSB7CiAgICB2YXIgcGFydHMgPSBzcGxpdFdpdGhFc2NhcGUobWVtYmVyLCAnLicsICdcXCcpOwogICAgZm9yICh2YXIgaSA9IDAsIGwgPSBwYXJ0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKICAgICAgdmFyIHBhcnQgPSBwYXJ0c1tpXTsKICAgICAgLy8gcGFydCBtYXkgYmUgYSBjaGFyYWN0ZXIgb3IgJ251bWVyaWMnIG1lbWJlciBuYW1lCiAgICAgIGlmIChvICE9PSBudWxsICYmIHR5cGVvZiBvID09PSAib2JqZWN0IiAmJiBwYXJ0IGluIG8pIHsKICAgICAgICBpZiAoaSA9PSAobCAtIDEpKSB7IC8vIGlmIHdlIGFyZSBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lIHRoZW4gZXZhbHVsYXRlCiAgICAgICAgICBpZiAodHlwZW9mIG9bcGFydF0gPT09ICJzdHJpbmciKQogICAgICAgICAgICBvW3BhcnRdID0gZXZhbCgiKCIgKyBvW3BhcnRdICsgIikiKTsKICAgICAgICB9IGVsc2UgeyAvLyBvdGhlcndpc2UgY29udGludWUgdG8gbmV4dCBlbWJlZGRlZCBvYmplY3QKICAgICAgICAgIG8gPSBvW3BhcnRdOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH07Cn0pKCk7Cgo="></script> | |
| <script src="data:application/x-javascript;base64,LyohIGpRdWVyeSB2MS4xMS4xIHwgKGMpIDIwMDUsIDIwMTQgalF1ZXJ5IEZvdW5kYXRpb24sIEluYy4gfCBqcXVlcnkub3JnL2xpY2Vuc2UgKi8KIWZ1bmN0aW9uKGEsYil7Im9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9YS5kb2N1bWVudD9iKGEsITApOmZ1bmN0aW9uKGEpe2lmKCFhLmRvY3VtZW50KXRocm93IG5ldyBFcnJvcigialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudCIpO3JldHVybiBiKGEpfTpiKGEpfSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dGhpcyxmdW5jdGlvbihhLGIpe3ZhciBjPVtdLGQ9Yy5zbGljZSxlPWMuY29uY2F0LGY9Yy5wdXNoLGc9Yy5pbmRleE9mLGg9e30saT1oLnRvU3RyaW5nLGo9aC5oYXNPd25Qcm9wZXJ0eSxrPXt9LGw9IjEuMTEuMSIsbT1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgbS5mbi5pbml0KGEsYil9LG49L15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nLG89L14tbXMtLyxwPS8tKFtcZGEtel0pL2dpLHE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYi50b1VwcGVyQ2FzZSgpfTttLmZuPW0ucHJvdG90eXBlPXtqcXVlcnk6bCxjb25zdHJ1Y3RvcjptLHNlbGVjdG9yOiIiLGxlbmd0aDowLHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gZC5jYWxsKHRoaXMpfSxnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWE/MD5hP3RoaXNbYSt0aGlzLmxlbmd0aF06dGhpc1thXTpkLmNhbGwodGhpcyl9LHB1c2hTdGFjazpmdW5jdGlvbihhKXt2YXIgYj1tLm1lcmdlKHRoaXMuY29uc3RydWN0b3IoKSxhKTtyZXR1cm4gYi5wcmV2T2JqZWN0PXRoaXMsYi5jb250ZXh0PXRoaXMuY29udGV4dCxifSxlYWNoOmZ1bmN0aW9uKGEsYil7cmV0dXJuIG0uZWFjaCh0aGlzLGEsYil9LG1hcDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2sobS5tYXAodGhpcyxmdW5jdGlvbihiLGMpe3JldHVybiBhLmNhbGwoYixjLGIpfSkpfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhkLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgtMSl9LGVxOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMubGVuZ3RoLGM9K2ErKDA+YT9iOjApO3JldHVybiB0aGlzLnB1c2hTdGFjayhjPj0wJiZiPmM/W3RoaXNbY11dOltdKX0sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJldk9iamVjdHx8dGhpcy5jb25zdHJ1Y3RvcihudWxsKX0scHVzaDpmLHNvcnQ6Yy5zb3J0LHNwbGljZTpjLnNwbGljZX0sbS5leHRlbmQ9bS5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgYSxiLGMsZCxlLGYsZz1hcmd1bWVudHNbMF18fHt9LGg9MSxpPWFyZ3VtZW50cy5sZW5ndGgsaj0hMTtmb3IoImJvb2xlYW4iPT10eXBlb2YgZyYmKGo9ZyxnPWFyZ3VtZW50c1toXXx8e30saCsrKSwib2JqZWN0Ij09dHlwZW9mIGd8fG0uaXNGdW5jdGlvbihnKXx8KGc9e30pLGg9PT1pJiYoZz10aGlzLGgtLSk7aT5oO2grKylpZihudWxsIT0oZT1hcmd1bWVudHNbaF0pKWZvcihkIGluIGUpYT1nW2RdLGM9ZVtkXSxnIT09YyYmKGomJmMmJihtLmlzUGxhaW5PYmplY3QoYyl8fChiPW0uaXNBcnJheShjKSkpPyhiPyhiPSExLGY9YSYmbS5pc0FycmF5KGEpP2E6W10pOmY9YSYmbS5pc1BsYWluT2JqZWN0KGEpP2E6e30sZ1tkXT1tLmV4dGVuZChqLGYsYykpOnZvaWQgMCE9PWMmJihnW2RdPWMpKTtyZXR1cm4gZ30sbS5leHRlbmQoe2V4cGFuZG86ImpRdWVyeSIrKGwrTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQvZywiIiksaXNSZWFkeTohMCxlcnJvcjpmdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoYSl9LG5vb3A6ZnVuY3Rpb24oKXt9LGlzRnVuY3Rpb246ZnVuY3Rpb24oYSl7cmV0dXJuImZ1bmN0aW9uIj09PW0udHlwZShhKX0saXNBcnJheTpBcnJheS5pc0FycmF5fHxmdW5jdGlvbihhKXtyZXR1cm4iYXJyYXkiPT09bS50eXBlKGEpfSxpc1dpbmRvdzpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YSYmYT09YS53aW5kb3d9LGlzTnVtZXJpYzpmdW5jdGlvbihhKXtyZXR1cm4hbS5pc0FycmF5KGEpJiZhLXBhcnNlRmxvYXQoYSk+PTB9LGlzRW1wdHlPYmplY3Q6ZnVuY3Rpb24oYSl7dmFyIGI7Zm9yKGIgaW4gYSlyZXR1cm4hMTtyZXR1cm4hMH0saXNQbGFpbk9iamVjdDpmdW5jdGlvbihhKXt2YXIgYjtpZighYXx8Im9iamVjdCIhPT1tLnR5cGUoYSl8fGEubm9kZVR5cGV8fG0uaXNXaW5kb3coYSkpcmV0dXJuITE7dHJ5e2lmKGEuY29uc3RydWN0b3ImJiFqLmNhbGwoYSwiY29uc3RydWN0b3IiKSYmIWouY2FsbChhLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwiaXNQcm90b3R5cGVPZiIpKXJldHVybiExfWNhdGNoKGMpe3JldHVybiExfWlmKGsub3duTGFzdClmb3IoYiBpbiBhKXJldHVybiBqLmNhbGwoYSxiKTtmb3IoYiBpbiBhKTtyZXR1cm4gdm9pZCAwPT09Ynx8ai5jYWxsKGEsYil9LHR5cGU6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/YSsiIjoib2JqZWN0Ij09dHlwZW9mIGF8fCJmdW5jdGlvbiI9PXR5cGVvZiBhP2hbaS5jYWxsKGEpXXx8Im9iamVjdCI6dHlwZW9mIGF9LGdsb2JhbEV2YWw6ZnVuY3Rpb24oYil7YiYmbS50cmltKGIpJiYoYS5leGVjU2NyaXB0fHxmdW5jdGlvbihiKXthLmV2YWwuY2FsbChhLGIpfSkoYil9LGNhbWVsQ2FzZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKG8sIm1zLSIpLnJlcGxhY2UocCxxKX0sbm9kZU5hbWU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yi50b0xvd2VyQ2FzZSgpfSxlYWNoOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlPTAsZj1hLmxlbmd0aCxnPXIoYSk7aWYoYyl7aWYoZyl7Zm9yKDtmPmU7ZSsrKWlmKGQ9Yi5hcHBseShhW2VdLGMpLGQ9PT0hMSlicmVha31lbHNlIGZvcihlIGluIGEpaWYoZD1iLmFwcGx5KGFbZV0sYyksZD09PSExKWJyZWFrfWVsc2UgaWYoZyl7Zm9yKDtmPmU7ZSsrKWlmKGQ9Yi5jYWxsKGFbZV0sZSxhW2VdKSxkPT09ITEpYnJlYWt9ZWxzZSBmb3IoZSBpbiBhKWlmKGQ9Yi5jYWxsKGFbZV0sZSxhW2VdKSxkPT09ITEpYnJlYWs7cmV0dXJuIGF9LHRyaW06ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6KGErIiIpLnJlcGxhY2UobiwiIil9LG1ha2VBcnJheTpmdW5jdGlvbihhLGIpe3ZhciBjPWJ8fFtdO3JldHVybiBudWxsIT1hJiYocihPYmplY3QoYSkpP20ubWVyZ2UoYywic3RyaW5nIj09dHlwZW9mIGE/W2FdOmEpOmYuY2FsbChjLGEpKSxjfSxpbkFycmF5OmZ1bmN0aW9uKGEsYixjKXt2YXIgZDtpZihiKXtpZihnKXJldHVybiBnLmNhbGwoYixhLGMpO2ZvcihkPWIubGVuZ3RoLGM9Yz8wPmM/TWF0aC5tYXgoMCxkK2MpOmM6MDtkPmM7YysrKWlmKGMgaW4gYiYmYltjXT09PWEpcmV0dXJuIGN9cmV0dXJuLTF9LG1lcmdlOmZ1bmN0aW9uKGEsYil7dmFyIGM9K2IubGVuZ3RoLGQ9MCxlPWEubGVuZ3RoO3doaWxlKGM+ZClhW2UrK109YltkKytdO2lmKGMhPT1jKXdoaWxlKHZvaWQgMCE9PWJbZF0pYVtlKytdPWJbZCsrXTtyZXR1cm4gYS5sZW5ndGg9ZSxhfSxncmVwOmZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQsZT1bXSxmPTAsZz1hLmxlbmd0aCxoPSFjO2c+ZjtmKyspZD0hYihhW2ZdLGYpLGQhPT1oJiZlLnB1c2goYVtmXSk7cmV0dXJuIGV9LG1hcDpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZj0wLGc9YS5sZW5ndGgsaD1yKGEpLGk9W107aWYoaClmb3IoO2c+ZjtmKyspZD1iKGFbZl0sZixjKSxudWxsIT1kJiZpLnB1c2goZCk7ZWxzZSBmb3IoZiBpbiBhKWQ9YihhW2ZdLGYsYyksbnVsbCE9ZCYmaS5wdXNoKGQpO3JldHVybiBlLmFwcGx5KFtdLGkpfSxndWlkOjEscHJveHk6ZnVuY3Rpb24oYSxiKXt2YXIgYyxlLGY7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBiJiYoZj1hW2JdLGI9YSxhPWYpLG0uaXNGdW5jdGlvbihhKT8oYz1kLmNhbGwoYXJndW1lbnRzLDIpLGU9ZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseShifHx0aGlzLGMuY29uY2F0KGQuY2FsbChhcmd1bWVudHMpKSl9LGUuZ3VpZD1hLmd1aWQ9YS5ndWlkfHxtLmd1aWQrKyxlKTp2b2lkIDB9LG5vdzpmdW5jdGlvbigpe3JldHVybituZXcgRGF0ZX0sc3VwcG9ydDprfSksbS5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7aFsiW29iamVjdCAiK2IrIl0iXT1iLnRvTG93ZXJDYXNlKCl9KTtmdW5jdGlvbiByKGEpe3ZhciBiPWEubGVuZ3RoLGM9bS50eXBlKGEpO3JldHVybiJmdW5jdGlvbiI9PT1jfHxtLmlzV2luZG93KGEpPyExOjE9PT1hLm5vZGVUeXBlJiZiPyEwOiJhcnJheSI9PT1jfHwwPT09Ynx8Im51bWJlciI9PXR5cGVvZiBiJiZiPjAmJmItMSBpbiBhfXZhciBzPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHU9InNpenpsZSIrLW5ldyBEYXRlLHY9YS5kb2N1bWVudCx3PTAseD0wLHk9Z2IoKSx6PWdiKCksQT1nYigpLEI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT09PWImJihsPSEwKSwwfSxDPSJ1bmRlZmluZWQiLEQ9MTw8MzEsRT17fS5oYXNPd25Qcm9wZXJ0eSxGPVtdLEc9Ri5wb3AsSD1GLnB1c2gsST1GLnB1c2gsSj1GLnNsaWNlLEs9Ri5pbmRleE9mfHxmdW5jdGlvbihhKXtmb3IodmFyIGI9MCxjPXRoaXMubGVuZ3RoO2M+YjtiKyspaWYodGhpc1tiXT09PWEpcmV0dXJuIGI7cmV0dXJuLTF9LEw9ImNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkIixNPSJbXFx4MjBcXHRcXHJcXG5cXGZdIixOPSIoPzpcXFxcLnxbXFx3LV18W15cXHgwMC1cXHhhMF0pKyIsTz1OLnJlcGxhY2UoInciLCJ3IyIpLFA9IlxcWyIrTSsiKigiK04rIikoPzoiK00rIiooWypeJHwhfl0/PSkiK00rIiooPzonKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcInwoIitPKyIpKXwpIitNKyIqXFxdIixRPSI6KCIrTisiKSg/OlxcKCgoJygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCIpfCgoPzpcXFxcLnxbXlxcXFwoKVtcXF1dfCIrUCsiKSopfC4qKVxcKXwpIixSPW5ldyBSZWdFeHAoIl4iK00rIit8KCg/Ol58W15cXFxcXSkoPzpcXFxcLikqKSIrTSsiKyQiLCJnIiksUz1uZXcgUmVnRXhwKCJeIitNKyIqLCIrTSsiKiIpLFQ9bmV3IFJlZ0V4cCgiXiIrTSsiKihbPit+XXwiK00rIikiK00rIioiKSxVPW5ldyBSZWdFeHAoIj0iK00rIiooW15cXF0nXCJdKj8pIitNKyIqXFxdIiwiZyIpLFY9bmV3IFJlZ0V4cChRKSxXPW5ldyBSZWdFeHAoIl4iK08rIiQiKSxYPXtJRDpuZXcgUmVnRXhwKCJeIygiK04rIikiKSxDTEFTUzpuZXcgUmVnRXhwKCJeXFwuKCIrTisiKSIpLFRBRzpuZXcgUmVnRXhwKCJeKCIrTi5yZXBsYWNlKCJ3IiwidyoiKSsiKSIpLEFUVFI6bmV3IFJlZ0V4cCgiXiIrUCksUFNFVURPOm5ldyBSZWdFeHAoIl4iK1EpLENISUxEOm5ldyBSZWdFeHAoIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg/OlxcKCIrTSsiKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KSIrTSsiKig/OihbKy1dfCkiK00rIiooXFxkKyl8KSkiK00rIipcXCl8KSIsImkiKSxib29sOm5ldyBSZWdFeHAoIl4oPzoiK0wrIikkIiwiaSIpLG5lZWRzQ29udGV4dDpuZXcgUmVnRXhwKCJeIitNKyIqWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiK00rIiooKD86LVxcZCk/XFxkKikiK00rIipcXCl8KSg/PVteLV18JCkiLCJpIil9LFk9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxaPS9eaFxkJC9pLCQ9L15bXntdK1x7XHMqXFtuYXRpdmUgXHcvLF89L14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLyxhYj0vWyt+XS8sYmI9Lyd8XFwvZyxjYj1uZXcgUmVnRXhwKCJcXFxcKFtcXGRhLWZdezEsNn0iK00rIj98KCIrTSsiKXwuKSIsImlnIiksZGI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSIweCIrYi02NTUzNjtyZXR1cm4gZCE9PWR8fGM/YjowPmQ/U3RyaW5nLmZyb21DaGFyQ29kZShkKzY1NTM2KTpTdHJpbmcuZnJvbUNoYXJDb2RlKGQ+PjEwfDU1Mjk2LDEwMjMmZHw1NjMyMCl9O3RyeXtJLmFwcGx5KEY9Si5jYWxsKHYuY2hpbGROb2Rlcyksdi5jaGlsZE5vZGVzKSxGW3YuY2hpbGROb2Rlcy5sZW5ndGhdLm5vZGVUeXBlfWNhdGNoKGViKXtJPXthcHBseTpGLmxlbmd0aD9mdW5jdGlvbihhLGIpe0guYXBwbHkoYSxKLmNhbGwoYikpfTpmdW5jdGlvbihhLGIpe3ZhciBjPWEubGVuZ3RoLGQ9MDt3aGlsZShhW2MrK109YltkKytdKTthLmxlbmd0aD1jLTF9fX1mdW5jdGlvbiBmYihhLGIsZCxlKXt2YXIgZixoLGosayxsLG8scixzLHcseDtpZigoYj9iLm93bmVyRG9jdW1lbnR8fGI6dikhPT1uJiZtKGIpLGI9Ynx8bixkPWR8fFtdLCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIGQ7aWYoMSE9PShrPWIubm9kZVR5cGUpJiY5IT09aylyZXR1cm5bXTtpZihwJiYhZSl7aWYoZj1fLmV4ZWMoYSkpaWYoaj1mWzFdKXtpZig5PT09ayl7aWYoaD1iLmdldEVsZW1lbnRCeUlkKGopLCFofHwhaC5wYXJlbnROb2RlKXJldHVybiBkO2lmKGguaWQ9PT1qKXJldHVybiBkLnB1c2goaCksZH1lbHNlIGlmKGIub3duZXJEb2N1bWVudCYmKGg9Yi5vd25lckRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGopKSYmdChiLGgpJiZoLmlkPT09ailyZXR1cm4gZC5wdXNoKGgpLGR9ZWxzZXtpZihmWzJdKXJldHVybiBJLmFwcGx5KGQsYi5nZXRFbGVtZW50c0J5VGFnTmFtZShhKSksZDtpZigoaj1mWzNdKSYmYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIEkuYXBwbHkoZCxiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoaikpLGR9aWYoYy5xc2EmJighcXx8IXEudGVzdChhKSkpe2lmKHM9cj11LHc9Yix4PTk9PT1rJiZhLDE9PT1rJiYib2JqZWN0IiE9PWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7bz1nKGEpLChyPWIuZ2V0QXR0cmlidXRlKCJpZCIpKT9zPXIucmVwbGFjZShiYiwiXFwkJiIpOmIuc2V0QXR0cmlidXRlKCJpZCIscykscz0iW2lkPSciK3MrIiddICIsbD1vLmxlbmd0aDt3aGlsZShsLS0pb1tsXT1zK3FiKG9bbF0pO3c9YWIudGVzdChhKSYmb2IoYi5wYXJlbnROb2RlKXx8Yix4PW8uam9pbigiLCIpfWlmKHgpdHJ5e3JldHVybiBJLmFwcGx5KGQsdy5xdWVyeVNlbGVjdG9yQWxsKHgpKSxkfWNhdGNoKHkpe31maW5hbGx5e3J8fGIucmVtb3ZlQXR0cmlidXRlKCJpZCIpfX19cmV0dXJuIGkoYS5yZXBsYWNlKFIsIiQxIiksYixkLGUpfWZ1bmN0aW9uIGdiKCl7dmFyIGE9W107ZnVuY3Rpb24gYihjLGUpe3JldHVybiBhLnB1c2goYysiICIpPmQuY2FjaGVMZW5ndGgmJmRlbGV0ZSBiW2Euc2hpZnQoKV0sYltjKyIgIl09ZX1yZXR1cm4gYn1mdW5jdGlvbiBoYihhKXtyZXR1cm4gYVt1XT0hMCxhfWZ1bmN0aW9uIGliKGEpe3ZhciBiPW4uY3JlYXRlRWxlbWVudCgiZGl2Iik7dHJ5e3JldHVybiEhYShiKX1jYXRjaChjKXtyZXR1cm4hMX1maW5hbGx5e2IucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpLGI9bnVsbH19ZnVuY3Rpb24gamIoYSxiKXt2YXIgYz1hLnNwbGl0KCJ8IiksZT1hLmxlbmd0aDt3aGlsZShlLS0pZC5hdHRySGFuZGxlW2NbZV1dPWJ9ZnVuY3Rpb24ga2IoYSxiKXt2YXIgYz1iJiZhLGQ9YyYmMT09PWEubm9kZVR5cGUmJjE9PT1iLm5vZGVUeXBlJiYofmIuc291cmNlSW5kZXh8fEQpLSh+YS5zb3VyY2VJbmRleHx8RCk7aWYoZClyZXR1cm4gZDtpZihjKXdoaWxlKGM9Yy5uZXh0U2libGluZylpZihjPT09YilyZXR1cm4tMTtyZXR1cm4gYT8xOi0xfWZ1bmN0aW9uIGxiKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWMmJmIudHlwZT09PWF9fWZ1bmN0aW9uIG1iKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKCJpbnB1dCI9PT1jfHwiYnV0dG9uIj09PWMpJiZiLnR5cGU9PT1hfX1mdW5jdGlvbiBuYihhKXtyZXR1cm4gaGIoZnVuY3Rpb24oYil7cmV0dXJuIGI9K2IsaGIoZnVuY3Rpb24oYyxkKXt2YXIgZSxmPWEoW10sYy5sZW5ndGgsYiksZz1mLmxlbmd0aDt3aGlsZShnLS0pY1tlPWZbZ11dJiYoY1tlXT0hKGRbZV09Y1tlXSkpfSl9KX1mdW5jdGlvbiBvYihhKXtyZXR1cm4gYSYmdHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUhPT1DJiZhfWM9ZmIuc3VwcG9ydD17fSxmPWZiLmlzWE1MPWZ1bmN0aW9uKGEpe3ZhciBiPWEmJihhLm93bmVyRG9jdW1lbnR8fGEpLmRvY3VtZW50RWxlbWVudDtyZXR1cm4gYj8iSFRNTCIhPT1iLm5vZGVOYW1lOiExfSxtPWZiLnNldERvY3VtZW50PWZ1bmN0aW9uKGEpe3ZhciBiLGU9YT9hLm93bmVyRG9jdW1lbnR8fGE6dixnPWUuZGVmYXVsdFZpZXc7cmV0dXJuIGUhPT1uJiY5PT09ZS5ub2RlVHlwZSYmZS5kb2N1bWVudEVsZW1lbnQ/KG49ZSxvPWUuZG9jdW1lbnRFbGVtZW50LHA9IWYoZSksZyYmZyE9PWcudG9wJiYoZy5hZGRFdmVudExpc3RlbmVyP2cuYWRkRXZlbnRMaXN0ZW5lcigidW5sb2FkIixmdW5jdGlvbigpe20oKX0sITEpOmcuYXR0YWNoRXZlbnQmJmcuYXR0YWNoRXZlbnQoIm9udW5sb2FkIixmdW5jdGlvbigpe20oKX0pKSxjLmF0dHJpYnV0ZXM9aWIoZnVuY3Rpb24oYSl7cmV0dXJuIGEuY2xhc3NOYW1lPSJpIiwhYS5nZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIpfSksYy5nZXRFbGVtZW50c0J5VGFnTmFtZT1pYihmdW5jdGlvbihhKXtyZXR1cm4gYS5hcHBlbmRDaGlsZChlLmNyZWF0ZUNvbW1lbnQoIiIpKSwhYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aH0pLGMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT0kLnRlc3QoZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSYmaWIoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSI8ZGl2IGNsYXNzPSdhJz48L2Rpdj48ZGl2IGNsYXNzPSdhIGknPjwvZGl2PiIsYS5maXJzdENoaWxkLmNsYXNzTmFtZT0iaSIsMj09PWEuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiaSIpLmxlbmd0aH0pLGMuZ2V0QnlJZD1pYihmdW5jdGlvbihhKXtyZXR1cm4gby5hcHBlbmRDaGlsZChhKS5pZD11LCFlLmdldEVsZW1lbnRzQnlOYW1lfHwhZS5nZXRFbGVtZW50c0J5TmFtZSh1KS5sZW5ndGh9KSxjLmdldEJ5SWQ/KGQuZmluZC5JRD1mdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBiLmdldEVsZW1lbnRCeUlkIT09QyYmcCl7dmFyIGM9Yi5nZXRFbGVtZW50QnlJZChhKTtyZXR1cm4gYyYmYy5wYXJlbnROb2RlP1tjXTpbXX19LGQuZmlsdGVyLklEPWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShjYixkYik7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgiaWQiKT09PWJ9fSk6KGRlbGV0ZSBkLmZpbmQuSUQsZC5maWx0ZXIuSUQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKGNiLGRiKTtyZXR1cm4gZnVuY3Rpb24oYSl7dmFyIGM9dHlwZW9mIGEuZ2V0QXR0cmlidXRlTm9kZSE9PUMmJmEuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTtyZXR1cm4gYyYmYy52YWx1ZT09PWJ9fSksZC5maW5kLlRBRz1jLmdldEVsZW1lbnRzQnlUYWdOYW1lP2Z1bmN0aW9uKGEsYil7cmV0dXJuIHR5cGVvZiBiLmdldEVsZW1lbnRzQnlUYWdOYW1lIT09Qz9iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpOnZvaWQgMH06ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdLGU9MCxmPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYSk7aWYoIioiPT09YSl7d2hpbGUoYz1mW2UrK10pMT09PWMubm9kZVR5cGUmJmQucHVzaChjKTtyZXR1cm4gZH1yZXR1cm4gZn0sZC5maW5kLkNMQVNTPWMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZnVuY3Rpb24oYSxiKXtyZXR1cm4gdHlwZW9mIGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSE9PUMmJnA/Yi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGEpOnZvaWQgMH0scj1bXSxxPVtdLChjLnFzYT0kLnRlc3QoZS5xdWVyeVNlbGVjdG9yQWxsKSkmJihpYihmdW5jdGlvbihhKXthLmlubmVySFRNTD0iPHNlbGVjdCBtc2FsbG93Y2xpcD0nJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiIsYS5xdWVyeVNlbGVjdG9yQWxsKCJbbXNhbGxvd2NsaXBePScnXSIpLmxlbmd0aCYmcS5wdXNoKCJbKl4kXT0iK00rIiooPzonJ3xcIlwiKSIpLGEucXVlcnlTZWxlY3RvckFsbCgiW3NlbGVjdGVkXSIpLmxlbmd0aHx8cS5wdXNoKCJcXFsiK00rIiooPzp2YWx1ZXwiK0wrIikiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIjpjaGVja2VkIikubGVuZ3RofHxxLnB1c2goIjpjaGVja2VkIil9KSxpYihmdW5jdGlvbihhKXt2YXIgYj1lLmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Yi5zZXRBdHRyaWJ1dGUoInR5cGUiLCJoaWRkZW4iKSxhLmFwcGVuZENoaWxkKGIpLnNldEF0dHJpYnV0ZSgibmFtZSIsIkQiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIltuYW1lPWRdIikubGVuZ3RoJiZxLnB1c2goIm5hbWUiK00rIipbKl4kfCF+XT89IiksYS5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxlbmd0aHx8cS5wdXNoKCI6ZW5hYmxlZCIsIjpkaXNhYmxlZCIpLGEucXVlcnlTZWxlY3RvckFsbCgiKiw6eCIpLHEucHVzaCgiLC4qOiIpfSkpLChjLm1hdGNoZXNTZWxlY3Rvcj0kLnRlc3Qocz1vLm1hdGNoZXN8fG8ud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxvLm1vek1hdGNoZXNTZWxlY3Rvcnx8by5vTWF0Y2hlc1NlbGVjdG9yfHxvLm1zTWF0Y2hlc1NlbGVjdG9yKSkmJmliKGZ1bmN0aW9uKGEpe2MuZGlzY29ubmVjdGVkTWF0Y2g9cy5jYWxsKGEsImRpdiIpLHMuY2FsbChhLCJbcyE9JyddOngiKSxyLnB1c2goIiE9IixRKX0pLHE9cS5sZW5ndGgmJm5ldyBSZWdFeHAocS5qb2luKCJ8IikpLHI9ci5sZW5ndGgmJm5ldyBSZWdFeHAoci5qb2luKCJ8IikpLGI9JC50ZXN0KG8uY29tcGFyZURvY3VtZW50UG9zaXRpb24pLHQ9Ynx8JC50ZXN0KG8uY29udGFpbnMpP2Z1bmN0aW9uKGEsYil7dmFyIGM9OT09PWEubm9kZVR5cGU/YS5kb2N1bWVudEVsZW1lbnQ6YSxkPWImJmIucGFyZW50Tm9kZTtyZXR1cm4gYT09PWR8fCEoIWR8fDEhPT1kLm5vZGVUeXBlfHwhKGMuY29udGFpbnM/Yy5jb250YWlucyhkKTphLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYxNiZhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGQpKSl9OmZ1bmN0aW9uKGEsYil7aWYoYil3aGlsZShiPWIucGFyZW50Tm9kZSlpZihiPT09YSlyZXR1cm4hMDtyZXR1cm4hMX0sQj1iP2Z1bmN0aW9uKGEsYil7aWYoYT09PWIpcmV0dXJuIGw9ITAsMDt2YXIgZD0hYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbi0hYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjtyZXR1cm4gZD9kOihkPShhLm93bmVyRG9jdW1lbnR8fGEpPT09KGIub3duZXJEb2N1bWVudHx8Yik/YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKToxLDEmZHx8IWMuc29ydERldGFjaGVkJiZiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGEpPT09ZD9hPT09ZXx8YS5vd25lckRvY3VtZW50PT09diYmdCh2LGEpPy0xOmI9PT1lfHxiLm93bmVyRG9jdW1lbnQ9PT12JiZ0KHYsYik/MTprP0suY2FsbChrLGEpLUsuY2FsbChrLGIpOjA6NCZkPy0xOjEpfTpmdW5jdGlvbihhLGIpe2lmKGE9PT1iKXJldHVybiBsPSEwLDA7dmFyIGMsZD0wLGY9YS5wYXJlbnROb2RlLGc9Yi5wYXJlbnROb2RlLGg9W2FdLGk9W2JdO2lmKCFmfHwhZylyZXR1cm4gYT09PWU/LTE6Yj09PWU/MTpmPy0xOmc/MTprP0suY2FsbChrLGEpLUsuY2FsbChrLGIpOjA7aWYoZj09PWcpcmV0dXJuIGtiKGEsYik7Yz1hO3doaWxlKGM9Yy5wYXJlbnROb2RlKWgudW5zaGlmdChjKTtjPWI7d2hpbGUoYz1jLnBhcmVudE5vZGUpaS51bnNoaWZ0KGMpO3doaWxlKGhbZF09PT1pW2RdKWQrKztyZXR1cm4gZD9rYihoW2RdLGlbZF0pOmhbZF09PT12Py0xOmlbZF09PT12PzE6MH0sZSk6bn0sZmIubWF0Y2hlcz1mdW5jdGlvbihhLGIpe3JldHVybiBmYihhLG51bGwsbnVsbCxiKX0sZmIubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGEsYil7aWYoKGEub3duZXJEb2N1bWVudHx8YSkhPT1uJiZtKGEpLGI9Yi5yZXBsYWNlKFUsIj0nJDEnXSIpLCEoIWMubWF0Y2hlc1NlbGVjdG9yfHwhcHx8ciYmci50ZXN0KGIpfHxxJiZxLnRlc3QoYikpKXRyeXt2YXIgZD1zLmNhbGwoYSxiKTtpZihkfHxjLmRpc2Nvbm5lY3RlZE1hdGNofHxhLmRvY3VtZW50JiYxMSE9PWEuZG9jdW1lbnQubm9kZVR5cGUpcmV0dXJuIGR9Y2F0Y2goZSl7fXJldHVybiBmYihiLG4sbnVsbCxbYV0pLmxlbmd0aD4wfSxmYi5jb250YWlucz1mdW5jdGlvbihhLGIpe3JldHVybihhLm93bmVyRG9jdW1lbnR8fGEpIT09biYmbShhKSx0KGEsYil9LGZiLmF0dHI9ZnVuY3Rpb24oYSxiKXsoYS5vd25lckRvY3VtZW50fHxhKSE9PW4mJm0oYSk7dmFyIGU9ZC5hdHRySGFuZGxlW2IudG9Mb3dlckNhc2UoKV0sZj1lJiZFLmNhbGwoZC5hdHRySGFuZGxlLGIudG9Mb3dlckNhc2UoKSk/ZShhLGIsIXApOnZvaWQgMDtyZXR1cm4gdm9pZCAwIT09Zj9mOmMuYXR0cmlidXRlc3x8IXA/YS5nZXRBdHRyaWJ1dGUoYik6KGY9YS5nZXRBdHRyaWJ1dGVOb2RlKGIpKSYmZi5zcGVjaWZpZWQ/Zi52YWx1ZTpudWxsfSxmYi5lcnJvcj1mdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrYSl9LGZiLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oYSl7dmFyIGIsZD1bXSxlPTAsZj0wO2lmKGw9IWMuZGV0ZWN0RHVwbGljYXRlcyxrPSFjLnNvcnRTdGFibGUmJmEuc2xpY2UoMCksYS5zb3J0KEIpLGwpe3doaWxlKGI9YVtmKytdKWI9PT1hW2ZdJiYoZT1kLnB1c2goZikpO3doaWxlKGUtLSlhLnNwbGljZShkW2VdLDEpfXJldHVybiBrPW51bGwsYX0sZT1mYi5nZXRUZXh0PWZ1bmN0aW9uKGEpe3ZhciBiLGM9IiIsZD0wLGY9YS5ub2RlVHlwZTtpZihmKXtpZigxPT09Znx8OT09PWZ8fDExPT09Zil7aWYoInN0cmluZyI9PXR5cGVvZiBhLnRleHRDb250ZW50KXJldHVybiBhLnRleHRDb250ZW50O2ZvcihhPWEuZmlyc3RDaGlsZDthO2E9YS5uZXh0U2libGluZyljKz1lKGEpfWVsc2UgaWYoMz09PWZ8fDQ9PT1mKXJldHVybiBhLm5vZGVWYWx1ZX1lbHNlIHdoaWxlKGI9YVtkKytdKWMrPWUoYik7cmV0dXJuIGN9LGQ9ZmIuc2VsZWN0b3JzPXtjYWNoZUxlbmd0aDo1MCxjcmVhdGVQc2V1ZG86aGIsbWF0Y2g6WCxhdHRySGFuZGxlOnt9LGZpbmQ6e30scmVsYXRpdmU6eyI+Ijp7ZGlyOiJwYXJlbnROb2RlIixmaXJzdDohMH0sIiAiOntkaXI6InBhcmVudE5vZGUifSwiKyI6e2RpcjoicHJldmlvdXNTaWJsaW5nIixmaXJzdDohMH0sIn4iOntkaXI6InByZXZpb3VzU2libGluZyJ9fSxwcmVGaWx0ZXI6e0FUVFI6ZnVuY3Rpb24oYSl7cmV0dXJuIGFbMV09YVsxXS5yZXBsYWNlKGNiLGRiKSxhWzNdPShhWzNdfHxhWzRdfHxhWzVdfHwiIikucmVwbGFjZShjYixkYiksIn49Ij09PWFbMl0mJihhWzNdPSIgIithWzNdKyIgIiksYS5zbGljZSgwLDQpfSxDSElMRDpmdW5jdGlvbihhKXtyZXR1cm4gYVsxXT1hWzFdLnRvTG93ZXJDYXNlKCksIm50aCI9PT1hWzFdLnNsaWNlKDAsMyk/KGFbM118fGZiLmVycm9yKGFbMF0pLGFbNF09KyhhWzRdP2FbNV0rKGFbNl18fDEpOjIqKCJldmVuIj09PWFbM118fCJvZGQiPT09YVszXSkpLGFbNV09KyhhWzddK2FbOF18fCJvZGQiPT09YVszXSkpOmFbM10mJmZiLmVycm9yKGFbMF0pLGF9LFBTRVVETzpmdW5jdGlvbihhKXt2YXIgYixjPSFhWzZdJiZhWzJdO3JldHVybiBYLkNISUxELnRlc3QoYVswXSk/bnVsbDooYVszXT9hWzJdPWFbNF18fGFbNV18fCIiOmMmJlYudGVzdChjKSYmKGI9ZyhjLCEwKSkmJihiPWMuaW5kZXhPZigiKSIsYy5sZW5ndGgtYiktYy5sZW5ndGgpJiYoYVswXT1hWzBdLnNsaWNlKDAsYiksYVsyXT1jLnNsaWNlKDAsYikpLGEuc2xpY2UoMCwzKSl9fSxmaWx0ZXI6e1RBRzpmdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UoY2IsZGIpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIioiPT09YT9mdW5jdGlvbigpe3JldHVybiEwfTpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yn19LENMQVNTOmZ1bmN0aW9uKGEpe3ZhciBiPXlbYSsiICJdO3JldHVybiBifHwoYj1uZXcgUmVnRXhwKCIoXnwiK00rIikiK2ErIigiK00rInwkKSIpKSYmeShhLGZ1bmN0aW9uKGEpe3JldHVybiBiLnRlc3QoInN0cmluZyI9PXR5cGVvZiBhLmNsYXNzTmFtZSYmYS5jbGFzc05hbWV8fHR5cGVvZiBhLmdldEF0dHJpYnV0ZSE9PUMmJmEuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9KX0sQVRUUjpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGZ1bmN0aW9uKGQpe3ZhciBlPWZiLmF0dHIoZCxhKTtyZXR1cm4gbnVsbD09ZT8iIT0iPT09YjpiPyhlKz0iIiwiPSI9PT1iP2U9PT1jOiIhPSI9PT1iP2UhPT1jOiJePSI9PT1iP2MmJjA9PT1lLmluZGV4T2YoYyk6Iio9Ij09PWI/YyYmZS5pbmRleE9mKGMpPi0xOiIkPSI9PT1iP2MmJmUuc2xpY2UoLWMubGVuZ3RoKT09PWM6In49Ij09PWI/KCIgIitlKyIgIikuaW5kZXhPZihjKT4tMToifD0iPT09Yj9lPT09Y3x8ZS5zbGljZSgwLGMubGVuZ3RoKzEpPT09YysiLSI6ITEpOiEwfX0sQ0hJTEQ6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj0ibnRoIiE9PWEuc2xpY2UoMCwzKSxnPSJsYXN0IiE9PWEuc2xpY2UoLTQpLGg9Im9mLXR5cGUiPT09YjtyZXR1cm4gMT09PWQmJjA9PT1lP2Z1bmN0aW9uKGEpe3JldHVybiEhYS5wYXJlbnROb2RlfTpmdW5jdGlvbihiLGMsaSl7dmFyIGosayxsLG0sbixvLHA9ZiE9PWc/Im5leHRTaWJsaW5nIjoicHJldmlvdXNTaWJsaW5nIixxPWIucGFyZW50Tm9kZSxyPWgmJmIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxzPSFpJiYhaDtpZihxKXtpZihmKXt3aGlsZShwKXtsPWI7d2hpbGUobD1sW3BdKWlmKGg/bC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09cjoxPT09bC5ub2RlVHlwZSlyZXR1cm4hMTtvPXA9Im9ubHkiPT09YSYmIW8mJiJuZXh0U2libGluZyJ9cmV0dXJuITB9aWYobz1bZz9xLmZpcnN0Q2hpbGQ6cS5sYXN0Q2hpbGRdLGcmJnMpe2s9cVt1XXx8KHFbdV09e30pLGo9a1thXXx8W10sbj1qWzBdPT09dyYmalsxXSxtPWpbMF09PT13JiZqWzJdLGw9biYmcS5jaGlsZE5vZGVzW25dO3doaWxlKGw9KytuJiZsJiZsW3BdfHwobT1uPTApfHxvLnBvcCgpKWlmKDE9PT1sLm5vZGVUeXBlJiYrK20mJmw9PT1iKXtrW2FdPVt3LG4sbV07YnJlYWt9fWVsc2UgaWYocyYmKGo9KGJbdV18fChiW3VdPXt9KSlbYV0pJiZqWzBdPT09dyltPWpbMV07ZWxzZSB3aGlsZShsPSsrbiYmbCYmbFtwXXx8KG09bj0wKXx8by5wb3AoKSlpZigoaD9sLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1yOjE9PT1sLm5vZGVUeXBlKSYmKyttJiYocyYmKChsW3VdfHwobFt1XT17fSkpW2FdPVt3LG1dKSxsPT09YikpYnJlYWs7cmV0dXJuIG0tPWUsbT09PWR8fG0lZD09PTAmJm0vZD49MH19fSxQU0VVRE86ZnVuY3Rpb24oYSxiKXt2YXIgYyxlPWQucHNldWRvc1thXXx8ZC5zZXRGaWx0ZXJzW2EudG9Mb3dlckNhc2UoKV18fGZiLmVycm9yKCJ1bnN1cHBvcnRlZCBwc2V1ZG86ICIrYSk7cmV0dXJuIGVbdV0/ZShiKTplLmxlbmd0aD4xPyhjPVthLGEsIiIsYl0sZC5zZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KGEudG9Mb3dlckNhc2UoKSk/aGIoZnVuY3Rpb24oYSxjKXt2YXIgZCxmPWUoYSxiKSxnPWYubGVuZ3RoO3doaWxlKGctLSlkPUsuY2FsbChhLGZbZ10pLGFbZF09IShjW2RdPWZbZ10pfSk6ZnVuY3Rpb24oYSl7cmV0dXJuIGUoYSwwLGMpfSk6ZX19LHBzZXVkb3M6e25vdDpoYihmdW5jdGlvbihhKXt2YXIgYj1bXSxjPVtdLGQ9aChhLnJlcGxhY2UoUiwiJDEiKSk7cmV0dXJuIGRbdV0/aGIoZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGYsZz1kKGEsbnVsbCxlLFtdKSxoPWEubGVuZ3RoO3doaWxlKGgtLSkoZj1nW2hdKSYmKGFbaF09IShiW2hdPWYpKX0pOmZ1bmN0aW9uKGEsZSxmKXtyZXR1cm4gYlswXT1hLGQoYixudWxsLGYsYyksIWMucG9wKCl9fSksaGFzOmhiKGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4gZmIoYSxiKS5sZW5ndGg+MH19KSxjb250YWluczpoYihmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYil7cmV0dXJuKGIudGV4dENvbnRlbnR8fGIuaW5uZXJUZXh0fHxlKGIpKS5pbmRleE9mKGEpPi0xfX0pLGxhbmc6aGIoZnVuY3Rpb24oYSl7cmV0dXJuIFcudGVzdChhfHwiIil8fGZiLmVycm9yKCJ1bnN1cHBvcnRlZCBsYW5nOiAiK2EpLGE9YS5yZXBsYWNlKGNiLGRiKS50b0xvd2VyQ2FzZSgpLGZ1bmN0aW9uKGIpe3ZhciBjO2RvIGlmKGM9cD9iLmxhbmc6Yi5nZXRBdHRyaWJ1dGUoInhtbDpsYW5nIil8fGIuZ2V0QXR0cmlidXRlKCJsYW5nIikpcmV0dXJuIGM9Yy50b0xvd2VyQ2FzZSgpLGM9PT1hfHwwPT09Yy5pbmRleE9mKGErIi0iKTt3aGlsZSgoYj1iLnBhcmVudE5vZGUpJiYxPT09Yi5ub2RlVHlwZSk7cmV0dXJuITF9fSksdGFyZ2V0OmZ1bmN0aW9uKGIpe3ZhciBjPWEubG9jYXRpb24mJmEubG9jYXRpb24uaGFzaDtyZXR1cm4gYyYmYy5zbGljZSgxKT09PWIuaWR9LHJvb3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1vfSxmb2N1czpmdW5jdGlvbihhKXtyZXR1cm4gYT09PW4uYWN0aXZlRWxlbWVudCYmKCFuLmhhc0ZvY3VzfHxuLmhhc0ZvY3VzKCkpJiYhIShhLnR5cGV8fGEuaHJlZnx8fmEudGFiSW5kZXgpfSxlbmFibGVkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmRpc2FibGVkPT09ITF9LGRpc2FibGVkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmRpc2FibGVkPT09ITB9LGNoZWNrZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT1iJiYhIWEuY2hlY2tlZHx8Im9wdGlvbiI9PT1iJiYhIWEuc2VsZWN0ZWR9LHNlbGVjdGVkOmZ1bmN0aW9uKGEpe3JldHVybiBhLnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LGEuc2VsZWN0ZWQ9PT0hMH0sZW1wdHk6ZnVuY3Rpb24oYSl7Zm9yKGE9YS5maXJzdENoaWxkO2E7YT1hLm5leHRTaWJsaW5nKWlmKGEubm9kZVR5cGU8NilyZXR1cm4hMTtyZXR1cm4hMH0scGFyZW50OmZ1bmN0aW9uKGEpe3JldHVybiFkLnBzZXVkb3MuZW1wdHkoYSl9LGhlYWRlcjpmdW5jdGlvbihhKXtyZXR1cm4gWi50ZXN0KGEubm9kZU5hbWUpfSxpbnB1dDpmdW5jdGlvbihhKXtyZXR1cm4gWS50ZXN0KGEubm9kZU5hbWUpfSxidXR0b246ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT1iJiYiYnV0dG9uIj09PWEudHlwZXx8ImJ1dHRvbiI9PT1ifSx0ZXh0OmZ1bmN0aW9uKGEpe3ZhciBiO3JldHVybiJpbnB1dCI9PT1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJiJ0ZXh0Ij09PWEudHlwZSYmKG51bGw9PShiPWEuZ2V0QXR0cmlidXRlKCJ0eXBlIikpfHwidGV4dCI9PT1iLnRvTG93ZXJDYXNlKCkpfSxmaXJzdDpuYihmdW5jdGlvbigpe3JldHVyblswXX0pLGxhc3Q6bmIoZnVuY3Rpb24oYSxiKXtyZXR1cm5bYi0xXX0pLGVxOm5iKGZ1bmN0aW9uKGEsYixjKXtyZXR1cm5bMD5jP2MrYjpjXX0pLGV2ZW46bmIoZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MDtiPmM7Yys9MilhLnB1c2goYyk7cmV0dXJuIGF9KSxvZGQ6bmIoZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MTtiPmM7Yys9MilhLnB1c2goYyk7cmV0dXJuIGF9KSxsdDpuYihmdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPTA+Yz9jK2I6YzstLWQ+PTA7KWEucHVzaChkKTtyZXR1cm4gYX0pLGd0Om5iKGZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9MD5jP2MrYjpjOysrZDxiOylhLnB1c2goZCk7cmV0dXJuIGF9KX19LGQucHNldWRvcy5udGg9ZC5wc2V1ZG9zLmVxO2ZvcihiIGlue3JhZGlvOiEwLGNoZWNrYm94OiEwLGZpbGU6ITAscGFzc3dvcmQ6ITAsaW1hZ2U6ITB9KWQucHNldWRvc1tiXT1sYihiKTtmb3IoYiBpbntzdWJtaXQ6ITAscmVzZXQ6ITB9KWQucHNldWRvc1tiXT1tYihiKTtmdW5jdGlvbiBwYigpe31wYi5wcm90b3R5cGU9ZC5maWx0ZXJzPWQucHNldWRvcyxkLnNldEZpbHRlcnM9bmV3IHBiLGc9ZmIudG9rZW5pemU9ZnVuY3Rpb24oYSxiKXt2YXIgYyxlLGYsZyxoLGksaixrPXpbYSsiICJdO2lmKGspcmV0dXJuIGI/MDprLnNsaWNlKDApO2g9YSxpPVtdLGo9ZC5wcmVGaWx0ZXI7d2hpbGUoaCl7KCFjfHwoZT1TLmV4ZWMoaCkpKSYmKGUmJihoPWguc2xpY2UoZVswXS5sZW5ndGgpfHxoKSxpLnB1c2goZj1bXSkpLGM9ITEsKGU9VC5leGVjKGgpKSYmKGM9ZS5zaGlmdCgpLGYucHVzaCh7dmFsdWU6Yyx0eXBlOmVbMF0ucmVwbGFjZShSLCIgIil9KSxoPWguc2xpY2UoYy5sZW5ndGgpKTtmb3IoZyBpbiBkLmZpbHRlcikhKGU9WFtnXS5leGVjKGgpKXx8altnXSYmIShlPWpbZ10oZSkpfHwoYz1lLnNoaWZ0KCksZi5wdXNoKHt2YWx1ZTpjLHR5cGU6ZyxtYXRjaGVzOmV9KSxoPWguc2xpY2UoYy5sZW5ndGgpKTtpZighYylicmVha31yZXR1cm4gYj9oLmxlbmd0aDpoP2ZiLmVycm9yKGEpOnooYSxpKS5zbGljZSgwKX07ZnVuY3Rpb24gcWIoYSl7Zm9yKHZhciBiPTAsYz1hLmxlbmd0aCxkPSIiO2M+YjtiKyspZCs9YVtiXS52YWx1ZTtyZXR1cm4gZH1mdW5jdGlvbiByYihhLGIsYyl7dmFyIGQ9Yi5kaXIsZT1jJiYicGFyZW50Tm9kZSI9PT1kLGY9eCsrO3JldHVybiBiLmZpcnN0P2Z1bmN0aW9uKGIsYyxmKXt3aGlsZShiPWJbZF0paWYoMT09PWIubm9kZVR5cGV8fGUpcmV0dXJuIGEoYixjLGYpfTpmdW5jdGlvbihiLGMsZyl7dmFyIGgsaSxqPVt3LGZdO2lmKGcpe3doaWxlKGI9YltkXSlpZigoMT09PWIubm9kZVR5cGV8fGUpJiZhKGIsYyxnKSlyZXR1cm4hMH1lbHNlIHdoaWxlKGI9YltkXSlpZigxPT09Yi5ub2RlVHlwZXx8ZSl7aWYoaT1iW3VdfHwoYlt1XT17fSksKGg9aVtkXSkmJmhbMF09PT13JiZoWzFdPT09ZilyZXR1cm4galsyXT1oWzJdO2lmKGlbZF09aixqWzJdPWEoYixjLGcpKXJldHVybiEwfX19ZnVuY3Rpb24gc2IoYSl7cmV0dXJuIGEubGVuZ3RoPjE/ZnVuY3Rpb24oYixjLGQpe3ZhciBlPWEubGVuZ3RoO3doaWxlKGUtLSlpZighYVtlXShiLGMsZCkpcmV0dXJuITE7cmV0dXJuITB9OmFbMF19ZnVuY3Rpb24gdGIoYSxiLGMpe2Zvcih2YXIgZD0wLGU9Yi5sZW5ndGg7ZT5kO2QrKylmYihhLGJbZF0sYyk7cmV0dXJuIGN9ZnVuY3Rpb24gdWIoYSxiLGMsZCxlKXtmb3IodmFyIGYsZz1bXSxoPTAsaT1hLmxlbmd0aCxqPW51bGwhPWI7aT5oO2grKykoZj1hW2hdKSYmKCFjfHxjKGYsZCxlKSkmJihnLnB1c2goZiksaiYmYi5wdXNoKGgpKTtyZXR1cm4gZ31mdW5jdGlvbiB2YihhLGIsYyxkLGUsZil7cmV0dXJuIGQmJiFkW3VdJiYoZD12YihkKSksZSYmIWVbdV0mJihlPXZiKGUsZikpLGhiKGZ1bmN0aW9uKGYsZyxoLGkpe3ZhciBqLGssbCxtPVtdLG49W10sbz1nLmxlbmd0aCxwPWZ8fHRiKGJ8fCIqIixoLm5vZGVUeXBlP1toXTpoLFtdKSxxPSFhfHwhZiYmYj9wOnViKHAsbSxhLGgsaSkscj1jP2V8fChmP2E6b3x8ZCk/W106ZzpxO2lmKGMmJmMocSxyLGgsaSksZCl7aj11YihyLG4pLGQoaixbXSxoLGkpLGs9ai5sZW5ndGg7d2hpbGUoay0tKShsPWpba10pJiYocltuW2tdXT0hKHFbbltrXV09bCkpfWlmKGYpe2lmKGV8fGEpe2lmKGUpe2o9W10saz1yLmxlbmd0aDt3aGlsZShrLS0pKGw9cltrXSkmJmoucHVzaChxW2tdPWwpO2UobnVsbCxyPVtdLGosaSl9az1yLmxlbmd0aDt3aGlsZShrLS0pKGw9cltrXSkmJihqPWU/Sy5jYWxsKGYsbCk6bVtrXSk+LTEmJihmW2pdPSEoZ1tqXT1sKSl9fWVsc2Ugcj11YihyPT09Zz9yLnNwbGljZShvLHIubGVuZ3RoKTpyKSxlP2UobnVsbCxnLHIsaSk6SS5hcHBseShnLHIpfSl9ZnVuY3Rpb24gd2IoYSl7Zm9yKHZhciBiLGMsZSxmPWEubGVuZ3RoLGc9ZC5yZWxhdGl2ZVthWzBdLnR5cGVdLGg9Z3x8ZC5yZWxhdGl2ZVsiICJdLGk9Zz8xOjAsaz1yYihmdW5jdGlvbihhKXtyZXR1cm4gYT09PWJ9LGgsITApLGw9cmIoZnVuY3Rpb24oYSl7cmV0dXJuIEsuY2FsbChiLGEpPi0xfSxoLCEwKSxtPVtmdW5jdGlvbihhLGMsZCl7cmV0dXJuIWcmJihkfHxjIT09ail8fCgoYj1jKS5ub2RlVHlwZT9rKGEsYyxkKTpsKGEsYyxkKSl9XTtmPmk7aSsrKWlmKGM9ZC5yZWxhdGl2ZVthW2ldLnR5cGVdKW09W3JiKHNiKG0pLGMpXTtlbHNle2lmKGM9ZC5maWx0ZXJbYVtpXS50eXBlXS5hcHBseShudWxsLGFbaV0ubWF0Y2hlcyksY1t1XSl7Zm9yKGU9KytpO2Y+ZTtlKyspaWYoZC5yZWxhdGl2ZVthW2VdLnR5cGVdKWJyZWFrO3JldHVybiB2YihpPjEmJnNiKG0pLGk+MSYmcWIoYS5zbGljZSgwLGktMSkuY29uY2F0KHt2YWx1ZToiICI9PT1hW2ktMl0udHlwZT8iKiI6IiJ9KSkucmVwbGFjZShSLCIkMSIpLGMsZT5pJiZ3YihhLnNsaWNlKGksZSkpLGY+ZSYmd2IoYT1hLnNsaWNlKGUpKSxmPmUmJnFiKGEpKX1tLnB1c2goYyl9cmV0dXJuIHNiKG0pfWZ1bmN0aW9uIHhiKGEsYil7dmFyIGM9Yi5sZW5ndGg+MCxlPWEubGVuZ3RoPjAsZj1mdW5jdGlvbihmLGcsaCxpLGspe3ZhciBsLG0sbyxwPTAscT0iMCIscj1mJiZbXSxzPVtdLHQ9aix1PWZ8fGUmJmQuZmluZC5UQUcoIioiLGspLHY9dys9bnVsbD09dD8xOk1hdGgucmFuZG9tKCl8fC4xLHg9dS5sZW5ndGg7Zm9yKGsmJihqPWchPT1uJiZnKTtxIT09eCYmbnVsbCE9KGw9dVtxXSk7cSsrKXtpZihlJiZsKXttPTA7d2hpbGUobz1hW20rK10paWYobyhsLGcsaCkpe2kucHVzaChsKTticmVha31rJiYodz12KX1jJiYoKGw9IW8mJmwpJiZwLS0sZiYmci5wdXNoKGwpKX1pZihwKz1xLGMmJnEhPT1wKXttPTA7d2hpbGUobz1iW20rK10pbyhyLHMsZyxoKTtpZihmKXtpZihwPjApd2hpbGUocS0tKXJbcV18fHNbcV18fChzW3FdPUcuY2FsbChpKSk7cz11YihzKX1JLmFwcGx5KGkscyksayYmIWYmJnMubGVuZ3RoPjAmJnArYi5sZW5ndGg+MSYmZmIudW5pcXVlU29ydChpKX1yZXR1cm4gayYmKHc9dixqPXQpLHJ9O3JldHVybiBjP2hiKGYpOmZ9cmV0dXJuIGg9ZmIuY29tcGlsZT1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9W10sZT1bXSxmPUFbYSsiICJdO2lmKCFmKXtifHwoYj1nKGEpKSxjPWIubGVuZ3RoO3doaWxlKGMtLSlmPXdiKGJbY10pLGZbdV0/ZC5wdXNoKGYpOmUucHVzaChmKTtmPUEoYSx4YihlLGQpKSxmLnNlbGVjdG9yPWF9cmV0dXJuIGZ9LGk9ZmIuc2VsZWN0PWZ1bmN0aW9uKGEsYixlLGYpe3ZhciBpLGosayxsLG0sbj0iZnVuY3Rpb24iPT10eXBlb2YgYSYmYSxvPSFmJiZnKGE9bi5zZWxlY3Rvcnx8YSk7aWYoZT1lfHxbXSwxPT09by5sZW5ndGgpe2lmKGo9b1swXT1vWzBdLnNsaWNlKDApLGoubGVuZ3RoPjImJiJJRCI9PT0oaz1qWzBdKS50eXBlJiZjLmdldEJ5SWQmJjk9PT1iLm5vZGVUeXBlJiZwJiZkLnJlbGF0aXZlW2pbMV0udHlwZV0pe2lmKGI9KGQuZmluZC5JRChrLm1hdGNoZXNbMF0ucmVwbGFjZShjYixkYiksYil8fFtdKVswXSwhYilyZXR1cm4gZTtuJiYoYj1iLnBhcmVudE5vZGUpLGE9YS5zbGljZShqLnNoaWZ0KCkudmFsdWUubGVuZ3RoKX1pPVgubmVlZHNDb250ZXh0LnRlc3QoYSk/MDpqLmxlbmd0aDt3aGlsZShpLS0pe2lmKGs9altpXSxkLnJlbGF0aXZlW2w9ay50eXBlXSlicmVhaztpZigobT1kLmZpbmRbbF0pJiYoZj1tKGsubWF0Y2hlc1swXS5yZXBsYWNlKGNiLGRiKSxhYi50ZXN0KGpbMF0udHlwZSkmJm9iKGIucGFyZW50Tm9kZSl8fGIpKSl7aWYoai5zcGxpY2UoaSwxKSxhPWYubGVuZ3RoJiZxYihqKSwhYSlyZXR1cm4gSS5hcHBseShlLGYpLGU7YnJlYWt9fX1yZXR1cm4obnx8aChhLG8pKShmLGIsIXAsZSxhYi50ZXN0KGEpJiZvYihiLnBhcmVudE5vZGUpfHxiKSxlfSxjLnNvcnRTdGFibGU9dS5zcGxpdCgiIikuc29ydChCKS5qb2luKCIiKT09PXUsYy5kZXRlY3REdXBsaWNhdGVzPSEhbCxtKCksYy5zb3J0RGV0YWNoZWQ9aWIoZnVuY3Rpb24oYSl7cmV0dXJuIDEmYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihuLmNyZWF0ZUVsZW1lbnQoImRpdiIpKX0pLGliKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRNTD0iPGEgaHJlZj0nIyc+PC9hPiIsIiMiPT09YS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpfSl8fGpiKCJ0eXBlfGhyZWZ8aGVpZ2h0fHdpZHRoIixmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGM/dm9pZCAwOmEuZ2V0QXR0cmlidXRlKGIsInR5cGUiPT09Yi50b0xvd2VyQ2FzZSgpPzE6Mil9KSxjLmF0dHJpYnV0ZXMmJmliKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRNTD0iPGlucHV0Lz4iLGEuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoInZhbHVlIiwiIiksIiI9PT1hLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpfSl8fGpiKCJ2YWx1ZSIsZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjfHwiaW5wdXQiIT09YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpP3ZvaWQgMDphLmRlZmF1bHRWYWx1ZX0pLGliKGZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKX0pfHxqYihMLGZ1bmN0aW9uKGEsYixjKXt2YXIgZDtyZXR1cm4gYz92b2lkIDA6YVtiXT09PSEwP2IudG9Mb3dlckNhc2UoKTooZD1hLmdldEF0dHJpYnV0ZU5vZGUoYikpJiZkLnNwZWNpZmllZD9kLnZhbHVlOm51bGx9KSxmYn0oYSk7bS5maW5kPXMsbS5leHByPXMuc2VsZWN0b3JzLG0uZXhwclsiOiJdPW0uZXhwci5wc2V1ZG9zLG0udW5pcXVlPXMudW5pcXVlU29ydCxtLnRleHQ9cy5nZXRUZXh0LG0uaXNYTUxEb2M9cy5pc1hNTCxtLmNvbnRhaW5zPXMuY29udGFpbnM7dmFyIHQ9bS5leHByLm1hdGNoLm5lZWRzQ29udGV4dCx1PS9ePChcdyspXHMqXC8/Pig/OjxcL1wxPnwpJC8sdj0vXi5bXjojXFtcLixdKiQvO2Z1bmN0aW9uIHcoYSxiLGMpe2lmKG0uaXNGdW5jdGlvbihiKSlyZXR1cm4gbS5ncmVwKGEsZnVuY3Rpb24oYSxkKXtyZXR1cm4hIWIuY2FsbChhLGQsYSkhPT1jfSk7aWYoYi5ub2RlVHlwZSlyZXR1cm4gbS5ncmVwKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1iIT09Y30pO2lmKCJzdHJpbmciPT10eXBlb2YgYil7aWYodi50ZXN0KGIpKXJldHVybiBtLmZpbHRlcihiLGEsYyk7Yj1tLmZpbHRlcihiLGEpfXJldHVybiBtLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gbS5pbkFycmF5KGEsYik+PTAhPT1jfSl9bS5maWx0ZXI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWJbMF07cmV0dXJuIGMmJihhPSI6bm90KCIrYSsiKSIpLDE9PT1iLmxlbmd0aCYmMT09PWQubm9kZVR5cGU/bS5maW5kLm1hdGNoZXNTZWxlY3RvcihkLGEpP1tkXTpbXTptLmZpbmQubWF0Y2hlcyhhLG0uZ3JlcChiLGZ1bmN0aW9uKGEpe3JldHVybiAxPT09YS5ub2RlVHlwZX0pKX0sbS5mbi5leHRlbmQoe2ZpbmQ6ZnVuY3Rpb24oYSl7dmFyIGIsYz1bXSxkPXRoaXMsZT1kLmxlbmd0aDtpZigic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIHRoaXMucHVzaFN0YWNrKG0oYSkuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKGI9MDtlPmI7YisrKWlmKG0uY29udGFpbnMoZFtiXSx0aGlzKSlyZXR1cm4hMH0pKTtmb3IoYj0wO2U+YjtiKyspbS5maW5kKGEsZFtiXSxjKTtyZXR1cm4gYz10aGlzLnB1c2hTdGFjayhlPjE/bS51bmlxdWUoYyk6YyksYy5zZWxlY3Rvcj10aGlzLnNlbGVjdG9yP3RoaXMuc2VsZWN0b3IrIiAiK2E6YSxjfSxmaWx0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHcodGhpcyxhfHxbXSwhMSkpfSxub3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHcodGhpcyxhfHxbXSwhMCkpfSxpczpmdW5jdGlvbihhKXtyZXR1cm4hIXcodGhpcywic3RyaW5nIj09dHlwZW9mIGEmJnQudGVzdChhKT9tKGEpOmF8fFtdLCExKS5sZW5ndGh9fSk7dmFyIHgseT1hLmRvY3VtZW50LHo9L14oPzpccyooPFtcd1xXXSs+KVtePl0qfCMoW1x3LV0qKSkkLyxBPW0uZm4uaW5pdD1mdW5jdGlvbihhLGIpe3ZhciBjLGQ7aWYoIWEpcmV0dXJuIHRoaXM7aWYoInN0cmluZyI9PXR5cGVvZiBhKXtpZihjPSI8Ij09PWEuY2hhckF0KDApJiYiPiI9PT1hLmNoYXJBdChhLmxlbmd0aC0xKSYmYS5sZW5ndGg+PTM/W251bGwsYSxudWxsXTp6LmV4ZWMoYSksIWN8fCFjWzFdJiZiKXJldHVybiFifHxiLmpxdWVyeT8oYnx8eCkuZmluZChhKTp0aGlzLmNvbnN0cnVjdG9yKGIpLmZpbmQoYSk7aWYoY1sxXSl7aWYoYj1iIGluc3RhbmNlb2YgbT9iWzBdOmIsbS5tZXJnZSh0aGlzLG0ucGFyc2VIVE1MKGNbMV0sYiYmYi5ub2RlVHlwZT9iLm93bmVyRG9jdW1lbnR8fGI6eSwhMCkpLHUudGVzdChjWzFdKSYmbS5pc1BsYWluT2JqZWN0KGIpKWZvcihjIGluIGIpbS5pc0Z1bmN0aW9uKHRoaXNbY10pP3RoaXNbY10oYltjXSk6dGhpcy5hdHRyKGMsYltjXSk7cmV0dXJuIHRoaXN9aWYoZD15LmdldEVsZW1lbnRCeUlkKGNbMl0pLGQmJmQucGFyZW50Tm9kZSl7aWYoZC5pZCE9PWNbMl0pcmV0dXJuIHguZmluZChhKTt0aGlzLmxlbmd0aD0xLHRoaXNbMF09ZH1yZXR1cm4gdGhpcy5jb250ZXh0PXksdGhpcy5zZWxlY3Rvcj1hLHRoaXN9cmV0dXJuIGEubm9kZVR5cGU/KHRoaXMuY29udGV4dD10aGlzWzBdPWEsdGhpcy5sZW5ndGg9MSx0aGlzKTptLmlzRnVuY3Rpb24oYSk/InVuZGVmaW5lZCIhPXR5cGVvZiB4LnJlYWR5P3gucmVhZHkoYSk6YShtKToodm9pZCAwIT09YS5zZWxlY3RvciYmKHRoaXMuc2VsZWN0b3I9YS5zZWxlY3Rvcix0aGlzLmNvbnRleHQ9YS5jb250ZXh0KSxtLm1ha2VBcnJheShhLHRoaXMpKX07QS5wcm90b3R5cGU9bS5mbix4PW0oeSk7dmFyIEI9L14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sQz17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTttLmV4dGVuZCh7ZGlyOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXSxlPWFbYl07d2hpbGUoZSYmOSE9PWUubm9kZVR5cGUmJih2b2lkIDA9PT1jfHwxIT09ZS5ub2RlVHlwZXx8IW0oZSkuaXMoYykpKTE9PT1lLm5vZGVUeXBlJiZkLnB1c2goZSksZT1lW2JdO3JldHVybiBkfSxzaWJsaW5nOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPVtdO2E7YT1hLm5leHRTaWJsaW5nKTE9PT1hLm5vZGVUeXBlJiZhIT09YiYmYy5wdXNoKGEpO3JldHVybiBjfX0pLG0uZm4uZXh0ZW5kKHtoYXM6ZnVuY3Rpb24oYSl7dmFyIGIsYz1tKGEsdGhpcyksZD1jLmxlbmd0aDtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoYj0wO2Q+YjtiKyspaWYobS5jb250YWlucyh0aGlzLGNbYl0pKXJldHVybiEwfSl9LGNsb3Nlc3Q6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGMsZD0wLGU9dGhpcy5sZW5ndGgsZj1bXSxnPXQudGVzdChhKXx8InN0cmluZyIhPXR5cGVvZiBhP20oYSxifHx0aGlzLmNvbnRleHQpOjA7ZT5kO2QrKylmb3IoYz10aGlzW2RdO2MmJmMhPT1iO2M9Yy5wYXJlbnROb2RlKWlmKGMubm9kZVR5cGU8MTEmJihnP2cuaW5kZXgoYyk+LTE6MT09PWMubm9kZVR5cGUmJm0uZmluZC5tYXRjaGVzU2VsZWN0b3IoYyxhKSkpe2YucHVzaChjKTticmVha31yZXR1cm4gdGhpcy5wdXNoU3RhY2soZi5sZW5ndGg+MT9tLnVuaXF1ZShmKTpmKX0saW5kZXg6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/InN0cmluZyI9PXR5cGVvZiBhP20uaW5BcnJheSh0aGlzWzBdLG0oYSkpOm0uaW5BcnJheShhLmpxdWVyeT9hWzBdOmEsdGhpcyk6dGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlP3RoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoOi0xfSxhZGQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2sobS51bmlxdWUobS5tZXJnZSh0aGlzLmdldCgpLG0oYSxiKSkpKX0sYWRkQmFjazpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hZGQobnVsbD09YT90aGlzLnByZXZPYmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihhKSl9fSk7ZnVuY3Rpb24gRChhLGIpe2RvIGE9YVtiXTt3aGlsZShhJiYxIT09YS5ub2RlVHlwZSk7cmV0dXJuIGF9bS5lYWNoKHtwYXJlbnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO3JldHVybiBiJiYxMSE9PWIubm9kZVR5cGU/YjpudWxsfSxwYXJlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBtLmRpcihhLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG0uZGlyKGEsInBhcmVudE5vZGUiLGMpfSxuZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBEKGEsIm5leHRTaWJsaW5nIil9LHByZXY6ZnVuY3Rpb24oYSl7cmV0dXJuIEQoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIG0uZGlyKGEsIm5leHRTaWJsaW5nIil9LHByZXZBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIG0uZGlyKGEsInByZXZpb3VzU2libGluZyIpfSxuZXh0VW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBtLmRpcihhLCJuZXh0U2libGluZyIsYyl9LHByZXZVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG0uZGlyKGEsInByZXZpb3VzU2libGluZyIsYyl9LHNpYmxpbmdzOmZ1bmN0aW9uKGEpe3JldHVybiBtLnNpYmxpbmcoKGEucGFyZW50Tm9kZXx8e30pLmZpcnN0Q2hpbGQsYSl9LGNoaWxkcmVuOmZ1bmN0aW9uKGEpe3JldHVybiBtLnNpYmxpbmcoYS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIG0ubm9kZU5hbWUoYSwiaWZyYW1lIik/YS5jb250ZW50RG9jdW1lbnR8fGEuY29udGVudFdpbmRvdy5kb2N1bWVudDptLm1lcmdlKFtdLGEuY2hpbGROb2Rlcyl9fSxmdW5jdGlvbihhLGIpe20uZm5bYV09ZnVuY3Rpb24oYyxkKXt2YXIgZT1tLm1hcCh0aGlzLGIsYyk7cmV0dXJuIlVudGlsIiE9PWEuc2xpY2UoLTUpJiYoZD1jKSxkJiYic3RyaW5nIj09dHlwZW9mIGQmJihlPW0uZmlsdGVyKGQsZSkpLHRoaXMubGVuZ3RoPjEmJihDW2FdfHwoZT1tLnVuaXF1ZShlKSksQi50ZXN0KGEpJiYoZT1lLnJldmVyc2UoKSkpLHRoaXMucHVzaFN0YWNrKGUpfX0pO3ZhciBFPS9cUysvZyxGPXt9O2Z1bmN0aW9uIEcoYSl7dmFyIGI9RlthXT17fTtyZXR1cm4gbS5lYWNoKGEubWF0Y2goRSl8fFtdLGZ1bmN0aW9uKGEsYyl7YltjXT0hMH0pLGJ9bS5DYWxsYmFja3M9ZnVuY3Rpb24oYSl7YT0ic3RyaW5nIj09dHlwZW9mIGE/RlthXXx8RyhhKTptLmV4dGVuZCh7fSxhKTt2YXIgYixjLGQsZSxmLGcsaD1bXSxpPSFhLm9uY2UmJltdLGo9ZnVuY3Rpb24obCl7Zm9yKGM9YS5tZW1vcnkmJmwsZD0hMCxmPWd8fDAsZz0wLGU9aC5sZW5ndGgsYj0hMDtoJiZlPmY7ZisrKWlmKGhbZl0uYXBwbHkobFswXSxsWzFdKT09PSExJiZhLnN0b3BPbkZhbHNlKXtjPSExO2JyZWFrfWI9ITEsaCYmKGk/aS5sZW5ndGgmJmooaS5zaGlmdCgpKTpjP2g9W106ay5kaXNhYmxlKCkpfSxrPXthZGQ6ZnVuY3Rpb24oKXtpZihoKXt2YXIgZD1oLmxlbmd0aDshZnVuY3Rpb24gZihiKXttLmVhY2goYixmdW5jdGlvbihiLGMpe3ZhciBkPW0udHlwZShjKTsiZnVuY3Rpb24iPT09ZD9hLnVuaXF1ZSYmay5oYXMoYyl8fGgucHVzaChjKTpjJiZjLmxlbmd0aCYmInN0cmluZyIhPT1kJiZmKGMpfSl9KGFyZ3VtZW50cyksYj9lPWgubGVuZ3RoOmMmJihnPWQsaihjKSl9cmV0dXJuIHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiBoJiZtLmVhY2goYXJndW1lbnRzLGZ1bmN0aW9uKGEsYyl7dmFyIGQ7d2hpbGUoKGQ9bS5pbkFycmF5KGMsaCxkKSk+LTEpaC5zcGxpY2UoZCwxKSxiJiYoZT49ZCYmZS0tLGY+PWQmJmYtLSl9KSx0aGlzfSxoYXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/bS5pbkFycmF5KGEsaCk+LTE6ISghaHx8IWgubGVuZ3RoKX0sZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gaD1bXSxlPTAsdGhpc30sZGlzYWJsZTpmdW5jdGlvbigpe3JldHVybiBoPWk9Yz12b2lkIDAsdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4haH0sbG9jazpmdW5jdGlvbigpe3JldHVybiBpPXZvaWQgMCxjfHxrLmRpc2FibGUoKSx0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4haX0sZmlyZVdpdGg6ZnVuY3Rpb24oYSxjKXtyZXR1cm4haHx8ZCYmIWl8fChjPWN8fFtdLGM9W2EsYy5zbGljZT9jLnNsaWNlKCk6Y10sYj9pLnB1c2goYyk6aihjKSksdGhpc30sZmlyZTpmdW5jdGlvbigpe3JldHVybiBrLmZpcmVXaXRoKHRoaXMsYXJndW1lbnRzKSx0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVybiEhZH19O3JldHVybiBrfSxtLmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9W1sicmVzb2x2ZSIsImRvbmUiLG0uQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCJyZXNvbHZlZCJdLFsicmVqZWN0IiwiZmFpbCIsbS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksInJlamVjdGVkIl0sWyJub3RpZnkiLCJwcm9ncmVzcyIsbS5DYWxsYmFja3MoIm1lbW9yeSIpXV0sYz0icGVuZGluZyIsZD17c3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gY30sYWx3YXlzOmZ1bmN0aW9uKCl7cmV0dXJuIGUuZG9uZShhcmd1bWVudHMpLmZhaWwoYXJndW1lbnRzKSx0aGlzfSx0aGVuOmZ1bmN0aW9uKCl7dmFyIGE9YXJndW1lbnRzO3JldHVybiBtLkRlZmVycmVkKGZ1bmN0aW9uKGMpe20uZWFjaChiLGZ1bmN0aW9uKGIsZil7dmFyIGc9bS5pc0Z1bmN0aW9uKGFbYl0pJiZhW2JdO2VbZlsxXV0oZnVuY3Rpb24oKXt2YXIgYT1nJiZnLmFwcGx5KHRoaXMsYXJndW1lbnRzKTthJiZtLmlzRnVuY3Rpb24oYS5wcm9taXNlKT9hLnByb21pc2UoKS5kb25lKGMucmVzb2x2ZSkuZmFpbChjLnJlamVjdCkucHJvZ3Jlc3MoYy5ub3RpZnkpOmNbZlswXSsiV2l0aCJdKHRoaXM9PT1kP2MucHJvbWlzZSgpOnRoaXMsZz9bYV06YXJndW1lbnRzKX0pfSksYT1udWxsfSkucHJvbWlzZSgpfSxwcm9taXNlOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT1hP20uZXh0ZW5kKGEsZCk6ZH19LGU9e307cmV0dXJuIGQucGlwZT1kLnRoZW4sbS5lYWNoKGIsZnVuY3Rpb24oYSxmKXt2YXIgZz1mWzJdLGg9ZlszXTtkW2ZbMV1dPWcuYWRkLGgmJmcuYWRkKGZ1bmN0aW9uKCl7Yz1ofSxiWzFeYV1bMl0uZGlzYWJsZSxiWzJdWzJdLmxvY2spLGVbZlswXV09ZnVuY3Rpb24oKXtyZXR1cm4gZVtmWzBdKyJXaXRoIl0odGhpcz09PWU/ZDp0aGlzLGFyZ3VtZW50cyksdGhpc30sZVtmWzBdKyJXaXRoIl09Zy5maXJlV2l0aH0pLGQucHJvbWlzZShlKSxhJiZhLmNhbGwoZSxlKSxlfSx3aGVuOmZ1bmN0aW9uKGEpe3ZhciBiPTAsYz1kLmNhbGwoYXJndW1lbnRzKSxlPWMubGVuZ3RoLGY9MSE9PWV8fGEmJm0uaXNGdW5jdGlvbihhLnByb21pc2UpP2U6MCxnPTE9PT1mP2E6bS5EZWZlcnJlZCgpLGg9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmdW5jdGlvbihlKXtiW2FdPXRoaXMsY1thXT1hcmd1bWVudHMubGVuZ3RoPjE/ZC5jYWxsKGFyZ3VtZW50cyk6ZSxjPT09aT9nLm5vdGlmeVdpdGgoYixjKTotLWZ8fGcucmVzb2x2ZVdpdGgoYixjKX19LGksaixrO2lmKGU+MSlmb3IoaT1uZXcgQXJyYXkoZSksaj1uZXcgQXJyYXkoZSksaz1uZXcgQXJyYXkoZSk7ZT5iO2IrKyljW2JdJiZtLmlzRnVuY3Rpb24oY1tiXS5wcm9taXNlKT9jW2JdLnByb21pc2UoKS5kb25lKGgoYixrLGMpKS5mYWlsKGcucmVqZWN0KS5wcm9ncmVzcyhoKGIsaixpKSk6LS1mO3JldHVybiBmfHxnLnJlc29sdmVXaXRoKGssYyksZy5wcm9taXNlKCl9fSk7dmFyIEg7bS5mbi5yZWFkeT1mdW5jdGlvbihhKXtyZXR1cm4gbS5yZWFkeS5wcm9taXNlKCkuZG9uZShhKSx0aGlzfSxtLmV4dGVuZCh7aXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxob2xkUmVhZHk6ZnVuY3Rpb24oYSl7YT9tLnJlYWR5V2FpdCsrOm0ucmVhZHkoITApfSxyZWFkeTpmdW5jdGlvbihhKXtpZihhPT09ITA/IS0tbS5yZWFkeVdhaXQ6IW0uaXNSZWFkeSl7aWYoIXkuYm9keSlyZXR1cm4gc2V0VGltZW91dChtLnJlYWR5KTttLmlzUmVhZHk9ITAsYSE9PSEwJiYtLW0ucmVhZHlXYWl0PjB8fChILnJlc29sdmVXaXRoKHksW21dKSxtLmZuLnRyaWdnZXJIYW5kbGVyJiYobSh5KS50cmlnZ2VySGFuZGxlcigicmVhZHkiKSxtKHkpLm9mZigicmVhZHkiKSkpfX19KTtmdW5jdGlvbiBJKCl7eS5hZGRFdmVudExpc3RlbmVyPyh5LnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLEosITEpLGEucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsSiwhMSkpOih5LmRldGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLEopLGEuZGV0YWNoRXZlbnQoIm9ubG9hZCIsSikpfWZ1bmN0aW9uIEooKXsoeS5hZGRFdmVudExpc3RlbmVyfHwibG9hZCI9PT1ldmVudC50eXBlfHwiY29tcGxldGUiPT09eS5yZWFkeVN0YXRlKSYmKEkoKSxtLnJlYWR5KCkpfW0ucmVhZHkucHJvbWlzZT1mdW5jdGlvbihiKXtpZighSClpZihIPW0uRGVmZXJyZWQoKSwiY29tcGxldGUiPT09eS5yZWFkeVN0YXRlKXNldFRpbWVvdXQobS5yZWFkeSk7ZWxzZSBpZih5LmFkZEV2ZW50TGlzdGVuZXIpeS5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixKLCExKSxhLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLEosITEpO2Vsc2V7eS5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixKKSxhLmF0dGFjaEV2ZW50KCJvbmxvYWQiLEopO3ZhciBjPSExO3RyeXtjPW51bGw9PWEuZnJhbWVFbGVtZW50JiZ5LmRvY3VtZW50RWxlbWVudH1jYXRjaChkKXt9YyYmYy5kb1Njcm9sbCYmIWZ1bmN0aW9uIGUoKXtpZighbS5pc1JlYWR5KXt0cnl7Yy5kb1Njcm9sbCgibGVmdCIpfWNhdGNoKGEpe3JldHVybiBzZXRUaW1lb3V0KGUsNTApfUkoKSxtLnJlYWR5KCl9fSgpfXJldHVybiBILnByb21pc2UoYil9O3ZhciBLPSJ1bmRlZmluZWQiLEw7Zm9yKEwgaW4gbShrKSlicmVhaztrLm93bkxhc3Q9IjAiIT09TCxrLmlubGluZUJsb2NrTmVlZHNMYXlvdXQ9ITEsbShmdW5jdGlvbigpe3ZhciBhLGIsYyxkO2M9eS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdLGMmJmMuc3R5bGUmJihiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksZD15LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOjA7d2lkdGg6MDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHgiLGMuYXBwZW5kQ2hpbGQoZCkuYXBwZW5kQ2hpbGQoYiksdHlwZW9mIGIuc3R5bGUuem9vbSE9PUsmJihiLnN0eWxlLmNzc1RleHQ9ImRpc3BsYXk6aW5saW5lO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MXB4O3dpZHRoOjFweDt6b29tOjEiLGsuaW5saW5lQmxvY2tOZWVkc0xheW91dD1hPTM9PT1iLm9mZnNldFdpZHRoLGEmJihjLnN0eWxlLnpvb209MSkpLGMucmVtb3ZlQ2hpbGQoZCkpfSksZnVuY3Rpb24oKXt2YXIgYT15LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2lmKG51bGw9PWsuZGVsZXRlRXhwYW5kbyl7ay5kZWxldGVFeHBhbmRvPSEwO3RyeXtkZWxldGUgYS50ZXN0fWNhdGNoKGIpe2suZGVsZXRlRXhwYW5kbz0hMX19YT1udWxsfSgpLG0uYWNjZXB0RGF0YT1mdW5jdGlvbihhKXt2YXIgYj1tLm5vRGF0YVsoYS5ub2RlTmFtZSsiICIpLnRvTG93ZXJDYXNlKCldLGM9K2Eubm9kZVR5cGV8fDE7cmV0dXJuIDEhPT1jJiY5IT09Yz8hMTohYnx8YiE9PSEwJiZhLmdldEF0dHJpYnV0ZSgiY2xhc3NpZCIpPT09Yn07dmFyIE09L14oPzpce1tcd1xXXSpcfXxcW1tcd1xXXSpcXSkkLyxOPS8oW0EtWl0pL2c7ZnVuY3Rpb24gTyhhLGIsYyl7aWYodm9pZCAwPT09YyYmMT09PWEubm9kZVR5cGUpe3ZhciBkPSJkYXRhLSIrYi5yZXBsYWNlKE4sIi0kMSIpLnRvTG93ZXJDYXNlKCk7aWYoYz1hLmdldEF0dHJpYnV0ZShkKSwic3RyaW5nIj09dHlwZW9mIGMpe3RyeXtjPSJ0cnVlIj09PWM/ITA6ImZhbHNlIj09PWM/ITE6Im51bGwiPT09Yz9udWxsOitjKyIiPT09Yz8rYzpNLnRlc3QoYyk/bS5wYXJzZUpTT04oYyk6Y31jYXRjaChlKXt9bS5kYXRhKGEsYixjKX1lbHNlIGM9dm9pZCAwfXJldHVybiBjfWZ1bmN0aW9uIFAoYSl7dmFyIGI7Zm9yKGIgaW4gYSlpZigoImRhdGEiIT09Ynx8IW0uaXNFbXB0eU9iamVjdChhW2JdKSkmJiJ0b0pTT04iIT09YilyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBRKGEsYixkLGUpe2lmKG0uYWNjZXB0RGF0YShhKSl7dmFyIGYsZyxoPW0uZXhwYW5kbyxpPWEubm9kZVR5cGUsaj1pP20uY2FjaGU6YSxrPWk/YVtoXTphW2hdJiZoOwppZihrJiZqW2tdJiYoZXx8altrXS5kYXRhKXx8dm9pZCAwIT09ZHx8InN0cmluZyIhPXR5cGVvZiBiKXJldHVybiBrfHwoaz1pP2FbaF09Yy5wb3AoKXx8bS5ndWlkKys6aCksaltrXXx8KGpba109aT97fTp7dG9KU09OOm0ubm9vcH0pLCgib2JqZWN0Ij09dHlwZW9mIGJ8fCJmdW5jdGlvbiI9PXR5cGVvZiBiKSYmKGU/altrXT1tLmV4dGVuZChqW2tdLGIpOmpba10uZGF0YT1tLmV4dGVuZChqW2tdLmRhdGEsYikpLGc9altrXSxlfHwoZy5kYXRhfHwoZy5kYXRhPXt9KSxnPWcuZGF0YSksdm9pZCAwIT09ZCYmKGdbbS5jYW1lbENhc2UoYildPWQpLCJzdHJpbmciPT10eXBlb2YgYj8oZj1nW2JdLG51bGw9PWYmJihmPWdbbS5jYW1lbENhc2UoYildKSk6Zj1nLGZ9fWZ1bmN0aW9uIFIoYSxiLGMpe2lmKG0uYWNjZXB0RGF0YShhKSl7dmFyIGQsZSxmPWEubm9kZVR5cGUsZz1mP20uY2FjaGU6YSxoPWY/YVttLmV4cGFuZG9dOm0uZXhwYW5kbztpZihnW2hdKXtpZihiJiYoZD1jP2dbaF06Z1toXS5kYXRhKSl7bS5pc0FycmF5KGIpP2I9Yi5jb25jYXQobS5tYXAoYixtLmNhbWVsQ2FzZSkpOmIgaW4gZD9iPVtiXTooYj1tLmNhbWVsQ2FzZShiKSxiPWIgaW4gZD9bYl06Yi5zcGxpdCgiICIpKSxlPWIubGVuZ3RoO3doaWxlKGUtLSlkZWxldGUgZFtiW2VdXTtpZihjPyFQKGQpOiFtLmlzRW1wdHlPYmplY3QoZCkpcmV0dXJufShjfHwoZGVsZXRlIGdbaF0uZGF0YSxQKGdbaF0pKSkmJihmP20uY2xlYW5EYXRhKFthXSwhMCk6ay5kZWxldGVFeHBhbmRvfHxnIT1nLndpbmRvdz9kZWxldGUgZ1toXTpnW2hdPW51bGwpfX19bS5leHRlbmQoe2NhY2hlOnt9LG5vRGF0YTp7ImFwcGxldCAiOiEwLCJlbWJlZCAiOiEwLCJvYmplY3QgIjoiY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIn0saGFzRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gYT1hLm5vZGVUeXBlP20uY2FjaGVbYVttLmV4cGFuZG9dXTphW20uZXhwYW5kb10sISFhJiYhUChhKX0sZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIFEoYSxiLGMpfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFIoYSxiKX0sX2RhdGE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBRKGEsYixjLCEwKX0sX3JlbW92ZURhdGE6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gUihhLGIsITApfX0pLG0uZm4uZXh0ZW5kKHtkYXRhOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9dGhpc1swXSxnPWYmJmYuYXR0cmlidXRlcztpZih2b2lkIDA9PT1hKXtpZih0aGlzLmxlbmd0aCYmKGU9bS5kYXRhKGYpLDE9PT1mLm5vZGVUeXBlJiYhbS5fZGF0YShmLCJwYXJzZWRBdHRycyIpKSl7Yz1nLmxlbmd0aDt3aGlsZShjLS0pZ1tjXSYmKGQ9Z1tjXS5uYW1lLDA9PT1kLmluZGV4T2YoImRhdGEtIikmJihkPW0uY2FtZWxDYXNlKGQuc2xpY2UoNSkpLE8oZixkLGVbZF0pKSk7bS5fZGF0YShmLCJwYXJzZWRBdHRycyIsITApfXJldHVybiBlfXJldHVybiJvYmplY3QiPT10eXBlb2YgYT90aGlzLmVhY2goZnVuY3Rpb24oKXttLmRhdGEodGhpcyxhKX0pOmFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goZnVuY3Rpb24oKXttLmRhdGEodGhpcyxhLGIpfSk6Zj9PKGYsYSxtLmRhdGEoZixhKSk6dm9pZCAwfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXttLnJlbW92ZURhdGEodGhpcyxhKX0pfX0pLG0uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuIGE/KGI9KGJ8fCJmeCIpKyJxdWV1ZSIsZD1tLl9kYXRhKGEsYiksYyYmKCFkfHxtLmlzQXJyYXkoYyk/ZD1tLl9kYXRhKGEsYixtLm1ha2VBcnJheShjKSk6ZC5wdXNoKGMpKSxkfHxbXSk6dm9pZCAwfSxkZXF1ZXVlOmZ1bmN0aW9uKGEsYil7Yj1ifHwiZngiO3ZhciBjPW0ucXVldWUoYSxiKSxkPWMubGVuZ3RoLGU9Yy5zaGlmdCgpLGY9bS5fcXVldWVIb29rcyhhLGIpLGc9ZnVuY3Rpb24oKXttLmRlcXVldWUoYSxiKX07ImlucHJvZ3Jlc3MiPT09ZSYmKGU9Yy5zaGlmdCgpLGQtLSksZSYmKCJmeCI9PT1iJiZjLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxkZWxldGUgZi5zdG9wLGUuY2FsbChhLGcsZikpLCFkJiZmJiZmLmVtcHR5LmZpcmUoKX0sX3F1ZXVlSG9va3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iKyJxdWV1ZUhvb2tzIjtyZXR1cm4gbS5fZGF0YShhLGMpfHxtLl9kYXRhKGEsYyx7ZW1wdHk6bS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7bS5fcmVtb3ZlRGF0YShhLGIrInF1ZXVlIiksbS5fcmVtb3ZlRGF0YShhLGMpfSl9KX19KSxtLmZuLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oYSxiKXt2YXIgYz0yO3JldHVybiJzdHJpbmciIT10eXBlb2YgYSYmKGI9YSxhPSJmeCIsYy0tKSxhcmd1bWVudHMubGVuZ3RoPGM/bS5xdWV1ZSh0aGlzWzBdLGEpOnZvaWQgMD09PWI/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1tLnF1ZXVlKHRoaXMsYSxiKTttLl9xdWV1ZUhvb2tzKHRoaXMsYSksImZ4Ij09PWEmJiJpbnByb2dyZXNzIiE9PWNbMF0mJm0uZGVxdWV1ZSh0aGlzLGEpfSl9LGRlcXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe20uZGVxdWV1ZSh0aGlzLGEpfSl9LGNsZWFyUXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucXVldWUoYXx8ImZ4IixbXSl9LHByb21pc2U6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPTEsZT1tLkRlZmVycmVkKCksZj10aGlzLGc9dGhpcy5sZW5ndGgsaD1mdW5jdGlvbigpey0tZHx8ZS5yZXNvbHZlV2l0aChmLFtmXSl9OyJzdHJpbmciIT10eXBlb2YgYSYmKGI9YSxhPXZvaWQgMCksYT1hfHwiZngiO3doaWxlKGctLSljPW0uX2RhdGEoZltnXSxhKyJxdWV1ZUhvb2tzIiksYyYmYy5lbXB0eSYmKGQrKyxjLmVtcHR5LmFkZChoKSk7cmV0dXJuIGgoKSxlLnByb21pc2UoYil9fSk7dmFyIFM9L1srLV0/KD86XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2UsVD1bIlRvcCIsIlJpZ2h0IiwiQm90dG9tIiwiTGVmdCJdLFU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1ifHxhLCJub25lIj09PW0uY3NzKGEsImRpc3BsYXkiKXx8IW0uY29udGFpbnMoYS5vd25lckRvY3VtZW50LGEpfSxWPW0uYWNjZXNzPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3ZhciBoPTAsaT1hLmxlbmd0aCxqPW51bGw9PWM7aWYoIm9iamVjdCI9PT1tLnR5cGUoYykpe2U9ITA7Zm9yKGggaW4gYyltLmFjY2VzcyhhLGIsaCxjW2hdLCEwLGYsZyl9ZWxzZSBpZih2b2lkIDAhPT1kJiYoZT0hMCxtLmlzRnVuY3Rpb24oZCl8fChnPSEwKSxqJiYoZz8oYi5jYWxsKGEsZCksYj1udWxsKTooaj1iLGI9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBqLmNhbGwobShhKSxjKX0pKSxiKSlmb3IoO2k+aDtoKyspYihhW2hdLGMsZz9kOmQuY2FsbChhW2hdLGgsYihhW2hdLGMpKSk7cmV0dXJuIGU/YTpqP2IuY2FsbChhKTppP2IoYVswXSxjKTpmfSxXPS9eKD86Y2hlY2tib3h8cmFkaW8pJC9pOyFmdW5jdGlvbigpe3ZhciBhPXkuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksYz15LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihiLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixrLmxlYWRpbmdXaGl0ZXNwYWNlPTM9PT1iLmZpcnN0Q2hpbGQubm9kZVR5cGUsay50Ym9keT0hYi5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKS5sZW5ndGgsay5odG1sU2VyaWFsaXplPSEhYi5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxlbmd0aCxrLmh0bWw1Q2xvbmU9Ijw6bmF2PjwvOm5hdj4iIT09eS5jcmVhdGVFbGVtZW50KCJuYXYiKS5jbG9uZU5vZGUoITApLm91dGVySFRNTCxhLnR5cGU9ImNoZWNrYm94IixhLmNoZWNrZWQ9ITAsYy5hcHBlbmRDaGlsZChhKSxrLmFwcGVuZENoZWNrZWQ9YS5jaGVja2VkLGIuaW5uZXJIVE1MPSI8dGV4dGFyZWE+eDwvdGV4dGFyZWE+IixrLm5vQ2xvbmVDaGVja2VkPSEhYi5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5kZWZhdWx0VmFsdWUsYy5hcHBlbmRDaGlsZChiKSxiLmlubmVySFRNTD0iPGlucHV0IHR5cGU9J3JhZGlvJyBjaGVja2VkPSdjaGVja2VkJyBuYW1lPSd0Jy8+IixrLmNoZWNrQ2xvbmU9Yi5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsay5ub0Nsb25lRXZlbnQ9ITAsYi5hdHRhY2hFdmVudCYmKGIuYXR0YWNoRXZlbnQoIm9uY2xpY2siLGZ1bmN0aW9uKCl7ay5ub0Nsb25lRXZlbnQ9ITF9KSxiLmNsb25lTm9kZSghMCkuY2xpY2soKSksbnVsbD09ay5kZWxldGVFeHBhbmRvKXtrLmRlbGV0ZUV4cGFuZG89ITA7dHJ5e2RlbGV0ZSBiLnRlc3R9Y2F0Y2goZCl7ay5kZWxldGVFeHBhbmRvPSExfX19KCksZnVuY3Rpb24oKXt2YXIgYixjLGQ9eS5jcmVhdGVFbGVtZW50KCJkaXYiKTtmb3IoYiBpbntzdWJtaXQ6ITAsY2hhbmdlOiEwLGZvY3VzaW46ITB9KWM9Im9uIitiLChrW2IrIkJ1YmJsZXMiXT1jIGluIGEpfHwoZC5zZXRBdHRyaWJ1dGUoYywidCIpLGtbYisiQnViYmxlcyJdPWQuYXR0cmlidXRlc1tjXS5leHBhbmRvPT09ITEpO2Q9bnVsbH0oKTt2YXIgWD0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYSkkL2ksWT0vXmtleS8sWj0vXig/Om1vdXNlfHBvaW50ZXJ8Y29udGV4dG1lbnUpfGNsaWNrLywkPS9eKD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLyxfPS9eKFteLl0qKSg/OlwuKC4rKXwpJC87ZnVuY3Rpb24gYWIoKXtyZXR1cm4hMH1mdW5jdGlvbiBiYigpe3JldHVybiExfWZ1bmN0aW9uIGNiKCl7dHJ5e3JldHVybiB5LmFjdGl2ZUVsZW1lbnR9Y2F0Y2goYSl7fX1tLmV2ZW50PXtnbG9iYWw6e30sYWRkOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbixvLHAscSxyPW0uX2RhdGEoYSk7aWYocil7Yy5oYW5kbGVyJiYoaT1jLGM9aS5oYW5kbGVyLGU9aS5zZWxlY3RvciksYy5ndWlkfHwoYy5ndWlkPW0uZ3VpZCsrKSwoZz1yLmV2ZW50cyl8fChnPXIuZXZlbnRzPXt9KSwoaz1yLmhhbmRsZSl8fChrPXIuaGFuZGxlPWZ1bmN0aW9uKGEpe3JldHVybiB0eXBlb2YgbT09PUt8fGEmJm0uZXZlbnQudHJpZ2dlcmVkPT09YS50eXBlP3ZvaWQgMDptLmV2ZW50LmRpc3BhdGNoLmFwcGx5KGsuZWxlbSxhcmd1bWVudHMpfSxrLmVsZW09YSksYj0oYnx8IiIpLm1hdGNoKEUpfHxbIiJdLGg9Yi5sZW5ndGg7d2hpbGUoaC0tKWY9Xy5leGVjKGJbaF0pfHxbXSxvPXE9ZlsxXSxwPShmWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksbyYmKGo9bS5ldmVudC5zcGVjaWFsW29dfHx7fSxvPShlP2ouZGVsZWdhdGVUeXBlOmouYmluZFR5cGUpfHxvLGo9bS5ldmVudC5zcGVjaWFsW29dfHx7fSxsPW0uZXh0ZW5kKHt0eXBlOm8sb3JpZ1R5cGU6cSxkYXRhOmQsaGFuZGxlcjpjLGd1aWQ6Yy5ndWlkLHNlbGVjdG9yOmUsbmVlZHNDb250ZXh0OmUmJm0uZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdChlKSxuYW1lc3BhY2U6cC5qb2luKCIuIil9LGkpLChuPWdbb10pfHwobj1nW29dPVtdLG4uZGVsZWdhdGVDb3VudD0wLGouc2V0dXAmJmouc2V0dXAuY2FsbChhLGQscCxrKSE9PSExfHwoYS5hZGRFdmVudExpc3RlbmVyP2EuYWRkRXZlbnRMaXN0ZW5lcihvLGssITEpOmEuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoIm9uIitvLGspKSksai5hZGQmJihqLmFkZC5jYWxsKGEsbCksbC5oYW5kbGVyLmd1aWR8fChsLmhhbmRsZXIuZ3VpZD1jLmd1aWQpKSxlP24uc3BsaWNlKG4uZGVsZWdhdGVDb3VudCsrLDAsbCk6bi5wdXNoKGwpLG0uZXZlbnQuZ2xvYmFsW29dPSEwKTthPW51bGx9fSxyZW1vdmU6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZixnLGgsaSxqLGssbCxuLG8scCxxLHI9bS5oYXNEYXRhKGEpJiZtLl9kYXRhKGEpO2lmKHImJihrPXIuZXZlbnRzKSl7Yj0oYnx8IiIpLm1hdGNoKEUpfHxbIiJdLGo9Yi5sZW5ndGg7d2hpbGUoai0tKWlmKGg9Xy5leGVjKGJbal0pfHxbXSxvPXE9aFsxXSxwPShoWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksbyl7bD1tLmV2ZW50LnNwZWNpYWxbb118fHt9LG89KGQ/bC5kZWxlZ2F0ZVR5cGU6bC5iaW5kVHlwZSl8fG8sbj1rW29dfHxbXSxoPWhbMl0mJm5ldyBSZWdFeHAoIihefFxcLikiK3Auam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIiksaT1mPW4ubGVuZ3RoO3doaWxlKGYtLSlnPW5bZl0sIWUmJnEhPT1nLm9yaWdUeXBlfHxjJiZjLmd1aWQhPT1nLmd1aWR8fGgmJiFoLnRlc3QoZy5uYW1lc3BhY2UpfHxkJiZkIT09Zy5zZWxlY3RvciYmKCIqKiIhPT1kfHwhZy5zZWxlY3Rvcil8fChuLnNwbGljZShmLDEpLGcuc2VsZWN0b3ImJm4uZGVsZWdhdGVDb3VudC0tLGwucmVtb3ZlJiZsLnJlbW92ZS5jYWxsKGEsZykpO2kmJiFuLmxlbmd0aCYmKGwudGVhcmRvd24mJmwudGVhcmRvd24uY2FsbChhLHAsci5oYW5kbGUpIT09ITF8fG0ucmVtb3ZlRXZlbnQoYSxvLHIuaGFuZGxlKSxkZWxldGUga1tvXSl9ZWxzZSBmb3IobyBpbiBrKW0uZXZlbnQucmVtb3ZlKGEsbytiW2pdLGMsZCwhMCk7bS5pc0VtcHR5T2JqZWN0KGspJiYoZGVsZXRlIHIuaGFuZGxlLG0uX3JlbW92ZURhdGEoYSwiZXZlbnRzIikpfX0sdHJpZ2dlcjpmdW5jdGlvbihiLGMsZCxlKXt2YXIgZixnLGgsaSxrLGwsbixvPVtkfHx5XSxwPWouY2FsbChiLCJ0eXBlIik/Yi50eXBlOmIscT1qLmNhbGwoYiwibmFtZXNwYWNlIik/Yi5uYW1lc3BhY2Uuc3BsaXQoIi4iKTpbXTtpZihoPWw9ZD1kfHx5LDMhPT1kLm5vZGVUeXBlJiY4IT09ZC5ub2RlVHlwZSYmISQudGVzdChwK20uZXZlbnQudHJpZ2dlcmVkKSYmKHAuaW5kZXhPZigiLiIpPj0wJiYocT1wLnNwbGl0KCIuIikscD1xLnNoaWZ0KCkscS5zb3J0KCkpLGc9cC5pbmRleE9mKCI6Iik8MCYmIm9uIitwLGI9YlttLmV4cGFuZG9dP2I6bmV3IG0uRXZlbnQocCwib2JqZWN0Ij09dHlwZW9mIGImJmIpLGIuaXNUcmlnZ2VyPWU/MjozLGIubmFtZXNwYWNlPXEuam9pbigiLiIpLGIubmFtZXNwYWNlX3JlPWIubmFtZXNwYWNlP25ldyBSZWdFeHAoIihefFxcLikiK3Euam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIik6bnVsbCxiLnJlc3VsdD12b2lkIDAsYi50YXJnZXR8fChiLnRhcmdldD1kKSxjPW51bGw9PWM/W2JdOm0ubWFrZUFycmF5KGMsW2JdKSxrPW0uZXZlbnQuc3BlY2lhbFtwXXx8e30sZXx8IWsudHJpZ2dlcnx8ay50cmlnZ2VyLmFwcGx5KGQsYykhPT0hMSkpe2lmKCFlJiYhay5ub0J1YmJsZSYmIW0uaXNXaW5kb3coZCkpe2ZvcihpPWsuZGVsZWdhdGVUeXBlfHxwLCQudGVzdChpK3ApfHwoaD1oLnBhcmVudE5vZGUpO2g7aD1oLnBhcmVudE5vZGUpby5wdXNoKGgpLGw9aDtsPT09KGQub3duZXJEb2N1bWVudHx8eSkmJm8ucHVzaChsLmRlZmF1bHRWaWV3fHxsLnBhcmVudFdpbmRvd3x8YSl9bj0wO3doaWxlKChoPW9bbisrXSkmJiFiLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpYi50eXBlPW4+MT9pOmsuYmluZFR5cGV8fHAsZj0obS5fZGF0YShoLCJldmVudHMiKXx8e30pW2IudHlwZV0mJm0uX2RhdGEoaCwiaGFuZGxlIiksZiYmZi5hcHBseShoLGMpLGY9ZyYmaFtnXSxmJiZmLmFwcGx5JiZtLmFjY2VwdERhdGEoaCkmJihiLnJlc3VsdD1mLmFwcGx5KGgsYyksYi5yZXN1bHQ9PT0hMSYmYi5wcmV2ZW50RGVmYXVsdCgpKTtpZihiLnR5cGU9cCwhZSYmIWIuaXNEZWZhdWx0UHJldmVudGVkKCkmJighay5fZGVmYXVsdHx8ay5fZGVmYXVsdC5hcHBseShvLnBvcCgpLGMpPT09ITEpJiZtLmFjY2VwdERhdGEoZCkmJmcmJmRbcF0mJiFtLmlzV2luZG93KGQpKXtsPWRbZ10sbCYmKGRbZ109bnVsbCksbS5ldmVudC50cmlnZ2VyZWQ9cDt0cnl7ZFtwXSgpfWNhdGNoKHIpe31tLmV2ZW50LnRyaWdnZXJlZD12b2lkIDAsbCYmKGRbZ109bCl9cmV0dXJuIGIucmVzdWx0fX0sZGlzcGF0Y2g6ZnVuY3Rpb24oYSl7YT1tLmV2ZW50LmZpeChhKTt2YXIgYixjLGUsZixnLGg9W10saT1kLmNhbGwoYXJndW1lbnRzKSxqPShtLl9kYXRhKHRoaXMsImV2ZW50cyIpfHx7fSlbYS50eXBlXXx8W10saz1tLmV2ZW50LnNwZWNpYWxbYS50eXBlXXx8e307aWYoaVswXT1hLGEuZGVsZWdhdGVUYXJnZXQ9dGhpcywhay5wcmVEaXNwYXRjaHx8ay5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsYSkhPT0hMSl7aD1tLmV2ZW50LmhhbmRsZXJzLmNhbGwodGhpcyxhLGopLGI9MDt3aGlsZSgoZj1oW2IrK10pJiYhYS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKXthLmN1cnJlbnRUYXJnZXQ9Zi5lbGVtLGc9MDt3aGlsZSgoZT1mLmhhbmRsZXJzW2crK10pJiYhYS5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpKSghYS5uYW1lc3BhY2VfcmV8fGEubmFtZXNwYWNlX3JlLnRlc3QoZS5uYW1lc3BhY2UpKSYmKGEuaGFuZGxlT2JqPWUsYS5kYXRhPWUuZGF0YSxjPSgobS5ldmVudC5zcGVjaWFsW2Uub3JpZ1R5cGVdfHx7fSkuaGFuZGxlfHxlLmhhbmRsZXIpLmFwcGx5KGYuZWxlbSxpKSx2b2lkIDAhPT1jJiYoYS5yZXN1bHQ9Yyk9PT0hMSYmKGEucHJldmVudERlZmF1bHQoKSxhLnN0b3BQcm9wYWdhdGlvbigpKSl9cmV0dXJuIGsucG9zdERpc3BhdGNoJiZrLnBvc3REaXNwYXRjaC5jYWxsKHRoaXMsYSksYS5yZXN1bHR9fSxoYW5kbGVyczpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmLGc9W10saD1iLmRlbGVnYXRlQ291bnQsaT1hLnRhcmdldDtpZihoJiZpLm5vZGVUeXBlJiYoIWEuYnV0dG9ufHwiY2xpY2siIT09YS50eXBlKSlmb3IoO2khPXRoaXM7aT1pLnBhcmVudE5vZGV8fHRoaXMpaWYoMT09PWkubm9kZVR5cGUmJihpLmRpc2FibGVkIT09ITB8fCJjbGljayIhPT1hLnR5cGUpKXtmb3IoZT1bXSxmPTA7aD5mO2YrKylkPWJbZl0sYz1kLnNlbGVjdG9yKyIgIix2b2lkIDA9PT1lW2NdJiYoZVtjXT1kLm5lZWRzQ29udGV4dD9tKGMsdGhpcykuaW5kZXgoaSk+PTA6bS5maW5kKGMsdGhpcyxudWxsLFtpXSkubGVuZ3RoKSxlW2NdJiZlLnB1c2goZCk7ZS5sZW5ndGgmJmcucHVzaCh7ZWxlbTppLGhhbmRsZXJzOmV9KX1yZXR1cm4gaDxiLmxlbmd0aCYmZy5wdXNoKHtlbGVtOnRoaXMsaGFuZGxlcnM6Yi5zbGljZShoKX0pLGd9LGZpeDpmdW5jdGlvbihhKXtpZihhW20uZXhwYW5kb10pcmV0dXJuIGE7dmFyIGIsYyxkLGU9YS50eXBlLGY9YSxnPXRoaXMuZml4SG9va3NbZV07Z3x8KHRoaXMuZml4SG9va3NbZV09Zz1aLnRlc3QoZSk/dGhpcy5tb3VzZUhvb2tzOlkudGVzdChlKT90aGlzLmtleUhvb2tzOnt9KSxkPWcucHJvcHM/dGhpcy5wcm9wcy5jb25jYXQoZy5wcm9wcyk6dGhpcy5wcm9wcyxhPW5ldyBtLkV2ZW50KGYpLGI9ZC5sZW5ndGg7d2hpbGUoYi0tKWM9ZFtiXSxhW2NdPWZbY107cmV0dXJuIGEudGFyZ2V0fHwoYS50YXJnZXQ9Zi5zcmNFbGVtZW50fHx5KSwzPT09YS50YXJnZXQubm9kZVR5cGUmJihhLnRhcmdldD1hLnRhcmdldC5wYXJlbnROb2RlKSxhLm1ldGFLZXk9ISFhLm1ldGFLZXksZy5maWx0ZXI/Zy5maWx0ZXIoYSxmKTphfSxwcm9wczoiYWx0S2V5IGJ1YmJsZXMgY2FuY2VsYWJsZSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZXZlbnRQaGFzZSBtZXRhS2V5IHJlbGF0ZWRUYXJnZXQgc2hpZnRLZXkgdGFyZ2V0IHRpbWVTdGFtcCB2aWV3IHdoaWNoIi5zcGxpdCgiICIpLGZpeEhvb2tzOnt9LGtleUhvb2tzOntwcm9wczoiY2hhciBjaGFyQ29kZSBrZXkga2V5Q29kZSIuc3BsaXQoIiAiKSxmaWx0ZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbnVsbD09YS53aGljaCYmKGEud2hpY2g9bnVsbCE9Yi5jaGFyQ29kZT9iLmNoYXJDb2RlOmIua2V5Q29kZSksYX19LG1vdXNlSG9va3M6e3Byb3BzOiJidXR0b24gYnV0dG9ucyBjbGllbnRYIGNsaWVudFkgZnJvbUVsZW1lbnQgb2Zmc2V0WCBvZmZzZXRZIHBhZ2VYIHBhZ2VZIHNjcmVlblggc2NyZWVuWSB0b0VsZW1lbnQiLnNwbGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9Yi5idXR0b24sZz1iLmZyb21FbGVtZW50O3JldHVybiBudWxsPT1hLnBhZ2VYJiZudWxsIT1iLmNsaWVudFgmJihkPWEudGFyZ2V0Lm93bmVyRG9jdW1lbnR8fHksZT1kLmRvY3VtZW50RWxlbWVudCxjPWQuYm9keSxhLnBhZ2VYPWIuY2xpZW50WCsoZSYmZS5zY3JvbGxMZWZ0fHxjJiZjLnNjcm9sbExlZnR8fDApLShlJiZlLmNsaWVudExlZnR8fGMmJmMuY2xpZW50TGVmdHx8MCksYS5wYWdlWT1iLmNsaWVudFkrKGUmJmUuc2Nyb2xsVG9wfHxjJiZjLnNjcm9sbFRvcHx8MCktKGUmJmUuY2xpZW50VG9wfHxjJiZjLmNsaWVudFRvcHx8MCkpLCFhLnJlbGF0ZWRUYXJnZXQmJmcmJihhLnJlbGF0ZWRUYXJnZXQ9Zz09PWEudGFyZ2V0P2IudG9FbGVtZW50OmcpLGEud2hpY2h8fHZvaWQgMD09PWZ8fChhLndoaWNoPTEmZj8xOjImZj8zOjQmZj8yOjApLGF9fSxzcGVjaWFsOntsb2FkOntub0J1YmJsZTohMH0sZm9jdXM6e3RyaWdnZXI6ZnVuY3Rpb24oKXtpZih0aGlzIT09Y2IoKSYmdGhpcy5mb2N1cyl0cnl7cmV0dXJuIHRoaXMuZm9jdXMoKSwhMX1jYXRjaChhKXt9fSxkZWxlZ2F0ZVR5cGU6ImZvY3VzaW4ifSxibHVyOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXM9PT1jYigpJiZ0aGlzLmJsdXI/KHRoaXMuYmx1cigpLCExKTp2b2lkIDB9LGRlbGVnYXRlVHlwZToiZm9jdXNvdXQifSxjbGljazp7dHJpZ2dlcjpmdW5jdGlvbigpe3JldHVybiBtLm5vZGVOYW1lKHRoaXMsImlucHV0IikmJiJjaGVja2JveCI9PT10aGlzLnR5cGUmJnRoaXMuY2xpY2s/KHRoaXMuY2xpY2soKSwhMSk6dm9pZCAwfSxfZGVmYXVsdDpmdW5jdGlvbihhKXtyZXR1cm4gbS5ub2RlTmFtZShhLnRhcmdldCwiYSIpfX0sYmVmb3JldW5sb2FkOntwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oYSl7dm9pZCAwIT09YS5yZXN1bHQmJmEub3JpZ2luYWxFdmVudCYmKGEub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZT1hLnJlc3VsdCl9fX0sc2ltdWxhdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9bS5leHRlbmQobmV3IG0uRXZlbnQsYyx7dHlwZTphLGlzU2ltdWxhdGVkOiEwLG9yaWdpbmFsRXZlbnQ6e319KTtkP20uZXZlbnQudHJpZ2dlcihlLG51bGwsYik6bS5ldmVudC5kaXNwYXRjaC5jYWxsKGIsZSksZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmYy5wcmV2ZW50RGVmYXVsdCgpfX0sbS5yZW1vdmVFdmVudD15LnJlbW92ZUV2ZW50TGlzdGVuZXI/ZnVuY3Rpb24oYSxiLGMpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYywhMSl9OmZ1bmN0aW9uKGEsYixjKXt2YXIgZD0ib24iK2I7YS5kZXRhY2hFdmVudCYmKHR5cGVvZiBhW2RdPT09SyYmKGFbZF09bnVsbCksYS5kZXRhY2hFdmVudChkLGMpKX0sbS5FdmVudD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgbS5FdmVudD8oYSYmYS50eXBlPyh0aGlzLm9yaWdpbmFsRXZlbnQ9YSx0aGlzLnR5cGU9YS50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEuZGVmYXVsdFByZXZlbnRlZHx8dm9pZCAwPT09YS5kZWZhdWx0UHJldmVudGVkJiZhLnJldHVyblZhbHVlPT09ITE/YWI6YmIpOnRoaXMudHlwZT1hLGImJm0uZXh0ZW5kKHRoaXMsYiksdGhpcy50aW1lU3RhbXA9YSYmYS50aW1lU3RhbXB8fG0ubm93KCksdm9pZCh0aGlzW20uZXhwYW5kb109ITApKTpuZXcgbS5FdmVudChhLGIpfSxtLkV2ZW50LnByb3RvdHlwZT17aXNEZWZhdWx0UHJldmVudGVkOmJiLGlzUHJvcGFnYXRpb25TdG9wcGVkOmJiLGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOmJiLHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPWFiLGEmJihhLnByZXZlbnREZWZhdWx0P2EucHJldmVudERlZmF1bHQoKTphLnJldHVyblZhbHVlPSExKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9YWIsYSYmKGEuc3RvcFByb3BhZ2F0aW9uJiZhLnN0b3BQcm9wYWdhdGlvbigpLGEuY2FuY2VsQnViYmxlPSEwKX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9YWIsYSYmYS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24mJmEuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksdGhpcy5zdG9wUHJvcGFnYXRpb24oKX19LG0uZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCIscG9pbnRlcmVudGVyOiJwb2ludGVyb3ZlciIscG9pbnRlcmxlYXZlOiJwb2ludGVyb3V0In0sZnVuY3Rpb24oYSxiKXttLmV2ZW50LnNwZWNpYWxbYV09e2RlbGVnYXRlVHlwZTpiLGJpbmRUeXBlOmIsaGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBjLGQ9dGhpcyxlPWEucmVsYXRlZFRhcmdldCxmPWEuaGFuZGxlT2JqO3JldHVybighZXx8ZSE9PWQmJiFtLmNvbnRhaW5zKGQsZSkpJiYoYS50eXBlPWYub3JpZ1R5cGUsYz1mLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGEudHlwZT1iKSxjfX19KSxrLnN1Ym1pdEJ1YmJsZXN8fChtLmV2ZW50LnNwZWNpYWwuc3VibWl0PXtzZXR1cDpmdW5jdGlvbigpe3JldHVybiBtLm5vZGVOYW1lKHRoaXMsImZvcm0iKT8hMTp2b2lkIG0uZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9zdWJtaXQga2V5cHJlc3MuX3N1Ym1pdCIsZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQsYz1tLm5vZGVOYW1lKGIsImlucHV0Iil8fG0ubm9kZU5hbWUoYiwiYnV0dG9uIik/Yi5mb3JtOnZvaWQgMDtjJiYhbS5fZGF0YShjLCJzdWJtaXRCdWJibGVzIikmJihtLmV2ZW50LmFkZChjLCJzdWJtaXQuX3N1Ym1pdCIsZnVuY3Rpb24oYSl7YS5fc3VibWl0X2J1YmJsZT0hMH0pLG0uX2RhdGEoYywic3VibWl0QnViYmxlcyIsITApKX0pfSxwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oYSl7YS5fc3VibWl0X2J1YmJsZSYmKGRlbGV0ZSBhLl9zdWJtaXRfYnViYmxlLHRoaXMucGFyZW50Tm9kZSYmIWEuaXNUcmlnZ2VyJiZtLmV2ZW50LnNpbXVsYXRlKCJzdWJtaXQiLHRoaXMucGFyZW50Tm9kZSxhLCEwKSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7cmV0dXJuIG0ubm9kZU5hbWUodGhpcywiZm9ybSIpPyExOnZvaWQgbS5ldmVudC5yZW1vdmUodGhpcywiLl9zdWJtaXQiKX19KSxrLmNoYW5nZUJ1YmJsZXN8fChtLmV2ZW50LnNwZWNpYWwuY2hhbmdlPXtzZXR1cDpmdW5jdGlvbigpe3JldHVybiBYLnRlc3QodGhpcy5ub2RlTmFtZSk/KCgiY2hlY2tib3giPT09dGhpcy50eXBlfHwicmFkaW8iPT09dGhpcy50eXBlKSYmKG0uZXZlbnQuYWRkKHRoaXMsInByb3BlcnR5Y2hhbmdlLl9jaGFuZ2UiLGZ1bmN0aW9uKGEpeyJjaGVja2VkIj09PWEub3JpZ2luYWxFdmVudC5wcm9wZXJ0eU5hbWUmJih0aGlzLl9qdXN0X2NoYW5nZWQ9ITApfSksbS5ldmVudC5hZGQodGhpcywiY2xpY2suX2NoYW5nZSIsZnVuY3Rpb24oYSl7dGhpcy5fanVzdF9jaGFuZ2VkJiYhYS5pc1RyaWdnZXImJih0aGlzLl9qdXN0X2NoYW5nZWQ9ITEpLG0uZXZlbnQuc2ltdWxhdGUoImNoYW5nZSIsdGhpcyxhLCEwKX0pKSwhMSk6dm9pZCBtLmV2ZW50LmFkZCh0aGlzLCJiZWZvcmVhY3RpdmF0ZS5fY2hhbmdlIixmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldDtYLnRlc3QoYi5ub2RlTmFtZSkmJiFtLl9kYXRhKGIsImNoYW5nZUJ1YmJsZXMiKSYmKG0uZXZlbnQuYWRkKGIsImNoYW5nZS5fY2hhbmdlIixmdW5jdGlvbihhKXshdGhpcy5wYXJlbnROb2RlfHxhLmlzU2ltdWxhdGVkfHxhLmlzVHJpZ2dlcnx8bS5ldmVudC5zaW11bGF0ZSgiY2hhbmdlIix0aGlzLnBhcmVudE5vZGUsYSwhMCl9KSxtLl9kYXRhKGIsImNoYW5nZUJ1YmJsZXMiLCEwKSl9KX0saGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBiPWEudGFyZ2V0O3JldHVybiB0aGlzIT09Ynx8YS5pc1NpbXVsYXRlZHx8YS5pc1RyaWdnZXJ8fCJyYWRpbyIhPT1iLnR5cGUmJiJjaGVja2JveCIhPT1iLnR5cGU/YS5oYW5kbGVPYmouaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dm9pZCAwfSx0ZWFyZG93bjpmdW5jdGlvbigpe3JldHVybiBtLmV2ZW50LnJlbW92ZSh0aGlzLCIuX2NoYW5nZSIpLCFYLnRlc3QodGhpcy5ub2RlTmFtZSl9fSksay5mb2N1c2luQnViYmxlc3x8bS5lYWNoKHtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPWZ1bmN0aW9uKGEpe20uZXZlbnQuc2ltdWxhdGUoYixhLnRhcmdldCxtLmV2ZW50LmZpeChhKSwhMCl9O20uZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMsZT1tLl9kYXRhKGQsYik7ZXx8ZC5hZGRFdmVudExpc3RlbmVyKGEsYywhMCksbS5fZGF0YShkLGIsKGV8fDApKzEpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3ZhciBkPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcyxlPW0uX2RhdGEoZCxiKS0xO2U/bS5fZGF0YShkLGIsZSk6KGQucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGMsITApLG0uX3JlbW92ZURhdGEoZCxiKSl9fX0pLG0uZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmLGc7aWYoIm9iamVjdCI9PXR5cGVvZiBhKXsic3RyaW5nIiE9dHlwZW9mIGImJihjPWN8fGIsYj12b2lkIDApO2ZvcihmIGluIGEpdGhpcy5vbihmLGIsYyxhW2ZdLGUpO3JldHVybiB0aGlzfWlmKG51bGw9PWMmJm51bGw9PWQ/KGQ9YixjPWI9dm9pZCAwKTpudWxsPT1kJiYoInN0cmluZyI9PXR5cGVvZiBiPyhkPWMsYz12b2lkIDApOihkPWMsYz1iLGI9dm9pZCAwKSksZD09PSExKWQ9YmI7ZWxzZSBpZighZClyZXR1cm4gdGhpcztyZXR1cm4gMT09PWUmJihnPWQsZD1mdW5jdGlvbihhKXtyZXR1cm4gbSgpLm9mZihhKSxnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZC5ndWlkPWcuZ3VpZHx8KGcuZ3VpZD1tLmd1aWQrKykpLHRoaXMuZWFjaChmdW5jdGlvbigpe20uZXZlbnQuYWRkKHRoaXMsYSxkLGMsYil9KX0sb25lOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGEsYixjLGQsMSl9LG9mZjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZTtpZihhJiZhLnByZXZlbnREZWZhdWx0JiZhLmhhbmRsZU9iailyZXR1cm4gZD1hLmhhbmRsZU9iaixtKGEuZGVsZWdhdGVUYXJnZXQpLm9mZihkLm5hbWVzcGFjZT9kLm9yaWdUeXBlKyIuIitkLm5hbWVzcGFjZTpkLm9yaWdUeXBlLGQuc2VsZWN0b3IsZC5oYW5kbGVyKSx0aGlzO2lmKCJvYmplY3QiPT10eXBlb2YgYSl7Zm9yKGUgaW4gYSl0aGlzLm9mZihlLGIsYVtlXSk7cmV0dXJuIHRoaXN9cmV0dXJuKGI9PT0hMXx8ImZ1bmN0aW9uIj09dHlwZW9mIGIpJiYoYz1iLGI9dm9pZCAwKSxjPT09ITEmJihjPWJiKSx0aGlzLmVhY2goZnVuY3Rpb24oKXttLmV2ZW50LnJlbW92ZSh0aGlzLGEsYyxiKX0pfSx0cmlnZ2VyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe20uZXZlbnQudHJpZ2dlcihhLGIsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzWzBdO3JldHVybiBjP20uZXZlbnQudHJpZ2dlcihhLGIsYywhMCk6dm9pZCAwfX0pO2Z1bmN0aW9uIGRiKGEpe3ZhciBiPWViLnNwbGl0KCJ8IiksYz1hLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihjLmNyZWF0ZUVsZW1lbnQpd2hpbGUoYi5sZW5ndGgpYy5jcmVhdGVFbGVtZW50KGIucG9wKCkpO3JldHVybiBjfXZhciBlYj0iYWJicnxhcnRpY2xlfGFzaWRlfGF1ZGlvfGJkaXxjYW52YXN8ZGF0YXxkYXRhbGlzdHxkZXRhaWxzfGZpZ2NhcHRpb258ZmlndXJlfGZvb3RlcnxoZWFkZXJ8aGdyb3VwfG1hcmt8bWV0ZXJ8bmF2fG91dHB1dHxwcm9ncmVzc3xzZWN0aW9ufHN1bW1hcnl8dGltZXx2aWRlbyIsZmI9LyBqUXVlcnlcZCs9Iig/Om51bGx8XGQrKSIvZyxnYj1uZXcgUmVnRXhwKCI8KD86IitlYisiKVtcXHMvPl0iLCJpIiksaGI9L15ccysvLGliPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFtcdzpdKylbXj5dKilcLz4vZ2ksamI9LzwoW1x3Ol0rKS8sa2I9Lzx0Ym9keS9pLGxiPS88fCYjP1x3KzsvLG1iPS88KD86c2NyaXB0fHN0eWxlfGxpbmspL2ksbmI9L2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksb2I9L14kfFwvKD86amF2YXxlY21hKXNjcmlwdC9pLHBiPS9edHJ1ZVwvKC4qKS8scWI9L15ccyo8ISg/OlxbQ0RBVEFcW3wtLSl8KD86XF1cXXwtLSk+XHMqJC9nLHJiPXtvcHRpb246WzEsIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXSxsZWdlbmQ6WzEsIjxmaWVsZHNldD4iLCI8L2ZpZWxkc2V0PiJdLGFyZWE6WzEsIjxtYXA+IiwiPC9tYXA+Il0scGFyYW06WzEsIjxvYmplY3Q+IiwiPC9vYmplY3Q+Il0sdGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSxjb2w6WzIsIjx0YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLHRkOlszLCI8dGFibGU+PHRib2R5Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSxfZGVmYXVsdDprLmh0bWxTZXJpYWxpemU/WzAsIiIsIiJdOlsxLCJYPGRpdj4iLCI8L2Rpdj4iXX0sc2I9ZGIoeSksdGI9c2IuYXBwZW5kQ2hpbGQoeS5jcmVhdGVFbGVtZW50KCJkaXYiKSk7cmIub3B0Z3JvdXA9cmIub3B0aW9uLHJiLnRib2R5PXJiLnRmb290PXJiLmNvbGdyb3VwPXJiLmNhcHRpb249cmIudGhlYWQscmIudGg9cmIudGQ7ZnVuY3Rpb24gdWIoYSxiKXt2YXIgYyxkLGU9MCxmPXR5cGVvZiBhLmdldEVsZW1lbnRzQnlUYWdOYW1lIT09Sz9hLmdldEVsZW1lbnRzQnlUYWdOYW1lKGJ8fCIqIik6dHlwZW9mIGEucXVlcnlTZWxlY3RvckFsbCE9PUs/YS5xdWVyeVNlbGVjdG9yQWxsKGJ8fCIqIik6dm9pZCAwO2lmKCFmKWZvcihmPVtdLGM9YS5jaGlsZE5vZGVzfHxhO251bGwhPShkPWNbZV0pO2UrKykhYnx8bS5ub2RlTmFtZShkLGIpP2YucHVzaChkKTptLm1lcmdlKGYsdWIoZCxiKSk7cmV0dXJuIHZvaWQgMD09PWJ8fGImJm0ubm9kZU5hbWUoYSxiKT9tLm1lcmdlKFthXSxmKTpmfWZ1bmN0aW9uIHZiKGEpe1cudGVzdChhLnR5cGUpJiYoYS5kZWZhdWx0Q2hlY2tlZD1hLmNoZWNrZWQpfWZ1bmN0aW9uIHdiKGEsYil7cmV0dXJuIG0ubm9kZU5hbWUoYSwidGFibGUiKSYmbS5ub2RlTmFtZSgxMSE9PWIubm9kZVR5cGU/YjpiLmZpcnN0Q2hpbGQsInRyIik/YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKVswXXx8YS5hcHBlbmRDaGlsZChhLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGJvZHkiKSk6YX1mdW5jdGlvbiB4YihhKXtyZXR1cm4gYS50eXBlPShudWxsIT09bS5maW5kLmF0dHIoYSwidHlwZSIpKSsiLyIrYS50eXBlLGF9ZnVuY3Rpb24geWIoYSl7dmFyIGI9cGIuZXhlYyhhLnR5cGUpO3JldHVybiBiP2EudHlwZT1iWzFdOmEucmVtb3ZlQXR0cmlidXRlKCJ0eXBlIiksYX1mdW5jdGlvbiB6YihhLGIpe2Zvcih2YXIgYyxkPTA7bnVsbCE9KGM9YVtkXSk7ZCsrKW0uX2RhdGEoYywiZ2xvYmFsRXZhbCIsIWJ8fG0uX2RhdGEoYltkXSwiZ2xvYmFsRXZhbCIpKX1mdW5jdGlvbiBBYihhLGIpe2lmKDE9PT1iLm5vZGVUeXBlJiZtLmhhc0RhdGEoYSkpe3ZhciBjLGQsZSxmPW0uX2RhdGEoYSksZz1tLl9kYXRhKGIsZiksaD1mLmV2ZW50cztpZihoKXtkZWxldGUgZy5oYW5kbGUsZy5ldmVudHM9e307Zm9yKGMgaW4gaClmb3IoZD0wLGU9aFtjXS5sZW5ndGg7ZT5kO2QrKyltLmV2ZW50LmFkZChiLGMsaFtjXVtkXSl9Zy5kYXRhJiYoZy5kYXRhPW0uZXh0ZW5kKHt9LGcuZGF0YSkpfX1mdW5jdGlvbiBCYihhLGIpe3ZhciBjLGQsZTtpZigxPT09Yi5ub2RlVHlwZSl7aWYoYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksIWsubm9DbG9uZUV2ZW50JiZiW20uZXhwYW5kb10pe2U9bS5fZGF0YShiKTtmb3IoZCBpbiBlLmV2ZW50cyltLnJlbW92ZUV2ZW50KGIsZCxlLmhhbmRsZSk7Yi5yZW1vdmVBdHRyaWJ1dGUobS5leHBhbmRvKX0ic2NyaXB0Ij09PWMmJmIudGV4dCE9PWEudGV4dD8oeGIoYikudGV4dD1hLnRleHQseWIoYikpOiJvYmplY3QiPT09Yz8oYi5wYXJlbnROb2RlJiYoYi5vdXRlckhUTUw9YS5vdXRlckhUTUwpLGsuaHRtbDVDbG9uZSYmYS5pbm5lckhUTUwmJiFtLnRyaW0oYi5pbm5lckhUTUwpJiYoYi5pbm5lckhUTUw9YS5pbm5lckhUTUwpKToiaW5wdXQiPT09YyYmVy50ZXN0KGEudHlwZSk/KGIuZGVmYXVsdENoZWNrZWQ9Yi5jaGVja2VkPWEuY2hlY2tlZCxiLnZhbHVlIT09YS52YWx1ZSYmKGIudmFsdWU9YS52YWx1ZSkpOiJvcHRpb24iPT09Yz9iLmRlZmF1bHRTZWxlY3RlZD1iLnNlbGVjdGVkPWEuZGVmYXVsdFNlbGVjdGVkOigiaW5wdXQiPT09Y3x8InRleHRhcmVhIj09PWMpJiYoYi5kZWZhdWx0VmFsdWU9YS5kZWZhdWx0VmFsdWUpfX1tLmV4dGVuZCh7Y2xvbmU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGgsaT1tLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKTtpZihrLmh0bWw1Q2xvbmV8fG0uaXNYTUxEb2MoYSl8fCFnYi50ZXN0KCI8IithLm5vZGVOYW1lKyI+Iik/Zj1hLmNsb25lTm9kZSghMCk6KHRiLmlubmVySFRNTD1hLm91dGVySFRNTCx0Yi5yZW1vdmVDaGlsZChmPXRiLmZpcnN0Q2hpbGQpKSwhKGsubm9DbG9uZUV2ZW50JiZrLm5vQ2xvbmVDaGVja2VkfHwxIT09YS5ub2RlVHlwZSYmMTEhPT1hLm5vZGVUeXBlfHxtLmlzWE1MRG9jKGEpKSlmb3IoZD11YihmKSxoPXViKGEpLGc9MDtudWxsIT0oZT1oW2ddKTsrK2cpZFtnXSYmQmIoZSxkW2ddKTtpZihiKWlmKGMpZm9yKGg9aHx8dWIoYSksZD1kfHx1YihmKSxnPTA7bnVsbCE9KGU9aFtnXSk7ZysrKUFiKGUsZFtnXSk7ZWxzZSBBYihhLGYpO3JldHVybiBkPXViKGYsInNjcmlwdCIpLGQubGVuZ3RoPjAmJnpiKGQsIWkmJnViKGEsInNjcmlwdCIpKSxkPWg9ZT1udWxsLGZ9LGJ1aWxkRnJhZ21lbnQ6ZnVuY3Rpb24oYSxiLGMsZCl7Zm9yKHZhciBlLGYsZyxoLGksaixsLG49YS5sZW5ndGgsbz1kYihiKSxwPVtdLHE9MDtuPnE7cSsrKWlmKGY9YVtxXSxmfHwwPT09ZilpZigib2JqZWN0Ij09PW0udHlwZShmKSltLm1lcmdlKHAsZi5ub2RlVHlwZT9bZl06Zik7ZWxzZSBpZihsYi50ZXN0KGYpKXtoPWh8fG8uYXBwZW5kQ2hpbGQoYi5jcmVhdGVFbGVtZW50KCJkaXYiKSksaT0oamIuZXhlYyhmKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKSxsPXJiW2ldfHxyYi5fZGVmYXVsdCxoLmlubmVySFRNTD1sWzFdK2YucmVwbGFjZShpYiwiPCQxPjwvJDI+IikrbFsyXSxlPWxbMF07d2hpbGUoZS0tKWg9aC5sYXN0Q2hpbGQ7aWYoIWsubGVhZGluZ1doaXRlc3BhY2UmJmhiLnRlc3QoZikmJnAucHVzaChiLmNyZWF0ZVRleHROb2RlKGhiLmV4ZWMoZilbMF0pKSwhay50Ym9keSl7Zj0idGFibGUiIT09aXx8a2IudGVzdChmKT8iPHRhYmxlPiIhPT1sWzFdfHxrYi50ZXN0KGYpPzA6aDpoLmZpcnN0Q2hpbGQsZT1mJiZmLmNoaWxkTm9kZXMubGVuZ3RoO3doaWxlKGUtLSltLm5vZGVOYW1lKGo9Zi5jaGlsZE5vZGVzW2VdLCJ0Ym9keSIpJiYhai5jaGlsZE5vZGVzLmxlbmd0aCYmZi5yZW1vdmVDaGlsZChqKX1tLm1lcmdlKHAsaC5jaGlsZE5vZGVzKSxoLnRleHRDb250ZW50PSIiO3doaWxlKGguZmlyc3RDaGlsZCloLnJlbW92ZUNoaWxkKGguZmlyc3RDaGlsZCk7aD1vLmxhc3RDaGlsZH1lbHNlIHAucHVzaChiLmNyZWF0ZVRleHROb2RlKGYpKTtoJiZvLnJlbW92ZUNoaWxkKGgpLGsuYXBwZW5kQ2hlY2tlZHx8bS5ncmVwKHViKHAsImlucHV0IiksdmIpLHE9MDt3aGlsZShmPXBbcSsrXSlpZigoIWR8fC0xPT09bS5pbkFycmF5KGYsZCkpJiYoZz1tLmNvbnRhaW5zKGYub3duZXJEb2N1bWVudCxmKSxoPXViKG8uYXBwZW5kQ2hpbGQoZiksInNjcmlwdCIpLGcmJnpiKGgpLGMpKXtlPTA7d2hpbGUoZj1oW2UrK10pb2IudGVzdChmLnR5cGV8fCIiKSYmYy5wdXNoKGYpfXJldHVybiBoPW51bGwsb30sY2xlYW5EYXRhOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBkLGUsZixnLGg9MCxpPW0uZXhwYW5kbyxqPW0uY2FjaGUsbD1rLmRlbGV0ZUV4cGFuZG8sbj1tLmV2ZW50LnNwZWNpYWw7bnVsbCE9KGQ9YVtoXSk7aCsrKWlmKChifHxtLmFjY2VwdERhdGEoZCkpJiYoZj1kW2ldLGc9ZiYmaltmXSkpe2lmKGcuZXZlbnRzKWZvcihlIGluIGcuZXZlbnRzKW5bZV0/bS5ldmVudC5yZW1vdmUoZCxlKTptLnJlbW92ZUV2ZW50KGQsZSxnLmhhbmRsZSk7altmXSYmKGRlbGV0ZSBqW2ZdLGw/ZGVsZXRlIGRbaV06dHlwZW9mIGQucmVtb3ZlQXR0cmlidXRlIT09Sz9kLnJlbW92ZUF0dHJpYnV0ZShpKTpkW2ldPW51bGwsYy5wdXNoKGYpKX19fSksbS5mbi5leHRlbmQoe3RleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIFYodGhpcyxmdW5jdGlvbihhKXtyZXR1cm4gdm9pZCAwPT09YT9tLnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmFwcGVuZCgodGhpc1swXSYmdGhpc1swXS5vd25lckRvY3VtZW50fHx5KS5jcmVhdGVUZXh0Tm9kZShhKSl9LG51bGwsYSxhcmd1bWVudHMubGVuZ3RoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGEpe2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVUeXBlKXt2YXIgYj13Yih0aGlzLGEpO2IuYXBwZW5kQ2hpbGQoYSl9fSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7aWYoMT09PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8OT09PXRoaXMubm9kZVR5cGUpe3ZhciBiPXdiKHRoaXMsYSk7Yi5pbnNlcnRCZWZvcmUoYSxiLmZpcnN0Q2hpbGQpfX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcyl9KX0sYWZ0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcy5uZXh0U2libGluZyl9KX0scmVtb3ZlOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjLGQ9YT9tLmZpbHRlcihhLHRoaXMpOnRoaXMsZT0wO251bGwhPShjPWRbZV0pO2UrKylifHwxIT09Yy5ub2RlVHlwZXx8bS5jbGVhbkRhdGEodWIoYykpLGMucGFyZW50Tm9kZSYmKGImJm0uY29udGFpbnMoYy5vd25lckRvY3VtZW50LGMpJiZ6Yih1YihjLCJzY3JpcHQiKSksYy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGMpKTtyZXR1cm4gdGhpc30sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIGEsYj0wO251bGwhPShhPXRoaXNbYl0pO2IrKyl7MT09PWEubm9kZVR5cGUmJm0uY2xlYW5EYXRhKHViKGEsITEpKTt3aGlsZShhLmZpcnN0Q2hpbGQpYS5yZW1vdmVDaGlsZChhLmZpcnN0Q2hpbGQpO2Eub3B0aW9ucyYmbS5ub2RlTmFtZShhLCJzZWxlY3QiKSYmKGEub3B0aW9ucy5sZW5ndGg9MCl9cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9bnVsbD09YT8hMTphLGI9bnVsbD09Yj9hOmIsdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gbS5jbG9uZSh0aGlzLGEsYil9KX0saHRtbDpmdW5jdGlvbihhKXtyZXR1cm4gVih0aGlzLGZ1bmN0aW9uKGEpe3ZhciBiPXRoaXNbMF18fHt9LGM9MCxkPXRoaXMubGVuZ3RoO2lmKHZvaWQgMD09PWEpcmV0dXJuIDE9PT1iLm5vZGVUeXBlP2IuaW5uZXJIVE1MLnJlcGxhY2UoZmIsIiIpOnZvaWQgMDtpZighKCJzdHJpbmciIT10eXBlb2YgYXx8bWIudGVzdChhKXx8IWsuaHRtbFNlcmlhbGl6ZSYmZ2IudGVzdChhKXx8IWsubGVhZGluZ1doaXRlc3BhY2UmJmhiLnRlc3QoYSl8fHJiWyhqYi5leGVjKGEpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSkpe2E9YS5yZXBsYWNlKGliLCI8JDE+PC8kMj4iKTt0cnl7Zm9yKDtkPmM7YysrKWI9dGhpc1tjXXx8e30sMT09PWIubm9kZVR5cGUmJihtLmNsZWFuRGF0YSh1YihiLCExKSksYi5pbm5lckhUTUw9YSk7Yj0wfWNhdGNoKGUpe319YiYmdGhpcy5lbXB0eSgpLmFwcGVuZChhKX0sbnVsbCxhLGFyZ3VtZW50cy5sZW5ndGgpfSxyZXBsYWNlV2l0aDpmdW5jdGlvbigpe3ZhciBhPWFyZ3VtZW50c1swXTtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYil7YT10aGlzLnBhcmVudE5vZGUsbS5jbGVhbkRhdGEodWIodGhpcykpLGEmJmEucmVwbGFjZUNoaWxkKGIsdGhpcyl9KSxhJiYoYS5sZW5ndGh8fGEubm9kZVR5cGUpP3RoaXM6dGhpcy5yZW1vdmUoKX0sZGV0YWNoOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnJlbW92ZShhLCEwKX0sZG9tTWFuaXA6ZnVuY3Rpb24oYSxiKXthPWUuYXBwbHkoW10sYSk7dmFyIGMsZCxmLGcsaCxpLGo9MCxsPXRoaXMubGVuZ3RoLG49dGhpcyxvPWwtMSxwPWFbMF0scT1tLmlzRnVuY3Rpb24ocCk7aWYocXx8bD4xJiYic3RyaW5nIj09dHlwZW9mIHAmJiFrLmNoZWNrQ2xvbmUmJm5iLnRlc3QocCkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXt2YXIgZD1uLmVxKGMpO3EmJihhWzBdPXAuY2FsbCh0aGlzLGMsZC5odG1sKCkpKSxkLmRvbU1hbmlwKGEsYil9KTtpZihsJiYoaT1tLmJ1aWxkRnJhZ21lbnQoYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQsITEsdGhpcyksYz1pLmZpcnN0Q2hpbGQsMT09PWkuY2hpbGROb2Rlcy5sZW5ndGgmJihpPWMpLGMpKXtmb3IoZz1tLm1hcCh1YihpLCJzY3JpcHQiKSx4YiksZj1nLmxlbmd0aDtsPmo7aisrKWQ9aSxqIT09byYmKGQ9bS5jbG9uZShkLCEwLCEwKSxmJiZtLm1lcmdlKGcsdWIoZCwic2NyaXB0IikpKSxiLmNhbGwodGhpc1tqXSxkLGopO2lmKGYpZm9yKGg9Z1tnLmxlbmd0aC0xXS5vd25lckRvY3VtZW50LG0ubWFwKGcseWIpLGo9MDtmPmo7aisrKWQ9Z1tqXSxvYi50ZXN0KGQudHlwZXx8IiIpJiYhbS5fZGF0YShkLCJnbG9iYWxFdmFsIikmJm0uY29udGFpbnMoaCxkKSYmKGQuc3JjP20uX2V2YWxVcmwmJm0uX2V2YWxVcmwoZC5zcmMpOm0uZ2xvYmFsRXZhbCgoZC50ZXh0fHxkLnRleHRDb250ZW50fHxkLmlubmVySFRNTHx8IiIpLnJlcGxhY2UocWIsIiIpKSk7aT1jPW51bGx9cmV0dXJuIHRoaXN9fSksbS5lYWNoKHthcHBlbmRUbzoiYXBwZW5kIixwcmVwZW5kVG86InByZXBlbmQiLGluc2VydEJlZm9yZToiYmVmb3JlIixpbnNlcnRBZnRlcjoiYWZ0ZXIiLHJlcGxhY2VBbGw6InJlcGxhY2VXaXRoIn0sZnVuY3Rpb24oYSxiKXttLmZuW2FdPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYyxkPTAsZT1bXSxnPW0oYSksaD1nLmxlbmd0aC0xO2g+PWQ7ZCsrKWM9ZD09PWg/dGhpczp0aGlzLmNsb25lKCEwKSxtKGdbZF0pW2JdKGMpLGYuYXBwbHkoZSxjLmdldCgpKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZSl9fSk7dmFyIENiLERiPXt9O2Z1bmN0aW9uIEViKGIsYyl7dmFyIGQsZT1tKGMuY3JlYXRlRWxlbWVudChiKSkuYXBwZW5kVG8oYy5ib2R5KSxmPWEuZ2V0RGVmYXVsdENvbXB1dGVkU3R5bGUmJihkPWEuZ2V0RGVmYXVsdENvbXB1dGVkU3R5bGUoZVswXSkpP2QuZGlzcGxheTptLmNzcyhlWzBdLCJkaXNwbGF5Iik7cmV0dXJuIGUuZGV0YWNoKCksZn1mdW5jdGlvbiBGYihhKXt2YXIgYj15LGM9RGJbYV07cmV0dXJuIGN8fChjPUViKGEsYiksIm5vbmUiIT09YyYmY3x8KENiPShDYnx8bSgiPGlmcmFtZSBmcmFtZWJvcmRlcj0nMCcgd2lkdGg9JzAnIGhlaWdodD0nMCcvPiIpKS5hcHBlbmRUbyhiLmRvY3VtZW50RWxlbWVudCksYj0oQ2JbMF0uY29udGVudFdpbmRvd3x8Q2JbMF0uY29udGVudERvY3VtZW50KS5kb2N1bWVudCxiLndyaXRlKCksYi5jbG9zZSgpLGM9RWIoYSxiKSxDYi5kZXRhY2goKSksRGJbYV09YyksY30hZnVuY3Rpb24oKXt2YXIgYTtrLnNocmlua1dyYXBCbG9ja3M9ZnVuY3Rpb24oKXtpZihudWxsIT1hKXJldHVybiBhO2E9ITE7dmFyIGIsYyxkO3JldHVybiBjPXkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSxjJiZjLnN0eWxlPyhiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksZD15LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOjA7d2lkdGg6MDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHgiLGMuYXBwZW5kQ2hpbGQoZCkuYXBwZW5kQ2hpbGQoYiksdHlwZW9mIGIuc3R5bGUuem9vbSE9PUsmJihiLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MXB4O3dpZHRoOjFweDt6b29tOjEiLGIuYXBwZW5kQ2hpbGQoeS5jcmVhdGVFbGVtZW50KCJkaXYiKSkuc3R5bGUud2lkdGg9IjVweCIsYT0zIT09Yi5vZmZzZXRXaWR0aCksYy5yZW1vdmVDaGlsZChkKSxhKTp2b2lkIDB9fSgpO3ZhciBHYj0vXm1hcmdpbi8sSGI9bmV3IFJlZ0V4cCgiXigiK1MrIikoPyFweClbYS16JV0rJCIsImkiKSxJYixKYixLYj0vXih0b3B8cmlnaHR8Ym90dG9tfGxlZnQpJC87YS5nZXRDb21wdXRlZFN0eWxlPyhJYj1mdW5jdGlvbihhKXtyZXR1cm4gYS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoYSxudWxsKX0sSmI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5zdHlsZTtyZXR1cm4gYz1jfHxJYihhKSxnPWM/Yy5nZXRQcm9wZXJ0eVZhbHVlKGIpfHxjW2JdOnZvaWQgMCxjJiYoIiIhPT1nfHxtLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKXx8KGc9bS5zdHlsZShhLGIpKSxIYi50ZXN0KGcpJiZHYi50ZXN0KGIpJiYoZD1oLndpZHRoLGU9aC5taW5XaWR0aCxmPWgubWF4V2lkdGgsaC5taW5XaWR0aD1oLm1heFdpZHRoPWgud2lkdGg9ZyxnPWMud2lkdGgsaC53aWR0aD1kLGgubWluV2lkdGg9ZSxoLm1heFdpZHRoPWYpKSx2b2lkIDA9PT1nP2c6ZysiIn0pOnkuZG9jdW1lbnRFbGVtZW50LmN1cnJlbnRTdHlsZSYmKEliPWZ1bmN0aW9uKGEpe3JldHVybiBhLmN1cnJlbnRTdHlsZX0sSmI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5zdHlsZTtyZXR1cm4gYz1jfHxJYihhKSxnPWM/Y1tiXTp2b2lkIDAsbnVsbD09ZyYmaCYmaFtiXSYmKGc9aFtiXSksSGIudGVzdChnKSYmIUtiLnRlc3QoYikmJihkPWgubGVmdCxlPWEucnVudGltZVN0eWxlLGY9ZSYmZS5sZWZ0LGYmJihlLmxlZnQ9YS5jdXJyZW50U3R5bGUubGVmdCksaC5sZWZ0PSJmb250U2l6ZSI9PT1iPyIxZW0iOmcsZz1oLnBpeGVsTGVmdCsicHgiLGgubGVmdD1kLGYmJihlLmxlZnQ9ZikpLHZvaWQgMD09PWc/ZzpnKyIifHwiYXV0byJ9KTtmdW5jdGlvbiBMYihhLGIpe3JldHVybntnZXQ6ZnVuY3Rpb24oKXt2YXIgYz1hKCk7aWYobnVsbCE9YylyZXR1cm4gYz92b2lkIGRlbGV0ZSB0aGlzLmdldDoodGhpcy5nZXQ9YikuYXBwbHkodGhpcyxhcmd1bWVudHMpfX19IWZ1bmN0aW9uKCl7dmFyIGIsYyxkLGUsZixnLGg7aWYoYj15LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGIuaW5uZXJIVE1MPSIgIDxsaW5rLz48dGFibGU+PC90YWJsZT48YSBocmVmPScvYSc+YTwvYT48aW5wdXQgdHlwZT0nY2hlY2tib3gnLz4iLGQ9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpWzBdLGM9ZCYmZC5zdHlsZSl7Yy5jc3NUZXh0PSJmbG9hdDpsZWZ0O29wYWNpdHk6LjUiLGsub3BhY2l0eT0iMC41Ij09PWMub3BhY2l0eSxrLmNzc0Zsb2F0PSEhYy5jc3NGbG9hdCxiLnN0eWxlLmJhY2tncm91bmRDbGlwPSJjb250ZW50LWJveCIsYi5jbG9uZU5vZGUoITApLnN0eWxlLmJhY2tncm91bmRDbGlwPSIiLGsuY2xlYXJDbG9uZVN0eWxlPSJjb250ZW50LWJveCI9PT1iLnN0eWxlLmJhY2tncm91bmRDbGlwLGsuYm94U2l6aW5nPSIiPT09Yy5ib3hTaXppbmd8fCIiPT09Yy5Nb3pCb3hTaXppbmd8fCIiPT09Yy5XZWJraXRCb3hTaXppbmcsbS5leHRlbmQoayx7cmVsaWFibGVIaWRkZW5PZmZzZXRzOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWcmJmkoKSxnfSxib3hTaXppbmdSZWxpYWJsZTpmdW5jdGlvbigpe3JldHVybiBudWxsPT1mJiZpKCksZn0scGl4ZWxQb3NpdGlvbjpmdW5jdGlvbigpe3JldHVybiBudWxsPT1lJiZpKCksZX0scmVsaWFibGVNYXJnaW5SaWdodDpmdW5jdGlvbigpe3JldHVybiBudWxsPT1oJiZpKCksaH19KTtmdW5jdGlvbiBpKCl7dmFyIGIsYyxkLGk7Yz15LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0sYyYmYy5zdHlsZSYmKGI9eS5jcmVhdGVFbGVtZW50KCJkaXYiKSxkPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksZC5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3RvcDowO2xlZnQ6LTk5OTlweCIsYy5hcHBlbmRDaGlsZChkKS5hcHBlbmRDaGlsZChiKSxiLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6MSU7dG9wOjElO2JvcmRlcjoxcHg7cGFkZGluZzoxcHg7d2lkdGg6NHB4O3Bvc2l0aW9uOmFic29sdXRlIixlPWY9ITEsaD0hMCxhLmdldENvbXB1dGVkU3R5bGUmJihlPSIxJSIhPT0oYS5nZXRDb21wdXRlZFN0eWxlKGIsbnVsbCl8fHt9KS50b3AsZj0iNHB4Ij09PShhLmdldENvbXB1dGVkU3R5bGUoYixudWxsKXx8e3dpZHRoOiI0cHgifSkud2lkdGgsaT1iLmFwcGVuZENoaWxkKHkuY3JlYXRlRWxlbWVudCgiZGl2IikpLGkuc3R5bGUuY3NzVGV4dD1iLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MCIsaS5zdHlsZS5tYXJnaW5SaWdodD1pLnN0eWxlLndpZHRoPSIwIixiLnN0eWxlLndpZHRoPSIxcHgiLGg9IXBhcnNlRmxvYXQoKGEuZ2V0Q29tcHV0ZWRTdHlsZShpLG51bGwpfHx7fSkubWFyZ2luUmlnaHQpKSxiLmlubmVySFRNTD0iPHRhYmxlPjx0cj48dGQ+PC90ZD48dGQ+dDwvdGQ+PC90cj48L3RhYmxlPiIsaT1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpLGlbMF0uc3R5bGUuY3NzVGV4dD0ibWFyZ2luOjA7Ym9yZGVyOjA7cGFkZGluZzowO2Rpc3BsYXk6bm9uZSIsZz0wPT09aVswXS5vZmZzZXRIZWlnaHQsZyYmKGlbMF0uc3R5bGUuZGlzcGxheT0iIixpWzFdLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGc9MD09PWlbMF0ub2Zmc2V0SGVpZ2h0KSxjLnJlbW92ZUNoaWxkKGQpKX19fSgpLG0uc3dhcD1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZSxmLGc9e307Zm9yKGYgaW4gYilnW2ZdPWEuc3R5bGVbZl0sYS5zdHlsZVtmXT1iW2ZdO2U9Yy5hcHBseShhLGR8fFtdKTtmb3IoZiBpbiBiKWEuc3R5bGVbZl09Z1tmXTtyZXR1cm4gZX07dmFyIE1iPS9hbHBoYVwoW14pXSpcKS9pLE5iPS9vcGFjaXR5XHMqPVxzKihbXildKikvLE9iPS9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLyxQYj1uZXcgUmVnRXhwKCJeKCIrUysiKSguKikkIiwiaSIpLFFiPW5ldyBSZWdFeHAoIl4oWystXSk9KCIrUysiKSIsImkiKSxSYj17cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJoaWRkZW4iLGRpc3BsYXk6ImJsb2NrIn0sU2I9e2xldHRlclNwYWNpbmc6IjAiLGZvbnRXZWlnaHQ6IjQwMCJ9LFRiPVsiV2Via2l0IiwiTyIsIk1veiIsIm1zIl07ZnVuY3Rpb24gVWIoYSxiKXtpZihiIGluIGEpcmV0dXJuIGI7dmFyIGM9Yi5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStiLnNsaWNlKDEpLGQ9YixlPVRiLmxlbmd0aDt3aGlsZShlLS0paWYoYj1UYltlXStjLGIgaW4gYSlyZXR1cm4gYjtyZXR1cm4gZH1mdW5jdGlvbiBWYihhLGIpe2Zvcih2YXIgYyxkLGUsZj1bXSxnPTAsaD1hLmxlbmd0aDtoPmc7ZysrKWQ9YVtnXSxkLnN0eWxlJiYoZltnXT1tLl9kYXRhKGQsIm9sZGRpc3BsYXkiKSxjPWQuc3R5bGUuZGlzcGxheSxiPyhmW2ddfHwibm9uZSIhPT1jfHwoZC5zdHlsZS5kaXNwbGF5PSIiKSwiIj09PWQuc3R5bGUuZGlzcGxheSYmVShkKSYmKGZbZ109bS5fZGF0YShkLCJvbGRkaXNwbGF5IixGYihkLm5vZGVOYW1lKSkpKTooZT1VKGQpLChjJiYibm9uZSIhPT1jfHwhZSkmJm0uX2RhdGEoZCwib2xkZGlzcGxheSIsZT9jOm0uY3NzKGQsImRpc3BsYXkiKSkpKTtmb3IoZz0wO2g+ZztnKyspZD1hW2ddLGQuc3R5bGUmJihiJiYibm9uZSIhPT1kLnN0eWxlLmRpc3BsYXkmJiIiIT09ZC5zdHlsZS5kaXNwbGF5fHwoZC5zdHlsZS5kaXNwbGF5PWI/ZltnXXx8IiI6Im5vbmUiKSk7cmV0dXJuIGF9ZnVuY3Rpb24gV2IoYSxiLGMpe3ZhciBkPVBiLmV4ZWMoYik7cmV0dXJuIGQ/TWF0aC5tYXgoMCxkWzFdLShjfHwwKSkrKGRbMl18fCJweCIpOmJ9ZnVuY3Rpb24gWGIoYSxiLGMsZCxlKXtmb3IodmFyIGY9Yz09PShkPyJib3JkZXIiOiJjb250ZW50Iik/NDoid2lkdGgiPT09Yj8xOjAsZz0wOzQ+ZjtmKz0yKSJtYXJnaW4iPT09YyYmKGcrPW0uY3NzKGEsYytUW2ZdLCEwLGUpKSxkPygiY29udGVudCI9PT1jJiYoZy09bS5jc3MoYSwicGFkZGluZyIrVFtmXSwhMCxlKSksIm1hcmdpbiIhPT1jJiYoZy09bS5jc3MoYSwiYm9yZGVyIitUW2ZdKyJXaWR0aCIsITAsZSkpKTooZys9bS5jc3MoYSwicGFkZGluZyIrVFtmXSwhMCxlKSwicGFkZGluZyIhPT1jJiYoZys9bS5jc3MoYSwiYm9yZGVyIitUW2ZdKyJXaWR0aCIsITAsZSkpKTtyZXR1cm4gZ31mdW5jdGlvbiBZYihhLGIsYyl7dmFyIGQ9ITAsZT0id2lkdGgiPT09Yj9hLm9mZnNldFdpZHRoOmEub2Zmc2V0SGVpZ2h0LGY9SWIoYSksZz1rLmJveFNpemluZyYmImJvcmRlci1ib3giPT09bS5jc3MoYSwiYm94U2l6aW5nIiwhMSxmKTtpZigwPj1lfHxudWxsPT1lKXtpZihlPUpiKGEsYixmKSwoMD5lfHxudWxsPT1lKSYmKGU9YS5zdHlsZVtiXSksSGIudGVzdChlKSlyZXR1cm4gZTtkPWcmJihrLmJveFNpemluZ1JlbGlhYmxlKCl8fGU9PT1hLnN0eWxlW2JdKSxlPXBhcnNlRmxvYXQoZSl8fDB9cmV0dXJuIGUrWGIoYSxiLGN8fChnPyJib3JkZXIiOiJjb250ZW50IiksZCxmKSsicHgifW0uZXh0ZW5kKHtjc3NIb29rczp7b3BhY2l0eTp7Z2V0OmZ1bmN0aW9uKGEsYil7aWYoYil7dmFyIGM9SmIoYSwib3BhY2l0eSIpO3JldHVybiIiPT09Yz8iMSI6Y319fX0sY3NzTnVtYmVyOntjb2x1bW5Db3VudDohMCxmaWxsT3BhY2l0eTohMCxmbGV4R3JvdzohMCxmbGV4U2hyaW5rOiEwLGZvbnRXZWlnaHQ6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwfSxjc3NQcm9wczp7ImZsb2F0IjprLmNzc0Zsb2F0PyJjc3NGbG9hdCI6InN0eWxlRmxvYXQifSxzdHlsZTpmdW5jdGlvbihhLGIsYyxkKXtpZihhJiYzIT09YS5ub2RlVHlwZSYmOCE9PWEubm9kZVR5cGUmJmEuc3R5bGUpe3ZhciBlLGYsZyxoPW0uY2FtZWxDYXNlKGIpLGk9YS5zdHlsZTtpZihiPW0uY3NzUHJvcHNbaF18fChtLmNzc1Byb3BzW2hdPVViKGksaCkpLGc9bS5jc3NIb29rc1tiXXx8bS5jc3NIb29rc1toXSx2b2lkIDA9PT1jKXJldHVybiBnJiYiZ2V0ImluIGcmJnZvaWQgMCE9PShlPWcuZ2V0KGEsITEsZCkpP2U6aVtiXTtpZihmPXR5cGVvZiBjLCJzdHJpbmciPT09ZiYmKGU9UWIuZXhlYyhjKSkmJihjPShlWzFdKzEpKmVbMl0rcGFyc2VGbG9hdChtLmNzcyhhLGIpKSxmPSJudW1iZXIiKSxudWxsIT1jJiZjPT09YyYmKCJudW1iZXIiIT09Znx8bS5jc3NOdW1iZXJbaF18fChjKz0icHgiKSxrLmNsZWFyQ2xvbmVTdHlsZXx8IiIhPT1jfHwwIT09Yi5pbmRleE9mKCJiYWNrZ3JvdW5kIil8fChpW2JdPSJpbmhlcml0IiksIShnJiYic2V0ImluIGcmJnZvaWQgMD09PShjPWcuc2V0KGEsYyxkKSkpKSl0cnl7aVtiXT1jfWNhdGNoKGope319fSxjc3M6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUsZixnLGg9bS5jYW1lbENhc2UoYik7cmV0dXJuIGI9bS5jc3NQcm9wc1toXXx8KG0uY3NzUHJvcHNbaF09VWIoYS5zdHlsZSxoKSksZz1tLmNzc0hvb2tzW2JdfHxtLmNzc0hvb2tzW2hdLGcmJiJnZXQiaW4gZyYmKGY9Zy5nZXQoYSwhMCxjKSksdm9pZCAwPT09ZiYmKGY9SmIoYSxiLGQpKSwibm9ybWFsIj09PWYmJmIgaW4gU2ImJihmPVNiW2JdKSwiIj09PWN8fGM/KGU9cGFyc2VGbG9hdChmKSxjPT09ITB8fG0uaXNOdW1lcmljKGUpP2V8fDA6Zik6Zn19KSxtLmVhY2goWyJoZWlnaHQiLCJ3aWR0aCJdLGZ1bmN0aW9uKGEsYil7bS5jc3NIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gYz9PYi50ZXN0KG0uY3NzKGEsImRpc3BsYXkiKSkmJjA9PT1hLm9mZnNldFdpZHRoP20uc3dhcChhLFJiLGZ1bmN0aW9uKCl7cmV0dXJuIFliKGEsYixkKX0pOlliKGEsYixkKTp2b2lkIDB9LHNldDpmdW5jdGlvbihhLGMsZCl7dmFyIGU9ZCYmSWIoYSk7cmV0dXJuIFdiKGEsYyxkP1hiKGEsYixkLGsuYm94U2l6aW5nJiYiYm9yZGVyLWJveCI9PT1tLmNzcyhhLCJib3hTaXppbmciLCExLGUpLGUpOjApfX19KSxrLm9wYWNpdHl8fChtLmNzc0hvb2tzLm9wYWNpdHk9e2dldDpmdW5jdGlvbihhLGIpe3JldHVybiBOYi50ZXN0KChiJiZhLmN1cnJlbnRTdHlsZT9hLmN1cnJlbnRTdHlsZS5maWx0ZXI6YS5zdHlsZS5maWx0ZXIpfHwiIik/LjAxKnBhcnNlRmxvYXQoUmVnRXhwLiQxKSsiIjpiPyIxIjoiIn0sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGM9YS5zdHlsZSxkPWEuY3VycmVudFN0eWxlLGU9bS5pc051bWVyaWMoYik/ImFscGhhKG9wYWNpdHk9IisxMDAqYisiKSI6IiIsZj1kJiZkLmZpbHRlcnx8Yy5maWx0ZXJ8fCIiO2Muem9vbT0xLChiPj0xfHwiIj09PWIpJiYiIj09PW0udHJpbShmLnJlcGxhY2UoTWIsIiIpKSYmYy5yZW1vdmVBdHRyaWJ1dGUmJihjLnJlbW92ZUF0dHJpYnV0ZSgiZmlsdGVyIiksIiI9PT1ifHxkJiYhZC5maWx0ZXIpfHwoYy5maWx0ZXI9TWIudGVzdChmKT9mLnJlcGxhY2UoTWIsZSk6ZisiICIrZSl9fSksbS5jc3NIb29rcy5tYXJnaW5SaWdodD1MYihrLnJlbGlhYmxlTWFyZ2luUmlnaHQsZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj9tLnN3YXAoYSx7ZGlzcGxheToiaW5saW5lLWJsb2NrIn0sSmIsW2EsIm1hcmdpblJpZ2h0Il0pOnZvaWQgMH0pLG0uZWFjaCh7bWFyZ2luOiIiLHBhZGRpbmc6IiIsYm9yZGVyOiJXaWR0aCJ9LGZ1bmN0aW9uKGEsYil7bS5jc3NIb29rc1thK2JdPXtleHBhbmQ6ZnVuY3Rpb24oYyl7Zm9yKHZhciBkPTAsZT17fSxmPSJzdHJpbmciPT10eXBlb2YgYz9jLnNwbGl0KCIgIik6W2NdOzQ+ZDtkKyspZVthK1RbZF0rYl09ZltkXXx8ZltkLTJdfHxmWzBdO3JldHVybiBlfX0sR2IudGVzdChhKXx8KG0uY3NzSG9va3NbYStiXS5zZXQ9V2IpfSksbS5mbi5leHRlbmQoe2NzczpmdW5jdGlvbihhLGIpe3JldHVybiBWKHRoaXMsZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj17fSxnPTA7aWYobS5pc0FycmF5KGIpKXtmb3IoZD1JYihhKSxlPWIubGVuZ3RoO2U+ZztnKyspZltiW2ddXT1tLmNzcyhhLGJbZ10sITEsZCk7cmV0dXJuIGZ9cmV0dXJuIHZvaWQgMCE9PWM/bS5zdHlsZShhLGIsYyk6bS5jc3MoYSxiKX0sYSxiLGFyZ3VtZW50cy5sZW5ndGg+MSl9LHNob3c6ZnVuY3Rpb24oKXtyZXR1cm4gVmIodGhpcywhMCl9LGhpZGU6ZnVuY3Rpb24oKXtyZXR1cm4gVmIodGhpcyl9LHRvZ2dsZTpmdW5jdGlvbihhKXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBhP2E/dGhpcy5zaG93KCk6dGhpcy5oaWRlKCk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7VSh0aGlzKT9tKHRoaXMpLnNob3coKTptKHRoaXMpLmhpZGUoKX0pfX0pO2Z1bmN0aW9uIFpiKGEsYixjLGQsZSl7cmV0dXJuIG5ldyBaYi5wcm90b3R5cGUuaW5pdChhLGIsYyxkLGUpfW0uVHdlZW49WmIsWmIucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpaYixpbml0OmZ1bmN0aW9uKGEsYixjLGQsZSxmKXt0aGlzLmVsZW09YSx0aGlzLnByb3A9Yyx0aGlzLmVhc2luZz1lfHwic3dpbmciLHRoaXMub3B0aW9ucz1iLHRoaXMuc3RhcnQ9dGhpcy5ub3c9dGhpcy5jdXIoKSx0aGlzLmVuZD1kLHRoaXMudW5pdD1mfHwobS5jc3NOdW1iZXJbY10/IiI6InB4IikKfSxjdXI6ZnVuY3Rpb24oKXt2YXIgYT1aYi5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gYSYmYS5nZXQ/YS5nZXQodGhpcyk6WmIucHJvcEhvb2tzLl9kZWZhdWx0LmdldCh0aGlzKX0scnVuOmZ1bmN0aW9uKGEpe3ZhciBiLGM9WmIucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIHRoaXMucG9zPWI9dGhpcy5vcHRpb25zLmR1cmF0aW9uP20uZWFzaW5nW3RoaXMuZWFzaW5nXShhLHRoaXMub3B0aW9ucy5kdXJhdGlvbiphLDAsMSx0aGlzLm9wdGlvbnMuZHVyYXRpb24pOmEsdGhpcy5ub3c9KHRoaXMuZW5kLXRoaXMuc3RhcnQpKmIrdGhpcy5zdGFydCx0aGlzLm9wdGlvbnMuc3RlcCYmdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyksYyYmYy5zZXQ/Yy5zZXQodGhpcyk6WmIucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSx0aGlzfX0sWmIucHJvdG90eXBlLmluaXQucHJvdG90eXBlPVpiLnByb3RvdHlwZSxaYi5wcm9wSG9va3M9e19kZWZhdWx0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuIG51bGw9PWEuZWxlbVthLnByb3BdfHxhLmVsZW0uc3R5bGUmJm51bGwhPWEuZWxlbS5zdHlsZVthLnByb3BdPyhiPW0uY3NzKGEuZWxlbSxhLnByb3AsIiIpLGImJiJhdXRvIiE9PWI/YjowKTphLmVsZW1bYS5wcm9wXX0sc2V0OmZ1bmN0aW9uKGEpe20uZnguc3RlcFthLnByb3BdP20uZnguc3RlcFthLnByb3BdKGEpOmEuZWxlbS5zdHlsZSYmKG51bGwhPWEuZWxlbS5zdHlsZVttLmNzc1Byb3BzW2EucHJvcF1dfHxtLmNzc0hvb2tzW2EucHJvcF0pP20uc3R5bGUoYS5lbGVtLGEucHJvcCxhLm5vdythLnVuaXQpOmEuZWxlbVthLnByb3BdPWEubm93fX19LFpiLnByb3BIb29rcy5zY3JvbGxUb3A9WmIucHJvcEhvb2tzLnNjcm9sbExlZnQ9e3NldDpmdW5jdGlvbihhKXthLmVsZW0ubm9kZVR5cGUmJmEuZWxlbS5wYXJlbnROb2RlJiYoYS5lbGVtW2EucHJvcF09YS5ub3cpfX0sbS5lYXNpbmc9e2xpbmVhcjpmdW5jdGlvbihhKXtyZXR1cm4gYX0sc3dpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuLjUtTWF0aC5jb3MoYSpNYXRoLlBJKS8yfX0sbS5meD1aYi5wcm90b3R5cGUuaW5pdCxtLmZ4LnN0ZXA9e307dmFyICRiLF9iLGFjPS9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxiYz1uZXcgUmVnRXhwKCJeKD86KFsrLV0pPXwpKCIrUysiKShbYS16JV0qKSQiLCJpIiksY2M9L3F1ZXVlSG9va3MkLyxkYz1baWNdLGVjPXsiKiI6W2Z1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jcmVhdGVUd2VlbihhLGIpLGQ9Yy5jdXIoKSxlPWJjLmV4ZWMoYiksZj1lJiZlWzNdfHwobS5jc3NOdW1iZXJbYV0/IiI6InB4IiksZz0obS5jc3NOdW1iZXJbYV18fCJweCIhPT1mJiYrZCkmJmJjLmV4ZWMobS5jc3MoYy5lbGVtLGEpKSxoPTEsaT0yMDtpZihnJiZnWzNdIT09Zil7Zj1mfHxnWzNdLGU9ZXx8W10sZz0rZHx8MTtkbyBoPWh8fCIuNSIsZy89aCxtLnN0eWxlKGMuZWxlbSxhLGcrZik7d2hpbGUoaCE9PShoPWMuY3VyKCkvZCkmJjEhPT1oJiYtLWkpfXJldHVybiBlJiYoZz1jLnN0YXJ0PStnfHwrZHx8MCxjLnVuaXQ9ZixjLmVuZD1lWzFdP2crKGVbMV0rMSkqZVsyXTorZVsyXSksY31dfTtmdW5jdGlvbiBmYygpe3JldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7JGI9dm9pZCAwfSksJGI9bS5ub3coKX1mdW5jdGlvbiBnYyhhLGIpe3ZhciBjLGQ9e2hlaWdodDphfSxlPTA7Zm9yKGI9Yj8xOjA7ND5lO2UrPTItYiljPVRbZV0sZFsibWFyZ2luIitjXT1kWyJwYWRkaW5nIitjXT1hO3JldHVybiBiJiYoZC5vcGFjaXR5PWQud2lkdGg9YSksZH1mdW5jdGlvbiBoYyhhLGIsYyl7Zm9yKHZhciBkLGU9KGVjW2JdfHxbXSkuY29uY2F0KGVjWyIqIl0pLGY9MCxnPWUubGVuZ3RoO2c+ZjtmKyspaWYoZD1lW2ZdLmNhbGwoYyxiLGEpKXJldHVybiBkfWZ1bmN0aW9uIGljKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixsLG49dGhpcyxvPXt9LHA9YS5zdHlsZSxxPWEubm9kZVR5cGUmJlUoYSkscj1tLl9kYXRhKGEsImZ4c2hvdyIpO2MucXVldWV8fChoPW0uX3F1ZXVlSG9va3MoYSwiZngiKSxudWxsPT1oLnVucXVldWVkJiYoaC51bnF1ZXVlZD0wLGk9aC5lbXB0eS5maXJlLGguZW1wdHkuZmlyZT1mdW5jdGlvbigpe2gudW5xdWV1ZWR8fGkoKX0pLGgudW5xdWV1ZWQrKyxuLmFsd2F5cyhmdW5jdGlvbigpe24uYWx3YXlzKGZ1bmN0aW9uKCl7aC51bnF1ZXVlZC0tLG0ucXVldWUoYSwiZngiKS5sZW5ndGh8fGguZW1wdHkuZmlyZSgpfSl9KSksMT09PWEubm9kZVR5cGUmJigiaGVpZ2h0ImluIGJ8fCJ3aWR0aCJpbiBiKSYmKGMub3ZlcmZsb3c9W3Aub3ZlcmZsb3cscC5vdmVyZmxvd1gscC5vdmVyZmxvd1ldLGo9bS5jc3MoYSwiZGlzcGxheSIpLGw9Im5vbmUiPT09aj9tLl9kYXRhKGEsIm9sZGRpc3BsYXkiKXx8RmIoYS5ub2RlTmFtZSk6aiwiaW5saW5lIj09PWwmJiJub25lIj09PW0uY3NzKGEsImZsb2F0IikmJihrLmlubGluZUJsb2NrTmVlZHNMYXlvdXQmJiJpbmxpbmUiIT09RmIoYS5ub2RlTmFtZSk/cC56b29tPTE6cC5kaXNwbGF5PSJpbmxpbmUtYmxvY2siKSksYy5vdmVyZmxvdyYmKHAub3ZlcmZsb3c9ImhpZGRlbiIsay5zaHJpbmtXcmFwQmxvY2tzKCl8fG4uYWx3YXlzKGZ1bmN0aW9uKCl7cC5vdmVyZmxvdz1jLm92ZXJmbG93WzBdLHAub3ZlcmZsb3dYPWMub3ZlcmZsb3dbMV0scC5vdmVyZmxvd1k9Yy5vdmVyZmxvd1syXX0pKTtmb3IoZCBpbiBiKWlmKGU9YltkXSxhYy5leGVjKGUpKXtpZihkZWxldGUgYltkXSxmPWZ8fCJ0b2dnbGUiPT09ZSxlPT09KHE/ImhpZGUiOiJzaG93Iikpe2lmKCJzaG93IiE9PWV8fCFyfHx2b2lkIDA9PT1yW2RdKWNvbnRpbnVlO3E9ITB9b1tkXT1yJiZyW2RdfHxtLnN0eWxlKGEsZCl9ZWxzZSBqPXZvaWQgMDtpZihtLmlzRW1wdHlPYmplY3QobykpImlubGluZSI9PT0oIm5vbmUiPT09aj9GYihhLm5vZGVOYW1lKTpqKSYmKHAuZGlzcGxheT1qKTtlbHNle3I/ImhpZGRlbiJpbiByJiYocT1yLmhpZGRlbik6cj1tLl9kYXRhKGEsImZ4c2hvdyIse30pLGYmJihyLmhpZGRlbj0hcSkscT9tKGEpLnNob3coKTpuLmRvbmUoZnVuY3Rpb24oKXttKGEpLmhpZGUoKX0pLG4uZG9uZShmdW5jdGlvbigpe3ZhciBiO20uX3JlbW92ZURhdGEoYSwiZnhzaG93Iik7Zm9yKGIgaW4gbyltLnN0eWxlKGEsYixvW2JdKX0pO2ZvcihkIGluIG8pZz1oYyhxP3JbZF06MCxkLG4pLGQgaW4gcnx8KHJbZF09Zy5zdGFydCxxJiYoZy5lbmQ9Zy5zdGFydCxnLnN0YXJ0PSJ3aWR0aCI9PT1kfHwiaGVpZ2h0Ij09PWQ/MTowKSl9fWZ1bmN0aW9uIGpjKGEsYil7dmFyIGMsZCxlLGYsZztmb3IoYyBpbiBhKWlmKGQ9bS5jYW1lbENhc2UoYyksZT1iW2RdLGY9YVtjXSxtLmlzQXJyYXkoZikmJihlPWZbMV0sZj1hW2NdPWZbMF0pLGMhPT1kJiYoYVtkXT1mLGRlbGV0ZSBhW2NdKSxnPW0uY3NzSG9va3NbZF0sZyYmImV4cGFuZCJpbiBnKXtmPWcuZXhwYW5kKGYpLGRlbGV0ZSBhW2RdO2ZvcihjIGluIGYpYyBpbiBhfHwoYVtjXT1mW2NdLGJbY109ZSl9ZWxzZSBiW2RdPWV9ZnVuY3Rpb24ga2MoYSxiLGMpe3ZhciBkLGUsZj0wLGc9ZGMubGVuZ3RoLGg9bS5EZWZlcnJlZCgpLmFsd2F5cyhmdW5jdGlvbigpe2RlbGV0ZSBpLmVsZW19KSxpPWZ1bmN0aW9uKCl7aWYoZSlyZXR1cm4hMTtmb3IodmFyIGI9JGJ8fGZjKCksYz1NYXRoLm1heCgwLGouc3RhcnRUaW1lK2ouZHVyYXRpb24tYiksZD1jL2ouZHVyYXRpb258fDAsZj0xLWQsZz0wLGk9ai50d2VlbnMubGVuZ3RoO2k+ZztnKyspai50d2VlbnNbZ10ucnVuKGYpO3JldHVybiBoLm5vdGlmeVdpdGgoYSxbaixmLGNdKSwxPmYmJmk/YzooaC5yZXNvbHZlV2l0aChhLFtqXSksITEpfSxqPWgucHJvbWlzZSh7ZWxlbTphLHByb3BzOm0uZXh0ZW5kKHt9LGIpLG9wdHM6bS5leHRlbmQoITAse3NwZWNpYWxFYXNpbmc6e319LGMpLG9yaWdpbmFsUHJvcGVydGllczpiLG9yaWdpbmFsT3B0aW9uczpjLHN0YXJ0VGltZTokYnx8ZmMoKSxkdXJhdGlvbjpjLmR1cmF0aW9uLHR3ZWVuczpbXSxjcmVhdGVUd2VlbjpmdW5jdGlvbihiLGMpe3ZhciBkPW0uVHdlZW4oYSxqLm9wdHMsYixjLGoub3B0cy5zcGVjaWFsRWFzaW5nW2JdfHxqLm9wdHMuZWFzaW5nKTtyZXR1cm4gai50d2VlbnMucHVzaChkKSxkfSxzdG9wOmZ1bmN0aW9uKGIpe3ZhciBjPTAsZD1iP2oudHdlZW5zLmxlbmd0aDowO2lmKGUpcmV0dXJuIHRoaXM7Zm9yKGU9ITA7ZD5jO2MrKylqLnR3ZWVuc1tjXS5ydW4oMSk7cmV0dXJuIGI/aC5yZXNvbHZlV2l0aChhLFtqLGJdKTpoLnJlamVjdFdpdGgoYSxbaixiXSksdGhpc319KSxrPWoucHJvcHM7Zm9yKGpjKGssai5vcHRzLnNwZWNpYWxFYXNpbmcpO2c+ZjtmKyspaWYoZD1kY1tmXS5jYWxsKGosYSxrLGoub3B0cykpcmV0dXJuIGQ7cmV0dXJuIG0ubWFwKGssaGMsaiksbS5pc0Z1bmN0aW9uKGoub3B0cy5zdGFydCkmJmoub3B0cy5zdGFydC5jYWxsKGEsaiksbS5meC50aW1lcihtLmV4dGVuZChpLHtlbGVtOmEsYW5pbTpqLHF1ZXVlOmoub3B0cy5xdWV1ZX0pKSxqLnByb2dyZXNzKGoub3B0cy5wcm9ncmVzcykuZG9uZShqLm9wdHMuZG9uZSxqLm9wdHMuY29tcGxldGUpLmZhaWwoai5vcHRzLmZhaWwpLmFsd2F5cyhqLm9wdHMuYWx3YXlzKX1tLkFuaW1hdGlvbj1tLmV4dGVuZChrYyx7dHdlZW5lcjpmdW5jdGlvbihhLGIpe20uaXNGdW5jdGlvbihhKT8oYj1hLGE9WyIqIl0pOmE9YS5zcGxpdCgiICIpO2Zvcih2YXIgYyxkPTAsZT1hLmxlbmd0aDtlPmQ7ZCsrKWM9YVtkXSxlY1tjXT1lY1tjXXx8W10sZWNbY10udW5zaGlmdChiKX0scHJlZmlsdGVyOmZ1bmN0aW9uKGEsYil7Yj9kYy51bnNoaWZ0KGEpOmRjLnB1c2goYSl9fSksbS5zcGVlZD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSYmIm9iamVjdCI9PXR5cGVvZiBhP20uZXh0ZW5kKHt9LGEpOntjb21wbGV0ZTpjfHwhYyYmYnx8bS5pc0Z1bmN0aW9uKGEpJiZhLGR1cmF0aW9uOmEsZWFzaW5nOmMmJmJ8fGImJiFtLmlzRnVuY3Rpb24oYikmJmJ9O3JldHVybiBkLmR1cmF0aW9uPW0uZngub2ZmPzA6Im51bWJlciI9PXR5cGVvZiBkLmR1cmF0aW9uP2QuZHVyYXRpb246ZC5kdXJhdGlvbiBpbiBtLmZ4LnNwZWVkcz9tLmZ4LnNwZWVkc1tkLmR1cmF0aW9uXTptLmZ4LnNwZWVkcy5fZGVmYXVsdCwobnVsbD09ZC5xdWV1ZXx8ZC5xdWV1ZT09PSEwKSYmKGQucXVldWU9ImZ4IiksZC5vbGQ9ZC5jb21wbGV0ZSxkLmNvbXBsZXRlPWZ1bmN0aW9uKCl7bS5pc0Z1bmN0aW9uKGQub2xkKSYmZC5vbGQuY2FsbCh0aGlzKSxkLnF1ZXVlJiZtLmRlcXVldWUodGhpcyxkLnF1ZXVlKX0sZH0sbS5mbi5leHRlbmQoe2ZhZGVUbzpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5maWx0ZXIoVSkuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTpifSxhLGMsZCl9LGFuaW1hdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9bS5pc0VtcHR5T2JqZWN0KGEpLGY9bS5zcGVlZChiLGMsZCksZz1mdW5jdGlvbigpe3ZhciBiPWtjKHRoaXMsbS5leHRlbmQoe30sYSksZik7KGV8fG0uX2RhdGEodGhpcywiZmluaXNoIikpJiZiLnN0b3AoITApfTtyZXR1cm4gZy5maW5pc2g9ZyxlfHxmLnF1ZXVlPT09ITE/dGhpcy5lYWNoKGcpOnRoaXMucXVldWUoZi5xdWV1ZSxnKX0sc3RvcDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5zdG9wO2RlbGV0ZSBhLnN0b3AsYihjKX07cmV0dXJuInN0cmluZyIhPXR5cGVvZiBhJiYoYz1iLGI9YSxhPXZvaWQgMCksYiYmYSE9PSExJiZ0aGlzLnF1ZXVlKGF8fCJmeCIsW10pLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPSEwLGU9bnVsbCE9YSYmYSsicXVldWVIb29rcyIsZj1tLnRpbWVycyxnPW0uX2RhdGEodGhpcyk7aWYoZSlnW2VdJiZnW2VdLnN0b3AmJmQoZ1tlXSk7ZWxzZSBmb3IoZSBpbiBnKWdbZV0mJmdbZV0uc3RvcCYmY2MudGVzdChlKSYmZChnW2VdKTtmb3IoZT1mLmxlbmd0aDtlLS07KWZbZV0uZWxlbSE9PXRoaXN8fG51bGwhPWEmJmZbZV0ucXVldWUhPT1hfHwoZltlXS5hbmltLnN0b3AoYyksYj0hMSxmLnNwbGljZShlLDEpKTsoYnx8IWMpJiZtLmRlcXVldWUodGhpcyxhKX0pfSxmaW5pc2g6ZnVuY3Rpb24oYSl7cmV0dXJuIGEhPT0hMSYmKGE9YXx8ImZ4IiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGIsYz1tLl9kYXRhKHRoaXMpLGQ9Y1thKyJxdWV1ZSJdLGU9Y1thKyJxdWV1ZUhvb2tzIl0sZj1tLnRpbWVycyxnPWQ/ZC5sZW5ndGg6MDtmb3IoYy5maW5pc2g9ITAsbS5xdWV1ZSh0aGlzLGEsW10pLGUmJmUuc3RvcCYmZS5zdG9wLmNhbGwodGhpcywhMCksYj1mLmxlbmd0aDtiLS07KWZbYl0uZWxlbT09PXRoaXMmJmZbYl0ucXVldWU9PT1hJiYoZltiXS5hbmltLnN0b3AoITApLGYuc3BsaWNlKGIsMSkpO2ZvcihiPTA7Zz5iO2IrKylkW2JdJiZkW2JdLmZpbmlzaCYmZFtiXS5maW5pc2guY2FsbCh0aGlzKTtkZWxldGUgYy5maW5pc2h9KX19KSxtLmVhY2goWyJ0b2dnbGUiLCJzaG93IiwiaGlkZSJdLGZ1bmN0aW9uKGEsYil7dmFyIGM9bS5mbltiXTttLmZuW2JdPWZ1bmN0aW9uKGEsZCxlKXtyZXR1cm4gbnVsbD09YXx8ImJvb2xlYW4iPT10eXBlb2YgYT9jLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0aGlzLmFuaW1hdGUoZ2MoYiwhMCksYSxkLGUpfX0pLG0uZWFjaCh7c2xpZGVEb3duOmdjKCJzaG93Iiksc2xpZGVVcDpnYygiaGlkZSIpLHNsaWRlVG9nZ2xlOmdjKCJ0b2dnbGUiKSxmYWRlSW46e29wYWNpdHk6InNob3cifSxmYWRlT3V0OntvcGFjaXR5OiJoaWRlIn0sZmFkZVRvZ2dsZTp7b3BhY2l0eToidG9nZ2xlIn19LGZ1bmN0aW9uKGEsYil7bS5mblthXT1mdW5jdGlvbihhLGMsZCl7cmV0dXJuIHRoaXMuYW5pbWF0ZShiLGEsYyxkKX19KSxtLnRpbWVycz1bXSxtLmZ4LnRpY2s9ZnVuY3Rpb24oKXt2YXIgYSxiPW0udGltZXJzLGM9MDtmb3IoJGI9bS5ub3coKTtjPGIubGVuZ3RoO2MrKylhPWJbY10sYSgpfHxiW2NdIT09YXx8Yi5zcGxpY2UoYy0tLDEpO2IubGVuZ3RofHxtLmZ4LnN0b3AoKSwkYj12b2lkIDB9LG0uZngudGltZXI9ZnVuY3Rpb24oYSl7bS50aW1lcnMucHVzaChhKSxhKCk/bS5meC5zdGFydCgpOm0udGltZXJzLnBvcCgpfSxtLmZ4LmludGVydmFsPTEzLG0uZnguc3RhcnQ9ZnVuY3Rpb24oKXtfYnx8KF9iPXNldEludGVydmFsKG0uZngudGljayxtLmZ4LmludGVydmFsKSl9LG0uZnguc3RvcD1mdW5jdGlvbigpe2NsZWFySW50ZXJ2YWwoX2IpLF9iPW51bGx9LG0uZnguc3BlZWRzPXtzbG93OjYwMCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9LG0uZm4uZGVsYXk9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1tLmZ4P20uZnguc3BlZWRzW2FdfHxhOmEsYj1ifHwiZngiLHRoaXMucXVldWUoYixmdW5jdGlvbihiLGMpe3ZhciBkPXNldFRpbWVvdXQoYixhKTtjLnN0b3A9ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoZCl9fSl9LGZ1bmN0aW9uKCl7dmFyIGEsYixjLGQsZTtiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksYi5zZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIsInQiKSxiLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixkPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXSxjPXkuY3JlYXRlRWxlbWVudCgic2VsZWN0IiksZT1jLmFwcGVuZENoaWxkKHkuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLGE9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXSxkLnN0eWxlLmNzc1RleHQ9InRvcDoxcHgiLGsuZ2V0U2V0QXR0cmlidXRlPSJ0IiE9PWIuY2xhc3NOYW1lLGsuc3R5bGU9L3RvcC8udGVzdChkLmdldEF0dHJpYnV0ZSgic3R5bGUiKSksay5ocmVmTm9ybWFsaXplZD0iL2EiPT09ZC5nZXRBdHRyaWJ1dGUoImhyZWYiKSxrLmNoZWNrT249ISFhLnZhbHVlLGsub3B0U2VsZWN0ZWQ9ZS5zZWxlY3RlZCxrLmVuY3R5cGU9ISF5LmNyZWF0ZUVsZW1lbnQoImZvcm0iKS5lbmN0eXBlLGMuZGlzYWJsZWQ9ITAsay5vcHREaXNhYmxlZD0hZS5kaXNhYmxlZCxhPXkuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxhLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiKSxrLmlucHV0PSIiPT09YS5nZXRBdHRyaWJ1dGUoInZhbHVlIiksYS52YWx1ZT0idCIsYS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpLGsucmFkaW9WYWx1ZT0idCI9PT1hLnZhbHVlfSgpO3ZhciBsYz0vXHIvZzttLmZuLmV4dGVuZCh7dmFsOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlPXRoaXNbMF07e2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9bS5pc0Z1bmN0aW9uKGEpLHRoaXMuZWFjaChmdW5jdGlvbihjKXt2YXIgZTsxPT09dGhpcy5ub2RlVHlwZSYmKGU9ZD9hLmNhbGwodGhpcyxjLG0odGhpcykudmFsKCkpOmEsbnVsbD09ZT9lPSIiOiJudW1iZXIiPT10eXBlb2YgZT9lKz0iIjptLmlzQXJyYXkoZSkmJihlPW0ubWFwKGUsZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6YSsiIn0pKSxiPW0udmFsSG9va3NbdGhpcy50eXBlXXx8bS52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGImJiJzZXQiaW4gYiYmdm9pZCAwIT09Yi5zZXQodGhpcyxlLCJ2YWx1ZSIpfHwodGhpcy52YWx1ZT1lKSl9KTtpZihlKXJldHVybiBiPW0udmFsSG9va3NbZS50eXBlXXx8bS52YWxIb29rc1tlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGImJiJnZXQiaW4gYiYmdm9pZCAwIT09KGM9Yi5nZXQoZSwidmFsdWUiKSk/YzooYz1lLnZhbHVlLCJzdHJpbmciPT10eXBlb2YgYz9jLnJlcGxhY2UobGMsIiIpOm51bGw9PWM/IiI6Yyl9fX0pLG0uZXh0ZW5kKHt2YWxIb29rczp7b3B0aW9uOntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9bS5maW5kLmF0dHIoYSwidmFsdWUiKTtyZXR1cm4gbnVsbCE9Yj9iOm0udHJpbShtLnRleHQoYSkpfX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiLGMsZD1hLm9wdGlvbnMsZT1hLnNlbGVjdGVkSW5kZXgsZj0ic2VsZWN0LW9uZSI9PT1hLnR5cGV8fDA+ZSxnPWY/bnVsbDpbXSxoPWY/ZSsxOmQubGVuZ3RoLGk9MD5lP2g6Zj9lOjA7aD5pO2krKylpZihjPWRbaV0sISghYy5zZWxlY3RlZCYmaSE9PWV8fChrLm9wdERpc2FibGVkP2MuZGlzYWJsZWQ6bnVsbCE9PWMuZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpKXx8Yy5wYXJlbnROb2RlLmRpc2FibGVkJiZtLm5vZGVOYW1lKGMucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2lmKGI9bShjKS52YWwoKSxmKXJldHVybiBiO2cucHVzaChiKX1yZXR1cm4gZ30sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlPWEub3B0aW9ucyxmPW0ubWFrZUFycmF5KGIpLGc9ZS5sZW5ndGg7d2hpbGUoZy0tKWlmKGQ9ZVtnXSxtLmluQXJyYXkobS52YWxIb29rcy5vcHRpb24uZ2V0KGQpLGYpPj0wKXRyeXtkLnNlbGVjdGVkPWM9ITB9Y2F0Y2goaCl7ZC5zY3JvbGxIZWlnaHR9ZWxzZSBkLnNlbGVjdGVkPSExO3JldHVybiBjfHwoYS5zZWxlY3RlZEluZGV4PS0xKSxlfX19fSksbS5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7bS52YWxIb29rc1t0aGlzXT17c2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG0uaXNBcnJheShiKT9hLmNoZWNrZWQ9bS5pbkFycmF5KG0oYSkudmFsKCksYik+PTA6dm9pZCAwfX0say5jaGVja09ufHwobS52YWxIb29rc1t0aGlzXS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PT1hLmdldEF0dHJpYnV0ZSgidmFsdWUiKT8ib24iOmEudmFsdWV9KX0pO3ZhciBtYyxuYyxvYz1tLmV4cHIuYXR0ckhhbmRsZSxwYz0vXig/OmNoZWNrZWR8c2VsZWN0ZWQpJC9pLHFjPWsuZ2V0U2V0QXR0cmlidXRlLHJjPWsuaW5wdXQ7bS5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVih0aGlzLG0uYXR0cixhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7bS5yZW1vdmVBdHRyKHRoaXMsYSl9KX19KSxtLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPWEubm9kZVR5cGU7aWYoYSYmMyE9PWYmJjghPT1mJiYyIT09ZilyZXR1cm4gdHlwZW9mIGEuZ2V0QXR0cmlidXRlPT09Sz9tLnByb3AoYSxiLGMpOigxPT09ZiYmbS5pc1hNTERvYyhhKXx8KGI9Yi50b0xvd2VyQ2FzZSgpLGQ9bS5hdHRySG9va3NbYl18fChtLmV4cHIubWF0Y2guYm9vbC50ZXN0KGIpP25jOm1jKSksdm9pZCAwPT09Yz9kJiYiZ2V0ImluIGQmJm51bGwhPT0oZT1kLmdldChhLGIpKT9lOihlPW0uZmluZC5hdHRyKGEsYiksbnVsbD09ZT92b2lkIDA6ZSk6bnVsbCE9PWM/ZCYmInNldCJpbiBkJiZ2b2lkIDAhPT0oZT1kLnNldChhLGMsYikpP2U6KGEuc2V0QXR0cmlidXRlKGIsYysiIiksYyk6dm9pZCBtLnJlbW92ZUF0dHIoYSxiKSl9LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9MCxmPWImJmIubWF0Y2goRSk7aWYoZiYmMT09PWEubm9kZVR5cGUpd2hpbGUoYz1mW2UrK10pZD1tLnByb3BGaXhbY118fGMsbS5leHByLm1hdGNoLmJvb2wudGVzdChjKT9yYyYmcWN8fCFwYy50ZXN0KGMpP2FbZF09ITE6YVttLmNhbWVsQ2FzZSgiZGVmYXVsdC0iK2MpXT1hW2RdPSExOm0uYXR0cihhLGMsIiIpLGEucmVtb3ZlQXR0cmlidXRlKHFjP2M6ZCl9LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGEsYil7aWYoIWsucmFkaW9WYWx1ZSYmInJhZGlvIj09PWImJm0ubm9kZU5hbWUoYSwiaW5wdXQiKSl7dmFyIGM9YS52YWx1ZTtyZXR1cm4gYS5zZXRBdHRyaWJ1dGUoInR5cGUiLGIpLGMmJihhLnZhbHVlPWMpLGJ9fX19fSksbmM9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGI9PT0hMT9tLnJlbW92ZUF0dHIoYSxjKTpyYyYmcWN8fCFwYy50ZXN0KGMpP2Euc2V0QXR0cmlidXRlKCFxYyYmbS5wcm9wRml4W2NdfHxjLGMpOmFbbS5jYW1lbENhc2UoImRlZmF1bHQtIitjKV09YVtjXT0hMCxjfX0sbS5lYWNoKG0uZXhwci5tYXRjaC5ib29sLnNvdXJjZS5tYXRjaCgvXHcrL2cpLGZ1bmN0aW9uKGEsYil7dmFyIGM9b2NbYl18fG0uZmluZC5hdHRyO29jW2JdPXJjJiZxY3x8IXBjLnRlc3QoYik/ZnVuY3Rpb24oYSxiLGQpe3ZhciBlLGY7cmV0dXJuIGR8fChmPW9jW2JdLG9jW2JdPWUsZT1udWxsIT1jKGEsYixkKT9iLnRvTG93ZXJDYXNlKCk6bnVsbCxvY1tiXT1mKSxlfTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGM/dm9pZCAwOmFbbS5jYW1lbENhc2UoImRlZmF1bHQtIitiKV0/Yi50b0xvd2VyQ2FzZSgpOm51bGx9fSkscmMmJnFjfHwobS5hdHRySG9va3MudmFsdWU9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG0ubm9kZU5hbWUoYSwiaW5wdXQiKT92b2lkKGEuZGVmYXVsdFZhbHVlPWIpOm1jJiZtYy5zZXQoYSxiLGMpfX0pLHFjfHwobWM9e3NldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRBdHRyaWJ1dGVOb2RlKGMpO3JldHVybiBkfHxhLnNldEF0dHJpYnV0ZU5vZGUoZD1hLm93bmVyRG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKGMpKSxkLnZhbHVlPWIrPSIiLCJ2YWx1ZSI9PT1jfHxiPT09YS5nZXRBdHRyaWJ1dGUoYyk/Yjp2b2lkIDB9fSxvYy5pZD1vYy5uYW1lPW9jLmNvb3Jkcz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuIGM/dm9pZCAwOihkPWEuZ2V0QXR0cmlidXRlTm9kZShiKSkmJiIiIT09ZC52YWx1ZT9kLnZhbHVlOm51bGx9LG0udmFsSG9va3MuYnV0dG9uPXtnZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmdldEF0dHJpYnV0ZU5vZGUoYik7cmV0dXJuIGMmJmMuc3BlY2lmaWVkP2MudmFsdWU6dm9pZCAwfSxzZXQ6bWMuc2V0fSxtLmF0dHJIb29rcy5jb250ZW50ZWRpdGFibGU9e3NldDpmdW5jdGlvbihhLGIsYyl7bWMuc2V0KGEsIiI9PT1iPyExOmIsYyl9fSxtLmVhY2goWyJ3aWR0aCIsImhlaWdodCJdLGZ1bmN0aW9uKGEsYil7bS5hdHRySG9va3NbYl09e3NldDpmdW5jdGlvbihhLGMpe3JldHVybiIiPT09Yz8oYS5zZXRBdHRyaWJ1dGUoYiwiYXV0byIpLGMpOnZvaWQgMH19fSkpLGsuc3R5bGV8fChtLmF0dHJIb29rcy5zdHlsZT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnN0eWxlLmNzc1RleHR8fHZvaWQgMH0sc2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuc3R5bGUuY3NzVGV4dD1iKyIifX0pO3ZhciBzYz0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0KSQvaSx0Yz0vXig/OmF8YXJlYSkkL2k7bS5mbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVih0aGlzLG0ucHJvcCxhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihhKXtyZXR1cm4gYT1tLnByb3BGaXhbYV18fGEsdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dHJ5e3RoaXNbYV09dm9pZCAwLGRlbGV0ZSB0aGlzW2FdfWNhdGNoKGIpe319KX19KSxtLmV4dGVuZCh7cHJvcEZpeDp7ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSJ9LHByb3A6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnPWEubm9kZVR5cGU7aWYoYSYmMyE9PWcmJjghPT1nJiYyIT09ZylyZXR1cm4gZj0xIT09Z3x8IW0uaXNYTUxEb2MoYSksZiYmKGI9bS5wcm9wRml4W2JdfHxiLGU9bS5wcm9wSG9va3NbYl0pLHZvaWQgMCE9PWM/ZSYmInNldCJpbiBlJiZ2b2lkIDAhPT0oZD1lLnNldChhLGMsYikpP2Q6YVtiXT1jOmUmJiJnZXQiaW4gZSYmbnVsbCE9PShkPWUuZ2V0KGEsYikpP2Q6YVtiXX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPW0uZmluZC5hdHRyKGEsInRhYmluZGV4Iik7cmV0dXJuIGI/cGFyc2VJbnQoYiwxMCk6c2MudGVzdChhLm5vZGVOYW1lKXx8dGMudGVzdChhLm5vZGVOYW1lKSYmYS5ocmVmPzA6LTF9fX19KSxrLmhyZWZOb3JtYWxpemVkfHxtLmVhY2goWyJocmVmIiwic3JjIl0sZnVuY3Rpb24oYSxiKXttLnByb3BIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZShiLDQpfX19KSxrLm9wdFNlbGVjdGVkfHwobS5wcm9wSG9va3Muc2VsZWN0ZWQ9e2dldDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7cmV0dXJuIGImJihiLnNlbGVjdGVkSW5kZXgsYi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCksbnVsbH19KSxtLmVhY2goWyJ0YWJJbmRleCIsInJlYWRPbmx5IiwibWF4TGVuZ3RoIiwiY2VsbFNwYWNpbmciLCJjZWxsUGFkZGluZyIsInJvd1NwYW4iLCJjb2xTcGFuIiwidXNlTWFwIiwiZnJhbWVCb3JkZXIiLCJjb250ZW50RWRpdGFibGUiXSxmdW5jdGlvbigpe20ucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRoaXN9KSxrLmVuY3R5cGV8fChtLnByb3BGaXguZW5jdHlwZT0iZW5jb2RpbmciKTt2YXIgdWM9L1tcdFxyXG5cZl0vZzttLmZuLmV4dGVuZCh7YWRkQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGg9MCxpPXRoaXMubGVuZ3RoLGo9InN0cmluZyI9PXR5cGVvZiBhJiZhO2lmKG0uaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe20odGhpcykuYWRkQ2xhc3MoYS5jYWxsKHRoaXMsYix0aGlzLmNsYXNzTmFtZSkpfSk7aWYoailmb3IoYj0oYXx8IiIpLm1hdGNoKEUpfHxbXTtpPmg7aCsrKWlmKGM9dGhpc1toXSxkPTE9PT1jLm5vZGVUeXBlJiYoYy5jbGFzc05hbWU/KCIgIitjLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UodWMsIiAiKToiICIpKXtmPTA7d2hpbGUoZT1iW2YrK10pZC5pbmRleE9mKCIgIitlKyIgIik8MCYmKGQrPWUrIiAiKTtnPW0udHJpbShkKSxjLmNsYXNzTmFtZSE9PWcmJihjLmNsYXNzTmFtZT1nKX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGg9MCxpPXRoaXMubGVuZ3RoLGo9MD09PWFyZ3VtZW50cy5sZW5ndGh8fCJzdHJpbmciPT10eXBlb2YgYSYmYTtpZihtLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXttKHRoaXMpLnJlbW92ZUNsYXNzKGEuY2FsbCh0aGlzLGIsdGhpcy5jbGFzc05hbWUpKX0pO2lmKGopZm9yKGI9KGF8fCIiKS5tYXRjaChFKXx8W107aT5oO2grKylpZihjPXRoaXNbaF0sZD0xPT09Yy5ub2RlVHlwZSYmKGMuY2xhc3NOYW1lPygiICIrYy5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKHVjLCIgIik6IiIpKXtmPTA7d2hpbGUoZT1iW2YrK10pd2hpbGUoZC5pbmRleE9mKCIgIitlKyIgIik+PTApZD1kLnJlcGxhY2UoIiAiK2UrIiAiLCIgIik7Zz1hP20udHJpbShkKToiIixjLmNsYXNzTmFtZSE9PWcmJihjLmNsYXNzTmFtZT1nKX1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYTtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBiJiYic3RyaW5nIj09PWM/Yj90aGlzLmFkZENsYXNzKGEpOnRoaXMucmVtb3ZlQ2xhc3MoYSk6dGhpcy5lYWNoKG0uaXNGdW5jdGlvbihhKT9mdW5jdGlvbihjKXttKHRoaXMpLnRvZ2dsZUNsYXNzKGEuY2FsbCh0aGlzLGMsdGhpcy5jbGFzc05hbWUsYiksYil9OmZ1bmN0aW9uKCl7aWYoInN0cmluZyI9PT1jKXt2YXIgYixkPTAsZT1tKHRoaXMpLGY9YS5tYXRjaChFKXx8W107d2hpbGUoYj1mW2QrK10pZS5oYXNDbGFzcyhiKT9lLnJlbW92ZUNsYXNzKGIpOmUuYWRkQ2xhc3MoYil9ZWxzZShjPT09S3x8ImJvb2xlYW4iPT09YykmJih0aGlzLmNsYXNzTmFtZSYmbS5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIix0aGlzLmNsYXNzTmFtZSksdGhpcy5jbGFzc05hbWU9dGhpcy5jbGFzc05hbWV8fGE9PT0hMT8iIjptLl9kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiIpfSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0iICIrYSsiICIsYz0wLGQ9dGhpcy5sZW5ndGg7ZD5jO2MrKylpZigxPT09dGhpc1tjXS5ub2RlVHlwZSYmKCIgIit0aGlzW2NdLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UodWMsIiAiKS5pbmRleE9mKGIpPj0wKXJldHVybiEwO3JldHVybiExfX0pLG0uZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe20uZm5bYl09ZnVuY3Rpb24oYSxjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4wP3RoaXMub24oYixudWxsLGEsYyk6dGhpcy50cmlnZ2VyKGIpfX0pLG0uZm4uZXh0ZW5kKHtob3ZlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoYSkubW91c2VsZWF2ZShifHxhKX0sYmluZDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMub24oYSxudWxsLGIsYyl9LHVuYmluZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm9mZihhLG51bGwsYil9LGRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGIsYSxjLGQpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vZmYoYSwiKioiKTp0aGlzLm9mZihiLGF8fCIqKiIsYyl9fSk7dmFyIHZjPW0ubm93KCksd2M9L1w/Lyx4Yz0vKCwpfChcW3x7KXwofXxdKXwiKD86W14iXFxcclxuXXxcXFsiXFxcL2JmbnJ0XXxcXHVbXGRhLWZBLUZdezR9KSoiXHMqOj98dHJ1ZXxmYWxzZXxudWxsfC0/KD8hMFxkKVxkKyg/OlwuXGQrfCkoPzpbZUVdWystXT9cZCt8KS9nO20ucGFyc2VKU09OPWZ1bmN0aW9uKGIpe2lmKGEuSlNPTiYmYS5KU09OLnBhcnNlKXJldHVybiBhLkpTT04ucGFyc2UoYisiIik7dmFyIGMsZD1udWxsLGU9bS50cmltKGIrIiIpO3JldHVybiBlJiYhbS50cmltKGUucmVwbGFjZSh4YyxmdW5jdGlvbihhLGIsZSxmKXtyZXR1cm4gYyYmYiYmKGQ9MCksMD09PWQ/YTooYz1lfHxiLGQrPSFmLSFlLCIiKX0pKT9GdW5jdGlvbigicmV0dXJuICIrZSkoKTptLmVycm9yKCJJbnZhbGlkIEpTT046ICIrYil9LG0ucGFyc2VYTUw9ZnVuY3Rpb24oYil7dmFyIGMsZDtpZighYnx8InN0cmluZyIhPXR5cGVvZiBiKXJldHVybiBudWxsO3RyeXthLkRPTVBhcnNlcj8oZD1uZXcgRE9NUGFyc2VyLGM9ZC5wYXJzZUZyb21TdHJpbmcoYiwidGV4dC94bWwiKSk6KGM9bmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxET00iKSxjLmFzeW5jPSJmYWxzZSIsYy5sb2FkWE1MKGIpKX1jYXRjaChlKXtjPXZvaWQgMH1yZXR1cm4gYyYmYy5kb2N1bWVudEVsZW1lbnQmJiFjLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpLmxlbmd0aHx8bS5lcnJvcigiSW52YWxpZCBYTUw6ICIrYiksY307dmFyIHljLHpjLEFjPS8jLiokLyxCYz0vKFs/Jl0pXz1bXiZdKi8sQ2M9L14oLio/KTpbIFx0XSooW15cclxuXSopXHI/JC9nbSxEYz0vXig/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLyxFYz0vXig/OkdFVHxIRUFEKSQvLEZjPS9eXC9cLy8sR2M9L14oW1x3ListXSs6KSg/OlwvXC8oPzpbXlwvPyNdKkB8KShbXlwvPyM6XSopKD86OihcZCspfCl8KS8sSGM9e30sSWM9e30sSmM9IiovIi5jb25jYXQoIioiKTt0cnl7emM9bG9jYXRpb24uaHJlZn1jYXRjaChLYyl7emM9eS5jcmVhdGVFbGVtZW50KCJhIiksemMuaHJlZj0iIix6Yz16Yy5ocmVmfXljPUdjLmV4ZWMoemMudG9Mb3dlckNhc2UoKSl8fFtdO2Z1bmN0aW9uIExjKGEpe3JldHVybiBmdW5jdGlvbihiLGMpeyJzdHJpbmciIT10eXBlb2YgYiYmKGM9YixiPSIqIik7dmFyIGQsZT0wLGY9Yi50b0xvd2VyQ2FzZSgpLm1hdGNoKEUpfHxbXTtpZihtLmlzRnVuY3Rpb24oYykpd2hpbGUoZD1mW2UrK10pIisiPT09ZC5jaGFyQXQoMCk/KGQ9ZC5zbGljZSgxKXx8IioiLChhW2RdPWFbZF18fFtdKS51bnNoaWZ0KGMpKTooYVtkXT1hW2RdfHxbXSkucHVzaChjKX19ZnVuY3Rpb24gTWMoYSxiLGMsZCl7dmFyIGU9e30sZj1hPT09SWM7ZnVuY3Rpb24gZyhoKXt2YXIgaTtyZXR1cm4gZVtoXT0hMCxtLmVhY2goYVtoXXx8W10sZnVuY3Rpb24oYSxoKXt2YXIgaj1oKGIsYyxkKTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGp8fGZ8fGVbal0/Zj8hKGk9aik6dm9pZCAwOihiLmRhdGFUeXBlcy51bnNoaWZ0KGopLGcoaiksITEpfSksaX1yZXR1cm4gZyhiLmRhdGFUeXBlc1swXSl8fCFlWyIqIl0mJmcoIioiKX1mdW5jdGlvbiBOYyhhLGIpe3ZhciBjLGQsZT1tLmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9uc3x8e307Zm9yKGQgaW4gYil2b2lkIDAhPT1iW2RdJiYoKGVbZF0/YTpjfHwoYz17fSkpW2RdPWJbZF0pO3JldHVybiBjJiZtLmV4dGVuZCghMCxhLGMpLGF9ZnVuY3Rpb24gT2MoYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5jb250ZW50cyxpPWEuZGF0YVR5cGVzO3doaWxlKCIqIj09PWlbMF0paS5zaGlmdCgpLHZvaWQgMD09PWUmJihlPWEubWltZVR5cGV8fGIuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpKTtpZihlKWZvcihnIGluIGgpaWYoaFtnXSYmaFtnXS50ZXN0KGUpKXtpLnVuc2hpZnQoZyk7YnJlYWt9aWYoaVswXWluIGMpZj1pWzBdO2Vsc2V7Zm9yKGcgaW4gYyl7aWYoIWlbMF18fGEuY29udmVydGVyc1tnKyIgIitpWzBdXSl7Zj1nO2JyZWFrfWR8fChkPWcpfWY9Znx8ZH1yZXR1cm4gZj8oZiE9PWlbMF0mJmkudW5zaGlmdChmKSxjW2ZdKTp2b2lkIDB9ZnVuY3Rpb24gUGMoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqPXt9LGs9YS5kYXRhVHlwZXMuc2xpY2UoKTtpZihrWzFdKWZvcihnIGluIGEuY29udmVydGVycylqW2cudG9Mb3dlckNhc2UoKV09YS5jb252ZXJ0ZXJzW2ddO2Y9ay5zaGlmdCgpO3doaWxlKGYpaWYoYS5yZXNwb25zZUZpZWxkc1tmXSYmKGNbYS5yZXNwb25zZUZpZWxkc1tmXV09YiksIWkmJmQmJmEuZGF0YUZpbHRlciYmKGI9YS5kYXRhRmlsdGVyKGIsYS5kYXRhVHlwZSkpLGk9ZixmPWsuc2hpZnQoKSlpZigiKiI9PT1mKWY9aTtlbHNlIGlmKCIqIiE9PWkmJmkhPT1mKXtpZihnPWpbaSsiICIrZl18fGpbIiogIitmXSwhZylmb3IoZSBpbiBqKWlmKGg9ZS5zcGxpdCgiICIpLGhbMV09PT1mJiYoZz1qW2krIiAiK2hbMF1dfHxqWyIqICIraFswXV0pKXtnPT09ITA/Zz1qW2VdOmpbZV0hPT0hMCYmKGY9aFswXSxrLnVuc2hpZnQoaFsxXSkpO2JyZWFrfWlmKGchPT0hMClpZihnJiZhWyJ0aHJvd3MiXSliPWcoYik7ZWxzZSB0cnl7Yj1nKGIpfWNhdGNoKGwpe3JldHVybntzdGF0ZToicGFyc2VyZXJyb3IiLGVycm9yOmc/bDoiTm8gY29udmVyc2lvbiBmcm9tICIraSsiIHRvICIrZn19fXJldHVybntzdGF0ZToic3VjY2VzcyIsZGF0YTpifX1tLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6emMsdHlwZToiR0VUIixpc0xvY2FsOkRjLnRlc3QoeWNbMV0pLGdsb2JhbDohMCxwcm9jZXNzRGF0YTohMCxhc3luYzohMCxjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04IixhY2NlcHRzOnsiKiI6SmMsdGV4dDoidGV4dC9wbGFpbiIsaHRtbDoidGV4dC9odG1sIix4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGpzb246ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCJ9LGNvbnRlbnRzOnt4bWw6L3htbC8saHRtbDovaHRtbC8sanNvbjovanNvbi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQiLGpzb246InJlc3BvbnNlSlNPTiJ9LGNvbnZlcnRlcnM6eyIqIHRleHQiOlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjptLnBhcnNlSlNPTiwidGV4dCB4bWwiOm0ucGFyc2VYTUx9LGZsYXRPcHRpb25zOnt1cmw6ITAsY29udGV4dDohMH19LGFqYXhTZXR1cDpmdW5jdGlvbihhLGIpe3JldHVybiBiP05jKE5jKGEsbS5hamF4U2V0dGluZ3MpLGIpOk5jKG0uYWpheFNldHRpbmdzLGEpfSxhamF4UHJlZmlsdGVyOkxjKEhjKSxhamF4VHJhbnNwb3J0OkxjKEljKSxhamF4OmZ1bmN0aW9uKGEsYil7Im9iamVjdCI9PXR5cGVvZiBhJiYoYj1hLGE9dm9pZCAwKSxiPWJ8fHt9O3ZhciBjLGQsZSxmLGcsaCxpLGosaz1tLmFqYXhTZXR1cCh7fSxiKSxsPWsuY29udGV4dHx8ayxuPWsuY29udGV4dCYmKGwubm9kZVR5cGV8fGwuanF1ZXJ5KT9tKGwpOm0uZXZlbnQsbz1tLkRlZmVycmVkKCkscD1tLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxxPWsuc3RhdHVzQ29kZXx8e30scj17fSxzPXt9LHQ9MCx1PSJjYW5jZWxlZCIsdj17cmVhZHlTdGF0ZTowLGdldFJlc3BvbnNlSGVhZGVyOmZ1bmN0aW9uKGEpe3ZhciBiO2lmKDI9PT10KXtpZighail7aj17fTt3aGlsZShiPUNjLmV4ZWMoZikpaltiWzFdLnRvTG93ZXJDYXNlKCldPWJbMl19Yj1qW2EudG9Mb3dlckNhc2UoKV19cmV0dXJuIG51bGw9PWI/bnVsbDpifSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXQ/ZjpudWxsfSxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKGEsYil7dmFyIGM9YS50b0xvd2VyQ2FzZSgpO3JldHVybiB0fHwoYT1zW2NdPXNbY118fGEsclthXT1iKSx0aGlzfSxvdmVycmlkZU1pbWVUeXBlOmZ1bmN0aW9uKGEpe3JldHVybiB0fHwoay5taW1lVHlwZT1hKSx0aGlzfSxzdGF0dXNDb2RlOmZ1bmN0aW9uKGEpe3ZhciBiO2lmKGEpaWYoMj50KWZvcihiIGluIGEpcVtiXT1bcVtiXSxhW2JdXTtlbHNlIHYuYWx3YXlzKGFbdi5zdGF0dXNdKTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YXx8dTtyZXR1cm4gaSYmaS5hYm9ydChiKSx4KDAsYiksdGhpc319O2lmKG8ucHJvbWlzZSh2KS5jb21wbGV0ZT1wLmFkZCx2LnN1Y2Nlc3M9di5kb25lLHYuZXJyb3I9di5mYWlsLGsudXJsPSgoYXx8ay51cmx8fHpjKSsiIikucmVwbGFjZShBYywiIikucmVwbGFjZShGYyx5Y1sxXSsiLy8iKSxrLnR5cGU9Yi5tZXRob2R8fGIudHlwZXx8ay5tZXRob2R8fGsudHlwZSxrLmRhdGFUeXBlcz1tLnRyaW0oay5kYXRhVHlwZXx8IioiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKEUpfHxbIiJdLG51bGw9PWsuY3Jvc3NEb21haW4mJihjPUdjLmV4ZWMoay51cmwudG9Mb3dlckNhc2UoKSksay5jcm9zc0RvbWFpbj0hKCFjfHxjWzFdPT09eWNbMV0mJmNbMl09PT15Y1syXSYmKGNbM118fCgiaHR0cDoiPT09Y1sxXT8iODAiOiI0NDMiKSk9PT0oeWNbM118fCgiaHR0cDoiPT09eWNbMV0/IjgwIjoiNDQzIikpKSksay5kYXRhJiZrLnByb2Nlc3NEYXRhJiYic3RyaW5nIiE9dHlwZW9mIGsuZGF0YSYmKGsuZGF0YT1tLnBhcmFtKGsuZGF0YSxrLnRyYWRpdGlvbmFsKSksTWMoSGMsayxiLHYpLDI9PT10KXJldHVybiB2O2g9ay5nbG9iYWwsaCYmMD09PW0uYWN0aXZlKysmJm0uZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0Iiksay50eXBlPWsudHlwZS50b1VwcGVyQ2FzZSgpLGsuaGFzQ29udGVudD0hRWMudGVzdChrLnR5cGUpLGU9ay51cmwsay5oYXNDb250ZW50fHwoay5kYXRhJiYoZT1rLnVybCs9KHdjLnRlc3QoZSk/IiYiOiI/Iikray5kYXRhLGRlbGV0ZSBrLmRhdGEpLGsuY2FjaGU9PT0hMSYmKGsudXJsPUJjLnRlc3QoZSk/ZS5yZXBsYWNlKEJjLCIkMV89Iit2YysrKTplKyh3Yy50ZXN0KGUpPyImIjoiPyIpKyJfPSIrdmMrKykpLGsuaWZNb2RpZmllZCYmKG0ubGFzdE1vZGlmaWVkW2VdJiZ2LnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIixtLmxhc3RNb2RpZmllZFtlXSksbS5ldGFnW2VdJiZ2LnNldFJlcXVlc3RIZWFkZXIoIklmLU5vbmUtTWF0Y2giLG0uZXRhZ1tlXSkpLChrLmRhdGEmJmsuaGFzQ29udGVudCYmay5jb250ZW50VHlwZSE9PSExfHxiLmNvbnRlbnRUeXBlKSYmdi5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLGsuY29udGVudFR5cGUpLHYuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IixrLmRhdGFUeXBlc1swXSYmay5hY2NlcHRzW2suZGF0YVR5cGVzWzBdXT9rLmFjY2VwdHNbay5kYXRhVHlwZXNbMF1dKygiKiIhPT1rLmRhdGFUeXBlc1swXT8iLCAiK0pjKyI7IHE9MC4wMSI6IiIpOmsuYWNjZXB0c1siKiJdKTtmb3IoZCBpbiBrLmhlYWRlcnMpdi5zZXRSZXF1ZXN0SGVhZGVyKGQsay5oZWFkZXJzW2RdKTtpZihrLmJlZm9yZVNlbmQmJihrLmJlZm9yZVNlbmQuY2FsbChsLHYsayk9PT0hMXx8Mj09PXQpKXJldHVybiB2LmFib3J0KCk7dT0iYWJvcnQiO2ZvcihkIGlue3N1Y2Nlc3M6MSxlcnJvcjoxLGNvbXBsZXRlOjF9KXZbZF0oa1tkXSk7aWYoaT1NYyhJYyxrLGIsdikpe3YucmVhZHlTdGF0ZT0xLGgmJm4udHJpZ2dlcigiYWpheFNlbmQiLFt2LGtdKSxrLmFzeW5jJiZrLnRpbWVvdXQ+MCYmKGc9c2V0VGltZW91dChmdW5jdGlvbigpe3YuYWJvcnQoInRpbWVvdXQiKX0say50aW1lb3V0KSk7dHJ5e3Q9MSxpLnNlbmQocix4KX1jYXRjaCh3KXtpZighKDI+dCkpdGhyb3cgdzt4KC0xLHcpfX1lbHNlIHgoLTEsIk5vIFRyYW5zcG9ydCIpO2Z1bmN0aW9uIHgoYSxiLGMsZCl7dmFyIGoscixzLHUsdyx4PWI7MiE9PXQmJih0PTIsZyYmY2xlYXJUaW1lb3V0KGcpLGk9dm9pZCAwLGY9ZHx8IiIsdi5yZWFkeVN0YXRlPWE+MD80OjAsaj1hPj0yMDAmJjMwMD5hfHwzMDQ9PT1hLGMmJih1PU9jKGssdixjKSksdT1QYyhrLHUsdixqKSxqPyhrLmlmTW9kaWZpZWQmJih3PXYuZ2V0UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSx3JiYobS5sYXN0TW9kaWZpZWRbZV09dyksdz12LmdldFJlc3BvbnNlSGVhZGVyKCJldGFnIiksdyYmKG0uZXRhZ1tlXT13KSksMjA0PT09YXx8IkhFQUQiPT09ay50eXBlP3g9Im5vY29udGVudCI6MzA0PT09YT94PSJub3Rtb2RpZmllZCI6KHg9dS5zdGF0ZSxyPXUuZGF0YSxzPXUuZXJyb3Isaj0hcykpOihzPXgsKGF8fCF4KSYmKHg9ImVycm9yIiwwPmEmJihhPTApKSksdi5zdGF0dXM9YSx2LnN0YXR1c1RleHQ9KGJ8fHgpKyIiLGo/by5yZXNvbHZlV2l0aChsLFtyLHgsdl0pOm8ucmVqZWN0V2l0aChsLFt2LHgsc10pLHYuc3RhdHVzQ29kZShxKSxxPXZvaWQgMCxoJiZuLnRyaWdnZXIoaj8iYWpheFN1Y2Nlc3MiOiJhamF4RXJyb3IiLFt2LGssaj9yOnNdKSxwLmZpcmVXaXRoKGwsW3YseF0pLGgmJihuLnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW3Ysa10pLC0tbS5hY3RpdmV8fG0uZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSkpfXJldHVybiB2fSxnZXRKU09OOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbS5nZXQoYSxiLGMsImpzb24iKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG0uZ2V0KGEsdm9pZCAwLGIsInNjcmlwdCIpfX0pLG0uZWFjaChbImdldCIsInBvc3QiXSxmdW5jdGlvbihhLGIpe21bYl09ZnVuY3Rpb24oYSxjLGQsZSl7cmV0dXJuIG0uaXNGdW5jdGlvbihjKSYmKGU9ZXx8ZCxkPWMsYz12b2lkIDApLG0uYWpheCh7dXJsOmEsdHlwZTpiLGRhdGFUeXBlOmUsZGF0YTpjLHN1Y2Nlc3M6ZH0pfX0pLG0uZWFjaChbImFqYXhTdGFydCIsImFqYXhTdG9wIiwiYWpheENvbXBsZXRlIiwiYWpheEVycm9yIiwiYWpheFN1Y2Nlc3MiLCJhamF4U2VuZCJdLGZ1bmN0aW9uKGEsYil7bS5mbltiXT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5vbihiLGEpfX0pLG0uX2V2YWxVcmw9ZnVuY3Rpb24oYSl7cmV0dXJuIG0uYWpheCh7dXJsOmEsdHlwZToiR0VUIixkYXRhVHlwZToic2NyaXB0Iixhc3luYzohMSxnbG9iYWw6ITEsInRocm93cyI6ITB9KX0sbS5mbi5leHRlbmQoe3dyYXBBbGw6ZnVuY3Rpb24oYSl7aWYobS5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7bSh0aGlzKS53cmFwQWxsKGEuY2FsbCh0aGlzLGIpKX0pO2lmKHRoaXNbMF0pe3ZhciBiPW0oYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKTt0aGlzWzBdLnBhcmVudE5vZGUmJmIuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLGIubWFwKGZ1bmN0aW9uKCl7dmFyIGE9dGhpczt3aGlsZShhLmZpcnN0Q2hpbGQmJjE9PT1hLmZpcnN0Q2hpbGQubm9kZVR5cGUpYT1hLmZpcnN0Q2hpbGQ7cmV0dXJuIGF9KS5hcHBlbmQodGhpcyl9cmV0dXJuIHRoaXN9LHdyYXBJbm5lcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKG0uaXNGdW5jdGlvbihhKT9mdW5jdGlvbihiKXttKHRoaXMpLndyYXBJbm5lcihhLmNhbGwodGhpcyxiKSl9OmZ1bmN0aW9uKCl7dmFyIGI9bSh0aGlzKSxjPWIuY29udGVudHMoKTtjLmxlbmd0aD9jLndyYXBBbGwoYSk6Yi5hcHBlbmQoYSl9KX0sd3JhcDpmdW5jdGlvbihhKXt2YXIgYj1tLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXttKHRoaXMpLndyYXBBbGwoYj9hLmNhbGwodGhpcyxjKTphKX0pfSx1bndyYXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCl7bS5ub2RlTmFtZSh0aGlzLCJib2R5Iil8fG0odGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKX0pLmVuZCgpfX0pLG0uZXhwci5maWx0ZXJzLmhpZGRlbj1mdW5jdGlvbihhKXtyZXR1cm4gYS5vZmZzZXRXaWR0aDw9MCYmYS5vZmZzZXRIZWlnaHQ8PTB8fCFrLnJlbGlhYmxlSGlkZGVuT2Zmc2V0cygpJiYibm9uZSI9PT0oYS5zdHlsZSYmYS5zdHlsZS5kaXNwbGF5fHxtLmNzcyhhLCJkaXNwbGF5IikpfSxtLmV4cHIuZmlsdGVycy52aXNpYmxlPWZ1bmN0aW9uKGEpe3JldHVybiFtLmV4cHIuZmlsdGVycy5oaWRkZW4oYSl9O3ZhciBRYz0vJTIwL2csUmM9L1xbXF0kLyxTYz0vXHI/XG4vZyxUYz0vXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksVWM9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pO2Z1bmN0aW9uIFZjKGEsYixjLGQpe3ZhciBlO2lmKG0uaXNBcnJheShiKSltLmVhY2goYixmdW5jdGlvbihiLGUpe2N8fFJjLnRlc3QoYSk/ZChhLGUpOlZjKGErIlsiKygib2JqZWN0Ij09dHlwZW9mIGU/YjoiIikrIl0iLGUsYyxkKX0pO2Vsc2UgaWYoY3x8Im9iamVjdCIhPT1tLnR5cGUoYikpZChhLGIpO2Vsc2UgZm9yKGUgaW4gYilWYyhhKyJbIitlKyJdIixiW2VdLGMsZCl9bS5wYXJhbT1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9W10sZT1mdW5jdGlvbihhLGIpe2I9bS5pc0Z1bmN0aW9uKGIpP2IoKTpudWxsPT1iPyIiOmIsZFtkLmxlbmd0aF09ZW5jb2RlVVJJQ29tcG9uZW50KGEpKyI9IitlbmNvZGVVUklDb21wb25lbnQoYil9O2lmKHZvaWQgMD09PWImJihiPW0uYWpheFNldHRpbmdzJiZtLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCksbS5pc0FycmF5KGEpfHxhLmpxdWVyeSYmIW0uaXNQbGFpbk9iamVjdChhKSltLmVhY2goYSxmdW5jdGlvbigpe2UodGhpcy5uYW1lLHRoaXMudmFsdWUpfSk7ZWxzZSBmb3IoYyBpbiBhKVZjKGMsYVtjXSxiLGUpO3JldHVybiBkLmpvaW4oIiYiKS5yZXBsYWNlKFFjLCIrIil9LG0uZm4uZXh0ZW5kKHtzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gbS5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSxzZXJpYWxpemVBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPW0ucHJvcCh0aGlzLCJlbGVtZW50cyIpO3JldHVybiBhP20ubWFrZUFycmF5KGEpOnRoaXN9KS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgYT10aGlzLnR5cGU7cmV0dXJuIHRoaXMubmFtZSYmIW0odGhpcykuaXMoIjpkaXNhYmxlZCIpJiZVYy50ZXN0KHRoaXMubm9kZU5hbWUpJiYhVGMudGVzdChhKSYmKHRoaXMuY2hlY2tlZHx8IVcudGVzdChhKSl9KS5tYXAoZnVuY3Rpb24oYSxiKXt2YXIgYz1tKHRoaXMpLnZhbCgpO3JldHVybiBudWxsPT1jP251bGw6bS5pc0FycmF5KGMpP20ubWFwKGMsZnVuY3Rpb24oYSl7cmV0dXJue25hbWU6Yi5uYW1lLHZhbHVlOmEucmVwbGFjZShTYywiXHJcbiIpfX0pOntuYW1lOmIubmFtZSx2YWx1ZTpjLnJlcGxhY2UoU2MsIlxyXG4iKX19KS5nZXQoKX19KSxtLmFqYXhTZXR0aW5ncy54aHI9dm9pZCAwIT09YS5BY3RpdmVYT2JqZWN0P2Z1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNMb2NhbCYmL14oZ2V0fHBvc3R8aGVhZHxwdXR8ZGVsZXRlfG9wdGlvbnMpJC9pLnRlc3QodGhpcy50eXBlKSYmWmMoKXx8JGMoKX06WmM7dmFyIFdjPTAsWGM9e30sWWM9bS5hamF4U2V0dGluZ3MueGhyKCk7YS5BY3RpdmVYT2JqZWN0JiZtKGEpLm9uKCJ1bmxvYWQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBhIGluIFhjKVhjW2FdKHZvaWQgMCwhMCl9KSxrLmNvcnM9ISFZYyYmIndpdGhDcmVkZW50aWFscyJpbiBZYyxZYz1rLmFqYXg9ISFZYyxZYyYmbS5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGEpe2lmKCFhLmNyb3NzRG9tYWlufHxrLmNvcnMpe3ZhciBiO3JldHVybntzZW5kOmZ1bmN0aW9uKGMsZCl7dmFyIGUsZj1hLnhocigpLGc9KytXYztpZihmLm9wZW4oYS50eXBlLGEudXJsLGEuYXN5bmMsYS51c2VybmFtZSxhLnBhc3N3b3JkKSxhLnhockZpZWxkcylmb3IoZSBpbiBhLnhockZpZWxkcylmW2VdPWEueGhyRmllbGRzW2VdO2EubWltZVR5cGUmJmYub3ZlcnJpZGVNaW1lVHlwZSYmZi5vdmVycmlkZU1pbWVUeXBlKGEubWltZVR5cGUpLGEuY3Jvc3NEb21haW58fGNbIlgtUmVxdWVzdGVkLVdpdGgiXXx8KGNbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKTtmb3IoZSBpbiBjKXZvaWQgMCE9PWNbZV0mJmYuc2V0UmVxdWVzdEhlYWRlcihlLGNbZV0rIiIpO2Yuc2VuZChhLmhhc0NvbnRlbnQmJmEuZGF0YXx8bnVsbCksYj1mdW5jdGlvbihjLGUpe3ZhciBoLGksajtpZihiJiYoZXx8ND09PWYucmVhZHlTdGF0ZSkpaWYoZGVsZXRlIFhjW2ddLGI9dm9pZCAwLGYub25yZWFkeXN0YXRlY2hhbmdlPW0ubm9vcCxlKTQhPT1mLnJlYWR5U3RhdGUmJmYuYWJvcnQoKTtlbHNle2o9e30saD1mLnN0YXR1cywic3RyaW5nIj09dHlwZW9mIGYucmVzcG9uc2VUZXh0JiYoai50ZXh0PWYucmVzcG9uc2VUZXh0KTt0cnl7aT1mLnN0YXR1c1RleHR9Y2F0Y2goayl7aT0iIn1ofHwhYS5pc0xvY2FsfHxhLmNyb3NzRG9tYWluPzEyMjM9PT1oJiYoaD0yMDQpOmg9ai50ZXh0PzIwMDo0MDR9aiYmZChoLGksaixmLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKX0sYS5hc3luYz80PT09Zi5yZWFkeVN0YXRlP3NldFRpbWVvdXQoYik6Zi5vbnJlYWR5c3RhdGVjaGFuZ2U9WGNbZ109YjpiKCl9LGFib3J0OmZ1bmN0aW9uKCl7YiYmYih2b2lkIDAsITApfX19fSk7ZnVuY3Rpb24gWmMoKXt0cnl7cmV0dXJuIG5ldyBhLlhNTEh0dHBSZXF1ZXN0fWNhdGNoKGIpe319ZnVuY3Rpb24gJGMoKXt0cnl7cmV0dXJuIG5ldyBhLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9Y2F0Y2goYil7fX1tLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntzY3JpcHQ6Lyg/OmphdmF8ZWNtYSlzY3JpcHQvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQiOmZ1bmN0aW9uKGEpe3JldHVybiBtLmdsb2JhbEV2YWwoYSksYX19fSksbS5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEuY2FjaGUmJihhLmNhY2hlPSExKSxhLmNyb3NzRG9tYWluJiYoYS50eXBlPSJHRVQiLGEuZ2xvYmFsPSExKX0pLG0uYWpheFRyYW5zcG9ydCgic2NyaXB0IixmdW5jdGlvbihhKXtpZihhLmNyb3NzRG9tYWluKXt2YXIgYixjPXkuaGVhZHx8bSgiaGVhZCIpWzBdfHx5LmRvY3VtZW50RWxlbWVudDtyZXR1cm57c2VuZDpmdW5jdGlvbihkLGUpe2I9eS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSxiLmFzeW5jPSEwLGEuc2NyaXB0Q2hhcnNldCYmKGIuY2hhcnNldD1hLnNjcmlwdENoYXJzZXQpLGIuc3JjPWEudXJsLGIub25sb2FkPWIub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKGEsYyl7KGN8fCFiLnJlYWR5U3RhdGV8fC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoYi5yZWFkeVN0YXRlKSkmJihiLm9ubG9hZD1iLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGIucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpLGI9bnVsbCxjfHxlKDIwMCwic3VjY2VzcyIpKX0sYy5pbnNlcnRCZWZvcmUoYixjLmZpcnN0Q2hpbGQpfSxhYm9ydDpmdW5jdGlvbigpe2ImJmIub25sb2FkKHZvaWQgMCwhMCl9fX19KTt2YXIgX2M9W10sYWQ9Lyg9KVw/KD89JnwkKXxcP1w/LzttLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGE9X2MucG9wKCl8fG0uZXhwYW5kbysiXyIrdmMrKztyZXR1cm4gdGhpc1thXT0hMCxhfX0pLG0uYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsZnVuY3Rpb24oYixjLGQpe3ZhciBlLGYsZyxoPWIuanNvbnAhPT0hMSYmKGFkLnRlc3QoYi51cmwpPyJ1cmwiOiJzdHJpbmciPT10eXBlb2YgYi5kYXRhJiYhKGIuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmYWQudGVzdChiLmRhdGEpJiYiZGF0YSIpO3JldHVybiBofHwianNvbnAiPT09Yi5kYXRhVHlwZXNbMF0/KGU9Yi5qc29ucENhbGxiYWNrPW0uaXNGdW5jdGlvbihiLmpzb25wQ2FsbGJhY2spP2IuanNvbnBDYWxsYmFjaygpOmIuanNvbnBDYWxsYmFjayxoP2JbaF09YltoXS5yZXBsYWNlKGFkLCIkMSIrZSk6Yi5qc29ucCE9PSExJiYoYi51cmwrPSh3Yy50ZXN0KGIudXJsKT8iJiI6Ij8iKStiLmpzb25wKyI9IitlKSxiLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl09ZnVuY3Rpb24oKXtyZXR1cm4gZ3x8bS5lcnJvcihlKyIgd2FzIG5vdCBjYWxsZWQiKSxnWzBdfSxiLmRhdGFUeXBlc1swXT0ianNvbiIsZj1hW2VdLGFbZV09ZnVuY3Rpb24oKXtnPWFyZ3VtZW50c30sZC5hbHdheXMoZnVuY3Rpb24oKXthW2VdPWYsYltlXSYmKGIuanNvbnBDYWxsYmFjaz1jLmpzb25wQ2FsbGJhY2ssX2MucHVzaChlKSksZyYmbS5pc0Z1bmN0aW9uKGYpJiZmKGdbMF0pLGc9Zj12b2lkIDB9KSwic2NyaXB0Iik6dm9pZCAwfSksbS5wYXJzZUhUTUw9ZnVuY3Rpb24oYSxiLGMpe2lmKCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIG51bGw7ImJvb2xlYW4iPT10eXBlb2YgYiYmKGM9YixiPSExKSxiPWJ8fHk7dmFyIGQ9dS5leGVjKGEpLGU9IWMmJltdO3JldHVybiBkP1tiLmNyZWF0ZUVsZW1lbnQoZFsxXSldOihkPW0uYnVpbGRGcmFnbWVudChbYV0sYixlKSxlJiZlLmxlbmd0aCYmbShlKS5yZW1vdmUoKSxtLm1lcmdlKFtdLGQuY2hpbGROb2RlcykpfTt2YXIgYmQ9bS5mbi5sb2FkO20uZm4ubG9hZD1mdW5jdGlvbihhLGIsYyl7aWYoInN0cmluZyIhPXR5cGVvZiBhJiZiZClyZXR1cm4gYmQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBkLGUsZixnPXRoaXMsaD1hLmluZGV4T2YoIiAiKTtyZXR1cm4gaD49MCYmKGQ9bS50cmltKGEuc2xpY2UoaCxhLmxlbmd0aCkpLGE9YS5zbGljZSgwLGgpKSxtLmlzRnVuY3Rpb24oYik/KGM9YixiPXZvaWQgMCk6YiYmIm9iamVjdCI9PXR5cGVvZiBiJiYoZj0iUE9TVCIpLGcubGVuZ3RoPjAmJm0uYWpheCh7dXJsOmEsdHlwZTpmLGRhdGFUeXBlOiJodG1sIixkYXRhOmJ9KS5kb25lKGZ1bmN0aW9uKGEpe2U9YXJndW1lbnRzLGcuaHRtbChkP20oIjxkaXY+IikuYXBwZW5kKG0ucGFyc2VIVE1MKGEpKS5maW5kKGQpOmEpfSkuY29tcGxldGUoYyYmZnVuY3Rpb24oYSxiKXtnLmVhY2goYyxlfHxbYS5yZXNwb25zZVRleHQsYixhXSl9KSx0aGlzfSxtLmV4cHIuZmlsdGVycy5hbmltYXRlZD1mdW5jdGlvbihhKXtyZXR1cm4gbS5ncmVwKG0udGltZXJzLGZ1bmN0aW9uKGIpe3JldHVybiBhPT09Yi5lbGVtfSkubGVuZ3RofTt2YXIgY2Q9YS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7ZnVuY3Rpb24gZGQoYSl7cmV0dXJuIG0uaXNXaW5kb3coYSk/YTo5PT09YS5ub2RlVHlwZT9hLmRlZmF1bHRWaWV3fHxhLnBhcmVudFdpbmRvdzohMX1tLm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrPW0uY3NzKGEsInBvc2l0aW9uIiksbD1tKGEpLG49e307InN0YXRpYyI9PT1rJiYoYS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSxoPWwub2Zmc2V0KCksZj1tLmNzcyhhLCJ0b3AiKSxpPW0uY3NzKGEsImxlZnQiKSxqPSgiYWJzb2x1dGUiPT09a3x8ImZpeGVkIj09PWspJiZtLmluQXJyYXkoImF1dG8iLFtmLGldKT4tMSxqPyhkPWwucG9zaXRpb24oKSxnPWQudG9wLGU9ZC5sZWZ0KTooZz1wYXJzZUZsb2F0KGYpfHwwLGU9cGFyc2VGbG9hdChpKXx8MCksbS5pc0Z1bmN0aW9uKGIpJiYoYj1iLmNhbGwoYSxjLGgpKSxudWxsIT1iLnRvcCYmKG4udG9wPWIudG9wLWgudG9wK2cpLG51bGwhPWIubGVmdCYmKG4ubGVmdD1iLmxlZnQtaC5sZWZ0K2UpLCJ1c2luZyJpbiBiP2IudXNpbmcuY2FsbChhLG4pOmwuY3NzKG4pfX0sbS5mbi5leHRlbmQoe29mZnNldDpmdW5jdGlvbihhKXtpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiB2b2lkIDA9PT1hP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKGIpe20ub2Zmc2V0LnNldE9mZnNldCh0aGlzLGEsYil9KTt2YXIgYixjLGQ9e3RvcDowLGxlZnQ6MH0sZT10aGlzWzBdLGY9ZSYmZS5vd25lckRvY3VtZW50O2lmKGYpcmV0dXJuIGI9Zi5kb2N1bWVudEVsZW1lbnQsbS5jb250YWlucyhiLGUpPyh0eXBlb2YgZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QhPT1LJiYoZD1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSxjPWRkKGYpLHt0b3A6ZC50b3ArKGMucGFnZVlPZmZzZXR8fGIuc2Nyb2xsVG9wKS0oYi5jbGllbnRUb3B8fDApLGxlZnQ6ZC5sZWZ0KyhjLnBhZ2VYT2Zmc2V0fHxiLnNjcm9sbExlZnQpLShiLmNsaWVudExlZnR8fDApfSk6ZH0scG9zaXRpb246ZnVuY3Rpb24oKXtpZih0aGlzWzBdKXt2YXIgYSxiLGM9e3RvcDowLGxlZnQ6MH0sZD10aGlzWzBdO3JldHVybiJmaXhlZCI9PT1tLmNzcyhkLCJwb3NpdGlvbiIpP2I9ZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTooYT10aGlzLm9mZnNldFBhcmVudCgpLGI9dGhpcy5vZmZzZXQoKSxtLm5vZGVOYW1lKGFbMF0sImh0bWwiKXx8KGM9YS5vZmZzZXQoKSksYy50b3ArPW0uY3NzKGFbMF0sImJvcmRlclRvcFdpZHRoIiwhMCksYy5sZWZ0Kz1tLmNzcyhhWzBdLCJib3JkZXJMZWZ0V2lkdGgiLCEwKSkse3RvcDpiLnRvcC1jLnRvcC1tLmNzcyhkLCJtYXJnaW5Ub3AiLCEwKSxsZWZ0OmIubGVmdC1jLmxlZnQtbS5jc3MoZCwibWFyZ2luTGVmdCIsITApfX19LG9mZnNldFBhcmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPXRoaXMub2Zmc2V0UGFyZW50fHxjZDt3aGlsZShhJiYhbS5ub2RlTmFtZShhLCJodG1sIikmJiJzdGF0aWMiPT09bS5jc3MoYSwicG9zaXRpb24iKSlhPWEub2Zmc2V0UGFyZW50O3JldHVybiBhfHxjZH0pfX0pLG0uZWFjaCh7c2Nyb2xsTGVmdDoicGFnZVhPZmZzZXQiLHNjcm9sbFRvcDoicGFnZVlPZmZzZXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPS9ZLy50ZXN0KGIpO20uZm5bYV09ZnVuY3Rpb24oZCl7cmV0dXJuIFYodGhpcyxmdW5jdGlvbihhLGQsZSl7dmFyIGY9ZGQoYSk7cmV0dXJuIHZvaWQgMD09PWU/Zj9iIGluIGY/ZltiXTpmLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFtkXTphW2RdOnZvaWQoZj9mLnNjcm9sbFRvKGM/bShmKS5zY3JvbGxMZWZ0KCk6ZSxjP2U6bShmKS5zY3JvbGxUb3AoKSk6YVtkXT1lKX0sYSxkLGFyZ3VtZW50cy5sZW5ndGgsbnVsbCl9fSksbS5lYWNoKFsidG9wIiwibGVmdCJdLGZ1bmN0aW9uKGEsYil7bS5jc3NIb29rc1tiXT1MYihrLnBpeGVsUG9zaXRpb24sZnVuY3Rpb24oYSxjKXtyZXR1cm4gYz8oYz1KYihhLGIpLEhiLnRlc3QoYyk/bShhKS5wb3NpdGlvbigpW2JdKyJweCI6Yyk6dm9pZCAwfSl9KSxtLmVhY2goe0hlaWdodDoiaGVpZ2h0IixXaWR0aDoid2lkdGgifSxmdW5jdGlvbihhLGIpe20uZWFjaCh7cGFkZGluZzoiaW5uZXIiK2EsY29udGVudDpiLCIiOiJvdXRlciIrYX0sZnVuY3Rpb24oYyxkKXttLmZuW2RdPWZ1bmN0aW9uKGQsZSl7dmFyIGY9YXJndW1lbnRzLmxlbmd0aCYmKGN8fCJib29sZWFuIiE9dHlwZW9mIGQpLGc9Y3x8KGQ9PT0hMHx8ZT09PSEwPyJtYXJnaW4iOiJib3JkZXIiKTtyZXR1cm4gVih0aGlzLGZ1bmN0aW9uKGIsYyxkKXt2YXIgZTtyZXR1cm4gbS5pc1dpbmRvdyhiKT9iLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsiY2xpZW50IithXTo5PT09Yi5ub2RlVHlwZT8oZT1iLmRvY3VtZW50RWxlbWVudCxNYXRoLm1heChiLmJvZHlbInNjcm9sbCIrYV0sZVsic2Nyb2xsIithXSxiLmJvZHlbIm9mZnNldCIrYV0sZVsib2Zmc2V0IithXSxlWyJjbGllbnQiK2FdKSk6dm9pZCAwPT09ZD9tLmNzcyhiLGMsZyk6bS5zdHlsZShiLGMsZCxnKX0sYixmP2Q6dm9pZCAwLGYsbnVsbCl9fSl9KSxtLmZuLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZW5ndGh9LG0uZm4uYW5kU2VsZj1tLmZuLmFkZEJhY2ssImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZCYmZGVmaW5lKCJqcXVlcnkiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIG19KTt2YXIgZWQ9YS5qUXVlcnksZmQ9YS4kO3JldHVybiBtLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oYil7cmV0dXJuIGEuJD09PW0mJihhLiQ9ZmQpLGImJmEualF1ZXJ5PT09bSYmKGEualF1ZXJ5PWVkKSxtfSx0eXBlb2YgYj09PUsmJihhLmpRdWVyeT1hLiQ9bSksbX0pOwo="></script> | |
| <link href="data:text/css;charset=utf-8,%0A%2Eleaflet%2Dmap%2Dpane%2C%0A%2Eleaflet%2Dtile%2C%0A%2Eleaflet%2Dmarker%2Dicon%2C%0A%2Eleaflet%2Dmarker%2Dshadow%2C%0A%2Eleaflet%2Dtile%2Dpane%2C%0A%2Eleaflet%2Dtile%2Dcontainer%2C%0A%2Eleaflet%2Doverlay%2Dpane%2C%0A%2Eleaflet%2Dshadow%2Dpane%2C%0A%2Eleaflet%2Dmarker%2Dpane%2C%0A%2Eleaflet%2Dpopup%2Dpane%2C%0A%2Eleaflet%2Doverlay%2Dpane%20svg%2C%0A%2Eleaflet%2Dzoom%2Dbox%2C%0A%2Eleaflet%2Dimage%2Dlayer%2C%0A%2Eleaflet%2Dlayer%20%7B%0Aposition%3A%20absolute%3B%0Aleft%3A%200%3B%0Atop%3A%200%3B%0A%7D%0A%2Eleaflet%2Dcontainer%20%7B%0Aoverflow%3A%20hidden%3B%0A%2Dms%2Dtouch%2Daction%3A%20none%3B%0A%7D%0A%2Eleaflet%2Dtile%2C%0A%2Eleaflet%2Dmarker%2Dicon%2C%0A%2Eleaflet%2Dmarker%2Dshadow%20%7B%0A%2Dwebkit%2Duser%2Dselect%3A%20none%3B%0A%2Dmoz%2Duser%2Dselect%3A%20none%3B%0Auser%2Dselect%3A%20none%3B%0A%2Dwebkit%2Duser%2Ddrag%3A%20none%3B%0A%7D%0A%2Eleaflet%2Dmarker%2Dicon%2C%0A%2Eleaflet%2Dmarker%2Dshadow%20%7B%0Adisplay%3A%20block%3B%0A%7D%0A%0A%2Eleaflet%2Dcontainer%20img%20%7B%0Amax%2Dwidth%3A%20none%20%21important%3B%0A%7D%0A%0A%2Eleaflet%2Dcontainer%20img%2Eleaflet%2Dimage%2Dlayer%20%7B%0Amax%2Dwidth%3A%2015000px%20%21important%3B%0A%7D%0A%2Eleaflet%2Dtile%20%7B%0Afilter%3A%20inherit%3B%0Avisibility%3A%20hidden%3B%0A%7D%0A%2Eleaflet%2Dtile%2Dloaded%20%7B%0Avisibility%3A%20inherit%3B%0A%7D%0A%2Eleaflet%2Dzoom%2Dbox%20%7B%0Awidth%3A%200%3B%0Aheight%3A%200%3B%0A%7D%0A%0A%2Eleaflet%2Doverlay%2Dpane%20svg%20%7B%0A%2Dmoz%2Duser%2Dselect%3A%20none%3B%0A%7D%0A%2Eleaflet%2Dtile%2Dpane%20%7B%20z%2Dindex%3A%202%3B%20%7D%0A%2Eleaflet%2Dobjects%2Dpane%20%7B%20z%2Dindex%3A%203%3B%20%7D%0A%2Eleaflet%2Doverlay%2Dpane%20%7B%20z%2Dindex%3A%204%3B%20%7D%0A%2Eleaflet%2Dshadow%2Dpane%20%7B%20z%2Dindex%3A%205%3B%20%7D%0A%2Eleaflet%2Dmarker%2Dpane%20%7B%20z%2Dindex%3A%206%3B%20%7D%0A%2Eleaflet%2Dpopup%2Dpane%20%7B%20z%2Dindex%3A%207%3B%20%7D%0A%2Eleaflet%2Dvml%2Dshape%20%7B%0Awidth%3A%201px%3B%0Aheight%3A%201px%3B%0A%7D%0A%2Elvml%20%7B%0Abehavior%3A%20url%28%23default%23VML%29%3B%0Adisplay%3A%20inline%2Dblock%3B%0Aposition%3A%20absolute%3B%0A%7D%0A%0A%2Eleaflet%2Dcontrol%20%7B%0Aposition%3A%20relative%3B%0Az%2Dindex%3A%207%3B%0Apointer%2Devents%3A%20auto%3B%0A%7D%0A%2Eleaflet%2Dtop%2C%0A%2Eleaflet%2Dbottom%20%7B%0Aposition%3A%20absolute%3B%0Az%2Dindex%3A%201000%3B%0Apointer%2Devents%3A%20none%3B%0A%7D%0A%2Eleaflet%2Dtop%20%7B%0Atop%3A%200%3B%0A%7D%0A%2Eleaflet%2Dright%20%7B%0Aright%3A%200%3B%0A%7D%0A%2Eleaflet%2Dbottom%20%7B%0Abottom%3A%200%3B%0A%7D%0A%2Eleaflet%2Dleft%20%7B%0Aleft%3A%200%3B%0A%7D%0A%2Eleaflet%2Dcontrol%20%7B%0Afloat%3A%20left%3B%0Aclear%3A%20both%3B%0A%7D%0A%2Eleaflet%2Dright%20%2Eleaflet%2Dcontrol%20%7B%0Afloat%3A%20right%3B%0A%7D%0A%2Eleaflet%2Dtop%20%2Eleaflet%2Dcontrol%20%7B%0Amargin%2Dtop%3A%2010px%3B%0A%7D%0A%2Eleaflet%2Dbottom%20%2Eleaflet%2Dcontrol%20%7B%0Amargin%2Dbottom%3A%2010px%3B%0A%7D%0A%2Eleaflet%2Dleft%20%2Eleaflet%2Dcontrol%20%7B%0Amargin%2Dleft%3A%2010px%3B%0A%7D%0A%2Eleaflet%2Dright%20%2Eleaflet%2Dcontrol%20%7B%0Amargin%2Dright%3A%2010px%3B%0A%7D%0A%0A%2Eleaflet%2Dfade%2Danim%20%2Eleaflet%2Dtile%2C%0A%2Eleaflet%2Dfade%2Danim%20%2Eleaflet%2Dpopup%20%7B%0Aopacity%3A%200%3B%0A%2Dwebkit%2Dtransition%3A%20opacity%200%2E2s%20linear%3B%0A%2Dmoz%2Dtransition%3A%20opacity%200%2E2s%20linear%3B%0A%2Do%2Dtransition%3A%20opacity%200%2E2s%20linear%3B%0Atransition%3A%20opacity%200%2E2s%20linear%3B%0A%7D%0A%2Eleaflet%2Dfade%2Danim%20%2Eleaflet%2Dtile%2Dloaded%2C%0A%2Eleaflet%2Dfade%2Danim%20%2Eleaflet%2Dmap%2Dpane%20%2Eleaflet%2Dpopup%20%7B%0Aopacity%3A%201%3B%0A%7D%0A%2Eleaflet%2Dzoom%2Danim%20%2Eleaflet%2Dzoom%2Danimated%20%7B%0A%2Dwebkit%2Dtransition%3A%20%2Dwebkit%2Dtransform%200%2E25s%20cubic%2Dbezier%280%2C0%2C0%2E25%2C1%29%3B%0A%2Dmoz%2Dtransition%3A%20%2Dmoz%2Dtransform%200%2E25s%20cubic%2Dbezier%280%2C0%2C0%2E25%2C1%29%3B%0A%2Do%2Dtransition%3A%20%2Do%2Dtransform%200%2E25s%20cubic%2Dbezier%280%2C0%2C0%2E25%2C1%29%3B%0Atransition%3A%20transform%200%2E25s%20cubic%2Dbezier%280%2C0%2C0%2E25%2C1%29%3B%0A%7D%0A%2Eleaflet%2Dzoom%2Danim%20%2Eleaflet%2Dtile%2C%0A%2Eleaflet%2Dpan%2Danim%20%2Eleaflet%2Dtile%2C%0A%2Eleaflet%2Dtouching%20%2Eleaflet%2Dzoom%2Danimated%20%7B%0A%2Dwebkit%2Dtransition%3A%20none%3B%0A%2Dmoz%2Dtransition%3A%20none%3B%0A%2Do%2Dtransition%3A%20none%3B%0Atransition%3A%20none%3B%0A%7D%0A%2Eleaflet%2Dzoom%2Danim%20%2Eleaflet%2Dzoom%2Dhide%20%7B%0Avisibility%3A%20hidden%3B%0A%7D%0A%0A%2Eleaflet%2Dclickable%20%7B%0Acursor%3A%20pointer%3B%0A%7D%0A%2Eleaflet%2Dcontainer%20%7B%0Acursor%3A%20%2Dwebkit%2Dgrab%3B%0Acursor%3A%20%2Dmoz%2Dgrab%3B%0A%7D%0A%2Eleaflet%2Dpopup%2Dpane%2C%0A%2Eleaflet%2Dcontrol%20%7B%0Acursor%3A%20auto%3B%0A%7D%0A%2Eleaflet%2Ddragging%20%2Eleaflet%2Dcontainer%2C%0A%2Eleaflet%2Ddragging%20%2Eleaflet%2Dclickable%20%7B%0Acursor%3A%20move%3B%0Acursor%3A%20%2Dwebkit%2Dgrabbing%3B%0Acursor%3A%20%2Dmoz%2Dgrabbing%3B%0A%7D%0A%0A%2Eleaflet%2Dcontainer%20%7B%0Abackground%3A%20%23ddd%3B%0Aoutline%3A%200%3B%0A%7D%0A%2Eleaflet%2Dcontainer%20a%20%7B%0Acolor%3A%20%230078A8%3B%0A%7D%0A%2Eleaflet%2Dcontainer%20a%2Eleaflet%2Dactive%20%7B%0Aoutline%3A%202px%20solid%20orange%3B%0A%7D%0A%2Eleaflet%2Dzoom%2Dbox%20%7B%0Aborder%3A%202px%20dotted%20%2338f%3B%0Abackground%3A%20rgba%28255%2C255%2C255%2C0%2E5%29%3B%0A%7D%0A%0A%2Eleaflet%2Dcontainer%20%7B%0Afont%3A%2012px%2F1%2E5%20%22Helvetica%20Neue%22%2C%20Arial%2C%20Helvetica%2C%20sans%2Dserif%3B%0A%7D%0A%0A%2Eleaflet%2Dbar%20%7B%0Abox%2Dshadow%3A%200%201px%205px%20rgba%280%2C0%2C0%2C0%2E65%29%3B%0Aborder%2Dradius%3A%204px%3B%0A%7D%0A%2Eleaflet%2Dbar%20a%2C%0A%2Eleaflet%2Dbar%20a%3Ahover%20%7B%0Abackground%2Dcolor%3A%20%23fff%3B%0Aborder%2Dbottom%3A%201px%20solid%20%23ccc%3B%0Awidth%3A%2026px%3B%0Aheight%3A%2026px%3B%0Aline%2Dheight%3A%2026px%3B%0Adisplay%3A%20block%3B%0Atext%2Dalign%3A%20center%3B%0Atext%2Ddecoration%3A%20none%3B%0Acolor%3A%20black%3B%0A%7D%0A%2Eleaflet%2Dbar%20a%2C%0A%2Eleaflet%2Dcontrol%2Dlayers%2Dtoggle%20%7B%0Abackground%2Dposition%3A%2050%25%2050%25%3B%0Abackground%2Drepeat%3A%20no%2Drepeat%3B%0Adisplay%3A%20block%3B%0A%7D%0A%2Eleaflet%2Dbar%20a%3Ahover%20%7B%0Abackground%2Dcolor%3A%20%23f4f4f4%3B%0A%7D%0A%2Eleaflet%2Dbar%20a%3Afirst%2Dchild%20%7B%0Aborder%2Dtop%2Dleft%2Dradius%3A%204px%3B%0Aborder%2Dtop%2Dright%2Dradius%3A%204px%3B%0A%7D%0A%2Eleaflet%2Dbar%20a%3Alast%2Dchild%20%7B%0Aborder%2Dbottom%2Dleft%2Dradius%3A%204px%3B%0Aborder%2Dbottom%2Dright%2Dradius%3A%204px%3B%0Aborder%2Dbottom%3A%20none%3B%0A%7D%0A%2Eleaflet%2Dbar%20a%2Eleaflet%2Ddisabled%20%7B%0Acursor%3A%20default%3B%0Abackground%2Dcolor%3A%20%23f4f4f4%3B%0Acolor%3A%20%23bbb%3B%0A%7D%0A%2Eleaflet%2Dtouch%20%2Eleaflet%2Dbar%20a%20%7B%0Awidth%3A%2030px%3B%0Aheight%3A%2030px%3B%0Aline%2Dheight%3A%2030px%3B%0A%7D%0A%0A%2Eleaflet%2Dcontrol%2Dzoom%2Din%2C%0A%2Eleaflet%2Dcontrol%2Dzoom%2Dout%20%7B%0Afont%3A%20bold%2018px%20%27Lucida%20Console%27%2C%20Monaco%2C%20monospace%3B%0Atext%2Dindent%3A%201px%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dzoom%2Dout%20%7B%0Afont%2Dsize%3A%2020px%3B%0A%7D%0A%2Eleaflet%2Dtouch%20%2Eleaflet%2Dcontrol%2Dzoom%2Din%20%7B%0Afont%2Dsize%3A%2022px%3B%0A%7D%0A%2Eleaflet%2Dtouch%20%2Eleaflet%2Dcontrol%2Dzoom%2Dout%20%7B%0Afont%2Dsize%3A%2024px%3B%0A%7D%0A%0A%2Eleaflet%2Dcontrol%2Dlayers%20%7B%0Abox%2Dshadow%3A%200%201px%205px%20rgba%280%2C0%2C0%2C0%2E4%29%3B%0Abackground%3A%20%23fff%3B%0Aborder%2Dradius%3A%205px%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dlayers%2Dtoggle%20%7B%0Abackground%2Dimage%3A%20url%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAVbSURBVEiJrZZfSFt3FMe%2Fv3tvbmLUZleNKSHE%2FLGRiNbGRovTtrA9lcFkpcOnMvawwhhjrb3soQ8djGFhXMQNRqEvY3R9kJVuPpRRWQebcdKYxkaHqcHchKJ2rVo1WhNz%2F%2Fz2UOLUadVuv9fvOedzfuec3x9CKcV%2B1qVLlwgAdHV17cuR7AfU29tb43a73wWAVCr1Q0dHx8T%2FCuru7i5ubGw843K5ms1mMwBgdXUV6XQ6HI1Gb3Z2dj7%2Fz6C%2Bvr6T1dXVp6xWa%2Bl2%2Buzs7PLk5OTP7e3tv70S6Pr1647q6uoOt9vtYRjmpcnouo5UKiVPTk72nj17dmpPIEmS%2BIaGhnaPx3O8tLSU3ahRSotyudzrAGAymf4ghGQ36svLy5osywOxWKxPFMX8jqBbt241ejyed%2Bx2e9nWjPL5fK2iKC2UUiMAEELWDAbDEM%2Fz41ttZ2Zmnsmy%2FOPp06ejm0DXrl2rqK2tPeNyuQ7zPL9pi5qmVaytrZ3Qdf3gdiVhGOYvo9H4O8uyc1sSI%2Bl0enR8fPzmuXPn5sjt27ff8nq9bwiCYNpSJsPa2lqzqqr1AF7eJEDnOG7MaDSGCSHKRmFhYSGXTCZ%2FZd1u93dOp3NJEAS9ICqK4snlcm%2Fpuu4EQHaBAADRdf2gqqo1hJBllmUXCsLjx4%2BL7t69e4Ztamqaffjw4QepVOr5oUOHDKqqvqkoShAAvwfA1sVrmlataVqlqqqzvb29lnA43KwoymeEUoqenp7XdF3vW11dPX7s2DHi9XpfgfHPSiaTuHfvHjWbzQMMw7SfP39%2BkUSj0ZOU0qsA%2FEtLSwiHwygpKUFraysOHDiwL0Amk8Hg4CBWVlbQ3NwMi8UCAHFCyIesw%2BH43uFwuAwGg9lkMsHj8SCfzyMUCkFRFNhsNux2YDVNQzQaRSgUgsvlwtGjR2EyvZitbDbL9Pf3H2YDgcD8xMREk67rCZvN5iSEkLKyMrjdbsiyjJGREVgslh13NzU1hf7%2Bfui6jra2NlitVhBCQCmlo6OjoYGBASWbzX5BKKW4cuWKhRDyk67rJ4LBIFNRUbEeaHZ2FpFIBDabDS0tLSgqKipkiqGhITx58gTBYBBWq3XdZ25uDpFIhLIsO8jzfPuFCxeekTt37rQCuAqgfmVlBfF4HOXl5Thy5Ah4%2FsXgUUoRj8chyzIaGhoAALFYDB6PB36%2FH4S8OAH5fB4PHjzA%2FPw8%2FH4%2FSkpKACAB4CPW6%2FXeqKysrOI4rpjnedjtdmSzWUSjURgMBgiCAEIIrFYrHA4HxsfHsbi4iNbWVtjt9nWILMsYGhpCeXk5ampqYDQaC3AyPDxcSy5evPg2IaTL6XTO%2B3y%2BNkIIAwCKoiCRSEBVVTQ1Ne3Yo0wmg%2BHhYXAcB5%2FPB4PBUJBoMpkclGW5lFJ6mVBKIYpiMYDLHMedCgQCnCAI%2FoL1wsICEokEHA4H6uvr1ydQ13WMjY1hamoKPp8PgiBshE%2Fev38%2FoyjKLwA%2BlyTp%2BabbWxTFOgDfCIKAQCAQ4DiutNCjdDqNp0%2BfIhAIAABGRkZQWVkJl8u1Xj5N01Zjsdjw3NwcBfCxJEl%2FFmL%2F6z0SRZEAeJ8QIvp8vsWqqqqWgpbL5RCPxwEAfr9%2F%2FawAwPT0dDgejxfput4D4FtJkjYF3vGFFUWxHMCXRqPxcDAYtBYXF1dtZ5fNZmcikcijbDY7DuBTSZLmt7Pb9c8gimIbIeQrm82Wqaura2EYxggAlFI1Ho8PTk9PmymlnZIkhV4WZ0%2B%2FIFEUOQCdDMO8V19fn2NZ1hCLxaimaTcAdEuSpO4WY1%2F%2FOlEUnQC%2BBkABfCJJ0qO9%2Bv4NmO9xnZob3WcAAAAASUVORK5CYII%3D%29%3B%0Awidth%3A%2036px%3B%0Aheight%3A%2036px%3B%0A%7D%0A%2Eleaflet%2Dretina%20%2Eleaflet%2Dcontrol%2Dlayers%2Dtoggle%20%7B%0Abackground%2Dimage%3A%20url%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAbrwAAG68BXhqRHAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAArPSURBVGiB3Zp7TFvXHce%2F916%2FeBhCDInJwDjGBhvjQHi5SclaKRL5Z1Wl%2FrEq%2FWNr11TJmkpMw900pLVrplJ1cadFarp0zdZmmpZpf3SqNrUKfSnKgwI2sQPGBmNjAsUOxCW8bGzfe8%2F%2BSEAkMfa1A5m075%2F2%2Bf3O%2BZ7X595zLkUIwf%2BT6EdRSWdnp7izs1P8KOqitnqE3n%2F%2F%2FQMajeYZAPD7%2FR8fPXr00lbWt2WGTp48qdRoNC%2Fs2bNHXVhYyALA%2FPy86Pr16wG%2F3%2F%2Fhq6%2B%2BGtqKejfdUGdnJ6XT6Q4bDIZWjUaTNLnf76fcbvdlr9d7vqura1MbsKmGTp8%2BXadWqw%2Fv3bu3UCQS8anKsixLX7t2bT4QCJw%2Ffvy4c7PasCmGTpw4Ia%2BqqnrRZDIZSkpK2ExiZ2dnRYODg%2B7R0dE%2Fv%2Fbaa4sP25aHNnT27Nkf6HS6QwaD4aF2TLfbzXu93gtHjhz5z8PkydrQqVOnKtVq9Y%2Fq6uqUubm5GY3KRopEIiKn0xkKBAJ%2FbW9v92WTI2NDnZ2dYoPB8ILRaGwoKyvjsqk0naamphiXyzXgdrs%2F7OrqSmQSm5GhM2fOHNBoNM%2FU1dVJKYoSFEgIEcVisWYAkEql%2FRRFCRpNQgjldDpjfr%2F%2F42PHjglmlyBDJ0%2BeVO7evfsndXV1FatMEaJEIqGOx%2BMHCCFyAKAoalEikVwSi8UBoTnm5%2BdFTqdzYnx8%2FC9C2JXS0CpT9Hr9gcrKypTb8HrxPJ%2B%2FsrJygOf53cn%2Bp2l6XCaTXaJpekloTp%2FPR3s8nkvp2LWhoXfffbderVYfbmhoKEjHlPVtjcVidSzLNhFCUj67URSVEIlENqlU6gQgKD%2FLsvTAwMBCIBA4%2F8orrziS5r3f0IkTJ%2BQ6ne6IyWQy7NixQ%2FCCZFm2NB6PP8Hz%2FHahMQBA0%2FR3EonkokgkCgqNmZmZEQ8ODrq9Xu%2FZ%2B9l1j6EPPvjgKZ1Od6impoYSmpzneVksFtvHcZxBaEwyMQzjlkqlPTRNrwiNGR4eJl6v98JLL73079XfKEIITp06VVlRUfHj%2Bvr6nZkwJR6P6xOJxH5CiCxTA8lEUdSKWCy%2BKpFIPEJjIpGIyOFw3JyYmDjX3t7uo86dO3fUaDQ2lJeXCzbCcdz2WCz2BM%2Fzpdk1PbVomg5KpdKLDMN8JzRmcnJS5HK5Bhi9Xv9RcXHx7V27dqUd6rtMMcfj8YOEkIKHa3bKeuQsy9bwPC9mGCZEUVTaTWNsbKzQbrc%2FRXV0dBAAMYVCcfnpp5%2BeKC4uTmrsfqY8KqVj161bt2SffPJJRTgcbgUgZVpbW3sIIQei0Wij0%2BksmZubW9DpdEsUdWdf4Hk%2BPxqNHmRZtgWA9NFZWZOU4zgdy7LFd0crDgCEEHz66aelX3zxxfcjkUg9gAmapg8zV65c8fX09PwpHo%2FzhJC22dnZ2oGBARQUFCwVFBTUxOPxQ4QQxf%2FAyD0ihBSxLFtDCCFerzdy%2Fvz5PcFg8CAhRAqgSy6XP%2Ffmm2%2BO3LNtd3R0VFEU9R6AgyKRiNfr9fS%2BffsgFj%2BS8420SiQS6Onpgcfj4VmWpQF8SQh5%2BZ133hldLSNaH%2FDss8%2BGGYYJ3Lhxg9jtdnpoaAiTk5NoampCdXX1IzewXiMjI7DZbJifn4dMJqPNZjNRqVQBjuPC68utjhA1MDDwPIDfASgG7vSGw%2BHA2NgYAEClUmH%2F%2Fv0oKip6pEbm5uZw9epV3LhxAwCg1WpRX1%2B%2FftbcAvCLhoaGjwAQyuFwGDmOOwOgNVnCcDiMvr4%2BzM3NQSaTwWg0orm5GTS9tUd6PM%2Bjv78fLpcLKysrKCoqQktLCxSKDZfzZYZhjjFarfYfKpWqmabppAslNzcXWq0WMpkMwWAQU1NTCAQCyM%2FPx7Zt27bEzMTEBD7%2F%2FHP4fD5QFIWGhgaYzWbk5uZuGMNxXPHXX39tYkwm07nh4eGZ3Nxcz%2Fbt27%2BXrDBFUVAoFNBoNIhEIggGg%2FD5fLh9%2BzaUSuWmbRqRSAQXL15EX18flpeXoVKp8OSTT0KpVGIVI8nk8%2Fn6uru7xYuLi3WrHDr07bffmvx%2Bf295eTktkUiSwlMsFkOlUqGkpAQzMzMIBoPwer0AAKVS%2BVBmHA4HvvrqK4RCIeTl5aG1tRU1NTUpO2t5eXn6s88%2BGx4fHzcDmKVp%2BjBFCMEbb7whW1xc%2FBWAXwJgKysrbS0tLY9TFCXaKBnP8xgaGoLb7QbHcSgtLcW%2BffsyNhYKhdDT04NgMAiGYWAwGFBbW5tyjRJC2L6%2Bvis%2Bn68Jd3bqt%2BVy%2BVuvv%2F76yoYcysvLi5nNZmm6Bi4sLMBmsyEUCkEsFkOv1%2BOxxx5LOw0TiQS%2B%2BeYbeDweJBIJKJVKNDU1oaAg9SNiKBRCb28vu7y8LEISDt1jqLu7ezuAt0Oh0IsjIyNUPB5HeXk5mpubIZWmfuqZmJiA3W7HysoKCgsLU7LrPqagsbERFRUVKfPHYjH09%2FdjcnISEokE1dXVUCqV%2FwLQ3tbWNvmAoe7u7ucBnMRdDrEsC6%2FXu5bAZDKhqqoq5eJMxy4BTHlAhBCMjo5icHAQqx2s0%2BkgEq2thiUAvwFwqq2tjaUuXLhQA%2BCPAL6fLOHCwgJcLhcWFxeFsADAg%2Byqra0FAAwNDQllygN55HI5jEZjqil5HcBPmerq6r%2Ft2LFjL8MwOclKSaVSlJWVQSKRIBQKwefzIRqNYufOnRsu3GTsmp6eFswUlmVht9ths9mQSCRQVVUFo9EImWzjF2OO4%2BROp1NPdXR0JAAsaLVat0ajeXzDCNyZxx6PBzdv3kROTg727t0LtVqdKgTRaBR2ux0A0NjYiJycpP22pkAggGvXrq11ml6vT7t%2Bp6en%2B10uVykhpIzq6OhoA%2FAegEqxWOxsamrKl8vllakShMNhDA8Pr1VqNpuRn5%2BfstJ0WlpaQm9v71pn1dTUpJ2S0Wh02mazTUajUTMAH4CXKUIILBaLDMAqh%2BiSkpIre%2FbsaWEYZsN5wfM8%2FH4%2FAoEAKIqCwWCAyWRKuWkkEyEEg4ODcLvdIIRArVZDo9Gk5ZDb7b4yNTW1xiEAb1mt1ns5ZLFYqnBntA5SFDVlNBqDu3btak7VoOXlZXg8HoTDYeTn56OlpUUwXEOhEPr6%2BrC0tASFQgG9Xo%2B8vLyUMeFweNDhcEg5jqsC8CWAl61Wa3IOrTP2HIDfA9iZk5PT29TUVJ6Tk7MrXeNGRkYghF0bMCWlkUQiMWe324cWFhZaAcwA%2BLnVav37%2FeU2PAq2WCyFALoAHAMQLSsrsxkMhpSPQ%2BnYJYApSeX3%2By%2BPjY3VANgG4AyATqvVOp%2BsbNrbB4vF0nw3SQPDMKP19fUxhUJhShWTjF0AMmEKAGBxcdFns9mWEolEHYABAMesVmt%2FqhhB1ykWi4UBcBzAbwHICwoKLjc2NtaKxeINX18JIZicnMTY2Bh4%2Fs6xGk3T0Gq1KC8vT7l5cBwXuX79et%2Fs7OzjAKIAfg3gtNVqTXvBltGFl8ViKQXwBwA%2FBPCdVqsd1mg0Sd90V7XKLgAZMwXAPwH8zGq1Cj7Iz%2BqO1WKxZMyudErGFKvV2p1pnqwvjbNhVzKlYko27Xroa%2F1s2LWqdEzJRpv2JUkm7BLKlGy0qZ%2FGCGFXJkzJRlvyNVYydkkkktxMmZKNtuzzsvvZBYADEEEGTMlGW%2F4B4Dp2ARkyJRv9F9vsxWD%2F43R9AAAAAElFTkSuQmCC%29%3B%0Abackground%2Dsize%3A%2026px%2026px%3B%0A%7D%0A%2Eleaflet%2Dtouch%20%2Eleaflet%2Dcontrol%2Dlayers%2Dtoggle%20%7B%0Awidth%3A%2044px%3B%0Aheight%3A%2044px%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dlayers%20%2Eleaflet%2Dcontrol%2Dlayers%2Dlist%2C%0A%2Eleaflet%2Dcontrol%2Dlayers%2Dexpanded%20%2Eleaflet%2Dcontrol%2Dlayers%2Dtoggle%20%7B%0Adisplay%3A%20none%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dlayers%2Dexpanded%20%2Eleaflet%2Dcontrol%2Dlayers%2Dlist%20%7B%0Adisplay%3A%20block%3B%0Aposition%3A%20relative%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dlayers%2Dexpanded%20%7B%0Apadding%3A%206px%2010px%206px%206px%3B%0Acolor%3A%20%23333%3B%0Abackground%3A%20%23fff%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dlayers%2Dselector%20%7B%0Amargin%2Dtop%3A%202px%3B%0Aposition%3A%20relative%3B%0Atop%3A%201px%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dlayers%20label%20%7B%0Adisplay%3A%20block%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dlayers%2Dseparator%20%7B%0Aheight%3A%200%3B%0Aborder%2Dtop%3A%201px%20solid%20%23ddd%3B%0Amargin%3A%205px%20%2D10px%205px%20%2D6px%3B%0A%7D%0A%0A%2Eleaflet%2Dcontainer%20%2Eleaflet%2Dcontrol%2Dattribution%20%7B%0Abackground%3A%20%23fff%3B%0Abackground%3A%20rgba%28255%2C%20255%2C%20255%2C%200%2E7%29%3B%0Amargin%3A%200%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dattribution%2C%0A%2Eleaflet%2Dcontrol%2Dscale%2Dline%20%7B%0Apadding%3A%200%205px%3B%0Acolor%3A%20%23333%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dattribution%20a%20%7B%0Atext%2Ddecoration%3A%20none%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dattribution%20a%3Ahover%20%7B%0Atext%2Ddecoration%3A%20underline%3B%0A%7D%0A%2Eleaflet%2Dcontainer%20%2Eleaflet%2Dcontrol%2Dattribution%2C%0A%2Eleaflet%2Dcontainer%20%2Eleaflet%2Dcontrol%2Dscale%20%7B%0Afont%2Dsize%3A%2011px%3B%0A%7D%0A%2Eleaflet%2Dleft%20%2Eleaflet%2Dcontrol%2Dscale%20%7B%0Amargin%2Dleft%3A%205px%3B%0A%7D%0A%2Eleaflet%2Dbottom%20%2Eleaflet%2Dcontrol%2Dscale%20%7B%0Amargin%2Dbottom%3A%205px%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dscale%2Dline%20%7B%0Aborder%3A%202px%20solid%20%23777%3B%0Aborder%2Dtop%3A%20none%3B%0Aline%2Dheight%3A%201%2E1%3B%0Apadding%3A%202px%205px%201px%3B%0Afont%2Dsize%3A%2011px%3B%0Awhite%2Dspace%3A%20nowrap%3B%0Aoverflow%3A%20hidden%3B%0A%2Dmoz%2Dbox%2Dsizing%3A%20content%2Dbox%3B%0Abox%2Dsizing%3A%20content%2Dbox%3B%0Abackground%3A%20%23fff%3B%0Abackground%3A%20rgba%28255%2C%20255%2C%20255%2C%200%2E5%29%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dscale%2Dline%3Anot%28%3Afirst%2Dchild%29%20%7B%0Aborder%2Dtop%3A%202px%20solid%20%23777%3B%0Aborder%2Dbottom%3A%20none%3B%0Amargin%2Dtop%3A%20%2D2px%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dscale%2Dline%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%20%7B%0Aborder%2Dbottom%3A%202px%20solid%20%23777%3B%0A%7D%0A%2Eleaflet%2Dtouch%20%2Eleaflet%2Dcontrol%2Dattribution%2C%0A%2Eleaflet%2Dtouch%20%2Eleaflet%2Dcontrol%2Dlayers%2C%0A%2Eleaflet%2Dtouch%20%2Eleaflet%2Dbar%20%7B%0Abox%2Dshadow%3A%20none%3B%0A%7D%0A%2Eleaflet%2Dtouch%20%2Eleaflet%2Dcontrol%2Dlayers%2C%0A%2Eleaflet%2Dtouch%20%2Eleaflet%2Dbar%20%7B%0Aborder%3A%202px%20solid%20rgba%280%2C0%2C0%2C0%2E2%29%3B%0Abackground%2Dclip%3A%20padding%2Dbox%3B%0A%7D%0A%0A%2Eleaflet%2Dpopup%20%7B%0Aposition%3A%20absolute%3B%0Atext%2Dalign%3A%20center%3B%0A%7D%0A%2Eleaflet%2Dpopup%2Dcontent%2Dwrapper%20%7B%0Apadding%3A%201px%3B%0Atext%2Dalign%3A%20left%3B%0Aborder%2Dradius%3A%2012px%3B%0A%7D%0A%2Eleaflet%2Dpopup%2Dcontent%20%7B%0Amargin%3A%2013px%2019px%3B%0Aline%2Dheight%3A%201%2E4%3B%0A%7D%0A%2Eleaflet%2Dpopup%2Dcontent%20p%20%7B%0Amargin%3A%2018px%200%3B%0A%7D%0A%2Eleaflet%2Dpopup%2Dtip%2Dcontainer%20%7B%0Amargin%3A%200%20auto%3B%0Awidth%3A%2040px%3B%0Aheight%3A%2020px%3B%0Aposition%3A%20relative%3B%0Aoverflow%3A%20hidden%3B%0A%7D%0A%2Eleaflet%2Dpopup%2Dtip%20%7B%0Awidth%3A%2017px%3B%0Aheight%3A%2017px%3B%0Apadding%3A%201px%3B%0Amargin%3A%20%2D10px%20auto%200%3B%0A%2Dwebkit%2Dtransform%3A%20rotate%2845deg%29%3B%0A%2Dmoz%2Dtransform%3A%20rotate%2845deg%29%3B%0A%2Dms%2Dtransform%3A%20rotate%2845deg%29%3B%0A%2Do%2Dtransform%3A%20rotate%2845deg%29%3B%0Atransform%3A%20rotate%2845deg%29%3B%0A%7D%0A%2Eleaflet%2Dpopup%2Dcontent%2Dwrapper%2C%0A%2Eleaflet%2Dpopup%2Dtip%20%7B%0Abackground%3A%20white%3B%0Abox%2Dshadow%3A%200%203px%2014px%20rgba%280%2C0%2C0%2C0%2E4%29%3B%0A%7D%0A%2Eleaflet%2Dcontainer%20a%2Eleaflet%2Dpopup%2Dclose%2Dbutton%20%7B%0Aposition%3A%20absolute%3B%0Atop%3A%200%3B%0Aright%3A%200%3B%0Apadding%3A%204px%204px%200%200%3B%0Atext%2Dalign%3A%20center%3B%0Awidth%3A%2018px%3B%0Aheight%3A%2014px%3B%0Afont%3A%2016px%2F14px%20Tahoma%2C%20Verdana%2C%20sans%2Dserif%3B%0Acolor%3A%20%23c3c3c3%3B%0Atext%2Ddecoration%3A%20none%3B%0Afont%2Dweight%3A%20bold%3B%0Abackground%3A%20transparent%3B%0A%7D%0A%2Eleaflet%2Dcontainer%20a%2Eleaflet%2Dpopup%2Dclose%2Dbutton%3Ahover%20%7B%0Acolor%3A%20%23999%3B%0A%7D%0A%2Eleaflet%2Dpopup%2Dscrolled%20%7B%0Aoverflow%3A%20auto%3B%0Aborder%2Dbottom%3A%201px%20solid%20%23ddd%3B%0Aborder%2Dtop%3A%201px%20solid%20%23ddd%3B%0A%7D%0A%2Eleaflet%2Doldie%20%2Eleaflet%2Dpopup%2Dcontent%2Dwrapper%20%7B%0Azoom%3A%201%3B%0A%7D%0A%2Eleaflet%2Doldie%20%2Eleaflet%2Dpopup%2Dtip%20%7B%0Awidth%3A%2024px%3B%0Amargin%3A%200%20auto%3B%0A%2Dms%2Dfilter%3A%20%22progid%3ADXImageTransform%2EMicrosoft%2EMatrix%28M11%3D0%2E70710678%2C%20M12%3D0%2E70710678%2C%20M21%3D%2D0%2E70710678%2C%20M22%3D0%2E70710678%29%22%3B%0Afilter%3A%20progid%3ADXImageTransform%2EMicrosoft%2EMatrix%28M11%3D0%2E70710678%2C%20M12%3D0%2E70710678%2C%20M21%3D%2D0%2E70710678%2C%20M22%3D0%2E70710678%29%3B%0A%7D%0A%2Eleaflet%2Doldie%20%2Eleaflet%2Dpopup%2Dtip%2Dcontainer%20%7B%0Amargin%2Dtop%3A%20%2D1px%3B%0A%7D%0A%2Eleaflet%2Doldie%20%2Eleaflet%2Dcontrol%2Dzoom%2C%0A%2Eleaflet%2Doldie%20%2Eleaflet%2Dcontrol%2Dlayers%2C%0A%2Eleaflet%2Doldie%20%2Eleaflet%2Dpopup%2Dcontent%2Dwrapper%2C%0A%2Eleaflet%2Doldie%20%2Eleaflet%2Dpopup%2Dtip%20%7B%0Aborder%3A%201px%20solid%20%23999%3B%0A%7D%0A%0A%2Eleaflet%2Ddiv%2Dicon%20%7B%0Abackground%3A%20%23fff%3B%0Aborder%3A%201px%20solid%20%23666%3B%0A%7D%0A" rel="stylesheet" /> | |
| <script src="data:application/x-javascript;base64,LyoKIExlYWZsZXQsIGEgSmF2YVNjcmlwdCBsaWJyYXJ5IGZvciBtb2JpbGUtZnJpZW5kbHkgaW50ZXJhY3RpdmUgbWFwcy4gaHR0cDovL2xlYWZsZXRqcy5jb20KIChjKSAyMDEwLTIwMTMsIFZsYWRpbWlyIEFnYWZvbmtpbgogKGMpIDIwMTAtMjAxMSwgQ2xvdWRNYWRlCiovCiFmdW5jdGlvbih0LGUsaSl7dmFyIG49dC5MLG89e307by52ZXJzaW9uPSIwLjcuMyIsIm9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9bzoiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kJiZkZWZpbmUobyksby5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHQuTD1uLHRoaXN9LHQuTD1vLG8uVXRpbD17ZXh0ZW5kOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixvLHM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO2ZvcihpPTAsbj1zLmxlbmd0aDtuPmk7aSsrKXtvPXNbaV18fHt9O2ZvcihlIGluIG8pby5oYXNPd25Qcm9wZXJ0eShlKSYmKHRbZV09b1tlXSl9cmV0dXJuIHR9LGJpbmQ6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjI/QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpOm51bGw7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkoZSxpfHxhcmd1bWVudHMpfX0sc3RhbXA6ZnVuY3Rpb24oKXt2YXIgdD0wLGU9Il9sZWFmbGV0X2lkIjtyZXR1cm4gZnVuY3Rpb24oaSl7cmV0dXJuIGlbZV09aVtlXXx8Kyt0LGlbZV19fSgpLGludm9rZUVhY2g6ZnVuY3Rpb24odCxlLGkpe3ZhciBuLG87aWYoIm9iamVjdCI9PXR5cGVvZiB0KXtvPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywzKTtmb3IobiBpbiB0KWUuYXBwbHkoaSxbbix0W25dXS5jb25jYXQobykpO3JldHVybiEwfXJldHVybiExfSxsaW1pdEV4ZWNCeUludGVydmFsOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixvO3JldHVybiBmdW5jdGlvbiBzKCl7dmFyIGE9YXJndW1lbnRzO3JldHVybiBuP3ZvaWQobz0hMCk6KG49ITAsc2V0VGltZW91dChmdW5jdGlvbigpe249ITEsbyYmKHMuYXBwbHkoaSxhKSxvPSExKX0sZSksdm9pZCB0LmFwcGx5KGksYSkpfX0sZmFsc2VGbjpmdW5jdGlvbigpe3JldHVybiExfSxmb3JtYXROdW06ZnVuY3Rpb24odCxlKXt2YXIgaT1NYXRoLnBvdygxMCxlfHw1KTtyZXR1cm4gTWF0aC5yb3VuZCh0KmkpL2l9LHRyaW06ZnVuY3Rpb24odCl7cmV0dXJuIHQudHJpbT90LnRyaW0oKTp0LnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0sc3BsaXRXb3JkczpmdW5jdGlvbih0KXtyZXR1cm4gby5VdGlsLnRyaW0odCkuc3BsaXQoL1xzKy8pfSxzZXRPcHRpb25zOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQub3B0aW9ucz1vLmV4dGVuZCh7fSx0Lm9wdGlvbnMsZSksdC5vcHRpb25zfSxnZXRQYXJhbVN0cmluZzpmdW5jdGlvbih0LGUsaSl7dmFyIG49W107Zm9yKHZhciBvIGluIHQpbi5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChpP28udG9VcHBlckNhc2UoKTpvKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KHRbb10pKTtyZXR1cm4oZSYmLTEhPT1lLmluZGV4T2YoIj8iKT8iJiI6Ij8iKStuLmpvaW4oIiYiKX0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5yZXBsYWNlKC9ceyAqKFtcd19dKykgKlx9L2csZnVuY3Rpb24odCxuKXt2YXIgbz1lW25dO2lmKG89PT1pKXRocm93IG5ldyBFcnJvcigiTm8gdmFsdWUgcHJvdmlkZWQgZm9yIHZhcmlhYmxlICIrdCk7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG8mJihvPW8oZSkpLG99KX0saXNBcnJheTpBcnJheS5pc0FycmF5fHxmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSxlbXB0eUltYWdlVXJsOiJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQUFEL0FDd0FBQUFBQVFBQkFBQUNBRHM9In0sZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3ZhciBpLG4sbz1bIndlYmtpdCIsIm1veiIsIm8iLCJtcyJdO2ZvcihpPTA7aTxvLmxlbmd0aCYmIW47aSsrKW49dFtvW2ldK2VdO3JldHVybiBufWZ1bmN0aW9uIGkoZSl7dmFyIGk9K25ldyBEYXRlLG89TWF0aC5tYXgoMCwxNi0oaS1uKSk7cmV0dXJuIG49aStvLHQuc2V0VGltZW91dChlLG8pfXZhciBuPTAscz10LnJlcXVlc3RBbmltYXRpb25GcmFtZXx8ZSgiUmVxdWVzdEFuaW1hdGlvbkZyYW1lIil8fGksYT10LmNhbmNlbEFuaW1hdGlvbkZyYW1lfHxlKCJDYW5jZWxBbmltYXRpb25GcmFtZSIpfHxlKCJDYW5jZWxSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiKXx8ZnVuY3Rpb24oZSl7dC5jbGVhclRpbWVvdXQoZSl9O28uVXRpbC5yZXF1ZXN0QW5pbUZyYW1lPWZ1bmN0aW9uKGUsbixhLHIpe3JldHVybiBlPW8uYmluZChlLG4pLGEmJnM9PT1pP3ZvaWQgZSgpOnMuY2FsbCh0LGUscil9LG8uVXRpbC5jYW5jZWxBbmltRnJhbWU9ZnVuY3Rpb24oZSl7ZSYmYS5jYWxsKHQsZSl9fSgpLG8uZXh0ZW5kPW8uVXRpbC5leHRlbmQsby5iaW5kPW8uVXRpbC5iaW5kLG8uc3RhbXA9by5VdGlsLnN0YW1wLG8uc2V0T3B0aW9ucz1vLlV0aWwuc2V0T3B0aW9ucyxvLkNsYXNzPWZ1bmN0aW9uKCl7fSxvLkNsYXNzLmV4dGVuZD1mdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbigpe3RoaXMuaW5pdGlhbGl6ZSYmdGhpcy5pbml0aWFsaXplLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9pbml0SG9va3MmJnRoaXMuY2FsbEluaXRIb29rcygpfSxpPWZ1bmN0aW9uKCl7fTtpLnByb3RvdHlwZT10aGlzLnByb3RvdHlwZTt2YXIgbj1uZXcgaTtuLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGU9bjtmb3IodmFyIHMgaW4gdGhpcyl0aGlzLmhhc093blByb3BlcnR5KHMpJiYicHJvdG90eXBlIiE9PXMmJihlW3NdPXRoaXNbc10pO3Quc3RhdGljcyYmKG8uZXh0ZW5kKGUsdC5zdGF0aWNzKSxkZWxldGUgdC5zdGF0aWNzKSx0LmluY2x1ZGVzJiYoby5VdGlsLmV4dGVuZC5hcHBseShudWxsLFtuXS5jb25jYXQodC5pbmNsdWRlcykpLGRlbGV0ZSB0LmluY2x1ZGVzKSx0Lm9wdGlvbnMmJm4ub3B0aW9ucyYmKHQub3B0aW9ucz1vLmV4dGVuZCh7fSxuLm9wdGlvbnMsdC5vcHRpb25zKSksby5leHRlbmQobix0KSxuLl9pbml0SG9va3M9W107dmFyIGE9dGhpcztyZXR1cm4gZS5fX3N1cGVyX189YS5wcm90b3R5cGUsbi5jYWxsSW5pdEhvb2tzPWZ1bmN0aW9uKCl7aWYoIXRoaXMuX2luaXRIb29rc0NhbGxlZCl7YS5wcm90b3R5cGUuY2FsbEluaXRIb29rcyYmYS5wcm90b3R5cGUuY2FsbEluaXRIb29rcy5jYWxsKHRoaXMpLHRoaXMuX2luaXRIb29rc0NhbGxlZD0hMDtmb3IodmFyIHQ9MCxlPW4uX2luaXRIb29rcy5sZW5ndGg7ZT50O3QrKyluLl9pbml0SG9va3NbdF0uY2FsbCh0aGlzKX19LGV9LG8uQ2xhc3MuaW5jbHVkZT1mdW5jdGlvbih0KXtvLmV4dGVuZCh0aGlzLnByb3RvdHlwZSx0KX0sby5DbGFzcy5tZXJnZU9wdGlvbnM9ZnVuY3Rpb24odCl7by5leHRlbmQodGhpcy5wcm90b3R5cGUub3B0aW9ucyx0KX0sby5DbGFzcy5hZGRJbml0SG9vaz1mdW5jdGlvbih0KXt2YXIgZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSksaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmZ1bmN0aW9uKCl7dGhpc1t0XS5hcHBseSh0aGlzLGUpfTt0aGlzLnByb3RvdHlwZS5faW5pdEhvb2tzPXRoaXMucHJvdG90eXBlLl9pbml0SG9va3N8fFtdLHRoaXMucHJvdG90eXBlLl9pbml0SG9va3MucHVzaChpKX07dmFyIHM9Il9sZWFmbGV0X2V2ZW50cyI7by5NaXhpbj17fSxvLk1peGluLkV2ZW50cz17YWRkRXZlbnRMaXN0ZW5lcjpmdW5jdGlvbih0LGUsaSl7aWYoby5VdGlsLmludm9rZUVhY2godCx0aGlzLmFkZEV2ZW50TGlzdGVuZXIsdGhpcyxlLGkpKXJldHVybiB0aGlzO3ZhciBuLGEscixoLGwsdSxjLGQ9dGhpc1tzXT10aGlzW3NdfHx7fSxwPWkmJmkhPT10aGlzJiZvLnN0YW1wKGkpO2Zvcih0PW8uVXRpbC5zcGxpdFdvcmRzKHQpLG49MCxhPXQubGVuZ3RoO2E+bjtuKyspcj17YWN0aW9uOmUsY29udGV4dDppfHx0aGlzfSxoPXRbbl0scD8obD1oKyJfaWR4Iix1PWwrIl9sZW4iLGM9ZFtsXT1kW2xdfHx7fSxjW3BdfHwoY1twXT1bXSxkW3VdPShkW3VdfHwwKSsxKSxjW3BdLnB1c2gocikpOihkW2hdPWRbaF18fFtdLGRbaF0ucHVzaChyKSk7cmV0dXJuIHRoaXN9LGhhc0V2ZW50TGlzdGVuZXJzOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXNbc107cmV0dXJuISFlJiYodCBpbiBlJiZlW3RdLmxlbmd0aD4wfHx0KyJfaWR4ImluIGUmJmVbdCsiX2lkeF9sZW4iXT4wKX0scmVtb3ZlRXZlbnRMaXN0ZW5lcjpmdW5jdGlvbih0LGUsaSl7aWYoIXRoaXNbc10pcmV0dXJuIHRoaXM7aWYoIXQpcmV0dXJuIHRoaXMuY2xlYXJBbGxFdmVudExpc3RlbmVycygpO2lmKG8uVXRpbC5pbnZva2VFYWNoKHQsdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyLHRoaXMsZSxpKSlyZXR1cm4gdGhpczt2YXIgbixhLHIsaCxsLHUsYyxkLHAsXz10aGlzW3NdLG09aSYmaSE9PXRoaXMmJm8uc3RhbXAoaSk7Zm9yKHQ9by5VdGlsLnNwbGl0V29yZHModCksbj0wLGE9dC5sZW5ndGg7YT5uO24rKylpZihyPXRbbl0sdT1yKyJfaWR4IixjPXUrIl9sZW4iLGQ9X1t1XSxlKXtpZihoPW0mJmQ/ZFttXTpfW3JdKXtmb3IobD1oLmxlbmd0aC0xO2w+PTA7bC0tKWhbbF0uYWN0aW9uIT09ZXx8aSYmaFtsXS5jb250ZXh0IT09aXx8KHA9aC5zcGxpY2UobCwxKSxwWzBdLmFjdGlvbj1vLlV0aWwuZmFsc2VGbik7aSYmZCYmMD09PWgubGVuZ3RoJiYoZGVsZXRlIGRbbV0sX1tjXS0tKX19ZWxzZSBkZWxldGUgX1tyXSxkZWxldGUgX1t1XSxkZWxldGUgX1tjXTtyZXR1cm4gdGhpc30sY2xlYXJBbGxFdmVudExpc3RlbmVyczpmdW5jdGlvbigpe3JldHVybiBkZWxldGUgdGhpc1tzXSx0aGlzfSxmaXJlRXZlbnQ6ZnVuY3Rpb24odCxlKXtpZighdGhpcy5oYXNFdmVudExpc3RlbmVycyh0KSlyZXR1cm4gdGhpczt2YXIgaSxuLGEscixoLGw9by5VdGlsLmV4dGVuZCh7fSxlLHt0eXBlOnQsdGFyZ2V0OnRoaXN9KSx1PXRoaXNbc107aWYodVt0XSlmb3IoaT11W3RdLnNsaWNlKCksbj0wLGE9aS5sZW5ndGg7YT5uO24rKylpW25dLmFjdGlvbi5jYWxsKGlbbl0uY29udGV4dCxsKTtyPXVbdCsiX2lkeCJdO2ZvcihoIGluIHIpaWYoaT1yW2hdLnNsaWNlKCkpZm9yKG49MCxhPWkubGVuZ3RoO2E+bjtuKyspaVtuXS5hY3Rpb24uY2FsbChpW25dLmNvbnRleHQsbCk7cmV0dXJuIHRoaXN9LGFkZE9uZVRpbWVFdmVudExpc3RlbmVyOmZ1bmN0aW9uKHQsZSxpKXtpZihvLlV0aWwuaW52b2tlRWFjaCh0LHRoaXMuYWRkT25lVGltZUV2ZW50TGlzdGVuZXIsdGhpcyxlLGkpKXJldHVybiB0aGlzO3ZhciBuPW8uYmluZChmdW5jdGlvbigpe3RoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LGUsaSkucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4saSl9LHRoaXMpO3JldHVybiB0aGlzLmFkZEV2ZW50TGlzdGVuZXIodCxlLGkpLmFkZEV2ZW50TGlzdGVuZXIodCxuLGkpfX0sby5NaXhpbi5FdmVudHMub249by5NaXhpbi5FdmVudHMuYWRkRXZlbnRMaXN0ZW5lcixvLk1peGluLkV2ZW50cy5vZmY9by5NaXhpbi5FdmVudHMucmVtb3ZlRXZlbnRMaXN0ZW5lcixvLk1peGluLkV2ZW50cy5vbmNlPW8uTWl4aW4uRXZlbnRzLmFkZE9uZVRpbWVFdmVudExpc3RlbmVyLG8uTWl4aW4uRXZlbnRzLmZpcmU9by5NaXhpbi5FdmVudHMuZmlyZUV2ZW50LGZ1bmN0aW9uKCl7dmFyIG49IkFjdGl2ZVhPYmplY3QiaW4gdCxzPW4mJiFlLmFkZEV2ZW50TGlzdGVuZXIsYT1uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkscj0tMSE9PWEuaW5kZXhPZigid2Via2l0IiksaD0tMSE9PWEuaW5kZXhPZigiY2hyb21lIiksbD0tMSE9PWEuaW5kZXhPZigicGhhbnRvbSIpLHU9LTEhPT1hLmluZGV4T2YoImFuZHJvaWQiKSxjPS0xIT09YS5zZWFyY2goImFuZHJvaWQgWzIzXSIpLGQ9LTEhPT1hLmluZGV4T2YoImdlY2tvIikscD10eXBlb2Ygb3JpZW50YXRpb24hPWkrIiIsXz10Lm5hdmlnYXRvciYmdC5uYXZpZ2F0b3IubXNQb2ludGVyRW5hYmxlZCYmdC5uYXZpZ2F0b3IubXNNYXhUb3VjaFBvaW50cyYmIXQuUG9pbnRlckV2ZW50LG09dC5Qb2ludGVyRXZlbnQmJnQubmF2aWdhdG9yLnBvaW50ZXJFbmFibGVkJiZ0Lm5hdmlnYXRvci5tYXhUb3VjaFBvaW50c3x8XyxmPSJkZXZpY2VQaXhlbFJhdGlvImluIHQmJnQuZGV2aWNlUGl4ZWxSYXRpbz4xfHwibWF0Y2hNZWRpYSJpbiB0JiZ0Lm1hdGNoTWVkaWEoIihtaW4tcmVzb2x1dGlvbjoxNDRkcGkpIikmJnQubWF0Y2hNZWRpYSgiKG1pbi1yZXNvbHV0aW9uOjE0NGRwaSkiKS5tYXRjaGVzLGc9ZS5kb2N1bWVudEVsZW1lbnQsdj1uJiYidHJhbnNpdGlvbiJpbiBnLnN0eWxlLHk9IldlYktpdENTU01hdHJpeCJpbiB0JiYibTExImluIG5ldyB0LldlYktpdENTU01hdHJpeCYmIWMsUD0iTW96UGVyc3BlY3RpdmUiaW4gZy5zdHlsZSxMPSJPVHJhbnNpdGlvbiJpbiBnLnN0eWxlLHg9IXQuTF9ESVNBQkxFXzNEJiYodnx8eXx8UHx8TCkmJiFsLHc9IXQuTF9OT19UT1VDSCYmIWwmJmZ1bmN0aW9uKCl7dmFyIHQ9Im9udG91Y2hzdGFydCI7aWYobXx8dCBpbiBnKXJldHVybiEwO3ZhciBpPWUuY3JlYXRlRWxlbWVudCgiZGl2Iiksbj0hMTtyZXR1cm4gaS5zZXRBdHRyaWJ1dGU/KGkuc2V0QXR0cmlidXRlKHQsInJldHVybjsiKSwiZnVuY3Rpb24iPT10eXBlb2YgaVt0XSYmKG49ITApLGkucmVtb3ZlQXR0cmlidXRlKHQpLGk9bnVsbCxuKTohMX0oKTtvLkJyb3dzZXI9e2llOm4saWVsdDk6cyx3ZWJraXQ6cixnZWNrbzpkJiYhciYmIXQub3BlcmEmJiFuLGFuZHJvaWQ6dSxhbmRyb2lkMjM6YyxjaHJvbWU6aCxpZTNkOnYsd2Via2l0M2Q6eSxnZWNrbzNkOlAsb3BlcmEzZDpMLGFueTNkOngsbW9iaWxlOnAsbW9iaWxlV2Via2l0OnAmJnIsbW9iaWxlV2Via2l0M2Q6cCYmeSxtb2JpbGVPcGVyYTpwJiZ0Lm9wZXJhLHRvdWNoOncsbXNQb2ludGVyOl8scG9pbnRlcjptLHJldGluYTpmfX0oKSxvLlBvaW50PWZ1bmN0aW9uKHQsZSxpKXt0aGlzLng9aT9NYXRoLnJvdW5kKHQpOnQsdGhpcy55PWk/TWF0aC5yb3VuZChlKTplfSxvLlBvaW50LnByb3RvdHlwZT17Y2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG8uUG9pbnQodGhpcy54LHRoaXMueSl9LGFkZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLl9hZGQoby5wb2ludCh0KSl9LF9hZGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueCs9dC54LHRoaXMueSs9dC55LHRoaXN9LHN1YnRyYWN0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuX3N1YnRyYWN0KG8ucG9pbnQodCkpfSxfc3VidHJhY3Q6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueC09dC54LHRoaXMueS09dC55LHRoaXN9LGRpdmlkZUJ5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuX2RpdmlkZUJ5KHQpfSxfZGl2aWRlQnk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueC89dCx0aGlzLnkvPXQsdGhpc30sbXVsdGlwbHlCeTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLl9tdWx0aXBseUJ5KHQpfSxfbXVsdGlwbHlCeTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54Kj10LHRoaXMueSo9dCx0aGlzfSxyb3VuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuX3JvdW5kKCl9LF9yb3VuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLng9TWF0aC5yb3VuZCh0aGlzLngpLHRoaXMueT1NYXRoLnJvdW5kKHRoaXMueSksdGhpc30sZmxvb3I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLl9mbG9vcigpfSxfZmxvb3I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54PU1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9TWF0aC5mbG9vcih0aGlzLnkpLHRoaXN9LGRpc3RhbmNlVG86ZnVuY3Rpb24odCl7dD1vLnBvaW50KHQpO3ZhciBlPXQueC10aGlzLngsaT10LnktdGhpcy55O3JldHVybiBNYXRoLnNxcnQoZSplK2kqaSl9LGVxdWFsczpmdW5jdGlvbih0KXtyZXR1cm4gdD1vLnBvaW50KHQpLHQueD09PXRoaXMueCYmdC55PT09dGhpcy55fSxjb250YWluczpmdW5jdGlvbih0KXtyZXR1cm4gdD1vLnBvaW50KHQpLE1hdGguYWJzKHQueCk8PU1hdGguYWJzKHRoaXMueCkmJk1hdGguYWJzKHQueSk8PU1hdGguYWJzKHRoaXMueSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIlBvaW50KCIrby5VdGlsLmZvcm1hdE51bSh0aGlzLngpKyIsICIrby5VdGlsLmZvcm1hdE51bSh0aGlzLnkpKyIpIn19LG8ucG9pbnQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0IGluc3RhbmNlb2Ygby5Qb2ludD90Om8uVXRpbC5pc0FycmF5KHQpP25ldyBvLlBvaW50KHRbMF0sdFsxXSk6dD09PWl8fG51bGw9PT10P3Q6bmV3IG8uUG9pbnQodCxlLG4pfSxvLkJvdW5kcz1mdW5jdGlvbih0LGUpe2lmKHQpZm9yKHZhciBpPWU/W3QsZV06dCxuPTAsbz1pLmxlbmd0aDtvPm47bisrKXRoaXMuZXh0ZW5kKGlbbl0pfSxvLkJvdW5kcy5wcm90b3R5cGU9e2V4dGVuZDpmdW5jdGlvbih0KXtyZXR1cm4gdD1vLnBvaW50KHQpLHRoaXMubWlufHx0aGlzLm1heD8odGhpcy5taW4ueD1NYXRoLm1pbih0LngsdGhpcy5taW4ueCksdGhpcy5tYXgueD1NYXRoLm1heCh0LngsdGhpcy5tYXgueCksdGhpcy5taW4ueT1NYXRoLm1pbih0LnksdGhpcy5taW4ueSksdGhpcy5tYXgueT1NYXRoLm1heCh0LnksdGhpcy5tYXgueSkpOih0aGlzLm1pbj10LmNsb25lKCksdGhpcy5tYXg9dC5jbG9uZSgpKSx0aGlzfSxnZXRDZW50ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBvLlBvaW50KCh0aGlzLm1pbi54K3RoaXMubWF4LngpLzIsKHRoaXMubWluLnkrdGhpcy5tYXgueSkvMix0KX0sZ2V0Qm90dG9tTGVmdDpmdW5jdGlvbigpe3JldHVybiBuZXcgby5Qb2ludCh0aGlzLm1pbi54LHRoaXMubWF4LnkpfSxnZXRUb3BSaWdodDpmdW5jdGlvbigpe3JldHVybiBuZXcgby5Qb2ludCh0aGlzLm1heC54LHRoaXMubWluLnkpfSxnZXRTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWF4LnN1YnRyYWN0KHRoaXMubWluKX0sY29udGFpbnM6ZnVuY3Rpb24odCl7dmFyIGUsaTtyZXR1cm4gdD0ibnVtYmVyIj09dHlwZW9mIHRbMF18fHQgaW5zdGFuY2VvZiBvLlBvaW50P28ucG9pbnQodCk6by5ib3VuZHModCksdCBpbnN0YW5jZW9mIG8uQm91bmRzPyhlPXQubWluLGk9dC5tYXgpOmU9aT10LGUueD49dGhpcy5taW4ueCYmaS54PD10aGlzLm1heC54JiZlLnk+PXRoaXMubWluLnkmJmkueTw9dGhpcy5tYXgueX0saW50ZXJzZWN0czpmdW5jdGlvbih0KXt0PW8uYm91bmRzKHQpO3ZhciBlPXRoaXMubWluLGk9dGhpcy5tYXgsbj10Lm1pbixzPXQubWF4LGE9cy54Pj1lLngmJm4ueDw9aS54LHI9cy55Pj1lLnkmJm4ueTw9aS55O3JldHVybiBhJiZyfSxpc1ZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuISghdGhpcy5taW58fCF0aGlzLm1heCl9fSxvLmJvdW5kcz1mdW5jdGlvbih0LGUpe3JldHVybiF0fHx0IGluc3RhbmNlb2Ygby5Cb3VuZHM/dDpuZXcgby5Cb3VuZHModCxlKX0sby5UcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0LGUsaSxuKXt0aGlzLl9hPXQsdGhpcy5fYj1lLHRoaXMuX2M9aSx0aGlzLl9kPW59LG8uVHJhbnNmb3JtYXRpb24ucHJvdG90eXBlPXt0cmFuc2Zvcm06ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fdHJhbnNmb3JtKHQuY2xvbmUoKSxlKX0sX3RyYW5zZm9ybTpmdW5jdGlvbih0LGUpe3JldHVybiBlPWV8fDEsdC54PWUqKHRoaXMuX2EqdC54K3RoaXMuX2IpLHQueT1lKih0aGlzLl9jKnQueSt0aGlzLl9kKSx0fSx1bnRyYW5zZm9ybTpmdW5jdGlvbih0LGUpe3JldHVybiBlPWV8fDEsbmV3IG8uUG9pbnQoKHQueC9lLXRoaXMuX2IpL3RoaXMuX2EsKHQueS9lLXRoaXMuX2QpL3RoaXMuX2MpfX0sby5Eb21VdGlsPXtnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P2UuZ2V0RWxlbWVudEJ5SWQodCk6dH0sZ2V0U3R5bGU6ZnVuY3Rpb24odCxpKXt2YXIgbj10LnN0eWxlW2ldO2lmKCFuJiZ0LmN1cnJlbnRTdHlsZSYmKG49dC5jdXJyZW50U3R5bGVbaV0pLCghbnx8ImF1dG8iPT09bikmJmUuZGVmYXVsdFZpZXcpe3ZhciBvPWUuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSh0LG51bGwpO249bz9vW2ldOm51bGx9cmV0dXJuImF1dG8iPT09bj9udWxsOm59LGdldFZpZXdwb3J0T2Zmc2V0OmZ1bmN0aW9uKHQpe3ZhciBpLG49MCxzPTAsYT10LHI9ZS5ib2R5LGg9ZS5kb2N1bWVudEVsZW1lbnQ7ZG97aWYobis9YS5vZmZzZXRUb3B8fDAscys9YS5vZmZzZXRMZWZ0fHwwLG4rPXBhcnNlSW50KG8uRG9tVXRpbC5nZXRTdHlsZShhLCJib3JkZXJUb3BXaWR0aCIpLDEwKXx8MCxzKz1wYXJzZUludChvLkRvbVV0aWwuZ2V0U3R5bGUoYSwiYm9yZGVyTGVmdFdpZHRoIiksMTApfHwwLGk9by5Eb21VdGlsLmdldFN0eWxlKGEsInBvc2l0aW9uIiksYS5vZmZzZXRQYXJlbnQ9PT1yJiYiYWJzb2x1dGUiPT09aSlicmVhaztpZigiZml4ZWQiPT09aSl7bis9ci5zY3JvbGxUb3B8fGguc2Nyb2xsVG9wfHwwLHMrPXIuc2Nyb2xsTGVmdHx8aC5zY3JvbGxMZWZ0fHwwO2JyZWFrfWlmKCJyZWxhdGl2ZSI9PT1pJiYhYS5vZmZzZXRMZWZ0KXt2YXIgbD1vLkRvbVV0aWwuZ2V0U3R5bGUoYSwid2lkdGgiKSx1PW8uRG9tVXRpbC5nZXRTdHlsZShhLCJtYXgtd2lkdGgiKSxjPWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7KCJub25lIiE9PWx8fCJub25lIiE9PXUpJiYocys9Yy5sZWZ0K2EuY2xpZW50TGVmdCksbis9Yy50b3ArKHIuc2Nyb2xsVG9wfHxoLnNjcm9sbFRvcHx8MCk7YnJlYWt9YT1hLm9mZnNldFBhcmVudH13aGlsZShhKTthPXQ7ZG97aWYoYT09PXIpYnJlYWs7bi09YS5zY3JvbGxUb3B8fDAscy09YS5zY3JvbGxMZWZ0fHwwLGE9YS5wYXJlbnROb2RlfXdoaWxlKGEpO3JldHVybiBuZXcgby5Qb2ludChzLG4pfSxkb2N1bWVudElzTHRyOmZ1bmN0aW9uKCl7cmV0dXJuIG8uRG9tVXRpbC5fZG9jSXNMdHJDYWNoZWR8fChvLkRvbVV0aWwuX2RvY0lzTHRyQ2FjaGVkPSEwLG8uRG9tVXRpbC5fZG9jSXNMdHI9Imx0ciI9PT1vLkRvbVV0aWwuZ2V0U3R5bGUoZS5ib2R5LCJkaXJlY3Rpb24iKSksby5Eb21VdGlsLl9kb2NJc0x0cn0sY3JlYXRlOmZ1bmN0aW9uKHQsaSxuKXt2YXIgbz1lLmNyZWF0ZUVsZW1lbnQodCk7cmV0dXJuIG8uY2xhc3NOYW1lPWksbiYmbi5hcHBlbmRDaGlsZChvKSxvfSxoYXNDbGFzczpmdW5jdGlvbih0LGUpe2lmKHQuY2xhc3NMaXN0IT09aSlyZXR1cm4gdC5jbGFzc0xpc3QuY29udGFpbnMoZSk7dmFyIG49by5Eb21VdGlsLl9nZXRDbGFzcyh0KTtyZXR1cm4gbi5sZW5ndGg+MCYmbmV3IFJlZ0V4cCgiKF58XFxzKSIrZSsiKFxcc3wkKSIpLnRlc3Qobil9LGFkZENsYXNzOmZ1bmN0aW9uKHQsZSl7aWYodC5jbGFzc0xpc3QhPT1pKWZvcih2YXIgbj1vLlV0aWwuc3BsaXRXb3JkcyhlKSxzPTAsYT1uLmxlbmd0aDthPnM7cysrKXQuY2xhc3NMaXN0LmFkZChuW3NdKTtlbHNlIGlmKCFvLkRvbVV0aWwuaGFzQ2xhc3ModCxlKSl7dmFyIHI9by5Eb21VdGlsLl9nZXRDbGFzcyh0KTtvLkRvbVV0aWwuX3NldENsYXNzKHQsKHI/cisiICI6IiIpK2UpfX0scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24odCxlKXt0LmNsYXNzTGlzdCE9PWk/dC5jbGFzc0xpc3QucmVtb3ZlKGUpOm8uRG9tVXRpbC5fc2V0Q2xhc3ModCxvLlV0aWwudHJpbSgoIiAiK28uRG9tVXRpbC5fZ2V0Q2xhc3ModCkrIiAiKS5yZXBsYWNlKCIgIitlKyIgIiwiICIpKSl9LF9zZXRDbGFzczpmdW5jdGlvbih0LGUpe3QuY2xhc3NOYW1lLmJhc2VWYWw9PT1pP3QuY2xhc3NOYW1lPWU6dC5jbGFzc05hbWUuYmFzZVZhbD1lfSxfZ2V0Q2xhc3M6ZnVuY3Rpb24odCl7cmV0dXJuIHQuY2xhc3NOYW1lLmJhc2VWYWw9PT1pP3QuY2xhc3NOYW1lOnQuY2xhc3NOYW1lLmJhc2VWYWx9LHNldE9wYWNpdHk6ZnVuY3Rpb24odCxlKXtpZigib3BhY2l0eSJpbiB0LnN0eWxlKXQuc3R5bGUub3BhY2l0eT1lO2Vsc2UgaWYoImZpbHRlciJpbiB0LnN0eWxlKXt2YXIgaT0hMSxuPSJEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYSI7dHJ5e2k9dC5maWx0ZXJzLml0ZW0obil9Y2F0Y2gobyl7aWYoMT09PWUpcmV0dXJufWU9TWF0aC5yb3VuZCgxMDAqZSksaT8oaS5FbmFibGVkPTEwMCE9PWUsaS5PcGFjaXR5PWUpOnQuc3R5bGUuZmlsdGVyKz0iIHByb2dpZDoiK24rIihvcGFjaXR5PSIrZSsiKSJ9fSx0ZXN0UHJvcDpmdW5jdGlvbih0KXtmb3IodmFyIGk9ZS5kb2N1bWVudEVsZW1lbnQuc3R5bGUsbj0wO248dC5sZW5ndGg7bisrKWlmKHRbbl1pbiBpKXJldHVybiB0W25dO3JldHVybiExfSxnZXRUcmFuc2xhdGVTdHJpbmc6ZnVuY3Rpb24odCl7dmFyIGU9by5Ccm93c2VyLndlYmtpdDNkLGk9InRyYW5zbGF0ZSIrKGU/IjNkIjoiIikrIigiLG49KGU/IiwwIjoiIikrIikiO3JldHVybiBpK3QueCsicHgsIit0LnkrInB4IitufSxnZXRTY2FsZVN0cmluZzpmdW5jdGlvbih0LGUpe3ZhciBpPW8uRG9tVXRpbC5nZXRUcmFuc2xhdGVTdHJpbmcoZS5hZGQoZS5tdWx0aXBseUJ5KC0xKnQpKSksbj0iIHNjYWxlKCIrdCsiKSAiO3JldHVybiBpK259LHNldFBvc2l0aW9uOmZ1bmN0aW9uKHQsZSxpKXt0Ll9sZWFmbGV0X3Bvcz1lLCFpJiZvLkJyb3dzZXIuYW55M2Q/dC5zdHlsZVtvLkRvbVV0aWwuVFJBTlNGT1JNXT1vLkRvbVV0aWwuZ2V0VHJhbnNsYXRlU3RyaW5nKGUpOih0LnN0eWxlLmxlZnQ9ZS54KyJweCIsdC5zdHlsZS50b3A9ZS55KyJweCIpfSxnZXRQb3NpdGlvbjpmdW5jdGlvbih0KXtyZXR1cm4gdC5fbGVhZmxldF9wb3N9fSxvLkRvbVV0aWwuVFJBTlNGT1JNPW8uRG9tVXRpbC50ZXN0UHJvcChbInRyYW5zZm9ybSIsIldlYmtpdFRyYW5zZm9ybSIsIk9UcmFuc2Zvcm0iLCJNb3pUcmFuc2Zvcm0iLCJtc1RyYW5zZm9ybSJdKSxvLkRvbVV0aWwuVFJBTlNJVElPTj1vLkRvbVV0aWwudGVzdFByb3AoWyJ3ZWJraXRUcmFuc2l0aW9uIiwidHJhbnNpdGlvbiIsIk9UcmFuc2l0aW9uIiwiTW96VHJhbnNpdGlvbiIsIm1zVHJhbnNpdGlvbiJdKSxvLkRvbVV0aWwuVFJBTlNJVElPTl9FTkQ9IndlYmtpdFRyYW5zaXRpb24iPT09by5Eb21VdGlsLlRSQU5TSVRJT058fCJPVHJhbnNpdGlvbiI9PT1vLkRvbVV0aWwuVFJBTlNJVElPTj9vLkRvbVV0aWwuVFJBTlNJVElPTisiRW5kIjoidHJhbnNpdGlvbmVuZCIsZnVuY3Rpb24oKXtpZigib25zZWxlY3RzdGFydCJpbiBlKW8uZXh0ZW5kKG8uRG9tVXRpbCx7ZGlzYWJsZVRleHRTZWxlY3Rpb246ZnVuY3Rpb24oKXtvLkRvbUV2ZW50Lm9uKHQsInNlbGVjdHN0YXJ0IixvLkRvbUV2ZW50LnByZXZlbnREZWZhdWx0KX0sZW5hYmxlVGV4dFNlbGVjdGlvbjpmdW5jdGlvbigpe28uRG9tRXZlbnQub2ZmKHQsInNlbGVjdHN0YXJ0IixvLkRvbUV2ZW50LnByZXZlbnREZWZhdWx0KX19KTtlbHNle3ZhciBpPW8uRG9tVXRpbC50ZXN0UHJvcChbInVzZXJTZWxlY3QiLCJXZWJraXRVc2VyU2VsZWN0IiwiT1VzZXJTZWxlY3QiLCJNb3pVc2VyU2VsZWN0IiwibXNVc2VyU2VsZWN0Il0pO28uZXh0ZW5kKG8uRG9tVXRpbCx7ZGlzYWJsZVRleHRTZWxlY3Rpb246ZnVuY3Rpb24oKXtpZihpKXt2YXIgdD1lLmRvY3VtZW50RWxlbWVudC5zdHlsZTt0aGlzLl91c2VyU2VsZWN0PXRbaV0sdFtpXT0ibm9uZSJ9fSxlbmFibGVUZXh0U2VsZWN0aW9uOmZ1bmN0aW9uKCl7aSYmKGUuZG9jdW1lbnRFbGVtZW50LnN0eWxlW2ldPXRoaXMuX3VzZXJTZWxlY3QsZGVsZXRlIHRoaXMuX3VzZXJTZWxlY3QpfX0pfW8uZXh0ZW5kKG8uRG9tVXRpbCx7ZGlzYWJsZUltYWdlRHJhZzpmdW5jdGlvbigpe28uRG9tRXZlbnQub24odCwiZHJhZ3N0YXJ0IixvLkRvbUV2ZW50LnByZXZlbnREZWZhdWx0KX0sZW5hYmxlSW1hZ2VEcmFnOmZ1bmN0aW9uKCl7by5Eb21FdmVudC5vZmYodCwiZHJhZ3N0YXJ0IixvLkRvbUV2ZW50LnByZXZlbnREZWZhdWx0KX19KX0oKSxvLkxhdExuZz1mdW5jdGlvbih0LGUsbil7aWYodD1wYXJzZUZsb2F0KHQpLGU9cGFyc2VGbG9hdChlKSxpc05hTih0KXx8aXNOYU4oZSkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIExhdExuZyBvYmplY3Q6ICgiK3QrIiwgIitlKyIpIik7dGhpcy5sYXQ9dCx0aGlzLmxuZz1lLG4hPT1pJiYodGhpcy5hbHQ9cGFyc2VGbG9hdChuKSl9LG8uZXh0ZW5kKG8uTGF0TG5nLHtERUdfVE9fUkFEOk1hdGguUEkvMTgwLFJBRF9UT19ERUc6MTgwL01hdGguUEksTUFYX01BUkdJTjoxZS05fSksby5MYXRMbmcucHJvdG90eXBlPXtlcXVhbHM6ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuITE7dD1vLmxhdExuZyh0KTt2YXIgZT1NYXRoLm1heChNYXRoLmFicyh0aGlzLmxhdC10LmxhdCksTWF0aC5hYnModGhpcy5sbmctdC5sbmcpKTtyZXR1cm4gZTw9by5MYXRMbmcuTUFYX01BUkdJTn0sdG9TdHJpbmc6ZnVuY3Rpb24odCl7cmV0dXJuIkxhdExuZygiK28uVXRpbC5mb3JtYXROdW0odGhpcy5sYXQsdCkrIiwgIitvLlV0aWwuZm9ybWF0TnVtKHRoaXMubG5nLHQpKyIpIn0sZGlzdGFuY2VUbzpmdW5jdGlvbih0KXt0PW8ubGF0TG5nKHQpO3ZhciBlPTYzNzgxMzcsaT1vLkxhdExuZy5ERUdfVE9fUkFELG49KHQubGF0LXRoaXMubGF0KSppLHM9KHQubG5nLXRoaXMubG5nKSppLGE9dGhpcy5sYXQqaSxyPXQubGF0KmksaD1NYXRoLnNpbihuLzIpLGw9TWF0aC5zaW4ocy8yKSx1PWgqaCtsKmwqTWF0aC5jb3MoYSkqTWF0aC5jb3Mocik7cmV0dXJuIDIqZSpNYXRoLmF0YW4yKE1hdGguc3FydCh1KSxNYXRoLnNxcnQoMS11KSl9LHdyYXA6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLmxuZztyZXR1cm4gdD10fHwtMTgwLGU9ZXx8MTgwLGk9KGkrZSklKGUtdCkrKHQ+aXx8aT09PWU/ZTp0KSxuZXcgby5MYXRMbmcodGhpcy5sYXQsaSl9fSxvLmxhdExuZz1mdW5jdGlvbih0LGUpe3JldHVybiB0IGluc3RhbmNlb2Ygby5MYXRMbmc/dDpvLlV0aWwuaXNBcnJheSh0KT8ibnVtYmVyIj09dHlwZW9mIHRbMF18fCJzdHJpbmciPT10eXBlb2YgdFswXT9uZXcgby5MYXRMbmcodFswXSx0WzFdLHRbMl0pOm51bGw6dD09PWl8fG51bGw9PT10P3Q6Im9iamVjdCI9PXR5cGVvZiB0JiYibGF0ImluIHQ/bmV3IG8uTGF0TG5nKHQubGF0LCJsbmciaW4gdD90LmxuZzp0Lmxvbik6ZT09PWk/bnVsbDpuZXcgby5MYXRMbmcodCxlKX0sby5MYXRMbmdCb3VuZHM9ZnVuY3Rpb24odCxlKXtpZih0KWZvcih2YXIgaT1lP1t0LGVdOnQsbj0wLG89aS5sZW5ndGg7bz5uO24rKyl0aGlzLmV4dGVuZChpW25dKX0sby5MYXRMbmdCb3VuZHMucHJvdG90eXBlPXtleHRlbmQ6ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuIHRoaXM7dmFyIGU9by5sYXRMbmcodCk7cmV0dXJuIHQ9bnVsbCE9PWU/ZTpvLmxhdExuZ0JvdW5kcyh0KSx0IGluc3RhbmNlb2Ygby5MYXRMbmc/dGhpcy5fc291dGhXZXN0fHx0aGlzLl9ub3J0aEVhc3Q/KHRoaXMuX3NvdXRoV2VzdC5sYXQ9TWF0aC5taW4odC5sYXQsdGhpcy5fc291dGhXZXN0LmxhdCksdGhpcy5fc291dGhXZXN0LmxuZz1NYXRoLm1pbih0LmxuZyx0aGlzLl9zb3V0aFdlc3QubG5nKSx0aGlzLl9ub3J0aEVhc3QubGF0PU1hdGgubWF4KHQubGF0LHRoaXMuX25vcnRoRWFzdC5sYXQpLHRoaXMuX25vcnRoRWFzdC5sbmc9TWF0aC5tYXgodC5sbmcsdGhpcy5fbm9ydGhFYXN0LmxuZykpOih0aGlzLl9zb3V0aFdlc3Q9bmV3IG8uTGF0TG5nKHQubGF0LHQubG5nKSx0aGlzLl9ub3J0aEVhc3Q9bmV3IG8uTGF0TG5nKHQubGF0LHQubG5nKSk6dCBpbnN0YW5jZW9mIG8uTGF0TG5nQm91bmRzJiYodGhpcy5leHRlbmQodC5fc291dGhXZXN0KSx0aGlzLmV4dGVuZCh0Ll9ub3J0aEVhc3QpKSx0aGlzfSxwYWQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fc291dGhXZXN0LGk9dGhpcy5fbm9ydGhFYXN0LG49TWF0aC5hYnMoZS5sYXQtaS5sYXQpKnQscz1NYXRoLmFicyhlLmxuZy1pLmxuZykqdDtyZXR1cm4gbmV3IG8uTGF0TG5nQm91bmRzKG5ldyBvLkxhdExuZyhlLmxhdC1uLGUubG5nLXMpLG5ldyBvLkxhdExuZyhpLmxhdCtuLGkubG5nK3MpKX0sZ2V0Q2VudGVyOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBvLkxhdExuZygodGhpcy5fc291dGhXZXN0LmxhdCt0aGlzLl9ub3J0aEVhc3QubGF0KS8yLCh0aGlzLl9zb3V0aFdlc3QubG5nK3RoaXMuX25vcnRoRWFzdC5sbmcpLzIpfSxnZXRTb3V0aFdlc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc291dGhXZXN0fSxnZXROb3J0aEVhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbm9ydGhFYXN0fSxnZXROb3J0aFdlc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG8uTGF0TG5nKHRoaXMuZ2V0Tm9ydGgoKSx0aGlzLmdldFdlc3QoKSl9LGdldFNvdXRoRWFzdDpmdW5jdGlvbigpe3JldHVybiBuZXcgby5MYXRMbmcodGhpcy5nZXRTb3V0aCgpLHRoaXMuZ2V0RWFzdCgpKX0sZ2V0V2VzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zb3V0aFdlc3QubG5nfSxnZXRTb3V0aDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zb3V0aFdlc3QubGF0fSxnZXRFYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX25vcnRoRWFzdC5sbmd9LGdldE5vcnRoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX25vcnRoRWFzdC5sYXR9LGNvbnRhaW5zOmZ1bmN0aW9uKHQpe3Q9Im51bWJlciI9PXR5cGVvZiB0WzBdfHx0IGluc3RhbmNlb2Ygby5MYXRMbmc/by5sYXRMbmcodCk6by5sYXRMbmdCb3VuZHModCk7dmFyIGUsaSxuPXRoaXMuX3NvdXRoV2VzdCxzPXRoaXMuX25vcnRoRWFzdDtyZXR1cm4gdCBpbnN0YW5jZW9mIG8uTGF0TG5nQm91bmRzPyhlPXQuZ2V0U291dGhXZXN0KCksaT10LmdldE5vcnRoRWFzdCgpKTplPWk9dCxlLmxhdD49bi5sYXQmJmkubGF0PD1zLmxhdCYmZS5sbmc+PW4ubG5nJiZpLmxuZzw9cy5sbmd9LGludGVyc2VjdHM6ZnVuY3Rpb24odCl7dD1vLmxhdExuZ0JvdW5kcyh0KTt2YXIgZT10aGlzLl9zb3V0aFdlc3QsaT10aGlzLl9ub3J0aEVhc3Qsbj10LmdldFNvdXRoV2VzdCgpLHM9dC5nZXROb3J0aEVhc3QoKSxhPXMubGF0Pj1lLmxhdCYmbi5sYXQ8PWkubGF0LHI9cy5sbmc+PWUubG5nJiZuLmxuZzw9aS5sbmc7cmV0dXJuIGEmJnJ9LHRvQkJveFN0cmluZzpmdW5jdGlvbigpe3JldHVyblt0aGlzLmdldFdlc3QoKSx0aGlzLmdldFNvdXRoKCksdGhpcy5nZXRFYXN0KCksdGhpcy5nZXROb3J0aCgpXS5qb2luKCIsIil9LGVxdWFsczpmdW5jdGlvbih0KXtyZXR1cm4gdD8odD1vLmxhdExuZ0JvdW5kcyh0KSx0aGlzLl9zb3V0aFdlc3QuZXF1YWxzKHQuZ2V0U291dGhXZXN0KCkpJiZ0aGlzLl9ub3J0aEVhc3QuZXF1YWxzKHQuZ2V0Tm9ydGhFYXN0KCkpKTohMX0saXNWYWxpZDpmdW5jdGlvbigpe3JldHVybiEoIXRoaXMuX3NvdXRoV2VzdHx8IXRoaXMuX25vcnRoRWFzdCl9fSxvLmxhdExuZ0JvdW5kcz1mdW5jdGlvbih0LGUpe3JldHVybiF0fHx0IGluc3RhbmNlb2Ygby5MYXRMbmdCb3VuZHM/dDpuZXcgby5MYXRMbmdCb3VuZHModCxlKX0sby5Qcm9qZWN0aW9uPXt9LG8uUHJvamVjdGlvbi5TcGhlcmljYWxNZXJjYXRvcj17TUFYX0xBVElUVURFOjg1LjA1MTEyODc3OTgscHJvamVjdDpmdW5jdGlvbih0KXt2YXIgZT1vLkxhdExuZy5ERUdfVE9fUkFELGk9dGhpcy5NQVhfTEFUSVRVREUsbj1NYXRoLm1heChNYXRoLm1pbihpLHQubGF0KSwtaSkscz10LmxuZyplLGE9biplO3JldHVybiBhPU1hdGgubG9nKE1hdGgudGFuKE1hdGguUEkvNCthLzIpKSxuZXcgby5Qb2ludChzLGEpfSx1bnByb2plY3Q6ZnVuY3Rpb24odCl7dmFyIGU9by5MYXRMbmcuUkFEX1RPX0RFRyxpPXQueCplLG49KDIqTWF0aC5hdGFuKE1hdGguZXhwKHQueSkpLU1hdGguUEkvMikqZTtyZXR1cm4gbmV3IG8uTGF0TG5nKG4saSl9fSxvLlByb2plY3Rpb24uTG9uTGF0PXtwcm9qZWN0OmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgby5Qb2ludCh0LmxuZyx0LmxhdCl9LHVucHJvamVjdDpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IG8uTGF0TG5nKHQueSx0LngpfX0sby5DUlM9e2xhdExuZ1RvUG9pbnQ6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnByb2plY3Rpb24ucHJvamVjdCh0KSxuPXRoaXMuc2NhbGUoZSk7cmV0dXJuIHRoaXMudHJhbnNmb3JtYXRpb24uX3RyYW5zZm9ybShpLG4pfSxwb2ludFRvTGF0TG5nOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zY2FsZShlKSxuPXRoaXMudHJhbnNmb3JtYXRpb24udW50cmFuc2Zvcm0odCxpKTtyZXR1cm4gdGhpcy5wcm9qZWN0aW9uLnVucHJvamVjdChuKX0scHJvamVjdDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wcm9qZWN0aW9uLnByb2plY3QodCl9LHNjYWxlOmZ1bmN0aW9uKHQpe3JldHVybiAyNTYqTWF0aC5wb3coMix0KX0sZ2V0U2l6ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnNjYWxlKHQpO3JldHVybiBvLnBvaW50KGUsZSl9fSxvLkNSUy5TaW1wbGU9by5leHRlbmQoe30sby5DUlMse3Byb2plY3Rpb246by5Qcm9qZWN0aW9uLkxvbkxhdCx0cmFuc2Zvcm1hdGlvbjpuZXcgby5UcmFuc2Zvcm1hdGlvbigxLDAsLTEsMCksc2NhbGU6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucG93KDIsdCl9fSksby5DUlMuRVBTRzM4NTc9by5leHRlbmQoe30sby5DUlMse2NvZGU6IkVQU0c6Mzg1NyIscHJvamVjdGlvbjpvLlByb2plY3Rpb24uU3BoZXJpY2FsTWVyY2F0b3IsdHJhbnNmb3JtYXRpb246bmV3IG8uVHJhbnNmb3JtYXRpb24oLjUvTWF0aC5QSSwuNSwtLjUvTWF0aC5QSSwuNSkscHJvamVjdDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnByb2plY3Rpb24ucHJvamVjdCh0KSxpPTYzNzgxMzc7cmV0dXJuIGUubXVsdGlwbHlCeShpKX19KSxvLkNSUy5FUFNHOTAwOTEzPW8uZXh0ZW5kKHt9LG8uQ1JTLkVQU0czODU3LHtjb2RlOiJFUFNHOjkwMDkxMyJ9KSxvLkNSUy5FUFNHNDMyNj1vLmV4dGVuZCh7fSxvLkNSUyx7Y29kZToiRVBTRzo0MzI2Iixwcm9qZWN0aW9uOm8uUHJvamVjdGlvbi5Mb25MYXQsdHJhbnNmb3JtYXRpb246bmV3IG8uVHJhbnNmb3JtYXRpb24oMS8zNjAsLjUsLTEvMzYwLC41KX0pLG8uTWFwPW8uQ2xhc3MuZXh0ZW5kKHtpbmNsdWRlczpvLk1peGluLkV2ZW50cyxvcHRpb25zOntjcnM6by5DUlMuRVBTRzM4NTcsZmFkZUFuaW1hdGlvbjpvLkRvbVV0aWwuVFJBTlNJVElPTiYmIW8uQnJvd3Nlci5hbmRyb2lkMjMsdHJhY2tSZXNpemU6ITAsbWFya2VyWm9vbUFuaW1hdGlvbjpvLkRvbVV0aWwuVFJBTlNJVElPTiYmby5Ccm93c2VyLmFueTNkfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQsZSl7ZT1vLnNldE9wdGlvbnModGhpcyxlKSx0aGlzLl9pbml0Q29udGFpbmVyKHQpLHRoaXMuX2luaXRMYXlvdXQoKSx0aGlzLl9vblJlc2l6ZT1vLmJpbmQodGhpcy5fb25SZXNpemUsdGhpcyksdGhpcy5faW5pdEV2ZW50cygpLGUubWF4Qm91bmRzJiZ0aGlzLnNldE1heEJvdW5kcyhlLm1heEJvdW5kcyksZS5jZW50ZXImJmUuem9vbSE9PWkmJnRoaXMuc2V0VmlldyhvLmxhdExuZyhlLmNlbnRlciksZS56b29tLHtyZXNldDohMH0pLHRoaXMuX2hhbmRsZXJzPVtdLHRoaXMuX2xheWVycz17fSx0aGlzLl96b29tQm91bmRMYXllcnM9e30sdGhpcy5fdGlsZUxheWVyc051bT0wLHRoaXMuY2FsbEluaXRIb29rcygpLHRoaXMuX2FkZExheWVycyhlLmxheWVycyl9LHNldFZpZXc6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZT1lPT09aT90aGlzLmdldFpvb20oKTplLHRoaXMuX3Jlc2V0VmlldyhvLmxhdExuZyh0KSx0aGlzLl9saW1pdFpvb20oZSkpLHRoaXN9LHNldFpvb206ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fbG9hZGVkP3RoaXMuc2V0Vmlldyh0aGlzLmdldENlbnRlcigpLHQse3pvb206ZX0pOih0aGlzLl96b29tPXRoaXMuX2xpbWl0Wm9vbSh0KSx0aGlzKX0sem9vbUluOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuc2V0Wm9vbSh0aGlzLl96b29tKyh0fHwxKSxlKX0sem9vbU91dDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnNldFpvb20odGhpcy5fem9vbS0odHx8MSksZSl9LHNldFpvb21Bcm91bmQ6ZnVuY3Rpb24odCxlLGkpe3ZhciBuPXRoaXMuZ2V0Wm9vbVNjYWxlKGUpLHM9dGhpcy5nZXRTaXplKCkuZGl2aWRlQnkoMiksYT10IGluc3RhbmNlb2Ygby5Qb2ludD90OnRoaXMubGF0TG5nVG9Db250YWluZXJQb2ludCh0KSxyPWEuc3VidHJhY3QocykubXVsdGlwbHlCeSgxLTEvbiksaD10aGlzLmNvbnRhaW5lclBvaW50VG9MYXRMbmcocy5hZGQocikpO3JldHVybiB0aGlzLnNldFZpZXcoaCxlLHt6b29tOml9KX0sZml0Qm91bmRzOmZ1bmN0aW9uKHQsZSl7ZT1lfHx7fSx0PXQuZ2V0Qm91bmRzP3QuZ2V0Qm91bmRzKCk6by5sYXRMbmdCb3VuZHModCk7dmFyIGk9by5wb2ludChlLnBhZGRpbmdUb3BMZWZ0fHxlLnBhZGRpbmd8fFswLDBdKSxuPW8ucG9pbnQoZS5wYWRkaW5nQm90dG9tUmlnaHR8fGUucGFkZGluZ3x8WzAsMF0pLHM9dGhpcy5nZXRCb3VuZHNab29tKHQsITEsaS5hZGQobikpLGE9bi5zdWJ0cmFjdChpKS5kaXZpZGVCeSgyKSxyPXRoaXMucHJvamVjdCh0LmdldFNvdXRoV2VzdCgpLHMpLGg9dGhpcy5wcm9qZWN0KHQuZ2V0Tm9ydGhFYXN0KCkscyksbD10aGlzLnVucHJvamVjdChyLmFkZChoKS5kaXZpZGVCeSgyKS5hZGQoYSkscyk7cmV0dXJuIHM9ZSYmZS5tYXhab29tP01hdGgubWluKGUubWF4Wm9vbSxzKTpzLHRoaXMuc2V0VmlldyhsLHMsZSl9LGZpdFdvcmxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmZpdEJvdW5kcyhbWy05MCwtMTgwXSxbOTAsMTgwXV0sdCl9LHBhblRvOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuc2V0Vmlldyh0LHRoaXMuX3pvb20se3BhbjplfSl9LHBhbkJ5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmZpcmUoIm1vdmVzdGFydCIpLHRoaXMuX3Jhd1BhbkJ5KG8ucG9pbnQodCkpLHRoaXMuZmlyZSgibW92ZSIpLHRoaXMuZmlyZSgibW92ZWVuZCIpfSxzZXRNYXhCb3VuZHM6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9by5sYXRMbmdCb3VuZHModCksdGhpcy5vcHRpb25zLm1heEJvdW5kcz10LHQ/KHRoaXMuX2xvYWRlZCYmdGhpcy5fcGFuSW5zaWRlTWF4Qm91bmRzKCksdGhpcy5vbigibW92ZWVuZCIsdGhpcy5fcGFuSW5zaWRlTWF4Qm91bmRzLHRoaXMpKTp0aGlzLm9mZigibW92ZWVuZCIsdGhpcy5fcGFuSW5zaWRlTWF4Qm91bmRzLHRoaXMpfSxwYW5JbnNpZGVCb3VuZHM6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLmdldENlbnRlcigpLG49dGhpcy5fbGltaXRDZW50ZXIoaSx0aGlzLl96b29tLHQpO3JldHVybiBpLmVxdWFscyhuKT90aGlzOnRoaXMucGFuVG8obixlKX0sYWRkTGF5ZXI6ZnVuY3Rpb24odCl7dmFyIGU9by5zdGFtcCh0KTtyZXR1cm4gdGhpcy5fbGF5ZXJzW2VdP3RoaXM6KHRoaXMuX2xheWVyc1tlXT10LCF0Lm9wdGlvbnN8fGlzTmFOKHQub3B0aW9ucy5tYXhab29tKSYmaXNOYU4odC5vcHRpb25zLm1pblpvb20pfHwodGhpcy5fem9vbUJvdW5kTGF5ZXJzW2VdPXQsdGhpcy5fdXBkYXRlWm9vbUxldmVscygpKSx0aGlzLm9wdGlvbnMuem9vbUFuaW1hdGlvbiYmby5UaWxlTGF5ZXImJnQgaW5zdGFuY2VvZiBvLlRpbGVMYXllciYmKHRoaXMuX3RpbGVMYXllcnNOdW0rKyx0aGlzLl90aWxlTGF5ZXJzVG9Mb2FkKyssdC5vbigibG9hZCIsdGhpcy5fb25UaWxlTGF5ZXJMb2FkLHRoaXMpKSx0aGlzLl9sb2FkZWQmJnRoaXMuX2xheWVyQWRkKHQpLHRoaXMpfSxyZW1vdmVMYXllcjpmdW5jdGlvbih0KXt2YXIgZT1vLnN0YW1wKHQpO3JldHVybiB0aGlzLl9sYXllcnNbZV0/KHRoaXMuX2xvYWRlZCYmdC5vblJlbW92ZSh0aGlzKSxkZWxldGUgdGhpcy5fbGF5ZXJzW2VdLHRoaXMuX2xvYWRlZCYmdGhpcy5maXJlKCJsYXllcnJlbW92ZSIse2xheWVyOnR9KSx0aGlzLl96b29tQm91bmRMYXllcnNbZV0mJihkZWxldGUgdGhpcy5fem9vbUJvdW5kTGF5ZXJzW2VdLHRoaXMuX3VwZGF0ZVpvb21MZXZlbHMoKSksdGhpcy5vcHRpb25zLnpvb21BbmltYXRpb24mJm8uVGlsZUxheWVyJiZ0IGluc3RhbmNlb2Ygby5UaWxlTGF5ZXImJih0aGlzLl90aWxlTGF5ZXJzTnVtLS0sdGhpcy5fdGlsZUxheWVyc1RvTG9hZC0tLHQub2ZmKCJsb2FkIix0aGlzLl9vblRpbGVMYXllckxvYWQsdGhpcykpLHRoaXMpOnRoaXN9LGhhc0xheWVyOmZ1bmN0aW9uKHQpe3JldHVybiB0P28uc3RhbXAodClpbiB0aGlzLl9sYXllcnM6ITF9LGVhY2hMYXllcjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaSBpbiB0aGlzLl9sYXllcnMpdC5jYWxsKGUsdGhpcy5fbGF5ZXJzW2ldKTtyZXR1cm4gdGhpc30saW52YWxpZGF0ZVNpemU6ZnVuY3Rpb24odCl7aWYoIXRoaXMuX2xvYWRlZClyZXR1cm4gdGhpczt0PW8uZXh0ZW5kKHthbmltYXRlOiExLHBhbjohMH0sdD09PSEwP3thbmltYXRlOiEwfTp0KTt2YXIgZT10aGlzLmdldFNpemUoKTt0aGlzLl9zaXplQ2hhbmdlZD0hMCx0aGlzLl9pbml0aWFsQ2VudGVyPW51bGw7dmFyIGk9dGhpcy5nZXRTaXplKCksbj1lLmRpdmlkZUJ5KDIpLnJvdW5kKCkscz1pLmRpdmlkZUJ5KDIpLnJvdW5kKCksYT1uLnN1YnRyYWN0KHMpO3JldHVybiBhLnh8fGEueT8odC5hbmltYXRlJiZ0LnBhbj90aGlzLnBhbkJ5KGEpOih0LnBhbiYmdGhpcy5fcmF3UGFuQnkoYSksdGhpcy5maXJlKCJtb3ZlIiksdC5kZWJvdW5jZU1vdmVlbmQ/KGNsZWFyVGltZW91dCh0aGlzLl9zaXplVGltZXIpLHRoaXMuX3NpemVUaW1lcj1zZXRUaW1lb3V0KG8uYmluZCh0aGlzLmZpcmUsdGhpcywibW92ZWVuZCIpLDIwMCkpOnRoaXMuZmlyZSgibW92ZWVuZCIpKSx0aGlzLmZpcmUoInJlc2l6ZSIse29sZFNpemU6ZSxuZXdTaXplOml9KSk6dGhpc30sYWRkSGFuZGxlcjpmdW5jdGlvbih0LGUpe2lmKCFlKXJldHVybiB0aGlzO3ZhciBpPXRoaXNbdF09bmV3IGUodGhpcyk7cmV0dXJuIHRoaXMuX2hhbmRsZXJzLnB1c2goaSksdGhpcy5vcHRpb25zW3RdJiZpLmVuYWJsZSgpLHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe3RoaXMuX2xvYWRlZCYmdGhpcy5maXJlKCJ1bmxvYWQiKSx0aGlzLl9pbml0RXZlbnRzKCJvZmYiKTt0cnl7ZGVsZXRlIHRoaXMuX2NvbnRhaW5lci5fbGVhZmxldH1jYXRjaCh0KXt0aGlzLl9jb250YWluZXIuX2xlYWZsZXQ9aX1yZXR1cm4gdGhpcy5fY2xlYXJQYW5lcygpLHRoaXMuX2NsZWFyQ29udHJvbFBvcyYmdGhpcy5fY2xlYXJDb250cm9sUG9zKCksdGhpcy5fY2xlYXJIYW5kbGVycygpLHRoaXN9LGdldENlbnRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jaGVja0lmTG9hZGVkKCksdGhpcy5faW5pdGlhbENlbnRlciYmIXRoaXMuX21vdmVkKCk/dGhpcy5faW5pdGlhbENlbnRlcjp0aGlzLmxheWVyUG9pbnRUb0xhdExuZyh0aGlzLl9nZXRDZW50ZXJMYXllclBvaW50KCkpfSxnZXRab29tOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3pvb219LGdldEJvdW5kczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2V0UGl4ZWxCb3VuZHMoKSxlPXRoaXMudW5wcm9qZWN0KHQuZ2V0Qm90dG9tTGVmdCgpKSxpPXRoaXMudW5wcm9qZWN0KHQuZ2V0VG9wUmlnaHQoKSk7cmV0dXJuIG5ldyBvLkxhdExuZ0JvdW5kcyhlLGkpfSxnZXRNaW5ab29tOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5taW5ab29tPT09aT90aGlzLl9sYXllcnNNaW5ab29tPT09aT8wOnRoaXMuX2xheWVyc01pblpvb206dGhpcy5vcHRpb25zLm1pblpvb219LGdldE1heFpvb206ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLm1heFpvb209PT1pP3RoaXMuX2xheWVyc01heFpvb209PT1pPzEvMDp0aGlzLl9sYXllcnNNYXhab29tOnRoaXMub3B0aW9ucy5tYXhab29tfSxnZXRCb3VuZHNab29tOmZ1bmN0aW9uKHQsZSxpKXt0PW8ubGF0TG5nQm91bmRzKHQpO3ZhciBuLHM9dGhpcy5nZXRNaW5ab29tKCktKGU/MTowKSxhPXRoaXMuZ2V0TWF4Wm9vbSgpLHI9dGhpcy5nZXRTaXplKCksaD10LmdldE5vcnRoV2VzdCgpLGw9dC5nZXRTb3V0aEVhc3QoKSx1PSEwO2k9by5wb2ludChpfHxbMCwwXSk7ZG8gcysrLG49dGhpcy5wcm9qZWN0KGwscykuc3VidHJhY3QodGhpcy5wcm9qZWN0KGgscykpLmFkZChpKSx1PWU/bi54PHIueHx8bi55PHIueTpyLmNvbnRhaW5zKG4pO3doaWxlKHUmJmE+PXMpO3JldHVybiB1JiZlP251bGw6ZT9zOnMtMX0sZ2V0U2l6ZTpmdW5jdGlvbigpe3JldHVybighdGhpcy5fc2l6ZXx8dGhpcy5fc2l6ZUNoYW5nZWQpJiYodGhpcy5fc2l6ZT1uZXcgby5Qb2ludCh0aGlzLl9jb250YWluZXIuY2xpZW50V2lkdGgsdGhpcy5fY29udGFpbmVyLmNsaWVudEhlaWdodCksdGhpcy5fc2l6ZUNoYW5nZWQ9ITEpLHRoaXMuX3NpemUuY2xvbmUoKX0sZ2V0UGl4ZWxCb3VuZHM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9nZXRUb3BMZWZ0UG9pbnQoKTtyZXR1cm4gbmV3IG8uQm91bmRzKHQsdC5hZGQodGhpcy5nZXRTaXplKCkpKX0sZ2V0UGl4ZWxPcmlnaW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2hlY2tJZkxvYWRlZCgpLHRoaXMuX2luaXRpYWxUb3BMZWZ0UG9pbnR9LGdldFBhbmVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhbmVzfSxnZXRDb250YWluZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29udGFpbmVyfSxnZXRab29tU2NhbGU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5vcHRpb25zLmNycztyZXR1cm4gZS5zY2FsZSh0KS9lLnNjYWxlKHRoaXMuX3pvb20pfSxnZXRTY2FsZVpvb206ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3pvb20rTWF0aC5sb2codCkvTWF0aC5MTjJ9LHByb2plY3Q6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZT1lPT09aT90aGlzLl96b29tOmUsdGhpcy5vcHRpb25zLmNycy5sYXRMbmdUb1BvaW50KG8ubGF0TG5nKHQpLGUpfSx1bnByb2plY3Q6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZT1lPT09aT90aGlzLl96b29tOmUsdGhpcy5vcHRpb25zLmNycy5wb2ludFRvTGF0TG5nKG8ucG9pbnQodCksZSl9LGxheWVyUG9pbnRUb0xhdExuZzpmdW5jdGlvbih0KXt2YXIgZT1vLnBvaW50KHQpLmFkZCh0aGlzLmdldFBpeGVsT3JpZ2luKCkpO3JldHVybiB0aGlzLnVucHJvamVjdChlKX0sbGF0TG5nVG9MYXllclBvaW50OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMucHJvamVjdChvLmxhdExuZyh0KSkuX3JvdW5kKCk7cmV0dXJuIGUuX3N1YnRyYWN0KHRoaXMuZ2V0UGl4ZWxPcmlnaW4oKSl9LGNvbnRhaW5lclBvaW50VG9MYXllclBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiBvLnBvaW50KHQpLnN1YnRyYWN0KHRoaXMuX2dldE1hcFBhbmVQb3MoKSl9LGxheWVyUG9pbnRUb0NvbnRhaW5lclBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiBvLnBvaW50KHQpLmFkZCh0aGlzLl9nZXRNYXBQYW5lUG9zKCkpfSxjb250YWluZXJQb2ludFRvTGF0TG5nOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY29udGFpbmVyUG9pbnRUb0xheWVyUG9pbnQoby5wb2ludCh0KSk7cmV0dXJuIHRoaXMubGF5ZXJQb2ludFRvTGF0TG5nKGUpfSxsYXRMbmdUb0NvbnRhaW5lclBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmxheWVyUG9pbnRUb0NvbnRhaW5lclBvaW50KHRoaXMubGF0TG5nVG9MYXllclBvaW50KG8ubGF0TG5nKHQpKSl9LG1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiBvLkRvbUV2ZW50LmdldE1vdXNlUG9zaXRpb24odCx0aGlzLl9jb250YWluZXIpfSxtb3VzZUV2ZW50VG9MYXllclBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNvbnRhaW5lclBvaW50VG9MYXllclBvaW50KHRoaXMubW91c2VFdmVudFRvQ29udGFpbmVyUG9pbnQodCkpfSxtb3VzZUV2ZW50VG9MYXRMbmc6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubGF5ZXJQb2ludFRvTGF0TG5nKHRoaXMubW91c2VFdmVudFRvTGF5ZXJQb2ludCh0KSl9LF9pbml0Q29udGFpbmVyOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2NvbnRhaW5lcj1vLkRvbVV0aWwuZ2V0KHQpO2lmKCFlKXRocm93IG5ldyBFcnJvcigiTWFwIGNvbnRhaW5lciBub3QgZm91bmQuIik7aWYoZS5fbGVhZmxldCl0aHJvdyBuZXcgRXJyb3IoIk1hcCBjb250YWluZXIgaXMgYWxyZWFkeSBpbml0aWFsaXplZC4iKTtlLl9sZWFmbGV0PSEwfSxfaW5pdExheW91dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2NvbnRhaW5lcjtvLkRvbVV0aWwuYWRkQ2xhc3ModCwibGVhZmxldC1jb250YWluZXIiKyhvLkJyb3dzZXIudG91Y2g/IiBsZWFmbGV0LXRvdWNoIjoiIikrKG8uQnJvd3Nlci5yZXRpbmE/IiBsZWFmbGV0LXJldGluYSI6IiIpKyhvLkJyb3dzZXIuaWVsdDk/IiBsZWFmbGV0LW9sZGllIjoiIikrKHRoaXMub3B0aW9ucy5mYWRlQW5pbWF0aW9uPyIgbGVhZmxldC1mYWRlLWFuaW0iOiIiKSk7dmFyIGU9by5Eb21VdGlsLmdldFN0eWxlKHQsInBvc2l0aW9uIik7ImFic29sdXRlIiE9PWUmJiJyZWxhdGl2ZSIhPT1lJiYiZml4ZWQiIT09ZSYmKHQuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIiksdGhpcy5faW5pdFBhbmVzKCksdGhpcy5faW5pdENvbnRyb2xQb3MmJnRoaXMuX2luaXRDb250cm9sUG9zKCl9LF9pbml0UGFuZXM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9wYW5lcz17fTt0aGlzLl9tYXBQYW5lPXQubWFwUGFuZT10aGlzLl9jcmVhdGVQYW5lKCJsZWFmbGV0LW1hcC1wYW5lIix0aGlzLl9jb250YWluZXIpLHRoaXMuX3RpbGVQYW5lPXQudGlsZVBhbmU9dGhpcy5fY3JlYXRlUGFuZSgibGVhZmxldC10aWxlLXBhbmUiLHRoaXMuX21hcFBhbmUpLHQub2JqZWN0c1BhbmU9dGhpcy5fY3JlYXRlUGFuZSgibGVhZmxldC1vYmplY3RzLXBhbmUiLHRoaXMuX21hcFBhbmUpLHQuc2hhZG93UGFuZT10aGlzLl9jcmVhdGVQYW5lKCJsZWFmbGV0LXNoYWRvdy1wYW5lIiksdC5vdmVybGF5UGFuZT10aGlzLl9jcmVhdGVQYW5lKCJsZWFmbGV0LW92ZXJsYXktcGFuZSIpLHQubWFya2VyUGFuZT10aGlzLl9jcmVhdGVQYW5lKCJsZWFmbGV0LW1hcmtlci1wYW5lIiksdC5wb3B1cFBhbmU9dGhpcy5fY3JlYXRlUGFuZSgibGVhZmxldC1wb3B1cC1wYW5lIik7dmFyIGU9IiBsZWFmbGV0LXpvb20taGlkZSI7dGhpcy5vcHRpb25zLm1hcmtlclpvb21BbmltYXRpb258fChvLkRvbVV0aWwuYWRkQ2xhc3ModC5tYXJrZXJQYW5lLGUpLG8uRG9tVXRpbC5hZGRDbGFzcyh0LnNoYWRvd1BhbmUsZSksby5Eb21VdGlsLmFkZENsYXNzKHQucG9wdXBQYW5lLGUpKX0sX2NyZWF0ZVBhbmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gby5Eb21VdGlsLmNyZWF0ZSgiZGl2Iix0LGV8fHRoaXMuX3BhbmVzLm9iamVjdHNQYW5lKX0sX2NsZWFyUGFuZXM6ZnVuY3Rpb24oKXt0aGlzLl9jb250YWluZXIucmVtb3ZlQ2hpbGQodGhpcy5fbWFwUGFuZSl9LF9hZGRMYXllcnM6ZnVuY3Rpb24odCl7dD10P28uVXRpbC5pc0FycmF5KHQpP3Q6W3RdOltdO2Zvcih2YXIgZT0wLGk9dC5sZW5ndGg7aT5lO2UrKyl0aGlzLmFkZExheWVyKHRbZV0pfSxfcmVzZXRWaWV3OmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBzPXRoaXMuX3pvb20hPT1lO258fCh0aGlzLmZpcmUoIm1vdmVzdGFydCIpLHMmJnRoaXMuZmlyZSgiem9vbXN0YXJ0IikpLHRoaXMuX3pvb209ZSx0aGlzLl9pbml0aWFsQ2VudGVyPXQsdGhpcy5faW5pdGlhbFRvcExlZnRQb2ludD10aGlzLl9nZXROZXdUb3BMZWZ0UG9pbnQodCksaT90aGlzLl9pbml0aWFsVG9wTGVmdFBvaW50Ll9hZGQodGhpcy5fZ2V0TWFwUGFuZVBvcygpKTpvLkRvbVV0aWwuc2V0UG9zaXRpb24odGhpcy5fbWFwUGFuZSxuZXcgby5Qb2ludCgwLDApKSx0aGlzLl90aWxlTGF5ZXJzVG9Mb2FkPXRoaXMuX3RpbGVMYXllcnNOdW07dmFyIGE9IXRoaXMuX2xvYWRlZDt0aGlzLl9sb2FkZWQ9ITAsdGhpcy5maXJlKCJ2aWV3cmVzZXQiLHtoYXJkOiFpfSksYSYmKHRoaXMuZmlyZSgibG9hZCIpLHRoaXMuZWFjaExheWVyKHRoaXMuX2xheWVyQWRkLHRoaXMpKSx0aGlzLmZpcmUoIm1vdmUiKSwoc3x8bikmJnRoaXMuZmlyZSgiem9vbWVuZCIpLHRoaXMuZmlyZSgibW92ZWVuZCIse2hhcmQ6IWl9KX0sX3Jhd1BhbkJ5OmZ1bmN0aW9uKHQpe28uRG9tVXRpbC5zZXRQb3NpdGlvbih0aGlzLl9tYXBQYW5lLHRoaXMuX2dldE1hcFBhbmVQb3MoKS5zdWJ0cmFjdCh0KSl9LF9nZXRab29tU3BhbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldE1heFpvb20oKS10aGlzLmdldE1pblpvb20oKX0sX3VwZGF0ZVpvb21MZXZlbHM6ZnVuY3Rpb24oKXt2YXIgdCxlPTEvMCxuPS0xLzAsbz10aGlzLl9nZXRab29tU3BhbigpO2Zvcih0IGluIHRoaXMuX3pvb21Cb3VuZExheWVycyl7dmFyIHM9dGhpcy5fem9vbUJvdW5kTGF5ZXJzW3RdO2lzTmFOKHMub3B0aW9ucy5taW5ab29tKXx8KGU9TWF0aC5taW4oZSxzLm9wdGlvbnMubWluWm9vbSkpLGlzTmFOKHMub3B0aW9ucy5tYXhab29tKXx8KG49TWF0aC5tYXgobixzLm9wdGlvbnMubWF4Wm9vbSkpfXQ9PT1pP3RoaXMuX2xheWVyc01heFpvb209dGhpcy5fbGF5ZXJzTWluWm9vbT1pOih0aGlzLl9sYXllcnNNYXhab29tPW4sdGhpcy5fbGF5ZXJzTWluWm9vbT1lKSxvIT09dGhpcy5fZ2V0Wm9vbVNwYW4oKSYmdGhpcy5maXJlKCJ6b29tbGV2ZWxzY2hhbmdlIil9LF9wYW5JbnNpZGVNYXhCb3VuZHM6ZnVuY3Rpb24oKXt0aGlzLnBhbkluc2lkZUJvdW5kcyh0aGlzLm9wdGlvbnMubWF4Qm91bmRzKX0sX2NoZWNrSWZMb2FkZWQ6ZnVuY3Rpb24oKXtpZighdGhpcy5fbG9hZGVkKXRocm93IG5ldyBFcnJvcigiU2V0IG1hcCBjZW50ZXIgYW5kIHpvb20gZmlyc3QuIil9LF9pbml0RXZlbnRzOmZ1bmN0aW9uKGUpe2lmKG8uRG9tRXZlbnQpe2U9ZXx8Im9uIixvLkRvbUV2ZW50W2VdKHRoaXMuX2NvbnRhaW5lciwiY2xpY2siLHRoaXMuX29uTW91c2VDbGljayx0aGlzKTt2YXIgaSxuLHM9WyJkYmxjbGljayIsIm1vdXNlZG93biIsIm1vdXNldXAiLCJtb3VzZWVudGVyIiwibW91c2VsZWF2ZSIsIm1vdXNlbW92ZSIsImNvbnRleHRtZW51Il07Zm9yKGk9MCxuPXMubGVuZ3RoO24+aTtpKyspby5Eb21FdmVudFtlXSh0aGlzLl9jb250YWluZXIsc1tpXSx0aGlzLl9maXJlTW91c2VFdmVudCx0aGlzKTt0aGlzLm9wdGlvbnMudHJhY2tSZXNpemUmJm8uRG9tRXZlbnRbZV0odCwicmVzaXplIix0aGlzLl9vblJlc2l6ZSx0aGlzKX19LF9vblJlc2l6ZTpmdW5jdGlvbigpe28uVXRpbC5jYW5jZWxBbmltRnJhbWUodGhpcy5fcmVzaXplUmVxdWVzdCksdGhpcy5fcmVzaXplUmVxdWVzdD1vLlV0aWwucmVxdWVzdEFuaW1GcmFtZShmdW5jdGlvbigpe3RoaXMuaW52YWxpZGF0ZVNpemUoe2RlYm91bmNlTW92ZWVuZDohMH0pfSx0aGlzLCExLHRoaXMuX2NvbnRhaW5lcil9LF9vbk1vdXNlQ2xpY2s6ZnVuY3Rpb24odCl7IXRoaXMuX2xvYWRlZHx8IXQuX3NpbXVsYXRlZCYmKHRoaXMuZHJhZ2dpbmcmJnRoaXMuZHJhZ2dpbmcubW92ZWQoKXx8dGhpcy5ib3hab29tJiZ0aGlzLmJveFpvb20ubW92ZWQoKSl8fG8uRG9tRXZlbnQuX3NraXBwZWQodCl8fCh0aGlzLmZpcmUoInByZWNsaWNrIiksdGhpcy5fZmlyZU1vdXNlRXZlbnQodCkpfSxfZmlyZU1vdXNlRXZlbnQ6ZnVuY3Rpb24odCl7aWYodGhpcy5fbG9hZGVkJiYhby5Eb21FdmVudC5fc2tpcHBlZCh0KSl7dmFyIGU9dC50eXBlO2lmKGU9Im1vdXNlZW50ZXIiPT09ZT8ibW91c2VvdmVyIjoibW91c2VsZWF2ZSI9PT1lPyJtb3VzZW91dCI6ZSx0aGlzLmhhc0V2ZW50TGlzdGVuZXJzKGUpKXsiY29udGV4dG1lbnUiPT09ZSYmby5Eb21FdmVudC5wcmV2ZW50RGVmYXVsdCh0KTt2YXIgaT10aGlzLm1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50KHQpLG49dGhpcy5jb250YWluZXJQb2ludFRvTGF5ZXJQb2ludChpKSxzPXRoaXMubGF5ZXJQb2ludFRvTGF0TG5nKG4pO3RoaXMuZmlyZShlLHtsYXRsbmc6cyxsYXllclBvaW50Om4sY29udGFpbmVyUG9pbnQ6aSxvcmlnaW5hbEV2ZW50OnR9KX19fSxfb25UaWxlTGF5ZXJMb2FkOmZ1bmN0aW9uKCl7dGhpcy5fdGlsZUxheWVyc1RvTG9hZC0tLHRoaXMuX3RpbGVMYXllcnNOdW0mJiF0aGlzLl90aWxlTGF5ZXJzVG9Mb2FkJiZ0aGlzLmZpcmUoInRpbGVsYXllcnNsb2FkIil9LF9jbGVhckhhbmRsZXJzOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAsZT10aGlzLl9oYW5kbGVycy5sZW5ndGg7ZT50O3QrKyl0aGlzLl9oYW5kbGVyc1t0XS5kaXNhYmxlKCl9LHdoZW5SZWFkeTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9sb2FkZWQ/dC5jYWxsKGV8fHRoaXMsdGhpcyk6dGhpcy5vbigibG9hZCIsdCxlKSx0aGlzfSxfbGF5ZXJBZGQ6ZnVuY3Rpb24odCl7dC5vbkFkZCh0aGlzKSx0aGlzLmZpcmUoImxheWVyYWRkIix7bGF5ZXI6dH0pfSxfZ2V0TWFwUGFuZVBvczpmdW5jdGlvbigpe3JldHVybiBvLkRvbVV0aWwuZ2V0UG9zaXRpb24odGhpcy5fbWFwUGFuZSl9LF9tb3ZlZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2dldE1hcFBhbmVQb3MoKTtyZXR1cm4gdCYmIXQuZXF1YWxzKFswLDBdKX0sX2dldFRvcExlZnRQb2ludDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFBpeGVsT3JpZ2luKCkuc3VidHJhY3QodGhpcy5fZ2V0TWFwUGFuZVBvcygpKX0sX2dldE5ld1RvcExlZnRQb2ludDpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuZ2V0U2l6ZSgpLl9kaXZpZGVCeSgyKTtyZXR1cm4gdGhpcy5wcm9qZWN0KHQsZSkuX3N1YnRyYWN0KGkpLl9yb3VuZCgpfSxfbGF0TG5nVG9OZXdMYXllclBvaW50OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbj10aGlzLl9nZXROZXdUb3BMZWZ0UG9pbnQoaSxlKS5hZGQodGhpcy5fZ2V0TWFwUGFuZVBvcygpKTtyZXR1cm4gdGhpcy5wcm9qZWN0KHQsZSkuX3N1YnRyYWN0KG4pfSxfZ2V0Q2VudGVyTGF5ZXJQb2ludDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRhaW5lclBvaW50VG9MYXllclBvaW50KHRoaXMuZ2V0U2l6ZSgpLl9kaXZpZGVCeSgyKSl9LF9nZXRDZW50ZXJPZmZzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubGF0TG5nVG9MYXllclBvaW50KHQpLnN1YnRyYWN0KHRoaXMuX2dldENlbnRlckxheWVyUG9pbnQoKSl9LF9saW1pdENlbnRlcjpmdW5jdGlvbih0LGUsaSl7aWYoIWkpcmV0dXJuIHQ7dmFyIG49dGhpcy5wcm9qZWN0KHQsZSkscz10aGlzLmdldFNpemUoKS5kaXZpZGVCeSgyKSxhPW5ldyBvLkJvdW5kcyhuLnN1YnRyYWN0KHMpLG4uYWRkKHMpKSxyPXRoaXMuX2dldEJvdW5kc09mZnNldChhLGksZSk7cmV0dXJuIHRoaXMudW5wcm9qZWN0KG4uYWRkKHIpLGUpfSxfbGltaXRPZmZzZXQ6ZnVuY3Rpb24odCxlKXtpZighZSlyZXR1cm4gdDt2YXIgaT10aGlzLmdldFBpeGVsQm91bmRzKCksbj1uZXcgby5Cb3VuZHMoaS5taW4uYWRkKHQpLGkubWF4LmFkZCh0KSk7cmV0dXJuIHQuYWRkKHRoaXMuX2dldEJvdW5kc09mZnNldChuLGUpKX0sX2dldEJvdW5kc09mZnNldDpmdW5jdGlvbih0LGUsaSl7dmFyIG49dGhpcy5wcm9qZWN0KGUuZ2V0Tm9ydGhXZXN0KCksaSkuc3VidHJhY3QodC5taW4pLHM9dGhpcy5wcm9qZWN0KGUuZ2V0U291dGhFYXN0KCksaSkuc3VidHJhY3QodC5tYXgpLGE9dGhpcy5fcmVib3VuZChuLngsLXMueCkscj10aGlzLl9yZWJvdW5kKG4ueSwtcy55KTtyZXR1cm4gbmV3IG8uUG9pbnQoYSxyKX0sX3JlYm91bmQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlPjA/TWF0aC5yb3VuZCh0LWUpLzI6TWF0aC5tYXgoMCxNYXRoLmNlaWwodCkpLU1hdGgubWF4KDAsTWF0aC5mbG9vcihlKSl9LF9saW1pdFpvb206ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRNaW5ab29tKCksaT10aGlzLmdldE1heFpvb20oKTtyZXR1cm4gTWF0aC5tYXgoZSxNYXRoLm1pbihpLHQpKX19KSxvLm1hcD1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgby5NYXAodCxlKX0sby5Qcm9qZWN0aW9uLk1lcmNhdG9yPXtNQVhfTEFUSVRVREU6ODUuMDg0MDU5MTU1NixSX01JTk9SOjYzNTY3NTIuMzE0MjQ1MTc5LFJfTUFKT1I6NjM3ODEzNyxwcm9qZWN0OmZ1bmN0aW9uKHQpe3ZhciBlPW8uTGF0TG5nLkRFR19UT19SQUQsaT10aGlzLk1BWF9MQVRJVFVERSxuPU1hdGgubWF4KE1hdGgubWluKGksdC5sYXQpLC1pKSxzPXRoaXMuUl9NQUpPUixhPXRoaXMuUl9NSU5PUixyPXQubG5nKmUqcyxoPW4qZSxsPWEvcyx1PU1hdGguc3FydCgxLWwqbCksYz11Kk1hdGguc2luKGgpO2M9TWF0aC5wb3coKDEtYykvKDErYyksLjUqdSk7dmFyIGQ9TWF0aC50YW4oLjUqKC41Kk1hdGguUEktaCkpL2M7cmV0dXJuIGg9LXMqTWF0aC5sb2coZCksbmV3IG8uUG9pbnQocixoKX0sdW5wcm9qZWN0OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPW8uTGF0TG5nLlJBRF9UT19ERUcsbj10aGlzLlJfTUFKT1Iscz10aGlzLlJfTUlOT1IsYT10LngqaS9uLHI9cy9uLGg9TWF0aC5zcXJ0KDEtcipyKSxsPU1hdGguZXhwKC10LnkvbiksdT1NYXRoLlBJLzItMipNYXRoLmF0YW4obCksYz0xNSxkPTFlLTcscD1jLF89LjE7TWF0aC5hYnMoXyk+ZCYmLS1wPjA7KWU9aCpNYXRoLnNpbih1KSxfPU1hdGguUEkvMi0yKk1hdGguYXRhbihsKk1hdGgucG93KCgxLWUpLygxK2UpLC41KmgpKS11LHUrPV87CnJldHVybiBuZXcgby5MYXRMbmcodSppLGEpfX0sby5DUlMuRVBTRzMzOTU9by5leHRlbmQoe30sby5DUlMse2NvZGU6IkVQU0c6MzM5NSIscHJvamVjdGlvbjpvLlByb2plY3Rpb24uTWVyY2F0b3IsdHJhbnNmb3JtYXRpb246ZnVuY3Rpb24oKXt2YXIgdD1vLlByb2plY3Rpb24uTWVyY2F0b3IsZT10LlJfTUFKT1IsaT0uNS8oTWF0aC5QSSplKTtyZXR1cm4gbmV3IG8uVHJhbnNmb3JtYXRpb24oaSwuNSwtaSwuNSl9KCl9KSxvLlRpbGVMYXllcj1vLkNsYXNzLmV4dGVuZCh7aW5jbHVkZXM6by5NaXhpbi5FdmVudHMsb3B0aW9uczp7bWluWm9vbTowLG1heFpvb206MTgsdGlsZVNpemU6MjU2LHN1YmRvbWFpbnM6ImFiYyIsZXJyb3JUaWxlVXJsOiIiLGF0dHJpYnV0aW9uOiIiLHpvb21PZmZzZXQ6MCxvcGFjaXR5OjEsdW5sb2FkSW52aXNpYmxlVGlsZXM6by5Ccm93c2VyLm1vYmlsZSx1cGRhdGVXaGVuSWRsZTpvLkJyb3dzZXIubW9iaWxlfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQsZSl7ZT1vLnNldE9wdGlvbnModGhpcyxlKSxlLmRldGVjdFJldGluYSYmby5Ccm93c2VyLnJldGluYSYmZS5tYXhab29tPjAmJihlLnRpbGVTaXplPU1hdGguZmxvb3IoZS50aWxlU2l6ZS8yKSxlLnpvb21PZmZzZXQrKyxlLm1pblpvb20+MCYmZS5taW5ab29tLS0sdGhpcy5vcHRpb25zLm1heFpvb20tLSksZS5ib3VuZHMmJihlLmJvdW5kcz1vLmxhdExuZ0JvdW5kcyhlLmJvdW5kcykpLHRoaXMuX3VybD10O3ZhciBpPXRoaXMub3B0aW9ucy5zdWJkb21haW5zOyJzdHJpbmciPT10eXBlb2YgaSYmKHRoaXMub3B0aW9ucy5zdWJkb21haW5zPWkuc3BsaXQoIiIpKX0sb25BZGQ6ZnVuY3Rpb24odCl7dGhpcy5fbWFwPXQsdGhpcy5fYW5pbWF0ZWQ9dC5fem9vbUFuaW1hdGVkLHRoaXMuX2luaXRDb250YWluZXIoKSx0Lm9uKHt2aWV3cmVzZXQ6dGhpcy5fcmVzZXQsbW92ZWVuZDp0aGlzLl91cGRhdGV9LHRoaXMpLHRoaXMuX2FuaW1hdGVkJiZ0Lm9uKHt6b29tYW5pbTp0aGlzLl9hbmltYXRlWm9vbSx6b29tZW5kOnRoaXMuX2VuZFpvb21BbmltfSx0aGlzKSx0aGlzLm9wdGlvbnMudXBkYXRlV2hlbklkbGV8fCh0aGlzLl9saW1pdGVkVXBkYXRlPW8uVXRpbC5saW1pdEV4ZWNCeUludGVydmFsKHRoaXMuX3VwZGF0ZSwxNTAsdGhpcyksdC5vbigibW92ZSIsdGhpcy5fbGltaXRlZFVwZGF0ZSx0aGlzKSksdGhpcy5fcmVzZXQoKSx0aGlzLl91cGRhdGUoKX0sYWRkVG86ZnVuY3Rpb24odCl7cmV0dXJuIHQuYWRkTGF5ZXIodGhpcyksdGhpc30sb25SZW1vdmU6ZnVuY3Rpb24odCl7dGhpcy5fY29udGFpbmVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5fY29udGFpbmVyKSx0Lm9mZih7dmlld3Jlc2V0OnRoaXMuX3Jlc2V0LG1vdmVlbmQ6dGhpcy5fdXBkYXRlfSx0aGlzKSx0aGlzLl9hbmltYXRlZCYmdC5vZmYoe3pvb21hbmltOnRoaXMuX2FuaW1hdGVab29tLHpvb21lbmQ6dGhpcy5fZW5kWm9vbUFuaW19LHRoaXMpLHRoaXMub3B0aW9ucy51cGRhdGVXaGVuSWRsZXx8dC5vZmYoIm1vdmUiLHRoaXMuX2xpbWl0ZWRVcGRhdGUsdGhpcyksdGhpcy5fY29udGFpbmVyPW51bGwsdGhpcy5fbWFwPW51bGx9LGJyaW5nVG9Gcm9udDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcC5fcGFuZXMudGlsZVBhbmU7cmV0dXJuIHRoaXMuX2NvbnRhaW5lciYmKHQuYXBwZW5kQ2hpbGQodGhpcy5fY29udGFpbmVyKSx0aGlzLl9zZXRBdXRvWkluZGV4KHQsTWF0aC5tYXgpKSx0aGlzfSxicmluZ1RvQmFjazpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcC5fcGFuZXMudGlsZVBhbmU7cmV0dXJuIHRoaXMuX2NvbnRhaW5lciYmKHQuaW5zZXJ0QmVmb3JlKHRoaXMuX2NvbnRhaW5lcix0LmZpcnN0Q2hpbGQpLHRoaXMuX3NldEF1dG9aSW5kZXgodCxNYXRoLm1pbikpLHRoaXN9LGdldEF0dHJpYnV0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGlvbn0sZ2V0Q29udGFpbmVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbnRhaW5lcn0sc2V0T3BhY2l0eTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vcHRpb25zLm9wYWNpdHk9dCx0aGlzLl9tYXAmJnRoaXMuX3VwZGF0ZU9wYWNpdHkoKSx0aGlzfSxzZXRaSW5kZXg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub3B0aW9ucy56SW5kZXg9dCx0aGlzLl91cGRhdGVaSW5kZXgoKSx0aGlzfSxzZXRVcmw6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fdXJsPXQsZXx8dGhpcy5yZWRyYXcoKSx0aGlzfSxyZWRyYXc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWFwJiYodGhpcy5fcmVzZXQoe2hhcmQ6ITB9KSx0aGlzLl91cGRhdGUoKSksdGhpc30sX3VwZGF0ZVpJbmRleDpmdW5jdGlvbigpe3RoaXMuX2NvbnRhaW5lciYmdGhpcy5vcHRpb25zLnpJbmRleCE9PWkmJih0aGlzLl9jb250YWluZXIuc3R5bGUuekluZGV4PXRoaXMub3B0aW9ucy56SW5kZXgpfSxfc2V0QXV0b1pJbmRleDpmdW5jdGlvbih0LGUpe3ZhciBpLG4sbyxzPXQuY2hpbGRyZW4sYT0tZSgxLzAsLTEvMCk7Zm9yKG49MCxvPXMubGVuZ3RoO28+bjtuKyspc1tuXSE9PXRoaXMuX2NvbnRhaW5lciYmKGk9cGFyc2VJbnQoc1tuXS5zdHlsZS56SW5kZXgsMTApLGlzTmFOKGkpfHwoYT1lKGEsaSkpKTt0aGlzLm9wdGlvbnMuekluZGV4PXRoaXMuX2NvbnRhaW5lci5zdHlsZS56SW5kZXg9KGlzRmluaXRlKGEpP2E6MCkrZSgxLC0xKX0sX3VwZGF0ZU9wYWNpdHk6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMuX3RpbGVzO2lmKG8uQnJvd3Nlci5pZWx0OSlmb3IodCBpbiBlKW8uRG9tVXRpbC5zZXRPcGFjaXR5KGVbdF0sdGhpcy5vcHRpb25zLm9wYWNpdHkpO2Vsc2Ugby5Eb21VdGlsLnNldE9wYWNpdHkodGhpcy5fY29udGFpbmVyLHRoaXMub3B0aW9ucy5vcGFjaXR5KX0sX2luaXRDb250YWluZXI6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXAuX3BhbmVzLnRpbGVQYW5lO2lmKCF0aGlzLl9jb250YWluZXIpe2lmKHRoaXMuX2NvbnRhaW5lcj1vLkRvbVV0aWwuY3JlYXRlKCJkaXYiLCJsZWFmbGV0LWxheWVyIiksdGhpcy5fdXBkYXRlWkluZGV4KCksdGhpcy5fYW5pbWF0ZWQpe3ZhciBlPSJsZWFmbGV0LXRpbGUtY29udGFpbmVyIjt0aGlzLl9iZ0J1ZmZlcj1vLkRvbVV0aWwuY3JlYXRlKCJkaXYiLGUsdGhpcy5fY29udGFpbmVyKSx0aGlzLl90aWxlQ29udGFpbmVyPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsZSx0aGlzLl9jb250YWluZXIpfWVsc2UgdGhpcy5fdGlsZUNvbnRhaW5lcj10aGlzLl9jb250YWluZXI7dC5hcHBlbmRDaGlsZCh0aGlzLl9jb250YWluZXIpLHRoaXMub3B0aW9ucy5vcGFjaXR5PDEmJnRoaXMuX3VwZGF0ZU9wYWNpdHkoKX19LF9yZXNldDpmdW5jdGlvbih0KXtmb3IodmFyIGUgaW4gdGhpcy5fdGlsZXMpdGhpcy5maXJlKCJ0aWxldW5sb2FkIix7dGlsZTp0aGlzLl90aWxlc1tlXX0pO3RoaXMuX3RpbGVzPXt9LHRoaXMuX3RpbGVzVG9Mb2FkPTAsdGhpcy5vcHRpb25zLnJldXNlVGlsZXMmJih0aGlzLl91bnVzZWRUaWxlcz1bXSksdGhpcy5fdGlsZUNvbnRhaW5lci5pbm5lckhUTUw9IiIsdGhpcy5fYW5pbWF0ZWQmJnQmJnQuaGFyZCYmdGhpcy5fY2xlYXJCZ0J1ZmZlcigpLHRoaXMuX2luaXRDb250YWluZXIoKX0sX2dldFRpbGVTaXplOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbWFwLGU9dC5nZXRab29tKCkrdGhpcy5vcHRpb25zLnpvb21PZmZzZXQsaT10aGlzLm9wdGlvbnMubWF4TmF0aXZlWm9vbSxuPXRoaXMub3B0aW9ucy50aWxlU2l6ZTtyZXR1cm4gaSYmZT5pJiYobj1NYXRoLnJvdW5kKHQuZ2V0Wm9vbVNjYWxlKGUpL3QuZ2V0Wm9vbVNjYWxlKGkpKm4pKSxufSxfdXBkYXRlOmZ1bmN0aW9uKCl7aWYodGhpcy5fbWFwKXt2YXIgdD10aGlzLl9tYXAsZT10LmdldFBpeGVsQm91bmRzKCksaT10LmdldFpvb20oKSxuPXRoaXMuX2dldFRpbGVTaXplKCk7aWYoIShpPnRoaXMub3B0aW9ucy5tYXhab29tfHxpPHRoaXMub3B0aW9ucy5taW5ab29tKSl7dmFyIHM9by5ib3VuZHMoZS5taW4uZGl2aWRlQnkobikuX2Zsb29yKCksZS5tYXguZGl2aWRlQnkobikuX2Zsb29yKCkpO3RoaXMuX2FkZFRpbGVzRnJvbUNlbnRlck91dChzKSwodGhpcy5vcHRpb25zLnVubG9hZEludmlzaWJsZVRpbGVzfHx0aGlzLm9wdGlvbnMucmV1c2VUaWxlcykmJnRoaXMuX3JlbW92ZU90aGVyVGlsZXMocyl9fX0sX2FkZFRpbGVzRnJvbUNlbnRlck91dDpmdW5jdGlvbih0KXt2YXIgaSxuLHMsYT1bXSxyPXQuZ2V0Q2VudGVyKCk7Zm9yKGk9dC5taW4ueTtpPD10Lm1heC55O2krKylmb3Iobj10Lm1pbi54O248PXQubWF4Lng7bisrKXM9bmV3IG8uUG9pbnQobixpKSx0aGlzLl90aWxlU2hvdWxkQmVMb2FkZWQocykmJmEucHVzaChzKTt2YXIgaD1hLmxlbmd0aDtpZigwIT09aCl7YS5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuZGlzdGFuY2VUbyhyKS1lLmRpc3RhbmNlVG8ocil9KTt2YXIgbD1lLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtmb3IodGhpcy5fdGlsZXNUb0xvYWR8fHRoaXMuZmlyZSgibG9hZGluZyIpLHRoaXMuX3RpbGVzVG9Mb2FkKz1oLG49MDtoPm47bisrKXRoaXMuX2FkZFRpbGUoYVtuXSxsKTt0aGlzLl90aWxlQ29udGFpbmVyLmFwcGVuZENoaWxkKGwpfX0sX3RpbGVTaG91bGRCZUxvYWRlZDpmdW5jdGlvbih0KXtpZih0LngrIjoiK3QueSBpbiB0aGlzLl90aWxlcylyZXR1cm4hMTt2YXIgZT10aGlzLm9wdGlvbnM7aWYoIWUuY29udGludW91c1dvcmxkKXt2YXIgaT10aGlzLl9nZXRXcmFwVGlsZU51bSgpO2lmKGUubm9XcmFwJiYodC54PDB8fHQueD49aS54KXx8dC55PDB8fHQueT49aS55KXJldHVybiExfWlmKGUuYm91bmRzKXt2YXIgbj1lLnRpbGVTaXplLG89dC5tdWx0aXBseUJ5KG4pLHM9by5hZGQoW24sbl0pLGE9dGhpcy5fbWFwLnVucHJvamVjdChvKSxyPXRoaXMuX21hcC51bnByb2plY3Qocyk7aWYoZS5jb250aW51b3VzV29ybGR8fGUubm9XcmFwfHwoYT1hLndyYXAoKSxyPXIud3JhcCgpKSwhZS5ib3VuZHMuaW50ZXJzZWN0cyhbYSxyXSkpcmV0dXJuITF9cmV0dXJuITB9LF9yZW1vdmVPdGhlclRpbGVzOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixvO2ZvcihvIGluIHRoaXMuX3RpbGVzKWU9by5zcGxpdCgiOiIpLGk9cGFyc2VJbnQoZVswXSwxMCksbj1wYXJzZUludChlWzFdLDEwKSwoaTx0Lm1pbi54fHxpPnQubWF4Lnh8fG48dC5taW4ueXx8bj50Lm1heC55KSYmdGhpcy5fcmVtb3ZlVGlsZShvKX0sX3JlbW92ZVRpbGU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdGlsZXNbdF07dGhpcy5maXJlKCJ0aWxldW5sb2FkIix7dGlsZTplLHVybDplLnNyY30pLHRoaXMub3B0aW9ucy5yZXVzZVRpbGVzPyhvLkRvbVV0aWwucmVtb3ZlQ2xhc3MoZSwibGVhZmxldC10aWxlLWxvYWRlZCIpLHRoaXMuX3VudXNlZFRpbGVzLnB1c2goZSkpOmUucGFyZW50Tm9kZT09PXRoaXMuX3RpbGVDb250YWluZXImJnRoaXMuX3RpbGVDb250YWluZXIucmVtb3ZlQ2hpbGQoZSksby5Ccm93c2VyLmFuZHJvaWR8fChlLm9ubG9hZD1udWxsLGUuc3JjPW8uVXRpbC5lbXB0eUltYWdlVXJsKSxkZWxldGUgdGhpcy5fdGlsZXNbdF19LF9hZGRUaWxlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5fZ2V0VGlsZVBvcyh0KSxuPXRoaXMuX2dldFRpbGUoKTtvLkRvbVV0aWwuc2V0UG9zaXRpb24obixpLG8uQnJvd3Nlci5jaHJvbWUpLHRoaXMuX3RpbGVzW3QueCsiOiIrdC55XT1uLHRoaXMuX2xvYWRUaWxlKG4sdCksbi5wYXJlbnROb2RlIT09dGhpcy5fdGlsZUNvbnRhaW5lciYmZS5hcHBlbmRDaGlsZChuKX0sX2dldFpvb21Gb3JVcmw6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMsZT10aGlzLl9tYXAuZ2V0Wm9vbSgpO3JldHVybiB0Lnpvb21SZXZlcnNlJiYoZT10Lm1heFpvb20tZSksZSs9dC56b29tT2Zmc2V0LHQubWF4TmF0aXZlWm9vbT9NYXRoLm1pbihlLHQubWF4TmF0aXZlWm9vbSk6ZX0sX2dldFRpbGVQb3M6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbWFwLmdldFBpeGVsT3JpZ2luKCksaT10aGlzLl9nZXRUaWxlU2l6ZSgpO3JldHVybiB0Lm11bHRpcGx5QnkoaSkuc3VidHJhY3QoZSl9LGdldFRpbGVVcmw6ZnVuY3Rpb24odCl7cmV0dXJuIG8uVXRpbC50ZW1wbGF0ZSh0aGlzLl91cmwsby5leHRlbmQoe3M6dGhpcy5fZ2V0U3ViZG9tYWluKHQpLHo6dC56LHg6dC54LHk6dC55fSx0aGlzLm9wdGlvbnMpKX0sX2dldFdyYXBUaWxlTnVtOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbWFwLm9wdGlvbnMuY3JzLGU9dC5nZXRTaXplKHRoaXMuX21hcC5nZXRab29tKCkpO3JldHVybiBlLmRpdmlkZUJ5KHRoaXMuX2dldFRpbGVTaXplKCkpLl9mbG9vcigpfSxfYWRqdXN0VGlsZVBvaW50OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2dldFdyYXBUaWxlTnVtKCk7dGhpcy5vcHRpb25zLmNvbnRpbnVvdXNXb3JsZHx8dGhpcy5vcHRpb25zLm5vV3JhcHx8KHQueD0odC54JWUueCtlLngpJWUueCksdGhpcy5vcHRpb25zLnRtcyYmKHQueT1lLnktdC55LTEpLHQuej10aGlzLl9nZXRab29tRm9yVXJsKCl9LF9nZXRTdWJkb21haW46ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5hYnModC54K3QueSkldGhpcy5vcHRpb25zLnN1YmRvbWFpbnMubGVuZ3RoO3JldHVybiB0aGlzLm9wdGlvbnMuc3ViZG9tYWluc1tlXX0sX2dldFRpbGU6ZnVuY3Rpb24oKXtpZih0aGlzLm9wdGlvbnMucmV1c2VUaWxlcyYmdGhpcy5fdW51c2VkVGlsZXMubGVuZ3RoPjApe3ZhciB0PXRoaXMuX3VudXNlZFRpbGVzLnBvcCgpO3JldHVybiB0aGlzLl9yZXNldFRpbGUodCksdH1yZXR1cm4gdGhpcy5fY3JlYXRlVGlsZSgpfSxfcmVzZXRUaWxlOmZ1bmN0aW9uKCl7fSxfY3JlYXRlVGlsZTpmdW5jdGlvbigpe3ZhciB0PW8uRG9tVXRpbC5jcmVhdGUoImltZyIsImxlYWZsZXQtdGlsZSIpO3JldHVybiB0LnN0eWxlLndpZHRoPXQuc3R5bGUuaGVpZ2h0PXRoaXMuX2dldFRpbGVTaXplKCkrInB4Iix0LmdhbGxlcnlpbWc9Im5vIix0Lm9uc2VsZWN0c3RhcnQ9dC5vbm1vdXNlbW92ZT1vLlV0aWwuZmFsc2VGbixvLkJyb3dzZXIuaWVsdDkmJnRoaXMub3B0aW9ucy5vcGFjaXR5IT09aSYmby5Eb21VdGlsLnNldE9wYWNpdHkodCx0aGlzLm9wdGlvbnMub3BhY2l0eSksby5Ccm93c2VyLm1vYmlsZVdlYmtpdDNkJiYodC5zdHlsZS5XZWJraXRCYWNrZmFjZVZpc2liaWxpdHk9ImhpZGRlbiIpLHR9LF9sb2FkVGlsZTpmdW5jdGlvbih0LGUpe3QuX2xheWVyPXRoaXMsdC5vbmxvYWQ9dGhpcy5fdGlsZU9uTG9hZCx0Lm9uZXJyb3I9dGhpcy5fdGlsZU9uRXJyb3IsdGhpcy5fYWRqdXN0VGlsZVBvaW50KGUpLHQuc3JjPXRoaXMuZ2V0VGlsZVVybChlKSx0aGlzLmZpcmUoInRpbGVsb2Fkc3RhcnQiLHt0aWxlOnQsdXJsOnQuc3JjfSl9LF90aWxlTG9hZGVkOmZ1bmN0aW9uKCl7dGhpcy5fdGlsZXNUb0xvYWQtLSx0aGlzLl9hbmltYXRlZCYmby5Eb21VdGlsLmFkZENsYXNzKHRoaXMuX3RpbGVDb250YWluZXIsImxlYWZsZXQtem9vbS1hbmltYXRlZCIpLHRoaXMuX3RpbGVzVG9Mb2FkfHwodGhpcy5maXJlKCJsb2FkIiksdGhpcy5fYW5pbWF0ZWQmJihjbGVhclRpbWVvdXQodGhpcy5fY2xlYXJCZ0J1ZmZlclRpbWVyKSx0aGlzLl9jbGVhckJnQnVmZmVyVGltZXI9c2V0VGltZW91dChvLmJpbmQodGhpcy5fY2xlYXJCZ0J1ZmZlcix0aGlzKSw1MDApKSl9LF90aWxlT25Mb2FkOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbGF5ZXI7dGhpcy5zcmMhPT1vLlV0aWwuZW1wdHlJbWFnZVVybCYmKG8uRG9tVXRpbC5hZGRDbGFzcyh0aGlzLCJsZWFmbGV0LXRpbGUtbG9hZGVkIiksdC5maXJlKCJ0aWxlbG9hZCIse3RpbGU6dGhpcyx1cmw6dGhpcy5zcmN9KSksdC5fdGlsZUxvYWRlZCgpfSxfdGlsZU9uRXJyb3I6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9sYXllcjt0LmZpcmUoInRpbGVlcnJvciIse3RpbGU6dGhpcyx1cmw6dGhpcy5zcmN9KTt2YXIgZT10Lm9wdGlvbnMuZXJyb3JUaWxlVXJsO2UmJih0aGlzLnNyYz1lKSx0Ll90aWxlTG9hZGVkKCl9fSksby50aWxlTGF5ZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IG8uVGlsZUxheWVyKHQsZSl9LG8uVGlsZUxheWVyLldNUz1vLlRpbGVMYXllci5leHRlbmQoe2RlZmF1bHRXbXNQYXJhbXM6e3NlcnZpY2U6IldNUyIscmVxdWVzdDoiR2V0TWFwIix2ZXJzaW9uOiIxLjEuMSIsbGF5ZXJzOiIiLHN0eWxlczoiIixmb3JtYXQ6ImltYWdlL2pwZWciLHRyYW5zcGFyZW50OiExfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQsZSl7dGhpcy5fdXJsPXQ7dmFyIGk9by5leHRlbmQoe30sdGhpcy5kZWZhdWx0V21zUGFyYW1zKSxuPWUudGlsZVNpemV8fHRoaXMub3B0aW9ucy50aWxlU2l6ZTtpLndpZHRoPWkuaGVpZ2h0PWUuZGV0ZWN0UmV0aW5hJiZvLkJyb3dzZXIucmV0aW5hPzIqbjpuO2Zvcih2YXIgcyBpbiBlKXRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShzKXx8ImNycyI9PT1zfHwoaVtzXT1lW3NdKTt0aGlzLndtc1BhcmFtcz1pLG8uc2V0T3B0aW9ucyh0aGlzLGUpfSxvbkFkZDpmdW5jdGlvbih0KXt0aGlzLl9jcnM9dGhpcy5vcHRpb25zLmNyc3x8dC5vcHRpb25zLmNycyx0aGlzLl93bXNWZXJzaW9uPXBhcnNlRmxvYXQodGhpcy53bXNQYXJhbXMudmVyc2lvbik7dmFyIGU9dGhpcy5fd21zVmVyc2lvbj49MS4zPyJjcnMiOiJzcnMiO3RoaXMud21zUGFyYW1zW2VdPXRoaXMuX2Nycy5jb2RlLG8uVGlsZUxheWVyLnByb3RvdHlwZS5vbkFkZC5jYWxsKHRoaXMsdCl9LGdldFRpbGVVcmw6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbWFwLGk9dGhpcy5vcHRpb25zLnRpbGVTaXplLG49dC5tdWx0aXBseUJ5KGkpLHM9bi5hZGQoW2ksaV0pLGE9dGhpcy5fY3JzLnByb2plY3QoZS51bnByb2plY3Qobix0LnopKSxyPXRoaXMuX2Nycy5wcm9qZWN0KGUudW5wcm9qZWN0KHMsdC56KSksaD10aGlzLl93bXNWZXJzaW9uPj0xLjMmJnRoaXMuX2Nycz09PW8uQ1JTLkVQU0c0MzI2P1tyLnksYS54LGEueSxyLnhdLmpvaW4oIiwiKTpbYS54LHIueSxyLngsYS55XS5qb2luKCIsIiksbD1vLlV0aWwudGVtcGxhdGUodGhpcy5fdXJsLHtzOnRoaXMuX2dldFN1YmRvbWFpbih0KX0pO3JldHVybiBsK28uVXRpbC5nZXRQYXJhbVN0cmluZyh0aGlzLndtc1BhcmFtcyxsLCEwKSsiJkJCT1g9IitofSxzZXRQYXJhbXM6ZnVuY3Rpb24odCxlKXtyZXR1cm4gby5leHRlbmQodGhpcy53bXNQYXJhbXMsdCksZXx8dGhpcy5yZWRyYXcoKSx0aGlzfX0pLG8udGlsZUxheWVyLndtcz1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgby5UaWxlTGF5ZXIuV01TKHQsZSl9LG8uVGlsZUxheWVyLkNhbnZhcz1vLlRpbGVMYXllci5leHRlbmQoe29wdGlvbnM6e2FzeW5jOiExfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe28uc2V0T3B0aW9ucyh0aGlzLHQpfSxyZWRyYXc6ZnVuY3Rpb24oKXt0aGlzLl9tYXAmJih0aGlzLl9yZXNldCh7aGFyZDohMH0pLHRoaXMuX3VwZGF0ZSgpKTtmb3IodmFyIHQgaW4gdGhpcy5fdGlsZXMpdGhpcy5fcmVkcmF3VGlsZSh0aGlzLl90aWxlc1t0XSk7cmV0dXJuIHRoaXN9LF9yZWRyYXdUaWxlOmZ1bmN0aW9uKHQpe3RoaXMuZHJhd1RpbGUodCx0Ll90aWxlUG9pbnQsdGhpcy5fbWFwLl96b29tKX0sX2NyZWF0ZVRpbGU6ZnVuY3Rpb24oKXt2YXIgdD1vLkRvbVV0aWwuY3JlYXRlKCJjYW52YXMiLCJsZWFmbGV0LXRpbGUiKTtyZXR1cm4gdC53aWR0aD10LmhlaWdodD10aGlzLm9wdGlvbnMudGlsZVNpemUsdC5vbnNlbGVjdHN0YXJ0PXQub25tb3VzZW1vdmU9by5VdGlsLmZhbHNlRm4sdH0sX2xvYWRUaWxlOmZ1bmN0aW9uKHQsZSl7dC5fbGF5ZXI9dGhpcyx0Ll90aWxlUG9pbnQ9ZSx0aGlzLl9yZWRyYXdUaWxlKHQpLHRoaXMub3B0aW9ucy5hc3luY3x8dGhpcy50aWxlRHJhd24odCl9LGRyYXdUaWxlOmZ1bmN0aW9uKCl7fSx0aWxlRHJhd246ZnVuY3Rpb24odCl7dGhpcy5fdGlsZU9uTG9hZC5jYWxsKHQpfX0pLG8udGlsZUxheWVyLmNhbnZhcz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IG8uVGlsZUxheWVyLkNhbnZhcyh0KX0sby5JbWFnZU92ZXJsYXk9by5DbGFzcy5leHRlbmQoe2luY2x1ZGVzOm8uTWl4aW4uRXZlbnRzLG9wdGlvbnM6e29wYWNpdHk6MX0saW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUsaSl7dGhpcy5fdXJsPXQsdGhpcy5fYm91bmRzPW8ubGF0TG5nQm91bmRzKGUpLG8uc2V0T3B0aW9ucyh0aGlzLGkpfSxvbkFkZDpmdW5jdGlvbih0KXt0aGlzLl9tYXA9dCx0aGlzLl9pbWFnZXx8dGhpcy5faW5pdEltYWdlKCksdC5fcGFuZXMub3ZlcmxheVBhbmUuYXBwZW5kQ2hpbGQodGhpcy5faW1hZ2UpLHQub24oInZpZXdyZXNldCIsdGhpcy5fcmVzZXQsdGhpcyksdC5vcHRpb25zLnpvb21BbmltYXRpb24mJm8uQnJvd3Nlci5hbnkzZCYmdC5vbigiem9vbWFuaW0iLHRoaXMuX2FuaW1hdGVab29tLHRoaXMpLHRoaXMuX3Jlc2V0KCl9LG9uUmVtb3ZlOmZ1bmN0aW9uKHQpe3QuZ2V0UGFuZXMoKS5vdmVybGF5UGFuZS5yZW1vdmVDaGlsZCh0aGlzLl9pbWFnZSksdC5vZmYoInZpZXdyZXNldCIsdGhpcy5fcmVzZXQsdGhpcyksdC5vcHRpb25zLnpvb21BbmltYXRpb24mJnQub2ZmKCJ6b29tYW5pbSIsdGhpcy5fYW5pbWF0ZVpvb20sdGhpcyl9LGFkZFRvOmZ1bmN0aW9uKHQpe3JldHVybiB0LmFkZExheWVyKHRoaXMpLHRoaXN9LHNldE9wYWNpdHk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub3B0aW9ucy5vcGFjaXR5PXQsdGhpcy5fdXBkYXRlT3BhY2l0eSgpLHRoaXN9LGJyaW5nVG9Gcm9udDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9pbWFnZSYmdGhpcy5fbWFwLl9wYW5lcy5vdmVybGF5UGFuZS5hcHBlbmRDaGlsZCh0aGlzLl9pbWFnZSksdGhpc30sYnJpbmdUb0JhY2s6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXAuX3BhbmVzLm92ZXJsYXlQYW5lO3JldHVybiB0aGlzLl9pbWFnZSYmdC5pbnNlcnRCZWZvcmUodGhpcy5faW1hZ2UsdC5maXJzdENoaWxkKSx0aGlzfSxzZXRVcmw6ZnVuY3Rpb24odCl7dGhpcy5fdXJsPXQsdGhpcy5faW1hZ2Uuc3JjPXRoaXMuX3VybH0sZ2V0QXR0cmlidXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLmF0dHJpYnV0aW9ufSxfaW5pdEltYWdlOmZ1bmN0aW9uKCl7dGhpcy5faW1hZ2U9by5Eb21VdGlsLmNyZWF0ZSgiaW1nIiwibGVhZmxldC1pbWFnZS1sYXllciIpLHRoaXMuX21hcC5vcHRpb25zLnpvb21BbmltYXRpb24mJm8uQnJvd3Nlci5hbnkzZD9vLkRvbVV0aWwuYWRkQ2xhc3ModGhpcy5faW1hZ2UsImxlYWZsZXQtem9vbS1hbmltYXRlZCIpOm8uRG9tVXRpbC5hZGRDbGFzcyh0aGlzLl9pbWFnZSwibGVhZmxldC16b29tLWhpZGUiKSx0aGlzLl91cGRhdGVPcGFjaXR5KCksby5leHRlbmQodGhpcy5faW1hZ2Use2dhbGxlcnlpbWc6Im5vIixvbnNlbGVjdHN0YXJ0Om8uVXRpbC5mYWxzZUZuLG9ubW91c2Vtb3ZlOm8uVXRpbC5mYWxzZUZuLG9ubG9hZDpvLmJpbmQodGhpcy5fb25JbWFnZUxvYWQsdGhpcyksc3JjOnRoaXMuX3VybH0pfSxfYW5pbWF0ZVpvb206ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbWFwLGk9dGhpcy5faW1hZ2Usbj1lLmdldFpvb21TY2FsZSh0Lnpvb20pLHM9dGhpcy5fYm91bmRzLmdldE5vcnRoV2VzdCgpLGE9dGhpcy5fYm91bmRzLmdldFNvdXRoRWFzdCgpLHI9ZS5fbGF0TG5nVG9OZXdMYXllclBvaW50KHMsdC56b29tLHQuY2VudGVyKSxoPWUuX2xhdExuZ1RvTmV3TGF5ZXJQb2ludChhLHQuem9vbSx0LmNlbnRlcikuX3N1YnRyYWN0KHIpLGw9ci5fYWRkKGguX211bHRpcGx5QnkoLjUqKDEtMS9uKSkpO2kuc3R5bGVbby5Eb21VdGlsLlRSQU5TRk9STV09by5Eb21VdGlsLmdldFRyYW5zbGF0ZVN0cmluZyhsKSsiIHNjYWxlKCIrbisiKSAifSxfcmVzZXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9pbWFnZSxlPXRoaXMuX21hcC5sYXRMbmdUb0xheWVyUG9pbnQodGhpcy5fYm91bmRzLmdldE5vcnRoV2VzdCgpKSxpPXRoaXMuX21hcC5sYXRMbmdUb0xheWVyUG9pbnQodGhpcy5fYm91bmRzLmdldFNvdXRoRWFzdCgpKS5fc3VidHJhY3QoZSk7by5Eb21VdGlsLnNldFBvc2l0aW9uKHQsZSksdC5zdHlsZS53aWR0aD1pLngrInB4Iix0LnN0eWxlLmhlaWdodD1pLnkrInB4In0sX29uSW1hZ2VMb2FkOmZ1bmN0aW9uKCl7dGhpcy5maXJlKCJsb2FkIil9LF91cGRhdGVPcGFjaXR5OmZ1bmN0aW9uKCl7by5Eb21VdGlsLnNldE9wYWNpdHkodGhpcy5faW1hZ2UsdGhpcy5vcHRpb25zLm9wYWNpdHkpfX0pLG8uaW1hZ2VPdmVybGF5PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gbmV3IG8uSW1hZ2VPdmVybGF5KHQsZSxpKX0sby5JY29uPW8uQ2xhc3MuZXh0ZW5kKHtvcHRpb25zOntjbGFzc05hbWU6IiJ9LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7by5zZXRPcHRpb25zKHRoaXMsdCl9LGNyZWF0ZUljb246ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2NyZWF0ZUljb24oImljb24iLHQpfSxjcmVhdGVTaGFkb3c6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2NyZWF0ZUljb24oInNoYWRvdyIsdCl9LF9jcmVhdGVJY29uOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5fZ2V0SWNvblVybCh0KTtpZighaSl7aWYoImljb24iPT09dCl0aHJvdyBuZXcgRXJyb3IoImljb25Vcmwgbm90IHNldCBpbiBJY29uIG9wdGlvbnMgKHNlZSB0aGUgZG9jcykuIik7cmV0dXJuIG51bGx9dmFyIG47cmV0dXJuIG49ZSYmIklNRyI9PT1lLnRhZ05hbWU/dGhpcy5fY3JlYXRlSW1nKGksZSk6dGhpcy5fY3JlYXRlSW1nKGkpLHRoaXMuX3NldEljb25TdHlsZXMobix0KSxufSxfc2V0SWNvblN0eWxlczpmdW5jdGlvbih0LGUpe3ZhciBpLG49dGhpcy5vcHRpb25zLHM9by5wb2ludChuW2UrIlNpemUiXSk7aT1vLnBvaW50KCJzaGFkb3ciPT09ZT9uLnNoYWRvd0FuY2hvcnx8bi5pY29uQW5jaG9yOm4uaWNvbkFuY2hvciksIWkmJnMmJihpPXMuZGl2aWRlQnkoMiwhMCkpLHQuY2xhc3NOYW1lPSJsZWFmbGV0LW1hcmtlci0iK2UrIiAiK24uY2xhc3NOYW1lLGkmJih0LnN0eWxlLm1hcmdpbkxlZnQ9LWkueCsicHgiLHQuc3R5bGUubWFyZ2luVG9wPS1pLnkrInB4IikscyYmKHQuc3R5bGUud2lkdGg9cy54KyJweCIsdC5zdHlsZS5oZWlnaHQ9cy55KyJweCIpfSxfY3JlYXRlSW1nOmZ1bmN0aW9uKHQsaSl7cmV0dXJuIGk9aXx8ZS5jcmVhdGVFbGVtZW50KCJpbWciKSxpLnNyYz10LGl9LF9nZXRJY29uVXJsOmZ1bmN0aW9uKHQpe3JldHVybiBvLkJyb3dzZXIucmV0aW5hJiZ0aGlzLm9wdGlvbnNbdCsiUmV0aW5hVXJsIl0/dGhpcy5vcHRpb25zW3QrIlJldGluYVVybCJdOnRoaXMub3B0aW9uc1t0KyJVcmwiXX19KSxvLmljb249ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBvLkljb24odCl9LG8uSWNvbi5EZWZhdWx0PW8uSWNvbi5leHRlbmQoe29wdGlvbnM6e2ljb25TaXplOlsyNSw0MV0saWNvbkFuY2hvcjpbMTIsNDFdLHBvcHVwQW5jaG9yOlsxLC0zNF0sc2hhZG93U2l6ZTpbNDEsNDFdfSxfZ2V0SWNvblVybDpmdW5jdGlvbih0KXt2YXIgZT10KyJVcmwiO2lmKHRoaXMub3B0aW9uc1tlXSlyZXR1cm4gdGhpcy5vcHRpb25zW2VdO28uQnJvd3Nlci5yZXRpbmEmJiJpY29uIj09PXQmJih0Kz0iLTJ4Iik7dmFyIGk9by5JY29uLkRlZmF1bHQuaW1hZ2VQYXRoO2lmKCFpKXRocm93IG5ldyBFcnJvcigiQ291bGRuJ3QgYXV0b2RldGVjdCBMLkljb24uRGVmYXVsdC5pbWFnZVBhdGgsIHNldCBpdCBtYW51YWxseS4iKTtyZXR1cm4gaSsiL21hcmtlci0iK3QrIi5wbmcifX0pLG8uSWNvbi5EZWZhdWx0LmltYWdlUGF0aD1mdW5jdGlvbigpe3ZhciB0LGksbixvLHMsYT1lLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKSxyPS9bXC9eXWxlYWZsZXRbXC1cLl9dPyhbXHdcLVwuX10qKVwuanNcPz8vO2Zvcih0PTAsaT1hLmxlbmd0aDtpPnQ7dCsrKWlmKG49YVt0XS5zcmMsbz1uLm1hdGNoKHIpKXJldHVybiBzPW4uc3BsaXQocilbMF0sKHM/cysiLyI6IiIpKyJpbWFnZXMifSgpLG8uTWFya2VyPW8uQ2xhc3MuZXh0ZW5kKHtpbmNsdWRlczpvLk1peGluLkV2ZW50cyxvcHRpb25zOntpY29uOm5ldyBvLkljb24uRGVmYXVsdCx0aXRsZToiIixhbHQ6IiIsY2xpY2thYmxlOiEwLGRyYWdnYWJsZTohMSxrZXlib2FyZDohMCx6SW5kZXhPZmZzZXQ6MCxvcGFjaXR5OjEscmlzZU9uSG92ZXI6ITEscmlzZU9mZnNldDoyNTB9LGluaXRpYWxpemU6ZnVuY3Rpb24odCxlKXtvLnNldE9wdGlvbnModGhpcyxlKSx0aGlzLl9sYXRsbmc9by5sYXRMbmcodCl9LG9uQWRkOmZ1bmN0aW9uKHQpe3RoaXMuX21hcD10LHQub24oInZpZXdyZXNldCIsdGhpcy51cGRhdGUsdGhpcyksdGhpcy5faW5pdEljb24oKSx0aGlzLnVwZGF0ZSgpLHRoaXMuZmlyZSgiYWRkIiksdC5vcHRpb25zLnpvb21BbmltYXRpb24mJnQub3B0aW9ucy5tYXJrZXJab29tQW5pbWF0aW9uJiZ0Lm9uKCJ6b29tYW5pbSIsdGhpcy5fYW5pbWF0ZVpvb20sdGhpcyl9LGFkZFRvOmZ1bmN0aW9uKHQpe3JldHVybiB0LmFkZExheWVyKHRoaXMpLHRoaXN9LG9uUmVtb3ZlOmZ1bmN0aW9uKHQpe3RoaXMuZHJhZ2dpbmcmJnRoaXMuZHJhZ2dpbmcuZGlzYWJsZSgpLHRoaXMuX3JlbW92ZUljb24oKSx0aGlzLl9yZW1vdmVTaGFkb3coKSx0aGlzLmZpcmUoInJlbW92ZSIpLHQub2ZmKHt2aWV3cmVzZXQ6dGhpcy51cGRhdGUsem9vbWFuaW06dGhpcy5fYW5pbWF0ZVpvb219LHRoaXMpLHRoaXMuX21hcD1udWxsfSxnZXRMYXRMbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGF0bG5nfSxzZXRMYXRMbmc6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2xhdGxuZz1vLmxhdExuZyh0KSx0aGlzLnVwZGF0ZSgpLHRoaXMuZmlyZSgibW92ZSIse2xhdGxuZzp0aGlzLl9sYXRsbmd9KX0sc2V0WkluZGV4T2Zmc2V0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMuekluZGV4T2Zmc2V0PXQsdGhpcy51cGRhdGUoKSx0aGlzfSxzZXRJY29uOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMuaWNvbj10LHRoaXMuX21hcCYmKHRoaXMuX2luaXRJY29uKCksdGhpcy51cGRhdGUoKSksdGhpcy5fcG9wdXAmJnRoaXMuYmluZFBvcHVwKHRoaXMuX3BvcHVwKSx0aGlzfSx1cGRhdGU6ZnVuY3Rpb24oKXtpZih0aGlzLl9pY29uKXt2YXIgdD10aGlzLl9tYXAubGF0TG5nVG9MYXllclBvaW50KHRoaXMuX2xhdGxuZykucm91bmQoKTt0aGlzLl9zZXRQb3ModCl9cmV0dXJuIHRoaXN9LF9pbml0SWNvbjpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucyxlPXRoaXMuX21hcCxpPWUub3B0aW9ucy56b29tQW5pbWF0aW9uJiZlLm9wdGlvbnMubWFya2VyWm9vbUFuaW1hdGlvbixuPWk/ImxlYWZsZXQtem9vbS1hbmltYXRlZCI6ImxlYWZsZXQtem9vbS1oaWRlIixzPXQuaWNvbi5jcmVhdGVJY29uKHRoaXMuX2ljb24pLGE9ITE7cyE9PXRoaXMuX2ljb24mJih0aGlzLl9pY29uJiZ0aGlzLl9yZW1vdmVJY29uKCksYT0hMCx0LnRpdGxlJiYocy50aXRsZT10LnRpdGxlKSx0LmFsdCYmKHMuYWx0PXQuYWx0KSksby5Eb21VdGlsLmFkZENsYXNzKHMsbiksdC5rZXlib2FyZCYmKHMudGFiSW5kZXg9IjAiKSx0aGlzLl9pY29uPXMsdGhpcy5faW5pdEludGVyYWN0aW9uKCksdC5yaXNlT25Ib3ZlciYmby5Eb21FdmVudC5vbihzLCJtb3VzZW92ZXIiLHRoaXMuX2JyaW5nVG9Gcm9udCx0aGlzKS5vbihzLCJtb3VzZW91dCIsdGhpcy5fcmVzZXRaSW5kZXgsdGhpcyk7dmFyIHI9dC5pY29uLmNyZWF0ZVNoYWRvdyh0aGlzLl9zaGFkb3cpLGg9ITE7ciE9PXRoaXMuX3NoYWRvdyYmKHRoaXMuX3JlbW92ZVNoYWRvdygpLGg9ITApLHImJm8uRG9tVXRpbC5hZGRDbGFzcyhyLG4pLHRoaXMuX3NoYWRvdz1yLHQub3BhY2l0eTwxJiZ0aGlzLl91cGRhdGVPcGFjaXR5KCk7dmFyIGw9dGhpcy5fbWFwLl9wYW5lczthJiZsLm1hcmtlclBhbmUuYXBwZW5kQ2hpbGQodGhpcy5faWNvbiksciYmaCYmbC5zaGFkb3dQYW5lLmFwcGVuZENoaWxkKHRoaXMuX3NoYWRvdyl9LF9yZW1vdmVJY29uOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLnJpc2VPbkhvdmVyJiZvLkRvbUV2ZW50Lm9mZih0aGlzLl9pY29uLCJtb3VzZW92ZXIiLHRoaXMuX2JyaW5nVG9Gcm9udCkub2ZmKHRoaXMuX2ljb24sIm1vdXNlb3V0Iix0aGlzLl9yZXNldFpJbmRleCksdGhpcy5fbWFwLl9wYW5lcy5tYXJrZXJQYW5lLnJlbW92ZUNoaWxkKHRoaXMuX2ljb24pLHRoaXMuX2ljb249bnVsbH0sX3JlbW92ZVNoYWRvdzpmdW5jdGlvbigpe3RoaXMuX3NoYWRvdyYmdGhpcy5fbWFwLl9wYW5lcy5zaGFkb3dQYW5lLnJlbW92ZUNoaWxkKHRoaXMuX3NoYWRvdyksdGhpcy5fc2hhZG93PW51bGx9LF9zZXRQb3M6ZnVuY3Rpb24odCl7by5Eb21VdGlsLnNldFBvc2l0aW9uKHRoaXMuX2ljb24sdCksdGhpcy5fc2hhZG93JiZvLkRvbVV0aWwuc2V0UG9zaXRpb24odGhpcy5fc2hhZG93LHQpLHRoaXMuX3pJbmRleD10LnkrdGhpcy5vcHRpb25zLnpJbmRleE9mZnNldCx0aGlzLl9yZXNldFpJbmRleCgpfSxfdXBkYXRlWkluZGV4OmZ1bmN0aW9uKHQpe3RoaXMuX2ljb24uc3R5bGUuekluZGV4PXRoaXMuX3pJbmRleCt0fSxfYW5pbWF0ZVpvb206ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbWFwLl9sYXRMbmdUb05ld0xheWVyUG9pbnQodGhpcy5fbGF0bG5nLHQuem9vbSx0LmNlbnRlcikucm91bmQoKTt0aGlzLl9zZXRQb3MoZSl9LF9pbml0SW50ZXJhY3Rpb246ZnVuY3Rpb24oKXtpZih0aGlzLm9wdGlvbnMuY2xpY2thYmxlKXt2YXIgdD10aGlzLl9pY29uLGU9WyJkYmxjbGljayIsIm1vdXNlZG93biIsIm1vdXNlb3ZlciIsIm1vdXNlb3V0IiwiY29udGV4dG1lbnUiXTtvLkRvbVV0aWwuYWRkQ2xhc3ModCwibGVhZmxldC1jbGlja2FibGUiKSxvLkRvbUV2ZW50Lm9uKHQsImNsaWNrIix0aGlzLl9vbk1vdXNlQ2xpY2ssdGhpcyksby5Eb21FdmVudC5vbih0LCJrZXlwcmVzcyIsdGhpcy5fb25LZXlQcmVzcyx0aGlzKTtmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKylvLkRvbUV2ZW50Lm9uKHQsZVtpXSx0aGlzLl9maXJlTW91c2VFdmVudCx0aGlzKTtvLkhhbmRsZXIuTWFya2VyRHJhZyYmKHRoaXMuZHJhZ2dpbmc9bmV3IG8uSGFuZGxlci5NYXJrZXJEcmFnKHRoaXMpLHRoaXMub3B0aW9ucy5kcmFnZ2FibGUmJnRoaXMuZHJhZ2dpbmcuZW5hYmxlKCkpfX0sX29uTW91c2VDbGljazpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmRyYWdnaW5nJiZ0aGlzLmRyYWdnaW5nLm1vdmVkKCk7KHRoaXMuaGFzRXZlbnRMaXN0ZW5lcnModC50eXBlKXx8ZSkmJm8uRG9tRXZlbnQuc3RvcFByb3BhZ2F0aW9uKHQpLGV8fCh0aGlzLmRyYWdnaW5nJiZ0aGlzLmRyYWdnaW5nLl9lbmFibGVkfHwhdGhpcy5fbWFwLmRyYWdnaW5nfHwhdGhpcy5fbWFwLmRyYWdnaW5nLm1vdmVkKCkpJiZ0aGlzLmZpcmUodC50eXBlLHtvcmlnaW5hbEV2ZW50OnQsbGF0bG5nOnRoaXMuX2xhdGxuZ30pfSxfb25LZXlQcmVzczpmdW5jdGlvbih0KXsxMz09PXQua2V5Q29kZSYmdGhpcy5maXJlKCJjbGljayIse29yaWdpbmFsRXZlbnQ6dCxsYXRsbmc6dGhpcy5fbGF0bG5nfSl9LF9maXJlTW91c2VFdmVudDpmdW5jdGlvbih0KXt0aGlzLmZpcmUodC50eXBlLHtvcmlnaW5hbEV2ZW50OnQsbGF0bG5nOnRoaXMuX2xhdGxuZ30pLCJjb250ZXh0bWVudSI9PT10LnR5cGUmJnRoaXMuaGFzRXZlbnRMaXN0ZW5lcnModC50eXBlKSYmby5Eb21FdmVudC5wcmV2ZW50RGVmYXVsdCh0KSwibW91c2Vkb3duIiE9PXQudHlwZT9vLkRvbUV2ZW50LnN0b3BQcm9wYWdhdGlvbih0KTpvLkRvbUV2ZW50LnByZXZlbnREZWZhdWx0KHQpfSxzZXRPcGFjaXR5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMub3BhY2l0eT10LHRoaXMuX21hcCYmdGhpcy5fdXBkYXRlT3BhY2l0eSgpLHRoaXN9LF91cGRhdGVPcGFjaXR5OmZ1bmN0aW9uKCl7by5Eb21VdGlsLnNldE9wYWNpdHkodGhpcy5faWNvbix0aGlzLm9wdGlvbnMub3BhY2l0eSksdGhpcy5fc2hhZG93JiZvLkRvbVV0aWwuc2V0T3BhY2l0eSh0aGlzLl9zaGFkb3csdGhpcy5vcHRpb25zLm9wYWNpdHkpfSxfYnJpbmdUb0Zyb250OmZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlWkluZGV4KHRoaXMub3B0aW9ucy5yaXNlT2Zmc2V0KX0sX3Jlc2V0WkluZGV4OmZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlWkluZGV4KDApfX0pLG8ubWFya2VyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBvLk1hcmtlcih0LGUpfSxvLkRpdkljb249by5JY29uLmV4dGVuZCh7b3B0aW9uczp7aWNvblNpemU6WzEyLDEyXSxjbGFzc05hbWU6ImxlYWZsZXQtZGl2LWljb24iLGh0bWw6ITF9LGNyZWF0ZUljb246ZnVuY3Rpb24odCl7dmFyIGk9dCYmIkRJViI9PT10LnRhZ05hbWU/dDplLmNyZWF0ZUVsZW1lbnQoImRpdiIpLG49dGhpcy5vcHRpb25zO3JldHVybiBpLmlubmVySFRNTD1uLmh0bWwhPT0hMT9uLmh0bWw6IiIsbi5iZ1BvcyYmKGkuc3R5bGUuYmFja2dyb3VuZFBvc2l0aW9uPS1uLmJnUG9zLngrInB4ICIrLW4uYmdQb3MueSsicHgiKSx0aGlzLl9zZXRJY29uU3R5bGVzKGksImljb24iKSxpfSxjcmVhdGVTaGFkb3c6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH19KSxvLmRpdkljb249ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBvLkRpdkljb24odCl9LG8uTWFwLm1lcmdlT3B0aW9ucyh7Y2xvc2VQb3B1cE9uQ2xpY2s6ITB9KSxvLlBvcHVwPW8uQ2xhc3MuZXh0ZW5kKHtpbmNsdWRlczpvLk1peGluLkV2ZW50cyxvcHRpb25zOnttaW5XaWR0aDo1MCxtYXhXaWR0aDozMDAsYXV0b1BhbjohMCxjbG9zZUJ1dHRvbjohMCxvZmZzZXQ6WzAsN10sYXV0b1BhblBhZGRpbmc6WzUsNV0sa2VlcEluVmlldzohMSxjbGFzc05hbWU6IiIsem9vbUFuaW1hdGlvbjohMH0saW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUpe28uc2V0T3B0aW9ucyh0aGlzLHQpLHRoaXMuX3NvdXJjZT1lLHRoaXMuX2FuaW1hdGVkPW8uQnJvd3Nlci5hbnkzZCYmdGhpcy5vcHRpb25zLnpvb21BbmltYXRpb24sdGhpcy5faXNPcGVuPSExfSxvbkFkZDpmdW5jdGlvbih0KXt0aGlzLl9tYXA9dCx0aGlzLl9jb250YWluZXJ8fHRoaXMuX2luaXRMYXlvdXQoKTt2YXIgZT10Lm9wdGlvbnMuZmFkZUFuaW1hdGlvbjtlJiZvLkRvbVV0aWwuc2V0T3BhY2l0eSh0aGlzLl9jb250YWluZXIsMCksdC5fcGFuZXMucG9wdXBQYW5lLmFwcGVuZENoaWxkKHRoaXMuX2NvbnRhaW5lciksdC5vbih0aGlzLl9nZXRFdmVudHMoKSx0aGlzKSx0aGlzLnVwZGF0ZSgpLGUmJm8uRG9tVXRpbC5zZXRPcGFjaXR5KHRoaXMuX2NvbnRhaW5lciwxKSx0aGlzLmZpcmUoIm9wZW4iKSx0LmZpcmUoInBvcHVwb3BlbiIse3BvcHVwOnRoaXN9KSx0aGlzLl9zb3VyY2UmJnRoaXMuX3NvdXJjZS5maXJlKCJwb3B1cG9wZW4iLHtwb3B1cDp0aGlzfSl9LGFkZFRvOmZ1bmN0aW9uKHQpe3JldHVybiB0LmFkZExheWVyKHRoaXMpLHRoaXN9LG9wZW5PbjpmdW5jdGlvbih0KXtyZXR1cm4gdC5vcGVuUG9wdXAodGhpcyksdGhpc30sb25SZW1vdmU6ZnVuY3Rpb24odCl7dC5fcGFuZXMucG9wdXBQYW5lLnJlbW92ZUNoaWxkKHRoaXMuX2NvbnRhaW5lciksby5VdGlsLmZhbHNlRm4odGhpcy5fY29udGFpbmVyLm9mZnNldFdpZHRoKSx0Lm9mZih0aGlzLl9nZXRFdmVudHMoKSx0aGlzKSx0Lm9wdGlvbnMuZmFkZUFuaW1hdGlvbiYmby5Eb21VdGlsLnNldE9wYWNpdHkodGhpcy5fY29udGFpbmVyLDApLHRoaXMuX21hcD1udWxsLHRoaXMuZmlyZSgiY2xvc2UiKSx0LmZpcmUoInBvcHVwY2xvc2UiLHtwb3B1cDp0aGlzfSksdGhpcy5fc291cmNlJiZ0aGlzLl9zb3VyY2UuZmlyZSgicG9wdXBjbG9zZSIse3BvcHVwOnRoaXN9KX0sZ2V0TGF0TG5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xhdGxuZ30sc2V0TGF0TG5nOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9sYXRsbmc9by5sYXRMbmcodCksdGhpcy5fbWFwJiYodGhpcy5fdXBkYXRlUG9zaXRpb24oKSx0aGlzLl9hZGp1c3RQYW4oKSksdGhpc30sZ2V0Q29udGVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb250ZW50fSxzZXRDb250ZW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9jb250ZW50PXQsdGhpcy51cGRhdGUoKSx0aGlzfSx1cGRhdGU6ZnVuY3Rpb24oKXt0aGlzLl9tYXAmJih0aGlzLl9jb250YWluZXIuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIix0aGlzLl91cGRhdGVDb250ZW50KCksdGhpcy5fdXBkYXRlTGF5b3V0KCksdGhpcy5fdXBkYXRlUG9zaXRpb24oKSx0aGlzLl9jb250YWluZXIuc3R5bGUudmlzaWJpbGl0eT0iIix0aGlzLl9hZGp1c3RQYW4oKSl9LF9nZXRFdmVudHM6ZnVuY3Rpb24oKXt2YXIgdD17dmlld3Jlc2V0OnRoaXMuX3VwZGF0ZVBvc2l0aW9ufTtyZXR1cm4gdGhpcy5fYW5pbWF0ZWQmJih0Lnpvb21hbmltPXRoaXMuX3pvb21BbmltYXRpb24pLCgiY2xvc2VPbkNsaWNrImluIHRoaXMub3B0aW9ucz90aGlzLm9wdGlvbnMuY2xvc2VPbkNsaWNrOnRoaXMuX21hcC5vcHRpb25zLmNsb3NlUG9wdXBPbkNsaWNrKSYmKHQucHJlY2xpY2s9dGhpcy5fY2xvc2UpLHRoaXMub3B0aW9ucy5rZWVwSW5WaWV3JiYodC5tb3ZlZW5kPXRoaXMuX2FkanVzdFBhbiksdH0sX2Nsb3NlOmZ1bmN0aW9uKCl7dGhpcy5fbWFwJiZ0aGlzLl9tYXAuY2xvc2VQb3B1cCh0aGlzKX0sX2luaXRMYXlvdXQ6ZnVuY3Rpb24oKXt2YXIgdCxlPSJsZWFmbGV0LXBvcHVwIixpPWUrIiAiK3RoaXMub3B0aW9ucy5jbGFzc05hbWUrIiBsZWFmbGV0LXpvb20tIisodGhpcy5fYW5pbWF0ZWQ/ImFuaW1hdGVkIjoiaGlkZSIpLG49dGhpcy5fY29udGFpbmVyPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsaSk7dGhpcy5vcHRpb25zLmNsb3NlQnV0dG9uJiYodD10aGlzLl9jbG9zZUJ1dHRvbj1vLkRvbVV0aWwuY3JlYXRlKCJhIixlKyItY2xvc2UtYnV0dG9uIixuKSx0LmhyZWY9IiNjbG9zZSIsdC5pbm5lckhUTUw9IiYjMjE1OyIsby5Eb21FdmVudC5kaXNhYmxlQ2xpY2tQcm9wYWdhdGlvbih0KSxvLkRvbUV2ZW50Lm9uKHQsImNsaWNrIix0aGlzLl9vbkNsb3NlQnV0dG9uQ2xpY2ssdGhpcykpO3ZhciBzPXRoaXMuX3dyYXBwZXI9by5Eb21VdGlsLmNyZWF0ZSgiZGl2IixlKyItY29udGVudC13cmFwcGVyIixuKTtvLkRvbUV2ZW50LmRpc2FibGVDbGlja1Byb3BhZ2F0aW9uKHMpLHRoaXMuX2NvbnRlbnROb2RlPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsZSsiLWNvbnRlbnQiLHMpLG8uRG9tRXZlbnQuZGlzYWJsZVNjcm9sbFByb3BhZ2F0aW9uKHRoaXMuX2NvbnRlbnROb2RlKSxvLkRvbUV2ZW50Lm9uKHMsImNvbnRleHRtZW51IixvLkRvbUV2ZW50LnN0b3BQcm9wYWdhdGlvbiksdGhpcy5fdGlwQ29udGFpbmVyPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsZSsiLXRpcC1jb250YWluZXIiLG4pLHRoaXMuX3RpcD1vLkRvbVV0aWwuY3JlYXRlKCJkaXYiLGUrIi10aXAiLHRoaXMuX3RpcENvbnRhaW5lcil9LF91cGRhdGVDb250ZW50OmZ1bmN0aW9uKCl7aWYodGhpcy5fY29udGVudCl7aWYoInN0cmluZyI9PXR5cGVvZiB0aGlzLl9jb250ZW50KXRoaXMuX2NvbnRlbnROb2RlLmlubmVySFRNTD10aGlzLl9jb250ZW50O2Vsc2V7Zm9yKDt0aGlzLl9jb250ZW50Tm9kZS5oYXNDaGlsZE5vZGVzKCk7KXRoaXMuX2NvbnRlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuX2NvbnRlbnROb2RlLmZpcnN0Q2hpbGQpO3RoaXMuX2NvbnRlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMuX2NvbnRlbnQpfXRoaXMuZmlyZSgiY29udGVudHVwZGF0ZSIpfX0sX3VwZGF0ZUxheW91dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2NvbnRlbnROb2RlLGU9dC5zdHlsZTtlLndpZHRoPSIiLGUud2hpdGVTcGFjZT0ibm93cmFwIjt2YXIgaT10Lm9mZnNldFdpZHRoO2k9TWF0aC5taW4oaSx0aGlzLm9wdGlvbnMubWF4V2lkdGgpLGk9TWF0aC5tYXgoaSx0aGlzLm9wdGlvbnMubWluV2lkdGgpLGUud2lkdGg9aSsxKyJweCIsZS53aGl0ZVNwYWNlPSIiLGUuaGVpZ2h0PSIiO3ZhciBuPXQub2Zmc2V0SGVpZ2h0LHM9dGhpcy5vcHRpb25zLm1heEhlaWdodCxhPSJsZWFmbGV0LXBvcHVwLXNjcm9sbGVkIjtzJiZuPnM/KGUuaGVpZ2h0PXMrInB4IixvLkRvbVV0aWwuYWRkQ2xhc3ModCxhKSk6by5Eb21VdGlsLnJlbW92ZUNsYXNzKHQsYSksdGhpcy5fY29udGFpbmVyV2lkdGg9dGhpcy5fY29udGFpbmVyLm9mZnNldFdpZHRofSxfdXBkYXRlUG9zaXRpb246ZnVuY3Rpb24oKXtpZih0aGlzLl9tYXApe3ZhciB0PXRoaXMuX21hcC5sYXRMbmdUb0xheWVyUG9pbnQodGhpcy5fbGF0bG5nKSxlPXRoaXMuX2FuaW1hdGVkLGk9by5wb2ludCh0aGlzLm9wdGlvbnMub2Zmc2V0KTtlJiZvLkRvbVV0aWwuc2V0UG9zaXRpb24odGhpcy5fY29udGFpbmVyLHQpLHRoaXMuX2NvbnRhaW5lckJvdHRvbT0taS55LShlPzA6dC55KSx0aGlzLl9jb250YWluZXJMZWZ0PS1NYXRoLnJvdW5kKHRoaXMuX2NvbnRhaW5lcldpZHRoLzIpK2kueCsoZT8wOnQueCksdGhpcy5fY29udGFpbmVyLnN0eWxlLmJvdHRvbT10aGlzLl9jb250YWluZXJCb3R0b20rInB4Iix0aGlzLl9jb250YWluZXIuc3R5bGUubGVmdD10aGlzLl9jb250YWluZXJMZWZ0KyJweCJ9fSxfem9vbUFuaW1hdGlvbjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9tYXAuX2xhdExuZ1RvTmV3TGF5ZXJQb2ludCh0aGlzLl9sYXRsbmcsdC56b29tLHQuY2VudGVyKTtvLkRvbVV0aWwuc2V0UG9zaXRpb24odGhpcy5fY29udGFpbmVyLGUpfSxfYWRqdXN0UGFuOmZ1bmN0aW9uKCl7aWYodGhpcy5vcHRpb25zLmF1dG9QYW4pe3ZhciB0PXRoaXMuX21hcCxlPXRoaXMuX2NvbnRhaW5lci5vZmZzZXRIZWlnaHQsaT10aGlzLl9jb250YWluZXJXaWR0aCxuPW5ldyBvLlBvaW50KHRoaXMuX2NvbnRhaW5lckxlZnQsLWUtdGhpcy5fY29udGFpbmVyQm90dG9tKTt0aGlzLl9hbmltYXRlZCYmbi5fYWRkKG8uRG9tVXRpbC5nZXRQb3NpdGlvbih0aGlzLl9jb250YWluZXIpKTt2YXIgcz10LmxheWVyUG9pbnRUb0NvbnRhaW5lclBvaW50KG4pLGE9by5wb2ludCh0aGlzLm9wdGlvbnMuYXV0b1BhblBhZGRpbmcpLHI9by5wb2ludCh0aGlzLm9wdGlvbnMuYXV0b1BhblBhZGRpbmdUb3BMZWZ0fHxhKSxoPW8ucG9pbnQodGhpcy5vcHRpb25zLmF1dG9QYW5QYWRkaW5nQm90dG9tUmlnaHR8fGEpLGw9dC5nZXRTaXplKCksdT0wLGM9MDtzLngraStoLng+bC54JiYodT1zLngraS1sLngraC54KSxzLngtdS1yLng8MCYmKHU9cy54LXIueCkscy55K2UraC55PmwueSYmKGM9cy55K2UtbC55K2gueSkscy55LWMtci55PDAmJihjPXMueS1yLnkpLCh1fHxjKSYmdC5maXJlKCJhdXRvcGFuc3RhcnQiKS5wYW5CeShbdSxjXSl9fSxfb25DbG9zZUJ1dHRvbkNsaWNrOmZ1bmN0aW9uKHQpe3RoaXMuX2Nsb3NlKCksby5Eb21FdmVudC5zdG9wKHQpfX0pLG8ucG9wdXA9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IG8uUG9wdXAodCxlKX0sby5NYXAuaW5jbHVkZSh7b3BlblBvcHVwOmZ1bmN0aW9uKHQsZSxpKXtpZih0aGlzLmNsb3NlUG9wdXAoKSwhKHQgaW5zdGFuY2VvZiBvLlBvcHVwKSl7dmFyIG49dDt0PW5ldyBvLlBvcHVwKGkpLnNldExhdExuZyhlKS5zZXRDb250ZW50KG4pfXJldHVybiB0Ll9pc09wZW49ITAsdGhpcy5fcG9wdXA9dCx0aGlzLmFkZExheWVyKHQpfSxjbG9zZVBvcHVwOmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0IT09dGhpcy5fcG9wdXB8fCh0PXRoaXMuX3BvcHVwLHRoaXMuX3BvcHVwPW51bGwpLHQmJih0aGlzLnJlbW92ZUxheWVyKHQpLHQuX2lzT3Blbj0hMSksdGhpc319KSxvLk1hcmtlci5pbmNsdWRlKHtvcGVuUG9wdXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcG9wdXAmJnRoaXMuX21hcCYmIXRoaXMuX21hcC5oYXNMYXllcih0aGlzLl9wb3B1cCkmJih0aGlzLl9wb3B1cC5zZXRMYXRMbmcodGhpcy5fbGF0bG5nKSx0aGlzLl9tYXAub3BlblBvcHVwKHRoaXMuX3BvcHVwKSksdGhpc30sY2xvc2VQb3B1cDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wb3B1cCYmdGhpcy5fcG9wdXAuX2Nsb3NlKCksdGhpc30sdG9nZ2xlUG9wdXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcG9wdXAmJih0aGlzLl9wb3B1cC5faXNPcGVuP3RoaXMuY2xvc2VQb3B1cCgpOnRoaXMub3BlblBvcHVwKCkpLHRoaXN9LGJpbmRQb3B1cDpmdW5jdGlvbih0LGUpe3ZhciBpPW8ucG9pbnQodGhpcy5vcHRpb25zLmljb24ub3B0aW9ucy5wb3B1cEFuY2hvcnx8WzAsMF0pO3JldHVybiBpPWkuYWRkKG8uUG9wdXAucHJvdG90eXBlLm9wdGlvbnMub2Zmc2V0KSxlJiZlLm9mZnNldCYmKGk9aS5hZGQoZS5vZmZzZXQpKSxlPW8uZXh0ZW5kKHtvZmZzZXQ6aX0sZSksdGhpcy5fcG9wdXBIYW5kbGVyc0FkZGVkfHwodGhpcy5vbigiY2xpY2siLHRoaXMudG9nZ2xlUG9wdXAsdGhpcykub24oInJlbW92ZSIsdGhpcy5jbG9zZVBvcHVwLHRoaXMpLm9uKCJtb3ZlIix0aGlzLl9tb3ZlUG9wdXAsdGhpcyksdGhpcy5fcG9wdXBIYW5kbGVyc0FkZGVkPSEwKSx0IGluc3RhbmNlb2Ygby5Qb3B1cD8oby5zZXRPcHRpb25zKHQsZSksdGhpcy5fcG9wdXA9dCk6dGhpcy5fcG9wdXA9bmV3IG8uUG9wdXAoZSx0aGlzKS5zZXRDb250ZW50KHQpLHRoaXN9LHNldFBvcHVwQ29udGVudDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcG9wdXAmJnRoaXMuX3BvcHVwLnNldENvbnRlbnQodCksdGhpc30sdW5iaW5kUG9wdXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcG9wdXAmJih0aGlzLl9wb3B1cD1udWxsLHRoaXMub2ZmKCJjbGljayIsdGhpcy50b2dnbGVQb3B1cCx0aGlzKS5vZmYoInJlbW92ZSIsdGhpcy5jbG9zZVBvcHVwLHRoaXMpLm9mZigibW92ZSIsdGhpcy5fbW92ZVBvcHVwLHRoaXMpLHRoaXMuX3BvcHVwSGFuZGxlcnNBZGRlZD0hMSksdGhpc30sZ2V0UG9wdXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcG9wdXB9LF9tb3ZlUG9wdXA6ZnVuY3Rpb24odCl7dGhpcy5fcG9wdXAuc2V0TGF0TG5nKHQubGF0bG5nKX19KSxvLkxheWVyR3JvdXA9by5DbGFzcy5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy5fbGF5ZXJzPXt9O3ZhciBlLGk7aWYodClmb3IoZT0wLGk9dC5sZW5ndGg7aT5lO2UrKyl0aGlzLmFkZExheWVyKHRbZV0pfSxhZGRMYXllcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmdldExheWVySWQodCk7cmV0dXJuIHRoaXMuX2xheWVyc1tlXT10LHRoaXMuX21hcCYmdGhpcy5fbWFwLmFkZExheWVyKHQpLHRoaXN9LHJlbW92ZUxheWVyOmZ1bmN0aW9uKHQpe3ZhciBlPXQgaW4gdGhpcy5fbGF5ZXJzP3Q6dGhpcy5nZXRMYXllcklkKHQpO3JldHVybiB0aGlzLl9tYXAmJnRoaXMuX2xheWVyc1tlXSYmdGhpcy5fbWFwLnJlbW92ZUxheWVyKHRoaXMuX2xheWVyc1tlXSksZGVsZXRlIHRoaXMuX2xheWVyc1tlXSx0aGlzfSxoYXNMYXllcjpmdW5jdGlvbih0KXtyZXR1cm4gdD90IGluIHRoaXMuX2xheWVyc3x8dGhpcy5nZXRMYXllcklkKHQpaW4gdGhpcy5fbGF5ZXJzOiExfSxjbGVhckxheWVyczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2hMYXllcih0aGlzLnJlbW92ZUxheWVyLHRoaXMpLHRoaXN9LGludm9rZTpmdW5jdGlvbih0KXt2YXIgZSxpLG49QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO2ZvcihlIGluIHRoaXMuX2xheWVycylpPXRoaXMuX2xheWVyc1tlXSxpW3RdJiZpW3RdLmFwcGx5KGksbik7cmV0dXJuIHRoaXN9LG9uQWRkOmZ1bmN0aW9uKHQpe3RoaXMuX21hcD10LHRoaXMuZWFjaExheWVyKHQuYWRkTGF5ZXIsdCl9LG9uUmVtb3ZlOmZ1bmN0aW9uKHQpe3RoaXMuZWFjaExheWVyKHQucmVtb3ZlTGF5ZXIsdCksdGhpcy5fbWFwPW51bGx9LGFkZFRvOmZ1bmN0aW9uKHQpe3JldHVybiB0LmFkZExheWVyKHRoaXMpLHRoaXN9LGVhY2hMYXllcjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaSBpbiB0aGlzLl9sYXllcnMpdC5jYWxsKGUsdGhpcy5fbGF5ZXJzW2ldKTtyZXR1cm4gdGhpc30sZ2V0TGF5ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2xheWVyc1t0XX0sZ2V0TGF5ZXJzOmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMuX2xheWVycyl0LnB1c2godGhpcy5fbGF5ZXJzW2VdKTtyZXR1cm4gdH0sc2V0WkluZGV4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmludm9rZSgic2V0WkluZGV4Iix0KX0sZ2V0TGF5ZXJJZDpmdW5jdGlvbih0KXtyZXR1cm4gby5zdGFtcCh0KX19KSxvLmxheWVyR3JvdXA9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBvLkxheWVyR3JvdXAodCl9LG8uRmVhdHVyZUdyb3VwPW8uTGF5ZXJHcm91cC5leHRlbmQoe2luY2x1ZGVzOm8uTWl4aW4uRXZlbnRzLHN0YXRpY3M6e0VWRU5UUzoiY2xpY2sgZGJsY2xpY2sgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlbW92ZSBjb250ZXh0bWVudSBwb3B1cG9wZW4gcG9wdXBjbG9zZSJ9LGFkZExheWVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmhhc0xheWVyKHQpP3RoaXM6KCJvbiJpbiB0JiZ0Lm9uKG8uRmVhdHVyZUdyb3VwLkVWRU5UUyx0aGlzLl9wcm9wYWdhdGVFdmVudCx0aGlzKSxvLkxheWVyR3JvdXAucHJvdG90eXBlLmFkZExheWVyLmNhbGwodGhpcyx0KSx0aGlzLl9wb3B1cENvbnRlbnQmJnQuYmluZFBvcHVwJiZ0LmJpbmRQb3B1cCh0aGlzLl9wb3B1cENvbnRlbnQsdGhpcy5fcG9wdXBPcHRpb25zKSx0aGlzLmZpcmUoImxheWVyYWRkIix7bGF5ZXI6dH0pKX0scmVtb3ZlTGF5ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaGFzTGF5ZXIodCk/KHQgaW4gdGhpcy5fbGF5ZXJzJiYodD10aGlzLl9sYXllcnNbdF0pLHQub2ZmKG8uRmVhdHVyZUdyb3VwLkVWRU5UUyx0aGlzLl9wcm9wYWdhdGVFdmVudCx0aGlzKSxvLkxheWVyR3JvdXAucHJvdG90eXBlLnJlbW92ZUxheWVyLmNhbGwodGhpcyx0KSx0aGlzLl9wb3B1cENvbnRlbnQmJnRoaXMuaW52b2tlKCJ1bmJpbmRQb3B1cCIpLHRoaXMuZmlyZSgibGF5ZXJyZW1vdmUiLHtsYXllcjp0fSkpOnRoaXN9LGJpbmRQb3B1cDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9wb3B1cENvbnRlbnQ9dCx0aGlzLl9wb3B1cE9wdGlvbnM9ZSx0aGlzLmludm9rZSgiYmluZFBvcHVwIix0LGUpfSxvcGVuUG9wdXA6ZnVuY3Rpb24odCl7Zm9yKHZhciBlIGluIHRoaXMuX2xheWVycyl7dGhpcy5fbGF5ZXJzW2VdLm9wZW5Qb3B1cCh0KTticmVha31yZXR1cm4gdGhpc30sc2V0U3R5bGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaW52b2tlKCJzZXRTdHlsZSIsdCl9LGJyaW5nVG9Gcm9udDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmludm9rZSgiYnJpbmdUb0Zyb250Iil9LGJyaW5nVG9CYWNrOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW52b2tlKCJicmluZ1RvQmFjayIpfSxnZXRCb3VuZHM6ZnVuY3Rpb24oKXt2YXIgdD1uZXcgby5MYXRMbmdCb3VuZHM7cmV0dXJuIHRoaXMuZWFjaExheWVyKGZ1bmN0aW9uKGUpe3QuZXh0ZW5kKGUgaW5zdGFuY2VvZiBvLk1hcmtlcj9lLmdldExhdExuZygpOmUuZ2V0Qm91bmRzKCkpfSksdH0sX3Byb3BhZ2F0ZUV2ZW50OmZ1bmN0aW9uKHQpe3Q9by5leHRlbmQoe2xheWVyOnQudGFyZ2V0LHRhcmdldDp0aGlzfSx0KSx0aGlzLmZpcmUodC50eXBlLHQpfX0pLG8uZmVhdHVyZUdyb3VwPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgby5GZWF0dXJlR3JvdXAodCl9LG8uUGF0aD1vLkNsYXNzLmV4dGVuZCh7aW5jbHVkZXM6W28uTWl4aW4uRXZlbnRzXSxzdGF0aWNzOntDTElQX1BBRERJTkc6ZnVuY3Rpb24oKXt2YXIgZT1vLkJyb3dzZXIubW9iaWxlPzEyODA6MmUzLGk9KGUvTWF0aC5tYXgodC5vdXRlcldpZHRoLHQub3V0ZXJIZWlnaHQpLTEpLzI7cmV0dXJuIE1hdGgubWF4KDAsTWF0aC5taW4oLjUsaSkpfSgpfSxvcHRpb25zOntzdHJva2U6ITAsY29sb3I6IiMwMDMzZmYiLGRhc2hBcnJheTpudWxsLGxpbmVDYXA6bnVsbCxsaW5lSm9pbjpudWxsLHdlaWdodDo1LG9wYWNpdHk6LjUsZmlsbDohMSxmaWxsQ29sb3I6bnVsbCxmaWxsT3BhY2l0eTouMixjbGlja2FibGU6ITB9LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7by5zZXRPcHRpb25zKHRoaXMsdCl9LG9uQWRkOmZ1bmN0aW9uKHQpe3RoaXMuX21hcD10LHRoaXMuX2NvbnRhaW5lcnx8KHRoaXMuX2luaXRFbGVtZW50cygpLHRoaXMuX2luaXRFdmVudHMoKSksdGhpcy5wcm9qZWN0TGF0bG5ncygpLHRoaXMuX3VwZGF0ZVBhdGgoKSx0aGlzLl9jb250YWluZXImJnRoaXMuX21hcC5fcGF0aFJvb3QuYXBwZW5kQ2hpbGQodGhpcy5fY29udGFpbmVyKSx0aGlzLmZpcmUoImFkZCIpLHQub24oe3ZpZXdyZXNldDp0aGlzLnByb2plY3RMYXRsbmdzLG1vdmVlbmQ6dGhpcy5fdXBkYXRlUGF0aH0sdGhpcyl9LGFkZFRvOmZ1bmN0aW9uKHQpe3JldHVybiB0LmFkZExheWVyKHRoaXMpLHRoaXN9LG9uUmVtb3ZlOmZ1bmN0aW9uKHQpe3QuX3BhdGhSb290LnJlbW92ZUNoaWxkKHRoaXMuX2NvbnRhaW5lciksdGhpcy5maXJlKCJyZW1vdmUiKSx0aGlzLl9tYXA9bnVsbCxvLkJyb3dzZXIudm1sJiYodGhpcy5fY29udGFpbmVyPW51bGwsdGhpcy5fc3Ryb2tlPW51bGwsdGhpcy5fZmlsbD1udWxsKSx0Lm9mZih7dmlld3Jlc2V0OnRoaXMucHJvamVjdExhdGxuZ3MsbW92ZWVuZDp0aGlzLl91cGRhdGVQYXRofSx0aGlzKX0scHJvamVjdExhdGxuZ3M6ZnVuY3Rpb24oKXt9LHNldFN0eWxlOmZ1bmN0aW9uKHQpe3JldHVybiBvLnNldE9wdGlvbnModGhpcyx0KSx0aGlzLl9jb250YWluZXImJnRoaXMuX3VwZGF0ZVN0eWxlKCksdGhpc30scmVkcmF3OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21hcCYmKHRoaXMucHJvamVjdExhdGxuZ3MoKSx0aGlzLl91cGRhdGVQYXRoKCkpLHRoaXN9fSksby5NYXAuaW5jbHVkZSh7X3VwZGF0ZVBhdGhWaWV3cG9ydDpmdW5jdGlvbigpe3ZhciB0PW8uUGF0aC5DTElQX1BBRERJTkcsZT10aGlzLmdldFNpemUoKSxpPW8uRG9tVXRpbC5nZXRQb3NpdGlvbih0aGlzLl9tYXBQYW5lKSxuPWkubXVsdGlwbHlCeSgtMSkuX3N1YnRyYWN0KGUubXVsdGlwbHlCeSh0KS5fcm91bmQoKSkscz1uLmFkZChlLm11bHRpcGx5QnkoMSsyKnQpLl9yb3VuZCgpKTt0aGlzLl9wYXRoVmlld3BvcnQ9bmV3IG8uQm91bmRzKG4scyl9fSksby5QYXRoLlNWR19OUz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLG8uQnJvd3Nlci5zdmc9ISghZS5jcmVhdGVFbGVtZW50TlN8fCFlLmNyZWF0ZUVsZW1lbnROUyhvLlBhdGguU1ZHX05TLCJzdmciKS5jcmVhdGVTVkdSZWN0KSxvLlBhdGg9by5QYXRoLmV4dGVuZCh7c3RhdGljczp7U1ZHOm8uQnJvd3Nlci5zdmd9LGJyaW5nVG9Gcm9udDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcC5fcGF0aFJvb3QsZT10aGlzLl9jb250YWluZXI7cmV0dXJuIGUmJnQubGFzdENoaWxkIT09ZSYmdC5hcHBlbmRDaGlsZChlKSx0aGlzfSxicmluZ1RvQmFjazpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcC5fcGF0aFJvb3QsZT10aGlzLl9jb250YWluZXIsaT10LmZpcnN0Q2hpbGQ7cmV0dXJuIGUmJmkhPT1lJiZ0Lmluc2VydEJlZm9yZShlLGkpLHRoaXN9LGdldFBhdGhTdHJpbmc6ZnVuY3Rpb24oKXt9LF9jcmVhdGVFbGVtZW50OmZ1bmN0aW9uKHQpe3JldHVybiBlLmNyZWF0ZUVsZW1lbnROUyhvLlBhdGguU1ZHX05TLHQpfSxfaW5pdEVsZW1lbnRzOmZ1bmN0aW9uKCl7dGhpcy5fbWFwLl9pbml0UGF0aFJvb3QoKSx0aGlzLl9pbml0UGF0aCgpLHRoaXMuX2luaXRTdHlsZSgpfSxfaW5pdFBhdGg6ZnVuY3Rpb24oKXt0aGlzLl9jb250YWluZXI9dGhpcy5fY3JlYXRlRWxlbWVudCgiZyIpLHRoaXMuX3BhdGg9dGhpcy5fY3JlYXRlRWxlbWVudCgicGF0aCIpLHRoaXMub3B0aW9ucy5jbGFzc05hbWUmJm8uRG9tVXRpbC5hZGRDbGFzcyh0aGlzLl9wYXRoLHRoaXMub3B0aW9ucy5jbGFzc05hbWUpLHRoaXMuX2NvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLl9wYXRoKX0sX2luaXRTdHlsZTpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5zdHJva2UmJih0aGlzLl9wYXRoLnNldEF0dHJpYnV0ZSgic3Ryb2tlLWxpbmVqb2luIiwicm91bmQiKSx0aGlzLl9wYXRoLnNldEF0dHJpYnV0ZSgic3Ryb2tlLWxpbmVjYXAiLCJyb3VuZCIpKSx0aGlzLm9wdGlvbnMuZmlsbCYmdGhpcy5fcGF0aC5zZXRBdHRyaWJ1dGUoImZpbGwtcnVsZSIsImV2ZW5vZGQiKSx0aGlzLm9wdGlvbnMucG9pbnRlckV2ZW50cyYmdGhpcy5fcGF0aC5zZXRBdHRyaWJ1dGUoInBvaW50ZXItZXZlbnRzIix0aGlzLm9wdGlvbnMucG9pbnRlckV2ZW50cyksdGhpcy5vcHRpb25zLmNsaWNrYWJsZXx8dGhpcy5vcHRpb25zLnBvaW50ZXJFdmVudHN8fHRoaXMuX3BhdGguc2V0QXR0cmlidXRlKCJwb2ludGVyLWV2ZW50cyIsIm5vbmUiKSx0aGlzLl91cGRhdGVTdHlsZSgpfSxfdXBkYXRlU3R5bGU6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuc3Ryb2tlPyh0aGlzLl9wYXRoLnNldEF0dHJpYnV0ZSgic3Ryb2tlIix0aGlzLm9wdGlvbnMuY29sb3IpLHRoaXMuX3BhdGguc2V0QXR0cmlidXRlKCJzdHJva2Utb3BhY2l0eSIsdGhpcy5vcHRpb25zLm9wYWNpdHkpLHRoaXMuX3BhdGguc2V0QXR0cmlidXRlKCJzdHJva2Utd2lkdGgiLHRoaXMub3B0aW9ucy53ZWlnaHQpLHRoaXMub3B0aW9ucy5kYXNoQXJyYXk/dGhpcy5fcGF0aC5zZXRBdHRyaWJ1dGUoInN0cm9rZS1kYXNoYXJyYXkiLHRoaXMub3B0aW9ucy5kYXNoQXJyYXkpOnRoaXMuX3BhdGgucmVtb3ZlQXR0cmlidXRlKCJzdHJva2UtZGFzaGFycmF5IiksdGhpcy5vcHRpb25zLmxpbmVDYXAmJnRoaXMuX3BhdGguc2V0QXR0cmlidXRlKCJzdHJva2UtbGluZWNhcCIsdGhpcy5vcHRpb25zLmxpbmVDYXApLHRoaXMub3B0aW9ucy5saW5lSm9pbiYmdGhpcy5fcGF0aC5zZXRBdHRyaWJ1dGUoInN0cm9rZS1saW5lam9pbiIsdGhpcy5vcHRpb25zLmxpbmVKb2luKSk6dGhpcy5fcGF0aC5zZXRBdHRyaWJ1dGUoInN0cm9rZSIsIm5vbmUiKSx0aGlzLm9wdGlvbnMuZmlsbD8odGhpcy5fcGF0aC5zZXRBdHRyaWJ1dGUoImZpbGwiLHRoaXMub3B0aW9ucy5maWxsQ29sb3J8fHRoaXMub3B0aW9ucy5jb2xvciksdGhpcy5fcGF0aC5zZXRBdHRyaWJ1dGUoImZpbGwtb3BhY2l0eSIsdGhpcy5vcHRpb25zLmZpbGxPcGFjaXR5KSk6dGhpcy5fcGF0aC5zZXRBdHRyaWJ1dGUoImZpbGwiLCJub25lIil9LF91cGRhdGVQYXRoOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRQYXRoU3RyaW5nKCk7dHx8KHQ9Ik0wIDAiKSx0aGlzLl9wYXRoLnNldEF0dHJpYnV0ZSgiZCIsdCl9LF9pbml0RXZlbnRzOmZ1bmN0aW9uKCl7aWYodGhpcy5vcHRpb25zLmNsaWNrYWJsZSl7KG8uQnJvd3Nlci5zdmd8fCFvLkJyb3dzZXIudm1sKSYmby5Eb21VdGlsLmFkZENsYXNzKHRoaXMuX3BhdGgsImxlYWZsZXQtY2xpY2thYmxlIiksby5Eb21FdmVudC5vbih0aGlzLl9jb250YWluZXIsImNsaWNrIix0aGlzLl9vbk1vdXNlQ2xpY2ssdGhpcyk7Zm9yKHZhciB0PVsiZGJsY2xpY2siLCJtb3VzZWRvd24iLCJtb3VzZW92ZXIiLCJtb3VzZW91dCIsIm1vdXNlbW92ZSIsImNvbnRleHRtZW51Il0sZT0wO2U8dC5sZW5ndGg7ZSsrKW8uRG9tRXZlbnQub24odGhpcy5fY29udGFpbmVyLHRbZV0sdGhpcy5fZmlyZU1vdXNlRXZlbnQsdGhpcyl9fSxfb25Nb3VzZUNsaWNrOmZ1bmN0aW9uKHQpe3RoaXMuX21hcC5kcmFnZ2luZyYmdGhpcy5fbWFwLmRyYWdnaW5nLm1vdmVkKCl8fHRoaXMuX2ZpcmVNb3VzZUV2ZW50KHQpfSxfZmlyZU1vdXNlRXZlbnQ6ZnVuY3Rpb24odCl7aWYodGhpcy5oYXNFdmVudExpc3RlbmVycyh0LnR5cGUpKXt2YXIgZT10aGlzLl9tYXAsaT1lLm1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50KHQpLG49ZS5jb250YWluZXJQb2ludFRvTGF5ZXJQb2ludChpKSxzPWUubGF5ZXJQb2ludFRvTGF0TG5nKG4pO3RoaXMuZmlyZSh0LnR5cGUse2xhdGxuZzpzLGxheWVyUG9pbnQ6bixjb250YWluZXJQb2ludDppLG9yaWdpbmFsRXZlbnQ6dH0pLCJjb250ZXh0bWVudSI9PT10LnR5cGUmJm8uRG9tRXZlbnQucHJldmVudERlZmF1bHQodCksIm1vdXNlbW92ZSIhPT10LnR5cGUmJm8uRG9tRXZlbnQuc3RvcFByb3BhZ2F0aW9uKHQpfX19KSxvLk1hcC5pbmNsdWRlKHtfaW5pdFBhdGhSb290OmZ1bmN0aW9uKCl7dGhpcy5fcGF0aFJvb3R8fCh0aGlzLl9wYXRoUm9vdD1vLlBhdGgucHJvdG90eXBlLl9jcmVhdGVFbGVtZW50KCJzdmciKSx0aGlzLl9wYW5lcy5vdmVybGF5UGFuZS5hcHBlbmRDaGlsZCh0aGlzLl9wYXRoUm9vdCksdGhpcy5vcHRpb25zLnpvb21BbmltYXRpb24mJm8uQnJvd3Nlci5hbnkzZD8oby5Eb21VdGlsLmFkZENsYXNzKHRoaXMuX3BhdGhSb290LCJsZWFmbGV0LXpvb20tYW5pbWF0ZWQiKSx0aGlzLm9uKHt6b29tYW5pbTp0aGlzLl9hbmltYXRlUGF0aFpvb20sem9vbWVuZDp0aGlzLl9lbmRQYXRoWm9vbX0pKTpvLkRvbVV0aWwuYWRkQ2xhc3ModGhpcy5fcGF0aFJvb3QsImxlYWZsZXQtem9vbS1oaWRlIiksdGhpcy5vbigibW92ZWVuZCIsdGhpcy5fdXBkYXRlU3ZnVmlld3BvcnQpLHRoaXMuX3VwZGF0ZVN2Z1ZpZXdwb3J0KCkpCn0sX2FuaW1hdGVQYXRoWm9vbTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmdldFpvb21TY2FsZSh0Lnpvb20pLGk9dGhpcy5fZ2V0Q2VudGVyT2Zmc2V0KHQuY2VudGVyKS5fbXVsdGlwbHlCeSgtZSkuX2FkZCh0aGlzLl9wYXRoVmlld3BvcnQubWluKTt0aGlzLl9wYXRoUm9vdC5zdHlsZVtvLkRvbVV0aWwuVFJBTlNGT1JNXT1vLkRvbVV0aWwuZ2V0VHJhbnNsYXRlU3RyaW5nKGkpKyIgc2NhbGUoIitlKyIpICIsdGhpcy5fcGF0aFpvb21pbmc9ITB9LF9lbmRQYXRoWm9vbTpmdW5jdGlvbigpe3RoaXMuX3BhdGhab29taW5nPSExfSxfdXBkYXRlU3ZnVmlld3BvcnQ6ZnVuY3Rpb24oKXtpZighdGhpcy5fcGF0aFpvb21pbmcpe3RoaXMuX3VwZGF0ZVBhdGhWaWV3cG9ydCgpO3ZhciB0PXRoaXMuX3BhdGhWaWV3cG9ydCxlPXQubWluLGk9dC5tYXgsbj1pLngtZS54LHM9aS55LWUueSxhPXRoaXMuX3BhdGhSb290LHI9dGhpcy5fcGFuZXMub3ZlcmxheVBhbmU7by5Ccm93c2VyLm1vYmlsZVdlYmtpdCYmci5yZW1vdmVDaGlsZChhKSxvLkRvbVV0aWwuc2V0UG9zaXRpb24oYSxlKSxhLnNldEF0dHJpYnV0ZSgid2lkdGgiLG4pLGEuc2V0QXR0cmlidXRlKCJoZWlnaHQiLHMpLGEuc2V0QXR0cmlidXRlKCJ2aWV3Qm94IixbZS54LGUueSxuLHNdLmpvaW4oIiAiKSksby5Ccm93c2VyLm1vYmlsZVdlYmtpdCYmci5hcHBlbmRDaGlsZChhKX19fSksby5QYXRoLmluY2x1ZGUoe2JpbmRQb3B1cDpmdW5jdGlvbih0LGUpe3JldHVybiB0IGluc3RhbmNlb2Ygby5Qb3B1cD90aGlzLl9wb3B1cD10OigoIXRoaXMuX3BvcHVwfHxlKSYmKHRoaXMuX3BvcHVwPW5ldyBvLlBvcHVwKGUsdGhpcykpLHRoaXMuX3BvcHVwLnNldENvbnRlbnQodCkpLHRoaXMuX3BvcHVwSGFuZGxlcnNBZGRlZHx8KHRoaXMub24oImNsaWNrIix0aGlzLl9vcGVuUG9wdXAsdGhpcykub24oInJlbW92ZSIsdGhpcy5jbG9zZVBvcHVwLHRoaXMpLHRoaXMuX3BvcHVwSGFuZGxlcnNBZGRlZD0hMCksdGhpc30sdW5iaW5kUG9wdXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcG9wdXAmJih0aGlzLl9wb3B1cD1udWxsLHRoaXMub2ZmKCJjbGljayIsdGhpcy5fb3BlblBvcHVwKS5vZmYoInJlbW92ZSIsdGhpcy5jbG9zZVBvcHVwKSx0aGlzLl9wb3B1cEhhbmRsZXJzQWRkZWQ9ITEpLHRoaXN9LG9wZW5Qb3B1cDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcG9wdXAmJih0PXR8fHRoaXMuX2xhdGxuZ3x8dGhpcy5fbGF0bG5nc1tNYXRoLmZsb29yKHRoaXMuX2xhdGxuZ3MubGVuZ3RoLzIpXSx0aGlzLl9vcGVuUG9wdXAoe2xhdGxuZzp0fSkpLHRoaXN9LGNsb3NlUG9wdXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcG9wdXAmJnRoaXMuX3BvcHVwLl9jbG9zZSgpLHRoaXN9LF9vcGVuUG9wdXA6ZnVuY3Rpb24odCl7dGhpcy5fcG9wdXAuc2V0TGF0TG5nKHQubGF0bG5nKSx0aGlzLl9tYXAub3BlblBvcHVwKHRoaXMuX3BvcHVwKX19KSxvLkJyb3dzZXIudm1sPSFvLkJyb3dzZXIuc3ZnJiZmdW5jdGlvbigpe3RyeXt2YXIgdD1lLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3QuaW5uZXJIVE1MPSc8djpzaGFwZSBhZGo9IjEiLz4nO3ZhciBpPXQuZmlyc3RDaGlsZDtyZXR1cm4gaS5zdHlsZS5iZWhhdmlvcj0idXJsKCNkZWZhdWx0I1ZNTCkiLGkmJiJvYmplY3QiPT10eXBlb2YgaS5hZGp9Y2F0Y2gobil7cmV0dXJuITF9fSgpLG8uUGF0aD1vLkJyb3dzZXIuc3ZnfHwhby5Ccm93c2VyLnZtbD9vLlBhdGg6by5QYXRoLmV4dGVuZCh7c3RhdGljczp7Vk1MOiEwLENMSVBfUEFERElORzouMDJ9LF9jcmVhdGVFbGVtZW50OmZ1bmN0aW9uKCl7dHJ5e3JldHVybiBlLm5hbWVzcGFjZXMuYWRkKCJsdm1sIiwidXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiKSxmdW5jdGlvbih0KXtyZXR1cm4gZS5jcmVhdGVFbGVtZW50KCI8bHZtbDoiK3QrJyBjbGFzcz0ibHZtbCI+Jyl9fWNhdGNoKHQpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5jcmVhdGVFbGVtZW50KCI8Iit0KycgeG1sbnM9InVybjpzY2hlbWFzLW1pY3Jvc29mdC5jb206dm1sIiBjbGFzcz0ibHZtbCI+Jyl9fX0oKSxfaW5pdFBhdGg6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9jb250YWluZXI9dGhpcy5fY3JlYXRlRWxlbWVudCgic2hhcGUiKTtvLkRvbVV0aWwuYWRkQ2xhc3ModCwibGVhZmxldC12bWwtc2hhcGUiKyh0aGlzLm9wdGlvbnMuY2xhc3NOYW1lPyIgIit0aGlzLm9wdGlvbnMuY2xhc3NOYW1lOiIiKSksdGhpcy5vcHRpb25zLmNsaWNrYWJsZSYmby5Eb21VdGlsLmFkZENsYXNzKHQsImxlYWZsZXQtY2xpY2thYmxlIiksdC5jb29yZHNpemU9IjEgMSIsdGhpcy5fcGF0aD10aGlzLl9jcmVhdGVFbGVtZW50KCJwYXRoIiksdC5hcHBlbmRDaGlsZCh0aGlzLl9wYXRoKSx0aGlzLl9tYXAuX3BhdGhSb290LmFwcGVuZENoaWxkKHQpfSxfaW5pdFN0eWxlOmZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlU3R5bGUoKX0sX3VwZGF0ZVN0eWxlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fc3Ryb2tlLGU9dGhpcy5fZmlsbCxpPXRoaXMub3B0aW9ucyxuPXRoaXMuX2NvbnRhaW5lcjtuLnN0cm9rZWQ9aS5zdHJva2Usbi5maWxsZWQ9aS5maWxsLGkuc3Ryb2tlPyh0fHwodD10aGlzLl9zdHJva2U9dGhpcy5fY3JlYXRlRWxlbWVudCgic3Ryb2tlIiksdC5lbmRjYXA9InJvdW5kIixuLmFwcGVuZENoaWxkKHQpKSx0LndlaWdodD1pLndlaWdodCsicHgiLHQuY29sb3I9aS5jb2xvcix0Lm9wYWNpdHk9aS5vcGFjaXR5LHQuZGFzaFN0eWxlPWkuZGFzaEFycmF5P28uVXRpbC5pc0FycmF5KGkuZGFzaEFycmF5KT9pLmRhc2hBcnJheS5qb2luKCIgIik6aS5kYXNoQXJyYXkucmVwbGFjZSgvKCAqLCAqKS9nLCIgIik6IiIsaS5saW5lQ2FwJiYodC5lbmRjYXA9aS5saW5lQ2FwLnJlcGxhY2UoImJ1dHQiLCJmbGF0IikpLGkubGluZUpvaW4mJih0LmpvaW5zdHlsZT1pLmxpbmVKb2luKSk6dCYmKG4ucmVtb3ZlQ2hpbGQodCksdGhpcy5fc3Ryb2tlPW51bGwpLGkuZmlsbD8oZXx8KGU9dGhpcy5fZmlsbD10aGlzLl9jcmVhdGVFbGVtZW50KCJmaWxsIiksbi5hcHBlbmRDaGlsZChlKSksZS5jb2xvcj1pLmZpbGxDb2xvcnx8aS5jb2xvcixlLm9wYWNpdHk9aS5maWxsT3BhY2l0eSk6ZSYmKG4ucmVtb3ZlQ2hpbGQoZSksdGhpcy5fZmlsbD1udWxsKX0sX3VwZGF0ZVBhdGg6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9jb250YWluZXIuc3R5bGU7dC5kaXNwbGF5PSJub25lIix0aGlzLl9wYXRoLnY9dGhpcy5nZXRQYXRoU3RyaW5nKCkrIiAiLHQuZGlzcGxheT0iIn19KSxvLk1hcC5pbmNsdWRlKG8uQnJvd3Nlci5zdmd8fCFvLkJyb3dzZXIudm1sP3t9OntfaW5pdFBhdGhSb290OmZ1bmN0aW9uKCl7aWYoIXRoaXMuX3BhdGhSb290KXt2YXIgdD10aGlzLl9wYXRoUm9vdD1lLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3QuY2xhc3NOYW1lPSJsZWFmbGV0LXZtbC1jb250YWluZXIiLHRoaXMuX3BhbmVzLm92ZXJsYXlQYW5lLmFwcGVuZENoaWxkKHQpLHRoaXMub24oIm1vdmVlbmQiLHRoaXMuX3VwZGF0ZVBhdGhWaWV3cG9ydCksdGhpcy5fdXBkYXRlUGF0aFZpZXdwb3J0KCl9fX0pLG8uQnJvd3Nlci5jYW52YXM9ZnVuY3Rpb24oKXtyZXR1cm4hIWUuY3JlYXRlRWxlbWVudCgiY2FudmFzIikuZ2V0Q29udGV4dH0oKSxvLlBhdGg9by5QYXRoLlNWRyYmIXQuTF9QUkVGRVJfQ0FOVkFTfHwhby5Ccm93c2VyLmNhbnZhcz9vLlBhdGg6by5QYXRoLmV4dGVuZCh7c3RhdGljczp7Q0FOVkFTOiEwLFNWRzohMX0scmVkcmF3OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21hcCYmKHRoaXMucHJvamVjdExhdGxuZ3MoKSx0aGlzLl9yZXF1ZXN0VXBkYXRlKCkpLHRoaXN9LHNldFN0eWxlOmZ1bmN0aW9uKHQpe3JldHVybiBvLnNldE9wdGlvbnModGhpcyx0KSx0aGlzLl9tYXAmJih0aGlzLl91cGRhdGVTdHlsZSgpLHRoaXMuX3JlcXVlc3RVcGRhdGUoKSksdGhpc30sb25SZW1vdmU6ZnVuY3Rpb24odCl7dC5vZmYoInZpZXdyZXNldCIsdGhpcy5wcm9qZWN0TGF0bG5ncyx0aGlzKS5vZmYoIm1vdmVlbmQiLHRoaXMuX3VwZGF0ZVBhdGgsdGhpcyksdGhpcy5vcHRpb25zLmNsaWNrYWJsZSYmKHRoaXMuX21hcC5vZmYoImNsaWNrIix0aGlzLl9vbkNsaWNrLHRoaXMpLHRoaXMuX21hcC5vZmYoIm1vdXNlbW92ZSIsdGhpcy5fb25Nb3VzZU1vdmUsdGhpcykpLHRoaXMuX3JlcXVlc3RVcGRhdGUoKSx0aGlzLmZpcmUoInJlbW92ZSIpLHRoaXMuX21hcD1udWxsfSxfcmVxdWVzdFVwZGF0ZTpmdW5jdGlvbigpe3RoaXMuX21hcCYmIW8uUGF0aC5fdXBkYXRlUmVxdWVzdCYmKG8uUGF0aC5fdXBkYXRlUmVxdWVzdD1vLlV0aWwucmVxdWVzdEFuaW1GcmFtZSh0aGlzLl9maXJlTWFwTW92ZUVuZCx0aGlzLl9tYXApKX0sX2ZpcmVNYXBNb3ZlRW5kOmZ1bmN0aW9uKCl7by5QYXRoLl91cGRhdGVSZXF1ZXN0PW51bGwsdGhpcy5maXJlKCJtb3ZlZW5kIil9LF9pbml0RWxlbWVudHM6ZnVuY3Rpb24oKXt0aGlzLl9tYXAuX2luaXRQYXRoUm9vdCgpLHRoaXMuX2N0eD10aGlzLl9tYXAuX2NhbnZhc0N0eH0sX3VwZGF0ZVN0eWxlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zO3Quc3Ryb2tlJiYodGhpcy5fY3R4LmxpbmVXaWR0aD10LndlaWdodCx0aGlzLl9jdHguc3Ryb2tlU3R5bGU9dC5jb2xvciksdC5maWxsJiYodGhpcy5fY3R4LmZpbGxTdHlsZT10LmZpbGxDb2xvcnx8dC5jb2xvcil9LF9kcmF3UGF0aDpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHMsYTtmb3IodGhpcy5fY3R4LmJlZ2luUGF0aCgpLHQ9MCxpPXRoaXMuX3BhcnRzLmxlbmd0aDtpPnQ7dCsrKXtmb3IoZT0wLG49dGhpcy5fcGFydHNbdF0ubGVuZ3RoO24+ZTtlKyspcz10aGlzLl9wYXJ0c1t0XVtlXSxhPSgwPT09ZT8ibW92ZSI6ImxpbmUiKSsiVG8iLHRoaXMuX2N0eFthXShzLngscy55KTt0aGlzIGluc3RhbmNlb2Ygby5Qb2x5Z29uJiZ0aGlzLl9jdHguY2xvc2VQYXRoKCl9fSxfY2hlY2tJZkVtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuX3BhcnRzLmxlbmd0aH0sX3VwZGF0ZVBhdGg6ZnVuY3Rpb24oKXtpZighdGhpcy5fY2hlY2tJZkVtcHR5KCkpe3ZhciB0PXRoaXMuX2N0eCxlPXRoaXMub3B0aW9uczt0aGlzLl9kcmF3UGF0aCgpLHQuc2F2ZSgpLHRoaXMuX3VwZGF0ZVN0eWxlKCksZS5maWxsJiYodC5nbG9iYWxBbHBoYT1lLmZpbGxPcGFjaXR5LHQuZmlsbCgpKSxlLnN0cm9rZSYmKHQuZ2xvYmFsQWxwaGE9ZS5vcGFjaXR5LHQuc3Ryb2tlKCkpLHQucmVzdG9yZSgpfX0sX2luaXRFdmVudHM6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuY2xpY2thYmxlJiYodGhpcy5fbWFwLm9uKCJtb3VzZW1vdmUiLHRoaXMuX29uTW91c2VNb3ZlLHRoaXMpLHRoaXMuX21hcC5vbigiY2xpY2siLHRoaXMuX29uQ2xpY2ssdGhpcykpfSxfb25DbGljazpmdW5jdGlvbih0KXt0aGlzLl9jb250YWluc1BvaW50KHQubGF5ZXJQb2ludCkmJnRoaXMuZmlyZSgiY2xpY2siLHQpfSxfb25Nb3VzZU1vdmU6ZnVuY3Rpb24odCl7dGhpcy5fbWFwJiYhdGhpcy5fbWFwLl9hbmltYXRpbmdab29tJiYodGhpcy5fY29udGFpbnNQb2ludCh0LmxheWVyUG9pbnQpPyh0aGlzLl9jdHguY2FudmFzLnN0eWxlLmN1cnNvcj0icG9pbnRlciIsdGhpcy5fbW91c2VJbnNpZGU9ITAsdGhpcy5maXJlKCJtb3VzZW92ZXIiLHQpKTp0aGlzLl9tb3VzZUluc2lkZSYmKHRoaXMuX2N0eC5jYW52YXMuc3R5bGUuY3Vyc29yPSIiLHRoaXMuX21vdXNlSW5zaWRlPSExLHRoaXMuZmlyZSgibW91c2VvdXQiLHQpKSl9fSksby5NYXAuaW5jbHVkZShvLlBhdGguU1ZHJiYhdC5MX1BSRUZFUl9DQU5WQVN8fCFvLkJyb3dzZXIuY2FudmFzP3t9OntfaW5pdFBhdGhSb290OmZ1bmN0aW9uKCl7dmFyIHQsaT10aGlzLl9wYXRoUm9vdDtpfHwoaT10aGlzLl9wYXRoUm9vdD1lLmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLGkuc3R5bGUucG9zaXRpb249ImFic29sdXRlIix0PXRoaXMuX2NhbnZhc0N0eD1pLmdldENvbnRleHQoIjJkIiksdC5saW5lQ2FwPSJyb3VuZCIsdC5saW5lSm9pbj0icm91bmQiLHRoaXMuX3BhbmVzLm92ZXJsYXlQYW5lLmFwcGVuZENoaWxkKGkpLHRoaXMub3B0aW9ucy56b29tQW5pbWF0aW9uJiYodGhpcy5fcGF0aFJvb3QuY2xhc3NOYW1lPSJsZWFmbGV0LXpvb20tYW5pbWF0ZWQiLHRoaXMub24oInpvb21hbmltIix0aGlzLl9hbmltYXRlUGF0aFpvb20pLHRoaXMub24oInpvb21lbmQiLHRoaXMuX2VuZFBhdGhab29tKSksdGhpcy5vbigibW92ZWVuZCIsdGhpcy5fdXBkYXRlQ2FudmFzVmlld3BvcnQpLHRoaXMuX3VwZGF0ZUNhbnZhc1ZpZXdwb3J0KCkpfSxfdXBkYXRlQ2FudmFzVmlld3BvcnQ6ZnVuY3Rpb24oKXtpZighdGhpcy5fcGF0aFpvb21pbmcpe3RoaXMuX3VwZGF0ZVBhdGhWaWV3cG9ydCgpO3ZhciB0PXRoaXMuX3BhdGhWaWV3cG9ydCxlPXQubWluLGk9dC5tYXguc3VidHJhY3QoZSksbj10aGlzLl9wYXRoUm9vdDtvLkRvbVV0aWwuc2V0UG9zaXRpb24obixlKSxuLndpZHRoPWkueCxuLmhlaWdodD1pLnksbi5nZXRDb250ZXh0KCIyZCIpLnRyYW5zbGF0ZSgtZS54LC1lLnkpfX19KSxvLkxpbmVVdGlsPXtzaW1wbGlmeTpmdW5jdGlvbih0LGUpe2lmKCFlfHwhdC5sZW5ndGgpcmV0dXJuIHQuc2xpY2UoKTt2YXIgaT1lKmU7cmV0dXJuIHQ9dGhpcy5fcmVkdWNlUG9pbnRzKHQsaSksdD10aGlzLl9zaW1wbGlmeURQKHQsaSl9LHBvaW50VG9TZWdtZW50RGlzdGFuY2U6ZnVuY3Rpb24odCxlLGkpe3JldHVybiBNYXRoLnNxcnQodGhpcy5fc3FDbG9zZXN0UG9pbnRPblNlZ21lbnQodCxlLGksITApKX0sY2xvc2VzdFBvaW50T25TZWdtZW50OmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5fc3FDbG9zZXN0UG9pbnRPblNlZ21lbnQodCxlLGkpfSxfc2ltcGxpZnlEUDpmdW5jdGlvbih0LGUpe3ZhciBuPXQubGVuZ3RoLG89dHlwZW9mIFVpbnQ4QXJyYXkhPWkrIiI/VWludDhBcnJheTpBcnJheSxzPW5ldyBvKG4pO3NbMF09c1tuLTFdPTEsdGhpcy5fc2ltcGxpZnlEUFN0ZXAodCxzLGUsMCxuLTEpO3ZhciBhLHI9W107Zm9yKGE9MDtuPmE7YSsrKXNbYV0mJnIucHVzaCh0W2FdKTtyZXR1cm4gcn0sX3NpbXBsaWZ5RFBTdGVwOmZ1bmN0aW9uKHQsZSxpLG4sbyl7dmFyIHMsYSxyLGg9MDtmb3IoYT1uKzE7by0xPj1hO2ErKylyPXRoaXMuX3NxQ2xvc2VzdFBvaW50T25TZWdtZW50KHRbYV0sdFtuXSx0W29dLCEwKSxyPmgmJihzPWEsaD1yKTtoPmkmJihlW3NdPTEsdGhpcy5fc2ltcGxpZnlEUFN0ZXAodCxlLGksbixzKSx0aGlzLl9zaW1wbGlmeURQU3RlcCh0LGUsaSxzLG8pKX0sX3JlZHVjZVBvaW50czpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaT1bdFswXV0sbj0xLG89MCxzPXQubGVuZ3RoO3M+bjtuKyspdGhpcy5fc3FEaXN0KHRbbl0sdFtvXSk+ZSYmKGkucHVzaCh0W25dKSxvPW4pO3JldHVybiBzLTE+byYmaS5wdXNoKHRbcy0xXSksaX0sY2xpcFNlZ21lbnQ6ZnVuY3Rpb24odCxlLGksbil7dmFyIG8scyxhLHI9bj90aGlzLl9sYXN0Q29kZTp0aGlzLl9nZXRCaXRDb2RlKHQsaSksaD10aGlzLl9nZXRCaXRDb2RlKGUsaSk7Zm9yKHRoaXMuX2xhc3RDb2RlPWg7Oyl7aWYoIShyfGgpKXJldHVyblt0LGVdO2lmKHImaClyZXR1cm4hMTtvPXJ8fGgscz10aGlzLl9nZXRFZGdlSW50ZXJzZWN0aW9uKHQsZSxvLGkpLGE9dGhpcy5fZ2V0Qml0Q29kZShzLGkpLG89PT1yPyh0PXMscj1hKTooZT1zLGg9YSl9fSxfZ2V0RWRnZUludGVyc2VjdGlvbjpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcz1lLngtdC54LGE9ZS55LXQueSxyPW4ubWluLGg9bi5tYXg7cmV0dXJuIDgmaT9uZXcgby5Qb2ludCh0LngrcyooaC55LXQueSkvYSxoLnkpOjQmaT9uZXcgby5Qb2ludCh0Lngrcyooci55LXQueSkvYSxyLnkpOjImaT9uZXcgby5Qb2ludChoLngsdC55K2EqKGgueC10LngpL3MpOjEmaT9uZXcgby5Qb2ludChyLngsdC55K2EqKHIueC10LngpL3MpOnZvaWQgMH0sX2dldEJpdENvZGU6ZnVuY3Rpb24odCxlKXt2YXIgaT0wO3JldHVybiB0Lng8ZS5taW4ueD9pfD0xOnQueD5lLm1heC54JiYoaXw9MiksdC55PGUubWluLnk/aXw9NDp0Lnk+ZS5tYXgueSYmKGl8PTgpLGl9LF9zcURpc3Q6ZnVuY3Rpb24odCxlKXt2YXIgaT1lLngtdC54LG49ZS55LXQueTtyZXR1cm4gaSppK24qbn0sX3NxQ2xvc2VzdFBvaW50T25TZWdtZW50OmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBzLGE9ZS54LHI9ZS55LGg9aS54LWEsbD1pLnktcix1PWgqaCtsKmw7cmV0dXJuIHU+MCYmKHM9KCh0LngtYSkqaCsodC55LXIpKmwpL3Uscz4xPyhhPWkueCxyPWkueSk6cz4wJiYoYSs9aCpzLHIrPWwqcykpLGg9dC54LWEsbD10LnktcixuP2gqaCtsKmw6bmV3IG8uUG9pbnQoYSxyKX19LG8uUG9seWxpbmU9by5QYXRoLmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUpe28uUGF0aC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsZSksdGhpcy5fbGF0bG5ncz10aGlzLl9jb252ZXJ0TGF0TG5ncyh0KX0sb3B0aW9uczp7c21vb3RoRmFjdG9yOjEsbm9DbGlwOiExfSxwcm9qZWN0TGF0bG5nczpmdW5jdGlvbigpe3RoaXMuX29yaWdpbmFsUG9pbnRzPVtdO2Zvcih2YXIgdD0wLGU9dGhpcy5fbGF0bG5ncy5sZW5ndGg7ZT50O3QrKyl0aGlzLl9vcmlnaW5hbFBvaW50c1t0XT10aGlzLl9tYXAubGF0TG5nVG9MYXllclBvaW50KHRoaXMuX2xhdGxuZ3NbdF0pfSxnZXRQYXRoU3RyaW5nOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAsZT10aGlzLl9wYXJ0cy5sZW5ndGgsaT0iIjtlPnQ7dCsrKWkrPXRoaXMuX2dldFBhdGhQYXJ0U3RyKHRoaXMuX3BhcnRzW3RdKTtyZXR1cm4gaX0sZ2V0TGF0TG5nczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9sYXRsbmdzfSxzZXRMYXRMbmdzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9sYXRsbmdzPXRoaXMuX2NvbnZlcnRMYXRMbmdzKHQpLHRoaXMucmVkcmF3KCl9LGFkZExhdExuZzpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbGF0bG5ncy5wdXNoKG8ubGF0TG5nKHQpKSx0aGlzLnJlZHJhdygpfSxzcGxpY2VMYXRMbmdzOmZ1bmN0aW9uKCl7dmFyIHQ9W10uc3BsaWNlLmFwcGx5KHRoaXMuX2xhdGxuZ3MsYXJndW1lbnRzKTtyZXR1cm4gdGhpcy5fY29udmVydExhdExuZ3ModGhpcy5fbGF0bG5ncywhMCksdGhpcy5yZWRyYXcoKSx0fSxjbG9zZXN0TGF5ZXJQb2ludDpmdW5jdGlvbih0KXtmb3IodmFyIGUsaSxuPTEvMCxzPXRoaXMuX3BhcnRzLGE9bnVsbCxyPTAsaD1zLmxlbmd0aDtoPnI7cisrKWZvcih2YXIgbD1zW3JdLHU9MSxjPWwubGVuZ3RoO2M+dTt1Kyspe2U9bFt1LTFdLGk9bFt1XTt2YXIgZD1vLkxpbmVVdGlsLl9zcUNsb3Nlc3RQb2ludE9uU2VnbWVudCh0LGUsaSwhMCk7bj5kJiYobj1kLGE9by5MaW5lVXRpbC5fc3FDbG9zZXN0UG9pbnRPblNlZ21lbnQodCxlLGkpKX1yZXR1cm4gYSYmKGEuZGlzdGFuY2U9TWF0aC5zcXJ0KG4pKSxhfSxnZXRCb3VuZHM6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG8uTGF0TG5nQm91bmRzKHRoaXMuZ2V0TGF0TG5ncygpKX0sX2NvbnZlcnRMYXRMbmdzOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixzPWU/dDpbXTtmb3IoaT0wLG49dC5sZW5ndGg7bj5pO2krKyl7aWYoby5VdGlsLmlzQXJyYXkodFtpXSkmJiJudW1iZXIiIT10eXBlb2YgdFtpXVswXSlyZXR1cm47c1tpXT1vLmxhdExuZyh0W2ldKX1yZXR1cm4gc30sX2luaXRFdmVudHM6ZnVuY3Rpb24oKXtvLlBhdGgucHJvdG90eXBlLl9pbml0RXZlbnRzLmNhbGwodGhpcyl9LF9nZXRQYXRoUGFydFN0cjpmdW5jdGlvbih0KXtmb3IodmFyIGUsaT1vLlBhdGguVk1MLG49MCxzPXQubGVuZ3RoLGE9IiI7cz5uO24rKyllPXRbbl0saSYmZS5fcm91bmQoKSxhKz0obj8iTCI6Ik0iKStlLngrIiAiK2UueTtyZXR1cm4gYX0sX2NsaXBQb2ludHM6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbj10aGlzLl9vcmlnaW5hbFBvaW50cyxzPW4ubGVuZ3RoO2lmKHRoaXMub3B0aW9ucy5ub0NsaXApcmV0dXJuIHZvaWQodGhpcy5fcGFydHM9W25dKTt0aGlzLl9wYXJ0cz1bXTt2YXIgYT10aGlzLl9wYXJ0cyxyPXRoaXMuX21hcC5fcGF0aFZpZXdwb3J0LGg9by5MaW5lVXRpbDtmb3IodD0wLGU9MDtzLTE+dDt0KyspaT1oLmNsaXBTZWdtZW50KG5bdF0sblt0KzFdLHIsdCksaSYmKGFbZV09YVtlXXx8W10sYVtlXS5wdXNoKGlbMF0pLChpWzFdIT09blt0KzFdfHx0PT09cy0yKSYmKGFbZV0ucHVzaChpWzFdKSxlKyspKX0sX3NpbXBsaWZ5UG9pbnRzOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX3BhcnRzLGU9by5MaW5lVXRpbCxpPTAsbj10Lmxlbmd0aDtuPmk7aSsrKXRbaV09ZS5zaW1wbGlmeSh0W2ldLHRoaXMub3B0aW9ucy5zbW9vdGhGYWN0b3IpfSxfdXBkYXRlUGF0aDpmdW5jdGlvbigpe3RoaXMuX21hcCYmKHRoaXMuX2NsaXBQb2ludHMoKSx0aGlzLl9zaW1wbGlmeVBvaW50cygpLG8uUGF0aC5wcm90b3R5cGUuX3VwZGF0ZVBhdGguY2FsbCh0aGlzKSl9fSksby5wb2x5bGluZT1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgby5Qb2x5bGluZSh0LGUpfSxvLlBvbHlVdGlsPXt9LG8uUG9seVV0aWwuY2xpcFBvbHlnb249ZnVuY3Rpb24odCxlKXt2YXIgaSxuLHMsYSxyLGgsbCx1LGMsZD1bMSw0LDIsOF0scD1vLkxpbmVVdGlsO2ZvcihuPTAsbD10Lmxlbmd0aDtsPm47bisrKXRbbl0uX2NvZGU9cC5fZ2V0Qml0Q29kZSh0W25dLGUpO2ZvcihhPTA7ND5hO2ErKyl7Zm9yKHU9ZFthXSxpPVtdLG49MCxsPXQubGVuZ3RoLHM9bC0xO2w+bjtzPW4rKylyPXRbbl0saD10W3NdLHIuX2NvZGUmdT9oLl9jb2RlJnV8fChjPXAuX2dldEVkZ2VJbnRlcnNlY3Rpb24oaCxyLHUsZSksYy5fY29kZT1wLl9nZXRCaXRDb2RlKGMsZSksaS5wdXNoKGMpKTooaC5fY29kZSZ1JiYoYz1wLl9nZXRFZGdlSW50ZXJzZWN0aW9uKGgscix1LGUpLGMuX2NvZGU9cC5fZ2V0Qml0Q29kZShjLGUpLGkucHVzaChjKSksaS5wdXNoKHIpKTt0PWl9cmV0dXJuIHR9LG8uUG9seWdvbj1vLlBvbHlsaW5lLmV4dGVuZCh7b3B0aW9uczp7ZmlsbDohMH0saW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUpe28uUG9seWxpbmUucHJvdG90eXBlLmluaXRpYWxpemUuY2FsbCh0aGlzLHQsZSksdGhpcy5faW5pdFdpdGhIb2xlcyh0KX0sX2luaXRXaXRoSG9sZXM6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2lmKHQmJm8uVXRpbC5pc0FycmF5KHRbMF0pJiYibnVtYmVyIiE9dHlwZW9mIHRbMF1bMF0pZm9yKHRoaXMuX2xhdGxuZ3M9dGhpcy5fY29udmVydExhdExuZ3ModFswXSksdGhpcy5faG9sZXM9dC5zbGljZSgxKSxlPTAsaT10aGlzLl9ob2xlcy5sZW5ndGg7aT5lO2UrKyluPXRoaXMuX2hvbGVzW2VdPXRoaXMuX2NvbnZlcnRMYXRMbmdzKHRoaXMuX2hvbGVzW2VdKSxuWzBdLmVxdWFscyhuW24ubGVuZ3RoLTFdKSYmbi5wb3AoKTt0PXRoaXMuX2xhdGxuZ3MsdC5sZW5ndGg+PTImJnRbMF0uZXF1YWxzKHRbdC5sZW5ndGgtMV0pJiZ0LnBvcCgpfSxwcm9qZWN0TGF0bG5nczpmdW5jdGlvbigpe2lmKG8uUG9seWxpbmUucHJvdG90eXBlLnByb2plY3RMYXRsbmdzLmNhbGwodGhpcyksdGhpcy5faG9sZVBvaW50cz1bXSx0aGlzLl9ob2xlcyl7dmFyIHQsZSxpLG47Zm9yKHQ9MCxpPXRoaXMuX2hvbGVzLmxlbmd0aDtpPnQ7dCsrKWZvcih0aGlzLl9ob2xlUG9pbnRzW3RdPVtdLGU9MCxuPXRoaXMuX2hvbGVzW3RdLmxlbmd0aDtuPmU7ZSsrKXRoaXMuX2hvbGVQb2ludHNbdF1bZV09dGhpcy5fbWFwLmxhdExuZ1RvTGF5ZXJQb2ludCh0aGlzLl9ob2xlc1t0XVtlXSl9fSxzZXRMYXRMbmdzOmZ1bmN0aW9uKHQpe3JldHVybiB0JiZvLlV0aWwuaXNBcnJheSh0WzBdKSYmIm51bWJlciIhPXR5cGVvZiB0WzBdWzBdPyh0aGlzLl9pbml0V2l0aEhvbGVzKHQpLHRoaXMucmVkcmF3KCkpOm8uUG9seWxpbmUucHJvdG90eXBlLnNldExhdExuZ3MuY2FsbCh0aGlzLHQpfSxfY2xpcFBvaW50czpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX29yaWdpbmFsUG9pbnRzLGU9W107aWYodGhpcy5fcGFydHM9W3RdLmNvbmNhdCh0aGlzLl9ob2xlUG9pbnRzKSwhdGhpcy5vcHRpb25zLm5vQ2xpcCl7Zm9yKHZhciBpPTAsbj10aGlzLl9wYXJ0cy5sZW5ndGg7bj5pO2krKyl7dmFyIHM9by5Qb2x5VXRpbC5jbGlwUG9seWdvbih0aGlzLl9wYXJ0c1tpXSx0aGlzLl9tYXAuX3BhdGhWaWV3cG9ydCk7cy5sZW5ndGgmJmUucHVzaChzKX10aGlzLl9wYXJ0cz1lfX0sX2dldFBhdGhQYXJ0U3RyOmZ1bmN0aW9uKHQpe3ZhciBlPW8uUG9seWxpbmUucHJvdG90eXBlLl9nZXRQYXRoUGFydFN0ci5jYWxsKHRoaXMsdCk7cmV0dXJuIGUrKG8uQnJvd3Nlci5zdmc/InoiOiJ4Iil9fSksby5wb2x5Z29uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBvLlBvbHlnb24odCxlKX0sZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3JldHVybiBvLkZlYXR1cmVHcm91cC5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24odCxlKXt0aGlzLl9sYXllcnM9e30sdGhpcy5fb3B0aW9ucz1lLHRoaXMuc2V0TGF0TG5ncyh0KX0sc2V0TGF0TG5nczpmdW5jdGlvbihlKXt2YXIgaT0wLG49ZS5sZW5ndGg7Zm9yKHRoaXMuZWFjaExheWVyKGZ1bmN0aW9uKHQpe24+aT90LnNldExhdExuZ3MoZVtpKytdKTp0aGlzLnJlbW92ZUxheWVyKHQpfSx0aGlzKTtuPmk7KXRoaXMuYWRkTGF5ZXIobmV3IHQoZVtpKytdLHRoaXMuX29wdGlvbnMpKTtyZXR1cm4gdGhpc30sZ2V0TGF0TG5nczpmdW5jdGlvbigpe3ZhciB0PVtdO3JldHVybiB0aGlzLmVhY2hMYXllcihmdW5jdGlvbihlKXt0LnB1c2goZS5nZXRMYXRMbmdzKCkpfSksdH19KX1vLk11bHRpUG9seWxpbmU9dChvLlBvbHlsaW5lKSxvLk11bHRpUG9seWdvbj10KG8uUG9seWdvbiksby5tdWx0aVBvbHlsaW5lPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBvLk11bHRpUG9seWxpbmUodCxlKX0sby5tdWx0aVBvbHlnb249ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IG8uTXVsdGlQb2x5Z29uKHQsZSl9fSgpLG8uUmVjdGFuZ2xlPW8uUG9seWdvbi5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24odCxlKXtvLlBvbHlnb24ucHJvdG90eXBlLmluaXRpYWxpemUuY2FsbCh0aGlzLHRoaXMuX2JvdW5kc1RvTGF0TG5ncyh0KSxlKX0sc2V0Qm91bmRzOmZ1bmN0aW9uKHQpe3RoaXMuc2V0TGF0TG5ncyh0aGlzLl9ib3VuZHNUb0xhdExuZ3ModCkpfSxfYm91bmRzVG9MYXRMbmdzOmZ1bmN0aW9uKHQpe3JldHVybiB0PW8ubGF0TG5nQm91bmRzKHQpLFt0LmdldFNvdXRoV2VzdCgpLHQuZ2V0Tm9ydGhXZXN0KCksdC5nZXROb3J0aEVhc3QoKSx0LmdldFNvdXRoRWFzdCgpXX19KSxvLnJlY3RhbmdsZT1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgby5SZWN0YW5nbGUodCxlKX0sby5DaXJjbGU9by5QYXRoLmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUsaSl7by5QYXRoLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcyxpKSx0aGlzLl9sYXRsbmc9by5sYXRMbmcodCksdGhpcy5fbVJhZGl1cz1lfSxvcHRpb25zOntmaWxsOiEwfSxzZXRMYXRMbmc6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2xhdGxuZz1vLmxhdExuZyh0KSx0aGlzLnJlZHJhdygpfSxzZXRSYWRpdXM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX21SYWRpdXM9dCx0aGlzLnJlZHJhdygpfSxwcm9qZWN0TGF0bG5nczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2dldExuZ1JhZGl1cygpLGU9dGhpcy5fbGF0bG5nLGk9dGhpcy5fbWFwLmxhdExuZ1RvTGF5ZXJQb2ludChbZS5sYXQsZS5sbmctdF0pO3RoaXMuX3BvaW50PXRoaXMuX21hcC5sYXRMbmdUb0xheWVyUG9pbnQoZSksdGhpcy5fcmFkaXVzPU1hdGgubWF4KHRoaXMuX3BvaW50LngtaS54LDEpfSxnZXRCb3VuZHM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9nZXRMbmdSYWRpdXMoKSxlPXRoaXMuX21SYWRpdXMvNDAwNzUwMTcqMzYwLGk9dGhpcy5fbGF0bG5nO3JldHVybiBuZXcgby5MYXRMbmdCb3VuZHMoW2kubGF0LWUsaS5sbmctdF0sW2kubGF0K2UsaS5sbmcrdF0pfSxnZXRMYXRMbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGF0bG5nfSxnZXRQYXRoU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fcG9pbnQsZT10aGlzLl9yYWRpdXM7cmV0dXJuIHRoaXMuX2NoZWNrSWZFbXB0eSgpPyIiOm8uQnJvd3Nlci5zdmc/Ik0iK3QueCsiLCIrKHQueS1lKSsiQSIrZSsiLCIrZSsiLDAsMSwxLCIrKHQueC0uMSkrIiwiKyh0LnktZSkrIiB6IjoodC5fcm91bmQoKSxlPU1hdGgucm91bmQoZSksIkFMICIrdC54KyIsIit0LnkrIiAiK2UrIiwiK2UrIiAwLDIzNTkyNjAwIil9LGdldFJhZGl1czpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tUmFkaXVzfSxfZ2V0TGF0UmFkaXVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21SYWRpdXMvNDAwNzUwMTcqMzYwfSxfZ2V0TG5nUmFkaXVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2dldExhdFJhZGl1cygpL01hdGguY29zKG8uTGF0TG5nLkRFR19UT19SQUQqdGhpcy5fbGF0bG5nLmxhdCl9LF9jaGVja0lmRW1wdHk6ZnVuY3Rpb24oKXtpZighdGhpcy5fbWFwKXJldHVybiExO3ZhciB0PXRoaXMuX21hcC5fcGF0aFZpZXdwb3J0LGU9dGhpcy5fcmFkaXVzLGk9dGhpcy5fcG9pbnQ7cmV0dXJuIGkueC1lPnQubWF4Lnh8fGkueS1lPnQubWF4Lnl8fGkueCtlPHQubWluLnh8fGkueStlPHQubWluLnl9fSksby5jaXJjbGU9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBuZXcgby5DaXJjbGUodCxlLGkpfSxvLkNpcmNsZU1hcmtlcj1vLkNpcmNsZS5leHRlbmQoe29wdGlvbnM6e3JhZGl1czoxMCx3ZWlnaHQ6Mn0saW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUpe28uQ2lyY2xlLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcyx0LG51bGwsZSksdGhpcy5fcmFkaXVzPXRoaXMub3B0aW9ucy5yYWRpdXN9LHByb2plY3RMYXRsbmdzOmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9dGhpcy5fbWFwLmxhdExuZ1RvTGF5ZXJQb2ludCh0aGlzLl9sYXRsbmcpfSxfdXBkYXRlU3R5bGU6ZnVuY3Rpb24oKXtvLkNpcmNsZS5wcm90b3R5cGUuX3VwZGF0ZVN0eWxlLmNhbGwodGhpcyksdGhpcy5zZXRSYWRpdXModGhpcy5vcHRpb25zLnJhZGl1cyl9LHNldExhdExuZzpmdW5jdGlvbih0KXtyZXR1cm4gby5DaXJjbGUucHJvdG90eXBlLnNldExhdExuZy5jYWxsKHRoaXMsdCksdGhpcy5fcG9wdXAmJnRoaXMuX3BvcHVwLl9pc09wZW4mJnRoaXMuX3BvcHVwLnNldExhdExuZyh0KSx0aGlzfSxzZXRSYWRpdXM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub3B0aW9ucy5yYWRpdXM9dGhpcy5fcmFkaXVzPXQsdGhpcy5yZWRyYXcoKX0sZ2V0UmFkaXVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JhZGl1c319KSxvLmNpcmNsZU1hcmtlcj1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgby5DaXJjbGVNYXJrZXIodCxlKX0sby5Qb2x5bGluZS5pbmNsdWRlKG8uUGF0aC5DQU5WQVM/e19jb250YWluc1BvaW50OmZ1bmN0aW9uKHQsZSl7dmFyIGksbixzLGEscixoLGwsdT10aGlzLm9wdGlvbnMud2VpZ2h0LzI7Zm9yKG8uQnJvd3Nlci50b3VjaCYmKHUrPTEwKSxpPTAsYT10aGlzLl9wYXJ0cy5sZW5ndGg7YT5pO2krKylmb3IobD10aGlzLl9wYXJ0c1tpXSxuPTAscj1sLmxlbmd0aCxzPXItMTtyPm47cz1uKyspaWYoKGV8fDAhPT1uKSYmKGg9by5MaW5lVXRpbC5wb2ludFRvU2VnbWVudERpc3RhbmNlKHQsbFtzXSxsW25dKSx1Pj1oKSlyZXR1cm4hMDtyZXR1cm4hMX19Ont9KSxvLlBvbHlnb24uaW5jbHVkZShvLlBhdGguQ0FOVkFTP3tfY29udGFpbnNQb2ludDpmdW5jdGlvbih0KXt2YXIgZSxpLG4scyxhLHIsaCxsLHU9ITE7aWYoby5Qb2x5bGluZS5wcm90b3R5cGUuX2NvbnRhaW5zUG9pbnQuY2FsbCh0aGlzLHQsITApKXJldHVybiEwO2ZvcihzPTAsaD10aGlzLl9wYXJ0cy5sZW5ndGg7aD5zO3MrKylmb3IoZT10aGlzLl9wYXJ0c1tzXSxhPTAsbD1lLmxlbmd0aCxyPWwtMTtsPmE7cj1hKyspaT1lW2FdLG49ZVtyXSxpLnk+dC55IT1uLnk+dC55JiZ0Lng8KG4ueC1pLngpKih0LnktaS55KS8obi55LWkueSkraS54JiYodT0hdSk7cmV0dXJuIHV9fTp7fSksby5DaXJjbGUuaW5jbHVkZShvLlBhdGguQ0FOVkFTP3tfZHJhd1BhdGg6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9wb2ludDt0aGlzLl9jdHguYmVnaW5QYXRoKCksdGhpcy5fY3R4LmFyYyh0LngsdC55LHRoaXMuX3JhZGl1cywwLDIqTWF0aC5QSSwhMSl9LF9jb250YWluc1BvaW50OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3BvaW50LGk9dGhpcy5vcHRpb25zLnN0cm9rZT90aGlzLm9wdGlvbnMud2VpZ2h0LzI6MDtyZXR1cm4gdC5kaXN0YW5jZVRvKGUpPD10aGlzLl9yYWRpdXMraX19Ont9KSxvLkNpcmNsZU1hcmtlci5pbmNsdWRlKG8uUGF0aC5DQU5WQVM/e191cGRhdGVTdHlsZTpmdW5jdGlvbigpe28uUGF0aC5wcm90b3R5cGUuX3VwZGF0ZVN0eWxlLmNhbGwodGhpcyl9fTp7fSksby5HZW9KU09OPW8uRmVhdHVyZUdyb3VwLmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUpe28uc2V0T3B0aW9ucyh0aGlzLGUpLHRoaXMuX2xheWVycz17fSx0JiZ0aGlzLmFkZERhdGEodCl9LGFkZERhdGE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHM9by5VdGlsLmlzQXJyYXkodCk/dDp0LmZlYXR1cmVzO2lmKHMpe2ZvcihlPTAsaT1zLmxlbmd0aDtpPmU7ZSsrKW49c1tlXSwobi5nZW9tZXRyaWVzfHxuLmdlb21ldHJ5fHxuLmZlYXR1cmVzfHxuLmNvb3JkaW5hdGVzKSYmdGhpcy5hZGREYXRhKHNbZV0pO3JldHVybiB0aGlzfXZhciBhPXRoaXMub3B0aW9ucztpZighYS5maWx0ZXJ8fGEuZmlsdGVyKHQpKXt2YXIgcj1vLkdlb0pTT04uZ2VvbWV0cnlUb0xheWVyKHQsYS5wb2ludFRvTGF5ZXIsYS5jb29yZHNUb0xhdExuZyxhKTtyZXR1cm4gci5mZWF0dXJlPW8uR2VvSlNPTi5hc0ZlYXR1cmUodCksci5kZWZhdWx0T3B0aW9ucz1yLm9wdGlvbnMsdGhpcy5yZXNldFN0eWxlKHIpLGEub25FYWNoRmVhdHVyZSYmYS5vbkVhY2hGZWF0dXJlKHQsciksdGhpcy5hZGRMYXllcihyKX19LHJlc2V0U3R5bGU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5vcHRpb25zLnN0eWxlO2UmJihvLlV0aWwuZXh0ZW5kKHQub3B0aW9ucyx0LmRlZmF1bHRPcHRpb25zKSx0aGlzLl9zZXRMYXllclN0eWxlKHQsZSkpfSxzZXRTdHlsZTpmdW5jdGlvbih0KXt0aGlzLmVhY2hMYXllcihmdW5jdGlvbihlKXt0aGlzLl9zZXRMYXllclN0eWxlKGUsdCl9LHRoaXMpfSxfc2V0TGF5ZXJTdHlsZTpmdW5jdGlvbih0LGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBlJiYoZT1lKHQuZmVhdHVyZSkpLHQuc2V0U3R5bGUmJnQuc2V0U3R5bGUoZSl9fSksby5leHRlbmQoby5HZW9KU09OLHtnZW9tZXRyeVRvTGF5ZXI6ZnVuY3Rpb24odCxlLGksbil7dmFyIHMsYSxyLGgsbD0iRmVhdHVyZSI9PT10LnR5cGU/dC5nZW9tZXRyeTp0LHU9bC5jb29yZGluYXRlcyxjPVtdO3N3aXRjaChpPWl8fHRoaXMuY29vcmRzVG9MYXRMbmcsbC50eXBlKXtjYXNlIlBvaW50IjpyZXR1cm4gcz1pKHUpLGU/ZSh0LHMpOm5ldyBvLk1hcmtlcihzKTtjYXNlIk11bHRpUG9pbnQiOmZvcihyPTAsaD11Lmxlbmd0aDtoPnI7cisrKXM9aSh1W3JdKSxjLnB1c2goZT9lKHQscyk6bmV3IG8uTWFya2VyKHMpKTtyZXR1cm4gbmV3IG8uRmVhdHVyZUdyb3VwKGMpO2Nhc2UiTGluZVN0cmluZyI6cmV0dXJuIGE9dGhpcy5jb29yZHNUb0xhdExuZ3ModSwwLGkpLG5ldyBvLlBvbHlsaW5lKGEsbik7Y2FzZSJQb2x5Z29uIjppZigyPT09dS5sZW5ndGgmJiF1WzFdLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgR2VvSlNPTiBvYmplY3QuIik7cmV0dXJuIGE9dGhpcy5jb29yZHNUb0xhdExuZ3ModSwxLGkpLG5ldyBvLlBvbHlnb24oYSxuKTtjYXNlIk11bHRpTGluZVN0cmluZyI6cmV0dXJuIGE9dGhpcy5jb29yZHNUb0xhdExuZ3ModSwxLGkpLG5ldyBvLk11bHRpUG9seWxpbmUoYSxuKTtjYXNlIk11bHRpUG9seWdvbiI6cmV0dXJuIGE9dGhpcy5jb29yZHNUb0xhdExuZ3ModSwyLGkpLG5ldyBvLk11bHRpUG9seWdvbihhLG4pO2Nhc2UiR2VvbWV0cnlDb2xsZWN0aW9uIjpmb3Iocj0wLGg9bC5nZW9tZXRyaWVzLmxlbmd0aDtoPnI7cisrKWMucHVzaCh0aGlzLmdlb21ldHJ5VG9MYXllcih7Z2VvbWV0cnk6bC5nZW9tZXRyaWVzW3JdLHR5cGU6IkZlYXR1cmUiLHByb3BlcnRpZXM6dC5wcm9wZXJ0aWVzfSxlLGksbikpO3JldHVybiBuZXcgby5GZWF0dXJlR3JvdXAoYyk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgR2VvSlNPTiBvYmplY3QuIil9fSxjb29yZHNUb0xhdExuZzpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IG8uTGF0TG5nKHRbMV0sdFswXSx0WzJdKX0sY29vcmRzVG9MYXRMbmdzOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixvLHMsYT1bXTtmb3Iobz0wLHM9dC5sZW5ndGg7cz5vO28rKyluPWU/dGhpcy5jb29yZHNUb0xhdExuZ3ModFtvXSxlLTEsaSk6KGl8fHRoaXMuY29vcmRzVG9MYXRMbmcpKHRbb10pLGEucHVzaChuKTtyZXR1cm4gYX0sbGF0TG5nVG9Db29yZHM6ZnVuY3Rpb24odCl7dmFyIGU9W3QubG5nLHQubGF0XTtyZXR1cm4gdC5hbHQhPT1pJiZlLnB1c2godC5hbHQpLGV9LGxhdExuZ3NUb0Nvb3JkczpmdW5jdGlvbih0KXtmb3IodmFyIGU9W10saT0wLG49dC5sZW5ndGg7bj5pO2krKyllLnB1c2goby5HZW9KU09OLmxhdExuZ1RvQ29vcmRzKHRbaV0pKTtyZXR1cm4gZX0sZ2V0RmVhdHVyZTpmdW5jdGlvbih0LGUpe3JldHVybiB0LmZlYXR1cmU/by5leHRlbmQoe30sdC5mZWF0dXJlLHtnZW9tZXRyeTplfSk6by5HZW9KU09OLmFzRmVhdHVyZShlKX0sYXNGZWF0dXJlOmZ1bmN0aW9uKHQpe3JldHVybiJGZWF0dXJlIj09PXQudHlwZT90Ont0eXBlOiJGZWF0dXJlIixwcm9wZXJ0aWVzOnt9LGdlb21ldHJ5OnR9fX0pO3ZhciBhPXt0b0dlb0pTT046ZnVuY3Rpb24oKXtyZXR1cm4gby5HZW9KU09OLmdldEZlYXR1cmUodGhpcyx7dHlwZToiUG9pbnQiLGNvb3JkaW5hdGVzOm8uR2VvSlNPTi5sYXRMbmdUb0Nvb3Jkcyh0aGlzLmdldExhdExuZygpKX0pfX07by5NYXJrZXIuaW5jbHVkZShhKSxvLkNpcmNsZS5pbmNsdWRlKGEpLG8uQ2lyY2xlTWFya2VyLmluY2x1ZGUoYSksby5Qb2x5bGluZS5pbmNsdWRlKHt0b0dlb0pTT046ZnVuY3Rpb24oKXtyZXR1cm4gby5HZW9KU09OLmdldEZlYXR1cmUodGhpcyx7dHlwZToiTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6by5HZW9KU09OLmxhdExuZ3NUb0Nvb3Jkcyh0aGlzLmdldExhdExuZ3MoKSl9KX19KSxvLlBvbHlnb24uaW5jbHVkZSh7dG9HZW9KU09OOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG49W28uR2VvSlNPTi5sYXRMbmdzVG9Db29yZHModGhpcy5nZXRMYXRMbmdzKCkpXTtpZihuWzBdLnB1c2goblswXVswXSksdGhpcy5faG9sZXMpZm9yKHQ9MCxlPXRoaXMuX2hvbGVzLmxlbmd0aDtlPnQ7dCsrKWk9by5HZW9KU09OLmxhdExuZ3NUb0Nvb3Jkcyh0aGlzLl9ob2xlc1t0XSksaS5wdXNoKGlbMF0pLG4ucHVzaChpKTtyZXR1cm4gby5HZW9KU09OLmdldEZlYXR1cmUodGhpcyx7dHlwZToiUG9seWdvbiIsY29vcmRpbmF0ZXM6bn0pfX0pLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1bXTtyZXR1cm4gdGhpcy5lYWNoTGF5ZXIoZnVuY3Rpb24odCl7ZS5wdXNoKHQudG9HZW9KU09OKCkuZ2VvbWV0cnkuY29vcmRpbmF0ZXMpfSksby5HZW9KU09OLmdldEZlYXR1cmUodGhpcyx7dHlwZTp0LGNvb3JkaW5hdGVzOmV9KX19by5NdWx0aVBvbHlsaW5lLmluY2x1ZGUoe3RvR2VvSlNPTjp0KCJNdWx0aUxpbmVTdHJpbmciKX0pLG8uTXVsdGlQb2x5Z29uLmluY2x1ZGUoe3RvR2VvSlNPTjp0KCJNdWx0aVBvbHlnb24iKX0pLG8uTGF5ZXJHcm91cC5pbmNsdWRlKHt0b0dlb0pTT046ZnVuY3Rpb24oKXt2YXIgZSxpPXRoaXMuZmVhdHVyZSYmdGhpcy5mZWF0dXJlLmdlb21ldHJ5LG49W107aWYoaSYmIk11bHRpUG9pbnQiPT09aS50eXBlKXJldHVybiB0KCJNdWx0aVBvaW50IikuY2FsbCh0aGlzKTt2YXIgcz1pJiYiR2VvbWV0cnlDb2xsZWN0aW9uIj09PWkudHlwZTtyZXR1cm4gdGhpcy5lYWNoTGF5ZXIoZnVuY3Rpb24odCl7dC50b0dlb0pTT04mJihlPXQudG9HZW9KU09OKCksbi5wdXNoKHM/ZS5nZW9tZXRyeTpvLkdlb0pTT04uYXNGZWF0dXJlKGUpKSl9KSxzP28uR2VvSlNPTi5nZXRGZWF0dXJlKHRoaXMse2dlb21ldHJpZXM6bix0eXBlOiJHZW9tZXRyeUNvbGxlY3Rpb24ifSk6e3R5cGU6IkZlYXR1cmVDb2xsZWN0aW9uIixmZWF0dXJlczpufX19KX0oKSxvLmdlb0pzb249ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IG8uR2VvSlNPTih0LGUpfSxvLkRvbUV2ZW50PXthZGRMaXN0ZW5lcjpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcyxhLHIsaD1vLnN0YW1wKGkpLGw9Il9sZWFmbGV0XyIrZStoO3JldHVybiB0W2xdP3RoaXM6KHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGkuY2FsbChufHx0LGV8fG8uRG9tRXZlbnQuX2dldEV2ZW50KCkpfSxvLkJyb3dzZXIucG9pbnRlciYmMD09PWUuaW5kZXhPZigidG91Y2giKT90aGlzLmFkZFBvaW50ZXJMaXN0ZW5lcih0LGUscyxoKTooby5Ccm93c2VyLnRvdWNoJiYiZGJsY2xpY2siPT09ZSYmdGhpcy5hZGREb3VibGVUYXBMaXN0ZW5lciYmdGhpcy5hZGREb3VibGVUYXBMaXN0ZW5lcih0LHMsaCksImFkZEV2ZW50TGlzdGVuZXIiaW4gdD8ibW91c2V3aGVlbCI9PT1lPyh0LmFkZEV2ZW50TGlzdGVuZXIoIkRPTU1vdXNlU2Nyb2xsIixzLCExKSx0LmFkZEV2ZW50TGlzdGVuZXIoZSxzLCExKSk6Im1vdXNlZW50ZXIiPT09ZXx8Im1vdXNlbGVhdmUiPT09ZT8oYT1zLHI9Im1vdXNlZW50ZXIiPT09ZT8ibW91c2VvdmVyIjoibW91c2VvdXQiLHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8uRG9tRXZlbnQuX2NoZWNrTW91c2UodCxlKT9hKGUpOnZvaWQgMH0sdC5hZGRFdmVudExpc3RlbmVyKHIscywhMSkpOiJjbGljayI9PT1lJiZvLkJyb3dzZXIuYW5kcm9pZD8oYT1zLHM9ZnVuY3Rpb24odCl7cmV0dXJuIG8uRG9tRXZlbnQuX2ZpbHRlckNsaWNrKHQsYSl9LHQuYWRkRXZlbnRMaXN0ZW5lcihlLHMsITEpKTp0LmFkZEV2ZW50TGlzdGVuZXIoZSxzLCExKToiYXR0YWNoRXZlbnQiaW4gdCYmdC5hdHRhY2hFdmVudCgib24iK2UscyksdFtsXT1zLHRoaXMpKX0scmVtb3ZlTGlzdGVuZXI6ZnVuY3Rpb24odCxlLGkpe3ZhciBuPW8uc3RhbXAoaSkscz0iX2xlYWZsZXRfIitlK24sYT10W3NdO3JldHVybiBhPyhvLkJyb3dzZXIucG9pbnRlciYmMD09PWUuaW5kZXhPZigidG91Y2giKT90aGlzLnJlbW92ZVBvaW50ZXJMaXN0ZW5lcih0LGUsbik6by5Ccm93c2VyLnRvdWNoJiYiZGJsY2xpY2siPT09ZSYmdGhpcy5yZW1vdmVEb3VibGVUYXBMaXN0ZW5lcj90aGlzLnJlbW92ZURvdWJsZVRhcExpc3RlbmVyKHQsbik6InJlbW92ZUV2ZW50TGlzdGVuZXIiaW4gdD8ibW91c2V3aGVlbCI9PT1lPyh0LnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTU1vdXNlU2Nyb2xsIixhLCExKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZSxhLCExKSk6Im1vdXNlZW50ZXIiPT09ZXx8Im1vdXNlbGVhdmUiPT09ZT90LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZW50ZXIiPT09ZT8ibW91c2VvdmVyIjoibW91c2VvdXQiLGEsITEpOnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLGEsITEpOiJkZXRhY2hFdmVudCJpbiB0JiZ0LmRldGFjaEV2ZW50KCJvbiIrZSxhKSx0W3NdPW51bGwsdGhpcyk6dGhpc30sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKHQpe3JldHVybiB0LnN0b3BQcm9wYWdhdGlvbj90LnN0b3BQcm9wYWdhdGlvbigpOnQuY2FuY2VsQnViYmxlPSEwLG8uRG9tRXZlbnQuX3NraXBwZWQodCksdGhpc30sZGlzYWJsZVNjcm9sbFByb3BhZ2F0aW9uOmZ1bmN0aW9uKHQpe3ZhciBlPW8uRG9tRXZlbnQuc3RvcFByb3BhZ2F0aW9uO3JldHVybiBvLkRvbUV2ZW50Lm9uKHQsIm1vdXNld2hlZWwiLGUpLm9uKHQsIk1vek1vdXNlUGl4ZWxTY3JvbGwiLGUpfSxkaXNhYmxlQ2xpY2tQcm9wYWdhdGlvbjpmdW5jdGlvbih0KXtmb3IodmFyIGU9by5Eb21FdmVudC5zdG9wUHJvcGFnYXRpb24saT1vLkRyYWdnYWJsZS5TVEFSVC5sZW5ndGgtMTtpPj0wO2ktLSlvLkRvbUV2ZW50Lm9uKHQsby5EcmFnZ2FibGUuU1RBUlRbaV0sZSk7cmV0dXJuIG8uRG9tRXZlbnQub24odCwiY2xpY2siLG8uRG9tRXZlbnQuX2Zha2VTdG9wKS5vbih0LCJkYmxjbGljayIsZSl9LHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKHQpe3JldHVybiB0LnByZXZlbnREZWZhdWx0P3QucHJldmVudERlZmF1bHQoKTp0LnJldHVyblZhbHVlPSExLHRoaXN9LHN0b3A6ZnVuY3Rpb24odCl7cmV0dXJuIG8uRG9tRXZlbnQucHJldmVudERlZmF1bHQodCkuc3RvcFByb3BhZ2F0aW9uKHQpfSxnZXRNb3VzZVBvc2l0aW9uOmZ1bmN0aW9uKHQsZSl7aWYoIWUpcmV0dXJuIG5ldyBvLlBvaW50KHQuY2xpZW50WCx0LmNsaWVudFkpO3ZhciBpPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuIG5ldyBvLlBvaW50KHQuY2xpZW50WC1pLmxlZnQtZS5jbGllbnRMZWZ0LHQuY2xpZW50WS1pLnRvcC1lLmNsaWVudFRvcCl9LGdldFdoZWVsRGVsdGE6ZnVuY3Rpb24odCl7dmFyIGU9MDtyZXR1cm4gdC53aGVlbERlbHRhJiYoZT10LndoZWVsRGVsdGEvMTIwKSx0LmRldGFpbCYmKGU9LXQuZGV0YWlsLzMpLGV9LF9za2lwRXZlbnRzOnt9LF9mYWtlU3RvcDpmdW5jdGlvbih0KXtvLkRvbUV2ZW50Ll9za2lwRXZlbnRzW3QudHlwZV09ITB9LF9za2lwcGVkOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3NraXBFdmVudHNbdC50eXBlXTtyZXR1cm4gdGhpcy5fc2tpcEV2ZW50c1t0LnR5cGVdPSExLGV9LF9jaGVja01vdXNlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9ZS5yZWxhdGVkVGFyZ2V0O2lmKCFpKXJldHVybiEwO3RyeXtmb3IoO2kmJmkhPT10OylpPWkucGFyZW50Tm9kZX1jYXRjaChuKXtyZXR1cm4hMX1yZXR1cm4gaSE9PXR9LF9nZXRFdmVudDpmdW5jdGlvbigpe3ZhciBlPXQuZXZlbnQ7aWYoIWUpZm9yKHZhciBpPWFyZ3VtZW50cy5jYWxsZWUuY2FsbGVyO2kmJihlPWkuYXJndW1lbnRzWzBdLCFlfHx0LkV2ZW50IT09ZS5jb25zdHJ1Y3Rvcik7KWk9aS5jYWxsZXI7cmV0dXJuIGV9LF9maWx0ZXJDbGljazpmdW5jdGlvbih0LGUpe3ZhciBpPXQudGltZVN0YW1wfHx0Lm9yaWdpbmFsRXZlbnQudGltZVN0YW1wLG49by5Eb21FdmVudC5fbGFzdENsaWNrJiZpLW8uRG9tRXZlbnQuX2xhc3RDbGljaztyZXR1cm4gbiYmbj4xMDAmJjUwMD5ufHx0LnRhcmdldC5fc2ltdWxhdGVkQ2xpY2smJiF0Ll9zaW11bGF0ZWQ/dm9pZCBvLkRvbUV2ZW50LnN0b3AodCk6KG8uRG9tRXZlbnQuX2xhc3RDbGljaz1pLGUodCkpfX0sby5Eb21FdmVudC5vbj1vLkRvbUV2ZW50LmFkZExpc3RlbmVyLG8uRG9tRXZlbnQub2ZmPW8uRG9tRXZlbnQucmVtb3ZlTGlzdGVuZXIsby5EcmFnZ2FibGU9by5DbGFzcy5leHRlbmQoe2luY2x1ZGVzOm8uTWl4aW4uRXZlbnRzLHN0YXRpY3M6e1NUQVJUOm8uQnJvd3Nlci50b3VjaD9bInRvdWNoc3RhcnQiLCJtb3VzZWRvd24iXTpbIm1vdXNlZG93biJdLEVORDp7bW91c2Vkb3duOiJtb3VzZXVwIix0b3VjaHN0YXJ0OiJ0b3VjaGVuZCIscG9pbnRlcmRvd246InRvdWNoZW5kIixNU1BvaW50ZXJEb3duOiJ0b3VjaGVuZCJ9LE1PVkU6e21vdXNlZG93bjoibW91c2Vtb3ZlIix0b3VjaHN0YXJ0OiJ0b3VjaG1vdmUiLHBvaW50ZXJkb3duOiJ0b3VjaG1vdmUiLE1TUG9pbnRlckRvd246InRvdWNobW92ZSJ9fSxpbml0aWFsaXplOmZ1bmN0aW9uKHQsZSl7dGhpcy5fZWxlbWVudD10LHRoaXMuX2RyYWdTdGFydFRhcmdldD1lfHx0fSxlbmFibGU6ZnVuY3Rpb24oKXtpZighdGhpcy5fZW5hYmxlZCl7Zm9yKHZhciB0PW8uRHJhZ2dhYmxlLlNUQVJULmxlbmd0aC0xO3Q+PTA7dC0tKW8uRG9tRXZlbnQub24odGhpcy5fZHJhZ1N0YXJ0VGFyZ2V0LG8uRHJhZ2dhYmxlLlNUQVJUW3RdLHRoaXMuX29uRG93bix0aGlzKTt0aGlzLl9lbmFibGVkPSEwfX0sZGlzYWJsZTpmdW5jdGlvbigpe2lmKHRoaXMuX2VuYWJsZWQpe2Zvcih2YXIgdD1vLkRyYWdnYWJsZS5TVEFSVC5sZW5ndGgtMTt0Pj0wO3QtLSlvLkRvbUV2ZW50Lm9mZih0aGlzLl9kcmFnU3RhcnRUYXJnZXQsby5EcmFnZ2FibGUuU1RBUlRbdF0sdGhpcy5fb25Eb3duLHRoaXMpO3RoaXMuX2VuYWJsZWQ9ITEsdGhpcy5fbW92ZWQ9ITF9fSxfb25Eb3duOmZ1bmN0aW9uKHQpe2lmKHRoaXMuX21vdmVkPSExLCEodC5zaGlmdEtleXx8MSE9PXQud2hpY2gmJjEhPT10LmJ1dHRvbiYmIXQudG91Y2hlc3x8KG8uRG9tRXZlbnQuc3RvcFByb3BhZ2F0aW9uKHQpLG8uRHJhZ2dhYmxlLl9kaXNhYmxlZHx8KG8uRG9tVXRpbC5kaXNhYmxlSW1hZ2VEcmFnKCksby5Eb21VdGlsLmRpc2FibGVUZXh0U2VsZWN0aW9uKCksdGhpcy5fbW92aW5nKSkpKXt2YXIgaT10LnRvdWNoZXM/dC50b3VjaGVzWzBdOnQ7dGhpcy5fc3RhcnRQb2ludD1uZXcgby5Qb2ludChpLmNsaWVudFgsaS5jbGllbnRZKSx0aGlzLl9zdGFydFBvcz10aGlzLl9uZXdQb3M9by5Eb21VdGlsLmdldFBvc2l0aW9uKHRoaXMuX2VsZW1lbnQpLG8uRG9tRXZlbnQub24oZSxvLkRyYWdnYWJsZS5NT1ZFW3QudHlwZV0sdGhpcy5fb25Nb3ZlLHRoaXMpLm9uKGUsby5EcmFnZ2FibGUuRU5EW3QudHlwZV0sdGhpcy5fb25VcCx0aGlzKX19LF9vbk1vdmU6ZnVuY3Rpb24odCl7aWYodC50b3VjaGVzJiZ0LnRvdWNoZXMubGVuZ3RoPjEpcmV0dXJuIHZvaWQodGhpcy5fbW92ZWQ9ITApO3ZhciBpPXQudG91Y2hlcyYmMT09PXQudG91Y2hlcy5sZW5ndGg/dC50b3VjaGVzWzBdOnQsbj1uZXcgby5Qb2ludChpLmNsaWVudFgsaS5jbGllbnRZKSxzPW4uc3VidHJhY3QodGhpcy5fc3RhcnRQb2ludCk7KHMueHx8cy55KSYmKG8uQnJvd3Nlci50b3VjaCYmTWF0aC5hYnMocy54KStNYXRoLmFicyhzLnkpPDN8fChvLkRvbUV2ZW50LnByZXZlbnREZWZhdWx0KHQpLHRoaXMuX21vdmVkfHwodGhpcy5maXJlKCJkcmFnc3RhcnQiKSx0aGlzLl9tb3ZlZD0hMCx0aGlzLl9zdGFydFBvcz1vLkRvbVV0aWwuZ2V0UG9zaXRpb24odGhpcy5fZWxlbWVudCkuc3VidHJhY3Qocyksby5Eb21VdGlsLmFkZENsYXNzKGUuYm9keSwibGVhZmxldC1kcmFnZ2luZyIpLHRoaXMuX2xhc3RUYXJnZXQ9dC50YXJnZXR8fHQuc3JjRWxlbWVudCxvLkRvbVV0aWwuYWRkQ2xhc3ModGhpcy5fbGFzdFRhcmdldCwibGVhZmxldC1kcmFnLXRhcmdldCIpKSx0aGlzLl9uZXdQb3M9dGhpcy5fc3RhcnRQb3MuYWRkKHMpLHRoaXMuX21vdmluZz0hMCxvLlV0aWwuY2FuY2VsQW5pbUZyYW1lKHRoaXMuX2FuaW1SZXF1ZXN0KSx0aGlzLl9hbmltUmVxdWVzdD1vLlV0aWwucmVxdWVzdEFuaW1GcmFtZSh0aGlzLl91cGRhdGVQb3NpdGlvbix0aGlzLCEwLHRoaXMuX2RyYWdTdGFydFRhcmdldCkpKX0sX3VwZGF0ZVBvc2l0aW9uOmZ1bmN0aW9uKCl7dGhpcy5maXJlKCJwcmVkcmFnIiksby5Eb21VdGlsLnNldFBvc2l0aW9uKHRoaXMuX2VsZW1lbnQsdGhpcy5fbmV3UG9zKSx0aGlzLmZpcmUoImRyYWciKX0sX29uVXA6ZnVuY3Rpb24oKXtvLkRvbVV0aWwucmVtb3ZlQ2xhc3MoZS5ib2R5LCJsZWFmbGV0LWRyYWdnaW5nIiksdGhpcy5fbGFzdFRhcmdldCYmKG8uRG9tVXRpbC5yZW1vdmVDbGFzcyh0aGlzLl9sYXN0VGFyZ2V0LCJsZWFmbGV0LWRyYWctdGFyZ2V0IiksdGhpcy5fbGFzdFRhcmdldD1udWxsKTtmb3IodmFyIHQgaW4gby5EcmFnZ2FibGUuTU9WRSlvLkRvbUV2ZW50Lm9mZihlLG8uRHJhZ2dhYmxlLk1PVkVbdF0sdGhpcy5fb25Nb3ZlKS5vZmYoZSxvLkRyYWdnYWJsZS5FTkRbdF0sdGhpcy5fb25VcCk7by5Eb21VdGlsLmVuYWJsZUltYWdlRHJhZygpLG8uRG9tVXRpbC5lbmFibGVUZXh0U2VsZWN0aW9uKCksdGhpcy5fbW92ZWQmJnRoaXMuX21vdmluZyYmKG8uVXRpbC5jYW5jZWxBbmltRnJhbWUodGhpcy5fYW5pbVJlcXVlc3QpLHRoaXMuZmlyZSgiZHJhZ2VuZCIse2Rpc3RhbmNlOnRoaXMuX25ld1Bvcy5kaXN0YW5jZVRvKHRoaXMuX3N0YXJ0UG9zKX0pKSx0aGlzLl9tb3Zpbmc9ITF9fSksby5IYW5kbGVyPW8uQ2xhc3MuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMuX21hcD10fSxlbmFibGU6ZnVuY3Rpb24oKXt0aGlzLl9lbmFibGVkfHwodGhpcy5fZW5hYmxlZD0hMCx0aGlzLmFkZEhvb2tzKCkpfSxkaXNhYmxlOmZ1bmN0aW9uKCl7dGhpcy5fZW5hYmxlZCYmKHRoaXMuX2VuYWJsZWQ9ITEsdGhpcy5yZW1vdmVIb29rcygpKX0sZW5hYmxlZDpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5fZW5hYmxlZH19KSxvLk1hcC5tZXJnZU9wdGlvbnMoe2RyYWdnaW5nOiEwLGluZXJ0aWE6IW8uQnJvd3Nlci5hbmRyb2lkMjMsaW5lcnRpYURlY2VsZXJhdGlvbjozNDAwLGluZXJ0aWFNYXhTcGVlZDoxLzAsaW5lcnRpYVRocmVzaG9sZDpvLkJyb3dzZXIudG91Y2g/MzI6MTgsZWFzZUxpbmVhcml0eTouMjUsd29ybGRDb3B5SnVtcDohMX0pLG8uTWFwLkRyYWc9by5IYW5kbGVyLmV4dGVuZCh7YWRkSG9va3M6ZnVuY3Rpb24oKXtpZighdGhpcy5fZHJhZ2dhYmxlKXt2YXIgdD10aGlzLl9tYXA7dGhpcy5fZHJhZ2dhYmxlPW5ldyBvLkRyYWdnYWJsZSh0Ll9tYXBQYW5lLHQuX2NvbnRhaW5lciksdGhpcy5fZHJhZ2dhYmxlLm9uKHtkcmFnc3RhcnQ6dGhpcy5fb25EcmFnU3RhcnQsZHJhZzp0aGlzLl9vbkRyYWcsZHJhZ2VuZDp0aGlzLl9vbkRyYWdFbmR9LHRoaXMpLHQub3B0aW9ucy53b3JsZENvcHlKdW1wJiYodGhpcy5fZHJhZ2dhYmxlLm9uKCJwcmVkcmFnIix0aGlzLl9vblByZURyYWcsdGhpcyksdC5vbigidmlld3Jlc2V0Iix0aGlzLl9vblZpZXdSZXNldCx0aGlzKSx0LndoZW5SZWFkeSh0aGlzLl9vblZpZXdSZXNldCx0aGlzKSl9dGhpcy5fZHJhZ2dhYmxlLmVuYWJsZSgpfSxyZW1vdmVIb29rczpmdW5jdGlvbigpe3RoaXMuX2RyYWdnYWJsZS5kaXNhYmxlKCl9LG1vdmVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RyYWdnYWJsZSYmdGhpcy5fZHJhZ2dhYmxlLl9tb3ZlZH0sX29uRHJhZ1N0YXJ0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbWFwO3QuX3BhbkFuaW0mJnQuX3BhbkFuaW0uc3RvcCgpLHQuZmlyZSgibW92ZXN0YXJ0IikuZmlyZSgiZHJhZ3N0YXJ0IiksdC5vcHRpb25zLmluZXJ0aWEmJih0aGlzLl9wb3NpdGlvbnM9W10sdGhpcy5fdGltZXM9W10pfSxfb25EcmFnOmZ1bmN0aW9uKCl7aWYodGhpcy5fbWFwLm9wdGlvbnMuaW5lcnRpYSl7dmFyIHQ9dGhpcy5fbGFzdFRpbWU9K25ldyBEYXRlLGU9dGhpcy5fbGFzdFBvcz10aGlzLl9kcmFnZ2FibGUuX25ld1Bvczt0aGlzLl9wb3NpdGlvbnMucHVzaChlKSx0aGlzLl90aW1lcy5wdXNoKHQpLHQtdGhpcy5fdGltZXNbMF0+MjAwJiYodGhpcy5fcG9zaXRpb25zLnNoaWZ0KCksdGhpcy5fdGltZXMuc2hpZnQoKSl9dGhpcy5fbWFwLmZpcmUoIm1vdmUiKS5maXJlKCJkcmFnIil9LF9vblZpZXdSZXNldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcC5nZXRTaXplKCkuX2RpdmlkZUJ5KDIpLGU9dGhpcy5fbWFwLmxhdExuZ1RvTGF5ZXJQb2ludChbMCwwXSk7dGhpcy5faW5pdGlhbFdvcmxkT2Zmc2V0PWUuc3VidHJhY3QodCkueCx0aGlzLl93b3JsZFdpZHRoPXRoaXMuX21hcC5wcm9qZWN0KFswLDE4MF0pLnh9LF9vblByZURyYWc6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl93b3JsZFdpZHRoLGU9TWF0aC5yb3VuZCh0LzIpLGk9dGhpcy5faW5pdGlhbFdvcmxkT2Zmc2V0LG49dGhpcy5fZHJhZ2dhYmxlLl9uZXdQb3MueCxvPShuLWUraSkldCtlLWkscz0obitlK2kpJXQtZS1pLGE9TWF0aC5hYnMobytpKTxNYXRoLmFicyhzK2kpP286czt0aGlzLl9kcmFnZ2FibGUuX25ld1Bvcy54PWF9LF9vbkRyYWdFbmQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbWFwLGk9ZS5vcHRpb25zLG49K25ldyBEYXRlLXRoaXMuX2xhc3RUaW1lLHM9IWkuaW5lcnRpYXx8bj5pLmluZXJ0aWFUaHJlc2hvbGR8fCF0aGlzLl9wb3NpdGlvbnNbMF07aWYoZS5maXJlKCJkcmFnZW5kIix0KSxzKWUuZmlyZSgibW92ZWVuZCIpO2Vsc2V7dmFyIGE9dGhpcy5fbGFzdFBvcy5zdWJ0cmFjdCh0aGlzLl9wb3NpdGlvbnNbMF0pLHI9KHRoaXMuX2xhc3RUaW1lK24tdGhpcy5fdGltZXNbMF0pLzFlMyxoPWkuZWFzZUxpbmVhcml0eSxsPWEubXVsdGlwbHlCeShoL3IpLHU9bC5kaXN0YW5jZVRvKFswLDBdKSxjPU1hdGgubWluKGkuaW5lcnRpYU1heFNwZWVkLHUpLGQ9bC5tdWx0aXBseUJ5KGMvdSkscD1jLyhpLmluZXJ0aWFEZWNlbGVyYXRpb24qaCksXz1kLm11bHRpcGx5QnkoLXAvMikucm91bmQoKTtfLngmJl8ueT8oXz1lLl9saW1pdE9mZnNldChfLGUub3B0aW9ucy5tYXhCb3VuZHMpLG8uVXRpbC5yZXF1ZXN0QW5pbUZyYW1lKGZ1bmN0aW9uKCl7ZS5wYW5CeShfLHtkdXJhdGlvbjpwLGVhc2VMaW5lYXJpdHk6aCxub01vdmVTdGFydDohMH0pfSkpOmUuZmlyZSgibW92ZWVuZCIpfX19KSxvLk1hcC5hZGRJbml0SG9vaygiYWRkSGFuZGxlciIsImRyYWdnaW5nIixvLk1hcC5EcmFnKSxvLk1hcC5tZXJnZU9wdGlvbnMoe2RvdWJsZUNsaWNrWm9vbTohMH0pLG8uTWFwLkRvdWJsZUNsaWNrWm9vbT1vLkhhbmRsZXIuZXh0ZW5kKHthZGRIb29rczpmdW5jdGlvbigpe3RoaXMuX21hcC5vbigiZGJsY2xpY2siLHRoaXMuX29uRG91YmxlQ2xpY2ssdGhpcyl9LHJlbW92ZUhvb2tzOmZ1bmN0aW9uKCl7dGhpcy5fbWFwLm9mZigiZGJsY2xpY2siLHRoaXMuX29uRG91YmxlQ2xpY2ssdGhpcyl9LF9vbkRvdWJsZUNsaWNrOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX21hcCxpPWUuZ2V0Wm9vbSgpKyh0Lm9yaWdpbmFsRXZlbnQuc2hpZnRLZXk/LTE6MSk7ImNlbnRlciI9PT1lLm9wdGlvbnMuZG91YmxlQ2xpY2tab29tP2Uuc2V0Wm9vbShpKTplLnNldFpvb21Bcm91bmQodC5jb250YWluZXJQb2ludCxpKX19KSxvLk1hcC5hZGRJbml0SG9vaygiYWRkSGFuZGxlciIsImRvdWJsZUNsaWNrWm9vbSIsby5NYXAuRG91YmxlQ2xpY2tab29tKSxvLk1hcC5tZXJnZU9wdGlvbnMoe3Njcm9sbFdoZWVsWm9vbTohMH0pLG8uTWFwLlNjcm9sbFdoZWVsWm9vbT1vLkhhbmRsZXIuZXh0ZW5kKHthZGRIb29rczpmdW5jdGlvbigpe28uRG9tRXZlbnQub24odGhpcy5fbWFwLl9jb250YWluZXIsIm1vdXNld2hlZWwiLHRoaXMuX29uV2hlZWxTY3JvbGwsdGhpcyksby5Eb21FdmVudC5vbih0aGlzLl9tYXAuX2NvbnRhaW5lciwiTW96TW91c2VQaXhlbFNjcm9sbCIsby5Eb21FdmVudC5wcmV2ZW50RGVmYXVsdCksdGhpcy5fZGVsdGE9MH0scmVtb3ZlSG9va3M6ZnVuY3Rpb24oKXtvLkRvbUV2ZW50Lm9mZih0aGlzLl9tYXAuX2NvbnRhaW5lciwibW91c2V3aGVlbCIsdGhpcy5fb25XaGVlbFNjcm9sbCksby5Eb21FdmVudC5vZmYodGhpcy5fbWFwLl9jb250YWluZXIsIk1vek1vdXNlUGl4ZWxTY3JvbGwiLG8uRG9tRXZlbnQucHJldmVudERlZmF1bHQpfSxfb25XaGVlbFNjcm9sbDpmdW5jdGlvbih0KXt2YXIgZT1vLkRvbUV2ZW50LmdldFdoZWVsRGVsdGEodCk7dGhpcy5fZGVsdGErPWUsdGhpcy5fbGFzdE1vdXNlUG9zPXRoaXMuX21hcC5tb3VzZUV2ZW50VG9Db250YWluZXJQb2ludCh0KSx0aGlzLl9zdGFydFRpbWV8fCh0aGlzLl9zdGFydFRpbWU9K25ldyBEYXRlKTt2YXIgaT1NYXRoLm1heCg0MC0oK25ldyBEYXRlLXRoaXMuX3N0YXJ0VGltZSksMCk7Y2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVyKSx0aGlzLl90aW1lcj1zZXRUaW1lb3V0KG8uYmluZCh0aGlzLl9wZXJmb3JtWm9vbSx0aGlzKSxpKSxvLkRvbUV2ZW50LnByZXZlbnREZWZhdWx0KHQpLG8uRG9tRXZlbnQuc3RvcFByb3BhZ2F0aW9uKHQpfSxfcGVyZm9ybVpvb206ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXAsZT10aGlzLl9kZWx0YSxpPXQuZ2V0Wm9vbSgpO2U9ZT4wP01hdGguY2VpbChlKTpNYXRoLmZsb29yKGUpLGU9TWF0aC5tYXgoTWF0aC5taW4oZSw0KSwtNCksZT10Ll9saW1pdFpvb20oaStlKS1pLHRoaXMuX2RlbHRhPTAsdGhpcy5fc3RhcnRUaW1lPW51bGwsZSYmKCJjZW50ZXIiPT09dC5vcHRpb25zLnNjcm9sbFdoZWVsWm9vbT90LnNldFpvb20oaStlKTp0LnNldFpvb21Bcm91bmQodGhpcy5fbGFzdE1vdXNlUG9zLGkrZSkpfX0pLG8uTWFwLmFkZEluaXRIb29rKCJhZGRIYW5kbGVyIiwic2Nyb2xsV2hlZWxab29tIixvLk1hcC5TY3JvbGxXaGVlbFpvb20pLG8uZXh0ZW5kKG8uRG9tRXZlbnQse190b3VjaHN0YXJ0Om8uQnJvd3Nlci5tc1BvaW50ZXI/Ik1TUG9pbnRlckRvd24iOm8uQnJvd3Nlci5wb2ludGVyPyJwb2ludGVyZG93biI6InRvdWNoc3RhcnQiLF90b3VjaGVuZDpvLkJyb3dzZXIubXNQb2ludGVyPyJNU1BvaW50ZXJVcCI6by5Ccm93c2VyLnBvaW50ZXI/InBvaW50ZXJ1cCI6InRvdWNoZW5kIixhZGREb3VibGVUYXBMaXN0ZW5lcjpmdW5jdGlvbih0LGksbil7ZnVuY3Rpb24gcyh0KXt2YXIgZTtpZihvLkJyb3dzZXIucG9pbnRlcj8oXy5wdXNoKHQucG9pbnRlcklkKSxlPV8ubGVuZ3RoKTplPXQudG91Y2hlcy5sZW5ndGgsIShlPjEpKXt2YXIgaT1EYXRlLm5vdygpLG49aS0ocnx8aSk7aD10LnRvdWNoZXM/dC50b3VjaGVzWzBdOnQsbD1uPjAmJnU+PW4scj1pfX1mdW5jdGlvbiBhKHQpe2lmKG8uQnJvd3Nlci5wb2ludGVyKXt2YXIgZT1fLmluZGV4T2YodC5wb2ludGVySWQpO2lmKC0xPT09ZSlyZXR1cm47Xy5zcGxpY2UoZSwxKX1pZihsKXtpZihvLkJyb3dzZXIucG9pbnRlcil7dmFyIG4scz17fTtmb3IodmFyIGEgaW4gaCluPWhbYV0sc1thXT0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmJpbmQoaCk6bjtoPXN9aC50eXBlPSJkYmxjbGljayIsaShoKSxyPW51bGx9fXZhciByLGgsbD0hMSx1PTI1MCxjPSJfbGVhZmxldF8iLGQ9dGhpcy5fdG91Y2hzdGFydCxwPXRoaXMuX3RvdWNoZW5kLF89W107dFtjK2Qrbl09cyx0W2MrcCtuXT1hO3ZhciBtPW8uQnJvd3Nlci5wb2ludGVyP2UuZG9jdW1lbnRFbGVtZW50OnQ7cmV0dXJuIHQuYWRkRXZlbnRMaXN0ZW5lcihkLHMsITEpLG0uYWRkRXZlbnRMaXN0ZW5lcihwLGEsITEpLG8uQnJvd3Nlci5wb2ludGVyJiZtLmFkZEV2ZW50TGlzdGVuZXIoby5Eb21FdmVudC5QT0lOVEVSX0NBTkNFTCxhLCExKSx0aGlzfSxyZW1vdmVEb3VibGVUYXBMaXN0ZW5lcjpmdW5jdGlvbih0LGkpe3ZhciBuPSJfbGVhZmxldF8iO3JldHVybiB0LnJlbW92ZUV2ZW50TGlzdGVuZXIodGhpcy5fdG91Y2hzdGFydCx0W24rdGhpcy5fdG91Y2hzdGFydCtpXSwhMSksKG8uQnJvd3Nlci5wb2ludGVyP2UuZG9jdW1lbnRFbGVtZW50OnQpLnJlbW92ZUV2ZW50TGlzdGVuZXIodGhpcy5fdG91Y2hlbmQsdFtuK3RoaXMuX3RvdWNoZW5kK2ldLCExKSxvLkJyb3dzZXIucG9pbnRlciYmZS5kb2N1bWVudEVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihvLkRvbUV2ZW50LlBPSU5URVJfQ0FOQ0VMLHRbbit0aGlzLl90b3VjaGVuZCtpXSwhMSksdGhpc319KSxvLmV4dGVuZChvLkRvbUV2ZW50LHtQT0lOVEVSX0RPV046by5Ccm93c2VyLm1zUG9pbnRlcj8iTVNQb2ludGVyRG93biI6InBvaW50ZXJkb3duIixQT0lOVEVSX01PVkU6by5Ccm93c2VyLm1zUG9pbnRlcj8iTVNQb2ludGVyTW92ZSI6InBvaW50ZXJtb3ZlIixQT0lOVEVSX1VQOm8uQnJvd3Nlci5tc1BvaW50ZXI/Ik1TUG9pbnRlclVwIjoicG9pbnRlcnVwIixQT0lOVEVSX0NBTkNFTDpvLkJyb3dzZXIubXNQb2ludGVyPyJNU1BvaW50ZXJDYW5jZWwiOiJwb2ludGVyY2FuY2VsIixfcG9pbnRlcnM6W10sX3BvaW50ZXJEb2N1bWVudExpc3RlbmVyOiExLGFkZFBvaW50ZXJMaXN0ZW5lcjpmdW5jdGlvbih0LGUsaSxuKXtzd2l0Y2goZSl7Y2FzZSJ0b3VjaHN0YXJ0IjpyZXR1cm4gdGhpcy5hZGRQb2ludGVyTGlzdGVuZXJTdGFydCh0LGUsaSxuKTtjYXNlInRvdWNoZW5kIjpyZXR1cm4gdGhpcy5hZGRQb2ludGVyTGlzdGVuZXJFbmQodCxlLGksbik7Y2FzZSJ0b3VjaG1vdmUiOnJldHVybiB0aGlzLmFkZFBvaW50ZXJMaXN0ZW5lck1vdmUodCxlLGksbik7ZGVmYXVsdDp0aHJvdyJVbmtub3duIHRvdWNoIGV2ZW50IHR5cGUifX0sYWRkUG9pbnRlckxpc3RlbmVyU3RhcnQ6ZnVuY3Rpb24odCxpLG4scyl7dmFyIGE9Il9sZWFmbGV0XyIscj10aGlzLl9wb2ludGVycyxoPWZ1bmN0aW9uKHQpe28uRG9tRXZlbnQucHJldmVudERlZmF1bHQodCk7Zm9yKHZhciBlPSExLGk9MDtpPHIubGVuZ3RoO2krKylpZihyW2ldLnBvaW50ZXJJZD09PXQucG9pbnRlcklkKXtlPSEwOwpicmVha31lfHxyLnB1c2godCksdC50b3VjaGVzPXIuc2xpY2UoKSx0LmNoYW5nZWRUb3VjaGVzPVt0XSxuKHQpfTtpZih0W2ErInRvdWNoc3RhcnQiK3NdPWgsdC5hZGRFdmVudExpc3RlbmVyKHRoaXMuUE9JTlRFUl9ET1dOLGgsITEpLCF0aGlzLl9wb2ludGVyRG9jdW1lbnRMaXN0ZW5lcil7dmFyIGw9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTxyLmxlbmd0aDtlKyspaWYocltlXS5wb2ludGVySWQ9PT10LnBvaW50ZXJJZCl7ci5zcGxpY2UoZSwxKTticmVha319O2UuZG9jdW1lbnRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIodGhpcy5QT0lOVEVSX1VQLGwsITEpLGUuZG9jdW1lbnRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIodGhpcy5QT0lOVEVSX0NBTkNFTCxsLCExKSx0aGlzLl9wb2ludGVyRG9jdW1lbnRMaXN0ZW5lcj0hMH1yZXR1cm4gdGhpc30sYWRkUG9pbnRlckxpc3RlbmVyTW92ZTpmdW5jdGlvbih0LGUsaSxuKXtmdW5jdGlvbiBvKHQpe2lmKHQucG9pbnRlclR5cGUhPT10Lk1TUE9JTlRFUl9UWVBFX01PVVNFJiYibW91c2UiIT09dC5wb2ludGVyVHlwZXx8MCE9PXQuYnV0dG9ucyl7Zm9yKHZhciBlPTA7ZTxhLmxlbmd0aDtlKyspaWYoYVtlXS5wb2ludGVySWQ9PT10LnBvaW50ZXJJZCl7YVtlXT10O2JyZWFrfXQudG91Y2hlcz1hLnNsaWNlKCksdC5jaGFuZ2VkVG91Y2hlcz1bdF0saSh0KX19dmFyIHM9Il9sZWFmbGV0XyIsYT10aGlzLl9wb2ludGVycztyZXR1cm4gdFtzKyJ0b3VjaG1vdmUiK25dPW8sdC5hZGRFdmVudExpc3RlbmVyKHRoaXMuUE9JTlRFUl9NT1ZFLG8sITEpLHRoaXN9LGFkZFBvaW50ZXJMaXN0ZW5lckVuZDpmdW5jdGlvbih0LGUsaSxuKXt2YXIgbz0iX2xlYWZsZXRfIixzPXRoaXMuX3BvaW50ZXJzLGE9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTxzLmxlbmd0aDtlKyspaWYoc1tlXS5wb2ludGVySWQ9PT10LnBvaW50ZXJJZCl7cy5zcGxpY2UoZSwxKTticmVha310LnRvdWNoZXM9cy5zbGljZSgpLHQuY2hhbmdlZFRvdWNoZXM9W3RdLGkodCl9O3JldHVybiB0W28rInRvdWNoZW5kIituXT1hLHQuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLlBPSU5URVJfVVAsYSwhMSksdC5hZGRFdmVudExpc3RlbmVyKHRoaXMuUE9JTlRFUl9DQU5DRUwsYSwhMSksdGhpc30scmVtb3ZlUG9pbnRlckxpc3RlbmVyOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbj0iX2xlYWZsZXRfIixvPXRbbitlK2ldO3N3aXRjaChlKXtjYXNlInRvdWNoc3RhcnQiOnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLlBPSU5URVJfRE9XTixvLCExKTticmVhaztjYXNlInRvdWNobW92ZSI6dC5yZW1vdmVFdmVudExpc3RlbmVyKHRoaXMuUE9JTlRFUl9NT1ZFLG8sITEpO2JyZWFrO2Nhc2UidG91Y2hlbmQiOnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLlBPSU5URVJfVVAsbywhMSksdC5yZW1vdmVFdmVudExpc3RlbmVyKHRoaXMuUE9JTlRFUl9DQU5DRUwsbywhMSl9cmV0dXJuIHRoaXN9fSksby5NYXAubWVyZ2VPcHRpb25zKHt0b3VjaFpvb206by5Ccm93c2VyLnRvdWNoJiYhby5Ccm93c2VyLmFuZHJvaWQyMyxib3VuY2VBdFpvb21MaW1pdHM6ITB9KSxvLk1hcC5Ub3VjaFpvb209by5IYW5kbGVyLmV4dGVuZCh7YWRkSG9va3M6ZnVuY3Rpb24oKXtvLkRvbUV2ZW50Lm9uKHRoaXMuX21hcC5fY29udGFpbmVyLCJ0b3VjaHN0YXJ0Iix0aGlzLl9vblRvdWNoU3RhcnQsdGhpcyl9LHJlbW92ZUhvb2tzOmZ1bmN0aW9uKCl7by5Eb21FdmVudC5vZmYodGhpcy5fbWFwLl9jb250YWluZXIsInRvdWNoc3RhcnQiLHRoaXMuX29uVG91Y2hTdGFydCx0aGlzKX0sX29uVG91Y2hTdGFydDpmdW5jdGlvbih0KXt2YXIgaT10aGlzLl9tYXA7aWYodC50b3VjaGVzJiYyPT09dC50b3VjaGVzLmxlbmd0aCYmIWkuX2FuaW1hdGluZ1pvb20mJiF0aGlzLl96b29taW5nKXt2YXIgbj1pLm1vdXNlRXZlbnRUb0xheWVyUG9pbnQodC50b3VjaGVzWzBdKSxzPWkubW91c2VFdmVudFRvTGF5ZXJQb2ludCh0LnRvdWNoZXNbMV0pLGE9aS5fZ2V0Q2VudGVyTGF5ZXJQb2ludCgpO3RoaXMuX3N0YXJ0Q2VudGVyPW4uYWRkKHMpLl9kaXZpZGVCeSgyKSx0aGlzLl9zdGFydERpc3Q9bi5kaXN0YW5jZVRvKHMpLHRoaXMuX21vdmVkPSExLHRoaXMuX3pvb21pbmc9ITAsdGhpcy5fY2VudGVyT2Zmc2V0PWEuc3VidHJhY3QodGhpcy5fc3RhcnRDZW50ZXIpLGkuX3BhbkFuaW0mJmkuX3BhbkFuaW0uc3RvcCgpLG8uRG9tRXZlbnQub24oZSwidG91Y2htb3ZlIix0aGlzLl9vblRvdWNoTW92ZSx0aGlzKS5vbihlLCJ0b3VjaGVuZCIsdGhpcy5fb25Ub3VjaEVuZCx0aGlzKSxvLkRvbUV2ZW50LnByZXZlbnREZWZhdWx0KHQpfX0sX29uVG91Y2hNb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX21hcDtpZih0LnRvdWNoZXMmJjI9PT10LnRvdWNoZXMubGVuZ3RoJiZ0aGlzLl96b29taW5nKXt2YXIgaT1lLm1vdXNlRXZlbnRUb0xheWVyUG9pbnQodC50b3VjaGVzWzBdKSxuPWUubW91c2VFdmVudFRvTGF5ZXJQb2ludCh0LnRvdWNoZXNbMV0pO3RoaXMuX3NjYWxlPWkuZGlzdGFuY2VUbyhuKS90aGlzLl9zdGFydERpc3QsdGhpcy5fZGVsdGE9aS5fYWRkKG4pLl9kaXZpZGVCeSgyKS5fc3VidHJhY3QodGhpcy5fc3RhcnRDZW50ZXIpLDEhPT10aGlzLl9zY2FsZSYmKGUub3B0aW9ucy5ib3VuY2VBdFpvb21MaW1pdHN8fCEoZS5nZXRab29tKCk9PT1lLmdldE1pblpvb20oKSYmdGhpcy5fc2NhbGU8MXx8ZS5nZXRab29tKCk9PT1lLmdldE1heFpvb20oKSYmdGhpcy5fc2NhbGU+MSkpJiYodGhpcy5fbW92ZWR8fChvLkRvbVV0aWwuYWRkQ2xhc3MoZS5fbWFwUGFuZSwibGVhZmxldC10b3VjaGluZyIpLGUuZmlyZSgibW92ZXN0YXJ0IikuZmlyZSgiem9vbXN0YXJ0IiksdGhpcy5fbW92ZWQ9ITApLG8uVXRpbC5jYW5jZWxBbmltRnJhbWUodGhpcy5fYW5pbVJlcXVlc3QpLHRoaXMuX2FuaW1SZXF1ZXN0PW8uVXRpbC5yZXF1ZXN0QW5pbUZyYW1lKHRoaXMuX3VwZGF0ZU9uTW92ZSx0aGlzLCEwLHRoaXMuX21hcC5fY29udGFpbmVyKSxvLkRvbUV2ZW50LnByZXZlbnREZWZhdWx0KHQpKX19LF91cGRhdGVPbk1vdmU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXAsZT10aGlzLl9nZXRTY2FsZU9yaWdpbigpLGk9dC5sYXllclBvaW50VG9MYXRMbmcoZSksbj10LmdldFNjYWxlWm9vbSh0aGlzLl9zY2FsZSk7dC5fYW5pbWF0ZVpvb20oaSxuLHRoaXMuX3N0YXJ0Q2VudGVyLHRoaXMuX3NjYWxlLHRoaXMuX2RlbHRhLCExLCEwKX0sX29uVG91Y2hFbmQ6ZnVuY3Rpb24oKXtpZighdGhpcy5fbW92ZWR8fCF0aGlzLl96b29taW5nKXJldHVybiB2b2lkKHRoaXMuX3pvb21pbmc9ITEpO3ZhciB0PXRoaXMuX21hcDt0aGlzLl96b29taW5nPSExLG8uRG9tVXRpbC5yZW1vdmVDbGFzcyh0Ll9tYXBQYW5lLCJsZWFmbGV0LXRvdWNoaW5nIiksby5VdGlsLmNhbmNlbEFuaW1GcmFtZSh0aGlzLl9hbmltUmVxdWVzdCksby5Eb21FdmVudC5vZmYoZSwidG91Y2htb3ZlIix0aGlzLl9vblRvdWNoTW92ZSkub2ZmKGUsInRvdWNoZW5kIix0aGlzLl9vblRvdWNoRW5kKTt2YXIgaT10aGlzLl9nZXRTY2FsZU9yaWdpbigpLG49dC5sYXllclBvaW50VG9MYXRMbmcoaSkscz10LmdldFpvb20oKSxhPXQuZ2V0U2NhbGVab29tKHRoaXMuX3NjYWxlKS1zLHI9YT4wP01hdGguY2VpbChhKTpNYXRoLmZsb29yKGEpLGg9dC5fbGltaXRab29tKHMrciksbD10LmdldFpvb21TY2FsZShoKS90aGlzLl9zY2FsZTt0Ll9hbmltYXRlWm9vbShuLGgsaSxsKX0sX2dldFNjYWxlT3JpZ2luOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fY2VudGVyT2Zmc2V0LnN1YnRyYWN0KHRoaXMuX2RlbHRhKS5kaXZpZGVCeSh0aGlzLl9zY2FsZSk7cmV0dXJuIHRoaXMuX3N0YXJ0Q2VudGVyLmFkZCh0KX19KSxvLk1hcC5hZGRJbml0SG9vaygiYWRkSGFuZGxlciIsInRvdWNoWm9vbSIsby5NYXAuVG91Y2hab29tKSxvLk1hcC5tZXJnZU9wdGlvbnMoe3RhcDohMCx0YXBUb2xlcmFuY2U6MTV9KSxvLk1hcC5UYXA9by5IYW5kbGVyLmV4dGVuZCh7YWRkSG9va3M6ZnVuY3Rpb24oKXtvLkRvbUV2ZW50Lm9uKHRoaXMuX21hcC5fY29udGFpbmVyLCJ0b3VjaHN0YXJ0Iix0aGlzLl9vbkRvd24sdGhpcyl9LHJlbW92ZUhvb2tzOmZ1bmN0aW9uKCl7by5Eb21FdmVudC5vZmYodGhpcy5fbWFwLl9jb250YWluZXIsInRvdWNoc3RhcnQiLHRoaXMuX29uRG93bix0aGlzKX0sX29uRG93bjpmdW5jdGlvbih0KXtpZih0LnRvdWNoZXMpe2lmKG8uRG9tRXZlbnQucHJldmVudERlZmF1bHQodCksdGhpcy5fZmlyZUNsaWNrPSEwLHQudG91Y2hlcy5sZW5ndGg+MSlyZXR1cm4gdGhpcy5fZmlyZUNsaWNrPSExLHZvaWQgY2xlYXJUaW1lb3V0KHRoaXMuX2hvbGRUaW1lb3V0KTt2YXIgaT10LnRvdWNoZXNbMF0sbj1pLnRhcmdldDt0aGlzLl9zdGFydFBvcz10aGlzLl9uZXdQb3M9bmV3IG8uUG9pbnQoaS5jbGllbnRYLGkuY2xpZW50WSksbi50YWdOYW1lJiYiYSI9PT1uLnRhZ05hbWUudG9Mb3dlckNhc2UoKSYmby5Eb21VdGlsLmFkZENsYXNzKG4sImxlYWZsZXQtYWN0aXZlIiksdGhpcy5faG9sZFRpbWVvdXQ9c2V0VGltZW91dChvLmJpbmQoZnVuY3Rpb24oKXt0aGlzLl9pc1RhcFZhbGlkKCkmJih0aGlzLl9maXJlQ2xpY2s9ITEsdGhpcy5fb25VcCgpLHRoaXMuX3NpbXVsYXRlRXZlbnQoImNvbnRleHRtZW51IixpKSl9LHRoaXMpLDFlMyksby5Eb21FdmVudC5vbihlLCJ0b3VjaG1vdmUiLHRoaXMuX29uTW92ZSx0aGlzKS5vbihlLCJ0b3VjaGVuZCIsdGhpcy5fb25VcCx0aGlzKX19LF9vblVwOmZ1bmN0aW9uKHQpe2lmKGNsZWFyVGltZW91dCh0aGlzLl9ob2xkVGltZW91dCksby5Eb21FdmVudC5vZmYoZSwidG91Y2htb3ZlIix0aGlzLl9vbk1vdmUsdGhpcykub2ZmKGUsInRvdWNoZW5kIix0aGlzLl9vblVwLHRoaXMpLHRoaXMuX2ZpcmVDbGljayYmdCYmdC5jaGFuZ2VkVG91Y2hlcyl7dmFyIGk9dC5jaGFuZ2VkVG91Y2hlc1swXSxuPWkudGFyZ2V0O24mJm4udGFnTmFtZSYmImEiPT09bi50YWdOYW1lLnRvTG93ZXJDYXNlKCkmJm8uRG9tVXRpbC5yZW1vdmVDbGFzcyhuLCJsZWFmbGV0LWFjdGl2ZSIpLHRoaXMuX2lzVGFwVmFsaWQoKSYmdGhpcy5fc2ltdWxhdGVFdmVudCgiY2xpY2siLGkpfX0sX2lzVGFwVmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbmV3UG9zLmRpc3RhbmNlVG8odGhpcy5fc3RhcnRQb3MpPD10aGlzLl9tYXAub3B0aW9ucy50YXBUb2xlcmFuY2V9LF9vbk1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dC50b3VjaGVzWzBdO3RoaXMuX25ld1Bvcz1uZXcgby5Qb2ludChlLmNsaWVudFgsZS5jbGllbnRZKX0sX3NpbXVsYXRlRXZlbnQ6ZnVuY3Rpb24oaSxuKXt2YXIgbz1lLmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50cyIpO28uX3NpbXVsYXRlZD0hMCxuLnRhcmdldC5fc2ltdWxhdGVkQ2xpY2s9ITAsby5pbml0TW91c2VFdmVudChpLCEwLCEwLHQsMSxuLnNjcmVlblgsbi5zY3JlZW5ZLG4uY2xpZW50WCxuLmNsaWVudFksITEsITEsITEsITEsMCxudWxsKSxuLnRhcmdldC5kaXNwYXRjaEV2ZW50KG8pfX0pLG8uQnJvd3Nlci50b3VjaCYmIW8uQnJvd3Nlci5wb2ludGVyJiZvLk1hcC5hZGRJbml0SG9vaygiYWRkSGFuZGxlciIsInRhcCIsby5NYXAuVGFwKSxvLk1hcC5tZXJnZU9wdGlvbnMoe2JveFpvb206ITB9KSxvLk1hcC5Cb3hab29tPW8uSGFuZGxlci5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy5fbWFwPXQsdGhpcy5fY29udGFpbmVyPXQuX2NvbnRhaW5lcix0aGlzLl9wYW5lPXQuX3BhbmVzLm92ZXJsYXlQYW5lLHRoaXMuX21vdmVkPSExfSxhZGRIb29rczpmdW5jdGlvbigpe28uRG9tRXZlbnQub24odGhpcy5fY29udGFpbmVyLCJtb3VzZWRvd24iLHRoaXMuX29uTW91c2VEb3duLHRoaXMpfSxyZW1vdmVIb29rczpmdW5jdGlvbigpe28uRG9tRXZlbnQub2ZmKHRoaXMuX2NvbnRhaW5lciwibW91c2Vkb3duIix0aGlzLl9vbk1vdXNlRG93biksdGhpcy5fbW92ZWQ9ITF9LG1vdmVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21vdmVkfSxfb25Nb3VzZURvd246ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX21vdmVkPSExLCF0LnNoaWZ0S2V5fHwxIT09dC53aGljaCYmMSE9PXQuYnV0dG9uPyExOihvLkRvbVV0aWwuZGlzYWJsZVRleHRTZWxlY3Rpb24oKSxvLkRvbVV0aWwuZGlzYWJsZUltYWdlRHJhZygpLHRoaXMuX3N0YXJ0TGF5ZXJQb2ludD10aGlzLl9tYXAubW91c2VFdmVudFRvTGF5ZXJQb2ludCh0KSx2b2lkIG8uRG9tRXZlbnQub24oZSwibW91c2Vtb3ZlIix0aGlzLl9vbk1vdXNlTW92ZSx0aGlzKS5vbihlLCJtb3VzZXVwIix0aGlzLl9vbk1vdXNlVXAsdGhpcykub24oZSwia2V5ZG93biIsdGhpcy5fb25LZXlEb3duLHRoaXMpKX0sX29uTW91c2VNb3ZlOmZ1bmN0aW9uKHQpe3RoaXMuX21vdmVkfHwodGhpcy5fYm94PW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsImxlYWZsZXQtem9vbS1ib3giLHRoaXMuX3BhbmUpLG8uRG9tVXRpbC5zZXRQb3NpdGlvbih0aGlzLl9ib3gsdGhpcy5fc3RhcnRMYXllclBvaW50KSx0aGlzLl9jb250YWluZXIuc3R5bGUuY3Vyc29yPSJjcm9zc2hhaXIiLHRoaXMuX21hcC5maXJlKCJib3h6b29tc3RhcnQiKSk7dmFyIGU9dGhpcy5fc3RhcnRMYXllclBvaW50LGk9dGhpcy5fYm94LG49dGhpcy5fbWFwLm1vdXNlRXZlbnRUb0xheWVyUG9pbnQodCkscz1uLnN1YnRyYWN0KGUpLGE9bmV3IG8uUG9pbnQoTWF0aC5taW4obi54LGUueCksTWF0aC5taW4obi55LGUueSkpO28uRG9tVXRpbC5zZXRQb3NpdGlvbihpLGEpLHRoaXMuX21vdmVkPSEwLGkuc3R5bGUud2lkdGg9TWF0aC5tYXgoMCxNYXRoLmFicyhzLngpLTQpKyJweCIsaS5zdHlsZS5oZWlnaHQ9TWF0aC5tYXgoMCxNYXRoLmFicyhzLnkpLTQpKyJweCJ9LF9maW5pc2g6ZnVuY3Rpb24oKXt0aGlzLl9tb3ZlZCYmKHRoaXMuX3BhbmUucmVtb3ZlQ2hpbGQodGhpcy5fYm94KSx0aGlzLl9jb250YWluZXIuc3R5bGUuY3Vyc29yPSIiKSxvLkRvbVV0aWwuZW5hYmxlVGV4dFNlbGVjdGlvbigpLG8uRG9tVXRpbC5lbmFibGVJbWFnZURyYWcoKSxvLkRvbUV2ZW50Lm9mZihlLCJtb3VzZW1vdmUiLHRoaXMuX29uTW91c2VNb3ZlKS5vZmYoZSwibW91c2V1cCIsdGhpcy5fb25Nb3VzZVVwKS5vZmYoZSwia2V5ZG93biIsdGhpcy5fb25LZXlEb3duKX0sX29uTW91c2VVcDpmdW5jdGlvbih0KXt0aGlzLl9maW5pc2goKTt2YXIgZT10aGlzLl9tYXAsaT1lLm1vdXNlRXZlbnRUb0xheWVyUG9pbnQodCk7aWYoIXRoaXMuX3N0YXJ0TGF5ZXJQb2ludC5lcXVhbHMoaSkpe3ZhciBuPW5ldyBvLkxhdExuZ0JvdW5kcyhlLmxheWVyUG9pbnRUb0xhdExuZyh0aGlzLl9zdGFydExheWVyUG9pbnQpLGUubGF5ZXJQb2ludFRvTGF0TG5nKGkpKTtlLmZpdEJvdW5kcyhuKSxlLmZpcmUoImJveHpvb21lbmQiLHtib3hab29tQm91bmRzOm59KX19LF9vbktleURvd246ZnVuY3Rpb24odCl7Mjc9PT10LmtleUNvZGUmJnRoaXMuX2ZpbmlzaCgpfX0pLG8uTWFwLmFkZEluaXRIb29rKCJhZGRIYW5kbGVyIiwiYm94Wm9vbSIsby5NYXAuQm94Wm9vbSksby5NYXAubWVyZ2VPcHRpb25zKHtrZXlib2FyZDohMCxrZXlib2FyZFBhbk9mZnNldDo4MCxrZXlib2FyZFpvb21PZmZzZXQ6MX0pLG8uTWFwLktleWJvYXJkPW8uSGFuZGxlci5leHRlbmQoe2tleUNvZGVzOntsZWZ0OlszN10scmlnaHQ6WzM5XSxkb3duOls0MF0sdXA6WzM4XSx6b29tSW46WzE4NywxMDcsNjEsMTcxXSx6b29tT3V0OlsxODksMTA5LDE3M119LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy5fbWFwPXQsdGhpcy5fc2V0UGFuT2Zmc2V0KHQub3B0aW9ucy5rZXlib2FyZFBhbk9mZnNldCksdGhpcy5fc2V0Wm9vbU9mZnNldCh0Lm9wdGlvbnMua2V5Ym9hcmRab29tT2Zmc2V0KX0sYWRkSG9va3M6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXAuX2NvbnRhaW5lcjstMT09PXQudGFiSW5kZXgmJih0LnRhYkluZGV4PSIwIiksby5Eb21FdmVudC5vbih0LCJmb2N1cyIsdGhpcy5fb25Gb2N1cyx0aGlzKS5vbih0LCJibHVyIix0aGlzLl9vbkJsdXIsdGhpcykub24odCwibW91c2Vkb3duIix0aGlzLl9vbk1vdXNlRG93bix0aGlzKSx0aGlzLl9tYXAub24oImZvY3VzIix0aGlzLl9hZGRIb29rcyx0aGlzKS5vbigiYmx1ciIsdGhpcy5fcmVtb3ZlSG9va3MsdGhpcyl9LHJlbW92ZUhvb2tzOmZ1bmN0aW9uKCl7dGhpcy5fcmVtb3ZlSG9va3MoKTt2YXIgdD10aGlzLl9tYXAuX2NvbnRhaW5lcjtvLkRvbUV2ZW50Lm9mZih0LCJmb2N1cyIsdGhpcy5fb25Gb2N1cyx0aGlzKS5vZmYodCwiYmx1ciIsdGhpcy5fb25CbHVyLHRoaXMpLm9mZih0LCJtb3VzZWRvd24iLHRoaXMuX29uTW91c2VEb3duLHRoaXMpLHRoaXMuX21hcC5vZmYoImZvY3VzIix0aGlzLl9hZGRIb29rcyx0aGlzKS5vZmYoImJsdXIiLHRoaXMuX3JlbW92ZUhvb2tzLHRoaXMpfSxfb25Nb3VzZURvd246ZnVuY3Rpb24oKXtpZighdGhpcy5fZm9jdXNlZCl7dmFyIGk9ZS5ib2R5LG49ZS5kb2N1bWVudEVsZW1lbnQsbz1pLnNjcm9sbFRvcHx8bi5zY3JvbGxUb3Ascz1pLnNjcm9sbExlZnR8fG4uc2Nyb2xsTGVmdDt0aGlzLl9tYXAuX2NvbnRhaW5lci5mb2N1cygpLHQuc2Nyb2xsVG8ocyxvKX19LF9vbkZvY3VzOmZ1bmN0aW9uKCl7dGhpcy5fZm9jdXNlZD0hMCx0aGlzLl9tYXAuZmlyZSgiZm9jdXMiKX0sX29uQmx1cjpmdW5jdGlvbigpe3RoaXMuX2ZvY3VzZWQ9ITEsdGhpcy5fbWFwLmZpcmUoImJsdXIiKX0sX3NldFBhbk9mZnNldDpmdW5jdGlvbih0KXt2YXIgZSxpLG49dGhpcy5fcGFuS2V5cz17fSxvPXRoaXMua2V5Q29kZXM7Zm9yKGU9MCxpPW8ubGVmdC5sZW5ndGg7aT5lO2UrKyluW28ubGVmdFtlXV09Wy0xKnQsMF07Zm9yKGU9MCxpPW8ucmlnaHQubGVuZ3RoO2k+ZTtlKyspbltvLnJpZ2h0W2VdXT1bdCwwXTtmb3IoZT0wLGk9by5kb3duLmxlbmd0aDtpPmU7ZSsrKW5bby5kb3duW2VdXT1bMCx0XTtmb3IoZT0wLGk9by51cC5sZW5ndGg7aT5lO2UrKyluW28udXBbZV1dPVswLC0xKnRdfSxfc2V0Wm9vbU9mZnNldDpmdW5jdGlvbih0KXt2YXIgZSxpLG49dGhpcy5fem9vbUtleXM9e30sbz10aGlzLmtleUNvZGVzO2ZvcihlPTAsaT1vLnpvb21Jbi5sZW5ndGg7aT5lO2UrKyluW28uem9vbUluW2VdXT10O2ZvcihlPTAsaT1vLnpvb21PdXQubGVuZ3RoO2k+ZTtlKyspbltvLnpvb21PdXRbZV1dPS10fSxfYWRkSG9va3M6ZnVuY3Rpb24oKXtvLkRvbUV2ZW50Lm9uKGUsImtleWRvd24iLHRoaXMuX29uS2V5RG93bix0aGlzKX0sX3JlbW92ZUhvb2tzOmZ1bmN0aW9uKCl7by5Eb21FdmVudC5vZmYoZSwia2V5ZG93biIsdGhpcy5fb25LZXlEb3duLHRoaXMpfSxfb25LZXlEb3duOmZ1bmN0aW9uKHQpe3ZhciBlPXQua2V5Q29kZSxpPXRoaXMuX21hcDtpZihlIGluIHRoaXMuX3BhbktleXMpe2lmKGkuX3BhbkFuaW0mJmkuX3BhbkFuaW0uX2luUHJvZ3Jlc3MpcmV0dXJuO2kucGFuQnkodGhpcy5fcGFuS2V5c1tlXSksaS5vcHRpb25zLm1heEJvdW5kcyYmaS5wYW5JbnNpZGVCb3VuZHMoaS5vcHRpb25zLm1heEJvdW5kcyl9ZWxzZXtpZighKGUgaW4gdGhpcy5fem9vbUtleXMpKXJldHVybjtpLnNldFpvb20oaS5nZXRab29tKCkrdGhpcy5fem9vbUtleXNbZV0pfW8uRG9tRXZlbnQuc3RvcCh0KX19KSxvLk1hcC5hZGRJbml0SG9vaygiYWRkSGFuZGxlciIsImtleWJvYXJkIixvLk1hcC5LZXlib2FyZCksby5IYW5kbGVyLk1hcmtlckRyYWc9by5IYW5kbGVyLmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbih0KXt0aGlzLl9tYXJrZXI9dH0sYWRkSG9va3M6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXJrZXIuX2ljb247dGhpcy5fZHJhZ2dhYmxlfHwodGhpcy5fZHJhZ2dhYmxlPW5ldyBvLkRyYWdnYWJsZSh0LHQpKSx0aGlzLl9kcmFnZ2FibGUub24oImRyYWdzdGFydCIsdGhpcy5fb25EcmFnU3RhcnQsdGhpcykub24oImRyYWciLHRoaXMuX29uRHJhZyx0aGlzKS5vbigiZHJhZ2VuZCIsdGhpcy5fb25EcmFnRW5kLHRoaXMpLHRoaXMuX2RyYWdnYWJsZS5lbmFibGUoKSxvLkRvbVV0aWwuYWRkQ2xhc3ModGhpcy5fbWFya2VyLl9pY29uLCJsZWFmbGV0LW1hcmtlci1kcmFnZ2FibGUiKX0scmVtb3ZlSG9va3M6ZnVuY3Rpb24oKXt0aGlzLl9kcmFnZ2FibGUub2ZmKCJkcmFnc3RhcnQiLHRoaXMuX29uRHJhZ1N0YXJ0LHRoaXMpLm9mZigiZHJhZyIsdGhpcy5fb25EcmFnLHRoaXMpLm9mZigiZHJhZ2VuZCIsdGhpcy5fb25EcmFnRW5kLHRoaXMpLHRoaXMuX2RyYWdnYWJsZS5kaXNhYmxlKCksby5Eb21VdGlsLnJlbW92ZUNsYXNzKHRoaXMuX21hcmtlci5faWNvbiwibGVhZmxldC1tYXJrZXItZHJhZ2dhYmxlIil9LG1vdmVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RyYWdnYWJsZSYmdGhpcy5fZHJhZ2dhYmxlLl9tb3ZlZH0sX29uRHJhZ1N0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbWFya2VyLmNsb3NlUG9wdXAoKS5maXJlKCJtb3Zlc3RhcnQiKS5maXJlKCJkcmFnc3RhcnQiKX0sX29uRHJhZzpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcmtlcixlPXQuX3NoYWRvdyxpPW8uRG9tVXRpbC5nZXRQb3NpdGlvbih0Ll9pY29uKSxuPXQuX21hcC5sYXllclBvaW50VG9MYXRMbmcoaSk7ZSYmby5Eb21VdGlsLnNldFBvc2l0aW9uKGUsaSksdC5fbGF0bG5nPW4sdC5maXJlKCJtb3ZlIix7bGF0bG5nOm59KS5maXJlKCJkcmFnIil9LF9vbkRyYWdFbmQ6ZnVuY3Rpb24odCl7dGhpcy5fbWFya2VyLmZpcmUoIm1vdmVlbmQiKS5maXJlKCJkcmFnZW5kIix0KX19KSxvLkNvbnRyb2w9by5DbGFzcy5leHRlbmQoe29wdGlvbnM6e3Bvc2l0aW9uOiJ0b3ByaWdodCJ9LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7by5zZXRPcHRpb25zKHRoaXMsdCl9LGdldFBvc2l0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5wb3NpdGlvbn0sc2V0UG9zaXRpb246ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbWFwO3JldHVybiBlJiZlLnJlbW92ZUNvbnRyb2wodGhpcyksdGhpcy5vcHRpb25zLnBvc2l0aW9uPXQsZSYmZS5hZGRDb250cm9sKHRoaXMpLHRoaXN9LGdldENvbnRhaW5lcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb250YWluZXJ9LGFkZFRvOmZ1bmN0aW9uKHQpe3RoaXMuX21hcD10O3ZhciBlPXRoaXMuX2NvbnRhaW5lcj10aGlzLm9uQWRkKHQpLGk9dGhpcy5nZXRQb3NpdGlvbigpLG49dC5fY29udHJvbENvcm5lcnNbaV07cmV0dXJuIG8uRG9tVXRpbC5hZGRDbGFzcyhlLCJsZWFmbGV0LWNvbnRyb2wiKSwtMSE9PWkuaW5kZXhPZigiYm90dG9tIik/bi5pbnNlcnRCZWZvcmUoZSxuLmZpcnN0Q2hpbGQpOm4uYXBwZW5kQ2hpbGQoZSksdGhpc30scmVtb3ZlRnJvbTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmdldFBvc2l0aW9uKCksaT10Ll9jb250cm9sQ29ybmVyc1tlXTtyZXR1cm4gaS5yZW1vdmVDaGlsZCh0aGlzLl9jb250YWluZXIpLHRoaXMuX21hcD1udWxsLHRoaXMub25SZW1vdmUmJnRoaXMub25SZW1vdmUodCksdGhpc30sX3JlZm9jdXNPbk1hcDpmdW5jdGlvbigpe3RoaXMuX21hcCYmdGhpcy5fbWFwLmdldENvbnRhaW5lcigpLmZvY3VzKCl9fSksby5jb250cm9sPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgby5Db250cm9sKHQpfSxvLk1hcC5pbmNsdWRlKHthZGRDb250cm9sOmZ1bmN0aW9uKHQpe3JldHVybiB0LmFkZFRvKHRoaXMpLHRoaXN9LHJlbW92ZUNvbnRyb2w6ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVtb3ZlRnJvbSh0aGlzKSx0aGlzfSxfaW5pdENvbnRyb2xQb3M6ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQscyl7dmFyIGE9aSt0KyIgIitpK3M7ZVt0K3NdPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsYSxuKX12YXIgZT10aGlzLl9jb250cm9sQ29ybmVycz17fSxpPSJsZWFmbGV0LSIsbj10aGlzLl9jb250cm9sQ29udGFpbmVyPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsaSsiY29udHJvbC1jb250YWluZXIiLHRoaXMuX2NvbnRhaW5lcik7dCgidG9wIiwibGVmdCIpLHQoInRvcCIsInJpZ2h0IiksdCgiYm90dG9tIiwibGVmdCIpLHQoImJvdHRvbSIsInJpZ2h0Iil9LF9jbGVhckNvbnRyb2xQb3M6ZnVuY3Rpb24oKXt0aGlzLl9jb250YWluZXIucmVtb3ZlQ2hpbGQodGhpcy5fY29udHJvbENvbnRhaW5lcil9fSksby5Db250cm9sLlpvb209by5Db250cm9sLmV4dGVuZCh7b3B0aW9uczp7cG9zaXRpb246InRvcGxlZnQiLHpvb21JblRleHQ6IisiLHpvb21JblRpdGxlOiJab29tIGluIix6b29tT3V0VGV4dDoiLSIsem9vbU91dFRpdGxlOiJab29tIG91dCJ9LG9uQWRkOmZ1bmN0aW9uKHQpe3ZhciBlPSJsZWFmbGV0LWNvbnRyb2wtem9vbSIsaT1vLkRvbVV0aWwuY3JlYXRlKCJkaXYiLGUrIiBsZWFmbGV0LWJhciIpO3JldHVybiB0aGlzLl9tYXA9dCx0aGlzLl96b29tSW5CdXR0b249dGhpcy5fY3JlYXRlQnV0dG9uKHRoaXMub3B0aW9ucy56b29tSW5UZXh0LHRoaXMub3B0aW9ucy56b29tSW5UaXRsZSxlKyItaW4iLGksdGhpcy5fem9vbUluLHRoaXMpLHRoaXMuX3pvb21PdXRCdXR0b249dGhpcy5fY3JlYXRlQnV0dG9uKHRoaXMub3B0aW9ucy56b29tT3V0VGV4dCx0aGlzLm9wdGlvbnMuem9vbU91dFRpdGxlLGUrIi1vdXQiLGksdGhpcy5fem9vbU91dCx0aGlzKSx0aGlzLl91cGRhdGVEaXNhYmxlZCgpLHQub24oInpvb21lbmQgem9vbWxldmVsc2NoYW5nZSIsdGhpcy5fdXBkYXRlRGlzYWJsZWQsdGhpcyksaX0sb25SZW1vdmU6ZnVuY3Rpb24odCl7dC5vZmYoInpvb21lbmQgem9vbWxldmVsc2NoYW5nZSIsdGhpcy5fdXBkYXRlRGlzYWJsZWQsdGhpcyl9LF96b29tSW46ZnVuY3Rpb24odCl7dGhpcy5fbWFwLnpvb21Jbih0LnNoaWZ0S2V5PzM6MSl9LF96b29tT3V0OmZ1bmN0aW9uKHQpe3RoaXMuX21hcC56b29tT3V0KHQuc2hpZnRLZXk/MzoxKX0sX2NyZWF0ZUJ1dHRvbjpmdW5jdGlvbih0LGUsaSxuLHMsYSl7dmFyIHI9by5Eb21VdGlsLmNyZWF0ZSgiYSIsaSxuKTtyLmlubmVySFRNTD10LHIuaHJlZj0iIyIsci50aXRsZT1lO3ZhciBoPW8uRG9tRXZlbnQuc3RvcFByb3BhZ2F0aW9uO3JldHVybiBvLkRvbUV2ZW50Lm9uKHIsImNsaWNrIixoKS5vbihyLCJtb3VzZWRvd24iLGgpLm9uKHIsImRibGNsaWNrIixoKS5vbihyLCJjbGljayIsby5Eb21FdmVudC5wcmV2ZW50RGVmYXVsdCkub24ociwiY2xpY2siLHMsYSkub24ociwiY2xpY2siLHRoaXMuX3JlZm9jdXNPbk1hcCxhKSxyfSxfdXBkYXRlRGlzYWJsZWQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXAsZT0ibGVhZmxldC1kaXNhYmxlZCI7by5Eb21VdGlsLnJlbW92ZUNsYXNzKHRoaXMuX3pvb21JbkJ1dHRvbixlKSxvLkRvbVV0aWwucmVtb3ZlQ2xhc3ModGhpcy5fem9vbU91dEJ1dHRvbixlKSx0Ll96b29tPT09dC5nZXRNaW5ab29tKCkmJm8uRG9tVXRpbC5hZGRDbGFzcyh0aGlzLl96b29tT3V0QnV0dG9uLGUpLHQuX3pvb209PT10LmdldE1heFpvb20oKSYmby5Eb21VdGlsLmFkZENsYXNzKHRoaXMuX3pvb21JbkJ1dHRvbixlKX19KSxvLk1hcC5tZXJnZU9wdGlvbnMoe3pvb21Db250cm9sOiEwfSksby5NYXAuYWRkSW5pdEhvb2soZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuem9vbUNvbnRyb2wmJih0aGlzLnpvb21Db250cm9sPW5ldyBvLkNvbnRyb2wuWm9vbSx0aGlzLmFkZENvbnRyb2wodGhpcy56b29tQ29udHJvbCkpfSksby5jb250cm9sLnpvb209ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBvLkNvbnRyb2wuWm9vbSh0KX0sby5Db250cm9sLkF0dHJpYnV0aW9uPW8uQ29udHJvbC5leHRlbmQoe29wdGlvbnM6e3Bvc2l0aW9uOiJib3R0b21yaWdodCIscHJlZml4Oic8YSBocmVmPSJodHRwOi8vbGVhZmxldGpzLmNvbSIgdGl0bGU9IkEgSlMgbGlicmFyeSBmb3IgaW50ZXJhY3RpdmUgbWFwcyI+TGVhZmxldDwvYT4nfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe28uc2V0T3B0aW9ucyh0aGlzLHQpLHRoaXMuX2F0dHJpYnV0aW9ucz17fX0sb25BZGQ6ZnVuY3Rpb24odCl7dGhpcy5fY29udGFpbmVyPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsImxlYWZsZXQtY29udHJvbC1hdHRyaWJ1dGlvbiIpLG8uRG9tRXZlbnQuZGlzYWJsZUNsaWNrUHJvcGFnYXRpb24odGhpcy5fY29udGFpbmVyKTtmb3IodmFyIGUgaW4gdC5fbGF5ZXJzKXQuX2xheWVyc1tlXS5nZXRBdHRyaWJ1dGlvbiYmdGhpcy5hZGRBdHRyaWJ1dGlvbih0Ll9sYXllcnNbZV0uZ2V0QXR0cmlidXRpb24oKSk7cmV0dXJuIHQub24oImxheWVyYWRkIix0aGlzLl9vbkxheWVyQWRkLHRoaXMpLm9uKCJsYXllcnJlbW92ZSIsdGhpcy5fb25MYXllclJlbW92ZSx0aGlzKSx0aGlzLl91cGRhdGUoKSx0aGlzLl9jb250YWluZXJ9LG9uUmVtb3ZlOmZ1bmN0aW9uKHQpe3Qub2ZmKCJsYXllcmFkZCIsdGhpcy5fb25MYXllckFkZCkub2ZmKCJsYXllcnJlbW92ZSIsdGhpcy5fb25MYXllclJlbW92ZSl9LHNldFByZWZpeDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vcHRpb25zLnByZWZpeD10LHRoaXMuX3VwZGF0ZSgpLHRoaXN9LGFkZEF0dHJpYnV0aW9uOmZ1bmN0aW9uKHQpe3JldHVybiB0Pyh0aGlzLl9hdHRyaWJ1dGlvbnNbdF18fCh0aGlzLl9hdHRyaWJ1dGlvbnNbdF09MCksdGhpcy5fYXR0cmlidXRpb25zW3RdKyssdGhpcy5fdXBkYXRlKCksdGhpcyk6dm9pZCAwfSxyZW1vdmVBdHRyaWJ1dGlvbjpmdW5jdGlvbih0KXtyZXR1cm4gdD8odGhpcy5fYXR0cmlidXRpb25zW3RdJiYodGhpcy5fYXR0cmlidXRpb25zW3RdLS0sdGhpcy5fdXBkYXRlKCkpLHRoaXMpOnZvaWQgMH0sX3VwZGF0ZTpmdW5jdGlvbigpe2lmKHRoaXMuX21hcCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMuX2F0dHJpYnV0aW9ucyl0aGlzLl9hdHRyaWJ1dGlvbnNbZV0mJnQucHVzaChlKTt2YXIgaT1bXTt0aGlzLm9wdGlvbnMucHJlZml4JiZpLnB1c2godGhpcy5vcHRpb25zLnByZWZpeCksdC5sZW5ndGgmJmkucHVzaCh0LmpvaW4oIiwgIikpLHRoaXMuX2NvbnRhaW5lci5pbm5lckhUTUw9aS5qb2luKCIgfCAiKX19LF9vbkxheWVyQWRkOmZ1bmN0aW9uKHQpe3QubGF5ZXIuZ2V0QXR0cmlidXRpb24mJnRoaXMuYWRkQXR0cmlidXRpb24odC5sYXllci5nZXRBdHRyaWJ1dGlvbigpKX0sX29uTGF5ZXJSZW1vdmU6ZnVuY3Rpb24odCl7dC5sYXllci5nZXRBdHRyaWJ1dGlvbiYmdGhpcy5yZW1vdmVBdHRyaWJ1dGlvbih0LmxheWVyLmdldEF0dHJpYnV0aW9uKCkpfX0pLG8uTWFwLm1lcmdlT3B0aW9ucyh7YXR0cmlidXRpb25Db250cm9sOiEwfSksby5NYXAuYWRkSW5pdEhvb2soZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuYXR0cmlidXRpb25Db250cm9sJiYodGhpcy5hdHRyaWJ1dGlvbkNvbnRyb2w9KG5ldyBvLkNvbnRyb2wuQXR0cmlidXRpb24pLmFkZFRvKHRoaXMpKX0pLG8uY29udHJvbC5hdHRyaWJ1dGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IG8uQ29udHJvbC5BdHRyaWJ1dGlvbih0KX0sby5Db250cm9sLlNjYWxlPW8uQ29udHJvbC5leHRlbmQoe29wdGlvbnM6e3Bvc2l0aW9uOiJib3R0b21sZWZ0IixtYXhXaWR0aDoxMDAsbWV0cmljOiEwLGltcGVyaWFsOiEwLHVwZGF0ZVdoZW5JZGxlOiExfSxvbkFkZDpmdW5jdGlvbih0KXt0aGlzLl9tYXA9dDt2YXIgZT0ibGVhZmxldC1jb250cm9sLXNjYWxlIixpPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsZSksbj10aGlzLm9wdGlvbnM7cmV0dXJuIHRoaXMuX2FkZFNjYWxlcyhuLGUsaSksdC5vbihuLnVwZGF0ZVdoZW5JZGxlPyJtb3ZlZW5kIjoibW92ZSIsdGhpcy5fdXBkYXRlLHRoaXMpLHQud2hlblJlYWR5KHRoaXMuX3VwZGF0ZSx0aGlzKSxpfSxvblJlbW92ZTpmdW5jdGlvbih0KXt0Lm9mZih0aGlzLm9wdGlvbnMudXBkYXRlV2hlbklkbGU/Im1vdmVlbmQiOiJtb3ZlIix0aGlzLl91cGRhdGUsdGhpcyl9LF9hZGRTY2FsZXM6ZnVuY3Rpb24odCxlLGkpe3QubWV0cmljJiYodGhpcy5fbVNjYWxlPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsZSsiLWxpbmUiLGkpKSx0LmltcGVyaWFsJiYodGhpcy5faVNjYWxlPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsZSsiLWxpbmUiLGkpKX0sX3VwZGF0ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcC5nZXRCb3VuZHMoKSxlPXQuZ2V0Q2VudGVyKCkubGF0LGk9NjM3ODEzNypNYXRoLlBJKk1hdGguY29zKGUqTWF0aC5QSS8xODApLG49aSoodC5nZXROb3J0aEVhc3QoKS5sbmctdC5nZXRTb3V0aFdlc3QoKS5sbmcpLzE4MCxvPXRoaXMuX21hcC5nZXRTaXplKCkscz10aGlzLm9wdGlvbnMsYT0wO28ueD4wJiYoYT1uKihzLm1heFdpZHRoL28ueCkpLHRoaXMuX3VwZGF0ZVNjYWxlcyhzLGEpfSxfdXBkYXRlU2NhbGVzOmZ1bmN0aW9uKHQsZSl7dC5tZXRyaWMmJmUmJnRoaXMuX3VwZGF0ZU1ldHJpYyhlKSx0LmltcGVyaWFsJiZlJiZ0aGlzLl91cGRhdGVJbXBlcmlhbChlKX0sX3VwZGF0ZU1ldHJpYzpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9nZXRSb3VuZE51bSh0KTt0aGlzLl9tU2NhbGUuc3R5bGUud2lkdGg9dGhpcy5fZ2V0U2NhbGVXaWR0aChlL3QpKyJweCIsdGhpcy5fbVNjYWxlLmlubmVySFRNTD0xZTM+ZT9lKyIgbSI6ZS8xZTMrIiBrbSJ9LF91cGRhdGVJbXBlcmlhbDpmdW5jdGlvbih0KXt2YXIgZSxpLG4sbz0zLjI4MDgzOTkqdCxzPXRoaXMuX2lTY2FsZTtvPjUyODA/KGU9by81MjgwLGk9dGhpcy5fZ2V0Um91bmROdW0oZSkscy5zdHlsZS53aWR0aD10aGlzLl9nZXRTY2FsZVdpZHRoKGkvZSkrInB4IixzLmlubmVySFRNTD1pKyIgbWkiKToobj10aGlzLl9nZXRSb3VuZE51bShvKSxzLnN0eWxlLndpZHRoPXRoaXMuX2dldFNjYWxlV2lkdGgobi9vKSsicHgiLHMuaW5uZXJIVE1MPW4rIiBmdCIpfSxfZ2V0U2NhbGVXaWR0aDpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0aGlzLm9wdGlvbnMubWF4V2lkdGgqdCktMTB9LF9nZXRSb3VuZE51bTpmdW5jdGlvbih0KXt2YXIgZT1NYXRoLnBvdygxMCwoTWF0aC5mbG9vcih0KSsiIikubGVuZ3RoLTEpLGk9dC9lO3JldHVybiBpPWk+PTEwPzEwOmk+PTU/NTppPj0zPzM6aT49Mj8yOjEsZSppfX0pLG8uY29udHJvbC5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IG8uQ29udHJvbC5TY2FsZSh0KX0sby5Db250cm9sLkxheWVycz1vLkNvbnRyb2wuZXh0ZW5kKHtvcHRpb25zOntjb2xsYXBzZWQ6ITAscG9zaXRpb246InRvcHJpZ2h0IixhdXRvWkluZGV4OiEwfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQsZSxpKXtvLnNldE9wdGlvbnModGhpcyxpKSx0aGlzLl9sYXllcnM9e30sdGhpcy5fbGFzdFpJbmRleD0wLHRoaXMuX2hhbmRsaW5nQ2xpY2s9ITE7Zm9yKHZhciBuIGluIHQpdGhpcy5fYWRkTGF5ZXIodFtuXSxuKTtmb3IobiBpbiBlKXRoaXMuX2FkZExheWVyKGVbbl0sbiwhMCl9LG9uQWRkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbml0TGF5b3V0KCksdGhpcy5fdXBkYXRlKCksdC5vbigibGF5ZXJhZGQiLHRoaXMuX29uTGF5ZXJDaGFuZ2UsdGhpcykub24oImxheWVycmVtb3ZlIix0aGlzLl9vbkxheWVyQ2hhbmdlLHRoaXMpLHRoaXMuX2NvbnRhaW5lcn0sb25SZW1vdmU6ZnVuY3Rpb24odCl7dC5vZmYoImxheWVyYWRkIix0aGlzLl9vbkxheWVyQ2hhbmdlLHRoaXMpLm9mZigibGF5ZXJyZW1vdmUiLHRoaXMuX29uTGF5ZXJDaGFuZ2UsdGhpcyl9LGFkZEJhc2VMYXllcjpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9hZGRMYXllcih0LGUpLHRoaXMuX3VwZGF0ZSgpLHRoaXN9LGFkZE92ZXJsYXk6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fYWRkTGF5ZXIodCxlLCEwKSx0aGlzLl91cGRhdGUoKSx0aGlzfSxyZW1vdmVMYXllcjpmdW5jdGlvbih0KXt2YXIgZT1vLnN0YW1wKHQpO3JldHVybiBkZWxldGUgdGhpcy5fbGF5ZXJzW2VdLHRoaXMuX3VwZGF0ZSgpLHRoaXN9LF9pbml0TGF5b3V0OmZ1bmN0aW9uKCl7dmFyIHQ9ImxlYWZsZXQtY29udHJvbC1sYXllcnMiLGU9dGhpcy5fY29udGFpbmVyPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsdCk7ZS5zZXRBdHRyaWJ1dGUoImFyaWEtaGFzcG9wdXAiLCEwKSxvLkJyb3dzZXIudG91Y2g/by5Eb21FdmVudC5vbihlLCJjbGljayIsby5Eb21FdmVudC5zdG9wUHJvcGFnYXRpb24pOm8uRG9tRXZlbnQuZGlzYWJsZUNsaWNrUHJvcGFnYXRpb24oZSkuZGlzYWJsZVNjcm9sbFByb3BhZ2F0aW9uKGUpO3ZhciBpPXRoaXMuX2Zvcm09by5Eb21VdGlsLmNyZWF0ZSgiZm9ybSIsdCsiLWxpc3QiKTtpZih0aGlzLm9wdGlvbnMuY29sbGFwc2VkKXtvLkJyb3dzZXIuYW5kcm9pZHx8by5Eb21FdmVudC5vbihlLCJtb3VzZW92ZXIiLHRoaXMuX2V4cGFuZCx0aGlzKS5vbihlLCJtb3VzZW91dCIsdGhpcy5fY29sbGFwc2UsdGhpcyk7dmFyIG49dGhpcy5fbGF5ZXJzTGluaz1vLkRvbVV0aWwuY3JlYXRlKCJhIix0KyItdG9nZ2xlIixlKTtuLmhyZWY9IiMiLG4udGl0bGU9IkxheWVycyIsby5Ccm93c2VyLnRvdWNoP28uRG9tRXZlbnQub24obiwiY2xpY2siLG8uRG9tRXZlbnQuc3RvcCkub24obiwiY2xpY2siLHRoaXMuX2V4cGFuZCx0aGlzKTpvLkRvbUV2ZW50Lm9uKG4sImZvY3VzIix0aGlzLl9leHBhbmQsdGhpcyksby5Eb21FdmVudC5vbihpLCJjbGljayIsZnVuY3Rpb24oKXtzZXRUaW1lb3V0KG8uYmluZCh0aGlzLl9vbklucHV0Q2xpY2ssdGhpcyksMCl9LHRoaXMpLHRoaXMuX21hcC5vbigiY2xpY2siLHRoaXMuX2NvbGxhcHNlLHRoaXMpfWVsc2UgdGhpcy5fZXhwYW5kKCk7dGhpcy5fYmFzZUxheWVyc0xpc3Q9by5Eb21VdGlsLmNyZWF0ZSgiZGl2Iix0KyItYmFzZSIsaSksdGhpcy5fc2VwYXJhdG9yPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsdCsiLXNlcGFyYXRvciIsaSksdGhpcy5fb3ZlcmxheXNMaXN0PW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsdCsiLW92ZXJsYXlzIixpKSxlLmFwcGVuZENoaWxkKGkpfSxfYWRkTGF5ZXI6ZnVuY3Rpb24odCxlLGkpe3ZhciBuPW8uc3RhbXAodCk7dGhpcy5fbGF5ZXJzW25dPXtsYXllcjp0LG5hbWU6ZSxvdmVybGF5Oml9LHRoaXMub3B0aW9ucy5hdXRvWkluZGV4JiZ0LnNldFpJbmRleCYmKHRoaXMuX2xhc3RaSW5kZXgrKyx0LnNldFpJbmRleCh0aGlzLl9sYXN0WkluZGV4KSl9LF91cGRhdGU6ZnVuY3Rpb24oKXtpZih0aGlzLl9jb250YWluZXIpe3RoaXMuX2Jhc2VMYXllcnNMaXN0LmlubmVySFRNTD0iIix0aGlzLl9vdmVybGF5c0xpc3QuaW5uZXJIVE1MPSIiO3ZhciB0LGUsaT0hMSxuPSExO2Zvcih0IGluIHRoaXMuX2xheWVycyllPXRoaXMuX2xheWVyc1t0XSx0aGlzLl9hZGRJdGVtKGUpLG49bnx8ZS5vdmVybGF5LGk9aXx8IWUub3ZlcmxheTt0aGlzLl9zZXBhcmF0b3Iuc3R5bGUuZGlzcGxheT1uJiZpPyIiOiJub25lIn19LF9vbkxheWVyQ2hhbmdlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2xheWVyc1tvLnN0YW1wKHQubGF5ZXIpXTtpZihlKXt0aGlzLl9oYW5kbGluZ0NsaWNrfHx0aGlzLl91cGRhdGUoKTt2YXIgaT1lLm92ZXJsYXk/ImxheWVyYWRkIj09PXQudHlwZT8ib3ZlcmxheWFkZCI6Im92ZXJsYXlyZW1vdmUiOiJsYXllcmFkZCI9PT10LnR5cGU/ImJhc2VsYXllcmNoYW5nZSI6bnVsbDtpJiZ0aGlzLl9tYXAuZmlyZShpLGUpfX0sX2NyZWF0ZVJhZGlvRWxlbWVudDpmdW5jdGlvbih0LGkpe3ZhciBuPSc8aW5wdXQgdHlwZT0icmFkaW8iIGNsYXNzPSJsZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLXNlbGVjdG9yIiBuYW1lPSInK3QrJyInO2kmJihuKz0nIGNoZWNrZWQ9ImNoZWNrZWQiJyksbis9Ii8+Ijt2YXIgbz1lLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBvLmlubmVySFRNTD1uLG8uZmlyc3RDaGlsZH0sX2FkZEl0ZW06ZnVuY3Rpb24odCl7dmFyIGksbj1lLmNyZWF0ZUVsZW1lbnQoImxhYmVsIikscz10aGlzLl9tYXAuaGFzTGF5ZXIodC5sYXllcik7dC5vdmVybGF5PyhpPWUuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxpLnR5cGU9ImNoZWNrYm94IixpLmNsYXNzTmFtZT0ibGVhZmxldC1jb250cm9sLWxheWVycy1zZWxlY3RvciIsaS5kZWZhdWx0Q2hlY2tlZD1zKTppPXRoaXMuX2NyZWF0ZVJhZGlvRWxlbWVudCgibGVhZmxldC1iYXNlLWxheWVycyIscyksaS5sYXllcklkPW8uc3RhbXAodC5sYXllciksby5Eb21FdmVudC5vbihpLCJjbGljayIsdGhpcy5fb25JbnB1dENsaWNrLHRoaXMpO3ZhciBhPWUuY3JlYXRlRWxlbWVudCgic3BhbiIpO2EuaW5uZXJIVE1MPSIgIit0Lm5hbWUsbi5hcHBlbmRDaGlsZChpKSxuLmFwcGVuZENoaWxkKGEpO3ZhciByPXQub3ZlcmxheT90aGlzLl9vdmVybGF5c0xpc3Q6dGhpcy5fYmFzZUxheWVyc0xpc3Q7cmV0dXJuIHIuYXBwZW5kQ2hpbGQobiksbn0sX29uSW5wdXRDbGljazpmdW5jdGlvbigpe3ZhciB0LGUsaSxuPXRoaXMuX2Zvcm0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0Iiksbz1uLmxlbmd0aDtmb3IodGhpcy5faGFuZGxpbmdDbGljaz0hMCx0PTA7bz50O3QrKyllPW5bdF0saT10aGlzLl9sYXllcnNbZS5sYXllcklkXSxlLmNoZWNrZWQmJiF0aGlzLl9tYXAuaGFzTGF5ZXIoaS5sYXllcik/dGhpcy5fbWFwLmFkZExheWVyKGkubGF5ZXIpOiFlLmNoZWNrZWQmJnRoaXMuX21hcC5oYXNMYXllcihpLmxheWVyKSYmdGhpcy5fbWFwLnJlbW92ZUxheWVyKGkubGF5ZXIpO3RoaXMuX2hhbmRsaW5nQ2xpY2s9ITEsdGhpcy5fcmVmb2N1c09uTWFwKCl9LF9leHBhbmQ6ZnVuY3Rpb24oKXtvLkRvbVV0aWwuYWRkQ2xhc3ModGhpcy5fY29udGFpbmVyLCJsZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLWV4cGFuZGVkIil9LF9jb2xsYXBzZTpmdW5jdGlvbigpe3RoaXMuX2NvbnRhaW5lci5jbGFzc05hbWU9dGhpcy5fY29udGFpbmVyLmNsYXNzTmFtZS5yZXBsYWNlKCIgbGVhZmxldC1jb250cm9sLWxheWVycy1leHBhbmRlZCIsIiIpfX0pLG8uY29udHJvbC5sYXllcnM9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBuZXcgby5Db250cm9sLkxheWVycyh0LGUsaSl9LG8uUG9zQW5pbWF0aW9uPW8uQ2xhc3MuZXh0ZW5kKHtpbmNsdWRlczpvLk1peGluLkV2ZW50cyxydW46ZnVuY3Rpb24odCxlLGksbil7dGhpcy5zdG9wKCksdGhpcy5fZWw9dCx0aGlzLl9pblByb2dyZXNzPSEwLHRoaXMuX25ld1Bvcz1lLHRoaXMuZmlyZSgic3RhcnQiKSx0LnN0eWxlW28uRG9tVXRpbC5UUkFOU0lUSU9OXT0iYWxsICIrKGl8fC4yNSkrInMgY3ViaWMtYmV6aWVyKDAsMCwiKyhufHwuNSkrIiwxKSIsby5Eb21FdmVudC5vbih0LG8uRG9tVXRpbC5UUkFOU0lUSU9OX0VORCx0aGlzLl9vblRyYW5zaXRpb25FbmQsdGhpcyksby5Eb21VdGlsLnNldFBvc2l0aW9uKHQsZSksby5VdGlsLmZhbHNlRm4odC5vZmZzZXRXaWR0aCksdGhpcy5fc3RlcFRpbWVyPXNldEludGVydmFsKG8uYmluZCh0aGlzLl9vblN0ZXAsdGhpcyksNTApfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5faW5Qcm9ncmVzcyYmKG8uRG9tVXRpbC5zZXRQb3NpdGlvbih0aGlzLl9lbCx0aGlzLl9nZXRQb3MoKSksdGhpcy5fb25UcmFuc2l0aW9uRW5kKCksby5VdGlsLmZhbHNlRm4odGhpcy5fZWwub2Zmc2V0V2lkdGgpKX0sX29uU3RlcDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2dldFBvcygpO3JldHVybiB0Pyh0aGlzLl9lbC5fbGVhZmxldF9wb3M9dCx2b2lkIHRoaXMuZmlyZSgic3RlcCIpKTp2b2lkIHRoaXMuX29uVHJhbnNpdGlvbkVuZCgpfSxfdHJhbnNmb3JtUmU6LyhbLStdPyg/OlxkKlwuKT9cZCspXEQqLCAoWy0rXT8oPzpcZCpcLik/XGQrKVxEKlwpLyxfZ2V0UG9zOmZ1bmN0aW9uKCl7dmFyIGUsaSxuLHM9dGhpcy5fZWwsYT10LmdldENvbXB1dGVkU3R5bGUocyk7aWYoby5Ccm93c2VyLmFueTNkKXtpZihuPWFbby5Eb21VdGlsLlRSQU5TRk9STV0ubWF0Y2godGhpcy5fdHJhbnNmb3JtUmUpLCFuKXJldHVybjtlPXBhcnNlRmxvYXQoblsxXSksaT1wYXJzZUZsb2F0KG5bMl0pfWVsc2UgZT1wYXJzZUZsb2F0KGEubGVmdCksaT1wYXJzZUZsb2F0KGEudG9wKTtyZXR1cm4gbmV3IG8uUG9pbnQoZSxpLCEwKX0sX29uVHJhbnNpdGlvbkVuZDpmdW5jdGlvbigpe28uRG9tRXZlbnQub2ZmKHRoaXMuX2VsLG8uRG9tVXRpbC5UUkFOU0lUSU9OX0VORCx0aGlzLl9vblRyYW5zaXRpb25FbmQsdGhpcyksdGhpcy5faW5Qcm9ncmVzcyYmKHRoaXMuX2luUHJvZ3Jlc3M9ITEsdGhpcy5fZWwuc3R5bGVbby5Eb21VdGlsLlRSQU5TSVRJT05dPSIiLHRoaXMuX2VsLl9sZWFmbGV0X3Bvcz10aGlzLl9uZXdQb3MsY2xlYXJJbnRlcnZhbCh0aGlzLl9zdGVwVGltZXIpLHRoaXMuZmlyZSgic3RlcCIpLmZpcmUoImVuZCIpKX19KSxvLk1hcC5pbmNsdWRlKHtzZXRWaWV3OmZ1bmN0aW9uKHQsZSxuKXtpZihlPWU9PT1pP3RoaXMuX3pvb206dGhpcy5fbGltaXRab29tKGUpLHQ9dGhpcy5fbGltaXRDZW50ZXIoby5sYXRMbmcodCksZSx0aGlzLm9wdGlvbnMubWF4Qm91bmRzKSxuPW58fHt9LHRoaXMuX3BhbkFuaW0mJnRoaXMuX3BhbkFuaW0uc3RvcCgpLHRoaXMuX2xvYWRlZCYmIW4ucmVzZXQmJm4hPT0hMCl7bi5hbmltYXRlIT09aSYmKG4uem9vbT1vLmV4dGVuZCh7YW5pbWF0ZTpuLmFuaW1hdGV9LG4uem9vbSksbi5wYW49by5leHRlbmQoe2FuaW1hdGU6bi5hbmltYXRlfSxuLnBhbikpO3ZhciBzPXRoaXMuX3pvb20hPT1lP3RoaXMuX3RyeUFuaW1hdGVkWm9vbSYmdGhpcy5fdHJ5QW5pbWF0ZWRab29tKHQsZSxuLnpvb20pOnRoaXMuX3RyeUFuaW1hdGVkUGFuKHQsbi5wYW4pO2lmKHMpcmV0dXJuIGNsZWFyVGltZW91dCh0aGlzLl9zaXplVGltZXIpLHRoaXN9cmV0dXJuIHRoaXMuX3Jlc2V0Vmlldyh0LGUpLHRoaXN9LHBhbkJ5OmZ1bmN0aW9uKHQsZSl7aWYodD1vLnBvaW50KHQpLnJvdW5kKCksZT1lfHx7fSwhdC54JiYhdC55KXJldHVybiB0aGlzO2lmKHRoaXMuX3BhbkFuaW18fCh0aGlzLl9wYW5BbmltPW5ldyBvLlBvc0FuaW1hdGlvbix0aGlzLl9wYW5BbmltLm9uKHtzdGVwOnRoaXMuX29uUGFuVHJhbnNpdGlvblN0ZXAsZW5kOnRoaXMuX29uUGFuVHJhbnNpdGlvbkVuZH0sdGhpcykpLGUubm9Nb3ZlU3RhcnR8fHRoaXMuZmlyZSgibW92ZXN0YXJ0IiksZS5hbmltYXRlIT09ITEpe28uRG9tVXRpbC5hZGRDbGFzcyh0aGlzLl9tYXBQYW5lLCJsZWFmbGV0LXBhbi1hbmltIik7dmFyIGk9dGhpcy5fZ2V0TWFwUGFuZVBvcygpLnN1YnRyYWN0KHQpO3RoaXMuX3BhbkFuaW0ucnVuKHRoaXMuX21hcFBhbmUsaSxlLmR1cmF0aW9ufHwuMjUsZS5lYXNlTGluZWFyaXR5KX1lbHNlIHRoaXMuX3Jhd1BhbkJ5KHQpLHRoaXMuZmlyZSgibW92ZSIpLmZpcmUoIm1vdmVlbmQiKTtyZXR1cm4gdGhpc30sX29uUGFuVHJhbnNpdGlvblN0ZXA6ZnVuY3Rpb24oKXt0aGlzLmZpcmUoIm1vdmUiKX0sX29uUGFuVHJhbnNpdGlvbkVuZDpmdW5jdGlvbigpe28uRG9tVXRpbC5yZW1vdmVDbGFzcyh0aGlzLl9tYXBQYW5lLCJsZWFmbGV0LXBhbi1hbmltIiksdGhpcy5maXJlKCJtb3ZlZW5kIil9LF90cnlBbmltYXRlZFBhbjpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuX2dldENlbnRlck9mZnNldCh0KS5fZmxvb3IoKTtyZXR1cm4oZSYmZS5hbmltYXRlKT09PSEwfHx0aGlzLmdldFNpemUoKS5jb250YWlucyhpKT8odGhpcy5wYW5CeShpLGUpLCEwKTohMX19KSxvLlBvc0FuaW1hdGlvbj1vLkRvbVV0aWwuVFJBTlNJVElPTj9vLlBvc0FuaW1hdGlvbjpvLlBvc0FuaW1hdGlvbi5leHRlbmQoe3J1bjpmdW5jdGlvbih0LGUsaSxuKXt0aGlzLnN0b3AoKSx0aGlzLl9lbD10LHRoaXMuX2luUHJvZ3Jlc3M9ITAsdGhpcy5fZHVyYXRpb249aXx8LjI1LHRoaXMuX2Vhc2VPdXRQb3dlcj0xL01hdGgubWF4KG58fC41LC4yKSx0aGlzLl9zdGFydFBvcz1vLkRvbVV0aWwuZ2V0UG9zaXRpb24odCksdGhpcy5fb2Zmc2V0PWUuc3VidHJhY3QodGhpcy5fc3RhcnRQb3MpLHRoaXMuX3N0YXJ0VGltZT0rbmV3IERhdGUsdGhpcy5maXJlKCJzdGFydCIpLHRoaXMuX2FuaW1hdGUoKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuX2luUHJvZ3Jlc3MmJih0aGlzLl9zdGVwKCksdGhpcy5fY29tcGxldGUoKSl9LF9hbmltYXRlOmZ1bmN0aW9uKCl7dGhpcy5fYW5pbUlkPW8uVXRpbC5yZXF1ZXN0QW5pbUZyYW1lKHRoaXMuX2FuaW1hdGUsdGhpcyksdGhpcy5fc3RlcCgpfSxfc3RlcDpmdW5jdGlvbigpe3ZhciB0PStuZXcgRGF0ZS10aGlzLl9zdGFydFRpbWUsZT0xZTMqdGhpcy5fZHVyYXRpb247ZT50P3RoaXMuX3J1bkZyYW1lKHRoaXMuX2Vhc2VPdXQodC9lKSk6KHRoaXMuX3J1bkZyYW1lKDEpLHRoaXMuX2NvbXBsZXRlKCkpfSxfcnVuRnJhbWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fc3RhcnRQb3MuYWRkKHRoaXMuX29mZnNldC5tdWx0aXBseUJ5KHQpKTtvLkRvbVV0aWwuc2V0UG9zaXRpb24odGhpcy5fZWwsZSksdGhpcy5maXJlKCJzdGVwIil9LF9jb21wbGV0ZTpmdW5jdGlvbigpe28uVXRpbC5jYW5jZWxBbmltRnJhbWUodGhpcy5fYW5pbUlkKSx0aGlzLl9pblByb2dyZXNzPSExLHRoaXMuZmlyZSgiZW5kIil9LF9lYXNlT3V0OmZ1bmN0aW9uKHQpe3JldHVybiAxLU1hdGgucG93KDEtdCx0aGlzLl9lYXNlT3V0UG93ZXIpfX0pLG8uTWFwLm1lcmdlT3B0aW9ucyh7em9vbUFuaW1hdGlvbjohMCx6b29tQW5pbWF0aW9uVGhyZXNob2xkOjR9KSxvLkRvbVV0aWwuVFJBTlNJVElPTiYmby5NYXAuYWRkSW5pdEhvb2soZnVuY3Rpb24oKXt0aGlzLl96b29tQW5pbWF0ZWQ9dGhpcy5vcHRpb25zLnpvb21BbmltYXRpb24mJm8uRG9tVXRpbC5UUkFOU0lUSU9OJiZvLkJyb3dzZXIuYW55M2QmJiFvLkJyb3dzZXIuYW5kcm9pZDIzJiYhby5Ccm93c2VyLm1vYmlsZU9wZXJhLHRoaXMuX3pvb21BbmltYXRlZCYmby5Eb21FdmVudC5vbih0aGlzLl9tYXBQYW5lLG8uRG9tVXRpbC5UUkFOU0lUSU9OX0VORCx0aGlzLl9jYXRjaFRyYW5zaXRpb25FbmQsdGhpcyl9KSxvLk1hcC5pbmNsdWRlKG8uRG9tVXRpbC5UUkFOU0lUSU9OP3tfY2F0Y2hUcmFuc2l0aW9uRW5kOmZ1bmN0aW9uKHQpe3RoaXMuX2FuaW1hdGluZ1pvb20mJnQucHJvcGVydHlOYW1lLmluZGV4T2YoInRyYW5zZm9ybSIpPj0wJiZ0aGlzLl9vblpvb21UcmFuc2l0aW9uRW5kKCl9LF9ub3RoaW5nVG9BbmltYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuX2NvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJsZWFmbGV0LXpvb20tYW5pbWF0ZWQiKS5sZW5ndGh9LF90cnlBbmltYXRlZFpvb206ZnVuY3Rpb24odCxlLGkpe2lmKHRoaXMuX2FuaW1hdGluZ1pvb20pcmV0dXJuITA7aWYoaT1pfHx7fSwhdGhpcy5fem9vbUFuaW1hdGVkfHxpLmFuaW1hdGU9PT0hMXx8dGhpcy5fbm90aGluZ1RvQW5pbWF0ZSgpfHxNYXRoLmFicyhlLXRoaXMuX3pvb20pPnRoaXMub3B0aW9ucy56b29tQW5pbWF0aW9uVGhyZXNob2xkKXJldHVybiExO3ZhciBuPXRoaXMuZ2V0Wm9vbVNjYWxlKGUpLG89dGhpcy5fZ2V0Q2VudGVyT2Zmc2V0KHQpLl9kaXZpZGVCeSgxLTEvbikscz10aGlzLl9nZXRDZW50ZXJMYXllclBvaW50KCkuX2FkZChvKTtyZXR1cm4gaS5hbmltYXRlPT09ITB8fHRoaXMuZ2V0U2l6ZSgpLmNvbnRhaW5zKG8pPyh0aGlzLmZpcmUoIm1vdmVzdGFydCIpLmZpcmUoInpvb21zdGFydCIpLHRoaXMuX2FuaW1hdGVab29tKHQsZSxzLG4sbnVsbCwhMCksITApOiExfSxfYW5pbWF0ZVpvb206ZnVuY3Rpb24odCxlLGksbixzLGEscil7cnx8KHRoaXMuX2FuaW1hdGluZ1pvb209ITApLG8uRG9tVXRpbC5hZGRDbGFzcyh0aGlzLl9tYXBQYW5lLCJsZWFmbGV0LXpvb20tYW5pbSIpLHRoaXMuX2FuaW1hdGVUb0NlbnRlcj10LHRoaXMuX2FuaW1hdGVUb1pvb209ZSxvLkRyYWdnYWJsZSYmKG8uRHJhZ2dhYmxlLl9kaXNhYmxlZD0hMCksby5VdGlsLnJlcXVlc3RBbmltRnJhbWUoZnVuY3Rpb24oKXt0aGlzLmZpcmUoInpvb21hbmltIix7Y2VudGVyOnQsem9vbTplLG9yaWdpbjppLHNjYWxlOm4sZGVsdGE6cyxiYWNrd2FyZHM6YX0pfSx0aGlzKX0sX29uWm9vbVRyYW5zaXRpb25FbmQ6ZnVuY3Rpb24oKXt0aGlzLl9hbmltYXRpbmdab29tPSExLG8uRG9tVXRpbC5yZW1vdmVDbGFzcyh0aGlzLl9tYXBQYW5lLCJsZWFmbGV0LXpvb20tYW5pbSIpLHRoaXMuX3Jlc2V0Vmlldyh0aGlzLl9hbmltYXRlVG9DZW50ZXIsdGhpcy5fYW5pbWF0ZVRvWm9vbSwhMCwhMCksby5EcmFnZ2FibGUmJihvLkRyYWdnYWJsZS5fZGlzYWJsZWQ9ITEpfX06e30pLG8uVGlsZUxheWVyLmluY2x1ZGUoe19hbmltYXRlWm9vbTpmdW5jdGlvbih0KXt0aGlzLl9hbmltYXRpbmd8fCh0aGlzLl9hbmltYXRpbmc9ITAsdGhpcy5fcHJlcGFyZUJnQnVmZmVyKCkpO3ZhciBlPXRoaXMuX2JnQnVmZmVyLGk9by5Eb21VdGlsLlRSQU5TRk9STSxuPXQuZGVsdGE/by5Eb21VdGlsLmdldFRyYW5zbGF0ZVN0cmluZyh0LmRlbHRhKTplLnN0eWxlW2ldLHM9by5Eb21VdGlsLmdldFNjYWxlU3RyaW5nKHQuc2NhbGUsdC5vcmlnaW4pO2Uuc3R5bGVbaV09dC5iYWNrd2FyZHM/cysiICIrbjpuKyIgIitzfSxfZW5kWm9vbUFuaW06ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl90aWxlQ29udGFpbmVyLGU9dGhpcy5fYmdCdWZmZXI7dC5zdHlsZS52aXNpYmlsaXR5PSIiLHQucGFyZW50Tm9kZS5hcHBlbmRDaGlsZCh0KSxvLlV0aWwuZmFsc2VGbihlLm9mZnNldFdpZHRoKSx0aGlzLl9hbmltYXRpbmc9ITF9LF9jbGVhckJnQnVmZmVyOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbWFwOyF0fHx0Ll9hbmltYXRpbmdab29tfHx0LnRvdWNoWm9vbS5fem9vbWluZ3x8KHRoaXMuX2JnQnVmZmVyLmlubmVySFRNTD0iIix0aGlzLl9iZ0J1ZmZlci5zdHlsZVtvLkRvbVV0aWwuVFJBTlNGT1JNXT0iIil9LF9wcmVwYXJlQmdCdWZmZXI6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl90aWxlQ29udGFpbmVyLGU9dGhpcy5fYmdCdWZmZXIsaT10aGlzLl9nZXRMb2FkZWRUaWxlc1BlcmNlbnRhZ2UoZSksbj10aGlzLl9nZXRMb2FkZWRUaWxlc1BlcmNlbnRhZ2UodCk7cmV0dXJuIGUmJmk+LjUmJi41Pm4/KHQuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIix2b2lkIHRoaXMuX3N0b3BMb2FkaW5nSW1hZ2VzKHQpKTooZS5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLGUuc3R5bGVbby5Eb21VdGlsLlRSQU5TRk9STV09IiIsdGhpcy5fdGlsZUNvbnRhaW5lcj1lLGU9dGhpcy5fYmdCdWZmZXI9dCx0aGlzLl9zdG9wTG9hZGluZ0ltYWdlcyhlKSx2b2lkIGNsZWFyVGltZW91dCh0aGlzLl9jbGVhckJnQnVmZmVyVGltZXIpKX0sX2dldExvYWRlZFRpbGVzUGVyY2VudGFnZTpmdW5jdGlvbih0KXt2YXIgZSxpLG49dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW1nIiksbz0wO2ZvcihlPTAsaT1uLmxlbmd0aDtpPmU7ZSsrKW5bZV0uY29tcGxldGUmJm8rKztyZXR1cm4gby9pfSxfc3RvcExvYWRpbmdJbWFnZXM6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW1nIikpO2ZvcihlPTAsaT1zLmxlbmd0aDtpPmU7ZSsrKW49c1tlXSxuLmNvbXBsZXRlfHwobi5vbmxvYWQ9by5VdGlsLmZhbHNlRm4sbi5vbmVycm9yPW8uVXRpbC5mYWxzZUZuLG4uc3JjPW8uVXRpbC5lbXB0eUltYWdlVXJsLG4ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuKSl9fSksby5NYXAuaW5jbHVkZSh7X2RlZmF1bHRMb2NhdGVPcHRpb25zOnt3YXRjaDohMSxzZXRWaWV3OiExLG1heFpvb206MS8wLHRpbWVvdXQ6MWU0LG1heGltdW1BZ2U6MCxlbmFibGVIaWdoQWNjdXJhY3k6ITF9LGxvY2F0ZTpmdW5jdGlvbih0KXtpZih0PXRoaXMuX2xvY2F0ZU9wdGlvbnM9by5leHRlbmQodGhpcy5fZGVmYXVsdExvY2F0ZU9wdGlvbnMsdCksIW5hdmlnYXRvci5nZW9sb2NhdGlvbilyZXR1cm4gdGhpcy5faGFuZGxlR2VvbG9jYXRpb25FcnJvcih7Y29kZTowLG1lc3NhZ2U6Ikdlb2xvY2F0aW9uIG5vdCBzdXBwb3J0ZWQuIn0pLHRoaXM7dmFyIGU9by5iaW5kKHRoaXMuX2hhbmRsZUdlb2xvY2F0aW9uUmVzcG9uc2UsdGhpcyksaT1vLmJpbmQodGhpcy5faGFuZGxlR2VvbG9jYXRpb25FcnJvcix0aGlzKTtyZXR1cm4gdC53YXRjaD90aGlzLl9sb2NhdGlvbldhdGNoSWQ9bmF2aWdhdG9yLmdlb2xvY2F0aW9uLndhdGNoUG9zaXRpb24oZSxpLHQpOm5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZSxpLHQpLHRoaXN9LHN0b3BMb2NhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gbmF2aWdhdG9yLmdlb2xvY2F0aW9uJiZuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uY2xlYXJXYXRjaCh0aGlzLl9sb2NhdGlvbldhdGNoSWQpLHRoaXMuX2xvY2F0ZU9wdGlvbnMmJih0aGlzLl9sb2NhdGVPcHRpb25zLnNldFZpZXc9ITEpLHRoaXN9LF9oYW5kbGVHZW9sb2NhdGlvbkVycm9yOmZ1bmN0aW9uKHQpe3ZhciBlPXQuY29kZSxpPXQubWVzc2FnZXx8KDE9PT1lPyJwZXJtaXNzaW9uIGRlbmllZCI6Mj09PWU/InBvc2l0aW9uIHVuYXZhaWxhYmxlIjoidGltZW91dCIpO3RoaXMuX2xvY2F0ZU9wdGlvbnMuc2V0VmlldyYmIXRoaXMuX2xvYWRlZCYmdGhpcy5maXRXb3JsZCgpLHRoaXMuZmlyZSgibG9jYXRpb25lcnJvciIse2NvZGU6ZSxtZXNzYWdlOiJHZW9sb2NhdGlvbiBlcnJvcjogIitpKyIuIn0pfSxfaGFuZGxlR2VvbG9jYXRpb25SZXNwb25zZTpmdW5jdGlvbih0KXt2YXIgZT10LmNvb3Jkcy5sYXRpdHVkZSxpPXQuY29vcmRzLmxvbmdpdHVkZSxuPW5ldyBvLkxhdExuZyhlLGkpLHM9MTgwKnQuY29vcmRzLmFjY3VyYWN5LzQwMDc1MDE3LGE9cy9NYXRoLmNvcyhvLkxhdExuZy5ERUdfVE9fUkFEKmUpLHI9by5sYXRMbmdCb3VuZHMoW2UtcyxpLWFdLFtlK3MsaSthXSksaD10aGlzLl9sb2NhdGVPcHRpb25zO2lmKGguc2V0Vmlldyl7dmFyIGw9TWF0aC5taW4odGhpcy5nZXRCb3VuZHNab29tKHIpLGgubWF4Wm9vbSk7dGhpcy5zZXRWaWV3KG4sbCl9dmFyIHU9e2xhdGxuZzpuLGJvdW5kczpyLHRpbWVzdGFtcDp0LnRpbWVzdGFtcH07Zm9yKHZhciBjIGluIHQuY29vcmRzKSJudW1iZXIiPT10eXBlb2YgdC5jb29yZHNbY10mJih1W2NdPXQuY29vcmRzW2NdKTt0aGlzLmZpcmUoImxvY2F0aW9uZm91bmQiLHUpfX0pfSh3aW5kb3csZG9jdW1lbnQpOw=="></script> | |
| <link href="data:text/css;charset=utf-8,%0Aimg%2Eleaflet%2Dtile%20%7B%0Apadding%3A%200%3B%0Amargin%3A%200%3B%0Aborder%2Dradius%3A%200%3B%0Aborder%3A%20none%3B%0A%7D%0A%2Einfo%20%7B%0Apadding%3A%206px%208px%3B%0Afont%3A%2014px%2F16px%20Arial%2C%20Helvetica%2C%20sans%2Dserif%3B%0Abackground%3A%20white%3B%0Abackground%3A%20rgba%28255%2C255%2C255%2C0%2E8%29%3B%0Abox%2Dshadow%3A%200%200%2015px%20rgba%280%2C0%2C0%2C0%2E2%29%3B%0Aborder%2Dradius%3A%205px%3B%0A%7D%0A%2Elegend%20%7B%0Aline%2Dheight%3A%2018px%3B%0Acolor%3A%20%23555%3B%0A%7D%0A%2Elegend%20svg%20text%20%7B%0Afill%3A%20%23555%3B%0A%7D%0A%2Elegend%20svg%20line%20%7B%0Astroke%3A%20%23555%3B%0A%7D%0A%2Elegend%20i%20%7B%0Awidth%3A%2018px%3B%0Aheight%3A%2018px%3B%0Afloat%3A%20left%3B%0Amargin%2Dright%3A%208px%3B%0Aopacity%3A%200%2E7%3B%0A%7D%0A" rel="stylesheet" /> | |
| <script src="data:application/x-javascript;base64,ZnVuY3Rpb24gcmVjeWNsZSh2YWx1ZXMsIGxlbmd0aCwgaW5QbGFjZSkgewogIGlmIChsZW5ndGggPT09IDAgJiYgIWluUGxhY2UpCiAgICByZXR1cm4gW107CgogIGlmICghKHZhbHVlcyBpbnN0YW5jZW9mIEFycmF5KSkgewogICAgaWYgKGluUGxhY2UpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJDYW4ndCBkbyBpbi1wbGFjZSByZWN5Y2xpbmcgb2YgYSBub24tQXJyYXkgdmFsdWUiKTsKICAgIH0KICAgIHZhbHVlcyA9IFt2YWx1ZXNdOwogIH0KICBpZiAodHlwZW9mKGxlbmd0aCkgPT09ICd1bmRlZmluZWQnKQogICAgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aDsKCiAgdmFyIGRlc3QgPSBpblBsYWNlID8gdmFsdWVzIDogW107CiAgdmFyIG9yaWdMZW5ndGggPSB2YWx1ZXMubGVuZ3RoOwogIHdoaWxlIChkZXN0Lmxlbmd0aCA8IGxlbmd0aCkgewogICAgZGVzdC5wdXNoKHZhbHVlc1tkZXN0Lmxlbmd0aCAlIG9yaWdMZW5ndGhdKTsKICB9CiAgaWYgKGRlc3QubGVuZ3RoID4gbGVuZ3RoKSB7CiAgICBkZXN0LnNwbGljZShsZW5ndGgsIGRlc3QubGVuZ3RoIC0gbGVuZ3RoKTsKICB9CiAgcmV0dXJuIGRlc3Q7Cn0KCmZ1bmN0aW9uIGFzQXJyYXkodmFsdWUpIHsKICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkKICAgIHJldHVybiB2YWx1ZTsKICBlbHNlCiAgICByZXR1cm4gW3ZhbHVlXTsKfQoKdmFyIGRhdGFmcmFtZSA9IChmdW5jdGlvbigpIHsKICB2YXIgZXhwb3J0cyA9IHt9OwoKICB2YXIgRGF0YUZyYW1lID0gZnVuY3Rpb24oKSB7CiAgICB0aGlzLmNvbHVtbnMgPSBbXTsKICAgIHRoaXMuY29sbmFtZXMgPSBbXTsKICAgIHRoaXMuY29sc3RyaWN0ID0gW107CgogICAgdGhpcy5lZmZlY3RpdmVMZW5ndGggPSAwOwogICAgdGhpcy5jb2xpbmRpY2VzID0ge307CiAgfTsKCiAgRGF0YUZyYW1lLnByb3RvdHlwZS5fdXBkYXRlQ2FjaGVkUHJvcGVydGllcyA9IGZ1bmN0aW9uKCkgewogICAgdmFyIHNlbGYgPSB0aGlzOwogICAgdGhpcy5lZmZlY3RpdmVMZW5ndGggPSAwOwogICAgdGhpcy5jb2xpbmRpY2VzID0ge307CgogICAgJC5lYWNoKHRoaXMuY29sdW1ucywgZnVuY3Rpb24oaSwgY29sdW1uKSB7CiAgICAgIHNlbGYuZWZmZWN0aXZlTGVuZ3RoID0gTWF0aC5tYXgoc2VsZi5lZmZlY3RpdmVMZW5ndGgsIGNvbHVtbi5sZW5ndGgpOwogICAgICBzZWxmLmNvbGluZGljZXNbc2VsZi5jb2xuYW1lc1tpXV0gPSBpOwogICAgfSk7CiAgfTsKCiAgRGF0YUZyYW1lLnByb3RvdHlwZS5fY29sSW5kZXggPSBmdW5jdGlvbihjb2xuYW1lKSB7CiAgICB2YXIgaW5kZXggPSB0aGlzLmNvbGluZGljZXNbY29sbmFtZV07CiAgICBpZiAodHlwZW9mKGluZGV4KSA9PT0gJ3VuZGVmaW5lZCcpCiAgICAgIHJldHVybiAtMTsKICAgIHJldHVybiBpbmRleDsKICB9OwoKICBEYXRhRnJhbWUucHJvdG90eXBlLmNvbCA9IGZ1bmN0aW9uKG5hbWUsIHZhbHVlcywgc3RyaWN0KSB7CiAgICBpZiAodHlwZW9mKG5hbWUpICE9PSAnc3RyaW5nJykKICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNvbHVtbiBuYW1lICInICsgbmFtZSArICciJyk7CgogICAgdmFyIGluZGV4ID0gdGhpcy5fY29sSW5kZXgobmFtZSk7CgogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHsKICAgICAgaWYgKGluZGV4IDwgMCkKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgZWxzZQogICAgICAgIHJldHVybiByZWN5Y2xlKHRoaXMuY29sdW1uc1tpbmRleF0sIHRoaXMuZWZmZWN0aXZlTGVuZ3RoKTsKICAgIH0KCiAgICBpZiAoaW5kZXggPCAwKSB7CiAgICAgIGluZGV4ID0gdGhpcy5jb2xuYW1lcy5sZW5ndGg7CiAgICAgIHRoaXMuY29sbmFtZXMucHVzaChuYW1lKTsKICAgIH0KICAgIHRoaXMuY29sdW1uc1tpbmRleF0gPSBhc0FycmF5KHZhbHVlcyk7CiAgICB0aGlzLmNvbHN0cmljdFtpbmRleF0gPSAhIXN0cmljdDsKCiAgICAvLyBUT0RPOiBWYWxpZGF0ZSBzdHJpY3RuZXNzIChlbnN1cmUgbGVuZ3RocyBtYXRjaCB1cCB3aXRoIG90aGVyIHN0cmljdHMpCgogICAgdGhpcy5fdXBkYXRlQ2FjaGVkUHJvcGVydGllcygpOwoKICAgIHJldHVybiB0aGlzOwogIH07CgogIERhdGFGcmFtZS5wcm90b3R5cGUuY2JpbmQgPSBmdW5jdGlvbihvYmosIHN0cmljdCkgewogICAgdmFyIHNlbGYgPSB0aGlzLCBuYW1lOwogICAgJC5lYWNoKG9iaiwgZnVuY3Rpb24obmFtZSwgY29sZGF0YSkgewogICAgICBzZWxmLmNvbChuYW1lLCBjb2xkYXRhKTsKICAgIH0pOwogICAgcmV0dXJuIHRoaXM7CiAgfTsKCiAgRGF0YUZyYW1lLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihyb3csIGNvbCkgewogICAgdmFyIHNlbGYgPSB0aGlzOwoKICAgIGlmIChyb3cgPiB0aGlzLmVmZmVjdGl2ZUxlbmd0aCkKICAgICAgdGhyb3cgbmV3IEVycm9yKCdSb3cgYXJndW1lbnQgd2FzIG91dCBvZiBib3VuZHM6ICcgKyByb3cgKyAnID4gJyArIHRoaXMuZWZmZWN0aXZlTGVuZ3RoKTsKCiAgICB2YXIgY29sSW5kZXggPSAtMTsKICAgIGlmICh0eXBlb2YoY29sKSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgdmFyIHJvd0RhdGEgPSB7fTsKICAgICAgJC5lYWNoKHRoaXMuY29sbmFtZXMsIGZ1bmN0aW9uKGksIG5hbWUpIHsKICAgICAgICByb3dEYXRhW25hbWVdID0gc2VsZi5jb2x1bW5zW2ldW3JvdyAlIHNlbGYuY29sdW1uc1tpXS5sZW5ndGhdOwogICAgICB9KTsKICAgICAgcmV0dXJuIHJvd0RhdGE7CiAgICB9IGVsc2UgaWYgKHR5cGVvZihjb2wpID09PSAnc3RyaW5nJykgewogICAgICBjb2xJbmRleCA9IHRoaXMuX2NvbEluZGV4KGNvbCk7CiAgICB9IGVsc2UgaWYgKHR5cGVvZihjb2wpID09PSAnbnVtYmVyJykgewogICAgICBjb2xJbmRleCA9IGNvbDsKICAgIH0KICAgIGlmIChjb2xJbmRleCA8IDAgfHwgY29sSW5kZXggPiB0aGlzLmNvbHVtbnMubGVuZ3RoKQogICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gY29sdW1uIGluZGV4OiAnICsgY29sKTsKCiAgICByZXR1cm4gdGhpcy5jb2x1bW5zW2NvbEluZGV4XVtyb3cgJSB0aGlzLmNvbHVtbnNbY29sSW5kZXhdLmxlbmd0aF07CiAgfTsKCiAgRGF0YUZyYW1lLnByb3RvdHlwZS5ucm93ID0gZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5lZmZlY3RpdmVMZW5ndGg7CiAgfTsKCiAgZnVuY3Rpb24gdGVzdCgpIHsKICAgIHZhciBkZiA9IG5ldyBEYXRhRnJhbWUoKTsKICAgIGRmLmNvbCgic3BlZWQiLCBbNCwgNCwgNywgNywgOCwgOSwgMTAsIDEwLCAxMCwgMTEsIDExLCAxMiwgMTIsIDEyLCAxMiwgMTMsIDEzLCAxMywgMTMsIDE0LCAxNCwgMTQsIDE0LCAxNSwgMTUsIDE1LCAxNiwgMTYsIDE3LCAxNywgMTcsIDE4LCAxOCwgMTgsIDE4LCAxOSwgMTksIDE5LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIyLCAyMywgMjQsIDI0LCAyNCwgMjQsIDI1XSkKICAgICAgLmNvbCgiZGlzdCIsIFsyLCAxMCwgNCwgMjIsIDE2LCAxMCwgMTgsIDI2LCAzNCwgMTcsIDI4LCAxNCwgMjAsIDI0LCAyOCwgMjYsIDM0LCAzNCwgNDYsIDI2LCAzNiwgNjAsIDgwLCAyMCwgMjYsIDU0LCAzMiwgNDAsIDMyLCA0MCwgNTAsIDQyLCA1NiwgNzYsIDg0LCAzNiwgNDYsIDY4LCAzMiwgNDgsIDUyLCA1NiwgNjQsIDY2LCA1NCwgNzAsIDkyLCA5MywgMTIwLCA4NV0pCiAgICAgIC5jb2woImNvbG9yIiwgWyJ5ZWxsb3ciLCAicmVkIl0pCiAgICAgIC5jYmluZCh7CiAgICAgICAgIk1ha2UiIDogWyJUb3lvdGEiLCAiQ2FkaWxsYWMiLCAiQk1XIl0sCiAgICAgICAgIk1vZGVsIiA6IFsiQ29yb2xsYSIsICJDVFMiLCAiNDM1aSJdCiAgICAgIH0pCiAgICA7CiAgICBjb25zb2xlLmxvZyhkZi5nZXQoOSwgInNwZWVkIikpOwogICAgY29uc29sZS5sb2coZGYuZ2V0KDksICJkaXN0IikpOwogICAgY29uc29sZS5sb2coZGYuZ2V0KDksICJjb2xvciIpKTsKICAgIGNvbnNvbGUubG9nKGRmLmdldCg5LCAiTWFrZSIpKTsKICAgIGNvbnNvbGUubG9nKGRmLmdldCg5LCAiTW9kZWwiKSk7CiAgICBjb25zb2xlLmxvZyhkZi5nZXQoOSkpOwoKICB9CgogIHJldHVybiB7CiAgICBjcmVhdGU6IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gbmV3IERhdGFGcmFtZSgpOwogICAgfQogIH07Cgp9KSgpOwoKKGZ1bmN0aW9uKCkgewogIC8vIFRoaXMgY2xhc3Mgc2ltdWxhdGVzIGEgbWlwbWFwLCB3aGljaCBzaHJpbmtzIGltYWdlcyBieSBwb3dlcnMgb2YgdHdvLiBUaGlzCiAgLy8gc3RlcHdpc2UgcmVkdWN0aW9uIHJlc3VsdHMgaW4gInBpeGVsLXBlcmZlY3QgZG93bnNjYWxpbmciICh3aGVyZSBldmVyeQogIC8vIHBpeGVsIG9mIHRoZSBvcmlnaW5hbCBpbWFnZSBoYXMgc29tZSBjb250cmlidXRpb24gdG8gdGhlIGRvd25zY2FsZWQgaW1hZ2UpCiAgLy8gYXMgb3Bwb3NlZCB0byBhIHNpbmdsZS1zdGVwIGRvd25zY2FsaW5nIHdoaWNoIHdpbGwgZGlzY2FyZCBhIGxvdCBvZiBkYXRhCiAgLy8gKGFuZCB3aXRoIHNwYXJzZSBpbWFnZXMgYXQgc21hbGwgc2NhbGVzIGNhbiBnaXZlIHZlcnkgc3VycHJpc2luZyByZXN1bHRzKS4KICBmdW5jdGlvbiBNaXBtYXBwZXIoaW1nKSB7CiAgICB0aGlzLl9sYXllcnMgPSBbaW1nXTsKICB9CiAgLy8gVGhlIHZhcmlvdXMgZnVuY3Rpb25zIG9uIHRoaXMgY2xhc3MgdGFrZSBhIGNhbGxiYWNrIGZ1bmN0aW9uIEJVVCBNQVkgT1IgTUFZCiAgLy8gTk9UIGFjdHVhbGx5IGJlaGF2ZSBhc3luY2hyb25vdXNseS4KICBNaXBtYXBwZXIucHJvdG90eXBlLmdldEJ5U2l6ZSA9IGZ1bmN0aW9uKGRlc2lyZWRXaWR0aCwgZGVzaXJlZEhlaWdodCwgY2FsbGJhY2spIHsKICAgIHZhciBzZWxmID0gdGhpczsKICAgIHZhciBpID0gMDsKICAgIHZhciBsYXN0SW1nID0gdGhpcy5fbGF5ZXJzWzBdOwogICAgZnVuY3Rpb24gdGVzdE5leHQoKSB7CiAgICAgIHNlbGYuZ2V0QnlJbmRleChpLCBmdW5jdGlvbihpbWcpIHsKICAgICAgICAvLyBJZiBjdXJyZW50IGltYWdlIGlzIGludmFsaWQgKGkuZS4gdG9vIHNtYWxsIHRvIGJlIHJlbmRlcmVkKSBvcgogICAgICAgIC8vIGl0J3Mgc21hbGxlciB0aGFuIHdoYXQgd2Ugd2FudGVkLCByZXR1cm4gdGhlIGxhc3Qga25vd24gZ29vZCBpbWFnZS4KICAgICAgICBpZiAoIWltZyB8fCBpbWcud2lkdGggPCBkZXNpcmVkV2lkdGggfHwgaW1nLmhlaWdodCA8IGRlc2lyZWRIZWlnaHQpIHsKICAgICAgICAgIGNhbGxiYWNrKGxhc3RJbWcpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBsYXN0SW1nID0gaW1nOwogICAgICAgICAgaSsrOwogICAgICAgICAgdGVzdE5leHQoKTsKICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgIH0pOwogICAgfQogICAgdGVzdE5leHQoKTsKICB9OwogIE1pcG1hcHBlci5wcm90b3R5cGUuZ2V0QnlJbmRleCA9IGZ1bmN0aW9uKGksIGNhbGxiYWNrKSB7CiAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICBpZiAodGhpcy5fbGF5ZXJzW2ldKSB7CiAgICAgIGNhbGxiYWNrKHRoaXMuX2xheWVyc1tpXSk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB0aGlzLmdldEJ5SW5kZXgoaS0xLCBmdW5jdGlvbihwcmV2SW1nKSB7CiAgICAgIGlmICghcHJldkltZykgewogICAgICAgIC8vIHByZXZJbWcgY291bGQgbm90IGJlIGNhbGN1bGF0ZWQgKHRvbyBzbWFsbCwgcG9zc2libHkpCiAgICAgICAgY2FsbGJhY2sobnVsbCk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGlmIChwcmV2SW1nLndpZHRoIDwgMiB8fCBwcmV2SW1nLmhlaWdodCA8IDIpIHsKICAgICAgICAvLyBDYW4ndCByZWR1Y2UgdGhpcyBpbWFnZSBhbnkgZnVydGhlcgogICAgICAgIGNhbGxiYWNrKG51bGwpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICAvLyBJZiByZWR1Y2UgZXZlciBiZWNvbWVzIHRydWx5IGFzeW5jaHJvbm91cywgd2Ugc2hvdWxkIHN0dWZmIGEgcHJvbWlzZSBvcgogICAgICAvLyBzb21ldGhpbmcgaW50byBzZWxmLl9sYXllcnNbaV0gYmVmb3JlIGNhbGxpbmcgc2VsZi5yZWR1Y2UoKSwgdG8gcHJldmVudAogICAgICAvLyByZWR1bmRhbnQgcmVkdWNlIG9wZXJhdGlvbnMgZnJvbSBoYXBwZW5pbmcuCiAgICAgIHNlbGYucmVkdWNlKHByZXZJbWcsIGZ1bmN0aW9uKHJlZHVjZWRJbWcpIHsKICAgICAgICBzZWxmLl9sYXllcnNbaV0gPSByZWR1Y2VkSW1nOwogICAgICAgIGNhbGxiYWNrKHJlZHVjZWRJbWcpOwogICAgICAgIHJldHVybjsKICAgICAgfSk7CiAgICB9KTsKICB9OwogIE1pcG1hcHBlci5wcm90b3R5cGUucmVkdWNlID0gZnVuY3Rpb24oaW1nLCBjYWxsYmFjaykgewogICAgICB2YXIgaW1nRGF0YUNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwogICAgICBpbWdEYXRhQ2FudmFzLndpZHRoID0gTWF0aC5jZWlsKGltZy53aWR0aCAvIDIpOwogICAgICBpbWdEYXRhQ2FudmFzLmhlaWdodCA9IE1hdGguY2VpbChpbWcuaGVpZ2h0IC8gMik7CiAgICAgIGltZ0RhdGFDYW52YXMuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWdEYXRhQ2FudmFzKTsKICAgICAgdHJ5IHsKICAgICAgICB2YXIgaW1nRGF0YUN0eCA9IGltZ0RhdGFDYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgICBpbWdEYXRhQ3R4LmRyYXdJbWFnZShpbWcsIDAsIDAsIGltZy53aWR0aC8yLCBpbWcuaGVpZ2h0LzIpOwogICAgICAgIGNhbGxiYWNrKGltZ0RhdGFDYW52YXMpOwogICAgICB9IGZpbmFsbHkgewogICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoaW1nRGF0YUNhbnZhcyk7CiAgICAgIH0KCiAgfTsKCiAgZnVuY3Rpb24gTGF5ZXJNYW5hZ2VyKG1hcCkgewogICAgdGhpcy5fbWFwID0gbWFwOwoKICAgIC8vIEJFR0lOIGxheWVyIGluZGljZXMKCiAgICAvLyB7PGdyb3VwbmFtZT46IHs8c3RhbXA+OiBsYXllcn19CiAgICB0aGlzLl9ieUdyb3VwID0ge307CiAgICAvLyB7PGNhdGVnb3J5TmFtZT46IHs8c3RhbXA+OiBsYXllcn19CiAgICB0aGlzLl9ieUNhdGVnb3J5ID0ge307CiAgICAvLyB7PGNhdGVnb3J5TmFtZV9sYXllcklkPjogbGF5ZXJ9CiAgICB0aGlzLl9ieUxheWVySWQgPSB7fTsKICAgIC8vIHs8c3RhbXA+OiB7CiAgICAvLyAgICAgICAgICAgICAiZ3JvdXAiOiA8Z3JvdXBuYW1lPiwKICAgIC8vICAgICAgICAgICAgICJsYXllcklkIjogPGxheWVySWQ+LAogICAgLy8gICAgICAgICAgICAgImNhdGVnb3J5IjogPGNhdGVnb3J5PiwKICAgIC8vICAgICAgICAgICAgICJjb250YWluZXIiOiA8Y29udGFpbmVyPgogICAgLy8gICAgICAgICAgIH0KICAgIC8vIH0KICAgIHRoaXMuX2J5U3RhbXAgPSB7fTsKCiAgICAvLyBFTkQgbGF5ZXIgaW5kaWNlcwoKICAgIC8vIHs8Y2F0ZWdvcnlOYW1lPjogTC5sYXllckdyb3VwfQogICAgdGhpcy5fY2F0ZWdvcnlDb250YWluZXJzID0ge307CiAgICAvLyB7PGdyb3VwTmFtZT46IEwubGF5ZXJHcm91cH0KICAgIHRoaXMuX2dyb3VwQ29udGFpbmVycyA9IHt9OwogIH0KICBMYXllck1hbmFnZXIucHJvdG90eXBlLmFkZExheWVyID0gZnVuY3Rpb24obGF5ZXIsIGNhdGVnb3J5LCBsYXllcklkLCBncm91cCkgewogICAgLy8gV2FzIGEgZ3JvdXAgcHJvdmlkZWQ/CiAgICB2YXIgaGFzSWQgPSB0eXBlb2YobGF5ZXJJZCkgPT09ICJzdHJpbmciOwogICAgdmFyIGdyb3VwZWQgPSB0eXBlb2YoZ3JvdXApID09PSAic3RyaW5nIjsKCiAgICB2YXIgc3RhbXAgPSBMLlV0aWwuc3RhbXAobGF5ZXIpOwoKICAgIC8vIFRoaXMgd2lsbCBiZSB0aGUgZGVmYXVsdCBsYXllciBncm91cCB0byBhZGQgdGhlIGxheWVyIHRvLgogICAgLy8gV2UgbWF5IG92ZXJ3cml0ZSB0aGlzIHZhciBiZWZvcmUgdXNpbmcgaXQgKGkuZS4gaWYgYSBncm91cCBpcyBhc3NpZ25lZCkuCiAgICAvLyBUaGlzIG9uZSBsaW5lciBjcmVhdGVzIHRoZSBfY2F0ZWdvcnlDb250YWluZXJzW2NhdGVnb3J5XSBlbnRyeSBpZiBpdAogICAgLy8gZG9lc24ndCBhbHJlYWR5IGV4aXN0LgogICAgdmFyIGNvbnRhaW5lciA9IHRoaXMuX2NhdGVnb3J5Q29udGFpbmVyc1tjYXRlZ29yeV0gPQogICAgICAgIHRoaXMuX2NhdGVnb3J5Q29udGFpbmVyc1tjYXRlZ29yeV0gfHwgTC5sYXllckdyb3VwKCkuYWRkVG8odGhpcy5fbWFwKTsKCiAgICB2YXIgb2xkTGF5ZXIgPSBudWxsOwogICAgaWYgKGhhc0lkKSB7CiAgICAgIC8vIEZpcnN0LCByZW1vdmUgYW55IGxheWVyIHdpdGggdGhlIHNhbWUgY2F0ZWdvcnkgYW5kIGxheWVySWQKICAgICAgdmFyIHByZWZpeGVkTGF5ZXJJZCA9IHRoaXMuX2xheWVySWRLZXkoY2F0ZWdvcnksIGxheWVySWQpOwogICAgICBvbGRMYXllciA9IHRoaXMuX2J5TGF5ZXJJZFtwcmVmaXhlZExheWVySWRdOwogICAgICBpZiAob2xkTGF5ZXIpIHsKICAgICAgICB0aGlzLl9yZW1vdmVMYXllcihvbGRMYXllcik7CiAgICAgIH0KCiAgICAgIC8vIFVwZGF0ZSBsYXllcklkIGluZGV4CiAgICAgIHRoaXMuX2J5TGF5ZXJJZFtwcmVmaXhlZExheWVySWRdID0gbGF5ZXI7CiAgICB9CgogICAgLy8gVXBkYXRlIGdyb3VwIGluZGV4CiAgICBpZiAoZ3JvdXBlZCkgewogICAgICB0aGlzLl9ieUdyb3VwW2dyb3VwXSA9IHRoaXMuX2J5R3JvdXBbZ3JvdXBdIHx8IHt9OwogICAgICB0aGlzLl9ieUdyb3VwW2dyb3VwXVtzdGFtcF0gPSBsYXllcjsKCiAgICAgIC8vIFNpbmNlIGEgZ3JvdXAgaXMgYXNzaWduZWQsIGRvbid0IGFkZCB0aGUgbGF5ZXIgdG8gdGhlIGNhdGVnb3J5J3MgbGF5ZXIKICAgICAgLy8gZ3JvdXA7IGluc3RlYWQsIHVzZSB0aGUgZ3JvdXAncyBsYXllciBncm91cC4KICAgICAgLy8gVGhpcyBvbmUgbGluZXIgY3JlYXRlcyB0aGUgX2dyb3VwQ29udGFpbmVyc1tncm91cF0gZW50cnkgaWYgaXQgZG9lc24ndAogICAgICAvLyBhbHJlYWR5IGV4aXN0LgogICAgICBjb250YWluZXIgPSB0aGlzLmdldExheWVyR3JvdXAoZ3JvdXAsIHRydWUpOwogICAgfQoKICAgIC8vIFVwZGF0ZSBjYXRlZ29yeSBpbmRleAogICAgdGhpcy5fYnlDYXRlZ29yeVtjYXRlZ29yeV0gPSB0aGlzLl9ieUNhdGVnb3J5W2NhdGVnb3J5XSB8fCB7fTsKICAgIHRoaXMuX2J5Q2F0ZWdvcnlbY2F0ZWdvcnldW3N0YW1wXSA9IGxheWVyOwoKICAgIC8vIFVwZGF0ZSBzdGFtcCBpbmRleAogICAgdGhpcy5fYnlTdGFtcFtzdGFtcF0gPSB7CiAgICAgIGxheWVyOiBsYXllciwKICAgICAgZ3JvdXA6IGdyb3VwLAogICAgICBsYXllcklkOiBsYXllcklkLAogICAgICBjYXRlZ29yeTogY2F0ZWdvcnksCiAgICAgIGNvbnRhaW5lcjogY29udGFpbmVyCiAgICB9OwoKICAgIC8vIEFkZCB0byBjb250YWluZXIKICAgIGNvbnRhaW5lci5hZGRMYXllcihsYXllcik7CgogICAgcmV0dXJuIG9sZExheWVyOwogIH07CiAgTGF5ZXJNYW5hZ2VyLnByb3RvdHlwZS5nZXRMYXllciA9IGZ1bmN0aW9uKGNhdGVnb3J5LCBsYXllcklkKSB7CiAgICByZXR1cm4gdGhpcy5fYnlMYXllcklkW3RoaXMuX2xheWVySWRLZXkoY2F0ZWdvcnksIGxheWVySWQpXTsKICB9OwogIExheWVyTWFuYWdlci5wcm90b3R5cGUucmVtb3ZlTGF5ZXIgPSBmdW5jdGlvbihjYXRlZ29yeSwgbGF5ZXJJZCkgewogICAgLy8gRmluZCBsYXllciBpbmZvCiAgICB2YXIgbGF5ZXIgPSB0aGlzLl9ieUxheWVySWRbdGhpcy5fbGF5ZXJJZEtleShjYXRlZ29yeSwgbGF5ZXJJZCldOwogICAgaWYgKCFsYXllcikgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICB0aGlzLl9yZW1vdmVMYXllcihsYXllcik7CiAgICByZXR1cm4gdHJ1ZTsKICB9OwogIExheWVyTWFuYWdlci5wcm90b3R5cGUuY2xlYXJMYXllcnMgPSBmdW5jdGlvbihjYXRlZ29yeSkgewogICAgdmFyIHNlbGYgPSB0aGlzOwoKICAgIC8vIEZpbmQgYWxsIGxheWVycyBpbiBfYnlDYXRlZ29yeVtjYXRlZ29yeV0KICAgIHZhciBjYXRUYWJsZSA9IHRoaXMuX2J5Q2F0ZWdvcnlbY2F0ZWdvcnldOwogICAgaWYgKCFjYXRUYWJsZSkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8gUmVtb3ZlIGFsbCBsYXllcnMuIE1ha2UgY29weSBvZiBrZXlzIHRvIGF2b2lkIG11dGF0aW5nIHRoZSBjb2xsZWN0aW9uCiAgICAvLyBiZWhpbmQgdGhlIGl0ZXJhdG9yIHlvdSdyZSBhY2Nlc3NpbmcuCiAgICB2YXIgc3RhbXBzID0gW107CiAgICAkLmVhY2goY2F0VGFibGUsIGZ1bmN0aW9uKGssIHYpIHsKICAgICAgc3RhbXBzLnB1c2goayk7CiAgICB9KTsKICAgICQuZWFjaChzdGFtcHMsIGZ1bmN0aW9uKGksIHN0YW1wKSB7CiAgICAgIHNlbGYuX3JlbW92ZUxheWVyKHN0YW1wKTsKICAgIH0pOwogIH07CiAgTGF5ZXJNYW5hZ2VyLnByb3RvdHlwZS5nZXRMYXllckdyb3VwID0gZnVuY3Rpb24oZ3JvdXAsIGVuc3VyZUV4aXN0cykgewogICAgdmFyIGcgPSB0aGlzLl9ncm91cENvbnRhaW5lcnNbZ3JvdXBdOwogICAgaWYgKGVuc3VyZUV4aXN0cyAmJiAhZykgewogICAgICB0aGlzLl9ieUdyb3VwW2dyb3VwXSA9IHRoaXMuX2J5R3JvdXBbZ3JvdXBdIHx8IHt9OwogICAgICBnID0gdGhpcy5fZ3JvdXBDb250YWluZXJzW2dyb3VwXSA9IEwubGF5ZXJHcm91cCgpOwogICAgICBnLmdyb3VwbmFtZSA9IGdyb3VwOwogICAgICBnLmFkZFRvKHRoaXMuX21hcCk7CiAgICB9CiAgICByZXR1cm4gZzsKICB9OwogIExheWVyTWFuYWdlci5wcm90b3R5cGUuZ2V0R3JvdXBOYW1lRnJvbUxheWVyR3JvdXAgPSBmdW5jdGlvbihsYXllckdyb3VwKSB7CiAgICByZXR1cm4gbGF5ZXJHcm91cC5ncm91cG5hbWU7CiAgfTsKICBMYXllck1hbmFnZXIucHJvdG90eXBlLmdldFZpc2libGVHcm91cHMgPSBmdW5jdGlvbigpIHsKICAgIHZhciBzZWxmID0gdGhpczsKICAgIHZhciByZXN1bHQgPSBbXTsKICAgICQuZWFjaCh0aGlzLl9ncm91cENvbnRhaW5lcnMsIGZ1bmN0aW9uKGssIHYpIHsKICAgICAgaWYgKHNlbGYuX21hcC5oYXNMYXllcih2KSkgewogICAgICAgIHJlc3VsdC5wdXNoKGspOwogICAgICB9CiAgICB9KTsKICAgIHJldHVybiByZXN1bHQ7CiAgfTsKICBMYXllck1hbmFnZXIucHJvdG90eXBlLmNsZWFyR3JvdXAgPSBmdW5jdGlvbihncm91cCkgewogICAgdmFyIHNlbGYgPSB0aGlzOwoKICAgIC8vIEZpbmQgYWxsIGxheWVycyBpbiBfYnlHcm91cFtncm91cF0KICAgIHZhciBncm91cFRhYmxlID0gdGhpcy5fYnlHcm91cFtncm91cF07CiAgICBpZiAoIWdyb3VwVGFibGUpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vIFJlbW92ZSBhbGwgbGF5ZXJzLiBNYWtlIGNvcHkgb2Yga2V5cyB0byBhdm9pZCBtdXRhdGluZyB0aGUgY29sbGVjdGlvbgogICAgLy8gYmVoaW5kIHRoZSBpdGVyYXRvciB5b3UncmUgYWNjZXNzaW5nLgogICAgdmFyIHN0YW1wcyA9IFtdOwogICAgJC5lYWNoKGdyb3VwVGFibGUsIGZ1bmN0aW9uKGssIHYpIHsKICAgICAgc3RhbXBzLnB1c2goayk7CiAgICB9KTsKICAgICQuZWFjaChzdGFtcHMsIGZ1bmN0aW9uKGksIHN0YW1wKSB7CiAgICAgIHNlbGYuX3JlbW92ZUxheWVyKHN0YW1wKTsKICAgIH0pOwogIH07CiAgTGF5ZXJNYW5hZ2VyLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkgewogICAgZnVuY3Rpb24gY2xlYXJMYXllckdyb3VwKGtleSwgbGF5ZXJHcm91cCkgewogICAgICBsYXllckdyb3VwLmNsZWFyTGF5ZXJzKCk7CiAgICB9CiAgICAvLyBDbGVhciBhbGwgaW5kaWNlcyBhbmQgbGF5ZXJHcm91cHMKICAgIHRoaXMuX2J5R3JvdXAgPSB7fTsKICAgIHRoaXMuX2J5Q2F0ZWdvcnkgPSB7fTsKICAgIHRoaXMuX2J5TGF5ZXJJZCA9IHt9OwogICAgdGhpcy5fYnlTdGFtcCA9IHt9OwogICAgJC5lYWNoKHRoaXMuX2NhdGVnb3J5Q29udGFpbmVycywgY2xlYXJMYXllckdyb3VwKTsKICAgIHRoaXMuX2NhdGVnb3J5Q29udGFpbmVycyA9IHt9OwogICAgJC5lYWNoKHRoaXMuX2dyb3VwQ29udGFpbmVycywgY2xlYXJMYXllckdyb3VwKTsKICAgIHRoaXMuX2dyb3VwQ29udGFpbmVycyA9IHt9OwogIH07CiAgTGF5ZXJNYW5hZ2VyLnByb3RvdHlwZS5fcmVtb3ZlTGF5ZXIgPSBmdW5jdGlvbihsYXllcikgewogICAgdmFyIHN0YW1wOwogICAgaWYgKHR5cGVvZihsYXllcikgPT09ICJzdHJpbmciKSB7CiAgICAgIHN0YW1wID0gbGF5ZXI7CiAgICB9IGVsc2UgewogICAgICBzdGFtcCA9IEwuVXRpbC5zdGFtcChsYXllcik7CiAgICB9CgogICAgdmFyIGxheWVySW5mbyA9IHRoaXMuX2J5U3RhbXBbc3RhbXBdOwogICAgaWYgKCFsYXllckluZm8pIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIGxheWVySW5mby5jb250YWluZXIucmVtb3ZlTGF5ZXIoc3RhbXApOwogICAgaWYgKHR5cGVvZihsYXllckluZm8uZ3JvdXApID09PSAic3RyaW5nIikgewogICAgICBkZWxldGUgdGhpcy5fYnlHcm91cFtsYXllckluZm8uZ3JvdXBdW3N0YW1wXTsKICAgIH0KICAgIGlmICh0eXBlb2YobGF5ZXJJbmZvLmxheWVySWQpID09PSAic3RyaW5nIikgewogICAgICBkZWxldGUgdGhpcy5fYnlMYXllcklkW3RoaXMuX2xheWVySWRLZXkobGF5ZXJJbmZvLmNhdGVnb3J5LCBsYXllckluZm8ubGF5ZXJJZCldOwogICAgfQogICAgZGVsZXRlIHRoaXMuX2J5Q2F0ZWdvcnlbbGF5ZXJJbmZvLmNhdGVnb3J5XVtzdGFtcF07CiAgICBkZWxldGUgdGhpcy5fYnlTdGFtcFtzdGFtcF07CiAgfTsKICBMYXllck1hbmFnZXIucHJvdG90eXBlLl9sYXllcklkS2V5ID0gZnVuY3Rpb24oY2F0ZWdvcnksIGxheWVySWQpIHsKICAgIHJldHVybiBjYXRlZ29yeSArICJcbiIgKyBsYXllcklkOwogIH07CgogIGZ1bmN0aW9uIENvbnRyb2xTdG9yZShtYXApIHsKICAgIHRoaXMuX2NvbnRyb2xzTm9JZCA9IFtdOwogICAgdGhpcy5fY29udHJvbHNCeUlkID0ge307CiAgICB0aGlzLl9tYXAgPSBtYXAKICB9CgogIENvbnRyb2xTdG9yZS5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24oY29udHJvbCwgaWQsIGh0bWwpIHsKICAgIGlmICh0eXBlb2YoaWQpICE9PSAndW5kZWZpbmVkJyAmJiBpZCAhPT0gbnVsbCkgewogICAgICBpZiAodGhpcy5fY29udHJvbHNCeUlkW2lkXSkgewogICAgICAgIHRoaXMuX21hcC5yZW1vdmVDb250cm9sKHRoaXMuX2NvbnRyb2xzQnlJZFtpZF0pOwogICAgICB9CiAgICAgIHRoaXMuX2NvbnRyb2xzQnlJZFtpZF0gPSBjb250cm9sOwogICAgfSBlbHNlIHsKICAgICAgdGhpcy5fY29udHJvbHNOb0lkLnB1c2goY29udHJvbCkKICAgIH0KICAgIHRoaXMuX21hcC5hZGRDb250cm9sKGNvbnRyb2wpOwogIH07CgogIENvbnRyb2xTdG9yZS5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24oaWQpIHsKICAgIGlmICh0aGlzLl9jb250cm9sc0J5SWRbaWRdKSB7CiAgICAgIHZhciBjb250cm9sID0gdGhpcy5fY29udHJvbHNCeUlkW2lkXTsKICAgICAgdGhpcy5fbWFwLnJlbW92ZUNvbnRyb2woY29udHJvbCk7CiAgICAgIGRlbGV0ZSB0aGlzLl9jb250cm9sc0J5SWRbaWRdOwogICAgfQogIH07CgogIENvbnRyb2xTdG9yZS5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbigpIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fY29udHJvbHNOb0lkLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBjb250cm9sID0gdGhpcy5fY29udHJvbHNOb0lkW2ldOwogICAgICB0aGlzLl9tYXAucmVtb3ZlQ29udHJvbChjb250cm9sKTsKICAgIH07CiAgICB0aGlzLl9jb250cm9sc05vSWQgPSBbXTsKCiAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5fY29udHJvbHNCeUlkKSB7CiAgICAgIHZhciBjb250cm9sID0gdGhpcy5fY29udHJvbHNCeUlkW2tleV07CiAgICAgIHRoaXMuX21hcC5yZW1vdmVDb250cm9sKGNvbnRyb2wpCiAgICB9CiAgICB0aGlzLl9jb250cm9sc0J5SWQgPSB7fQogIH0KCiAgZnVuY3Rpb24gQ2x1c3RlckxheWVyU3RvcmUoZ3JvdXApIHsKICAgIHRoaXMuX2xheWVycyA9IHt9OwogICAgdGhpcy5fZ3JvdXAgPSBncm91cDsKICB9CgogIENsdXN0ZXJMYXllclN0b3JlLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbihsYXllciwgaWQpIHsKICAgIGlmICh0eXBlb2YoaWQpICE9PSAndW5kZWZpbmVkJyAmJiBpZCAhPT0gbnVsbCkgewogICAgICBpZiAodGhpcy5fbGF5ZXJzW2lkXSkgewogICAgICAgIHRoaXMuX2dyb3VwLnJlbW92ZUxheWVyKHRoaXMuX2xheWVyc1tpZF0pOwogICAgICB9CiAgICAgIHRoaXMuX2xheWVyc1tpZF0gPSBsYXllcjsKICAgIH0KICAgIHRoaXMuX2dyb3VwLmFkZExheWVyKGxheWVyKTsKICB9OwoKICBDbHVzdGVyTGF5ZXJTdG9yZS5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24oaWQpIHsKICAgIGlmICh0eXBlb2YoaWQpID09PSAndW5kZWZpbmVkJyB8fCBpZCA9PT0gbnVsbCkgewogICAgICByZXR1cm47CiAgICB9CgogICAgaWQgPSBhc0FycmF5KGlkKTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaWQubGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKHRoaXMuX2xheWVyc1tpZFtpXV0pIHsKICAgICAgICB0aGlzLl9ncm91cC5yZW1vdmVMYXllcih0aGlzLl9sYXllcnNbaWRbaV1dKTsKICAgICAgICBkZWxldGUgdGhpcy5fbGF5ZXJzW2lkW2ldXTsKICAgICAgfQogICAgfQogIH07CgogIENsdXN0ZXJMYXllclN0b3JlLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkgewogICAgdGhpcy5fbGF5ZXJzID0ge307CiAgICB0aGlzLl9ncm91cC5jbGVhckxheWVycygpOwogIH07CgogIGZ1bmN0aW9uIG1vdXNlSGFuZGxlcihtYXBJZCwgbGF5ZXJJZCwgZ3JvdXAsIGV2ZW50TmFtZSwgZXh0cmFJbmZvKSB7CiAgICByZXR1cm4gZnVuY3Rpb24oZSkgewogICAgICBpZiAoIUhUTUxXaWRnZXRzLnNoaW55TW9kZSkgcmV0dXJuOwoKICAgICAgdmFyIGV2ZW50SW5mbyA9ICQuZXh0ZW5kKAogICAgICAgIHsKICAgICAgICAgIGlkOiBsYXllcklkLAogICAgICAgICAgJy5ub25jZSc6IE1hdGgucmFuZG9tKCkgIC8vIGZvcmNlIHJlYWN0aXZpdHkKICAgICAgICB9LAogICAgICAgIGdyb3VwICE9PSBudWxsID8ge2dyb3VwOiBncm91cH0gOiBudWxsLAogICAgICAgIGUudGFyZ2V0LmdldExhdExuZyA/IGUudGFyZ2V0LmdldExhdExuZygpIDogZS5sYXRsbmcsCiAgICAgICAgZXh0cmFJbmZvCiAgICAgICk7CgogICAgICBTaGlueS5vbklucHV0Q2hhbmdlKG1hcElkICsgJ18nICsgZXZlbnROYW1lLCBldmVudEluZm8pOwogICAgfTsKICB9CgogIC8vIFNlbmQgdXBkYXRlZCBib3VuZHMgYmFjayB0byBhcHAuIFRha2VzIGEgbGVhZmxldCBldmVudCBvYmplY3QgYXMgaW5wdXQuCiAgZnVuY3Rpb24gdXBkYXRlQm91bmRzKG1hcCkgewogICAgdmFyIGlkID0gbWFwLmdldENvbnRhaW5lcigpLmlkOwogICAgdmFyIGJvdW5kcyA9IG1hcC5nZXRCb3VuZHMoKTsKCiAgICBTaGlueS5vbklucHV0Q2hhbmdlKGlkICsgJ19ib3VuZHMnLCB7CiAgICAgIG5vcnRoOiBib3VuZHMuZ2V0Tm9ydGhFYXN0KCkubGF0LAogICAgICBlYXN0OiBib3VuZHMuZ2V0Tm9ydGhFYXN0KCkubG5nLAogICAgICBzb3V0aDogYm91bmRzLmdldFNvdXRoV2VzdCgpLmxhdCwKICAgICAgd2VzdDogYm91bmRzLmdldFNvdXRoV2VzdCgpLmxuZwogICAgfSk7CiAgICBTaGlueS5vbklucHV0Q2hhbmdlKGlkICsgJ196b29tJywgbWFwLmdldFpvb20oKSk7CiAgfQoKICB3aW5kb3cuTGVhZmxldFdpZGdldCA9IHt9OwogIHZhciBtZXRob2RzID0gd2luZG93LkxlYWZsZXRXaWRnZXQubWV0aG9kcyA9IHt9OwoKICBtZXRob2RzLmNsZWFyR3JvdXAgPSBmdW5jdGlvbihncm91cCkgewogICAgdmFyIHNlbGYgPSB0aGlzOwogICAgJC5lYWNoKGFzQXJyYXkoZ3JvdXApLCBmdW5jdGlvbihpLCB2KSB7CiAgICAgIHNlbGYubGF5ZXJNYW5hZ2VyLmNsZWFyR3JvdXAodik7CiAgICB9KTsKICB9OwoKICBtZXRob2RzLnNldFZpZXcgPSBmdW5jdGlvbihjZW50ZXIsIHpvb20sIG9wdGlvbnMpIHsKICAgIHRoaXMuc2V0VmlldyhjZW50ZXIsIHpvb20sIG9wdGlvbnMpOwogIH07CgogIG1ldGhvZHMuZml0Qm91bmRzID0gZnVuY3Rpb24obGF0MSwgbG5nMSwgbGF0MiwgbG5nMikgewogICAgdGhpcy5maXRCb3VuZHMoWwogICAgICBbbGF0MSwgbG5nMV0sIFtsYXQyLCBsbmcyXQogICAgXSk7CiAgfTsKCiAgbWV0aG9kcy5zZXRNYXhCb3VuZHMgPSBmdW5jdGlvbihsYXQxLCBsbmcxLCBsYXQyLCBsbmcyKSB7CiAgICB0aGlzLnNldE1heEJvdW5kcyhbCiAgICAgIFtsYXQxLCBsbmcxXSwgW2xhdDIsIGxuZzJdCiAgICBdKTsKICB9OwoKICBtZXRob2RzLmFkZFBvcHVwcyA9IGZ1bmN0aW9uKGxhdCwgbG5nLCBwb3B1cCwgbGF5ZXJJZCwgZ3JvdXAsIG9wdGlvbnMpIHsKICAgIHZhciBkZiA9IGRhdGFmcmFtZS5jcmVhdGUoKQogICAgICAuY29sKCdsYXQnLCBsYXQpCiAgICAgIC5jb2woJ2xuZycsIGxuZykKICAgICAgLmNvbCgncG9wdXAnLCBwb3B1cCkKICAgICAgLmNvbCgnbGF5ZXJJZCcsIGxheWVySWQpCiAgICAgIC5jb2woJ2dyb3VwJywgZ3JvdXApCiAgICAgIC5jYmluZChvcHRpb25zKTsKCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRmLm5yb3coKTsgaSsrKSB7CiAgICAgIChmdW5jdGlvbigpIHsKICAgICAgICB2YXIgcG9wdXAgPSBMLnBvcHVwKGRmLmdldChpKSkKICAgICAgICAgICAgICAgICAgICAgLnNldExhdExuZyhbZGYuZ2V0KGksICdsYXQnKSwgZGYuZ2V0KGksICdsbmcnKV0pCiAgICAgICAgICAgICAgICAgICAgIC5zZXRDb250ZW50KGRmLmdldChpLCAncG9wdXAnKSk7CiAgICAgICAgdmFyIHRoaXNJZCA9IGRmLmdldChpLCAnbGF5ZXJJZCcpOwogICAgICAgIHZhciB0aGlzR3JvdXAgPSBkZi5nZXQoaSwgJ2dyb3VwJyk7CiAgICAgICAgdGhpcy5sYXllck1hbmFnZXIuYWRkTGF5ZXIocG9wdXAsICJwb3B1cCIsIHRoaXNJZCwgdGhpc0dyb3VwKTsKICAgICAgICBwb3B1cC5vbignY2xpY2snLCBtb3VzZUhhbmRsZXIodGhpcy5pZCwgdGhpc0lkLCB0aGlzR3JvdXAsICdwb3B1cF9jbGljaycpLCB0aGlzKTsKICAgICAgICBwb3B1cC5vbignbW91c2VvdmVyJywgbW91c2VIYW5kbGVyKHRoaXMuaWQsIHRoaXNJZCwgdGhpc0dyb3VwLCAncG9wdXBfbW91c2VvdmVyJyksIHRoaXMpOwogICAgICAgIHBvcHVwLm9uKCdtb3VzZW91dCcsIG1vdXNlSGFuZGxlcih0aGlzLmlkLCB0aGlzSWQsIHRoaXNHcm91cCwgJ3BvcHVwX21vdXNlb3V0JyksIHRoaXMpOwogICAgICB9KS5jYWxsKHRoaXMpOwogICAgfQogIH07CgogIG1ldGhvZHMucmVtb3ZlUG9wdXAgPSBmdW5jdGlvbihsYXllcklkKSB7CiAgICB0aGlzLmxheWVyTWFuYWdlci5yZW1vdmVMYXllcigicG9wdXAiLCBsYXllcklkKTsKICB9OwoKICBtZXRob2RzLmNsZWFyUG9wdXBzID0gZnVuY3Rpb24oKSB7CiAgICB0aGlzLmxheWVyTWFuYWdlci5jbGVhckxheWVycygicG9wdXAiKTsKICB9OwoKICBtZXRob2RzLmFkZFRpbGVzID0gZnVuY3Rpb24odXJsVGVtcGxhdGUsIGxheWVySWQsIGdyb3VwLCBvcHRpb25zKSB7CiAgICB0aGlzLmxheWVyTWFuYWdlci5hZGRMYXllcihMLnRpbGVMYXllcih1cmxUZW1wbGF0ZSwgb3B0aW9ucyksICJ0aWxlIiwgbGF5ZXJJZCwgZ3JvdXApOwogIH07CgogIG1ldGhvZHMucmVtb3ZlVGlsZXMgPSBmdW5jdGlvbihsYXllcklkKSB7CiAgICB0aGlzLmxheWVyTWFuYWdlci5yZW1vdmVMYXllcigidGlsZSIsIGxheWVySWQpOwogIH07CgogIG1ldGhvZHMuY2xlYXJUaWxlcyA9IGZ1bmN0aW9uKCkgewogICAgdGhpcy5sYXllck1hbmFnZXIuY2xlYXJMYXllcnMoInRpbGUiKTsKICB9OwoKICBtZXRob2RzLmFkZFdNU1RpbGVzID0gZnVuY3Rpb24oYmFzZVVybCwgbGF5ZXJJZCwgZ3JvdXAsIG9wdGlvbnMpIHsKICAgIHRoaXMubGF5ZXJNYW5hZ2VyLmFkZExheWVyKEwudGlsZUxheWVyLndtcyhiYXNlVXJsLCBvcHRpb25zKSwgInRpbGUiLCBsYXllcklkLCBncm91cCk7CiAgfTsKCiAgLy8gR2l2ZW46CiAgLy8gICB7ZGF0YTogWyJhIiwgImIiLCAiYyJdLCBpbmRleDogWzAsIDEsIDAsIDJdfQogIC8vIHJldHVybnM6CiAgLy8gICBbImEiLCAiYiIsICJhIiwgImMiXQogIGZ1bmN0aW9uIHVucGFja1N0cmluZ3MoaWNvbnNldCkgewogICAgaWYgKCFpY29uc2V0KSB7CiAgICAgIHJldHVybiBpY29uc2V0OwogICAgfQogICAgaWYgKHR5cGVvZihpY29uc2V0LmluZGV4KSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgcmV0dXJuIGljb25zZXQ7CiAgICB9CgogICAgaWNvbnNldC5kYXRhID0gYXNBcnJheShpY29uc2V0LmRhdGEpOwogICAgaWNvbnNldC5pbmRleCA9IGFzQXJyYXkoaWNvbnNldC5pbmRleCk7CgogICAgcmV0dXJuICQubWFwKGljb25zZXQuaW5kZXgsIGZ1bmN0aW9uKGUsIGkpIHsKICAgICAgcmV0dXJuIGljb25zZXQuZGF0YVtlXTsKICAgIH0pOwogIH0KCiAgZnVuY3Rpb24gYWRkTWFya2VycyhtYXAsIGRmLCBncm91cCwgY2x1c3Rlck9wdGlvbnMsIGNsdXN0ZXJJZCwgbWFya2VyRnVuYykgewogICAgKGZ1bmN0aW9uKCkgewogICAgICB2YXIgY2x1c3Rlckdyb3VwID0gdGhpcy5sYXllck1hbmFnZXIuZ2V0TGF5ZXIoImNsdXN0ZXIiLCBjbHVzdGVySWQpLAogICAgICAgICAgY2x1c3RlciA9IGNsdXN0ZXJPcHRpb25zICE9PSBudWxsOwogICAgICBpZiAoY2x1c3RlciAmJiAhY2x1c3Rlckdyb3VwKSB7CiAgICAgICAgY2x1c3Rlckdyb3VwID0gTC5tYXJrZXJDbHVzdGVyR3JvdXAoY2x1c3Rlck9wdGlvbnMpOwogICAgICAgIGNsdXN0ZXJHcm91cC5jbHVzdGVyTGF5ZXJTdG9yZSA9IG5ldyBDbHVzdGVyTGF5ZXJTdG9yZShjbHVzdGVyR3JvdXApOwogICAgICB9CiAgICAgIHZhciBleHRyYUluZm8gPSBjbHVzdGVyID8geyBjbHVzdGVySWQ6IGNsdXN0ZXJJZCB9IDoge307CgogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRmLm5yb3coKTsgaSsrKSB7CiAgICAgICAgKGZ1bmN0aW9uKCkgewogICAgICAgICAgdmFyIG1hcmtlciA9IG1hcmtlckZ1bmMoZGYsIGkpOwogICAgICAgICAgdmFyIHRoaXNJZCA9IGRmLmdldChpLCAnbGF5ZXJJZCcpOwogICAgICAgICAgdmFyIHRoaXNHcm91cCA9IGNsdXN0ZXIgPyBudWxsIDogZGYuZ2V0KGksICdncm91cCcpOwogICAgICAgICAgaWYgKGNsdXN0ZXIpIHsKICAgICAgICAgICAgY2x1c3Rlckdyb3VwLmNsdXN0ZXJMYXllclN0b3JlLmFkZChtYXJrZXIsIHRoaXNJZCk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aGlzLmxheWVyTWFuYWdlci5hZGRMYXllcihtYXJrZXIsICJtYXJrZXIiLCB0aGlzSWQsIHRoaXNHcm91cCk7CiAgICAgICAgICB9CiAgICAgICAgICB2YXIgcG9wdXAgPSBkZi5nZXQoaSwgJ3BvcHVwJyk7CiAgICAgICAgICBpZiAocG9wdXAgIT09IG51bGwpIG1hcmtlci5iaW5kUG9wdXAocG9wdXApOwogICAgICAgICAgbWFya2VyLm9uKCdjbGljaycsIG1vdXNlSGFuZGxlcih0aGlzLmlkLCB0aGlzSWQsIHRoaXNHcm91cCwgJ21hcmtlcl9jbGljaycsIGV4dHJhSW5mbyksIHRoaXMpOwogICAgICAgICAgbWFya2VyLm9uKCdtb3VzZW92ZXInLCBtb3VzZUhhbmRsZXIodGhpcy5pZCwgdGhpc0lkLCB0aGlzR3JvdXAsICdtYXJrZXJfbW91c2VvdmVyJywgZXh0cmFJbmZvKSwgdGhpcyk7CiAgICAgICAgICBtYXJrZXIub24oJ21vdXNlb3V0JywgbW91c2VIYW5kbGVyKHRoaXMuaWQsIHRoaXNJZCwgdGhpc0dyb3VwLCAnbWFya2VyX21vdXNlb3V0JywgZXh0cmFJbmZvKSwgdGhpcyk7CiAgICAgICAgfSkuY2FsbCh0aGlzKTsKICAgICAgfQoKICAgICAgaWYgKGNsdXN0ZXIpIHsKICAgICAgICB0aGlzLmxheWVyTWFuYWdlci5hZGRMYXllcihjbHVzdGVyR3JvdXAsICJjbHVzdGVyIiwgY2x1c3RlcklkLCBncm91cCk7CiAgICAgIH0KICAgIH0pLmNhbGwobWFwKTsKICB9CgogIG1ldGhvZHMuYWRkTWFya2VycyA9IGZ1bmN0aW9uKGxhdCwgbG5nLCBpY29uLCBsYXllcklkLCBncm91cCwgb3B0aW9ucywgcG9wdXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2x1c3Rlck9wdGlvbnMsIGNsdXN0ZXJJZCkgewogICAgaWYgKGljb24pIHsKICAgICAgLy8gVW5wYWNrIGljb25zCiAgICAgIGljb24uaWNvblVybCAgICAgICAgID0gdW5wYWNrU3RyaW5ncyhpY29uLmljb25VcmwpOwogICAgICBpY29uLmljb25SZXRpbmFVcmwgICA9IHVucGFja1N0cmluZ3MoaWNvbi5pY29uUmV0aW5hVXJsKTsKICAgICAgaWNvbi5zaGFkb3dVcmwgICAgICAgPSB1bnBhY2tTdHJpbmdzKGljb24uc2hhZG93VXJsKTsKICAgICAgaWNvbi5zaGFkb3dSZXRpbmFVcmwgPSB1bnBhY2tTdHJpbmdzKGljb24uc2hhZG93UmV0aW5hVXJsKTsKCiAgICAgIC8vIFRoaXMgY2JpbmRzIHRoZSBpY29uIFVSTHMgYW5kIGFueSBvdGhlciBpY29uIG9wdGlvbnM7IHRoZXkncmUgYWxsCiAgICAgIC8vIHByZXNlbnQgb24gdGhlIGljb24gb2JqZWN0LgogICAgICB2YXIgaWNvbmRmID0gZGF0YWZyYW1lLmNyZWF0ZSgpLmNiaW5kKGljb24pOwoKICAgICAgLy8gQ29uc3RydWN0cyBhbiBpY29uIGZyb20gYSBzcGVjaWZpZWQgcm93IG9mIHRoZSBpY29uIGRhdGFmcmFtZS4KICAgICAgdmFyIGdldEljb24gPSBmdW5jdGlvbihpKSB7CiAgICAgICAgdmFyIG9wdHMgPSBpY29uZGYuZ2V0KGkpOwogICAgICAgIGlmICghb3B0cy5pY29uVXJsKSB7CiAgICAgICAgICByZXR1cm4gbmV3IEwuSWNvbi5EZWZhdWx0KCk7CiAgICAgICAgfQoKICAgICAgICAvLyBDb21wb3NpdGUgb3B0aW9ucyAobGlrZSBwb2ludHMgb3Igc2l6ZXMpIGFyZSBwYXNzZWQgZnJvbSBSIHdpdGggZWFjaAogICAgICAgIC8vIGluZGl2aWR1YWwgY29tcG9uZW50IGFzIGl0cyBvd24gb3B0aW9uLiBXZSBuZWVkIHRvIGNvbWJpbmUgdGhlbSBub3cKICAgICAgICAvLyBpbnRvIHRoZWlyIGNvbXBvc2l0ZSBmb3JtLgogICAgICAgIGlmIChvcHRzLmljb25XaWR0aCkgewogICAgICAgICAgb3B0cy5pY29uU2l6ZSA9IFtvcHRzLmljb25XaWR0aCwgb3B0cy5pY29uSGVpZ2h0XTsKICAgICAgICB9CiAgICAgICAgaWYgKG9wdHMuc2hhZG93V2lkdGgpIHsKICAgICAgICAgIG9wdHMuc2hhZG93U2l6ZSA9IFtvcHRzLnNoYWRvd1dpZHRoLCBvcHRzLnNoYWRvd0hlaWdodF07CiAgICAgICAgfQogICAgICAgIGlmIChvcHRzLmljb25BbmNob3JYKSB7CiAgICAgICAgICBvcHRzLmljb25BbmNob3IgPSBbb3B0cy5pY29uQW5jaG9yWCwgb3B0cy5pY29uQW5jaG9yWV07CiAgICAgICAgfQogICAgICAgIGlmIChvcHRzLnNoYWRvd0FuY2hvclgpIHsKICAgICAgICAgIG9wdHMuc2hhZG93QW5jaG9yID0gW29wdHMuc2hhZG93QW5jaG9yWCwgb3B0cy5zaGFkb3dBbmNob3JZXTsKICAgICAgICB9CiAgICAgICAgaWYgKG9wdHMucG9wdXBBbmNob3JYKSB7CiAgICAgICAgICBvcHRzLnBvcHVwQW5jaG9yID0gW29wdHMucG9wdXBBbmNob3JYLCBvcHRzLnBvcHVwQW5jaG9yWV07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IEwuSWNvbihvcHRzKTsKICAgICAgfTsKICAgIH0KCiAgICB2YXIgZGYgPSBkYXRhZnJhbWUuY3JlYXRlKCkKICAgICAgLmNvbCgnbGF0JywgbGF0KQogICAgICAuY29sKCdsbmcnLCBsbmcpCiAgICAgIC5jb2woJ2xheWVySWQnLCBsYXllcklkKQogICAgICAuY29sKCdncm91cCcsIGdyb3VwKQogICAgICAuY29sKCdwb3B1cCcsIHBvcHVwKQogICAgICAuY2JpbmQob3B0aW9ucyk7CgogICAgaWYgKGljb24pIGljb25kZi5lZmZlY3RpdmVMZW5ndGggPSBkZi5ucm93KCk7CgogICAgYWRkTWFya2Vycyh0aGlzLCBkZiwgZ3JvdXAsIGNsdXN0ZXJPcHRpb25zLCBjbHVzdGVySWQsIGZ1bmN0aW9uKGRmLCBpKSB7CiAgICAgIHZhciBvcHRpb25zID0gZGYuZ2V0KGkpOwogICAgICBpZiAoaWNvbikgb3B0aW9ucy5pY29uID0gZ2V0SWNvbihpKTsKICAgICAgcmV0dXJuIEwubWFya2VyKFtkZi5nZXQoaSwgJ2xhdCcpLCBkZi5nZXQoaSwgJ2xuZycpXSwgb3B0aW9ucyk7CiAgICB9KTsKICB9OwoKICBhZGRMYXllcnMgPSBmdW5jdGlvbihtYXAsIGNhdGVnb3J5LCBkZiwgbGF5ZXJGdW5jKSB7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRmLm5yb3coKTsgaSsrKSB7CiAgICAgIChmdW5jdGlvbigpIHsKICAgICAgICB2YXIgbGF5ZXIgPSBsYXllckZ1bmMoZGYsIGkpOwogICAgICAgIHZhciB0aGlzSWQgPSBkZi5nZXQoaSwgJ2xheWVySWQnKTsKICAgICAgICB2YXIgdGhpc0dyb3VwID0gZGYuZ2V0KGksICdncm91cCcpOwogICAgICAgIHRoaXMubGF5ZXJNYW5hZ2VyLmFkZExheWVyKGxheWVyLCBjYXRlZ29yeSwgdGhpc0lkLCB0aGlzR3JvdXApOwogICAgICAgIGlmIChsYXllci5iaW5kUG9wdXApIHsKICAgICAgICAgIHZhciBwb3B1cCA9IGRmLmdldChpLCAncG9wdXAnKTsKICAgICAgICAgIGlmIChwb3B1cCAhPT0gbnVsbCkgbGF5ZXIuYmluZFBvcHVwKHBvcHVwKTsKICAgICAgICB9CiAgICAgICAgbGF5ZXIub24oJ2NsaWNrJywgbW91c2VIYW5kbGVyKHRoaXMuaWQsIHRoaXNJZCwgdGhpc0dyb3VwLCBjYXRlZ29yeSArICdfY2xpY2snKSwgdGhpcyk7CiAgICAgICAgbGF5ZXIub24oJ21vdXNlb3ZlcicsIG1vdXNlSGFuZGxlcih0aGlzLmlkLCB0aGlzSWQsIHRoaXNHcm91cCwgY2F0ZWdvcnkgKyAnX21vdXNlb3ZlcicpLCB0aGlzKTsKICAgICAgICBsYXllci5vbignbW91c2VvdXQnLCBtb3VzZUhhbmRsZXIodGhpcy5pZCwgdGhpc0lkLCB0aGlzR3JvdXAsIGNhdGVnb3J5ICsgJ19tb3VzZW91dCcpLCB0aGlzKTsKICAgICAgfSkuY2FsbChtYXApOwogICAgfQogIH0KCiAgbWV0aG9kcy5hZGRDaXJjbGVzID0gZnVuY3Rpb24obGF0LCBsbmcsIHJhZGl1cywgbGF5ZXJJZCwgZ3JvdXAsIG9wdGlvbnMsIHBvcHVwKSB7CiAgICB2YXIgZGYgPSBkYXRhZnJhbWUuY3JlYXRlKCkKICAgICAgLmNvbCgnbGF0JywgbGF0KQogICAgICAuY29sKCdsbmcnLCBsbmcpCiAgICAgIC5jb2woJ3JhZGl1cycsIHJhZGl1cykKICAgICAgLmNvbCgnbGF5ZXJJZCcsIGxheWVySWQpCiAgICAgIC5jb2woJ2dyb3VwJywgZ3JvdXApCiAgICAgIC5jb2woJ3BvcHVwJywgcG9wdXApCiAgICAgIC5jYmluZChvcHRpb25zKTsKCiAgICBhZGRMYXllcnModGhpcywgInNoYXBlIiwgZGYsIGZ1bmN0aW9uKGRmLCBpKSB7CiAgICAgIHJldHVybiBMLmNpcmNsZShbZGYuZ2V0KGksICdsYXQnKSwgZGYuZ2V0KGksICdsbmcnKV0sIGRmLmdldChpLCAncmFkaXVzJyksIGRmLmdldChpKSk7CiAgICB9KTsKICB9OwoKICBtZXRob2RzLmFkZENpcmNsZU1hcmtlcnMgPSBmdW5jdGlvbihsYXQsIGxuZywgcmFkaXVzLCBsYXllcklkLCBncm91cCwgb3B0aW9ucywgY2x1c3Rlck9wdGlvbnMsIGNsdXN0ZXJJZCwgcG9wdXApIHsKICAgIHZhciBkZiA9IGRhdGFmcmFtZS5jcmVhdGUoKQogICAgICAuY29sKCdsYXQnLCBsYXQpCiAgICAgIC5jb2woJ2xuZycsIGxuZykKICAgICAgLmNvbCgncmFkaXVzJywgcmFkaXVzKQogICAgICAuY29sKCdsYXllcklkJywgbGF5ZXJJZCkKICAgICAgLmNvbCgnZ3JvdXAnLCBncm91cCkKICAgICAgLmNvbCgncG9wdXAnLCBwb3B1cCkKICAgICAgLmNiaW5kKG9wdGlvbnMpOwoKICAgIGFkZE1hcmtlcnModGhpcywgZGYsIGdyb3VwLCBjbHVzdGVyT3B0aW9ucywgY2x1c3RlcklkLCBmdW5jdGlvbihkZiwgaSkgewogICAgICByZXR1cm4gTC5jaXJjbGVNYXJrZXIoW2RmLmdldChpLCAnbGF0JyksIGRmLmdldChpLCAnbG5nJyldLCBkZi5nZXQoaSkpOwogICAgfSk7CiAgfTsKCiAgLyoKICAgKiBAcGFyYW0gbGF0IEFycmF5IG9mIGFycmF5cyBvZiBsYXRpdHVkZSBjb29yZGluYXRlcyBmb3IgcG9seWxpbmVzCiAgICogQHBhcmFtIGxuZyBBcnJheSBvZiBhcnJheXMgb2YgbG9uZ2l0dWRlIGNvb3JkaW5hdGVzIGZvciBwb2x5bGluZXMKICAgKi8KICBtZXRob2RzLmFkZFBvbHlsaW5lcyA9IGZ1bmN0aW9uKHBvbHlnb25zLCBsYXllcklkLCBncm91cCwgb3B0aW9ucywgcG9wdXApIHsKICAgIHZhciBkZiA9IGRhdGFmcmFtZS5jcmVhdGUoKQogICAgICAuY29sKCdzaGFwZXMnLCBwb2x5Z29ucykKICAgICAgLmNvbCgnbGF5ZXJJZCcsIGxheWVySWQpCiAgICAgIC5jb2woJ2dyb3VwJywgZ3JvdXApCiAgICAgIC5jb2woJ3BvcHVwJywgcG9wdXApCiAgICAgIC5jYmluZChvcHRpb25zKTsKCiAgICBhZGRMYXllcnModGhpcywgInNoYXBlIiwgZGYsIGZ1bmN0aW9uKGRmLCBpKSB7CiAgICAgICAgdmFyIHNoYXBlID0gZGYuZ2V0KGksICdzaGFwZXMnKVswXTsKICAgICAgICBzaGFwZSA9IEhUTUxXaWRnZXRzLmRhdGFmcmFtZVRvRDMoc2hhcGUpOwogICAgICAgIHJldHVybiBMLnBvbHlsaW5lKHNoYXBlLCBkZi5nZXQoaSkpOwogICAgfSk7CiAgfTsKCiAgbWV0aG9kcy5yZW1vdmVNYXJrZXIgPSBmdW5jdGlvbihsYXllcklkKSB7CiAgICB0aGlzLmxheWVyTWFuYWdlci5yZW1vdmVMYXllcigibWFya2VyIiwgbGF5ZXJJZCk7CiAgfTsKCiAgbWV0aG9kcy5jbGVhck1hcmtlcnMgPSBmdW5jdGlvbigpIHsKICAgIHRoaXMubGF5ZXJNYW5hZ2VyLmNsZWFyTGF5ZXJzKCJtYXJrZXIiKTsKICB9OwoKICBtZXRob2RzLnJlbW92ZU1hcmtlckNsdXN0ZXIgPSBmdW5jdGlvbihsYXllcklkKSB7CiAgICB0aGlzLmxheWVyTWFuYWdlci5yZW1vdmVMYXllcigiY2x1c3RlciIsIGxheWVySWQpOwogIH0KCiAgbWV0aG9kcy5yZW1vdmVNYXJrZXJGcm9tQ2x1c3RlciA9IGZ1bmN0aW9uKGxheWVySWQsIGNsdXN0ZXJJZCkgewogICAgdmFyIGNsdXN0ZXIgPSB0aGlzLmxheWVyTWFuYWdlci5nZXRMYXllcigiY2x1c3RlciIsIGNsdXN0ZXJJZCk7CiAgICBpZiAoIWNsdXN0ZXIpIHJldHVybjsKICAgIGNsdXN0ZXIuY2x1c3RlckxheWVyU3RvcmUucmVtb3ZlKGxheWVySWQpOwogIH0KCiAgbWV0aG9kcy5jbGVhck1hcmtlckNsdXN0ZXJzID0gZnVuY3Rpb24oKSB7CiAgICB0aGlzLmxheWVyTWFuYWdlci5jbGVhckxheWVycygiY2x1c3RlciIpOwogIH07CgogIG1ldGhvZHMucmVtb3ZlU2hhcGUgPSBmdW5jdGlvbihsYXllcklkKSB7CiAgICB0aGlzLmxheWVyTWFuYWdlci5yZW1vdmVMYXllcigic2hhcGUiLCBsYXllcklkKTsKICB9OwoKICBtZXRob2RzLmNsZWFyU2hhcGVzID0gZnVuY3Rpb24oKSB7CiAgICB0aGlzLmxheWVyTWFuYWdlci5jbGVhckxheWVycygic2hhcGUiKTsKICB9OwoKICBtZXRob2RzLmFkZFJlY3RhbmdsZXMgPSBmdW5jdGlvbihsYXQxLCBsbmcxLCBsYXQyLCBsbmcyLCBsYXllcklkLCBncm91cCwgb3B0aW9ucywgcG9wdXApIHsKICAgIHZhciBkZiA9IGRhdGFmcmFtZS5jcmVhdGUoKQogICAgICAuY29sKCdsYXQxJywgbGF0MSkKICAgICAgLmNvbCgnbG5nMScsIGxuZzEpCiAgICAgIC5jb2woJ2xhdDInLCBsYXQyKQogICAgICAuY29sKCdsbmcyJywgbG5nMikKICAgICAgLmNvbCgnbGF5ZXJJZCcsIGxheWVySWQpCiAgICAgIC5jb2woJ2dyb3VwJywgZ3JvdXApCiAgICAgIC5jb2woJ3BvcHVwJywgcG9wdXApCiAgICAgIC5jYmluZChvcHRpb25zKTsKCiAgICBhZGRMYXllcnModGhpcywgInNoYXBlIiwgZGYsIGZ1bmN0aW9uKGRmLCBpKSB7CiAgICAgIHJldHVybiBMLnJlY3RhbmdsZShbCiAgICAgICAgICBbZGYuZ2V0KGksICdsYXQxJyksIGRmLmdldChpLCAnbG5nMScpXSwKICAgICAgICAgIFtkZi5nZXQoaSwgJ2xhdDInKSwgZGYuZ2V0KGksICdsbmcyJyldCiAgICAgICAgXSwKICAgICAgICBkZi5nZXQoaSkpOwogICAgfSk7CiAgfTsKCiAgLyoKICAgKiBAcGFyYW0gbGF0IEFycmF5IG9mIGFycmF5cyBvZiBsYXRpdHVkZSBjb29yZGluYXRlcyBmb3IgcG9seWdvbnMKICAgKiBAcGFyYW0gbG5nIEFycmF5IG9mIGFycmF5cyBvZiBsb25naXR1ZGUgY29vcmRpbmF0ZXMgZm9yIHBvbHlnb25zCiAgICovCiAgbWV0aG9kcy5hZGRQb2x5Z29ucyA9IGZ1bmN0aW9uKHBvbHlnb25zLCBsYXllcklkLCBncm91cCwgb3B0aW9ucywgcG9wdXApIHsKICAgIHZhciBkZiA9IGRhdGFmcmFtZS5jcmVhdGUoKQogICAgICAuY29sKCdzaGFwZXMnLCBwb2x5Z29ucykKICAgICAgLmNvbCgnbGF5ZXJJZCcsIGxheWVySWQpCiAgICAgIC5jb2woJ2dyb3VwJywgZ3JvdXApCiAgICAgIC5jb2woJ3BvcHVwJywgcG9wdXApCiAgICAgIC5jYmluZChvcHRpb25zKTsKCiAgICBhZGRMYXllcnModGhpcywgInNoYXBlIiwgZGYsIGZ1bmN0aW9uKGRmLCBpKSB7CiAgICAgIHZhciBzaGFwZXMgPSBkZi5nZXQoaSwgJ3NoYXBlcycpOwogICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNoYXBlcy5sZW5ndGg7IGorKykgewogICAgICAgIHNoYXBlc1tqXSA9IEhUTUxXaWRnZXRzLmRhdGFmcmFtZVRvRDMoc2hhcGVzW2pdKTsKICAgICAgfQogICAgICByZXR1cm4gTC5wb2x5Z29uKHNoYXBlcywgZGYuZ2V0KGkpKTsKICAgIH0pOwogIH07CgogIG1ldGhvZHMuYWRkR2VvSlNPTiA9IGZ1bmN0aW9uKGRhdGEsIGxheWVySWQsIGdyb3VwLCBzdHlsZSkgewogICAgdmFyIHNlbGYgPSB0aGlzOwogICAgaWYgKHR5cGVvZihkYXRhKSA9PT0gInN0cmluZyIpIHsKICAgICAgZGF0YSA9IEpTT04ucGFyc2UoZGF0YSk7CiAgICB9CgogICAgdmFyIGdsb2JhbFN0eWxlID0gJC5leHRlbmQoe30sIHN0eWxlLCBkYXRhLnN0eWxlIHx8IHt9KTsKCiAgICB2YXIgZ2psYXllciA9IEwuZ2VvSnNvbihkYXRhLCB7CiAgICAgIHN0eWxlOiBmdW5jdGlvbihmZWF0dXJlKSB7CiAgICAgICAgaWYgKGZlYXR1cmUuc3R5bGUgfHwgZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlKSB7CiAgICAgICAgICByZXR1cm4gJC5leHRlbmQoe30sIGdsb2JhbFN0eWxlLCBmZWF0dXJlLnN0eWxlLCBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICByZXR1cm4gZ2xvYmFsU3R5bGU7CiAgICAgICAgfQogICAgICB9LAogICAgICBvbkVhY2hGZWF0dXJlOiBmdW5jdGlvbihmZWF0dXJlLCBsYXllcikgewogICAgICAgIHZhciBleHRyYUluZm8gPSB7CiAgICAgICAgICBmZWF0dXJlSWQ6IGZlYXR1cmUuaWQsCiAgICAgICAgICBwcm9wZXJ0aWVzOiBmZWF0dXJlLnByb3BlcnRpZXMKICAgICAgICB9OwogICAgICAgIHZhciBwb3B1cCA9IGZlYXR1cmUucHJvcGVydGllcy5wb3B1cDsKICAgICAgICBpZiAodHlwZW9mIHBvcHVwICE9PSAndW5kZWZpbmVkJyAmJiBwb3B1cCAhPT0gbnVsbCkgbGF5ZXIuYmluZFBvcHVwKHBvcHVwKTsKICAgICAgICBsYXllci5vbigiY2xpY2siLCBtb3VzZUhhbmRsZXIoc2VsZi5pZCwgbGF5ZXJJZCwgZ3JvdXAsICJnZW9qc29uX2NsaWNrIiwgZXh0cmFJbmZvKSwgdGhpcyk7CiAgICAgICAgbGF5ZXIub24oIm1vdXNlb3ZlciIsIG1vdXNlSGFuZGxlcihzZWxmLmlkLCBsYXllcklkLCBncm91cCwgImdlb2pzb25fbW91c2VvdmVyIiwgZXh0cmFJbmZvKSwgdGhpcyk7CiAgICAgICAgbGF5ZXIub24oIm1vdXNlb3V0IiwgbW91c2VIYW5kbGVyKHNlbGYuaWQsIGxheWVySWQsIGdyb3VwLCAiZ2VvanNvbl9tb3VzZW91dCIsIGV4dHJhSW5mbyksIHRoaXMpOwogICAgICB9CiAgICB9KTsKICAgIHRoaXMubGF5ZXJNYW5hZ2VyLmFkZExheWVyKGdqbGF5ZXIsICJnZW9qc29uIiwgbGF5ZXJJZCwgZ3JvdXApOwogIH07CgogIG1ldGhvZHMucmVtb3ZlR2VvSlNPTiA9IGZ1bmN0aW9uKGxheWVySWQpIHsKICAgIHRoaXMubGF5ZXJNYW5hZ2VyLnJlbW92ZUxheWVyKCJnZW9qc29uIiwgbGF5ZXJJZCk7CiAgfTsKCiAgbWV0aG9kcy5jbGVhckdlb0pTT04gPSBmdW5jdGlvbigpIHsKICAgIHRoaXMubGF5ZXJNYW5hZ2VyLmNsZWFyTGF5ZXJzKCJnZW9qc29uIik7CiAgfTsKCiAgbWV0aG9kcy5hZGRUb3BvSlNPTiA9IGZ1bmN0aW9uKGRhdGEsIGxheWVySWQsIGdyb3VwLCBzdHlsZSkgewogICAgdmFyIHNlbGYgPSB0aGlzOwogICAgaWYgKHR5cGVvZihkYXRhKSA9PT0gInN0cmluZyIpIHsKICAgICAgZGF0YSA9IEpTT04ucGFyc2UoZGF0YSk7CiAgICB9CgogICAgdmFyIGdsb2JhbFN0eWxlID0gJC5leHRlbmQoe30sIHN0eWxlLCBkYXRhLnN0eWxlIHx8IHt9KTsKCiAgICB2YXIgZ2psYXllciA9IEwuZ2VvSnNvbihudWxsLCB7CiAgICAgIHN0eWxlOiBmdW5jdGlvbihmZWF0dXJlKSB7CiAgICAgICAgaWYgKGZlYXR1cmUuc3R5bGUgfHwgZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlKSB7CiAgICAgICAgICByZXR1cm4gJC5leHRlbmQoe30sIGdsb2JhbFN0eWxlLCBmZWF0dXJlLnN0eWxlLCBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICByZXR1cm4gZ2xvYmFsU3R5bGU7CiAgICAgICAgfQogICAgICB9LAogICAgICBvbkVhY2hGZWF0dXJlOiBmdW5jdGlvbihmZWF0dXJlLCBsYXllcikgewogICAgICAgIHZhciBleHRyYUluZm8gPSB7CiAgICAgICAgICBmZWF0dXJlSWQ6IGZlYXR1cmUuaWQsCiAgICAgICAgICBwcm9wZXJ0aWVzOiBmZWF0dXJlLnByb3BlcnRpZXMKICAgICAgICB9OwogICAgICAgIHZhciBwb3B1cCA9IGZlYXR1cmUucHJvcGVydGllcy5wb3B1cDsKICAgICAgICBpZiAodHlwZW9mIHBvcHVwICE9PSAndW5kZWZpbmVkJyAmJiBwb3B1cCAhPT0gbnVsbCkgbGF5ZXIuYmluZFBvcHVwKHBvcHVwKTsKICAgICAgICBsYXllci5vbigiY2xpY2siLCBtb3VzZUhhbmRsZXIoc2VsZi5pZCwgbGF5ZXJJZCwgZ3JvdXAsICJ0b3BvanNvbl9jbGljayIsIGV4dHJhSW5mbyksIHRoaXMpOwogICAgICAgIGxheWVyLm9uKCJtb3VzZW92ZXIiLCBtb3VzZUhhbmRsZXIoc2VsZi5pZCwgbGF5ZXJJZCwgZ3JvdXAsICJ0b3BvanNvbl9tb3VzZW92ZXIiLCBleHRyYUluZm8pLCB0aGlzKTsKICAgICAgICBsYXllci5vbigibW91c2VvdXQiLCBtb3VzZUhhbmRsZXIoc2VsZi5pZCwgbGF5ZXJJZCwgZ3JvdXAsICJ0b3BvanNvbl9tb3VzZW91dCIsIGV4dHJhSW5mbyksIHRoaXMpOwogICAgICB9CiAgICB9KTsKICAgIG9tbml2b3JlLnRvcG9qc29uLnBhcnNlKGRhdGEsIG51bGwsIGdqbGF5ZXIpOwogICAgdGhpcy5sYXllck1hbmFnZXIuYWRkTGF5ZXIoZ2psYXllciwgInRvcG9qc29uIiwgbGF5ZXJJZCwgZ3JvdXApOwogIH07CgogIG1ldGhvZHMucmVtb3ZlVG9wb0pTT04gPSBmdW5jdGlvbihsYXllcklkKSB7CiAgICB0aGlzLmxheWVyTWFuYWdlci5yZW1vdmVMYXllcigidG9wb2pzb24iLCBsYXllcklkKTsKICB9OwoKICBtZXRob2RzLmNsZWFyVG9wb0pTT04gPSBmdW5jdGlvbigpIHsKICAgIHRoaXMubGF5ZXJNYW5hZ2VyLmNsZWFyTGF5ZXJzKCJ0b3BvanNvbiIpOwogIH07CgogIG1ldGhvZHMuYWRkQ29udHJvbCA9IGZ1bmN0aW9uKGh0bWwsIHBvc2l0aW9uLCBsYXllcklkLCBjbGFzc2VzKSB7CiAgICBmdW5jdGlvbiBvbkFkZChtYXApIHsKICAgICAgdmFyIGRpdiA9IEwuRG9tVXRpbC5jcmVhdGUoJ2RpdicsIGNsYXNzZXMpOwogICAgICBpZiAodHlwZW9mIGxheWVySWQgIT09ICd1bmRlZmluZWQnICYmIGxheWVySWQgIT09IG51bGwpIHsKICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdpZCcsIGxheWVySWQpCiAgICAgIH0KICAgICAgdGhpcy5fZGl2ID0gZGl2OwoKICAgICAgLy8gSXQncyBwb3NzaWJsZSBmb3Igd2luZG93LlNoaW55IHRvIGJlIHRydWUgYnV0IFNoaW55LmluaXRpYWxpemVJbnB1dHMgdG8KICAgICAgLy8gbm90IGJlLCB3aGVuIGEgc3RhdGljIGxlYWZsZXQgd2lkZ2V0IGlzIGluY2x1ZGVkIGFzIHBhcnQgb2YgdGhlIHNoaW55CiAgICAgIC8vIFVJIGRpcmVjdGx5IChub3QgdGhyb3VnaCBsZWFmbGV0T3V0cHV0IG9yIHVpT3V0cHV0KS4gSW4gdGhpcyBjYXNlIHdlCiAgICAgIC8vIGRvbid0IGRvIHRoZSBub3JtYWwgU2hpbnkgc3R1ZmYgYXMgdGhhdCB3aWxsIGFsbCBoYXBwZW4gd2hlbiBTaGlueQogICAgICAvLyBpdHNlbGYgbG9hZHMgYW5kIGJpbmRzIHRoZSBlbnRpcmUgZG9jLgoKICAgICAgaWYgKHdpbmRvdy5TaGlueSAmJiBTaGlueS5pbml0aWFsaXplSW5wdXRzKSB7CiAgICAgICAgU2hpbnkucmVuZGVySHRtbChodG1sLCB0aGlzLl9kaXYpOwogICAgICAgIFNoaW55LmluaXRpYWxpemVJbnB1dHModGhpcy5fZGl2KTsKICAgICAgICBTaGlueS5iaW5kQWxsKHRoaXMuX2Rpdik7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5fZGl2LmlubmVySFRNTCA9IGh0bWw7CiAgICAgIH0KCiAgICAgIHJldHVybiB0aGlzLl9kaXY7CiAgICB9CiAgICBmdW5jdGlvbiBvblJlbW92ZShtYXApIHsKICAgICAgaWYgKHdpbmRvdy5TaGlueSAmJiBTaGlueS51bmJpbmRBbGwpIHsKICAgICAgICBTaGlueS51bmJpbmRBbGwodGhpcy5fZGl2KTsKICAgICAgfQogICAgfQogICAgdmFyIENvbnRyb2wgPSBMLkNvbnRyb2wuZXh0ZW5kKHsKICAgICAgb3B0aW9uczoge3Bvc2l0aW9uOiBwb3NpdGlvbn0sCiAgICAgIG9uQWRkOiBvbkFkZCwKICAgICAgb25SZW1vdmU6IG9uUmVtb3ZlCiAgICB9KQogICAgdGhpcy5jb250cm9scy5hZGQobmV3IENvbnRyb2wsIGxheWVySWQsIGh0bWwpOwogIH07CgogIG1ldGhvZHMucmVtb3ZlQ29udHJvbCA9IGZ1bmN0aW9uKGxheWVySWQpIHsKICAgIHRoaXMuY29udHJvbHMucmVtb3ZlKGxheWVySWQpOwogIH07CgogIG1ldGhvZHMuY2xlYXJDb250cm9scyA9IGZ1bmN0aW9uKCkgewogICAgdGhpcy5jb250cm9scy5jbGVhcigpOwogIH07CgogIG1ldGhvZHMuYWRkTGVnZW5kID0gZnVuY3Rpb24ob3B0aW9ucykgewogICAgdmFyIGxlZ2VuZCA9IEwuY29udHJvbCh7cG9zaXRpb246IG9wdGlvbnMucG9zaXRpb259KTsKICAgIHZhciBncmFkU3BhbjsKCiAgICBsZWdlbmQub25BZGQgPSBmdW5jdGlvbiAobWFwKSB7CiAgICAgIHZhciBkaXYgPSBMLkRvbVV0aWwuY3JlYXRlKCdkaXYnLCBvcHRpb25zLmNsYXNzTmFtZSksCiAgICAgICAgICBjb2xvcnMgPSBvcHRpb25zLmNvbG9ycywKICAgICAgICAgIGxhYmVscyA9IG9wdGlvbnMubGFiZWxzLAogICAgICAgICAgbGVnZW5kSFRNTCA9ICcnOwogICAgICBpZiAob3B0aW9ucy50eXBlID09PSAnbnVtZXJpYycpIHsKICAgICAgICAvLyAjIEZvcm1hdHRpbmcgY29uc3RhbnRzLgogICAgICAgIHZhciBzaW5nbGVCaW5IZWlnaHQgPSAyMDsgIC8vIFRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRpY2sgbWFya3MsIGluIHB4CiAgICAgICAgdmFyIHZNYXJnaW4gPSA4OyAvLyBJZiAxc3QgdGljayBtYXJrIHN0YXJ0cyBhdCB0b3Agb2YgZ3JhZGllbnQsIGhvdwogICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWFueSBleHRyYSBweCBhcmUgbmVlZGVkIGZvciB0aGUgdG9wIGhhbGYgb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxc3QgbGFiZWw/IChkaXR0byBmb3IgbGFzdCB0aWNrIG1hcmsvbGFiZWwpCiAgICAgICAgdmFyIHRpY2tXaWR0aCA9IDQ7ICAgICAvLyBIb3cgd2lkZSBzaG91bGQgdGljayBtYXJrcyBiZSwgaW4gcHg/CiAgICAgICAgdmFyIGxhYmVsUGFkZGluZyA9IDY7ICAvLyBIb3cgbXVjaCBkaXN0YW5jZSB0byByZXNlcnZlIGZvciB0aWNrIG1hcms/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoTXVzdCBiZSA+PSB0aWNrV2lkdGgpCgogICAgICAgIC8vICMgRGVyaXZlZCBmb3JtYXR0aW5nIHBhcmFtZXRlcnMuCgogICAgICAgIC8vIFdoYXQncyB0aGUgaGVpZ2h0IG9mIGEgc2luZ2xlIGJpbiwgaW4gcGVyY2VudGFnZSAob2YgZ3JhZGllbnQgaGVpZ2h0KT8KICAgICAgICAvLyBJdCBtaWdodCBub3QganVzdCBiZSAxLyhuLTEpLCBpZiB0aGUgZ3JhZGllbnQgZXh0ZW5kcyBwYXN0IHRoZSB0aWNrCiAgICAgICAgLy8gbWFya3MgKHdoaWNoIGNhbiBiZSB0aGUgY2FzZSBmb3IgcHJldHR5IGN1dCBwb2ludHMpLgogICAgICAgIHZhciBzaW5nbGVCaW5QY3QgPSAob3B0aW9ucy5leHRyYS5wX24gLSBvcHRpb25zLmV4dHJhLnBfMSkgLyAobGFiZWxzLmxlbmd0aCAtIDEpOwogICAgICAgIC8vIEVhY2ggYmluIGlzIGBzaW5nbGVCaW5IZWlnaHRgIGhpZ2guIEhvdyB0YWxsIGlzIHRoZSBncmFkaWVudD8KICAgICAgICB2YXIgdG90YWxIZWlnaHQgPSAoMSAvIHNpbmdsZUJpblBjdCkgKiBzaW5nbGVCaW5IZWlnaHQgKyAxOwogICAgICAgIC8vIEhvdyBmYXIgc2hvdWxkIHRoZSBmaXJzdCB0aWNrIGJlIHNoaWZ0ZWQgZG93biwgcmVsYXRpdmUgdG8gdGhlIHRvcAogICAgICAgIC8vIG9mIHRoZSBncmFkaWVudD8KICAgICAgICB2YXIgdGlja09mZnNldCA9IChzaW5nbGVCaW5IZWlnaHQgLyBzaW5nbGVCaW5QY3QpICogb3B0aW9ucy5leHRyYS5wXzE7CgogICAgICAgIGdyYWRTcGFuID0gJCgnPHNwYW4vPicpLmNzcyh7CiAgICAgICAgICAnYmFja2dyb3VuZCc6ICdsaW5lYXItZ3JhZGllbnQoJyArIGNvbG9ycyArICcpJywKICAgICAgICAgICdvcGFjaXR5Jzogb3B0aW9ucy5vcGFjaXR5LAogICAgICAgICAgJ2hlaWdodCc6IHRvdGFsSGVpZ2h0ICsgJ3B4JywKICAgICAgICAgICd3aWR0aCc6ICcxOHB4JywKICAgICAgICAgICdkaXNwbGF5JzogJ2Jsb2NrJywKICAgICAgICAgICdtYXJnaW4tdG9wJzogdk1hcmdpbiArICdweCcKICAgICAgICB9KTsKICAgICAgICB2YXIgbGVmdERpdiA9ICQoJzxkaXYvPicpLmNzcygnZmxvYXQnLCAnbGVmdCcpLAogICAgICAgICAgICByaWdodERpdiA9ICQoJzxkaXYvPicpLmNzcygnZmxvYXQnLCAnbGVmdCcpOwogICAgICAgIGxlZnREaXYuYXBwZW5kKGdyYWRTcGFuKTsKICAgICAgICAkKGRpdikuYXBwZW5kKGxlZnREaXYpLmFwcGVuZChyaWdodERpdikKICAgICAgICAgIC5hcHBlbmQoJCgiPGJyIGNsZWFyPSdib3RoJy8+IikpOwoKICAgICAgICAvLyBIYXZlIHRvIGF0dGFjaCB0aGUgZGl2IHRvIHRoZSBib2R5IGF0IHRoaXMgZWFybHkgcG9pbnQsIHNvIHRoYXQgdGhlCiAgICAgICAgLy8gc3ZnIHRleHQgZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCkgYWN0dWFsbHkgd29ya3MsIGJlbG93LgogICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsKCiAgICAgICAgdmFyIG5zID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJzsKICAgICAgICB2YXIgc3ZnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG5zLCAnc3ZnJyk7CiAgICAgICAgcmlnaHREaXYuYXBwZW5kKHN2Zyk7CiAgICAgICAgdmFyIGcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobnMsICdnJyk7CiAgICAgICAgJChnKS5hdHRyKCJ0cmFuc2Zvcm0iLCAidHJhbnNsYXRlKDAsICIgKyB2TWFyZ2luICsgIikiKTsKICAgICAgICBzdmcuYXBwZW5kQ2hpbGQoZyk7CgogICAgICAgIC8vIG1heCBsYWJlbCB3aWR0aCBuZWVkZWQgdG8gc2V0IHdpZHRoIG9mIHN2ZywgYW5kIHJpZ2h0LWp1c3RpZnkgdGV4dAogICAgICAgIHZhciBtYXhMYmxXaWR0aCA9IDA7CgogICAgICAgIC8vIENyZWF0ZSB0aWNrIG1hcmtzIGFuZCBsYWJlbHMKICAgICAgICAkLmVhY2gobGFiZWxzLCBmdW5jdGlvbihpLCBsYWJlbCkgewogICAgICAgICAgdmFyIHkgPSB0aWNrT2Zmc2V0ICsgaSpzaW5nbGVCaW5IZWlnaHQgKyAwLjU7CgogICAgICAgICAgdmFyIHRoaXNMYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhucywgJ3RleHQnKTsKICAgICAgICAgICQodGhpc0xhYmVsKQogICAgICAgICAgICAudGV4dChsYWJlbHNbaV0pCiAgICAgICAgICAgIC5hdHRyKCd5JywgeSkKICAgICAgICAgICAgLmF0dHIoJ2R4JywgbGFiZWxQYWRkaW5nKQogICAgICAgICAgICAuYXR0cignZHknLCAnMC41ZXgnKTsKICAgICAgICAgIGcuYXBwZW5kQ2hpbGQodGhpc0xhYmVsKTsKICAgICAgICAgIG1heExibFdpZHRoID0gTWF0aC5tYXgobWF4TGJsV2lkdGgsIHRoaXNMYWJlbC5nZXRDb21wdXRlZFRleHRMZW5ndGgoKSk7CgogICAgICAgICAgdmFyIHRoaXNUaWNrID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG5zLCAnbGluZScpOwogICAgICAgICAgJCh0aGlzVGljaykKICAgICAgICAgICAgLmF0dHIoJ3gxJywgMCkKICAgICAgICAgICAgLmF0dHIoJ3gyJywgdGlja1dpZHRoKQogICAgICAgICAgICAuYXR0cigneTEnLCB5KQogICAgICAgICAgICAuYXR0cigneTInLCB5KQogICAgICAgICAgICAuYXR0cignc3Ryb2tlLXdpZHRoJywgMSk7CiAgICAgICAgICBnLmFwcGVuZENoaWxkKHRoaXNUaWNrKTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gTm93IHRoYXQgd2Uga25vdyB0aGUgbWF4IGxhYmVsIHdpZHRoLCB3ZSBjYW4gcmlnaHQtanVzdGlmeQogICAgICAgICQoc3ZnKS5maW5kKCd0ZXh0JykKICAgICAgICAgIC5hdHRyKCdkeCcsIGxhYmVsUGFkZGluZyArIG1heExibFdpZHRoKQogICAgICAgICAgLmF0dHIoJ3RleHQtYW5jaG9yJywgJ2VuZCcpOwogICAgICAgIC8vIEZpbmFsIHNpemUgZm9yIDxzdmc+CiAgICAgICAgJChzdmcpLmNzcyh7CiAgICAgICAgICB3aWR0aDogKG1heExibFdpZHRoICsgbGFiZWxQYWRkaW5nKSArICJweCIsCiAgICAgICAgICBoZWlnaHQ6IHRvdGFsSGVpZ2h0ICsgdk1hcmdpbioyICsgInB4IgogICAgICAgIH0pOwoKICAgICAgICBpZiAob3B0aW9ucy5uYV9jb2xvcikgewogICAgICAgICAgJChkaXYpLmFwcGVuZCgnPGRpdj48aSBzdHlsZT0iYmFja2dyb3VuZDonICsgb3B0aW9ucy5uYV9jb2xvciArCiAgICAgICAgICAgICAgICAgICAgICAgICciPjwvaT4gJyArIG9wdGlvbnMubmFfbGFiZWwgKyAnPC9kaXY+Jyk7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGlmIChvcHRpb25zLm5hX2NvbG9yKSB7CiAgICAgICAgICBjb2xvcnMucHVzaChvcHRpb25zLm5hX2NvbG9yKTsKICAgICAgICAgIGxhYmVscy5wdXNoKG9wdGlvbnMubmFfbGFiZWwpOwogICAgICAgIH0KICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbG9ycy5sZW5ndGg7IGkrKykgewogICAgICAgICAgbGVnZW5kSFRNTCArPSAnPGkgc3R5bGU9ImJhY2tncm91bmQ6JyArIGNvbG9yc1tpXSArICc7b3BhY2l0eTonICsKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5vcGFjaXR5ICsgJyI+PC9pPiAnICsgbGFiZWxzW2ldICsgJzxici8+JzsKICAgICAgICB9CiAgICAgICAgZGl2LmlubmVySFRNTCA9IGxlZ2VuZEhUTUw7CiAgICAgIH0KICAgICAgaWYgKG9wdGlvbnMudGl0bGUpCiAgICAgICAgJChkaXYpLnByZXBlbmQoJzxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206M3B4Ij48c3Ryb25nPicgKwogICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnRpdGxlICsgJzwvc3Ryb25nPjwvZGl2PicpOwogICAgICByZXR1cm4gZGl2OwogICAgfTsKCiAgICB0aGlzLmNvbnRyb2xzLmFkZChsZWdlbmQsIG9wdGlvbnMubGF5ZXJJZCk7CiAgfTsKCiAgbWV0aG9kcy5hZGRMYXllcnNDb250cm9sID0gZnVuY3Rpb24oYmFzZUdyb3Vwcywgb3ZlcmxheUdyb3Vwcywgb3B0aW9ucykgewoKICAgIHZhciBzZWxmID0gdGhpczsKCiAgICAvLyBPbmx5IGFsbG93IG9uZSBsYXllcnMgY29udHJvbCBhdCBhIHRpbWUKICAgIG1ldGhvZHMucmVtb3ZlTGF5ZXJzQ29udHJvbC5jYWxsKHRoaXMpOwoKICAgIHZhciBmaXJzdExheWVyID0gdHJ1ZTsKICAgIHZhciBiYXNlID0ge307CiAgICAkLmVhY2goYXNBcnJheShiYXNlR3JvdXBzKSwgZnVuY3Rpb24oaSwgZykgewogICAgICB2YXIgbGF5ZXIgPSBzZWxmLmxheWVyTWFuYWdlci5nZXRMYXllckdyb3VwKGcsIHRydWUpOwogICAgICBpZiAobGF5ZXIpIHsKICAgICAgICBiYXNlW2ddID0gbGF5ZXI7CgogICAgICAgIC8vIENoZWNrIGlmID4xIGJhc2UgbGF5ZXJzIGFyZSB2aXNpYmxlOyBpZiBzbywgaGlkZSBhbGwgYnV0IHRoZSBmaXJzdCBvbmUKICAgICAgICBpZiAoc2VsZi5oYXNMYXllcihsYXllcikpIHsKICAgICAgICAgIGlmIChmaXJzdExheWVyKSB7CiAgICAgICAgICAgIGZpcnN0TGF5ZXIgPSBmYWxzZTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHNlbGYucmVtb3ZlTGF5ZXIobGF5ZXIpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSk7CiAgICB2YXIgb3ZlcmxheSA9IHt9OwogICAgJC5lYWNoKGFzQXJyYXkob3ZlcmxheUdyb3VwcyksIGZ1bmN0aW9uKGksIGcpIHsKICAgICAgdmFyIGxheWVyID0gc2VsZi5sYXllck1hbmFnZXIuZ2V0TGF5ZXJHcm91cChnLCB0cnVlKTsKICAgICAgaWYgKGxheWVyKSB7CiAgICAgICAgb3ZlcmxheVtnXSA9IGxheWVyOwogICAgICB9CiAgICB9KTsKCiAgICB2YXIgbGF5ZXJzQ29udHJvbCA9IEwuY29udHJvbC5sYXllcnMoYmFzZSwgb3ZlcmxheSwgb3B0aW9ucykuYWRkVG8odGhpcyk7CiAgICB0aGlzLmN1cnJlbnRMYXllcnNDb250cm9sID0gbGF5ZXJzQ29udHJvbDsKICB9OwoKICBtZXRob2RzLnJlbW92ZUxheWVyc0NvbnRyb2wgPSBmdW5jdGlvbigpIHsKICAgIGlmICh0aGlzLmN1cnJlbnRMYXllcnNDb250cm9sKSB7CiAgICAgIHRoaXMuY3VycmVudExheWVyc0NvbnRyb2wucmVtb3ZlRnJvbSh0aGlzKTsKICAgICAgdGhpcy5jdXJyZW50TGF5ZXJzQ29udHJvbCA9IG51bGw7CiAgICB9CiAgfTsKCiAgbWV0aG9kcy5oaWRlR3JvdXAgPSBmdW5jdGlvbihncm91cCkgewogICAgdmFyIHNlbGYgPSB0aGlzOwogICAgJC5lYWNoKGFzQXJyYXkoZ3JvdXApLCBmdW5jdGlvbihpLCBnKSB7CiAgICAgIHZhciBsYXllciA9IHNlbGYubGF5ZXJNYW5hZ2VyLmdldExheWVyR3JvdXAoZywgdHJ1ZSk7CiAgICAgIGlmIChsYXllcikgewogICAgICAgIHNlbGYucmVtb3ZlTGF5ZXIobGF5ZXIpOwogICAgICB9CiAgICB9KTsKICB9OwoKICBtZXRob2RzLnNob3dHcm91cCA9IGZ1bmN0aW9uKGdyb3VwKSB7CiAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAkLmVhY2goYXNBcnJheShncm91cCksIGZ1bmN0aW9uKGksIGcpIHsKICAgICAgdmFyIGxheWVyID0gc2VsZi5sYXllck1hbmFnZXIuZ2V0TGF5ZXJHcm91cChnLCB0cnVlKTsKICAgICAgaWYgKGxheWVyKSB7CiAgICAgICAgc2VsZi5hZGRMYXllcihsYXllcik7CiAgICAgIH0KICAgIH0pOwogIH07CgogIG1ldGhvZHMuYWRkUmFzdGVySW1hZ2UgPSBmdW5jdGlvbih1cmksIGJvdW5kcywgb3BhY2l0eSwgYXR0cmlidXRpb24sIGxheWVySWQsIGdyb3VwKSB7CiAgICAvLyB1cmkgaXMgYSBkYXRhIFVSSSBjb250YWluaW5nIGFuIGltYWdlLiBXZSB3YW50IHRvIHBhaW50IHRoaXMgaW1hZ2UgYXMgYQogICAgLy8gbGF5ZXIgYXQgKHRvcC1sZWZ0KSBib3VuZHNbMF0gdG8gKGJvdHRvbS1yaWdodCkgYm91bmRzWzFdLgoKICAgIC8vIFdlIGNhbid0IHNpbXBseSB1c2UgSW1hZ2VPdmVybGF5LCBhcyBpdCB1c2VzIGJpbGluZWFyIHNjYWxpbmcgd2hpY2ggbG9va3MKICAgIC8vIGF3ZnVsIGFzIHlvdSB6b29tIGluIChhbmQgc29tZXRpbWVzIHNoaWZ0cyBwb3NpdGlvbnMgb3IgZGlzYXBwZWFycykuCiAgICAvLyBJbnN0ZWFkLCB3ZSdsbCB1c2UgYSBUaWxlTGF5ZXIuQ2FudmFzIHRvIGRyYXcgcGllY2VzIG9mIHRoZSBpbWFnZS4KCiAgICAvLyBGaXJzdCwgc29tZSBoZWxwZXIgZnVuY3Rpb25zLgoKICAgIC8vIGRlZ3JlZTJ0aWxlIGNvbnZlcnRzIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFuZCB6b29tIHRvIHggYW5kIHkgdGlsZQogICAgLy8gbnVtYmVycy4gVGhlIHRpbGUgbnVtYmVycyByZXR1cm5lZCBjYW4gYmUgbm9uLWludGVncmFsLCBhcyB0aGVyZSdzIG5vCiAgICAvLyByZWFzb24gdG8gZXhwZWN0IHRoYXQgdGhlIGxhdC9sbmcgaW5wdXRzIGFyZSBleGFjdGx5IG9uIHRoZSBib3JkZXIgb2YgdHdvCiAgICAvLyB0aWxlcy4KICAgIC8vCiAgICAvLyBXZSdsbCB1c2UgdGhpcyB0byBjb252ZXJ0IHRoZSBib3VuZHMgd2UgZ290IGZyb20gdGhlIHNlcnZlciwgaW50byBjb29yZHMKICAgIC8vIGluIHRpbGUtc3BhY2UgYXQgYSBnaXZlbiB6b29tIGxldmVsLiBOb3RlIHRoYXQgb25jZSB3ZSBkbyB0aGUgY29udmVyc2lvbiwKICAgIC8vIHdlIGRvbid0IHRvIGRvIGFueSBtb3JlIHRyaWdvbm9tZXRyeSB0byBjb252ZXJ0IGJldHdlZW4gcGl4ZWwgY29vcmRpbmF0ZXMKICAgIC8vIGFuZCB0aWxlIGNvb3JkaW5hdGVzOyB0aGUgc291cmNlIGltYWdlIHBpeGVsIGNvb3JkcywgZGVzdGluYXRpb24gY2FudmFzCiAgICAvLyBwaXhlbCBjb29yZHMsIGFuZCB0aWxlIGNvb3JkcyBhbGwgY2FuIGJlIHNjYWxlZCBsaW5lYXJseS4KICAgIGZ1bmN0aW9uIGRlZ3JlZTJ0aWxlKGxhdCwgbG5nLCB6b29tKSB7CiAgICAgIC8vIFNlZSBodHRwOi8vd2lraS5vcGVuc3RyZWV0bWFwLm9yZy93aWtpL1NsaXBweV9tYXBfdGlsZW5hbWVzCiAgICAgIHZhciBsYXRSYWQgPSBsYXQgKiBNYXRoLlBJIC8gMTgwOwogICAgICB2YXIgbiA9IE1hdGgucG93KDIsIHpvb20pOwogICAgICB2YXIgeCA9IChsbmcgKyAxODApIC8gMzYwICogbgogICAgICB2YXIgeSA9ICgxIC0gTWF0aC5sb2coTWF0aC50YW4obGF0UmFkKSArICgxIC8gTWF0aC5jb3MobGF0UmFkKSkpIC8gTWF0aC5QSSkgLyAyICogbgogICAgICByZXR1cm4ge3g6IHgsIHk6IHl9OwogICAgfQoKICAgIC8vIEdpdmVuIGEgcmFuZ2UgW2Zyb20sdG8pIGFuZCBlaXRoZXIgb25lIG9yIHR3byBudW1iZXJzLCByZXR1cm5zIHRydWUgaWYKICAgIC8vIHRoZXJlIGlzIGFueSBvdmVybGFwIGJldHdlZW4gW3gseDEpIGFuZCB0aGUgcmFuZ2UtLW9yIGlmIHgxIGlzIG9taXR0ZWQsCiAgICAvLyB0aGVuIHJldHVybnMgdHJ1ZSBpZiB4IGlzIHdpdGhpbiBbZnJvbSx0bykuCiAgICBmdW5jdGlvbiBvdmVybGFwKGZyb20sIHRvLCB4LCAvKiBvcHRpb25hbCAqLyB4MSkgewogICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAzKQogICAgICAgIHgxID0geDsKICAgICAgcmV0dXJuIHggPCB0byAmJiB4MSA+PSBmcm9tOwogICAgfQoKICAgIGZ1bmN0aW9uIGdldENhbnZhc1Ntb290aGluZ1Byb3BlcnR5KGN0eCkgewogICAgICB2YXIgY2FuZGlkYXRlcyA9IFsiaW1hZ2VTbW9vdGhpbmdFbmFibGVkIiwgIm1vekltYWdlU21vb3RoaW5nRW5hYmxlZCIsCiAgICAgICAgICAid2Via2l0SW1hZ2VTbW9vdGhpbmdFbmFibGVkIiwgIm1zSW1hZ2VTbW9vdGhpbmdFbmFibGVkIl07CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2FuZGlkYXRlcy5sZW5ndGg7IGkrKykgewogICAgICAgIGlmICh0eXBlb2YoY3R4W2NhbmRpZGF0ZXNbaV1dKSAhPT0gInVuZGVmaW5lZCIpIHsKICAgICAgICAgIHJldHVybiBjYW5kaWRhdGVzW2ldOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvLyBPdXIgZ2VuZXJhbCBzdHJhdGVneSBpcyB0bzoKICAgIC8vIDEuIExvYWQgdGhlIGRhdGEgVVJJIGluIGFuIEltYWdlKCkgb2JqZWN0LCBzbyB3ZSBjYW4gZ2V0IGl0cyBwaXhlbAogICAgLy8gICAgZGltZW5zaW9ucyBhbmQgdGhlIHVuZGVybHlpbmcgaW1hZ2UgZGF0YS4gKFdlIGNvdWxkIGhhdmUgZG9uZSB0aGlzCiAgICAvLyAgICBieSBub3QgZW5jb2RpbmcgYXMgUE5HIGF0IGFsbCBidXQganVzdCBzZW5kIGFuIGFycmF5IG9mIFJHQkEgdmFsdWVzCiAgICAvLyAgICBmcm9tIHRoZSBzZXJ2ZXIsIGJ1dCB0aGF0IHdvdWxkIGluZmxhdGUgdGhlIEpTT04gdG9vIG11Y2guKQogICAgLy8gMi4gQ3JlYXRlIGEgaGlkZGVuIGNhbnZhcyB0aGF0IHdlIHVzZSBqdXN0IHRvIGV4dHJhY3QgdGhlIGltYWdlIGRhdGEKICAgIC8vICAgIGZyb20gdGhlIEltYWdlICh1c2luZyBDb250ZXh0MkQuZ2V0SW1hZ2VEYXRhKCkpLgogICAgLy8gMy4gQ3JlYXRlIGEgVGlsZUxheWVyLkNhbnZhcyBhbmQgYWRkIGl0IHRvIHRoZSBtYXAuCgogICAgLy8gV2Ugd2FudCB0byBzeW5jaHJvbm91c2x5IGNyZWF0ZSBhbmQgYXR0YWNoIHRoZSBUaWxlTGF5ZXIuQ2FudmFzIChzbyBhbgogICAgLy8gaW1tZWRpYXRlIGNhbGwgdG8gY2xlYXJSYXN0ZXJzKCkgd2lsbCBiZSByZXNwZWN0ZWQsIGZvciBleGFtcGxlKSwgYnV0CiAgICAvLyBJbWFnZSBsb2FkcyBpdHMgZGF0YSBhc3luY2hyb25vdXNseS4gRm9ydHVuYXRlbHkgd2UgY2FuIHJlc29sdmUgdGhpcwogICAgLy8gYnkgcHV0dGluZyBUaWxlTGF5ZXIuQ2FudmFzIGludG8gYXN5bmMgbW9kZSwgd2hpY2ggd2lsbCBsZXQgdXMgY3JlYXRlCiAgICAvLyBhbmQgYXR0YWNoIHRoZSBsYXllciBidXQgaGF2ZSBpdCB3YWl0IHVudGlsIHRoZSBpbWFnZSBpcyBsb2FkZWQgYmVmb3JlCiAgICAvLyBpdCBhY3R1YWxseSBkcmF3cyBhbnl0aGluZy4KCiAgICAvLyBUaGVzZSBhcmUgdGhlIHZhcmlhYmxlcyB0aGF0IHdlIHdpbGwgcG9wdWxhdGUgb25jZSB0aGUgaW1hZ2UgaXMgbG9hZGVkLgogICAgdmFyIGltZ0RhdGEgPSBudWxsOyAvLyAxZCByb3ctbWFqb3IgYXJyYXksIGZvdXIgWzAtMjU1XSBpbnRlZ2VycyBwZXIgcGl4ZWwKICAgIHZhciBpbWdEYXRhTWlwTWFwcGVyID0gbnVsbDsKICAgIHZhciB3ID0gbnVsbDsgICAgICAgLy8gaW1hZ2Ugd2lkdGggaW4gcGl4ZWxzCiAgICB2YXIgaCA9IG51bGw7ICAgICAgIC8vIGltYWdlIGhlaWdodCBpbiBwaXhlbHMKCiAgICAvLyBXZSdsbCB1c2UgdGhpcyBhcnJheSB0byBzdG9yZSBjYWxsYmFja3MgdGhhdCBuZWVkIHRvIGJlIGludm9rZWQgb25jZQogICAgLy8gaW1nRGF0YSwgdywgYW5kIGggaGF2ZSBiZWVuIHJlc29sdmVkLgogICAgdmFyIGltZ0RhdGFDYWxsYmFja3MgPSBbXTsKCiAgICAvLyBDb25zdW1lcnMgb2YgaW1nRGF0YSwgdywgYW5kIGggY2FuIGNhbGwgdGhpcyB0byBiZSBub3RpZmllZCB3aGVuIGRhdGEKICAgIC8vIGlzIGF2YWlsYWJsZS4gVW5saWtlIG1vc3QgYXN5bmMvcHJvbWlzZS1iYXNlZCBBUElzLCB0aGUgY2FsbGJhY2sgd2lsbAogICAgLy8gYmUgaW52b2tlZCBpbW1lZGlhdGVseS9zeW5jaHJvbm91c2x5IGlmIHRoZSBkYXRhIGlzIGFscmVhZHkgYXZhaWxhYmxlLgogICAgZnVuY3Rpb24gZ2V0SW1hZ2VEYXRhKGNhbGxiYWNrKSB7CiAgICAgIGlmIChpbWdEYXRhICE9IG51bGwpIHsKICAgICAgICBjYWxsYmFjayhpbWdEYXRhLCB3LCBoLCBpbWdEYXRhTWlwTWFwcGVyKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBpbWdEYXRhQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spOwogICAgICB9CiAgICB9CgogICAgdmFyIGltZyA9IG5ldyBJbWFnZSgpOwogICAgaW1nLm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgICAvLyBTYXZlIHNpemUKICAgICAgdyA9IGltZy53aWR0aDsKICAgICAgaCA9IGltZy5oZWlnaHQ7CgogICAgICAvLyBDcmVhdGUgYSBkdW1teSBjYW52YXMgdG8gZXh0cmFjdCB0aGUgaW1hZ2UgZGF0YQogICAgICB2YXIgaW1nRGF0YUNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwogICAgICBpbWdEYXRhQ2FudmFzLndpZHRoID0gdzsKICAgICAgaW1nRGF0YUNhbnZhcy5oZWlnaHQgPSBoOwogICAgICBpbWdEYXRhQ2FudmFzLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1nRGF0YUNhbnZhcyk7CgogICAgICB2YXIgaW1nRGF0YUN0eCA9IGltZ0RhdGFDYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgaW1nRGF0YUN0eC5kcmF3SW1hZ2UoaW1nLCAwLCAwKTsKCiAgICAgIC8vIFNhdmUgdGhlIGltYWdlIGRhdGEuCiAgICAgIGltZ0RhdGEgPSBpbWdEYXRhQ3R4LmdldEltYWdlRGF0YSgwLCAwLCB3LCBoKS5kYXRhOwogICAgICBpbWdEYXRhTWlwTWFwcGVyID0gbmV3IE1pcG1hcHBlcihpbWcpOwoKICAgICAgLy8gRG9uZSB3aXRoIHRoZSBjYW52YXMsIHJlbW92ZSBpdCBmcm9tIHRoZSBwYWdlIHNvIGl0IGNhbiBiZSBnYydkLgogICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGltZ0RhdGFDYW52YXMpOwoKICAgICAgLy8gQWxlcnQgYW55IGdldEltYWdlRGF0YSBjYWxsZXJzIHdobyBhcmUgd2FpdGluZy4KICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbWdEYXRhQ2FsbGJhY2tzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgaW1nRGF0YUNhbGxiYWNrc1tpXShpbWdEYXRhLCB3LCBoLCBpbWdEYXRhTWlwTWFwcGVyKTsKICAgICAgfQogICAgICBpbWdEYXRhQ2FsbGJhY2tzID0gW107CiAgICB9OwogICAgaW1nLnNyYyA9IHVyaTsKCiAgICB2YXIgY2FudmFzVGlsZXMgPSBMLnRpbGVMYXllci5jYW52YXMoewogICAgICBvcGFjaXR5OiBvcGFjaXR5LAogICAgICBhdHRyaWJ1dGlvbjogYXR0cmlidXRpb24sCiAgICAgIGRldGVjdFJldGluYTogdHJ1ZSwKICAgICAgYXN5bmM6IHRydWUKICAgIH0pOwoKICAgIGNhbnZhc1RpbGVzLmRyYXdUaWxlID0gZnVuY3Rpb24oY2FudmFzLCB0aWxlUG9pbnQsIHpvb20pIHsKICAgICAgZ2V0SW1hZ2VEYXRhKGZ1bmN0aW9uKGltZ0RhdGEsIHcsIGgsIG1pcG1hcHBlcikgewogICAgICAgIHRyeSB7CiAgICAgICAgICAvLyBUaGUgQ29udGV4dDJEIHdlJ2xsIGJlaW5nIGRyYXdpbmcgb250by4gSXQncyBhbHdheXMgMjU2eDI1Ni4KICAgICAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKCiAgICAgICAgICAvLyBDb252ZXJ0IG91ciBpbWFnZSBkYXRhJ3MgdG9wLWxlZnQgYW5kIGJvdHRvbS1yaWdodCBsb2NhdGlvbnMgaW50bwogICAgICAgICAgLy8geC95IHRpbGUgY29vcmRpbmF0ZXMuIFRoaXMgaXMgZXNzZW50aWFsbHkgZG9pbmcgYSBzcGhlcmljYWwgbWVyY2F0b3IKICAgICAgICAgIC8vIHByb2plY3Rpb24sIHRoZW4gbXVsdGlwbHlpbmcgYnkgMl56b29tLgogICAgICAgICAgdmFyIHRvcExlZnQgPSBkZWdyZWUydGlsZShib3VuZHNbMF1bMF0sIGJvdW5kc1swXVsxXSwgem9vbSk7CiAgICAgICAgICB2YXIgYm90dG9tUmlnaHQgPSBkZWdyZWUydGlsZShib3VuZHNbMV1bMF0sIGJvdW5kc1sxXVsxXSwgem9vbSk7CiAgICAgICAgICAvLyBUaGUgc2l6ZSBvZiB0aGUgaW1hZ2UgaW4geC95IHRpbGUgY29vcmRpbmF0ZXMuCiAgICAgICAgICB2YXIgZXh0ZW50ID0ge3g6IGJvdHRvbVJpZ2h0LnggLSB0b3BMZWZ0LngsIHk6IGJvdHRvbVJpZ2h0LnkgLSB0b3BMZWZ0Lnl9OwoKICAgICAgICAgIC8vIFNob3J0IGNpcmN1aXQgaWYgdGlsZSBpcyB0b3RhbGx5IGRpc2pvaW50IGZyb20gaW1hZ2UuCiAgICAgICAgICBpZiAoIW92ZXJsYXAodGlsZVBvaW50LngsIHRpbGVQb2ludC54ICsgMSwgdG9wTGVmdC54LCBib3R0b21SaWdodC54KSkKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgaWYgKCFvdmVybGFwKHRpbGVQb2ludC55LCB0aWxlUG9pbnQueSArIDEsIHRvcExlZnQueSwgYm90dG9tUmlnaHQueSkpCiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgICAvLyBUaGUgbGluZWFyIHJlc29sdXRpb24gb2YgdGhlIHRpbGUgd2UncmUgZHJhd2luZyBpcyBhbHdheXMgMjU2cHggcGVyIHRpbGUgdW5pdC4KICAgICAgICAgIC8vIElmIHRoZSBsaW5lYXIgcmVzb2x1dGlvbiAoaW4gZWl0aGVyIGRpcmVjdGlvbikgb2YgdGhlIGltYWdlIGlzIGxlc3MgdGhhbiAyNTZweAogICAgICAgICAgLy8gcGVyIHRpbGUgdW5pdCwgdGhlbiB1c2UgbmVhcmVzdCBuZWlnaGJvcjsgb3RoZXJ3aXNlLCB1c2UgdGhlIGNhbnZhcydzIGJ1aWx0LWluCiAgICAgICAgICAvLyBzY2FsaW5nLgogICAgICAgICAgdmFyIGltZ1JlcyA9IHsKICAgICAgICAgICAgeDogdyAvIGV4dGVudC54LAogICAgICAgICAgICB5OiBoIC8gZXh0ZW50LnkKICAgICAgICAgIH07CgogICAgICAgICAgLy8gV2UgY2FuIGRvIHRoZSBhY3R1YWwgZHJhd2luZyBpbiBvbmUgb2YgdGhyZWUgd2F5czoKICAgICAgICAgIC8vIC0gQ2FsbCBkcmF3SW1hZ2UoKS4gVGhpcyBpcyBlYXN5IGFuZCBmYXN0LCBhbmQgcmVzdWx0cyBpbiBzbW9vdGgKICAgICAgICAgIC8vICAgaW50ZXJwb2xhdGlvbiAoYmlsaW5lYXI/KS4gVGhpcyBpcyB3aGF0IHdlIHdhbnQgd2hlbiB3ZSBhcmUKICAgICAgICAgIC8vICAgcmVkdWNpbmcgdGhlIGltYWdlIGZyb20gaXRzIG5hdGl2ZSBzaXplLgogICAgICAgICAgLy8gLSBDYWxsIGRyYXdJbWFnZSgpIHdpdGggaW1hZ2VTbW9vdGhpbmdFbmFibGVkPWZhbHNlLiBUaGlzIGlzIGVhc3kKICAgICAgICAgIC8vICAgYW5kIGZhc3QgYW5kIGdpdmVzIHVzIG5lYXJlc3QtbmVpZ2hib3IgaW50ZXJwb2xhdGlvbiwgd2hpY2ggaXMgd2hhdAogICAgICAgICAgLy8gICB3ZSB3YW50IHdoZW4gZW5sYXJnaW5nIHRoZSBpbWFnZS4gSG93ZXZlciwgaXQncyB1bnN1cHBvcnRlZCBvbiBtYW55CiAgICAgICAgICAvLyAgIGJyb3dzZXJzIChpbmNsdWRpbmcgUXRXZWJraXQpLgogICAgICAgICAgLy8gLSBEbyBhIG1hbnVhbCBuZWFyZXN0LW5laWdoYm9yIGludGVycG9sYXRpb24uIFRoaXMgaXMgd2hhdCB3ZSdsbCBmYWxsCiAgICAgICAgICAvLyAgIGJhY2sgdG8gd2hlbiBlbmxhcmdpbmcsIGFuZCBpbWFnZVNtb290aGluZ0VuYWJsZWQgaXNuJ3Qgc3VwcG9ydGVkLgogICAgICAgICAgLy8gICBJbiB0aGVvcnkgaXQncyBzbG93ZXIsIGJ1dCBzdGlsbCBwcmV0dHkgZmFzdCBvbiBteSBtYWNoaW5lLCBhbmQgdGhlCiAgICAgICAgICAvLyAgIHJlc3VsdHMgbG9vayB0aGUgc2FtZSBBRkFJQ1QuCgogICAgICAgICAgLy8gSXMgaW1hZ2VTbW9vdGhpbmdFbmFibGVkIHN1cHBvcnRlZD8gSWYgc28sIHdlIGNhbiBsZXQgY2FudmFzIGRvCiAgICAgICAgICAvLyBuZWFyZXN0LW5laWdoYm9yIGludGVycG9sYXRpb24gZm9yIHVzLgogICAgICAgICAgdmFyIHNtb290aGluZ1Byb3BlcnR5ID0gZ2V0Q2FudmFzU21vb3RoaW5nUHJvcGVydHkoY3R4KTsKCiAgICAgICAgICBpZiAoc21vb3RoaW5nUHJvcGVydHkgfHwgaW1nUmVzLnggPj0gMjU2ICYmIGltZ1Jlcy55ID49IDI1NikgewogICAgICAgICAgICAvLyBVc2UgYnVpbHQtaW4gc2NhbGluZwoKICAgICAgICAgICAgLy8gVHVybiBvZmYgYW50aS1hbGlhc2luZyBpZiBuZWNlc3NhcnkKICAgICAgICAgICAgaWYgKHNtb290aGluZ1Byb3BlcnR5KSB7CiAgICAgICAgICAgICAgY3R4W3Ntb290aGluZ1Byb3BlcnR5XSA9IGltZ1Jlcy54ID49IDI1NiAmJiBpbWdSZXMueSA+PSAyNTY7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIERvbid0IG5lY2Vzc2FyaWx5IGRyYXcgd2l0aCB0aGUgZnVsbC1zaXplIGltYWdlOyBpZiB3ZSdyZQogICAgICAgICAgICAvLyBkb3duc2NhbGluZywgdXNlIHRoZSBtaXBtYXBwZXIgdG8gZ2V0IGEgcHJlLWRvd25zY2FsZWQgaW1hZ2UKICAgICAgICAgICAgLy8gKHNlZSBjb21tZW50cyBvbiBNaXBtYXBwZXIgY2xhc3MgZm9yIHdoeSB0aGlzIG1hdHRlcnMpLgogICAgICAgICAgICBtaXBtYXBwZXIuZ2V0QnlTaXplKGV4dGVudC54KjI1NiwgZXh0ZW50LnkqMjU2LCBmdW5jdGlvbihtaXApIHsKICAgICAgICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGltYWdlIHdpbGwgZ28gb2ZmIHRoZSBlZGdlIG9mIHRoZSBjYW52YXMtLQogICAgICAgICAgICAgIC8vIHRoYXQncyBPSywgdGhlIGNhbnZhcyBzaG91bGQgY2xpcCBhcHByb3ByaWF0ZWx5LgogICAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UobWlwLAogICAgICAgICAgICAgICAgLy8gQ29udmVydCBhYnMgdGlsZSBjb29yZHMgdG8gcmVsIHRpbGUgY29vcmRzLCB0aGVuICoyNTYgdG8gY29udmVydAogICAgICAgICAgICAgICAgLy8gdG8gcmVsIHBpeGVsIGNvb3JkcwogICAgICAgICAgICAgICAgKHRvcExlZnQueCAtIHRpbGVQb2ludC54KSAqIDI1NiwKICAgICAgICAgICAgICAgICh0b3BMZWZ0LnkgLSB0aWxlUG9pbnQueSkgKiAyNTYsCiAgICAgICAgICAgICAgICAvLyBBbHdheXMgZHJhdyB0aGUgd2hvbGUgdGhpbmcgYW5kIGxldCBjYW52YXMgY2xpcDsgc28gd2UgY2FuIGp1c3QKICAgICAgICAgICAgICAgIC8vIGNvbnZlcnQgZnJvbSBzaXplIGluIHRpbGUgY29vcmRzIHN0cmFpZ2h0IHRvIHBpeGVscwogICAgICAgICAgICAgICAgZXh0ZW50LnggKiAyNTYsCiAgICAgICAgICAgICAgICBleHRlbnQueSAqIDI1NgogICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIFVzZSBtYW51YWwgbmVhcmVzdC1uZWlnaGJvciBpbnRlcnBvbGF0aW9uCgogICAgICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIHNvdXJjZSBpbWFnZSBwaXhlbCBjb29yZGluYXRlcyB0aGF0IGNvcnJlc3BvbmQgd2l0aAogICAgICAgICAgICAvLyB0aGUgdG9wLWxlZnQgYW5kIGJvdHRvbS1yaWdodCBvZiB0aGlzIHRpbGUuIChJZiB0aGUgc291cmNlIGltYWdlCiAgICAgICAgICAgIC8vIG9ubHkgcGFydGlhbGx5IG92ZXJsYXBzIHRoZSB0aWxlLCB3ZSB1c2UgbWF4L21pbiB0byBsaW1pdCB0aGUKICAgICAgICAgICAgLy8gc291cmNlU3RhcnQvRW5kIHRvIG9ubHkgcmVmbGVjdCB0aGUgb3ZlcmxhcHBpbmcgcG9ydGlvbi4pCiAgICAgICAgICAgIHZhciBzb3VyY2VTdGFydCA9IHsKICAgICAgICAgICAgICB4OiBNYXRoLm1heCgwLCBNYXRoLmZsb29yKCh0aWxlUG9pbnQueCAtIHRvcExlZnQueCkgKiBpbWdSZXMueCkpLAogICAgICAgICAgICAgIHk6IE1hdGgubWF4KDAsIE1hdGguZmxvb3IoKHRpbGVQb2ludC55IC0gdG9wTGVmdC55KSAqIGltZ1Jlcy55KSkKICAgICAgICAgICAgfTsKICAgICAgICAgICAgdmFyIHNvdXJjZUVuZCA9IHsKICAgICAgICAgICAgICB4OiBNYXRoLm1pbih3LCBNYXRoLmNlaWwoKHRpbGVQb2ludC54ICsgMSAtIHRvcExlZnQueCkgKiBpbWdSZXMueCkpLAogICAgICAgICAgICAgIHk6IE1hdGgubWluKGgsIE1hdGguY2VpbCgodGlsZVBvaW50LnkgKyAxIC0gdG9wTGVmdC55KSAqIGltZ1Jlcy55KSkKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIC8vIFRoZSBzaXplLCBpbiBkZXN0IHBpeGVscywgdGhhdCBlYWNoIHNvdXJjZSBwaXhlbCBzaG91bGQgb2NjdXB5LgogICAgICAgICAgICAvLyBUaGlzIG1pZ2h0IGJlIGdyZWF0ZXIgb3IgbGVzcyB0aGFuIDEgKGUuZy4gaWYgeCBhbmQgeSByZXNvbHV0aW9uCiAgICAgICAgICAgIC8vIGFyZSB2ZXJ5IGRpZmZlcmVudCkuCiAgICAgICAgICAgIHZhciBwaXhlbFNpemUgPSB7CiAgICAgICAgICAgICAgeDogMjU2IC8gaW1nUmVzLngsCiAgICAgICAgICAgICAgeTogMjU2IC8gaW1nUmVzLnkKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIC8vIEZvciBlYWNoIHBpeGVsIGluIHRoZSBzb3VyY2UgaW1hZ2UgdGhhdCBvdmVybGFwcyB0aGUgdGlsZS4uLgogICAgICAgICAgICBmb3IgKHZhciByb3cgPSBzb3VyY2VTdGFydC55OyByb3cgPCBzb3VyY2VFbmQueTsgcm93KyspIHsKICAgICAgICAgICAgICBmb3IgKHZhciBjb2wgPSBzb3VyY2VTdGFydC54OyBjb2wgPCBzb3VyY2VFbmQueDsgY29sKyspIHsKICAgICAgICAgICAgICAgIC8vIC4uLmV4dHJhY3QgdGhlIHBpeGVsIGRhdGEuLi4KICAgICAgICAgICAgICAgIHZhciBpID0gKChyb3cgKiB3KSArIGNvbCkgKiA0OwogICAgICAgICAgICAgICAgdmFyIHIgPSBpbWdEYXRhW2ldOwogICAgICAgICAgICAgICAgdmFyIGcgPSBpbWdEYXRhW2krMV07CiAgICAgICAgICAgICAgICB2YXIgYiA9IGltZ0RhdGFbaSsyXTsKICAgICAgICAgICAgICAgIHZhciBhID0gaW1nRGF0YVtpKzNdOwogICAgICAgICAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJyZ2JhKCIgKyBbcixnLGIsYS8yNTVdLmpvaW4oIiwiKSArICIpIjsKCiAgICAgICAgICAgICAgICAvLyAuLi5jYWxjdWxhdGUgdGhlIGNvcnJlc3BvbmRpbmcgcGl4ZWwgY29vcmQgaW4gdGhlIGRlc3QgaW1hZ2UKICAgICAgICAgICAgICAgIC8vIHdoZXJlIGl0IHNob3VsZCBiZSBkcmF3bi4uLgogICAgICAgICAgICAgICAgdmFyIHBpeGVsUG9zID0gewogICAgICAgICAgICAgICAgICB4OiAoKChjb2wgLyBpbWdSZXMueCkgKyB0b3BMZWZ0LngpIC0gdGlsZVBvaW50LngpICogMjU2LAogICAgICAgICAgICAgICAgICB5OiAoKChyb3cgLyBpbWdSZXMueSkgKyB0b3BMZWZ0LnkpIC0gdGlsZVBvaW50LnkpICogMjU2CiAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgIC8vIC4uLmFuZCBkcmF3IGEgcmVjdGFuZ2xlIHRoZXJlLgogICAgICAgICAgICAgICAgY3R4LmZpbGxSZWN0KAogICAgICAgICAgICAgICAgICBNYXRoLnJvdW5kKHBpeGVsUG9zLngpLAogICAgICAgICAgICAgICAgICBNYXRoLnJvdW5kKHBpeGVsUG9zLnkpLAogICAgICAgICAgICAgICAgICAvLyBMb29rcyBjcmF6eSwgYnV0IHRoaXMgaXMgbmVjZXNzYXJ5IHRvIHByZXZlbnQgcm91bmRpbmcgZnJvbQogICAgICAgICAgICAgICAgICAvLyBjYXVzaW5nIG92ZXJsYXAgYmV0d2VlbiB0aGlzIHJlY3QgYW5kIGl0cyBuZWlnaGJvcnMuIFRoZQogICAgICAgICAgICAgICAgICAvLyBtaW51ZW5kIGlzIHRoZSBsb2NhdGlvbiBvZiB0aGUgbmV4dCBwaXhlbCwgd2hpbGUgdGhlCiAgICAgICAgICAgICAgICAgIC8vIHN1YnRyYWhlbmQgaXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBjdXJyZW50IHBpeGVsICh0byB0dXJuIGFuCiAgICAgICAgICAgICAgICAgIC8vIGFic29sdXRlIGNvb3JkaW5hdGUgdG8gYSB3aWR0aC9oZWlnaHQpLiBZZXMsIEkgaGFkIHRvIGxvb2sKICAgICAgICAgICAgICAgICAgLy8gdXAgbWludWVuZCBhbmQgc3VidHJhaGVuZC4KICAgICAgICAgICAgICAgICAgTWF0aC5yb3VuZChwaXhlbFBvcy54ICsgcGl4ZWxTaXplLngpIC0gTWF0aC5yb3VuZChwaXhlbFBvcy54KSwKICAgICAgICAgICAgICAgICAgTWF0aC5yb3VuZChwaXhlbFBvcy55ICsgcGl4ZWxTaXplLnkpIC0gTWF0aC5yb3VuZChwaXhlbFBvcy55KSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgIGNhbnZhc1RpbGVzLnRpbGVEcmF3bihjYW52YXMpOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9OwoKICAgIHRoaXMubGF5ZXJNYW5hZ2VyLmFkZExheWVyKGNhbnZhc1RpbGVzLCAiaW1hZ2UiLCBsYXllcklkLCBncm91cCk7CiAgfTsKCiAgbWV0aG9kcy5yZW1vdmVJbWFnZSA9IGZ1bmN0aW9uKGxheWVySWQpIHsKICAgIHRoaXMubGF5ZXJNYW5hZ2VyLnJlbW92ZUxheWVyKCJpbWFnZSIsIGxheWVySWQpOwogIH07CgogIG1ldGhvZHMuY2xlYXJJbWFnZXMgPSBmdW5jdGlvbigpIHsKICAgIHRoaXMubGF5ZXJNYW5hZ2VyLmNsZWFyTGF5ZXJzKCJpbWFnZSIpOwogIH07CgogIGZ1bmN0aW9uIHByZXZlbnRVbmludGVuZGVkWm9vbU9uU2Nyb2xsKG1hcCkgewogICAgLy8gUHJldmVudCB1bndhbnRlZCBzY3JvbGwgY2FwdHVyaW5nLiBTaW1pbGFyIGluIHB1cnBvc2UgdG8KICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9DbGlmZkNsb3VkL0xlYWZsZXQuU2xlZXAgYnV0IHdpdGggYQogICAgLy8gZGlmZmVyZW50IHNldCBvZiBoZXVyaXN0aWNzLgoKICAgIC8vIFRoZSBiYXNpYyBpZGVhIGlzIHRoYXQgd2hlbiBhIG1vdXNld2hlZWwvRE9NTW91c2VTY3JvbGwKICAgIC8vIGV2ZW50IGlzIHNlZW4sIHdlIGRpc2FibGUgc2Nyb2xsIHdoZWVsIHpvb21pbmcgdW50aWwgdGhlCiAgICAvLyB1c2VyIG1vdmVzIHRoZWlyIG1vdXNlIGN1cnNvciBvciBjbGlja3Mgb24gdGhlIG1hcC4gVGhpcwogICAgLy8gaXMgc2xpZ2h0bHkgdHJpY2tpZXIgdGhhbiBqdXN0IGxpc3RlbmluZyBmb3IgbW91c2Vtb3ZlLAogICAgLy8gYmVjYXVzZSBtb3VzZW1vdmUgaXMgZmlyZWQgd2hlbiB0aGUgcGFnZSBpcyBzY3JvbGxlZCwKICAgIC8vIGV2ZW4gaWYgdGhlIHVzZXIgZGlkIG5vdCBwaHlzaWNhbGx5IG1vdmUgdGhlIG1vdXNlLiBXZQogICAgLy8gaGFuZGxlIHRoaXMgYnkgZXhhbWluaW5nIHRoZSBtb3VzZW1vdmUgZXZlbnQncyBzY3JlZW5YCiAgICAvLyBhbmQgc2NyZWVuWSBwcm9wZXJ0aWVzOyBpZiB0aGV5IGNoYW5nZSwgd2Uga25vdyBpdCdzIGEKICAgIC8vICJ0cnVlIiBtb3ZlLgoKICAgIC8vIGxhc3RTY3JlZW4gY2FuIG5ldmVyIGJlIG51bGwsIGJ1dCBpdHMgeCBhbmQgeSBjYW4uCiAgICB2YXIgbGFzdFNjcmVlbiA9IHt4OiBudWxsLCB5OiBudWxsfTsKICAgICQoZG9jdW1lbnQpLm9uKCJtb3VzZXdoZWVsIERPTU1vdXNlU2Nyb2xsIiwgIioiLCBmdW5jdGlvbihlKSB7CiAgICAgIC8vIERpc2FibGUgem9vbWluZyAodW50aWwgdGhlIG1vdXNlIG1vdmVzIG9yIGNsaWNrKQogICAgICBtYXAuc2Nyb2xsV2hlZWxab29tLmRpc2FibGUoKTsKICAgICAgLy8gQW55IG1vdXNlbW92ZSBldmVudHMgYXQgdGhpcyBzY3JlZW4gcG9zaXRpb24gd2lsbCBiZSBpZ25vcmVkLgogICAgICBsYXN0U2NyZWVuID0ge3g6IGUub3JpZ2luYWxFdmVudC5zY3JlZW5YLCB5OiBlLm9yaWdpbmFsRXZlbnQuc2NyZWVuWX07CiAgICB9KTsKICAgICQoZG9jdW1lbnQpLm9uKCJtb3VzZW1vdmUiLCAiKiIsIGZ1bmN0aW9uKGUpIHsKICAgICAgLy8gRGlkIHRoZSBtb3VzZSByZWFsbHkgbW92ZT8KICAgICAgaWYgKGxhc3RTY3JlZW4ueCAhPT0gbnVsbCAmJiBlLnNjcmVlblggIT09IGxhc3RTY3JlZW4ueCB8fCBlLnNjcmVlblkgIT09IGxhc3RTY3JlZW4ueSkgewogICAgICAgIC8vIEl0IHJlYWxseSBtb3ZlZC4gRW5hYmxlIHpvb21pbmcuCiAgICAgICAgbWFwLnNjcm9sbFdoZWVsWm9vbS5lbmFibGUoKTsKICAgICAgICBsYXN0U2NyZWVuID0ge3g6IG51bGwsIHk6IG51bGx9OwogICAgICB9CiAgICB9KTsKICAgICQoZG9jdW1lbnQpLm9uKCJtb3VzZWRvd24iLCAiLmxlYWZsZXQiLCBmdW5jdGlvbihlKSB7CiAgICAgIC8vIENsaWNraW5nIGFsd2F5cyBlbmFibGVzIHpvb21pbmcuCiAgICAgIG1hcC5zY3JvbGxXaGVlbFpvb20uZW5hYmxlKCk7CiAgICAgIGxhc3RTY3JlZW4gPSB7eDogbnVsbCwgeTogbnVsbH07CiAgICB9KTsKICB9CgogIEhUTUxXaWRnZXRzLndpZGdldCh7CiAgICBuYW1lOiAibGVhZmxldCIsCiAgICB0eXBlOiAib3V0cHV0IiwKICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGVsLCB3aWR0aCwgaGVpZ2h0KSB7CiAgICAgIC8vIGhhcmQtY29kaW5nIGNlbnRlci96b29tIGhlcmUgZm9yIGEgbm9uLWVtcHR5IGluaXRpYWwgdmlldywgc2luY2UgdGhlcmUKICAgICAgLy8gaXMgbm8gd2F5IGZvciBodG1sd2lkZ2V0cyB0byBwYXNzIGluaXRpYWwgcGFyYW1zIHRvIGluaXRpYWxpemUoKQogICAgICB2YXIgbWFwID0gTC5tYXAoZWwsIHsKICAgICAgICBjZW50ZXI6IFs1MS41MDUsIC0wLjA5XSwKICAgICAgICB6b29tOiAxMwogICAgICB9KTsKCiAgICAgIHByZXZlbnRVbmludGVuZGVkWm9vbU9uU2Nyb2xsKG1hcCk7CgogICAgICAvLyBTdG9yZSBzb21lIHN0YXRlIGluIHRoZSBtYXAgb2JqZWN0CiAgICAgIG1hcC5sZWFmbGV0ciA9IHsKICAgICAgICAvLyBIYXMgdGhlIG1hcCBldmVyIHJlbmRlcmVkIHN1Y2Nlc3NmdWxseT8KICAgICAgICBoYXNSZW5kZXJlZDogZmFsc2UsCiAgICAgICAgLy8gRGF0YSB0byBiZSByZW5kZXJlZCB3aGVuIHJlc2l6ZSBpcyBjYWxsZWQgd2l0aCBhcmVhICE9IDAKICAgICAgICBwZW5kaW5nUmVuZGVyRGF0YTogbnVsbAogICAgICB9OwoKICAgICAgaWYgKCFIVE1MV2lkZ2V0cy5zaGlueU1vZGUpIHJldHVybiBtYXA7CgogICAgICAvLyBUaGUgbWFwIGlzIHJlbmRlcmVkIHN0YXRpY2x5IChubyBvdXRwdXQgYmluZGluZywgc28gbm8gdGhpcy5nZXRJZCgpKQogICAgICBpZiAodHlwZW9mIHRoaXMuZ2V0SWQgPT09ICd1bmRlZmluZWQnKSByZXR1cm4gbWFwOwoKICAgICAgbWFwLmlkID0gdGhpcy5nZXRJZChlbCk7CgogICAgICAvLyBTdG9yZSB0aGUgbWFwIG9uIHRoZSBlbGVtZW50IHNvIHdlIGNhbiBmaW5kIGl0IGxhdGVyIGJ5IElECiAgICAgICQoZWwpLmRhdGEoImxlYWZsZXQtbWFwIiwgbWFwKTsKCiAgICAgIC8vIFdoZW4gdGhlIG1hcCBpcyBjbGlja2VkLCBzZW5kIHRoZSBjb29yZGluYXRlcyBiYWNrIHRvIHRoZSBhcHAKICAgICAgbWFwLm9uKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICBTaGlueS5vbklucHV0Q2hhbmdlKG1hcC5pZCArICdfY2xpY2snLCB7CiAgICAgICAgICBsYXQ6IGUubGF0bG5nLmxhdCwKICAgICAgICAgIGxuZzogZS5sYXRsbmcubG5nLAogICAgICAgICAgJy5ub25jZSc6IE1hdGgucmFuZG9tKCkgLy8gRm9yY2UgcmVhY3Rpdml0eSBpZiBsYXQvbG5nIGhhc24ndCBjaGFuZ2VkCiAgICAgICAgfSk7CiAgICAgIH0pOwoKICAgICAgdmFyIGdyb3VwVGltZXJJZCA9IG51bGw7CgogICAgICBtYXAKICAgICAgICAub24oJ21vdmVlbmQnLCBmdW5jdGlvbihlKSB7IHVwZGF0ZUJvdW5kcyhlLnRhcmdldCk7IH0pCiAgICAgICAgLm9uKCdsYXllcmFkZCBsYXllcnJlbW92ZScsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgIC8vIElmIHRoZSBsYXllciB0aGF0J3MgY29taW5nIG9yIGdvaW5nIGlzIGEgZ3JvdXAgd2UgY3JlYXRlZCwgdGVsbAogICAgICAgICAgLy8gdGhlIHNlcnZlci4KICAgICAgICAgIGlmIChtYXAubGF5ZXJNYW5hZ2VyLmdldEdyb3VwTmFtZUZyb21MYXllckdyb3VwKGUubGF5ZXIpKSB7CiAgICAgICAgICAgIC8vIEJ1dCB0byBhdm9pZCBjaGF0dGluZXNzLCBjb2FsZXNjZSBldmVudHMKICAgICAgICAgICAgaWYgKGdyb3VwVGltZXJJZCkgewogICAgICAgICAgICAgIGNsZWFyVGltZW91dChncm91cFRpbWVySWQpOwogICAgICAgICAgICAgIGdyb3VwVGltZXJJZCA9IG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZ3JvdXBUaW1lcklkID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICBncm91cFRpbWVySWQgPSBudWxsOwogICAgICAgICAgICAgIFNoaW55Lm9uSW5wdXRDaGFuZ2UobWFwLmlkICsgJ19ncm91cHMnLAogICAgICAgICAgICAgICAgbWFwLmxheWVyTWFuYWdlci5nZXRWaXNpYmxlR3JvdXBzKCkpOwogICAgICAgICAgICB9LCAxMDApOwogICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgcmV0dXJuIG1hcDsKICAgIH0sCiAgICByZW5kZXJWYWx1ZTogZnVuY3Rpb24oZWwsIGRhdGEsIG1hcCkgewogICAgICAvLyBMZWFmbGV0IGRvZXMgbm90IGJlaGF2ZSB3ZWxsIHdoZW4geW91IHNldCB1cCBhIGJ1bmNoIG9mIGxheWVycyB3aGVuCiAgICAgIC8vIHRoZSBtYXAgaXMgbm90IHZpc2libGUgKHdpZHRoL2hlaWdodCA9PSAwKS4gUG9wdXBzIGdldCBtaXNhbGlnbmVkCiAgICAgIC8vIHJlbGF0aXZlIHRvIHRoZWlyIG93bmluZyBtYXJrZXJzLCBhbmQgdGhlIGZpdEJvdW5kcyBjYWxjdWxhdGlvbnMKICAgICAgLy8gYXJlIG9mZi4gVGhlcmVmb3JlIHdlIHdhaXQgdW50aWwgdGhlIG1hcCBpcyBhY3R1YWxseSBzaG93aW5nIHRvCiAgICAgIC8vIHJlbmRlciB0aGUgdmFsdWUgKHdlIHJlbHkgb24gdGhlIHJlc2l6ZSgpIGNhbGxiYWNrIGJlaW5nIGludm9rZWQKICAgICAgLy8gYXQgdGhlIGFwcHJvcHJpYXRlIHRpbWUpLgogICAgICAvLwogICAgICAvLyBUaGVyZSBtYXkgYmUgYW4gaXNzdWUgd2l0aCBsZWFmbGV0UHJveHkoKSBjYWxscyBiZWluZyBtYWRlIHdoaWxlCiAgICAgIC8vIHRoZSBtYXAgaXMgbm90IGJlaW5nIHZpZXdlZC0tbm90IHN1cmUgd2hhdCB0aGUgcmlnaHQgc29sdXRpb24gaXMKICAgICAgLy8gdGhlcmUuCiAgICAgIGlmIChlbC5vZmZzZXRXaWR0aCA9PT0gMCB8fCBlbC5vZmZzZXRIZWlnaHQgPT09IDApIHsKICAgICAgICBtYXAubGVhZmxldHIucGVuZGluZ1JlbmRlckRhdGEgPSBkYXRhOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBtYXAubGVhZmxldHIucGVuZGluZ1JlbmRlckRhdGEgPSBudWxsOwoKICAgICAgLy8gTWVyZ2UgZGF0YSBvcHRpb25zIGludG8gZGVmYXVsdHMKICAgICAgdmFyIG9wdGlvbnMgPSAkLmV4dGVuZCh7IHpvb21Ub0xpbWl0czogImFsd2F5cyIgfSwgZGF0YS5vcHRpb25zKTsKCiAgICAgIGlmICghbWFwLmxheWVyTWFuYWdlcikgewogICAgICAgIG1hcC5jb250cm9scyA9IG5ldyBDb250cm9sU3RvcmUobWFwKTsKICAgICAgICBtYXAubGF5ZXJNYW5hZ2VyID0gbmV3IExheWVyTWFuYWdlcihtYXApOwogICAgICB9IGVsc2UgewogICAgICAgIG1hcC5jb250cm9scy5jbGVhcigpOwogICAgICAgIG1hcC5sYXllck1hbmFnZXIuY2xlYXIoKTsKICAgICAgfQoKICAgICAgdmFyIGV4cGxpY2l0VmlldyA9IGZhbHNlOwogICAgICBpZiAoZGF0YS5zZXRWaWV3KSB7CiAgICAgICAgZXhwbGljaXRWaWV3ID0gdHJ1ZTsKICAgICAgICBtYXAuc2V0Vmlldy5hcHBseShtYXAsIGRhdGEuc2V0Vmlldyk7CiAgICAgIH0KICAgICAgaWYgKGRhdGEuZml0Qm91bmRzKSB7CiAgICAgICAgZXhwbGljaXRWaWV3ID0gdHJ1ZTsKICAgICAgICBtZXRob2RzLmZpdEJvdW5kcy5hcHBseShtYXAsIGRhdGEuZml0Qm91bmRzKTsKICAgICAgfQoKICAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB6b29tVG9MaW1pdHMgb3B0aW9uIHNheXMgdGhhdCB0aGUgbWFwIHNob3VsZCBiZQogICAgICAvLyB6b29tZWQgdG8gbWFwIGVsZW1lbnRzLgogICAgICBmdW5jdGlvbiBuZWVkc1pvb20oKSB7CiAgICAgICAgcmV0dXJuIG9wdGlvbnMuem9vbVRvTGltaXRzID09PSAiYWx3YXlzIiB8fAogICAgICAgICAgICAgICAob3B0aW9ucy56b29tVG9MaW1pdHMgPT09ICJmaXJzdCIgJiYgIW1hcC5sZWFmbGV0ci5oYXNSZW5kZXJlZCk7CiAgICAgIH0KCiAgICAgIGlmICghZXhwbGljaXRWaWV3ICYmIG5lZWRzWm9vbSgpKSB7CiAgICAgICAgaWYgKGRhdGEubGltaXRzKSB7CiAgICAgICAgICAvLyBVc2UgdGhlIG5hdHVyYWwgbGltaXRzIG9mIHdoYXQncyBiZWluZyBkcmF3biBvbiB0aGUgbWFwCiAgICAgICAgICAvLyBJZiB0aGUgc2l6ZSBvZiB0aGUgYm91bmRpbmcgYm94IGlzIDAsIGxlYWZsZXQgZ2V0cyBhbGwgd2VpcmQKICAgICAgICAgIHZhciBwYWQgPSAwLjAwNjsKICAgICAgICAgIGlmIChkYXRhLmxpbWl0cy5sYXRbMF0gPT09IGRhdGEubGltaXRzLmxhdFsxXSkgewogICAgICAgICAgICBkYXRhLmxpbWl0cy5sYXRbMF0gPSBkYXRhLmxpbWl0cy5sYXRbMF0gLSBwYWQ7CiAgICAgICAgICAgIGRhdGEubGltaXRzLmxhdFsxXSA9IGRhdGEubGltaXRzLmxhdFsxXSArIHBhZDsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChkYXRhLmxpbWl0cy5sbmdbMF0gPT09IGRhdGEubGltaXRzLmxuZ1sxXSkgewogICAgICAgICAgICBkYXRhLmxpbWl0cy5sbmdbMF0gPSBkYXRhLmxpbWl0cy5sbmdbMF0gLSBwYWQ7CiAgICAgICAgICAgIGRhdGEubGltaXRzLmxuZ1sxXSA9IGRhdGEubGltaXRzLmxuZ1sxXSArIHBhZDsKICAgICAgICAgIH0KICAgICAgICAgIG1hcC5maXRCb3VuZHMoWwogICAgICAgICAgICBbIGRhdGEubGltaXRzLmxhdFswXSwgZGF0YS5saW1pdHMubG5nWzBdIF0sCiAgICAgICAgICAgIFsgZGF0YS5saW1pdHMubGF0WzFdLCBkYXRhLmxpbWl0cy5sbmdbMV0gXQogICAgICAgICAgXSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIG1hcC5maXRXb3JsZCgpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgZm9yICh2YXIgaSA9IDA7IGRhdGEuY2FsbHMgJiYgaSA8IGRhdGEuY2FsbHMubGVuZ3RoOyBpKyspIHsKICAgICAgICB2YXIgY2FsbCA9IGRhdGEuY2FsbHNbaV07CiAgICAgICAgaWYgKG1ldGhvZHNbY2FsbC5tZXRob2RdKQogICAgICAgICAgbWV0aG9kc1tjYWxsLm1ldGhvZF0uYXBwbHkobWFwLCBjYWxsLmFyZ3MpOwogICAgICAgIGVsc2UKICAgICAgICAgIGNvbnNvbGUubG9nKCJVbmtub3duIG1ldGhvZCAiICsgY2FsbC5tZXRob2QpOwogICAgICB9CgogICAgICBtYXAubGVhZmxldHIuaGFzUmVuZGVyZWQgPSB0cnVlOwoKICAgICAgaWYgKCFIVE1MV2lkZ2V0cy5zaGlueU1vZGUpIHJldHVybjsKCiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHVwZGF0ZUJvdW5kcyhtYXApOyB9LCAxKTsKICAgIH0sCiAgICByZXNpemU6IGZ1bmN0aW9uKGVsLCB3aWR0aCwgaGVpZ2h0LCBtYXApIHsKICAgICAgbWFwLmludmFsaWRhdGVTaXplKCk7CiAgICAgIGlmIChtYXAubGVhZmxldHIucGVuZGluZ1JlbmRlckRhdGEpIHsKICAgICAgICB0aGlzLnJlbmRlclZhbHVlKGVsLCBtYXAubGVhZmxldHIucGVuZGluZ1JlbmRlckRhdGEsIG1hcCk7CiAgICAgIH0KICAgIH0KICB9KTsKCiAgaWYgKCFIVE1MV2lkZ2V0cy5zaGlueU1vZGUpIHJldHVybjsKCiAgU2hpbnkuYWRkQ3VzdG9tTWVzc2FnZUhhbmRsZXIoJ2xlYWZsZXQtY2FsbHMnLCBmdW5jdGlvbihkYXRhKSB7CiAgICB2YXIgaWQgPSBkYXRhLmlkOwogICAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOwogICAgdmFyIG1hcCA9IGVsID8gJChlbCkuZGF0YSgnbGVhZmxldC1tYXAnKSA6IG51bGw7CiAgICBpZiAoIW1hcCkgewogICAgICBjb25zb2xlLmxvZygiQ291bGRuJ3QgZmluZCBtYXAgd2l0aCBpZCAiICsgaWQpOwogICAgICByZXR1cm47CiAgICB9CgogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmNhbGxzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBjYWxsID0gZGF0YS5jYWxsc1tpXTsKICAgICAgaWYgKGNhbGwuZGVwZW5kZW5jaWVzKSB7CiAgICAgICAgU2hpbnkucmVuZGVyRGVwZW5kZW5jaWVzKGNhbGwuZGVwZW5kZW5jaWVzKTsKICAgICAgfQogICAgICBpZiAobWV0aG9kc1tjYWxsLm1ldGhvZF0pCiAgICAgICAgbWV0aG9kc1tjYWxsLm1ldGhvZF0uYXBwbHkobWFwLCBjYWxsLmFyZ3MpOwogICAgICBlbHNlCiAgICAgICAgY29uc29sZS5sb2coIlVua25vd24gbWV0aG9kICIgKyBjYWxsLm1ldGhvZCk7CiAgICB9CiAgfSk7Cgp9KSgpOwoKCgovLyBJbiBSTWFya2Rvd24ncyBzZWxmLWNvbnRhaW5lZCBtb2RlLCB3ZSBkb24ndCBoYXZlIGEgd2F5IHRvIGNhcnJ5IGFyb3VuZCB0aGUKLy8gaW1hZ2VzIHRoYXQgTGVhZmxldCBuZWVkcyBidXQgZG9lc24ndCBsb2FkIGludG8gdGhlIHBhZ2UuIEluc3RlYWQsIHdlJ2xsIHNldAovLyBkYXRhIFVSSXMgZm9yIHRoZSBkZWZhdWx0IG1hcmtlciwgYW5kIGxldCBhbnkgb3RoZXJzIGJlIGxvYWRlZCB2aWEgQ0ROLgppZiAodHlwZW9mKEwuSWNvbi5EZWZhdWx0LmltYWdlUGF0aCkgPT09ICJ1bmRlZmluZWQiKSB7CiAgTC5JY29uLkRlZmF1bHQuaW1hZ2VQYXRoID0gImh0dHA6Ly9jZG4ubGVhZmxldGpzLmNvbS9sZWFmbGV0LTAuNy4zL2ltYWdlcyI7CgogIGlmIChMLkJyb3dzZXIucmV0aW5hKSB7CiAgICBMLkljb24uRGVmYXVsdC5wcm90b3R5cGUub3B0aW9ucy5pY29uVXJsID0gImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRElBQUFCU0NBWUFBQUFXeTRmckFBQVBpRWxFUVZSNDJ0MWJDVkNVNXhrbWJhYnRaSkpPTytsMG1oZ1QweVFlMFdYWmd6MjU3ME5COEk2SjZVemFUQm9PUlJGRXJ1VkdEaFdVUFJBUVJGRlJFRG5WeEN0RUJSYjI0REJORTNXYWFhdHBrbWx1bzRtK2ZkOXY5OTlvbEdWQkR1M09QTGorLy9zKzcvVzkzL2Y5Ly82L0V3QTQvVDlnM0FsRk9VZWVVR1IydU1xek95SmsyUjJ4MHF5T0Ftbm1rUzNTckNQclpKbEhsc3F6anlwY3M0OU9YMUpmLy9QN0toRDg4NUEwdTEwbXkyb3ZRc2N2eWJJNndFRjhpdkk3cEZudEFWNnFrdzlQV1NCSzFiRW5aUmx0bTJXWjdSOGg0RmJJMFZHMzNHUGdYWGdDQXJhK0E0RUluOEtUNEpIL0ZpZ29pSi9JSXo2VFpiVlZLTExhbjV1MFFFU3Fsa2NrV1czcDBzeTJieERBZ1p3TzEzVER5dG9CK05QZTkremlsZDJERUZHdUI3L05wekRvZHJpRjU1bzBvN1hJUlhYb054TWFpQ1NqOVZVMDlDOEVFTnh5ajBDNHRodGVyaDJFVit2ZXV3T3I2czdEeTNzc29POTNrM2xsenhCRTZQVGdrWGNNT0Y3RUo5S010cWpSOUpGRFFuTlY5YitRcWxxcUVFQ1FaN1RCZ3UxbllkWHVJWGdWbmVTd1l0Y2dSRmIxUTFpRkdVTEx6UkNzTTkwR09yWmdoeGtpS3Z0aGVjMGdyTHBGbHhDdTZjS2gxdzZjSFVTYmN0UGh4OFlsRUVsdTQrTlNWZk5wQkJBQ3RweUdsYnNHbUJPRWxSaE1CRG9mZ2s0R29iT2pRWEM1Q1JaaVVDL1ZEdG40cUxyQkpaM0EyY05nK25FNFAzMVBnU0RCYkltcTVVTkplak1RRnFpN2NDaWNaM2laQlRBQVFWb1RCSTRES0tDVkdCREhINm5yQlJsV3hXcjdzbGpWSWhsVElETFZvUmtTMWVIL1NOSVBnenl6RlJaVjlObkcrK0xxUWN5b0dRTFFnZkZFSUZZcGN1ZUF6YzZTU2lNT3RUWWdIOUNYcitXcFRieFJCZUtscW45VWt0WmtSb0FDWjVQbE84MVlnZk1NNFJYOUVLQXhUU2pDZHZUakVMUFlXMTdkRDhyc2RpQmZFQmNsU1kyUE94UUlIbmxJa25yb0VBSms2VTJ3cE1MSVNGL2FOUVNoV0FWL3RXbFNFSUsyVnFCTnNyMjAwZ1J5R21Mb2t5UzE4Y1RkRnRBN0FuRk5iY3hBQUNHTXJRdERMQWpxQlQrMWNWSkJOc2syK2JCUTF3T2NYNUsweHMxMkE4R3l6WFJOYWZnZUFZRmIzbUVrckJJNEkvbVdHVWVOUUkxbHlwMlBvTzlqNGFES2NINEViZTBFOGczeGd5eWxjYzZ3Z2JpbU5qU1NvRnRXSzFzVHFMUmgyQk0rU09nSWZER0xKTDhJRzNaWmpVWC9WaXl2R1lMRk93ZFpuL2xqWUk3eXpzZWU0VGpjc1YvSVIzRnFRK3RkQXhFbk5TakZ5UWVCRUs3cGdSVm9kRW5WSVBoc056cUVZSzBabHVGc1JucTNZakgyMktKeUE2ejR5VG1TcFo1emxIOFJUdldrdDFDckI4NVBZVXFqengyQnVHNnNQeWZlZUFBOHNqdHdwaGhpQ0ZTYndYdWIwUzdJU1BpT0Fadk80aDA0OHhTZkJNK2NEcERpZUNaT2dnU3o2SkhkQnY1RkozQ042TFBKUjFRTWdPOTIwNGgyYUFMZ2REeHpqbHA0a3c4WWFIS3lCU0pKUGlnV2I2d0hRaVJtYnhrS0wwUURYa2hnRDk0WXhHS3NHc2tUUWt2ZnhWbmxJSEJjQk5ma2Vneml3QjNIQW5IRHVHeW5SWGNwL3V0WFpoclJIaVdNNUNQTGpiZHdIVkRZQWhGdDNKOHJUdG9QYnBrdFNEckU0SU5aOGl3MTJrVVlFcFBzNGtvemVPVzBBM0VRSW92YlljZnhJVGo3OTh2d3hiZlg0T3IxSDhCNDZST283ZndidktZOWJwTnp5MmhtaVNPT3lNckJFZTJSVDV4Lzd0akh4Q0ZLMmwvNFl5QkorOTVIUUFCbWliS3pFSnZSczlSZ0Y0RnFFNU1sZUdTM0F1bUxOKzZENGxZamZJZU9EL2U1ZVJPZzdzejdvRWc3d0hSazZZM1lpLzJNSndUN2JDUzc1QnZKQnVHc1N2cUlEMWdnYUh5ZWFBTWVRRVJneWFqQmczQkc4U2d4REFzdkpGeFVPY0JrZzdkME1sM1hqZnVoQ3l2ZzZPZml4MStBbDZxQjZmcHVlb3R4c2NrRmg1QTkyK1FieWRIdzR2eW1HSnhFRytyV2lSTDNnb0pXY1N3dndiUEVDTzViRGNNaVJHTm1jaFM0YTFJOWtQNjJEaE9NOXRQYWQ0bnBFaGFVZFRQT3NQSit1N2JKTjg1UHBhcUo2WW9UNnhLY1JJbDFwUWp3eEl1a3hYaHlJWTU3TjFTd2g3RHlBU2JybTM4TVNIZFJVU3RjKy80R2pPVVRWMzJhY2JobE5qTk82cFdSN0ZQVGs2eFgzbEdtSzB5czB6cmhuMFpod2g3d0szaWJuVnlnNndlM0xRYTdXRlF4eUdTcGlxUmJlL284alBYVGUrRUs0eERqRUNIT3hkWVJZYzgrK1VoeWZnWEhtYTV3L1o1bUorSDYzVDNDaE4zWTZPL2d1TWN4ajhOR2ljTERnWXlRM0NLY25zVWJNQnVvYTdqNDhaZ0QrZXJxZGN6cWJzWVRwdWxqM0xTdTJQT0JmQ1E1OHBuMEVIMU93b1RhZnd2WDErSlYyVm1JeEV3SGxKbEJzZGt3TEh5Mm1aamNnakk5a0o0WW5iaDYvWHU0bDA5WWZoUGpDc1NKZzdocEliYm5nLzkyTTVNam4wa1BjZGxKR0YvN0pRSkNTcnNnQXNlZUh6b3FMKzRiRm5TZTVFSkt6Z0hwZWFUc2czdjlyQ3J0WUZ6K2hTY1pkekFHWXM4SFg4NEg5Sm4wS0FZblFmeXVJUVQ0WTVtbzBha2lNaFFlRGg0NHRFZ3VYR2NFMGlQODQ1TXZ4eHpFalJzM1FaNVV4M2hDdG5VeGJxcTZQUi84Y1JkQWN1U3oxWWZ6R0VoTm0yQmREZmprdncwTGNUWUtva0NLK29hRkFvbElqaURGQllsMDIvb3VqRG1RQzFjK1p4ekMrQm9JcDJ0MzVIWEhQckRuQS9sSWN1UXo2U0tPT0FuV1Zxc1JiSHNjamlkRE5mMGdSV0Y3Q05YMk0xbDNWVE9RYm1wZDU1Z0RxVDAxeERoa21CVGlKTWhHc0IraXNkclBiR2U2d3JVMTVSakl6a1FFeUhCM0dxWWJZQ0FpU2VId0NNQm1JN21BWWl3dDZnclg3UVQ5aDVkSEhjUS9QL3NLbEVtN0dZZDM3bEhHR2FMdXQydGJpckQ1aVQ2VHJpQ3VLc1ZKc0xyQ3d5V3VpaDJZai91bk1DMlZGbGZzZ3I1aG9keHNaSElFWlZvVGtQNzg3QVB3N1RYSFp5L2FjLzI1ckozcFNwUDI0dFJyWm55ZVcwMTJiYnRaYlM5QWVmS1orYjZtTXRqSlM2VjZHUC96T1Izd0srcGtRbjdiekhiSkNDUkRzcUZsQnB6K2RqSENWN2Eyd01Vci94MHhpTSsrdWdwcnE0NWJuRmhiaGROb0YrTUtMT3QzMkM3NVN2cUliN3hVTzMvRmRyLzh1TXFETG1zcXdVM1ZpcEgyUXpBMmszaFRyMTFJQ25xWkhNbjdGK0hDRklmWlFRNUpmRFZVdlcxbXp2NzA4L1YzMTZGVi93RjRKZTloc2dTdjNHT01ZejcxSmc2YmtlelMwQ041TjFXTGhTT3Vzc1cyalJlc3Juek5aWFVGbTVQblcwbmwyQ2NpVkxRSGViSEJKaDlVMGcxUzNHWVFENGVRakgyUVdIMEMwdXR3MTVEWEFFSXliRDBueG9Vc1lQTVptejRONTlIWUUrSzBTenlDMk1vM2JJSHc0elRUK0t0MzNFU0FYL0ZaQ01Xb3ZVdE1JTXp2SFJGS0pBOUcrVkFHdko3SVBzS0dDM0hkRFlJNHFud3poSlFabVE1bDJBT0RjTVNXYjZtSjZmZ1duK0g0YnN4Yld6WDl0bXQybDlYbDdmelljcHdKR2hsNU1JNVhFU29MOGthR0tCOVhXd3c4eE9vWUlYQnJEM2h2T2duSzlCYkVZZHlwSHNjdFNCY0dZTGJKK0ZNdmJ1cHoyQWFuSjAxdUFQTFZKYWI4OEIwM0gxeGlkS0g4V0IwVENDcTFLTkVNNFlnUkRtN0ZSbHlzK204TDZHNmdKTG1Qa3B1cXhoSlUwc3Q4SkY4Rk1lVitkd1RpcEZMOXpEbEdld21CMXdZZHpKaC9xUmxjY250SERjcWV2QkN2Nk5CWjN4SXorQ0dQNXhZVEtJb01JTVp6bytVVElBSzNXUktnVUxVQitlZ2NyVHMvN0EwNlhwUTIwVGxhaStPNG1tMERLTHVTQWdQd2tXZ3FJY09ra0MrQk9CUmRWbGNDK2NpTDBrVU5HNGpvZGQzdm5LTTEzeUhBSy84VUJHNm5UQnJCT1VjL3BmREJSWko4OGNnOUR1UWJMMXJ6eGR3M3l4NjFleFBiT1Vhemk0UmQ4VnFZTWhCSXd5dW5GNXl6OVZNQ1VWNnZ4UStFQ0pjSDhzMDVTbE15NHQxNDV4aTFqQWtqZkl1N0dJRVN4ellQU2FjQzFHZmtnM2ZoR2JENmRkTWxWdnVDUXovMG9IQWZLY2xTbWlBQUswSk43NXpkQy9PeTlKTUthbkt5VHhCdk9HQUpKRWJkNGZBdlZyeG85VXVreE1mWndidTRod1dpS0RMQ1hDU2ZUTkFVVGJhOUNzNXgxU0Q0T0J3SW00cWpOUU9rS0UxdUJIK2FRa3NzVlptYnFaOFVDTEF2eVM1Qm5MRGYyaHZhRTZQK01aUWZwWW5nc3VCZDJBMStXN0VxQlVaNE1VTS9LWEF2TWpHYkh2bTIzZ0NYYUkxeVREOVBvN0tleldCSkI4RVhwMEFDRDBzK0o2Tm5Ra0d6SkdkUGxGREhCZEkrNXQvWitkR2FRQzRiSHB2T2dnK3V6bkpjSUdlcmVpWVV5a0lqcytXVzIybXJCaTlXTGJxbkp4OXdsdWdrSWxIaWZ2QkdjZ0xOS0xQUTRFU0ErcEN6STRqZnd5MkFqZmY4Q0FkdVd6eTRyTGpubldFR3FGZG1wZmRNQ0tnYVpFT1pjNXFyeGczbldNMjhjWG1vaGhldFBjcXFzbjR2ZUcwMk1jekRtV1ZtV3MrNHdqbXIxOFl2V0ZmTEJWSTNiazhIdWJ4WjVzcFZSWkhUeVF6SnNTb3ZvUEh4aEFLclFkeUtyRk5jRUQvd284cG5qdXZ6V3JnSGF5SnlJWTViejJJVHcxeWNKcDlQN1I0WDhMRENISy9MMmwwc0VINjB0bXJjSHp6alJldDR0TTloVmNrK3hRektOeG5HTFJEcU8rS1VaWjdncW5IZFpZMW14b1E4UVVmamxZd0kxdGFDQnk1WUJLcktjeW5kOXdUcU53dWZFZmhycXExN0tvMTZ3aDRGcFBGSzQ1WnRLRE5PZ25zaFpqRGZBSDlNN3I0bnlQT05qRXVhL2haWGphdjhOelRUSnZUaFRGNlVwcEp0RitKcXdBMk5FMTVVNmVGWmRHZ3NtSnZSeXppVWVCWElYN1BUMmh1YXpSUCtsS2tnYXZzemVNMThqVzBvVmNmQnJZQ3FZb1JuTjNhUEdsdzFpTU0xN2FpMUd0cXZuZC9RL0g1U252dkY3ZjEybGprY3owcHNVbVdCcFNvejBMblJnS3BCdWdxNkw4Q3V4U2tRZGU2a1BjQXNXcU43QW8xK3l6YVVhY2RBc2NrSTBqd0RQSlBVNVRCbWJPeGkvVVc2NHBRT3JqYys1LzFWL2R0SmZSSWJydzBLV0ZWV1YrSHc2R05EWkU2YUhwN2UwT1VRNXFUcm1ZNDhydy80c1JXVzNvalNwazM2SStXem83WS83aHlsK1pKdFhWSTdXSis0NWhyZ2FjejI5QTMyUVRJU3JDRHBpSkxidVdwOE9pdWg4akdZaW9mOGVUSHFERXRWS2tDR21aVlpxekk5c2NzdVNJWmtaWFRmS25ZSHQ4Tk5tTEszRmFReHBiOUdKejVqVmNITWNsV2hyRCtWZUhmUXNKTGtXcW9oVEdybHFuRlo5THJ1a1NsOTdZSVhwVTVrVmNITVN2REtUcHBuaE5tWThXa0pYWGNGblNNWlNZNmUzY08xcnVLeFUvNytDR1VTbmJuQ3RpNGJXakhiT0F2bEdPQXBkUHJKOWJlRGp0RTVraEZzYU9hcThkSHpNYVcvdkMvZTZLR01XbTRmbFlNa3U0Y05uVm1wUGVqOHVkdEExYUJ6cmxsNDdSR2pzL2FHK3ZYNzV0VWt5aWhsMWxLVlpuREZySXV5KzJBYU92OUV2QVgwblk3Uk9aZUVKcTRhRitnM3pQdnFIU3Rlak9Zdmx2R3VBMUZtTnh0Q00xUDE4QWNNZ2pBTHY5TXhZV2FYOVdjQmt0V3V1dTllRnFQTTRtYnZBemJFRWc1aDl0SHBMSU90UCtnN0hlTW5OSExWZUcvSmt2RjdZV3hjMzNqRHFxeTBaaG9FS292ek0xUDBEUFNkanRGdkc1WlZYTFAwdm4xOXozS3JWVHZJSEYzZllISGVDdnJ1SE4vQWJkTk4zUE82OSsxN2lMZ3pqclJ1eDhFbC9Td0lNZzBNOVAzSEc5SHFzUHYraFVyckpYRXZjemorQUFiUngrQWNYODhGMHYxQXZCbktBbmxURzhSbG41LzZMdUxIVzUvem9yVCtEMHdnMXFxOHk1eGZ1ODhDU3lDbkg1aDNkVy9aR1h2ZTh1T01aUldQMG5vOGNJRlk3K1lmc3dVUnJUMzZRTDA5ZmZzTXBwSFllZ1cvUDdDQldIdmxNT0dCZTUvOWp0ZGpZN1I4d2tUYitSOW1lWkE2bjJvSldBQUFBQUJKUlU1RXJrSmdnZz09IjsKICB9IGVsc2UgewogICAgTC5JY29uLkRlZmF1bHQucHJvdG90eXBlLm9wdGlvbnMuaWNvblVybCA9ICJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJrQUFBQXBDQVlBQUFEQWs0TE9BQUFHbWtsRVFWUll3N1ZYZVV5VFp4anZObmZFTEZ1eUl6T2FiZXJtTVpFZVFDL09jbGtPNDlDcE9IWE9MSmwvQ0FVUnVZYlFpM0tMZ0VoYnJoWjFhRHdtYW9HcUtJSTZvZEFUbUgvc2NERmJkQzdMdkZxT0NjK2U5NXMyVkc1MFgvTExtL2Y0L1o3bmVZL25lMThhQU5DbUFyNUUveFpmMXVET2tUY0djV1I2aGw5MjQ3dFQ1VTdZNlNOdldzS1Q2M1A1OHFiZmVMSkc4TTVxY2dUa25ydnZyZERic1Q3TWwrdHY4Mlg2dlZ4SkUzM2FSbWdTeVl0Y1dWTXFYOTdZdjJKdlczOVVoUkUySHV5QkwrdCtnSzExMTZseTA2RWVXRk5sQW1IeGxRRTBPTWlWNm1RQ1NjdXNLUmxoUzNRTGVWSmRsMSsyM2g1ZFk0Rk5CM3RocmJZYm9xcHRFRmxwaFRDMWhTcEpuYlJ2eFA0Tldnc0U1Snl6ODZRTk5pLzVxU1VUR3VGazFndTU0dE45d3VLMndjM28rV2MxM1JDbXNvQndFcXpHY1pzeHN2Q1N5Lzl3SktmN1VXZjFtRVk4SldmZXdjNjdVVW9EYkRqUUMrRnFLNFFxTFZNR0dSOWQyd3VyS3pxQmszbnFJVC85ekx4UlJqZ1o5YnFRZ3ViK0Rkb2VDQzAzUThqKzBRaEZoQkhSL2VQM1UvekNsbjdVdStoaWhKMStiQk5mZkxJdm1reVAwZ3BCWldZWGhLdXNzSzZtQno1SFQ2TTFOcXBjcCttQkNQWG9zWVFmcmVrR3ZyamV3ZDU5L0d2S0NFN1RiSy8wNC9aVjVRWllWV21Ed0gxbUYzeGEyUTNyYTNEQkM1dkJUMW9QN1BUajRDMCtDY0w4YzdDMkN0ZWpxaHVDbnVJUUhhS0h6dmNSZlpwbnlsRmZYc1lKeDNwTkx3aEt6UkF3QWhFcUcwU3B1c0JIZkFLa3h3M3c0NjI3TVBob0NINzk4ejdzMFpuQkovTUVKYlpTYlhQaEVSMmloN3Ayb2svelNqMmNFSkRkNENBZSs1V1luQkNnUjJ1cnV5RXc2elJvVzYvRFdKL09lQVA4cGQvQkd0ek9aS3BHOG9rZTBTWDZHTW1SazZHRmx5QWM1OUszMk9URWluSUxSSlJjaGFoOEhRd05EOE40MzVaOVowRlkxRXF0eFVnKzBTTzZSSi9tbVh6NFZ1UytEcHhYQzNnWG1ad0lMN2RCU0g0ektFNTB3RVNmOHF3VmdyUDFFSWxUTzVKUDlJZ3UwYWV4ZGgyOEYxbG1BRUdKR2ZoN2pFNkVseU01UncvRkRjWUpqV2hiZWlCWW9ZTklwYzJGVC9TSUxpdnAwRjFpcERXazRCSUVvMlZ1b2RFSlVpZmhiaWx0bk5CSVhQVUZDTXB0aHRBeXF3cy9CUGxFRi9WYmFJeEVyZHhQcGhzVTdyY0NwOERvaEMrR3ZCSVBKUy90VzJqdHZUbW1BZXVOTzhCTk9ZUWVHOEcvMk96Q0ozcStzb1lCNWk2TmhNYUtyMTdGU2FsN0dJSGhldVYzdVNDWThxWVZ1RW0xY096cWRXcjdrdS9SMEJEb1RUK0RUK29oQ002L0NDdktMS080UkkrZFhQZUF1YU1xa3NhS3JaN0wzRkU1RklGYmtJY2VlT1oyT2NITzZ3SWhUa05vMGZmZ2pSR3hFcW9nWEhZVVBIZldBQy9sQURwd0djTFJZM2FlSzQvb1JHQ0tZY1pYUFZvZVgva2VsVllZOGRVR2Y4VjVFQlJiZ0pYVDVRSVBoUDllUEppNDI4SktPaUVZaFlYRkJxb3UyR3VoK3AvbUVCMS9SZk13NnJZN2N4Y2pUcm5lSTFGckR5dXpVU1JtOW1pd0VKeDhFL2dVbXFseXZIR2tuZWl3RXJSMjFGM3ROT0s1VGYweVhhVCtPN0RnQ3ZBTFRVQlhkTTRZaEMvSWF3UFUrMlBkdXFNdnVhUjZlb3hTd1VrNzVnZ3FzWUo3Vmljc253R0lrWkJTWEtPVXd3NzNXR1h5cVArSjIvYjljK2dpMVlBZy94cHdjazNnSnV1Y05yaDVKdkRQdlFyMFdGWGYwcGl5dDhmOC9XSTBoVjRwUnh4a1FaZEpEZkRKTk9BbU0wQWc4anlUNmh6MFdHWFd1UDk0WWgyamNmam1YQUd2SENNc2xSaW1ESFl1SHVEc3kyUXRIdUlhdnpuaGJZVVJxNVI1N0twekJCUlpLUEppOGVRZzQ4aDRqOFNEZG93aWZkSXJFVmRVK2diTzZRTnZSUnQ0WkJ0aFVhWmhVbmpsWU9iTmFnVjNrZW9lcnUzclU3cmN1Y2VxVTFtSkJ4eStCV1pZbE5FQkgrMGVINHZSaUIrT1l5YlUyaG5ibFlsVHZrSGluTTRtNTRZbnhTeWFaWVNGNlIzandnUDd1ZEtMR0lYNnIvbGJOYTlONnk1TUZ5bmpXRHRySGQ3NVp2VFlBUE8vNlJnRjBrNzZtUWxhM0ZHcTdkTytjSDhzS24wVm83bkRsbHdBaHF3TFBreHJId1dtSEpPbytBS0o0cmFiNU9nck03clZ1OGVXYjJQdTBEaDRlRGdYb09mdnA3WTdRZXFrblJtdmNUQkV5cTltL0hRUVNDU3o2TEhxM3oweXpzTnlTUmZNUzI1M3dsMkt5UkRiY1pQY2ZKS2pabVNFT2pjeHlpK1k4ZFVPdHNJRUg2UjJ3TnlrZHFya1lKMFJWOTJIMFc1OHBrZlFrN2NLZXZzTEsxMFB5OFNkTUdmWE5YQVRZK3BQYnlKUi9FVDZuOW5JZnp0TnRaWVJWOVhuaVF1OUlBMnZPVmd5NGlyN0dDTFZtbWQremprSDBlQUY5UG82SzYxcG1DWEh4VTVySE1ZZDFmdGMzb3dqd1JTVlJ6TGpLdnFaRXR5NmNSVUQ3akdxaU9kdTVIRzZNZEhqTmNOWUdxZkRtNVlSekxCQkNDRGwvMmJrOGE4Z2RicWNmd0VDdTYyRmcvSHJnZ0FBQUFCSlJVNUVya0pnZ2c9PSI7CiAgfQp9Cg=="></script> | |
| <link href="data:text/css;charset=utf-8,%2Eleaflet%2Dcluster%2Danim%20%2Eleaflet%2Dmarker%2Dicon%2C%20%2Eleaflet%2Dcluster%2Danim%20%2Eleaflet%2Dmarker%2Dshadow%20%7B%0A%2Dwebkit%2Dtransition%3A%20%2Dwebkit%2Dtransform%200%2E3s%20ease%2Dout%2C%20opacity%200%2E3s%20ease%2Din%3B%0A%2Dmoz%2Dtransition%3A%20%2Dmoz%2Dtransform%200%2E3s%20ease%2Dout%2C%20opacity%200%2E3s%20ease%2Din%3B%0A%2Do%2Dtransition%3A%20%2Do%2Dtransform%200%2E3s%20ease%2Dout%2C%20opacity%200%2E3s%20ease%2Din%3B%0Atransition%3A%20transform%200%2E3s%20ease%2Dout%2C%20opacity%200%2E3s%20ease%2Din%3B%0A%7D%0A" rel="stylesheet" /> | |
| <link href="data:text/css;charset=utf-8,%2Emarker%2Dcluster%2Dsmall%20%7B%0Abackground%2Dcolor%3A%20rgba%28181%2C%20226%2C%20140%2C%200%2E6%29%3B%0A%7D%0A%2Emarker%2Dcluster%2Dsmall%20div%20%7B%0Abackground%2Dcolor%3A%20rgba%28110%2C%20204%2C%2057%2C%200%2E6%29%3B%0A%7D%0A%2Emarker%2Dcluster%2Dmedium%20%7B%0Abackground%2Dcolor%3A%20rgba%28241%2C%20211%2C%2087%2C%200%2E6%29%3B%0A%7D%0A%2Emarker%2Dcluster%2Dmedium%20div%20%7B%0Abackground%2Dcolor%3A%20rgba%28240%2C%20194%2C%2012%2C%200%2E6%29%3B%0A%7D%0A%2Emarker%2Dcluster%2Dlarge%20%7B%0Abackground%2Dcolor%3A%20rgba%28253%2C%20156%2C%20115%2C%200%2E6%29%3B%0A%7D%0A%2Emarker%2Dcluster%2Dlarge%20div%20%7B%0Abackground%2Dcolor%3A%20rgba%28241%2C%20128%2C%2023%2C%200%2E6%29%3B%0A%7D%0A%0A%2Eleaflet%2Doldie%20%2Emarker%2Dcluster%2Dsmall%20%7B%0Abackground%2Dcolor%3A%20rgb%28181%2C%20226%2C%20140%29%3B%0A%7D%0A%2Eleaflet%2Doldie%20%2Emarker%2Dcluster%2Dsmall%20div%20%7B%0Abackground%2Dcolor%3A%20rgb%28110%2C%20204%2C%2057%29%3B%0A%7D%0A%2Eleaflet%2Doldie%20%2Emarker%2Dcluster%2Dmedium%20%7B%0Abackground%2Dcolor%3A%20rgb%28241%2C%20211%2C%2087%29%3B%0A%7D%0A%2Eleaflet%2Doldie%20%2Emarker%2Dcluster%2Dmedium%20div%20%7B%0Abackground%2Dcolor%3A%20rgb%28240%2C%20194%2C%2012%29%3B%0A%7D%0A%2Eleaflet%2Doldie%20%2Emarker%2Dcluster%2Dlarge%20%7B%0Abackground%2Dcolor%3A%20rgb%28253%2C%20156%2C%20115%29%3B%0A%7D%0A%2Eleaflet%2Doldie%20%2Emarker%2Dcluster%2Dlarge%20div%20%7B%0Abackground%2Dcolor%3A%20rgb%28241%2C%20128%2C%2023%29%3B%0A%7D%0A%2Emarker%2Dcluster%20%7B%0Abackground%2Dclip%3A%20padding%2Dbox%3B%0Aborder%2Dradius%3A%2020px%3B%0A%7D%0A%2Emarker%2Dcluster%20div%20%7B%0Awidth%3A%2030px%3B%0Aheight%3A%2030px%3B%0Amargin%2Dleft%3A%205px%3B%0Amargin%2Dtop%3A%205px%3B%0Atext%2Dalign%3A%20center%3B%0Aborder%2Dradius%3A%2015px%3B%0Afont%3A%2012px%20%22Helvetica%20Neue%22%2C%20Arial%2C%20Helvetica%2C%20sans%2Dserif%3B%0A%7D%0A%2Emarker%2Dcluster%20span%20%7B%0Aline%2Dheight%3A%2030px%3B%0A%7D" rel="stylesheet" /> | |
| <script src="data:application/x-javascript;base64,LyoKIExlYWZsZXQubWFya2VyY2x1c3RlciwgUHJvdmlkZXMgQmVhdXRpZnVsIEFuaW1hdGVkIE1hcmtlciBDbHVzdGVyaW5nIGZ1bmN0aW9uYWxpdHkgZm9yIExlYWZsZXQsIGEgSlMgbGlicmFyeSBmb3IgaW50ZXJhY3RpdmUgbWFwcy4KIGh0dHBzOi8vZ2l0aHViLmNvbS9MZWFmbGV0L0xlYWZsZXQubWFya2VyY2x1c3RlcgogKGMpIDIwMTItMjAxMywgRGF2ZSBMZWF2ZXIsIHNtYXJ0cmFrCiovCiFmdW5jdGlvbih0LGUpe0wuTWFya2VyQ2x1c3Rlckdyb3VwPUwuRmVhdHVyZUdyb3VwLmV4dGVuZCh7b3B0aW9uczp7bWF4Q2x1c3RlclJhZGl1czo4MCxpY29uQ3JlYXRlRnVuY3Rpb246bnVsbCxzcGlkZXJmeU9uTWF4Wm9vbTohMCxzaG93Q292ZXJhZ2VPbkhvdmVyOiEwLHpvb21Ub0JvdW5kc09uQ2xpY2s6ITAsc2luZ2xlTWFya2VyTW9kZTohMSxkaXNhYmxlQ2x1c3RlcmluZ0F0Wm9vbTpudWxsLHJlbW92ZU91dHNpZGVWaXNpYmxlQm91bmRzOiEwLGFuaW1hdGVBZGRpbmdNYXJrZXJzOiExLHNwaWRlcmZ5RGlzdGFuY2VNdWx0aXBsaWVyOjEsY2h1bmtlZExvYWRpbmc6ITEsY2h1bmtJbnRlcnZhbDoyMDAsY2h1bmtEZWxheTo1MCxjaHVua1Byb2dyZXNzOm51bGwscG9seWdvbk9wdGlvbnM6e319LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7TC5VdGlsLnNldE9wdGlvbnModGhpcyx0KSx0aGlzLm9wdGlvbnMuaWNvbkNyZWF0ZUZ1bmN0aW9ufHwodGhpcy5vcHRpb25zLmljb25DcmVhdGVGdW5jdGlvbj10aGlzLl9kZWZhdWx0SWNvbkNyZWF0ZUZ1bmN0aW9uKSx0aGlzLl9mZWF0dXJlR3JvdXA9TC5mZWF0dXJlR3JvdXAoKSx0aGlzLl9mZWF0dXJlR3JvdXAub24oTC5GZWF0dXJlR3JvdXAuRVZFTlRTLHRoaXMuX3Byb3BhZ2F0ZUV2ZW50LHRoaXMpLHRoaXMuX25vblBvaW50R3JvdXA9TC5mZWF0dXJlR3JvdXAoKSx0aGlzLl9ub25Qb2ludEdyb3VwLm9uKEwuRmVhdHVyZUdyb3VwLkVWRU5UUyx0aGlzLl9wcm9wYWdhdGVFdmVudCx0aGlzKSx0aGlzLl9pblpvb21BbmltYXRpb249MCx0aGlzLl9uZWVkc0NsdXN0ZXJpbmc9W10sdGhpcy5fbmVlZHNSZW1vdmluZz1bXSx0aGlzLl9jdXJyZW50U2hvd25Cb3VuZHM9bnVsbCx0aGlzLl9xdWV1ZT1bXX0sYWRkTGF5ZXI6ZnVuY3Rpb24odCl7aWYodCBpbnN0YW5jZW9mIEwuTGF5ZXJHcm91cCl7dmFyIGU9W107Zm9yKHZhciBpIGluIHQuX2xheWVycyllLnB1c2godC5fbGF5ZXJzW2ldKTtyZXR1cm4gdGhpcy5hZGRMYXllcnMoZSl9aWYoIXQuZ2V0TGF0TG5nKXJldHVybiB0aGlzLl9ub25Qb2ludEdyb3VwLmFkZExheWVyKHQpLHRoaXM7aWYoIXRoaXMuX21hcClyZXR1cm4gdGhpcy5fbmVlZHNDbHVzdGVyaW5nLnB1c2godCksdGhpcztpZih0aGlzLmhhc0xheWVyKHQpKXJldHVybiB0aGlzO3RoaXMuX3Vuc3BpZGVyZnkmJnRoaXMuX3Vuc3BpZGVyZnkoKSx0aGlzLl9hZGRMYXllcih0LHRoaXMuX21heFpvb20pO3ZhciBuPXQscz10aGlzLl9tYXAuZ2V0Wm9vbSgpO2lmKHQuX19wYXJlbnQpZm9yKDtuLl9fcGFyZW50Ll96b29tPj1zOyluPW4uX19wYXJlbnQ7cmV0dXJuIHRoaXMuX2N1cnJlbnRTaG93bkJvdW5kcy5jb250YWlucyhuLmdldExhdExuZygpKSYmKHRoaXMub3B0aW9ucy5hbmltYXRlQWRkaW5nTWFya2Vycz90aGlzLl9hbmltYXRpb25BZGRMYXllcih0LG4pOnRoaXMuX2FuaW1hdGlvbkFkZExheWVyTm9uQW5pbWF0ZWQodCxuKSksdGhpc30scmVtb3ZlTGF5ZXI6ZnVuY3Rpb24odCl7aWYodCBpbnN0YW5jZW9mIEwuTGF5ZXJHcm91cCl7dmFyIGU9W107Zm9yKHZhciBpIGluIHQuX2xheWVycyllLnB1c2godC5fbGF5ZXJzW2ldKTtyZXR1cm4gdGhpcy5yZW1vdmVMYXllcnMoZSl9cmV0dXJuIHQuZ2V0TGF0TG5nP3RoaXMuX21hcD90Ll9fcGFyZW50Pyh0aGlzLl91bnNwaWRlcmZ5JiYodGhpcy5fdW5zcGlkZXJmeSgpLHRoaXMuX3Vuc3BpZGVyZnlMYXllcih0KSksdGhpcy5fcmVtb3ZlTGF5ZXIodCwhMCksdGhpcy5fZmVhdHVyZUdyb3VwLmhhc0xheWVyKHQpJiYodGhpcy5fZmVhdHVyZUdyb3VwLnJlbW92ZUxheWVyKHQpLHQuc2V0T3BhY2l0eSYmdC5zZXRPcGFjaXR5KDEpKSx0aGlzKTp0aGlzOighdGhpcy5fYXJyYXlTcGxpY2UodGhpcy5fbmVlZHNDbHVzdGVyaW5nLHQpJiZ0aGlzLmhhc0xheWVyKHQpJiZ0aGlzLl9uZWVkc1JlbW92aW5nLnB1c2godCksdGhpcyk6KHRoaXMuX25vblBvaW50R3JvdXAucmVtb3ZlTGF5ZXIodCksdGhpcyl9LGFkZExheWVyczpmdW5jdGlvbih0KXt2YXIgZSxpLG4scyxyPXRoaXMuX2ZlYXR1cmVHcm91cCxvPXRoaXMuX25vblBvaW50R3JvdXAsYT10aGlzLm9wdGlvbnMuY2h1bmtlZExvYWRpbmcsaD10aGlzLm9wdGlvbnMuY2h1bmtJbnRlcnZhbCxfPXRoaXMub3B0aW9ucy5jaHVua1Byb2dyZXNzO2lmKHRoaXMuX21hcCl7dmFyIHU9MCxsPShuZXcgRGF0ZSkuZ2V0VGltZSgpLGQ9TC5iaW5kKGZ1bmN0aW9uKCl7Zm9yKHZhciBlPShuZXcgRGF0ZSkuZ2V0VGltZSgpO3U8dC5sZW5ndGg7dSsrKXtpZihhJiYwPT09dSUyMDApe3ZhciBpPShuZXcgRGF0ZSkuZ2V0VGltZSgpLWU7aWYoaT5oKWJyZWFrfWlmKHM9dFt1XSxzLmdldExhdExuZyl7aWYoIXRoaXMuaGFzTGF5ZXIocykmJih0aGlzLl9hZGRMYXllcihzLHRoaXMuX21heFpvb20pLHMuX19wYXJlbnQmJjI9PT1zLl9fcGFyZW50LmdldENoaWxkQ291bnQoKSkpe3ZhciBuPXMuX19wYXJlbnQuZ2V0QWxsQ2hpbGRNYXJrZXJzKCkscD1uWzBdPT09cz9uWzFdOm5bMF07ci5yZW1vdmVMYXllcihwKX19ZWxzZSBvLmFkZExheWVyKHMpfV8mJl8odSx0Lmxlbmd0aCwobmV3IERhdGUpLmdldFRpbWUoKS1sKSx1PT09dC5sZW5ndGg/KHRoaXMuX2ZlYXR1cmVHcm91cC5lYWNoTGF5ZXIoZnVuY3Rpb24odCl7dCBpbnN0YW5jZW9mIEwuTWFya2VyQ2x1c3RlciYmdC5faWNvbk5lZWRzVXBkYXRlJiZ0Ll91cGRhdGVJY29uKCl9KSx0aGlzLl90b3BDbHVzdGVyTGV2ZWwuX3JlY3Vyc2l2ZWx5QWRkQ2hpbGRyZW5Ub01hcChudWxsLHRoaXMuX3pvb20sdGhpcy5fY3VycmVudFNob3duQm91bmRzKSk6c2V0VGltZW91dChkLHRoaXMub3B0aW9ucy5jaHVua0RlbGF5KX0sdGhpcyk7ZCgpfWVsc2V7Zm9yKGU9W10saT0wLG49dC5sZW5ndGg7bj5pO2krKylzPXRbaV0scy5nZXRMYXRMbmc/dGhpcy5oYXNMYXllcihzKXx8ZS5wdXNoKHMpOm8uYWRkTGF5ZXIocyk7dGhpcy5fbmVlZHNDbHVzdGVyaW5nPXRoaXMuX25lZWRzQ2x1c3RlcmluZy5jb25jYXQoZSl9cmV0dXJuIHRoaXN9LHJlbW92ZUxheWVyczpmdW5jdGlvbih0KXt2YXIgZSxpLG4scz10aGlzLl9mZWF0dXJlR3JvdXAscj10aGlzLl9ub25Qb2ludEdyb3VwO2lmKCF0aGlzLl9tYXApe2ZvcihlPTAsaT10Lmxlbmd0aDtpPmU7ZSsrKW49dFtlXSx0aGlzLl9hcnJheVNwbGljZSh0aGlzLl9uZWVkc0NsdXN0ZXJpbmcsbiksci5yZW1vdmVMYXllcihuKTtyZXR1cm4gdGhpc31mb3IoZT0wLGk9dC5sZW5ndGg7aT5lO2UrKyluPXRbZV0sbi5fX3BhcmVudD8odGhpcy5fcmVtb3ZlTGF5ZXIobiwhMCwhMCkscy5oYXNMYXllcihuKSYmKHMucmVtb3ZlTGF5ZXIobiksbi5zZXRPcGFjaXR5JiZuLnNldE9wYWNpdHkoMSkpKTpyLnJlbW92ZUxheWVyKG4pO3JldHVybiB0aGlzLl90b3BDbHVzdGVyTGV2ZWwuX3JlY3Vyc2l2ZWx5QWRkQ2hpbGRyZW5Ub01hcChudWxsLHRoaXMuX3pvb20sdGhpcy5fY3VycmVudFNob3duQm91bmRzKSxzLmVhY2hMYXllcihmdW5jdGlvbih0KXt0IGluc3RhbmNlb2YgTC5NYXJrZXJDbHVzdGVyJiZ0Ll91cGRhdGVJY29uKCl9KSx0aGlzfSxjbGVhckxheWVyczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXB8fCh0aGlzLl9uZWVkc0NsdXN0ZXJpbmc9W10sZGVsZXRlIHRoaXMuX2dyaWRDbHVzdGVycyxkZWxldGUgdGhpcy5fZ3JpZFVuY2x1c3RlcmVkKSx0aGlzLl9ub2FuaW1hdGlvblVuc3BpZGVyZnkmJnRoaXMuX25vYW5pbWF0aW9uVW5zcGlkZXJmeSgpLHRoaXMuX2ZlYXR1cmVHcm91cC5jbGVhckxheWVycygpLHRoaXMuX25vblBvaW50R3JvdXAuY2xlYXJMYXllcnMoKSx0aGlzLmVhY2hMYXllcihmdW5jdGlvbih0KXtkZWxldGUgdC5fX3BhcmVudH0pLHRoaXMuX21hcCYmdGhpcy5fZ2VuZXJhdGVJbml0aWFsQ2x1c3RlcnMoKSx0aGlzfSxnZXRCb3VuZHM6ZnVuY3Rpb24oKXt2YXIgdD1uZXcgTC5MYXRMbmdCb3VuZHM7dGhpcy5fdG9wQ2x1c3RlckxldmVsJiZ0LmV4dGVuZCh0aGlzLl90b3BDbHVzdGVyTGV2ZWwuX2JvdW5kcyk7Zm9yKHZhciBlPXRoaXMuX25lZWRzQ2x1c3RlcmluZy5sZW5ndGgtMTtlPj0wO2UtLSl0LmV4dGVuZCh0aGlzLl9uZWVkc0NsdXN0ZXJpbmdbZV0uZ2V0TGF0TG5nKCkpO3JldHVybiB0LmV4dGVuZCh0aGlzLl9ub25Qb2ludEdyb3VwLmdldEJvdW5kcygpKSx0fSxlYWNoTGF5ZXI6ZnVuY3Rpb24odCxlKXt2YXIgaSxuPXRoaXMuX25lZWRzQ2x1c3RlcmluZy5zbGljZSgpO2Zvcih0aGlzLl90b3BDbHVzdGVyTGV2ZWwmJnRoaXMuX3RvcENsdXN0ZXJMZXZlbC5nZXRBbGxDaGlsZE1hcmtlcnMobiksaT1uLmxlbmd0aC0xO2k+PTA7aS0tKXQuY2FsbChlLG5baV0pO3RoaXMuX25vblBvaW50R3JvdXAuZWFjaExheWVyKHQsZSl9LGdldExheWVyczpmdW5jdGlvbigpe3ZhciB0PVtdO3JldHVybiB0aGlzLmVhY2hMYXllcihmdW5jdGlvbihlKXt0LnB1c2goZSl9KSx0fSxnZXRMYXllcjpmdW5jdGlvbih0KXt2YXIgZT1udWxsO3JldHVybiB0aGlzLmVhY2hMYXllcihmdW5jdGlvbihpKXtMLnN0YW1wKGkpPT09dCYmKGU9aSl9KSxlfSxoYXNMYXllcjpmdW5jdGlvbih0KXtpZighdClyZXR1cm4hMTt2YXIgZSxpPXRoaXMuX25lZWRzQ2x1c3RlcmluZztmb3IoZT1pLmxlbmd0aC0xO2U+PTA7ZS0tKWlmKGlbZV09PT10KXJldHVybiEwO2ZvcihpPXRoaXMuX25lZWRzUmVtb3ZpbmcsZT1pLmxlbmd0aC0xO2U+PTA7ZS0tKWlmKGlbZV09PT10KXJldHVybiExO3JldHVybiEoIXQuX19wYXJlbnR8fHQuX19wYXJlbnQuX2dyb3VwIT09dGhpcyl8fHRoaXMuX25vblBvaW50R3JvdXAuaGFzTGF5ZXIodCl9LHpvb21Ub1Nob3dMYXllcjpmdW5jdGlvbih0LGUpe3ZhciBpPWZ1bmN0aW9uKCl7aWYoKHQuX2ljb258fHQuX19wYXJlbnQuX2ljb24pJiYhdGhpcy5faW5ab29tQW5pbWF0aW9uKWlmKHRoaXMuX21hcC5vZmYoIm1vdmVlbmQiLGksdGhpcyksdGhpcy5vZmYoImFuaW1hdGlvbmVuZCIsaSx0aGlzKSx0Ll9pY29uKWUoKTtlbHNlIGlmKHQuX19wYXJlbnQuX2ljb24pe3ZhciBuPWZ1bmN0aW9uKCl7dGhpcy5vZmYoInNwaWRlcmZpZWQiLG4sdGhpcyksZSgpfTt0aGlzLm9uKCJzcGlkZXJmaWVkIixuLHRoaXMpLHQuX19wYXJlbnQuc3BpZGVyZnkoKX19O2lmKHQuX2ljb24mJnRoaXMuX21hcC5nZXRCb3VuZHMoKS5jb250YWlucyh0LmdldExhdExuZygpKSllKCk7ZWxzZSBpZih0Ll9fcGFyZW50Ll96b29tPHRoaXMuX21hcC5nZXRab29tKCkpdGhpcy5fbWFwLm9uKCJtb3ZlZW5kIixpLHRoaXMpLHRoaXMuX21hcC5wYW5Ubyh0LmdldExhdExuZygpKTtlbHNle3ZhciBuPWZ1bmN0aW9uKCl7dGhpcy5fbWFwLm9mZigibW92ZXN0YXJ0IixuLHRoaXMpLG49bnVsbH07dGhpcy5fbWFwLm9uKCJtb3Zlc3RhcnQiLG4sdGhpcyksdGhpcy5fbWFwLm9uKCJtb3ZlZW5kIixpLHRoaXMpLHRoaXMub24oImFuaW1hdGlvbmVuZCIsaSx0aGlzKSx0Ll9fcGFyZW50Lnpvb21Ub0JvdW5kcygpLG4mJmkuY2FsbCh0aGlzKX19LG9uQWRkOmZ1bmN0aW9uKHQpe3RoaXMuX21hcD10O3ZhciBlLGksbjtpZighaXNGaW5pdGUodGhpcy5fbWFwLmdldE1heFpvb20oKSkpdGhyb3ciTWFwIGhhcyBubyBtYXhab29tIHNwZWNpZmllZCI7Zm9yKHRoaXMuX2ZlYXR1cmVHcm91cC5vbkFkZCh0KSx0aGlzLl9ub25Qb2ludEdyb3VwLm9uQWRkKHQpLHRoaXMuX2dyaWRDbHVzdGVyc3x8dGhpcy5fZ2VuZXJhdGVJbml0aWFsQ2x1c3RlcnMoKSxlPTAsaT10aGlzLl9uZWVkc1JlbW92aW5nLmxlbmd0aDtpPmU7ZSsrKW49dGhpcy5fbmVlZHNSZW1vdmluZ1tlXSx0aGlzLl9yZW1vdmVMYXllcihuLCEwKTt0aGlzLl9uZWVkc1JlbW92aW5nPVtdLHRoaXMuX3pvb209dGhpcy5fbWFwLmdldFpvb20oKSx0aGlzLl9jdXJyZW50U2hvd25Cb3VuZHM9dGhpcy5fZ2V0RXhwYW5kZWRWaXNpYmxlQm91bmRzKCksdGhpcy5fbWFwLm9uKCJ6b29tZW5kIix0aGlzLl96b29tRW5kLHRoaXMpLHRoaXMuX21hcC5vbigibW92ZWVuZCIsdGhpcy5fbW92ZUVuZCx0aGlzKSx0aGlzLl9zcGlkZXJmaWVyT25BZGQmJnRoaXMuX3NwaWRlcmZpZXJPbkFkZCgpLHRoaXMuX2JpbmRFdmVudHMoKSxpPXRoaXMuX25lZWRzQ2x1c3RlcmluZyx0aGlzLl9uZWVkc0NsdXN0ZXJpbmc9W10sdGhpcy5hZGRMYXllcnMoaSl9LG9uUmVtb3ZlOmZ1bmN0aW9uKHQpe3Qub2ZmKCJ6b29tZW5kIix0aGlzLl96b29tRW5kLHRoaXMpLHQub2ZmKCJtb3ZlZW5kIix0aGlzLl9tb3ZlRW5kLHRoaXMpLHRoaXMuX3VuYmluZEV2ZW50cygpLHRoaXMuX21hcC5fbWFwUGFuZS5jbGFzc05hbWU9dGhpcy5fbWFwLl9tYXBQYW5lLmNsYXNzTmFtZS5yZXBsYWNlKCIgbGVhZmxldC1jbHVzdGVyLWFuaW0iLCIiKSx0aGlzLl9zcGlkZXJmaWVyT25SZW1vdmUmJnRoaXMuX3NwaWRlcmZpZXJPblJlbW92ZSgpLHRoaXMuX2hpZGVDb3ZlcmFnZSgpLHRoaXMuX2ZlYXR1cmVHcm91cC5vblJlbW92ZSh0KSx0aGlzLl9ub25Qb2ludEdyb3VwLm9uUmVtb3ZlKHQpLHRoaXMuX2ZlYXR1cmVHcm91cC5jbGVhckxheWVycygpLHRoaXMuX21hcD1udWxsfSxnZXRWaXNpYmxlUGFyZW50OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10O2UmJiFlLl9pY29uOyllPWUuX19wYXJlbnQ7cmV0dXJuIGV8fG51bGx9LF9hcnJheVNwbGljZTpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaT10Lmxlbmd0aC0xO2k+PTA7aS0tKWlmKHRbaV09PT1lKXJldHVybiB0LnNwbGljZShpLDEpLCEwfSxfcmVtb3ZlTGF5ZXI6ZnVuY3Rpb24odCxlLGkpe3ZhciBuPXRoaXMuX2dyaWRDbHVzdGVycyxzPXRoaXMuX2dyaWRVbmNsdXN0ZXJlZCxyPXRoaXMuX2ZlYXR1cmVHcm91cCxvPXRoaXMuX21hcDtpZihlKWZvcih2YXIgYT10aGlzLl9tYXhab29tO2E+PTAmJnNbYV0ucmVtb3ZlT2JqZWN0KHQsby5wcm9qZWN0KHQuZ2V0TGF0TG5nKCksYSkpO2EtLSk7dmFyIGgsXz10Ll9fcGFyZW50LHU9Xy5fbWFya2Vycztmb3IodGhpcy5fYXJyYXlTcGxpY2UodSx0KTtfJiYoXy5fY2hpbGRDb3VudC0tLCEoXy5fem9vbTwwKSk7KWUmJl8uX2NoaWxkQ291bnQ8PTE/KGg9Xy5fbWFya2Vyc1swXT09PXQ/Xy5fbWFya2Vyc1sxXTpfLl9tYXJrZXJzWzBdLG5bXy5fem9vbV0ucmVtb3ZlT2JqZWN0KF8sby5wcm9qZWN0KF8uX2NMYXRMbmcsXy5fem9vbSkpLHNbXy5fem9vbV0uYWRkT2JqZWN0KGgsby5wcm9qZWN0KGguZ2V0TGF0TG5nKCksXy5fem9vbSkpLHRoaXMuX2FycmF5U3BsaWNlKF8uX19wYXJlbnQuX2NoaWxkQ2x1c3RlcnMsXyksXy5fX3BhcmVudC5fbWFya2Vycy5wdXNoKGgpLGguX19wYXJlbnQ9Xy5fX3BhcmVudCxfLl9pY29uJiYoci5yZW1vdmVMYXllcihfKSxpfHxyLmFkZExheWVyKGgpKSk6KF8uX3JlY2FsY3VsYXRlQm91bmRzKCksaSYmXy5faWNvbnx8Xy5fdXBkYXRlSWNvbigpKSxfPV8uX19wYXJlbnQ7ZGVsZXRlIHQuX19wYXJlbnR9LF9pc09ySXNQYXJlbnQ6ZnVuY3Rpb24odCxlKXtmb3IoO2U7KXtpZih0PT09ZSlyZXR1cm4hMDtlPWUucGFyZW50Tm9kZX1yZXR1cm4hMX0sX3Byb3BhZ2F0ZUV2ZW50OmZ1bmN0aW9uKHQpe2lmKHQubGF5ZXIgaW5zdGFuY2VvZiBMLk1hcmtlckNsdXN0ZXIpe2lmKHQub3JpZ2luYWxFdmVudCYmdGhpcy5faXNPcklzUGFyZW50KHQubGF5ZXIuX2ljb24sdC5vcmlnaW5hbEV2ZW50LnJlbGF0ZWRUYXJnZXQpKXJldHVybjt0LnR5cGU9ImNsdXN0ZXIiK3QudHlwZX10aGlzLmZpcmUodC50eXBlLHQpfSxfZGVmYXVsdEljb25DcmVhdGVGdW5jdGlvbjpmdW5jdGlvbih0KXt2YXIgZT10LmdldENoaWxkQ291bnQoKSxpPSIgbWFya2VyLWNsdXN0ZXItIjtyZXR1cm4gaSs9MTA+ZT8ic21hbGwiOjEwMD5lPyJtZWRpdW0iOiJsYXJnZSIsbmV3IEwuRGl2SWNvbih7aHRtbDoiPGRpdj48c3Bhbj4iK2UrIjwvc3Bhbj48L2Rpdj4iLGNsYXNzTmFtZToibWFya2VyLWNsdXN0ZXIiK2ksaWNvblNpemU6bmV3IEwuUG9pbnQoNDAsNDApfSl9LF9iaW5kRXZlbnRzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbWFwLGU9dGhpcy5vcHRpb25zLnNwaWRlcmZ5T25NYXhab29tLGk9dGhpcy5vcHRpb25zLnNob3dDb3ZlcmFnZU9uSG92ZXIsbj10aGlzLm9wdGlvbnMuem9vbVRvQm91bmRzT25DbGljazsoZXx8bikmJnRoaXMub24oImNsdXN0ZXJjbGljayIsdGhpcy5fem9vbU9yU3BpZGVyZnksdGhpcyksaSYmKHRoaXMub24oImNsdXN0ZXJtb3VzZW92ZXIiLHRoaXMuX3Nob3dDb3ZlcmFnZSx0aGlzKSx0aGlzLm9uKCJjbHVzdGVybW91c2VvdXQiLHRoaXMuX2hpZGVDb3ZlcmFnZSx0aGlzKSx0Lm9uKCJ6b29tZW5kIix0aGlzLl9oaWRlQ292ZXJhZ2UsdGhpcykpfSxfem9vbU9yU3BpZGVyZnk6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbWFwO2UuZ2V0TWF4Wm9vbSgpPT09ZS5nZXRab29tKCk/dGhpcy5vcHRpb25zLnNwaWRlcmZ5T25NYXhab29tJiZ0LmxheWVyLnNwaWRlcmZ5KCk6dGhpcy5vcHRpb25zLnpvb21Ub0JvdW5kc09uQ2xpY2smJnQubGF5ZXIuem9vbVRvQm91bmRzKCksdC5vcmlnaW5hbEV2ZW50JiYxMz09PXQub3JpZ2luYWxFdmVudC5rZXlDb2RlJiZlLl9jb250YWluZXIuZm9jdXMoKX0sX3Nob3dDb3ZlcmFnZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9tYXA7dGhpcy5faW5ab29tQW5pbWF0aW9ufHwodGhpcy5fc2hvd25Qb2x5Z29uJiZlLnJlbW92ZUxheWVyKHRoaXMuX3Nob3duUG9seWdvbiksdC5sYXllci5nZXRDaGlsZENvdW50KCk+MiYmdC5sYXllciE9PXRoaXMuX3NwaWRlcmZpZWQmJih0aGlzLl9zaG93blBvbHlnb249bmV3IEwuUG9seWdvbih0LmxheWVyLmdldENvbnZleEh1bGwoKSx0aGlzLm9wdGlvbnMucG9seWdvbk9wdGlvbnMpLGUuYWRkTGF5ZXIodGhpcy5fc2hvd25Qb2x5Z29uKSkpfSxfaGlkZUNvdmVyYWdlOmZ1bmN0aW9uKCl7dGhpcy5fc2hvd25Qb2x5Z29uJiYodGhpcy5fbWFwLnJlbW92ZUxheWVyKHRoaXMuX3Nob3duUG9seWdvbiksdGhpcy5fc2hvd25Qb2x5Z29uPW51bGwpfSxfdW5iaW5kRXZlbnRzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLnNwaWRlcmZ5T25NYXhab29tLGU9dGhpcy5vcHRpb25zLnNob3dDb3ZlcmFnZU9uSG92ZXIsaT10aGlzLm9wdGlvbnMuem9vbVRvQm91bmRzT25DbGljayxuPXRoaXMuX21hcDsodHx8aSkmJnRoaXMub2ZmKCJjbHVzdGVyY2xpY2siLHRoaXMuX3pvb21PclNwaWRlcmZ5LHRoaXMpLGUmJih0aGlzLm9mZigiY2x1c3Rlcm1vdXNlb3ZlciIsdGhpcy5fc2hvd0NvdmVyYWdlLHRoaXMpLHRoaXMub2ZmKCJjbHVzdGVybW91c2VvdXQiLHRoaXMuX2hpZGVDb3ZlcmFnZSx0aGlzKSxuLm9mZigiem9vbWVuZCIsdGhpcy5faGlkZUNvdmVyYWdlLHRoaXMpKX0sX3pvb21FbmQ6ZnVuY3Rpb24oKXt0aGlzLl9tYXAmJih0aGlzLl9tZXJnZVNwbGl0Q2x1c3RlcnMoKSx0aGlzLl96b29tPXRoaXMuX21hcC5fem9vbSx0aGlzLl9jdXJyZW50U2hvd25Cb3VuZHM9dGhpcy5fZ2V0RXhwYW5kZWRWaXNpYmxlQm91bmRzKCkpfSxfbW92ZUVuZDpmdW5jdGlvbigpe2lmKCF0aGlzLl9pblpvb21BbmltYXRpb24pe3ZhciB0PXRoaXMuX2dldEV4cGFuZGVkVmlzaWJsZUJvdW5kcygpO3RoaXMuX3RvcENsdXN0ZXJMZXZlbC5fcmVjdXJzaXZlbHlSZW1vdmVDaGlsZHJlbkZyb21NYXAodGhpcy5fY3VycmVudFNob3duQm91bmRzLHRoaXMuX3pvb20sdCksdGhpcy5fdG9wQ2x1c3RlckxldmVsLl9yZWN1cnNpdmVseUFkZENoaWxkcmVuVG9NYXAobnVsbCx0aGlzLl9tYXAuX3pvb20sdCksdGhpcy5fY3VycmVudFNob3duQm91bmRzPXR9fSxfZ2VuZXJhdGVJbml0aWFsQ2x1c3RlcnM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXAuZ2V0TWF4Wm9vbSgpLGU9dGhpcy5vcHRpb25zLm1heENsdXN0ZXJSYWRpdXMsaT1lOyJmdW5jdGlvbiIhPXR5cGVvZiBlJiYoaT1mdW5jdGlvbigpe3JldHVybiBlfSksdGhpcy5vcHRpb25zLmRpc2FibGVDbHVzdGVyaW5nQXRab29tJiYodD10aGlzLm9wdGlvbnMuZGlzYWJsZUNsdXN0ZXJpbmdBdFpvb20tMSksdGhpcy5fbWF4Wm9vbT10LHRoaXMuX2dyaWRDbHVzdGVycz17fSx0aGlzLl9ncmlkVW5jbHVzdGVyZWQ9e307Zm9yKHZhciBuPXQ7bj49MDtuLS0pdGhpcy5fZ3JpZENsdXN0ZXJzW25dPW5ldyBMLkRpc3RhbmNlR3JpZChpKG4pKSx0aGlzLl9ncmlkVW5jbHVzdGVyZWRbbl09bmV3IEwuRGlzdGFuY2VHcmlkKGkobikpO3RoaXMuX3RvcENsdXN0ZXJMZXZlbD1uZXcgTC5NYXJrZXJDbHVzdGVyKHRoaXMsLTEpfSxfYWRkTGF5ZXI6ZnVuY3Rpb24odCxlKXt2YXIgaSxuLHM9dGhpcy5fZ3JpZENsdXN0ZXJzLHI9dGhpcy5fZ3JpZFVuY2x1c3RlcmVkO2Zvcih0aGlzLm9wdGlvbnMuc2luZ2xlTWFya2VyTW9kZSYmKHQub3B0aW9ucy5pY29uPXRoaXMub3B0aW9ucy5pY29uQ3JlYXRlRnVuY3Rpb24oe2dldENoaWxkQ291bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gMX0sZ2V0QWxsQ2hpbGRNYXJrZXJzOmZ1bmN0aW9uKCl7cmV0dXJuW3RdfX0pKTtlPj0wO2UtLSl7aT10aGlzLl9tYXAucHJvamVjdCh0LmdldExhdExuZygpLGUpO3ZhciBvPXNbZV0uZ2V0TmVhck9iamVjdChpKTtpZihvKXJldHVybiBvLl9hZGRDaGlsZCh0KSx0Ll9fcGFyZW50PW8sdm9pZCAwO2lmKG89cltlXS5nZXROZWFyT2JqZWN0KGkpKXt2YXIgYT1vLl9fcGFyZW50O2EmJnRoaXMuX3JlbW92ZUxheWVyKG8sITEpO3ZhciBoPW5ldyBMLk1hcmtlckNsdXN0ZXIodGhpcyxlLG8sdCk7c1tlXS5hZGRPYmplY3QoaCx0aGlzLl9tYXAucHJvamVjdChoLl9jTGF0TG5nLGUpKSxvLl9fcGFyZW50PWgsdC5fX3BhcmVudD1oO3ZhciBfPWg7Zm9yKG49ZS0xO24+YS5fem9vbTtuLS0pXz1uZXcgTC5NYXJrZXJDbHVzdGVyKHRoaXMsbixfKSxzW25dLmFkZE9iamVjdChfLHRoaXMuX21hcC5wcm9qZWN0KG8uZ2V0TGF0TG5nKCksbikpO2ZvcihhLl9hZGRDaGlsZChfKSxuPWU7bj49MCYmcltuXS5yZW1vdmVPYmplY3Qobyx0aGlzLl9tYXAucHJvamVjdChvLmdldExhdExuZygpLG4pKTtuLS0pO3JldHVybn1yW2VdLmFkZE9iamVjdCh0LGkpfXRoaXMuX3RvcENsdXN0ZXJMZXZlbC5fYWRkQ2hpbGQodCksdC5fX3BhcmVudD10aGlzLl90b3BDbHVzdGVyTGV2ZWx9LF9lbnF1ZXVlOmZ1bmN0aW9uKHQpe3RoaXMuX3F1ZXVlLnB1c2godCksdGhpcy5fcXVldWVUaW1lb3V0fHwodGhpcy5fcXVldWVUaW1lb3V0PXNldFRpbWVvdXQoTC5iaW5kKHRoaXMuX3Byb2Nlc3NRdWV1ZSx0aGlzKSwzMDApKX0sX3Byb2Nlc3NRdWV1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8dGhpcy5fcXVldWUubGVuZ3RoO3QrKyl0aGlzLl9xdWV1ZVt0XS5jYWxsKHRoaXMpO3RoaXMuX3F1ZXVlLmxlbmd0aD0wLGNsZWFyVGltZW91dCh0aGlzLl9xdWV1ZVRpbWVvdXQpLHRoaXMuX3F1ZXVlVGltZW91dD1udWxsfSxfbWVyZ2VTcGxpdENsdXN0ZXJzOmZ1bmN0aW9uKCl7dGhpcy5fcHJvY2Vzc1F1ZXVlKCksdGhpcy5fem9vbTx0aGlzLl9tYXAuX3pvb20mJnRoaXMuX2N1cnJlbnRTaG93bkJvdW5kcy5pbnRlcnNlY3RzKHRoaXMuX2dldEV4cGFuZGVkVmlzaWJsZUJvdW5kcygpKT8odGhpcy5fYW5pbWF0aW9uU3RhcnQoKSx0aGlzLl90b3BDbHVzdGVyTGV2ZWwuX3JlY3Vyc2l2ZWx5UmVtb3ZlQ2hpbGRyZW5Gcm9tTWFwKHRoaXMuX2N1cnJlbnRTaG93bkJvdW5kcyx0aGlzLl96b29tLHRoaXMuX2dldEV4cGFuZGVkVmlzaWJsZUJvdW5kcygpKSx0aGlzLl9hbmltYXRpb25ab29tSW4odGhpcy5fem9vbSx0aGlzLl9tYXAuX3pvb20pKTp0aGlzLl96b29tPnRoaXMuX21hcC5fem9vbT8odGhpcy5fYW5pbWF0aW9uU3RhcnQoKSx0aGlzLl9hbmltYXRpb25ab29tT3V0KHRoaXMuX3pvb20sdGhpcy5fbWFwLl96b29tKSk6dGhpcy5fbW92ZUVuZCgpfSxfZ2V0RXhwYW5kZWRWaXNpYmxlQm91bmRzOmZ1bmN0aW9uKCl7aWYoIXRoaXMub3B0aW9ucy5yZW1vdmVPdXRzaWRlVmlzaWJsZUJvdW5kcylyZXR1cm4gdGhpcy5fbWFwLmdldEJvdW5kcygpO3ZhciB0PXRoaXMuX21hcCxlPXQuZ2V0Qm91bmRzKCksaT1lLl9zb3V0aFdlc3Qsbj1lLl9ub3J0aEVhc3Qscz1MLkJyb3dzZXIubW9iaWxlPzA6TWF0aC5hYnMoaS5sYXQtbi5sYXQpLHI9TC5Ccm93c2VyLm1vYmlsZT8wOk1hdGguYWJzKGkubG5nLW4ubG5nKTtyZXR1cm4gbmV3IEwuTGF0TG5nQm91bmRzKG5ldyBMLkxhdExuZyhpLmxhdC1zLGkubG5nLXIsITApLG5ldyBMLkxhdExuZyhuLmxhdCtzLG4ubG5nK3IsITApKX0sX2FuaW1hdGlvbkFkZExheWVyTm9uQW5pbWF0ZWQ6ZnVuY3Rpb24odCxlKXtpZihlPT09dCl0aGlzLl9mZWF0dXJlR3JvdXAuYWRkTGF5ZXIodCk7ZWxzZSBpZigyPT09ZS5fY2hpbGRDb3VudCl7ZS5fYWRkVG9NYXAoKTt2YXIgaT1lLmdldEFsbENoaWxkTWFya2VycygpO3RoaXMuX2ZlYXR1cmVHcm91cC5yZW1vdmVMYXllcihpWzBdKSx0aGlzLl9mZWF0dXJlR3JvdXAucmVtb3ZlTGF5ZXIoaVsxXSl9ZWxzZSBlLl91cGRhdGVJY29uKCl9fSksTC5NYXJrZXJDbHVzdGVyR3JvdXAuaW5jbHVkZShMLkRvbVV0aWwuVFJBTlNJVElPTj97X2FuaW1hdGlvblN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbWFwLl9tYXBQYW5lLmNsYXNzTmFtZSs9IiBsZWFmbGV0LWNsdXN0ZXItYW5pbSIsdGhpcy5faW5ab29tQW5pbWF0aW9uKyt9LF9hbmltYXRpb25FbmQ6ZnVuY3Rpb24oKXt0aGlzLl9tYXAmJih0aGlzLl9tYXAuX21hcFBhbmUuY2xhc3NOYW1lPXRoaXMuX21hcC5fbWFwUGFuZS5jbGFzc05hbWUucmVwbGFjZSgiIGxlYWZsZXQtY2x1c3Rlci1hbmltIiwiIikpLHRoaXMuX2luWm9vbUFuaW1hdGlvbi0tLHRoaXMuZmlyZSgiYW5pbWF0aW9uZW5kIil9LF9hbmltYXRpb25ab29tSW46ZnVuY3Rpb24odCxlKXt2YXIgaSxuPXRoaXMuX2dldEV4cGFuZGVkVmlzaWJsZUJvdW5kcygpLHM9dGhpcy5fZmVhdHVyZUdyb3VwO3RoaXMuX3RvcENsdXN0ZXJMZXZlbC5fcmVjdXJzaXZlbHkobix0LDAsZnVuY3Rpb24ocil7dmFyIG8sYT1yLl9sYXRsbmcsaD1yLl9tYXJrZXJzO2ZvcihuLmNvbnRhaW5zKGEpfHwoYT1udWxsKSxyLl9pc1NpbmdsZVBhcmVudCgpJiZ0KzE9PT1lPyhzLnJlbW92ZUxheWVyKHIpLHIuX3JlY3Vyc2l2ZWx5QWRkQ2hpbGRyZW5Ub01hcChudWxsLGUsbikpOihyLnNldE9wYWNpdHkoMCksci5fcmVjdXJzaXZlbHlBZGRDaGlsZHJlblRvTWFwKGEsZSxuKSksaT1oLmxlbmd0aC0xO2k+PTA7aS0tKW89aFtpXSxuLmNvbnRhaW5zKG8uX2xhdGxuZyl8fHMucmVtb3ZlTGF5ZXIobyl9KSx0aGlzLl9mb3JjZUxheW91dCgpLHRoaXMuX3RvcENsdXN0ZXJMZXZlbC5fcmVjdXJzaXZlbHlCZWNvbWVWaXNpYmxlKG4sZSkscy5lYWNoTGF5ZXIoZnVuY3Rpb24odCl7dCBpbnN0YW5jZW9mIEwuTWFya2VyQ2x1c3Rlcnx8IXQuX2ljb258fHQuc2V0T3BhY2l0eSgxKX0pLHRoaXMuX3RvcENsdXN0ZXJMZXZlbC5fcmVjdXJzaXZlbHkobix0LGUsZnVuY3Rpb24odCl7dC5fcmVjdXJzaXZlbHlSZXN0b3JlQ2hpbGRQb3NpdGlvbnMoZSl9KSx0aGlzLl9lbnF1ZXVlKGZ1bmN0aW9uKCl7dGhpcy5fdG9wQ2x1c3RlckxldmVsLl9yZWN1cnNpdmVseShuLHQsMCxmdW5jdGlvbih0KXtzLnJlbW92ZUxheWVyKHQpLHQuc2V0T3BhY2l0eSgxKX0pLHRoaXMuX2FuaW1hdGlvbkVuZCgpfSl9LF9hbmltYXRpb25ab29tT3V0OmZ1bmN0aW9uKHQsZSl7dGhpcy5fYW5pbWF0aW9uWm9vbU91dFNpbmdsZSh0aGlzLl90b3BDbHVzdGVyTGV2ZWwsdC0xLGUpLHRoaXMuX3RvcENsdXN0ZXJMZXZlbC5fcmVjdXJzaXZlbHlBZGRDaGlsZHJlblRvTWFwKG51bGwsZSx0aGlzLl9nZXRFeHBhbmRlZFZpc2libGVCb3VuZHMoKSksdGhpcy5fdG9wQ2x1c3RlckxldmVsLl9yZWN1cnNpdmVseVJlbW92ZUNoaWxkcmVuRnJvbU1hcCh0aGlzLl9jdXJyZW50U2hvd25Cb3VuZHMsdCx0aGlzLl9nZXRFeHBhbmRlZFZpc2libGVCb3VuZHMoKSl9LF9hbmltYXRpb25ab29tT3V0U2luZ2xlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbj10aGlzLl9nZXRFeHBhbmRlZFZpc2libGVCb3VuZHMoKTt0Ll9yZWN1cnNpdmVseUFuaW1hdGVDaGlsZHJlbkluQW5kQWRkU2VsZlRvTWFwKG4sZSsxLGkpO3ZhciBzPXRoaXM7dGhpcy5fZm9yY2VMYXlvdXQoKSx0Ll9yZWN1cnNpdmVseUJlY29tZVZpc2libGUobixpKSx0aGlzLl9lbnF1ZXVlKGZ1bmN0aW9uKCl7aWYoMT09PXQuX2NoaWxkQ291bnQpe3ZhciByPXQuX21hcmtlcnNbMF07ci5zZXRMYXRMbmcoci5nZXRMYXRMbmcoKSksci5zZXRPcGFjaXR5JiZyLnNldE9wYWNpdHkoMSl9ZWxzZSB0Ll9yZWN1cnNpdmVseShuLGksMCxmdW5jdGlvbih0KXt0Ll9yZWN1cnNpdmVseVJlbW92ZUNoaWxkcmVuRnJvbU1hcChuLGUrMSl9KTtzLl9hbmltYXRpb25FbmQoKX0pfSxfYW5pbWF0aW9uQWRkTGF5ZXI6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLG49dGhpcy5fZmVhdHVyZUdyb3VwO24uYWRkTGF5ZXIodCksZSE9PXQmJihlLl9jaGlsZENvdW50PjI/KGUuX3VwZGF0ZUljb24oKSx0aGlzLl9mb3JjZUxheW91dCgpLHRoaXMuX2FuaW1hdGlvblN0YXJ0KCksdC5fc2V0UG9zKHRoaXMuX21hcC5sYXRMbmdUb0xheWVyUG9pbnQoZS5nZXRMYXRMbmcoKSkpLHQuc2V0T3BhY2l0eSgwKSx0aGlzLl9lbnF1ZXVlKGZ1bmN0aW9uKCl7bi5yZW1vdmVMYXllcih0KSx0LnNldE9wYWNpdHkoMSksaS5fYW5pbWF0aW9uRW5kKCl9KSk6KHRoaXMuX2ZvcmNlTGF5b3V0KCksaS5fYW5pbWF0aW9uU3RhcnQoKSxpLl9hbmltYXRpb25ab29tT3V0U2luZ2xlKGUsdGhpcy5fbWFwLmdldE1heFpvb20oKSx0aGlzLl9tYXAuZ2V0Wm9vbSgpKSkpfSxfZm9yY2VMYXlvdXQ6ZnVuY3Rpb24oKXtMLlV0aWwuZmFsc2VGbihlLmJvZHkub2Zmc2V0V2lkdGgpfX06e19hbmltYXRpb25TdGFydDpmdW5jdGlvbigpe30sX2FuaW1hdGlvblpvb21JbjpmdW5jdGlvbih0LGUpe3RoaXMuX3RvcENsdXN0ZXJMZXZlbC5fcmVjdXJzaXZlbHlSZW1vdmVDaGlsZHJlbkZyb21NYXAodGhpcy5fY3VycmVudFNob3duQm91bmRzLHQpLHRoaXMuX3RvcENsdXN0ZXJMZXZlbC5fcmVjdXJzaXZlbHlBZGRDaGlsZHJlblRvTWFwKG51bGwsZSx0aGlzLl9nZXRFeHBhbmRlZFZpc2libGVCb3VuZHMoKSksdGhpcy5maXJlKCJhbmltYXRpb25lbmQiKX0sX2FuaW1hdGlvblpvb21PdXQ6ZnVuY3Rpb24odCxlKXt0aGlzLl90b3BDbHVzdGVyTGV2ZWwuX3JlY3Vyc2l2ZWx5UmVtb3ZlQ2hpbGRyZW5Gcm9tTWFwKHRoaXMuX2N1cnJlbnRTaG93bkJvdW5kcyx0KSx0aGlzLl90b3BDbHVzdGVyTGV2ZWwuX3JlY3Vyc2l2ZWx5QWRkQ2hpbGRyZW5Ub01hcChudWxsLGUsdGhpcy5fZ2V0RXhwYW5kZWRWaXNpYmxlQm91bmRzKCkpLHRoaXMuZmlyZSgiYW5pbWF0aW9uZW5kIil9LF9hbmltYXRpb25BZGRMYXllcjpmdW5jdGlvbih0LGUpe3RoaXMuX2FuaW1hdGlvbkFkZExheWVyTm9uQW5pbWF0ZWQodCxlKX19KSxMLm1hcmtlckNsdXN0ZXJHcm91cD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IEwuTWFya2VyQ2x1c3Rlckdyb3VwKHQpfSxMLk1hcmtlckNsdXN0ZXI9TC5NYXJrZXIuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKHQsZSxpLG4pe0wuTWFya2VyLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcyxpP2kuX2NMYXRMbmd8fGkuZ2V0TGF0TG5nKCk6bmV3IEwuTGF0TG5nKDAsMCkse2ljb246dGhpc30pLHRoaXMuX2dyb3VwPXQsdGhpcy5fem9vbT1lLHRoaXMuX21hcmtlcnM9W10sdGhpcy5fY2hpbGRDbHVzdGVycz1bXSx0aGlzLl9jaGlsZENvdW50PTAsdGhpcy5faWNvbk5lZWRzVXBkYXRlPSEwLHRoaXMuX2JvdW5kcz1uZXcgTC5MYXRMbmdCb3VuZHMsaSYmdGhpcy5fYWRkQ2hpbGQoaSksbiYmdGhpcy5fYWRkQ2hpbGQobil9LGdldEFsbENoaWxkTWFya2VyczpmdW5jdGlvbih0KXt0PXR8fFtdO2Zvcih2YXIgZT10aGlzLl9jaGlsZENsdXN0ZXJzLmxlbmd0aC0xO2U+PTA7ZS0tKXRoaXMuX2NoaWxkQ2x1c3RlcnNbZV0uZ2V0QWxsQ2hpbGRNYXJrZXJzKHQpO2Zvcih2YXIgaT10aGlzLl9tYXJrZXJzLmxlbmd0aC0xO2k+PTA7aS0tKXQucHVzaCh0aGlzLl9tYXJrZXJzW2ldKTtyZXR1cm4gdH0sZ2V0Q2hpbGRDb3VudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jaGlsZENvdW50fSx6b29tVG9Cb3VuZHM6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT10aGlzLl9jaGlsZENsdXN0ZXJzLnNsaWNlKCksaT10aGlzLl9ncm91cC5fbWFwLG49aS5nZXRCb3VuZHNab29tKHRoaXMuX2JvdW5kcykscz10aGlzLl96b29tKzEscj1pLmdldFpvb20oKTtlLmxlbmd0aD4wJiZuPnM7KXtzKys7dmFyIG89W107Zm9yKHQ9MDt0PGUubGVuZ3RoO3QrKylvPW8uY29uY2F0KGVbdF0uX2NoaWxkQ2x1c3RlcnMpO2U9b31uPnM/dGhpcy5fZ3JvdXAuX21hcC5zZXRWaWV3KHRoaXMuX2xhdGxuZyxzKTpyPj1uP3RoaXMuX2dyb3VwLl9tYXAuc2V0Vmlldyh0aGlzLl9sYXRsbmcscisxKTp0aGlzLl9ncm91cC5fbWFwLmZpdEJvdW5kcyh0aGlzLl9ib3VuZHMpfSxnZXRCb3VuZHM6ZnVuY3Rpb24oKXt2YXIgdD1uZXcgTC5MYXRMbmdCb3VuZHM7cmV0dXJuIHQuZXh0ZW5kKHRoaXMuX2JvdW5kcyksdH0sX3VwZGF0ZUljb246ZnVuY3Rpb24oKXt0aGlzLl9pY29uTmVlZHNVcGRhdGU9ITAsdGhpcy5faWNvbiYmdGhpcy5zZXRJY29uKHRoaXMpfSxjcmVhdGVJY29uOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ljb25OZWVkc1VwZGF0ZSYmKHRoaXMuX2ljb25PYmo9dGhpcy5fZ3JvdXAub3B0aW9ucy5pY29uQ3JlYXRlRnVuY3Rpb24odGhpcyksdGhpcy5faWNvbk5lZWRzVXBkYXRlPSExKSx0aGlzLl9pY29uT2JqLmNyZWF0ZUljb24oKX0sY3JlYXRlU2hhZG93OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ljb25PYmouY3JlYXRlU2hhZG93KCl9LF9hZGRDaGlsZDpmdW5jdGlvbih0LGUpe3RoaXMuX2ljb25OZWVkc1VwZGF0ZT0hMCx0aGlzLl9leHBhbmRCb3VuZHModCksdCBpbnN0YW5jZW9mIEwuTWFya2VyQ2x1c3Rlcj8oZXx8KHRoaXMuX2NoaWxkQ2x1c3RlcnMucHVzaCh0KSx0Ll9fcGFyZW50PXRoaXMpLHRoaXMuX2NoaWxkQ291bnQrPXQuX2NoaWxkQ291bnQpOihlfHx0aGlzLl9tYXJrZXJzLnB1c2godCksdGhpcy5fY2hpbGRDb3VudCsrKSx0aGlzLl9fcGFyZW50JiZ0aGlzLl9fcGFyZW50Ll9hZGRDaGlsZCh0LCEwKX0sX2V4cGFuZEJvdW5kczpmdW5jdGlvbih0KXt2YXIgZSxpPXQuX3dMYXRMbmd8fHQuX2xhdGxuZzt0IGluc3RhbmNlb2YgTC5NYXJrZXJDbHVzdGVyPyh0aGlzLl9ib3VuZHMuZXh0ZW5kKHQuX2JvdW5kcyksZT10Ll9jaGlsZENvdW50KToodGhpcy5fYm91bmRzLmV4dGVuZChpKSxlPTEpLHRoaXMuX2NMYXRMbmd8fCh0aGlzLl9jTGF0TG5nPXQuX2NMYXRMbmd8fGkpO3ZhciBuPXRoaXMuX2NoaWxkQ291bnQrZTt0aGlzLl93TGF0TG5nPyh0aGlzLl93TGF0TG5nLmxhdD0oaS5sYXQqZSt0aGlzLl93TGF0TG5nLmxhdCp0aGlzLl9jaGlsZENvdW50KS9uLHRoaXMuX3dMYXRMbmcubG5nPShpLmxuZyplK3RoaXMuX3dMYXRMbmcubG5nKnRoaXMuX2NoaWxkQ291bnQpL24pOnRoaXMuX2xhdGxuZz10aGlzLl93TGF0TG5nPW5ldyBMLkxhdExuZyhpLmxhdCxpLmxuZyl9LF9hZGRUb01hcDpmdW5jdGlvbih0KXt0JiYodGhpcy5fYmFja3VwTGF0bG5nPXRoaXMuX2xhdGxuZyx0aGlzLnNldExhdExuZyh0KSksdGhpcy5fZ3JvdXAuX2ZlYXR1cmVHcm91cC5hZGRMYXllcih0aGlzKX0sX3JlY3Vyc2l2ZWx5QW5pbWF0ZUNoaWxkcmVuSW46ZnVuY3Rpb24odCxlLGkpe3RoaXMuX3JlY3Vyc2l2ZWx5KHQsMCxpLTEsZnVuY3Rpb24odCl7dmFyIGksbixzPXQuX21hcmtlcnM7Zm9yKGk9cy5sZW5ndGgtMTtpPj0wO2ktLSluPXNbaV0sbi5faWNvbiYmKG4uX3NldFBvcyhlKSxuLnNldE9wYWNpdHkoMCkpfSxmdW5jdGlvbih0KXt2YXIgaSxuLHM9dC5fY2hpbGRDbHVzdGVycztmb3IoaT1zLmxlbmd0aC0xO2k+PTA7aS0tKW49c1tpXSxuLl9pY29uJiYobi5fc2V0UG9zKGUpLG4uc2V0T3BhY2l0eSgwKSl9KX0sX3JlY3Vyc2l2ZWx5QW5pbWF0ZUNoaWxkcmVuSW5BbmRBZGRTZWxmVG9NYXA6ZnVuY3Rpb24odCxlLGkpe3RoaXMuX3JlY3Vyc2l2ZWx5KHQsaSwwLGZ1bmN0aW9uKG4pe24uX3JlY3Vyc2l2ZWx5QW5pbWF0ZUNoaWxkcmVuSW4odCxuLl9ncm91cC5fbWFwLmxhdExuZ1RvTGF5ZXJQb2ludChuLmdldExhdExuZygpKS5yb3VuZCgpLGUpLG4uX2lzU2luZ2xlUGFyZW50KCkmJmUtMT09PWk/KG4uc2V0T3BhY2l0eSgxKSxuLl9yZWN1cnNpdmVseVJlbW92ZUNoaWxkcmVuRnJvbU1hcCh0LGUpKTpuLnNldE9wYWNpdHkoMCksbi5fYWRkVG9NYXAoKX0pfSxfcmVjdXJzaXZlbHlCZWNvbWVWaXNpYmxlOmZ1bmN0aW9uKHQsZSl7dGhpcy5fcmVjdXJzaXZlbHkodCwwLGUsbnVsbCxmdW5jdGlvbih0KXt0LnNldE9wYWNpdHkoMSl9KX0sX3JlY3Vyc2l2ZWx5QWRkQ2hpbGRyZW5Ub01hcDpmdW5jdGlvbih0LGUsaSl7dGhpcy5fcmVjdXJzaXZlbHkoaSwtMSxlLGZ1bmN0aW9uKG4pe2lmKGUhPT1uLl96b29tKWZvcih2YXIgcz1uLl9tYXJrZXJzLmxlbmd0aC0xO3M+PTA7cy0tKXt2YXIgcj1uLl9tYXJrZXJzW3NdO2kuY29udGFpbnMoci5fbGF0bG5nKSYmKHQmJihyLl9iYWNrdXBMYXRsbmc9ci5nZXRMYXRMbmcoKSxyLnNldExhdExuZyh0KSxyLnNldE9wYWNpdHkmJnIuc2V0T3BhY2l0eSgwKSksbi5fZ3JvdXAuX2ZlYXR1cmVHcm91cC5hZGRMYXllcihyKSl9fSxmdW5jdGlvbihlKXtlLl9hZGRUb01hcCh0KX0pfSxfcmVjdXJzaXZlbHlSZXN0b3JlQ2hpbGRQb3NpdGlvbnM6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMuX21hcmtlcnMubGVuZ3RoLTE7ZT49MDtlLS0pe3ZhciBpPXRoaXMuX21hcmtlcnNbZV07aS5fYmFja3VwTGF0bG5nJiYoaS5zZXRMYXRMbmcoaS5fYmFja3VwTGF0bG5nKSxkZWxldGUgaS5fYmFja3VwTGF0bG5nKX1pZih0LTE9PT10aGlzLl96b29tKWZvcih2YXIgbj10aGlzLl9jaGlsZENsdXN0ZXJzLmxlbmd0aC0xO24+PTA7bi0tKXRoaXMuX2NoaWxkQ2x1c3RlcnNbbl0uX3Jlc3RvcmVQb3NpdGlvbigpO2Vsc2UgZm9yKHZhciBzPXRoaXMuX2NoaWxkQ2x1c3RlcnMubGVuZ3RoLTE7cz49MDtzLS0pdGhpcy5fY2hpbGRDbHVzdGVyc1tzXS5fcmVjdXJzaXZlbHlSZXN0b3JlQ2hpbGRQb3NpdGlvbnModCl9LF9yZXN0b3JlUG9zaXRpb246ZnVuY3Rpb24oKXt0aGlzLl9iYWNrdXBMYXRsbmcmJih0aGlzLnNldExhdExuZyh0aGlzLl9iYWNrdXBMYXRsbmcpLGRlbGV0ZSB0aGlzLl9iYWNrdXBMYXRsbmcpfSxfcmVjdXJzaXZlbHlSZW1vdmVDaGlsZHJlbkZyb21NYXA6ZnVuY3Rpb24odCxlLGkpe3ZhciBuLHM7dGhpcy5fcmVjdXJzaXZlbHkodCwtMSxlLTEsZnVuY3Rpb24odCl7Zm9yKHM9dC5fbWFya2Vycy5sZW5ndGgtMTtzPj0wO3MtLSluPXQuX21hcmtlcnNbc10saSYmaS5jb250YWlucyhuLl9sYXRsbmcpfHwodC5fZ3JvdXAuX2ZlYXR1cmVHcm91cC5yZW1vdmVMYXllcihuKSxuLnNldE9wYWNpdHkmJm4uc2V0T3BhY2l0eSgxKSl9LGZ1bmN0aW9uKHQpe2ZvcihzPXQuX2NoaWxkQ2x1c3RlcnMubGVuZ3RoLTE7cz49MDtzLS0pbj10Ll9jaGlsZENsdXN0ZXJzW3NdLGkmJmkuY29udGFpbnMobi5fbGF0bG5nKXx8KHQuX2dyb3VwLl9mZWF0dXJlR3JvdXAucmVtb3ZlTGF5ZXIobiksbi5zZXRPcGFjaXR5JiZuLnNldE9wYWNpdHkoMSkpfSl9LF9yZWN1cnNpdmVseTpmdW5jdGlvbih0LGUsaSxuLHMpe3ZhciByLG8sYT10aGlzLl9jaGlsZENsdXN0ZXJzLGg9dGhpcy5fem9vbTtpZihlPmgpZm9yKHI9YS5sZW5ndGgtMTtyPj0wO3ItLSlvPWFbcl0sdC5pbnRlcnNlY3RzKG8uX2JvdW5kcykmJm8uX3JlY3Vyc2l2ZWx5KHQsZSxpLG4scyk7ZWxzZSBpZihuJiZuKHRoaXMpLHMmJnRoaXMuX3pvb209PT1pJiZzKHRoaXMpLGk+aClmb3Iocj1hLmxlbmd0aC0xO3I+PTA7ci0tKW89YVtyXSx0LmludGVyc2VjdHMoby5fYm91bmRzKSYmby5fcmVjdXJzaXZlbHkodCxlLGksbixzKX0sX3JlY2FsY3VsYXRlQm91bmRzOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLl9tYXJrZXJzLGk9dGhpcy5fY2hpbGRDbHVzdGVycztmb3IodGhpcy5fYm91bmRzPW5ldyBMLkxhdExuZ0JvdW5kcyxkZWxldGUgdGhpcy5fd0xhdExuZyx0PWUubGVuZ3RoLTE7dD49MDt0LS0pdGhpcy5fZXhwYW5kQm91bmRzKGVbdF0pO2Zvcih0PWkubGVuZ3RoLTE7dD49MDt0LS0pdGhpcy5fZXhwYW5kQm91bmRzKGlbdF0pfSxfaXNTaW5nbGVQYXJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2hpbGRDbHVzdGVycy5sZW5ndGg+MCYmdGhpcy5fY2hpbGRDbHVzdGVyc1swXS5fY2hpbGRDb3VudD09PXRoaXMuX2NoaWxkQ291bnR9fSksTC5EaXN0YW5jZUdyaWQ9ZnVuY3Rpb24odCl7dGhpcy5fY2VsbFNpemU9dCx0aGlzLl9zcUNlbGxTaXplPXQqdCx0aGlzLl9ncmlkPXt9LHRoaXMuX29iamVjdFBvaW50PXt9fSxMLkRpc3RhbmNlR3JpZC5wcm90b3R5cGU9e2FkZE9iamVjdDpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuX2dldENvb3JkKGUueCksbj10aGlzLl9nZXRDb29yZChlLnkpLHM9dGhpcy5fZ3JpZCxyPXNbbl09c1tuXXx8e30sbz1yW2ldPXJbaV18fFtdLGE9TC5VdGlsLnN0YW1wKHQpO3RoaXMuX29iamVjdFBvaW50W2FdPWUsby5wdXNoKHQpfSx1cGRhdGVPYmplY3Q6ZnVuY3Rpb24odCxlKXt0aGlzLnJlbW92ZU9iamVjdCh0KSx0aGlzLmFkZE9iamVjdCh0LGUpfSxyZW1vdmVPYmplY3Q6ZnVuY3Rpb24odCxlKXt2YXIgaSxuLHM9dGhpcy5fZ2V0Q29vcmQoZS54KSxyPXRoaXMuX2dldENvb3JkKGUueSksbz10aGlzLl9ncmlkLGE9b1tyXT1vW3JdfHx7fSxoPWFbc109YVtzXXx8W107Zm9yKGRlbGV0ZSB0aGlzLl9vYmplY3RQb2ludFtMLlV0aWwuc3RhbXAodCldLGk9MCxuPWgubGVuZ3RoO24+aTtpKyspaWYoaFtpXT09PXQpcmV0dXJuIGguc3BsaWNlKGksMSksMT09PW4mJmRlbGV0ZSBhW3NdLCEwfSxlYWNoT2JqZWN0OmZ1bmN0aW9uKHQsZSl7dmFyIGksbixzLHIsbyxhLGgsXz10aGlzLl9ncmlkO2ZvcihpIGluIF8pe289X1tpXTtmb3IobiBpbiBvKWZvcihhPW9bbl0scz0wLHI9YS5sZW5ndGg7cj5zO3MrKyloPXQuY2FsbChlLGFbc10pLGgmJihzLS0sci0tKX19LGdldE5lYXJPYmplY3Q6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHMscixvLGEsaCxfPXRoaXMuX2dldENvb3JkKHQueCksdT10aGlzLl9nZXRDb29yZCh0LnkpLGw9dGhpcy5fb2JqZWN0UG9pbnQsZD10aGlzLl9zcUNlbGxTaXplLHA9bnVsbDtmb3IoZT11LTE7dSsxPj1lO2UrKylpZihzPXRoaXMuX2dyaWRbZV0pZm9yKGk9Xy0xO18rMT49aTtpKyspaWYocj1zW2ldKWZvcihuPTAsbz1yLmxlbmd0aDtvPm47bisrKWE9cltuXSxoPXRoaXMuX3NxRGlzdChsW0wuVXRpbC5zdGFtcChhKV0sdCksZD5oJiYoZD1oLHA9YSk7cmV0dXJuIHB9LF9nZXRDb29yZDpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5mbG9vcih0L3RoaXMuX2NlbGxTaXplKX0sX3NxRGlzdDpmdW5jdGlvbih0LGUpe3ZhciBpPWUueC10Lngsbj1lLnktdC55O3JldHVybiBpKmkrbipufX0sZnVuY3Rpb24oKXtMLlF1aWNrSHVsbD17Z2V0RGlzdGFudDpmdW5jdGlvbih0LGUpe3ZhciBpPWVbMV0ubGF0LWVbMF0ubGF0LG49ZVswXS5sbmctZVsxXS5sbmc7cmV0dXJuIG4qKHQubGF0LWVbMF0ubGF0KStpKih0LmxuZy1lWzBdLmxuZyl9LGZpbmRNb3N0RGlzdGFudFBvaW50RnJvbUJhc2VMaW5lOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixzLHI9MCxvPW51bGwsYT1bXTtmb3IoaT1lLmxlbmd0aC0xO2k+PTA7aS0tKW49ZVtpXSxzPXRoaXMuZ2V0RGlzdGFudChuLHQpLHM+MCYmKGEucHVzaChuKSxzPnImJihyPXMsbz1uKSk7cmV0dXJue21heFBvaW50Om8sbmV3UG9pbnRzOmF9fSxidWlsZENvbnZleEh1bGw6ZnVuY3Rpb24odCxlKXt2YXIgaT1bXSxuPXRoaXMuZmluZE1vc3REaXN0YW50UG9pbnRGcm9tQmFzZUxpbmUodCxlKTtyZXR1cm4gbi5tYXhQb2ludD8oaT1pLmNvbmNhdCh0aGlzLmJ1aWxkQ29udmV4SHVsbChbdFswXSxuLm1heFBvaW50XSxuLm5ld1BvaW50cykpLGk9aS5jb25jYXQodGhpcy5idWlsZENvbnZleEh1bGwoW24ubWF4UG9pbnQsdFsxXV0sbi5uZXdQb2ludHMpKSk6W3RbMF1dfSxnZXRDb252ZXhIdWxsOmZ1bmN0aW9uKHQpe3ZhciBlLGk9ITEsbj0hMSxzPW51bGwscj1udWxsO2ZvcihlPXQubGVuZ3RoLTE7ZT49MDtlLS0pe3ZhciBvPXRbZV07KGk9PT0hMXx8by5sYXQ+aSkmJihzPW8saT1vLmxhdCksKG49PT0hMXx8by5sYXQ8bikmJihyPW8sbj1vLmxhdCl9dmFyIGE9W10uY29uY2F0KHRoaXMuYnVpbGRDb252ZXhIdWxsKFtyLHNdLHQpLHRoaXMuYnVpbGRDb252ZXhIdWxsKFtzLHJdLHQpKTtyZXR1cm4gYX19fSgpLEwuTWFya2VyQ2x1c3Rlci5pbmNsdWRlKHtnZXRDb252ZXhIdWxsOmZ1bmN0aW9uKCl7dmFyIHQsZSxpPXRoaXMuZ2V0QWxsQ2hpbGRNYXJrZXJzKCksbj1bXTtmb3IoZT1pLmxlbmd0aC0xO2U+PTA7ZS0tKXQ9aVtlXS5nZXRMYXRMbmcoKSxuLnB1c2godCk7cmV0dXJuIEwuUXVpY2tIdWxsLmdldENvbnZleEh1bGwobil9fSksTC5NYXJrZXJDbHVzdGVyLmluY2x1ZGUoe18yUEk6MipNYXRoLlBJLF9jaXJjbGVGb290U2VwYXJhdGlvbjoyNSxfY2lyY2xlU3RhcnRBbmdsZTpNYXRoLlBJLzYsX3NwaXJhbEZvb3RTZXBhcmF0aW9uOjI4LF9zcGlyYWxMZW5ndGhTdGFydDoxMSxfc3BpcmFsTGVuZ3RoRmFjdG9yOjUsX2NpcmNsZVNwaXJhbFN3aXRjaG92ZXI6OSxzcGlkZXJmeTpmdW5jdGlvbigpe2lmKHRoaXMuX2dyb3VwLl9zcGlkZXJmaWVkIT09dGhpcyYmIXRoaXMuX2dyb3VwLl9pblpvb21BbmltYXRpb24pe3ZhciB0LGU9dGhpcy5nZXRBbGxDaGlsZE1hcmtlcnMoKSxpPXRoaXMuX2dyb3VwLG49aS5fbWFwLHM9bi5sYXRMbmdUb0xheWVyUG9pbnQodGhpcy5fbGF0bG5nKTt0aGlzLl9ncm91cC5fdW5zcGlkZXJmeSgpLHRoaXMuX2dyb3VwLl9zcGlkZXJmaWVkPXRoaXMsZS5sZW5ndGg+PXRoaXMuX2NpcmNsZVNwaXJhbFN3aXRjaG92ZXI/dD10aGlzLl9nZW5lcmF0ZVBvaW50c1NwaXJhbChlLmxlbmd0aCxzKToocy55Kz0xMCx0PXRoaXMuX2dlbmVyYXRlUG9pbnRzQ2lyY2xlKGUubGVuZ3RoLHMpKSx0aGlzLl9hbmltYXRpb25TcGlkZXJmeShlLHQpfX0sdW5zcGlkZXJmeTpmdW5jdGlvbih0KXt0aGlzLl9ncm91cC5faW5ab29tQW5pbWF0aW9ufHwodGhpcy5fYW5pbWF0aW9uVW5zcGlkZXJmeSh0KSx0aGlzLl9ncm91cC5fc3BpZGVyZmllZD1udWxsKX0sX2dlbmVyYXRlUG9pbnRzQ2lyY2xlOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixzPXRoaXMuX2dyb3VwLm9wdGlvbnMuc3BpZGVyZnlEaXN0YW5jZU11bHRpcGxpZXIqdGhpcy5fY2lyY2xlRm9vdFNlcGFyYXRpb24qKDIrdCkscj1zL3RoaXMuXzJQSSxvPXRoaXMuXzJQSS90LGE9W107Zm9yKGEubGVuZ3RoPXQsaT10LTE7aT49MDtpLS0pbj10aGlzLl9jaXJjbGVTdGFydEFuZ2xlK2kqbyxhW2ldPW5ldyBMLlBvaW50KGUueCtyKk1hdGguY29zKG4pLGUueStyKk1hdGguc2luKG4pKS5fcm91bmQoKTtyZXR1cm4gYX0sX2dlbmVyYXRlUG9pbnRzU3BpcmFsOmZ1bmN0aW9uKHQsZSl7dmFyIGksbj10aGlzLl9ncm91cC5vcHRpb25zLnNwaWRlcmZ5RGlzdGFuY2VNdWx0aXBsaWVyKnRoaXMuX3NwaXJhbExlbmd0aFN0YXJ0LHM9dGhpcy5fZ3JvdXAub3B0aW9ucy5zcGlkZXJmeURpc3RhbmNlTXVsdGlwbGllcip0aGlzLl9zcGlyYWxGb290U2VwYXJhdGlvbixyPXRoaXMuX2dyb3VwLm9wdGlvbnMuc3BpZGVyZnlEaXN0YW5jZU11bHRpcGxpZXIqdGhpcy5fc3BpcmFsTGVuZ3RoRmFjdG9yLG89MCxhPVtdO2ZvcihhLmxlbmd0aD10LGk9dC0xO2k+PTA7aS0tKW8rPXMvbis1ZS00KmksYVtpXT1uZXcgTC5Qb2ludChlLngrbipNYXRoLmNvcyhvKSxlLnkrbipNYXRoLnNpbihvKSkuX3JvdW5kKCksbis9dGhpcy5fMlBJKnIvbztyZXR1cm4gYX0sX25vYW5pbWF0aW9uVW5zcGlkZXJmeTpmdW5jdGlvbigpe3ZhciB0LGUsaT10aGlzLl9ncm91cCxuPWkuX21hcCxzPWkuX2ZlYXR1cmVHcm91cCxyPXRoaXMuZ2V0QWxsQ2hpbGRNYXJrZXJzKCk7Zm9yKHRoaXMuc2V0T3BhY2l0eSgxKSxlPXIubGVuZ3RoLTE7ZT49MDtlLS0pdD1yW2VdLHMucmVtb3ZlTGF5ZXIodCksdC5fcHJlU3BpZGVyZnlMYXRsbmcmJih0LnNldExhdExuZyh0Ll9wcmVTcGlkZXJmeUxhdGxuZyksZGVsZXRlIHQuX3ByZVNwaWRlcmZ5TGF0bG5nKSx0LnNldFpJbmRleE9mZnNldCYmdC5zZXRaSW5kZXhPZmZzZXQoMCksdC5fc3BpZGVyTGVnJiYobi5yZW1vdmVMYXllcih0Ll9zcGlkZXJMZWcpLGRlbGV0ZSB0Ll9zcGlkZXJMZWcpO2kuX3NwaWRlcmZpZWQ9bnVsbH19KSxMLk1hcmtlckNsdXN0ZXIuaW5jbHVkZShMLkRvbVV0aWwuVFJBTlNJVElPTj97U1ZHX0FOSU1BVElPTjpmdW5jdGlvbigpe3JldHVybiBlLmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJhbmltYXRlIikudG9TdHJpbmcoKS5pbmRleE9mKCJTVkdBbmltYXRlIik+LTF9KCksX2FuaW1hdGlvblNwaWRlcmZ5OmZ1bmN0aW9uKHQsaSl7dmFyIG4scyxyLG8sYT10aGlzLGg9dGhpcy5fZ3JvdXAsXz1oLl9tYXAsdT1oLl9mZWF0dXJlR3JvdXAsbD1fLmxhdExuZ1RvTGF5ZXJQb2ludCh0aGlzLl9sYXRsbmcpO2ZvcihuPXQubGVuZ3RoLTE7bj49MDtuLS0pcz10W25dLHMuc2V0T3BhY2l0eT8ocy5zZXRaSW5kZXhPZmZzZXQoMWU2KSxzLnNldE9wYWNpdHkoMCksdS5hZGRMYXllcihzKSxzLl9zZXRQb3MobCkpOnUuYWRkTGF5ZXIocyk7aC5fZm9yY2VMYXlvdXQoKSxoLl9hbmltYXRpb25TdGFydCgpO3ZhciBkPUwuUGF0aC5TVkc/MDouMyxwPUwuUGF0aC5TVkdfTlM7Zm9yKG49dC5sZW5ndGgtMTtuPj0wO24tLSlpZihvPV8ubGF5ZXJQb2ludFRvTGF0TG5nKGlbbl0pLHM9dFtuXSxzLl9wcmVTcGlkZXJmeUxhdGxuZz1zLl9sYXRsbmcscy5zZXRMYXRMbmcobykscy5zZXRPcGFjaXR5JiZzLnNldE9wYWNpdHkoMSkscj1uZXcgTC5Qb2x5bGluZShbYS5fbGF0bG5nLG9dLHt3ZWlnaHQ6MS41LGNvbG9yOiIjMjIyIixvcGFjaXR5OmR9KSxfLmFkZExheWVyKHIpLHMuX3NwaWRlckxlZz1yLEwuUGF0aC5TVkcmJnRoaXMuU1ZHX0FOSU1BVElPTil7dmFyIGM9ci5fcGF0aC5nZXRUb3RhbExlbmd0aCgpO3IuX3BhdGguc2V0QXR0cmlidXRlKCJzdHJva2UtZGFzaGFycmF5IixjKyIsIitjKTt2YXIgZj1lLmNyZWF0ZUVsZW1lbnROUyhwLCJhbmltYXRlIik7Zi5zZXRBdHRyaWJ1dGUoImF0dHJpYnV0ZU5hbWUiLCJzdHJva2UtZGFzaG9mZnNldCIpLGYuc2V0QXR0cmlidXRlKCJiZWdpbiIsImluZGVmaW5pdGUiKSxmLnNldEF0dHJpYnV0ZSgiZnJvbSIsYyksZi5zZXRBdHRyaWJ1dGUoInRvIiwwKSxmLnNldEF0dHJpYnV0ZSgiZHVyIiwuMjUpLHIuX3BhdGguYXBwZW5kQ2hpbGQoZiksZi5iZWdpbkVsZW1lbnQoKSxmPWUuY3JlYXRlRWxlbWVudE5TKHAsImFuaW1hdGUiKSxmLnNldEF0dHJpYnV0ZSgiYXR0cmlidXRlTmFtZSIsInN0cm9rZS1vcGFjaXR5IiksZi5zZXRBdHRyaWJ1dGUoImF0dHJpYnV0ZU5hbWUiLCJzdHJva2Utb3BhY2l0eSIpLGYuc2V0QXR0cmlidXRlKCJiZWdpbiIsImluZGVmaW5pdGUiKSxmLnNldEF0dHJpYnV0ZSgiZnJvbSIsMCksZi5zZXRBdHRyaWJ1dGUoInRvIiwuNSksZi5zZXRBdHRyaWJ1dGUoImR1ciIsLjI1KSxyLl9wYXRoLmFwcGVuZENoaWxkKGYpLGYuYmVnaW5FbGVtZW50KCl9aWYoYS5zZXRPcGFjaXR5KC4zKSxMLlBhdGguU1ZHKWZvcih0aGlzLl9ncm91cC5fZm9yY2VMYXlvdXQoKSxuPXQubGVuZ3RoLTE7bj49MDtuLS0pcz10W25dLl9zcGlkZXJMZWcscy5vcHRpb25zLm9wYWNpdHk9LjUscy5fcGF0aC5zZXRBdHRyaWJ1dGUoInN0cm9rZS1vcGFjaXR5IiwuNSk7c2V0VGltZW91dChmdW5jdGlvbigpe2guX2FuaW1hdGlvbkVuZCgpLGguZmlyZSgic3BpZGVyZmllZCIpfSwyMDApfSxfYW5pbWF0aW9uVW5zcGlkZXJmeTpmdW5jdGlvbih0KXt2YXIgZSxpLG4scz10aGlzLl9ncm91cCxyPXMuX21hcCxvPXMuX2ZlYXR1cmVHcm91cCxhPXQ/ci5fbGF0TG5nVG9OZXdMYXllclBvaW50KHRoaXMuX2xhdGxuZyx0Lnpvb20sdC5jZW50ZXIpOnIubGF0TG5nVG9MYXllclBvaW50KHRoaXMuX2xhdGxuZyksaD10aGlzLmdldEFsbENoaWxkTWFya2VycygpLF89TC5QYXRoLlNWRyYmdGhpcy5TVkdfQU5JTUFUSU9OO2ZvcihzLl9hbmltYXRpb25TdGFydCgpLHRoaXMuc2V0T3BhY2l0eSgxKSxpPWgubGVuZ3RoLTE7aT49MDtpLS0pZT1oW2ldLGUuX3ByZVNwaWRlcmZ5TGF0bG5nJiYoZS5zZXRMYXRMbmcoZS5fcHJlU3BpZGVyZnlMYXRsbmcpLGRlbGV0ZSBlLl9wcmVTcGlkZXJmeUxhdGxuZyxlLnNldE9wYWNpdHk/KGUuX3NldFBvcyhhKSxlLnNldE9wYWNpdHkoMCkpOm8ucmVtb3ZlTGF5ZXIoZSksXyYmKG49ZS5fc3BpZGVyTGVnLl9wYXRoLmNoaWxkTm9kZXNbMF0sbi5zZXRBdHRyaWJ1dGUoInRvIixuLmdldEF0dHJpYnV0ZSgiZnJvbSIpKSxuLnNldEF0dHJpYnV0ZSgiZnJvbSIsMCksbi5iZWdpbkVsZW1lbnQoKSxuPWUuX3NwaWRlckxlZy5fcGF0aC5jaGlsZE5vZGVzWzFdLG4uc2V0QXR0cmlidXRlKCJmcm9tIiwuNSksbi5zZXRBdHRyaWJ1dGUoInRvIiwwKSxuLnNldEF0dHJpYnV0ZSgic3Ryb2tlLW9wYWNpdHkiLDApLG4uYmVnaW5FbGVtZW50KCksZS5fc3BpZGVyTGVnLl9wYXRoLnNldEF0dHJpYnV0ZSgic3Ryb2tlLW9wYWNpdHkiLDApKSk7c2V0VGltZW91dChmdW5jdGlvbigpe3ZhciB0PTA7Zm9yKGk9aC5sZW5ndGgtMTtpPj0wO2ktLSllPWhbaV0sZS5fc3BpZGVyTGVnJiZ0Kys7Zm9yKGk9aC5sZW5ndGgtMTtpPj0wO2ktLSllPWhbaV0sZS5fc3BpZGVyTGVnJiYoZS5zZXRPcGFjaXR5JiYoZS5zZXRPcGFjaXR5KDEpLGUuc2V0WkluZGV4T2Zmc2V0KDApKSx0PjEmJm8ucmVtb3ZlTGF5ZXIoZSksci5yZW1vdmVMYXllcihlLl9zcGlkZXJMZWcpLGRlbGV0ZSBlLl9zcGlkZXJMZWcpO3MuX2FuaW1hdGlvbkVuZCgpfSwyMDApfX06e19hbmltYXRpb25TcGlkZXJmeTpmdW5jdGlvbih0LGUpe3ZhciBpLG4scyxyLG89dGhpcy5fZ3JvdXAsYT1vLl9tYXAsaD1vLl9mZWF0dXJlR3JvdXA7Zm9yKGk9dC5sZW5ndGgtMTtpPj0wO2ktLSlyPWEubGF5ZXJQb2ludFRvTGF0TG5nKGVbaV0pLG49dFtpXSxuLl9wcmVTcGlkZXJmeUxhdGxuZz1uLl9sYXRsbmcsbi5zZXRMYXRMbmcociksbi5zZXRaSW5kZXhPZmZzZXQmJm4uc2V0WkluZGV4T2Zmc2V0KDFlNiksaC5hZGRMYXllcihuKSxzPW5ldyBMLlBvbHlsaW5lKFt0aGlzLl9sYXRsbmcscl0se3dlaWdodDoxLjUsY29sb3I6IiMyMjIifSksYS5hZGRMYXllcihzKSxuLl9zcGlkZXJMZWc9czt0aGlzLnNldE9wYWNpdHkoLjMpLG8uZmlyZSgic3BpZGVyZmllZCIpfSxfYW5pbWF0aW9uVW5zcGlkZXJmeTpmdW5jdGlvbigpe3RoaXMuX25vYW5pbWF0aW9uVW5zcGlkZXJmeSgpfX0pLEwuTWFya2VyQ2x1c3Rlckdyb3VwLmluY2x1ZGUoe19zcGlkZXJmaWVkOm51bGwsX3NwaWRlcmZpZXJPbkFkZDpmdW5jdGlvbigpe3RoaXMuX21hcC5vbigiY2xpY2siLHRoaXMuX3Vuc3BpZGVyZnlXcmFwcGVyLHRoaXMpLHRoaXMuX21hcC5vcHRpb25zLnpvb21BbmltYXRpb24mJnRoaXMuX21hcC5vbigiem9vbXN0YXJ0Iix0aGlzLl91bnNwaWRlcmZ5Wm9vbVN0YXJ0LHRoaXMpLHRoaXMuX21hcC5vbigiem9vbWVuZCIsdGhpcy5fbm9hbmltYXRpb25VbnNwaWRlcmZ5LHRoaXMpLEwuUGF0aC5TVkcmJiFMLkJyb3dzZXIudG91Y2gmJnRoaXMuX21hcC5faW5pdFBhdGhSb290KCl9LF9zcGlkZXJmaWVyT25SZW1vdmU6ZnVuY3Rpb24oKXt0aGlzLl9tYXAub2ZmKCJjbGljayIsdGhpcy5fdW5zcGlkZXJmeVdyYXBwZXIsdGhpcyksdGhpcy5fbWFwLm9mZigiem9vbXN0YXJ0Iix0aGlzLl91bnNwaWRlcmZ5Wm9vbVN0YXJ0LHRoaXMpLHRoaXMuX21hcC5vZmYoInpvb21hbmltIix0aGlzLl91bnNwaWRlcmZ5Wm9vbUFuaW0sdGhpcyksdGhpcy5fdW5zcGlkZXJmeSgpfSxfdW5zcGlkZXJmeVpvb21TdGFydDpmdW5jdGlvbigpe3RoaXMuX21hcCYmdGhpcy5fbWFwLm9uKCJ6b29tYW5pbSIsdGhpcy5fdW5zcGlkZXJmeVpvb21BbmltLHRoaXMpfSxfdW5zcGlkZXJmeVpvb21BbmltOmZ1bmN0aW9uKHQpe0wuRG9tVXRpbC5oYXNDbGFzcyh0aGlzLl9tYXAuX21hcFBhbmUsImxlYWZsZXQtdG91Y2hpbmciKXx8KHRoaXMuX21hcC5vZmYoInpvb21hbmltIix0aGlzLl91bnNwaWRlcmZ5Wm9vbUFuaW0sdGhpcyksdGhpcy5fdW5zcGlkZXJmeSh0KSl9LF91bnNwaWRlcmZ5V3JhcHBlcjpmdW5jdGlvbigpe3RoaXMuX3Vuc3BpZGVyZnkoKX0sX3Vuc3BpZGVyZnk6ZnVuY3Rpb24odCl7dGhpcy5fc3BpZGVyZmllZCYmdGhpcy5fc3BpZGVyZmllZC51bnNwaWRlcmZ5KHQpfSxfbm9hbmltYXRpb25VbnNwaWRlcmZ5OmZ1bmN0aW9uKCl7dGhpcy5fc3BpZGVyZmllZCYmdGhpcy5fc3BpZGVyZmllZC5fbm9hbmltYXRpb25VbnNwaWRlcmZ5KCl9LF91bnNwaWRlcmZ5TGF5ZXI6ZnVuY3Rpb24odCl7dC5fc3BpZGVyTGVnJiYodGhpcy5fZmVhdHVyZUdyb3VwLnJlbW92ZUxheWVyKHQpLHQuc2V0T3BhY2l0eSgxKSx0LnNldFpJbmRleE9mZnNldCgwKSx0aGlzLl9tYXAucmVtb3ZlTGF5ZXIodC5fc3BpZGVyTGVnKSxkZWxldGUgdC5fc3BpZGVyTGVnKX19KX0od2luZG93LGRvY3VtZW50KTs="></script> | |
| <style type="text/css">code{white-space: pre;}</style> | |
| <link href="data:text/css;charset=utf-8,pre%20%2Eoperator%2C%0Apre%20%2Eparen%20%7B%0Acolor%3A%20rgb%28104%2C%20118%2C%20135%29%0A%7D%0Apre%20%2Eliteral%20%7B%0Acolor%3A%20%23990073%0A%7D%0Apre%20%2Enumber%20%7B%0Acolor%3A%20%23099%3B%0A%7D%0Apre%20%2Ecomment%20%7B%0Acolor%3A%20%23998%3B%0Afont%2Dstyle%3A%20italic%0A%7D%0Apre%20%2Ekeyword%20%7B%0Acolor%3A%20%23900%3B%0Afont%2Dweight%3A%20bold%0A%7D%0Apre%20%2Eidentifier%20%7B%0Acolor%3A%20rgb%280%2C%200%2C%200%29%3B%0A%7D%0Apre%20%2Estring%20%7B%0Acolor%3A%20%23d14%3B%0A%7D%0A" rel="stylesheet" type="text/css" /> | |
| <script src="data:application/x-javascript;base64,CnZhciBobGpzPW5ldyBmdW5jdGlvbigpe2Z1bmN0aW9uIG0ocCl7cmV0dXJuIHAucmVwbGFjZSgvJi9nbSwiJmFtcDsiKS5yZXBsYWNlKC88L2dtLCImbHQ7Iil9ZnVuY3Rpb24gZihyLHEscCl7cmV0dXJuIFJlZ0V4cChxLCJtIisoci5jST8iaSI6IiIpKyhwPyJnIjoiIikpfWZ1bmN0aW9uIGIocil7Zm9yKHZhciBwPTA7cDxyLmNoaWxkTm9kZXMubGVuZ3RoO3ArKyl7dmFyIHE9ci5jaGlsZE5vZGVzW3BdO2lmKHEubm9kZU5hbWU9PSJDT0RFIil7cmV0dXJuIHF9aWYoIShxLm5vZGVUeXBlPT0zJiZxLm5vZGVWYWx1ZS5tYXRjaCgvXHMrLykpKXticmVha319fWZ1bmN0aW9uIGgodCxzKXt2YXIgcD0iIjtmb3IodmFyIHI9MDtyPHQuY2hpbGROb2Rlcy5sZW5ndGg7cisrKXtpZih0LmNoaWxkTm9kZXNbcl0ubm9kZVR5cGU9PTMpe3ZhciBxPXQuY2hpbGROb2Rlc1tyXS5ub2RlVmFsdWU7aWYocyl7cT1xLnJlcGxhY2UoL1xuL2csIiIpfXArPXF9ZWxzZXtpZih0LmNoaWxkTm9kZXNbcl0ubm9kZU5hbWU9PSJCUiIpe3ArPSJcbiJ9ZWxzZXtwKz1oKHQuY2hpbGROb2Rlc1tyXSl9fX1pZigvTVNJRSBbNjc4XS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSl7cD1wLnJlcGxhY2UoL1xyL2csIlxuIil9cmV0dXJuIHB9ZnVuY3Rpb24gYShzKXt2YXIgcj1zLmNsYXNzTmFtZS5zcGxpdCgvXHMrLyk7cj1yLmNvbmNhdChzLnBhcmVudE5vZGUuY2xhc3NOYW1lLnNwbGl0KC9ccysvKSk7Zm9yKHZhciBxPTA7cTxyLmxlbmd0aDtxKyspe3ZhciBwPXJbcV0ucmVwbGFjZSgvXmxhbmd1YWdlLS8sIiIpO2lmKGVbcF0pe3JldHVybiBwfX19ZnVuY3Rpb24gYyhxKXt2YXIgcD1bXTsoZnVuY3Rpb24ocyx0KXtmb3IodmFyIHI9MDtyPHMuY2hpbGROb2Rlcy5sZW5ndGg7cisrKXtpZihzLmNoaWxkTm9kZXNbcl0ubm9kZVR5cGU9PTMpe3QrPXMuY2hpbGROb2Rlc1tyXS5ub2RlVmFsdWUubGVuZ3RofWVsc2V7aWYocy5jaGlsZE5vZGVzW3JdLm5vZGVOYW1lPT0iQlIiKXt0Kz0xfWVsc2V7aWYocy5jaGlsZE5vZGVzW3JdLm5vZGVUeXBlPT0xKXtwLnB1c2goe2V2ZW50OiJzdGFydCIsb2Zmc2V0OnQsbm9kZTpzLmNoaWxkTm9kZXNbcl19KTt0PWFyZ3VtZW50cy5jYWxsZWUocy5jaGlsZE5vZGVzW3JdLHQpO3AucHVzaCh7ZXZlbnQ6InN0b3AiLG9mZnNldDp0LG5vZGU6cy5jaGlsZE5vZGVzW3JdfSl9fX19cmV0dXJuIHR9KShxLDApO3JldHVybiBwfWZ1bmN0aW9uIGsoeSx3LHgpe3ZhciBxPTA7dmFyIHo9IiI7dmFyIHM9W107ZnVuY3Rpb24gdSgpe2lmKHkubGVuZ3RoJiZ3Lmxlbmd0aCl7aWYoeVswXS5vZmZzZXQhPXdbMF0ub2Zmc2V0KXtyZXR1cm4oeVswXS5vZmZzZXQ8d1swXS5vZmZzZXQpP3k6d31lbHNle3JldHVybiB3WzBdLmV2ZW50PT0ic3RhcnQiP3k6d319ZWxzZXtyZXR1cm4geS5sZW5ndGg/eTp3fX1mdW5jdGlvbiB0KEQpe3ZhciBBPSI8IitELm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7Zm9yKHZhciBCPTA7QjxELmF0dHJpYnV0ZXMubGVuZ3RoO0IrKyl7dmFyIEM9RC5hdHRyaWJ1dGVzW0JdO0ErPSIgIitDLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYoQy52YWx1ZSE9PXVuZGVmaW5lZCYmQy52YWx1ZSE9PWZhbHNlJiZDLnZhbHVlIT09bnVsbCl7QSs9Jz0iJyttKEMudmFsdWUpKyciJ319cmV0dXJuIEErIj4ifXdoaWxlKHkubGVuZ3RofHx3Lmxlbmd0aCl7dmFyIHY9dSgpLnNwbGljZSgwLDEpWzBdO3orPW0oeC5zdWJzdHIocSx2Lm9mZnNldC1xKSk7cT12Lm9mZnNldDtpZih2LmV2ZW50PT0ic3RhcnQiKXt6Kz10KHYubm9kZSk7cy5wdXNoKHYubm9kZSl9ZWxzZXtpZih2LmV2ZW50PT0ic3RvcCIpe3ZhciBwLHI9cy5sZW5ndGg7ZG97ci0tO3A9c1tyXTt6Kz0oIjwvIitwLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkrIj4iKX13aGlsZShwIT12Lm5vZGUpO3Muc3BsaWNlKHIsMSk7d2hpbGUocjxzLmxlbmd0aCl7eis9dChzW3JdKTtyKyt9fX19cmV0dXJuIHorbSh4LnN1YnN0cihxKSl9ZnVuY3Rpb24gaigpe2Z1bmN0aW9uIHEoeCx5LHYpe2lmKHguY29tcGlsZWQpe3JldHVybn12YXIgdTt2YXIgcz1bXTtpZih4Lmspe3gubFI9Zih5LHgubHx8aGxqcy5JUix0cnVlKTtmb3IodmFyIHcgaW4geC5rKXtpZigheC5rLmhhc093blByb3BlcnR5KHcpKXtjb250aW51ZX1pZih4Lmtbd10gaW5zdGFuY2VvZiBPYmplY3Qpe3U9eC5rW3ddfWVsc2V7dT14Lms7dz0ia2V5d29yZCJ9Zm9yKHZhciByIGluIHUpe2lmKCF1Lmhhc093blByb3BlcnR5KHIpKXtjb250aW51ZX14Lmtbcl09W3csdVtyXV07cy5wdXNoKHIpfX19aWYoIXYpe2lmKHguYldLKXt4LmI9IlxcYigiK3Muam9pbigifCIpKyIpXFxzIn14LmJSPWYoeSx4LmI/eC5iOiJcXEJ8XFxiIik7aWYoIXguZSYmIXguZVcpe3guZT0iXFxCfFxcYiJ9aWYoeC5lKXt4LmVSPWYoeSx4LmUpfX1pZih4Lmkpe3guaVI9Zih5LHguaSl9aWYoeC5yPT09dW5kZWZpbmVkKXt4LnI9MX1pZigheC5jKXt4LmM9W119eC5jb21waWxlZD10cnVlO2Zvcih2YXIgdD0wO3Q8eC5jLmxlbmd0aDt0Kyspe2lmKHguY1t0XT09InNlbGYiKXt4LmNbdF09eH1xKHguY1t0XSx5LGZhbHNlKX1pZih4LnN0YXJ0cyl7cSh4LnN0YXJ0cyx5LGZhbHNlKX19Zm9yKHZhciBwIGluIGUpe2lmKCFlLmhhc093blByb3BlcnR5KHApKXtjb250aW51ZX1xKGVbcF0uZE0sZVtwXSx0cnVlKX19ZnVuY3Rpb24gZChCLEMpe2lmKCFqLmNhbGxlZCl7aigpO2ouY2FsbGVkPXRydWV9ZnVuY3Rpb24gcShyLE0pe2Zvcih2YXIgTD0wO0w8TS5jLmxlbmd0aDtMKyspe2lmKChNLmNbTF0uYlIuZXhlYyhyKXx8W251bGxdKVswXT09cil7cmV0dXJuIE0uY1tMXX19fWZ1bmN0aW9uIHYoTCxyKXtpZihEW0xdLmUmJkRbTF0uZVIudGVzdChyKSl7cmV0dXJuIDF9aWYoRFtMXS5lVyl7dmFyIE09dihMLTEscik7cmV0dXJuIE0/TSsxOjB9cmV0dXJuIDB9ZnVuY3Rpb24gdyhyLEwpe3JldHVybiBMLmkmJkwuaVIudGVzdChyKX1mdW5jdGlvbiBLKE4sTyl7dmFyIE09W107Zm9yKHZhciBMPTA7TDxOLmMubGVuZ3RoO0wrKyl7TS5wdXNoKE4uY1tMXS5iKX12YXIgcj1ELmxlbmd0aC0xO2Rve2lmKERbcl0uZSl7TS5wdXNoKERbcl0uZSl9ci0tfXdoaWxlKERbcisxXS5lVyk7aWYoTi5pKXtNLnB1c2goTi5pKX1yZXR1cm4gZihPLE0uam9pbigifCIpLHRydWUpfWZ1bmN0aW9uIHAoTSxMKXt2YXIgTj1EW0QubGVuZ3RoLTFdO2lmKCFOLnQpe04udD1LKE4sRSl9Ti50Lmxhc3RJbmRleD1MO3ZhciByPU4udC5leGVjKE0pO3JldHVybiByP1tNLnN1YnN0cihMLHIuaW5kZXgtTCksclswXSxmYWxzZV06W00uc3Vic3RyKEwpLCIiLHRydWVdfWZ1bmN0aW9uIHooTixyKXt2YXIgTD1FLmNJP3JbMF0udG9Mb3dlckNhc2UoKTpyWzBdO3ZhciBNPU4ua1tMXTtpZihNJiZNIGluc3RhbmNlb2YgQXJyYXkpe3JldHVybiBNfXJldHVybiBmYWxzZX1mdW5jdGlvbiBGKEwsUCl7TD1tKEwpO2lmKCFQLmspe3JldHVybiBMfXZhciByPSIiO3ZhciBPPTA7UC5sUi5sYXN0SW5kZXg9MDt2YXIgTT1QLmxSLmV4ZWMoTCk7d2hpbGUoTSl7cis9TC5zdWJzdHIoTyxNLmluZGV4LU8pO3ZhciBOPXooUCxNKTtpZihOKXt4Kz1OWzFdO3IrPSc8c3BhbiBjbGFzcz0iJytOWzBdKyciPicrTVswXSsiPC9zcGFuPiJ9ZWxzZXtyKz1NWzBdfU89UC5sUi5sYXN0SW5kZXg7TT1QLmxSLmV4ZWMoTCl9cmV0dXJuIHIrTC5zdWJzdHIoTyxMLmxlbmd0aC1PKX1mdW5jdGlvbiBKKEwsTSl7aWYoTS5zTCYmZVtNLnNMXSl7dmFyIHI9ZChNLnNMLEwpO3grPXIua2V5d29yZF9jb3VudDtyZXR1cm4gci52YWx1ZX1lbHNle3JldHVybiBGKEwsTSl9fWZ1bmN0aW9uIEkoTSxyKXt2YXIgTD1NLmNOPyc8c3BhbiBjbGFzcz0iJytNLmNOKyciPic6IiI7aWYoTS5yQil7eSs9TDtNLmJ1ZmZlcj0iIn1lbHNle2lmKE0uZUIpe3krPW0ocikrTDtNLmJ1ZmZlcj0iIn1lbHNle3krPUw7TS5idWZmZXI9cn19RC5wdXNoKE0pO0ErPU0ucn1mdW5jdGlvbiBHKE4sTSxRKXt2YXIgUj1EW0QubGVuZ3RoLTFdO2lmKFEpe3krPUooUi5idWZmZXIrTixSKTtyZXR1cm4gZmFsc2V9dmFyIFA9cShNLFIpO2lmKFApe3krPUooUi5idWZmZXIrTixSKTtJKFAsTSk7cmV0dXJuIFAuckJ9dmFyIEw9dihELmxlbmd0aC0xLE0pO2lmKEwpe3ZhciBPPVIuY04/Ijwvc3Bhbj4iOiIiO2lmKFIuckUpe3krPUooUi5idWZmZXIrTixSKStPfWVsc2V7aWYoUi5lRSl7eSs9SihSLmJ1ZmZlcitOLFIpK08rbShNKX1lbHNle3krPUooUi5idWZmZXIrTitNLFIpK099fXdoaWxlKEw+MSl7Tz1EW0QubGVuZ3RoLTJdLmNOPyI8L3NwYW4+IjoiIjt5Kz1PO0wtLTtELmxlbmd0aC0tfXZhciByPURbRC5sZW5ndGgtMV07RC5sZW5ndGgtLTtEW0QubGVuZ3RoLTFdLmJ1ZmZlcj0iIjtpZihyLnN0YXJ0cyl7SShyLnN0YXJ0cywiIil9cmV0dXJuIFIuckV9aWYodyhNLFIpKXt0aHJvdyJJbGxlZ2FsIn19dmFyIEU9ZVtCXTt2YXIgRD1bRS5kTV07dmFyIEE9MDt2YXIgeD0wO3ZhciB5PSIiO3RyeXt2YXIgcyx1PTA7RS5kTS5idWZmZXI9IiI7ZG97cz1wKEMsdSk7dmFyIHQ9RyhzWzBdLHNbMV0sc1syXSk7dSs9c1swXS5sZW5ndGg7aWYoIXQpe3UrPXNbMV0ubGVuZ3RofX13aGlsZSghc1syXSk7aWYoRC5sZW5ndGg+MSl7dGhyb3ciSWxsZWdhbCJ9cmV0dXJue3I6QSxrZXl3b3JkX2NvdW50OngsdmFsdWU6eX19Y2F0Y2goSCl7aWYoSD09IklsbGVnYWwiKXtyZXR1cm57cjowLGtleXdvcmRfY291bnQ6MCx2YWx1ZTptKEMpfX1lbHNle3Rocm93IEh9fX1mdW5jdGlvbiBnKHQpe3ZhciBwPXtrZXl3b3JkX2NvdW50OjAscjowLHZhbHVlOm0odCl9O3ZhciByPXA7Zm9yKHZhciBxIGluIGUpe2lmKCFlLmhhc093blByb3BlcnR5KHEpKXtjb250aW51ZX12YXIgcz1kKHEsdCk7cy5sYW5ndWFnZT1xO2lmKHMua2V5d29yZF9jb3VudCtzLnI+ci5rZXl3b3JkX2NvdW50K3Iucil7cj1zfWlmKHMua2V5d29yZF9jb3VudCtzLnI+cC5rZXl3b3JkX2NvdW50K3Aucil7cj1wO3A9c319aWYoci5sYW5ndWFnZSl7cC5zZWNvbmRfYmVzdD1yfXJldHVybiBwfWZ1bmN0aW9uIGkocixxLHApe2lmKHEpe3I9ci5yZXBsYWNlKC9eKCg8W14+XSs+fFx0KSspL2dtLGZ1bmN0aW9uKHQsdyx2LHUpe3JldHVybiB3LnJlcGxhY2UoL1x0L2cscSl9KX1pZihwKXtyPXIucmVwbGFjZSgvXG4vZywiPGJyPiIpfXJldHVybiByfWZ1bmN0aW9uIG4odCx3LHIpe3ZhciB4PWgodCxyKTt2YXIgdj1hKHQpO3ZhciB5LHM7aWYodil7eT1kKHYseCl9ZWxzZXtyZXR1cm59dmFyIHE9Yyh0KTtpZihxLmxlbmd0aCl7cz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwcmUiKTtzLmlubmVySFRNTD15LnZhbHVlO3kudmFsdWU9ayhxLGMocykseCl9eS52YWx1ZT1pKHkudmFsdWUsdyxyKTt2YXIgdT10LmNsYXNzTmFtZTtpZighdS5tYXRjaCgiKFxcc3xeKShsYW5ndWFnZS0pPyIrdisiKFxcc3wkKSIpKXt1PXU/KHUrIiAiK3YpOnZ9aWYoL01TSUUgWzY3OF0vLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkmJnQudGFnTmFtZT09IkNPREUiJiZ0LnBhcmVudE5vZGUudGFnTmFtZT09IlBSRSIpe3M9dC5wYXJlbnROb2RlO3ZhciBwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3AuaW5uZXJIVE1MPSI8cHJlPjxjb2RlPiIreS52YWx1ZSsiPC9jb2RlPjwvcHJlPiI7dD1wLmZpcnN0Q2hpbGQuZmlyc3RDaGlsZDtwLmZpcnN0Q2hpbGQuY049cy5jTjtzLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHAuZmlyc3RDaGlsZCxzKX1lbHNle3QuaW5uZXJIVE1MPXkudmFsdWV9dC5jbGFzc05hbWU9dTt0LnJlc3VsdD17bGFuZ3VhZ2U6dixrdzp5LmtleXdvcmRfY291bnQscmU6eS5yfTtpZih5LnNlY29uZF9iZXN0KXt0LnNlY29uZF9iZXN0PXtsYW5ndWFnZTp5LnNlY29uZF9iZXN0Lmxhbmd1YWdlLGt3Onkuc2Vjb25kX2Jlc3Qua2V5d29yZF9jb3VudCxyZTp5LnNlY29uZF9iZXN0LnJ9fX1mdW5jdGlvbiBvKCl7aWYoby5jYWxsZWQpe3JldHVybn1vLmNhbGxlZD10cnVlO3ZhciByPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwcmUiKTtmb3IodmFyIHA9MDtwPHIubGVuZ3RoO3ArKyl7dmFyIHE9YihyW3BdKTtpZihxKXtuKHEsaGxqcy50YWJSZXBsYWNlKX19fWZ1bmN0aW9uIGwoKXtpZih3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcil7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLG8sZmFsc2UpO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixvLGZhbHNlKX1lbHNle2lmKHdpbmRvdy5hdHRhY2hFdmVudCl7d2luZG93LmF0dGFjaEV2ZW50KCJvbmxvYWQiLG8pfWVsc2V7d2luZG93Lm9ubG9hZD1vfX19dmFyIGU9e307dGhpcy5MQU5HVUFHRVM9ZTt0aGlzLmhpZ2hsaWdodD1kO3RoaXMuaGlnaGxpZ2h0QXV0bz1nO3RoaXMuZml4TWFya3VwPWk7dGhpcy5oaWdobGlnaHRCbG9jaz1uO3RoaXMuaW5pdEhpZ2hsaWdodGluZz1vO3RoaXMuaW5pdEhpZ2hsaWdodGluZ09uTG9hZD1sO3RoaXMuSVI9IlthLXpBLVpdW2EtekEtWjAtOV9dKiI7dGhpcy5VSVI9IlthLXpBLVpfXVthLXpBLVowLTlfXSoiO3RoaXMuTlI9IlxcYlxcZCsoXFwuXFxkKyk/Ijt0aGlzLkNOUj0iXFxiKDBbeFhdW2EtZkEtRjAtOV0rfChcXGQrKFxcLlxcZCopP3xcXC5cXGQrKShbZUVdWy0rXT9cXGQrKT8pIjt0aGlzLkJOUj0iXFxiKDBiWzAxXSspIjt0aGlzLlJTUj0iIXwhPXwhPT18JXwlPXwmfCYmfCY9fFxcKnxcXCo9fFxcK3xcXCs9fCx8XFwufC18LT18L3wvPXw6fDt8PHw8PHw8PD18PD18PXw9PXw9PT18Pnw+PXw+Pnw+Pj18Pj4+fD4+Pj18XFw/fFxcW3xcXHt8XFwofFxcXnxcXF49fFxcfHxcXHw9fFxcfFxcfHx+Ijt0aGlzLkVSPSIoPyFbXFxzXFxTXSkiO3RoaXMuQkU9e2I6IlxcXFwuIixyOjB9O3RoaXMuQVNNPXtjTjoic3RyaW5nIixiOiInIixlOiInIixpOiJcXG4iLGM6W3RoaXMuQkVdLHI6MH07dGhpcy5RU009e2NOOiJzdHJpbmciLGI6JyInLGU6JyInLGk6IlxcbiIsYzpbdGhpcy5CRV0scjowfTt0aGlzLkNMQ009e2NOOiJjb21tZW50IixiOiIvLyIsZToiJCJ9O3RoaXMuQ0JMQ0xNPXtjTjoiY29tbWVudCIsYjoiL1xcKiIsZToiXFwqLyJ9O3RoaXMuSENNPXtjTjoiY29tbWVudCIsYjoiIyIsZToiJCJ9O3RoaXMuTk09e2NOOiJudW1iZXIiLGI6dGhpcy5OUixyOjB9O3RoaXMuQ05NPXtjTjoibnVtYmVyIixiOnRoaXMuQ05SLHI6MH07dGhpcy5CTk09e2NOOiJudW1iZXIiLGI6dGhpcy5CTlIscjowfTt0aGlzLmluaGVyaXQ9ZnVuY3Rpb24ocixzKXt2YXIgcD17fTtmb3IodmFyIHEgaW4gcil7cFtxXT1yW3FdfWlmKHMpe2Zvcih2YXIgcSBpbiBzKXtwW3FdPXNbcV19fXJldHVybiBwfX0oKTtobGpzLkxBTkdVQUdFUy5jcHA9ZnVuY3Rpb24oKXt2YXIgYT17a2V5d29yZDp7ImZhbHNlIjoxLCJpbnQiOjEsImZsb2F0IjoxLCJ3aGlsZSI6MSwicHJpdmF0ZSI6MSwiY2hhciI6MSwiY2F0Y2giOjEsImV4cG9ydCI6MSx2aXJ0dWFsOjEsb3BlcmF0b3I6MixzaXplb2Y6MixkeW5hbWljX2Nhc3Q6Mix0eXBlZGVmOjIsY29uc3RfY2FzdDoyLCJjb25zdCI6MSxzdHJ1Y3Q6MSwiZm9yIjoxLHN0YXRpY19jYXN0OjIsdW5pb246MSxuYW1lc3BhY2U6MSx1bnNpZ25lZDoxLCJsb25nIjoxLCJ0aHJvdyI6MSwidm9sYXRpbGUiOjIsInN0YXRpYyI6MSwicHJvdGVjdGVkIjoxLGJvb2w6MSx0ZW1wbGF0ZToxLG11dGFibGU6MSwiaWYiOjEsInB1YmxpYyI6MSxmcmllbmQ6MiwiZG8iOjEsInJldHVybiI6MSwiZ290byI6MSxhdXRvOjEsInZvaWQiOjIsImVudW0iOjEsImVsc2UiOjEsImJyZWFrIjoxLCJuZXciOjEsZXh0ZXJuOjEsdXNpbmc6MSwidHJ1ZSI6MSwiY2xhc3MiOjEsYXNtOjEsImNhc2UiOjEsdHlwZWlkOjEsInNob3J0IjoxLHJlaW50ZXJwcmV0X2Nhc3Q6MiwiZGVmYXVsdCI6MSwiZG91YmxlIjoxLHJlZ2lzdGVyOjEsZXhwbGljaXQ6MSxzaWduZWQ6MSx0eXBlbmFtZToxLCJ0cnkiOjEsInRoaXMiOjEsInN3aXRjaCI6MSwiY29udGludWUiOjEsd2NoYXJfdDoxLGlubGluZToxLCJkZWxldGUiOjEsYWxpZ25vZjoxLGNoYXIxNl90OjEsY2hhcjMyX3Q6MSxjb25zdGV4cHI6MSxkZWNsdHlwZToxLG5vZXhjZXB0OjEsbnVsbHB0cjoxLHN0YXRpY19hc3NlcnQ6MSx0aHJlYWRfbG9jYWw6MSxyZXN0cmljdDoxLF9Cb29sOjEsY29tcGxleDoxfSxidWlsdF9pbjp7c3RkOjEsc3RyaW5nOjEsY2luOjEsY291dDoxLGNlcnI6MSxjbG9nOjEsc3RyaW5nc3RyZWFtOjEsaXN0cmluZ3N0cmVhbToxLG9zdHJpbmdzdHJlYW06MSxhdXRvX3B0cjoxLGRlcXVlOjEsbGlzdDoxLHF1ZXVlOjEsc3RhY2s6MSx2ZWN0b3I6MSxtYXA6MSxzZXQ6MSxiaXRzZXQ6MSxtdWx0aXNldDoxLG11bHRpbWFwOjEsdW5vcmRlcmVkX3NldDoxLHVub3JkZXJlZF9tYXA6MSx1bm9yZGVyZWRfbXVsdGlzZXQ6MSx1bm9yZGVyZWRfbXVsdGltYXA6MSxhcnJheToxLHNoYXJlZF9wdHI6MX19O3JldHVybntkTTp7azphLGk6IjwvIixjOltobGpzLkNMQ00saGxqcy5DQkxDTE0saGxqcy5RU00se2NOOiJzdHJpbmciLGI6IidcXFxcPy4iLGU6IiciLGk6Ii4ifSx7Y046Im51bWJlciIsYjoiXFxiKFxcZCsoXFwuXFxkKik/fFxcLlxcZCspKHV8VXxsfEx8dWx8VUx8ZnxGKSJ9LGhsanMuQ05NLHtjTjoicHJlcHJvY2Vzc29yIixiOiIjIixlOiIkIn0se2NOOiJzdGxfY29udGFpbmVyIixiOiJcXGIoZGVxdWV8bGlzdHxxdWV1ZXxzdGFja3x2ZWN0b3J8bWFwfHNldHxiaXRzZXR8bXVsdGlzZXR8bXVsdGltYXB8dW5vcmRlcmVkX21hcHx1bm9yZGVyZWRfc2V0fHVub3JkZXJlZF9tdWx0aXNldHx1bm9yZGVyZWRfbXVsdGltYXB8YXJyYXkpXFxzKjwiLGU6Ij4iLGs6YSxyOjEwLGM6WyJzZWxmIl19XX19fSgpO2hsanMuTEFOR1VBR0VTLnI9e2RNOntjOltobGpzLkhDTSx7Y046Im51bWJlciIsYjoiXFxiMFt4WF1bMC05YS1mQS1GXStbTGldP1xcYiIsZTpobGpzLklNTUVESUFURV9SRSxyOjB9LHtjTjoibnVtYmVyIixiOiJcXGJcXGQrKD86W2VFXVsrXFwtXT9cXGQqKT9MXFxiIixlOmhsanMuSU1NRURJQVRFX1JFLHI6MH0se2NOOiJudW1iZXIiLGI6IlxcYlxcZCtcXC4oPyFcXGQpKD86aVxcYik/IixlOmhsanMuSU1NRURJQVRFX1JFLHI6MX0se2NOOiJudW1iZXIiLGI6IlxcYlxcZCsoPzpcXC5cXGQqKT8oPzpbZUVdWytcXC1dP1xcZCopP2k/XFxiIixlOmhsanMuSU1NRURJQVRFX1JFLHI6MH0se2NOOiJudW1iZXIiLGI6IlxcLlxcZCsoPzpbZUVdWytcXC1dP1xcZCopP2k/XFxiIixlOmhsanMuSU1NRURJQVRFX1JFLHI6MX0se2NOOiJrZXl3b3JkIixiOiIoPzp0cnlDYXRjaHxsaWJyYXJ5fHNldEdlbmVyaWN8c2V0R3JvdXBHZW5lcmljKVxcYiIsZTpobGpzLklNTUVESUFURV9SRSxyOjEwfSx7Y046ImtleXdvcmQiLGI6IlxcLlxcLlxcLiIsZTpobGpzLklNTUVESUFURV9SRSxyOjEwfSx7Y046ImtleXdvcmQiLGI6IlxcLlxcLlxcZCsoPyFbXFx3Ll0pIixlOmhsanMuSU1NRURJQVRFX1JFLHI6MTB9LHtjTjoia2V5d29yZCIsYjoiXFxiKD86ZnVuY3Rpb24pIixlOmhsanMuSU1NRURJQVRFX1JFLHI6Mn0se2NOOiJrZXl3b3JkIixiOiIoPzppZnxpbnxicmVha3xuZXh0fHJlcGVhdHxlbHNlfGZvcnxyZXR1cm58c3dpdGNofHdoaWxlfHRyeXxzdG9wfHdhcm5pbmd8cmVxdWlyZXxhdHRhY2h8ZGV0YWNofHNvdXJjZXxzZXRNZXRob2R8c2V0Q2xhc3MpXFxiIixlOmhsanMuSU1NRURJQVRFX1JFLHI6MX0se2NOOiJsaXRlcmFsIixiOiIoPzpOQXxOQV9pbnRlZ2VyX3xOQV9yZWFsX3xOQV9jaGFyYWN0ZXJffE5BX2NvbXBsZXhfKVxcYiIsZTpobGpzLklNTUVESUFURV9SRSxyOjEwfSx7Y046ImxpdGVyYWwiLGI6Iig/Ok5VTEx8VFJVRXxGQUxTRXxUfEZ8SW5mfE5hTilcXGIiLGU6aGxqcy5JTU1FRElBVEVfUkUscjoxfSx7Y046ImlkZW50aWZpZXIiLGI6IlthLXpBLVouXVthLXpBLVowLTkuX10qXFxiIixlOmhsanMuSU1NRURJQVRFX1JFLHI6MH0se2NOOiJvcGVyYXRvciIsYjoiPFxcLSg/IVxccypcXGQpIixlOmhsanMuSU1NRURJQVRFX1JFLHI6Mn0se2NOOiJvcGVyYXRvciIsYjoiXFwtPnw8XFwtIixlOmhsanMuSU1NRURJQVRFX1JFLHI6MX0se2NOOiJvcGVyYXRvciIsYjoiJSV8fiIsZTpobGpzLklNTUVESUFURV9SRX0se2NOOiJvcGVyYXRvciIsYjoiPj18PD18PT18IT18XFx8XFx8fCYmfD18XFwrfFxcLXxcXCp8L3xcXF58Pnw8fCF8JnxcXHx8XFwkfDoiLGU6aGxqcy5JTU1FRElBVEVfUkUscjowfSx7Y046Im9wZXJhdG9yIixiOiIlIixlOiIlIixpOiJcXG4iLHI6MX0se2NOOiJpZGVudGlmaWVyIixiOiJgIixlOiJgIixyOjB9LHtjTjoic3RyaW5nIixiOiciJyxlOiciJyxjOltobGpzLkJFXSxyOjB9LHtjTjoic3RyaW5nIixiOiInIixlOiInIixjOltobGpzLkJFXSxyOjB9LHtjTjoicGFyZW4iLGI6IltbKHtcXF0pfV0iLGU6aGxqcy5JTU1FRElBVEVfUkUscjowfV19fTsKaGxqcy5pbml0SGlnaGxpZ2h0aW5nT25Mb2FkKCk7Cgo="></script> | |
| <style type="text/css"> | |
| pre:not([class]) { | |
| background-color: white; | |
| } | |
| </style> | |
| <script type="text/javascript"> | |
| if (window.hljs && document.readyState && document.readyState === "complete") { | |
| window.setTimeout(function() { | |
| hljs.initHighlighting(); | |
| }, 0); | |
| } | |
| </script> | |
| </head> | |
| <body> | |
| <p><div id="htmlwidget-4436" style="width:960px;height:480px;" class="leaflet"></div> | |
| <script type="application/json" data-for="htmlwidget-4436">{"x":{"calls":[{"method":"addTiles","args":["http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",null,null,{"minZoom":0,"maxZoom":18,"maxNativeZoom":null,"tileSize":256,"subdomains":"abc","errorTileUrl":"","tms":false,"continuousWorld":false,"noWrap":false,"zoomOffset":0,"zoomReverse":false,"opacity":1,"zIndex":null,"unloadInvisibleTiles":null,"updateWhenIdle":null,"detectRetina":false,"reuseTiles":false,"attribution":"© <a href=\"http://openstreetmap.org\">OpenStreetMap</a> contributors, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>"}]},{"method":"addMarkers","args":[[38.9551498,38.983363,38.9784622,38.9759604,38.9759604,38.9462576,38.9758283,38.9841216,38.880634,38.9837998,38.9820698,38.896271,38.9772901,38.9725685,38.93957,38.9441185,38.9474602,38.983803,38.983803,38.983803,38.9260445,38.9266472,38.982536,38.907108,38.907108,38.907108,38.907108,38.983139,38.9278302,38.962664,38.89208,38.89208,38.9804306,38.8809827,38.9607979,38.959669,38.93773,38.93773,38.931562,38.9316292,38.959041,38.9412308,38.9616545,38.9562721,38.9572105,38.9591201,38.936708,38.9546999,38.9424438,38.942443,38.9550362,38.9534645,38.9092522,38.9534359,38.935859,38.9513245,38.923719,38.951187,38.921441,38.949947,38.949947,38.948394,38.9544487,38.948529,38.949537,38.923789,38.9003296,38.906723,38.9007187,38.9305962,38.9352188,38.8996353,38.9155798,38.9025202,38.9149323,38.9041563,38.903921,38.92744,38.903754,38.902658,38.902658,38.9034004,38.9034004,38.9034,38.922685,38.9023539,38.90525,38.904718,38.913414,38.9266014,38.916203,38.9113235,38.943167,38.944206,38.9612656,38.932231,38.9288025,38.9288025,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9022026,38.9270402,38.8809827,38.9131317,38.9057777,38.9701767,38.9025302,38.9035702,38.9170101,38.926859,38.924008,38.9573213,38.9424455,38.9424455,38.978122,38.882747,38.9489794,38.9239101,38.9400024,38.938911,38.938911,38.92067,38.9418413,38.8920421,38.9396949,38.8953171,38.912774,38.9348373,38.8802699,38.918674,38.914333,38.816412,38.946528,38.9494896,38.9284401,38.9314995,38.9449768,38.9449768,38.9449768,38.946906,38.9666936,38.9435425,38.9251862,38.913661,38.9425201,38.9416428,38.9416428,38.9646912,38.9464172,38.9431692,38.941689,38.966167,38.969135,38.9114761,38.9476395,38.935455,38.9630449,38.9236157,38.9234803,38.924836,38.924948,38.905254,38.906986,38.906986,38.923713,38.923713,38.906992,38.9096333,38.9028206,38.9028206,38.9036936,38.9028092,38.897068,38.897068,38.9237633,38.913122,38.911252,38.906875,38.924599,38.9148293,38.905006,38.9119301,38.9234199,38.9234199,38.897529,38.915302,38.9173115,38.989006,38.9070396,38.9103348,38.9074702,38.9074702,38.9155249,38.9155249,38.9286529,38.902649,38.9001551,38.93755,38.90134,38.90375,38.90375,38.9273373,38.9140899,38.937576,38.937576,38.9232503,38.9757465,38.93812,38.93812,38.93812,38.928985,38.9716454,38.9369396,38.9344025,38.934402,38.934402,38.8848075,38.9597337,38.9257278,38.9164276,38.9168243,38.9168243,38.917717,38.8875602,38.910244,38.9560852,38.8875702,38.914287,38.913879,38.913879,38.913879,38.913879,38.913879,38.9020072,38.92078,38.9114539,38.9127474,38.8974173,38.8974173,38.921736,38.9218502,38.9376041,38.9128685,38.9520393,38.9618979,38.9290314,38.9613953,38.9221725,38.926135,38.9361913,38.9275298,38.9291619,38.9291619,38.9294205,38.9294205,38.9294205,38.9294205,38.9185081,38.9306599,38.9218025,38.9319058,38.92144,38.9656525,38.920738,38.9607925,38.9286898,38.9203897,38.9292107,38.9292107,38.992109,38.9349702,38.9624847,38.985017,38.9171382,38.9906844,38.9461201,38.96241,38.9722697,38.991412,38.9286697,38.962497,38.9921226,38.986948,38.9240265,38.9029399,38.9029399,38.9029399,38.9027901,38.9027901,38.9269,38.9341307,38.9096547,38.8961298,38.9115498,38.9155698,38.8961298,38.9115498,38.9329599,38.8920897,38.9336323,38.928038,38.93114,38.931149,38.930202,38.9723401,38.937919,38.930397,38.9035759,38.9653854,38.920201,38.9051098,38.9266891,38.919814,38.919814,38.919814,38.919814,38.919814,38.919814,38.9617149,38.9191628,38.9544601,38.926185,38.9190788,38.9536552,38.9536552,38.9067116,38.9165702,38.954895,38.9522376,38.90308,38.9184227,38.9239426,38.9176814,38.9076118,38.9241943,38.904758,38.8970599,38.9059185,38.9038774,38.9072502,38.9045211,38.9030609,38.9030609,38.9030609,38.9030609,38.9030609,38.9045906,38.9113121,38.913703,38.909359,38.913703,38.9052252,38.9054076,38.9054076,38.9072402,38.9138298,38.9026489,38.9012833,38.927959,38.93173,38.8960849,38.9281334,38.9314156,38.9281198,38.9278988,38.895984,38.9177598,38.9008699,38.925273,38.9519882,38.9225349,38.8999196,38.901945,38.9662666,38.9569664,38.9241791,38.9016647,38.9561234,38.930675,38.901195,38.901195,38.953979,38.922453,38.8986931,38.9096837,38.9178848,38.902892,38.910446,38.9136721,38.917442,38.905836,38.902246,38.9091377,38.902202,38.898869,38.9159927,38.90876,38.9027877,38.9008277,38.9008277,38.9056201,38.9126091,38.9139705,38.9190922,38.914402,38.914402,38.9143763,38.900511,38.9074669,38.9074669,38.902523,38.908058,38.917045,38.9020691,38.902069,38.93253,38.9310602,38.9310602,38.9074745,38.9074745,38.9373855,38.9622116,38.9622116,38.9509327,38.9649963,38.9649963,38.9103442,38.9013299,38.9013299,38.926386,38.9025302,38.9056503,38.931118,38.913352,38.93058,38.9051018,38.905141,38.9447365,38.9361153,38.942009,38.8987403,38.938903,38.8988679,38.8987899,38.8987899,38.922209,38.9611486,38.905323,38.919738,38.9592697,38.8986931,38.8986931,38.898693,38.911274,38.894966,38.916694,38.907394,38.8932525,38.9155249,38.8997682,38.8997682,38.894835,38.8875253,38.902895,38.9162879,38.9121721,38.96632,38.916588,38.9201215,38.8962673,38.9043072,38.9043072,38.8801727,38.8972798,38.8933899,38.91227,38.9096501,38.9237599,38.8875514,38.9001551,38.9169551,38.9169551,38.919982,38.919953,38.9038874,38.9038874,38.9014775,38.9014775,38.8984573,38.8984573,38.9027783,38.9076459,38.9112675,38.9142267,38.9157066,38.890628,38.890628,38.9002001,38.9026402,38.9026402,38.90134,38.9002001,38.9002001,38.9096603,38.8875694,38.8863203,38.8875702,38.9056402,38.8938801,38.8920897,38.8875702,38.8984499,38.8920897,38.8855901,38.883243,38.9162598,38.9162598,38.9162598,38.9162598,38.9030072,38.8993022,38.974835,38.8933846,38.97155,38.903507,38.9138794,38.96778,38.9161176,38.92885,38.913845,38.9074669,38.897008,38.9179802,38.9096413,38.9034271,38.911305,38.8945627,38.9051971,38.9051971,38.9020729,38.9080006,38.8961472,38.9057972,38.8960098,38.9037399,38.9216537,38.9112467,38.903038,38.9099117,38.9484829,38.966553,38.9759416,38.8812686,38.933877,38.929151,38.901226,38.9157279,38.895786,38.895786,38.9764871,38.895786,38.9178543,38.941162,38.93554,38.8989944,38.903263,38.897068,38.9010506,38.90105,38.90105,38.892895,38.892895,38.8926838,38.964759,38.91397,38.9096501,38.8962746,38.898952,38.9101832,38.9101832,38.9084282,38.9090125,38.899004,38.9020729,38.910351,38.910351,38.897861,38.9088249,38.9006729,38.9090805,38.9090805,38.9090805,38.9090805,38.992858,38.8995349,38.895521,38.905363,38.922123,38.915775,38.8961365,38.9104206,38.89352,38.9026503,38.9026503,38.9026503,38.9025202,38.908044,38.9079628,38.930843,38.8974005,38.9268951,38.926895,38.90375,38.960762,38.943049,38.931844,38.933664,38.916798,38.9058099,38.896402,38.92952,38.9483779,38.920353,38.93183,38.9175758,38.9175758,38.9288098,38.916841,38.9065742,38.9169551,38.9021378,38.9021378,38.9021378,38.946851,38.9057884,38.9401665,38.919017,38.919017,38.919017,38.9108315,38.9118335,38.908485,38.911313,38.90595,38.9237599,38.9140449,38.9532776,38.909766,38.8974769,38.9614376,38.8961396,38.8812808,38.9037094,38.9037094,38.9037094,38.9035803,38.8920998,38.9035803,38.8983098,38.8875601,38.9096401,38.9041688,38.9366951,38.948944,38.9487114,38.900264,38.908748,38.908748,38.9064522,38.899475,38.90227,38.8961003,38.8961003,38.91918,38.8961003,38.8875702,38.8920897,38.8961003,38.8875747,38.8859703,38.8859703,38.906311,38.906311,38.906311,38.906311,38.906311,38.9044701,38.9164381,38.884609,38.889386,38.9235344,38.883284,38.883284,38.9168205,38.904281,38.9255295,38.9254723,38.92935,38.930397,38.916419,38.8939362,38.9101791,38.9346973,38.9090819,38.9296393,38.935272,38.9184647,38.8959999,38.933905,38.933905,38.9101403,38.9227849,38.894748,38.894748,38.9064654,38.8989563,38.922554,38.9080529,38.9087715,38.9203796,38.920379,38.9219,38.902524,38.9020882,38.902088,38.9205787,38.9473399,38.8805447,38.9347763,38.880866,38.928924,38.9085884,38.894996,38.894996,38.8808925,38.8808925,38.964296,38.9549751,38.9033127,38.9033127,38.904636,38.930994,38.936127,38.9361076,38.91352,38.9108772,38.915828,38.906639,38.9156469,38.9147758,38.9147758,38.9508355,38.9508355,38.9145851,38.9051206,38.9244097,38.9162369,38.9497961,38.92765,38.9050602,38.9108974,38.905226,38.904847,38.905246,38.905961,38.933811,38.946929,38.94699,38.920029,38.9171944,38.9192429,38.920957,38.903695,38.9167023,38.9167023,38.9112776,38.8959903,38.876084,38.876084,38.876084,38.8959897,38.919659,38.8973603,38.920698,38.9090297,38.9056617,38.9118697,38.9037399,38.9069237,38.903741,38.903741,38.876169,38.876169,38.876169,38.9153137,38.9057482,38.9057482,38.914089,38.905927,38.9552866,38.9616374,38.9362798,38.9368397,38.9296702,38.9540686,38.9614982,38.9004475,38.9014674,38.8961331,38.8983098,38.9056597,38.9090805,38.932358,38.951782,38.91105,38.911377,38.9468236,38.9098198,38.914508,38.914535,38.944434,38.9089622,38.9091901,38.960784,38.960784,38.9461746,38.946174,38.945683,38.923023,38.9030418,38.910289,38.9059668,38.9102592,38.903019,38.905014,38.905014,38.9053164,38.9053164,38.9051802,38.9051802,38.9065933,38.914348,38.9050713,38.9386106,38.898948,38.9661301,38.9123535,38.9167366,38.8822334,38.906273,38.9615135,38.9615135,38.904106,38.9184456,38.9617577,38.8997649,38.8875702,38.8875702,38.8875702,38.9057871,38.8920897,38.8920897,38.884711,38.9038251,38.9040106,38.9025202,38.8998098,38.895543,38.8923231,38.972558,38.942184,38.885429,38.9646797,38.883598,38.9287491,38.9714203,38.93056,38.9281883,38.919105,38.919105,38.885421,38.911998,38.9543109,38.9137298,38.9056656,38.9056616,38.877242,38.877242,38.9235001,38.87735,38.9173447,38.9172211,38.926607,38.9244419,38.9130287,38.9231202,38.878027,38.878027,38.898613,38.898612,38.8999863,38.8999863,38.9016151,38.908093,38.902226,38.925079,38.878079,38.878079,38.878079,38.878079,38.878079,38.878079,38.878079,38.878079,38.878079,38.878079,38.878079,38.919711,38.9452457,38.9452457,38.9051895,38.966083,38.9049072,38.9052352,38.9084123,38.907417,38.9067627,38.9035912,38.905047,38.905047,38.9049072,38.9055008,38.9027461,38.90261,38.9768227,38.9430805,38.9016914,38.9353485,38.90317,38.937027,38.9110756,38.942721,38.905022,38.9053573,38.9053573,38.9368102,38.935327,38.902674,38.9358788,38.9363403,38.878079,38.878079,38.878079,38.878079,38.8953654,38.89352,38.90134,38.90134,38.9002101,38.9248449,38.9248449,38.8987054,38.8991585,38.87911,38.87911,38.9184102,38.9070473,38.903363,38.8951099,38.9240379,38.9056544,38.8983098,38.9008203,38.9722348,38.910247,38.910247,38.910247,38.910247,38.910247,38.8848444,38.9224302,38.9237595,38.9561999,38.9171369,38.9612694,38.9612694,38.9552712,38.9615972,38.8820666,38.894869,38.899415,38.8920949,38.955574,38.8967361,38.8940582,38.966507,38.966507,38.966507,38.939741,38.939741,38.939741,38.8840523,38.9499283,38.9168472,38.9157257,38.9157257,38.9363403,38.90195,38.9344139,38.9344139,38.904449,38.9352608,38.9044914,38.9044914,38.9050598,38.9050598,38.9053868,38.90525,38.933316,38.9008559,38.9025101,38.9182739,38.9076843,38.9182739,38.934546,38.916843,38.9103348,38.909768,38.9112675,38.9016974,38.9253598,38.9311485,38.8878403,38.8878403,38.8878403,38.916634,38.8997649,38.8997649,38.9319191,38.908697,38.8876419,38.948044,38.9287244,38.936441,38.9393005,38.936348,38.9261457,38.9373627,38.8996,38.8996,38.9171524,38.9689598,38.919002,38.983145,38.9258869,38.9208973,38.9208973,38.8962673,38.9041697,38.9041697,38.9096401,38.91112,38.9181098,38.9072402,38.977329,38.9828224,38.96315,38.9746984,38.9003208,38.8997897,38.9092498,38.9555095,38.948771,38.8953133,38.8953133,38.9713597,38.899353,38.917416,38.9206023,38.8963203,38.874189,38.8875152,38.8875152,38.8875152,38.9051132,38.89221,38.898808,38.889429,38.9052092,38.9052097,38.88822,38.931816,38.9002101,38.9202844,38.9256247,38.8765148,38.8631122,38.950006,38.918645,38.9066494,38.9088745,38.8255166,38.8381577,38.9610527,38.905838,38.9200859,38.8438904,38.8381539,38.8857118,38.9002113,38.8940397,38.907539,38.887825,38.896308,38.9256207,38.9062209,38.884441,38.887439,38.8836803,38.8875997,38.8875997,38.8875997,38.8875997,38.8852233,38.9157146,38.8399759,38.8991211,38.9454193,38.9454193,38.9454193,38.9454193,38.9454193,38.9454193,38.9454193,38.9454193,38.9454193,38.9454193,38.9454193,38.8705444,38.897731,38.8969269,38.890152,38.900318,38.898963,38.8520584,38.9350802,38.873183,38.9331201,38.871032,38.893623,38.9031646,38.9130398,38.892597,38.8707652,38.8984985,38.9444861,38.9172388,38.9097608,38.928863,38.844079,38.8506214,38.8757072,38.8876547,38.9051537,38.8874234,38.953067,38.896084,38.905771,38.9748486,38.954658,38.90537,38.90537,38.90537,38.926307,38.9440575,38.9578171,38.9146614,38.9038606,38.9149401,38.891451,38.8994343,38.9056054,38.9747641,38.879689,38.9055524,38.889926,38.889926,38.889926,38.889843,38.889926,38.889926,38.889926,38.88082,38.859306,38.8619499,38.8990474,38.8961356,38.8792802,38.8886699,38.8811235,38.8954499,38.8835824,38.9047598,38.8288765,38.896339,38.827434,38.9004517,38.94091,38.921887,38.8825752,38.9017944,38.860347,38.934165,38.831418,38.843332,38.8436807,38.839287,38.861121,38.9155712,38.8933302,38.9037198,38.9291687,38.9045372,38.90586,38.885252,38.8573484,38.866803,38.9460983,38.906898,38.864728,38.877067,38.877067,38.919372,38.876947,38.8971638,38.90754,38.893589,38.9455681,38.90586,38.8518677,38.9001799,38.8898201,38.889943,38.889943,38.889943,38.889943,38.889943,38.889943,38.900274,38.890903,38.9001551,38.9562884,38.9574661,38.953166,38.882995,38.9003248,38.954403,38.9025101,38.928381,38.899288,38.8985505,38.90582,38.906721,38.8866898,38.8866898,38.916137,38.8881264,38.833488,38.91983,38.8382072,38.9325904,38.9097977,38.885674,38.8623903,38.8623903,38.8623903,38.8857307,38.8449278,38.8449278,38.920962,38.9110374,38.8450869,38.8451196,38.905771,38.8824654,38.8635854,38.956544,38.8582557,38.911112,38.8471642,38.845916,38.8792802,38.8886719,38.8948249,38.8468764,38.8629797,38.8629797,38.8629797,38.882865,38.8827623,38.896324,38.849606,38.8493615,38.8493615,38.850982,38.8628221,38.9326668,38.8437309,38.84373,38.912325,38.904862,38.8924599,38.9097519,38.933351,38.904809,38.884426,38.8818283,38.9249535,38.8949051,38.870635,38.870636,38.870636,38.870636,38.882987,38.919084,38.8786103,38.8804817,38.8788376,38.878837,38.862659,38.878751,38.890095,38.917377,38.9220762,38.889849,38.8693097,38.869179,38.8621216,38.8672297,38.929351,38.8697243,38.867131,38.8648834,38.89629,38.8618049,38.8563057,38.8897896,38.8897896,38.8897896,38.8821421,38.8821421,38.8625946,38.8592567,38.8603363,38.8962631,38.889947,38.87251,38.9307303,38.8626709,38.8680001,38.8847542,38.8847542,38.8847542,38.862412,38.8864174,38.8864174,38.9189275,38.9189275,38.8983002,38.8983002,38.867614,38.8873863,38.916993,38.916993,38.916993,38.916993,38.916993,38.916993,38.916993,38.916993,38.916993,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.952522,38.8958549,38.87445,38.9190254,38.913936,38.893516,38.8947431,38.8934563,38.901294,38.8897998,38.8823741,38.9270597,38.8885307,38.916756,38.863388,38.863388,38.89629,38.917485,38.917485,38.917485,38.8640399,38.846687,38.897995,38.933628,38.9208641,38.8456325,38.920224,38.847421,38.905818,38.911567,38.8994698,38.8994698,38.8894005,38.8657565,38.8657565,38.863891,38.90675,38.8867501,38.8891411,38.8811913,38.8811913,38.8811913,38.8811913,38.8811913,38.8811913,38.8811913,38.8811913,38.8811913,38.8811913,38.8829041,38.8898648,38.885912,38.903465,38.887199,38.8983794,38.886567,38.8919411,38.901256,38.8898081,38.8959374,38.898571,38.89888,38.893992,38.889801,38.889801,38.889801,38.8936577,38.8926563,38.8149438,38.8149438,38.8149438,38.8988228,38.8623796,38.901326,38.9125603,38.9061774,38.9155745,38.926195,38.8246536,38.956615,38.9002001,38.9025202,38.9062055,38.9062699,38.8671418,38.9568291,38.8771095,38.907005,38.8228177,38.913338,38.911338,38.902492,38.8764114,38.8417091,38.8935502,38.8983399,38.9547424,38.954742,38.955259,38.914981,38.832132,38.8793097,38.8793143,38.8845903,38.9073649,38.897056,38.8388003,38.9227371,38.917312,38.8397337,38.8397337,38.899202,38.837476,38.8612831,38.949486,38.8584032,38.8583998,38.9361598,38.9040542,38.9202805,38.904,38.842739,38.886717,38.904049,38.9038901,38.836589,38.8360101,38.919222,38.919222,38.8913994,38.9194069,38.9121801,38.8312187,38.8335648,38.935414,38.9026462,38.9025116,38.8898087,38.8903698,38.9079742,38.9095116,38.8901443,38.8849297,38.9030496,38.9030398,38.903297,38.8785057,38.8761787,38.8761787,38.8760094,38.8873603,38.8901024,38.9004059,38.895471,38.8992157,38.8909416,38.889015,38.888389,38.902023,38.881837,38.9037857,38.882183,38.88031,38.88031,38.8305969,38.826998,38.8225327,38.95518,38.867474,38.902206,38.9553215,38.884675,38.9717289,38.9112266,38.916793,38.896419,38.917045,38.907478,38.915331,38.907478,38.912849,38.8772278,38.916297,38.9567586,38.8765106,38.9128647,38.9128647,38.8243371,38.9001541,38.863884,38.9002912,38.8533358,38.8533399,38.8533399,38.881683,38.9418907,38.9252815,38.8535078,38.9219208,38.8865302,38.8865302,38.8498421,38.92529,38.8682818,38.89321,38.927142,38.867024,38.866375,38.866375,38.9057261,38.9407202,38.864982,38.878774,38.878774,38.9330426,38.9041862,38.9166908,38.91669,38.892723,38.9101067,38.8921554,38.9199901,38.9317797,38.9247617,38.8948142,38.9108659,38.925884,38.854423,38.9092941,38.9009102,38.9397814,38.92676,38.9258239,38.8872108,38.8963318,38.9104702,38.9104702,38.9247262,38.8642001,38.9106017,38.9007801,38.9425877,38.8852025,38.8841551,38.9250488,38.9250488,38.883132,38.883132,38.896324,38.896324,38.8800812,38.8800812,38.854286,38.854286,38.906843,38.908933,38.912036,38.8902245,38.882985,38.9050736,38.8740616,38.8952212,38.9030037,38.8733297,38.903707,38.9072113,38.911158,38.8942603,38.888329,38.8829944,38.9123376,38.873579,38.912445,38.912445,38.912445,38.9103992,38.8747101,38.911136,38.896294,38.8962552,38.907505,38.907505,38.8764773,38.951419,38.9601602,38.9643593,38.9168103,38.9072999,38.9012602,38.907372,38.897597,38.9072626,38.9072626,38.9072626,38.9072243,38.8746347,38.87994,38.87994,38.87994,38.87994,38.87994,38.87994,38.87994,38.87994,38.8831812,38.8831812,38.9557161,38.9072328,38.8792984,38.8792984,38.9073296,38.9073296,38.9073296,38.9569449,38.9549372,38.9102422,38.9157066,38.8934097,38.8806682,38.911503,38.9209671,38.836019,38.836019,38.836019,38.844686,38.880329,38.925777,38.854038,38.868719,38.904819,38.9428841,38.8921373,38.906571,38.8988402,38.896751,38.8665256,38.9001498,38.9019155,38.9019771,38.9020434,38.9020434,38.8929071,38.8962669,38.9096099,38.908814,38.9096535,38.8898749,38.91144,38.9030787,38.9030787,38.903046,38.901322,38.900381,38.8918255,38.906535,38.8976974,38.900299,38.8802002,38.8919,38.8896697,38.9056462,38.9056462,38.9056462,38.9555401,38.9555401,38.916851,38.910829,38.911863,38.9002048,38.914151,38.914151,38.870113,38.9541373,38.9181154,38.8764737,38.9074484,38.8718927,38.9073897,38.9275342,38.9168002,38.840786,38.840786,38.877412,38.8989448,38.8708399,38.8327787,38.8862762,38.8631477,38.865753,38.9220198,38.8447481,38.8447481,38.8433164,38.8813602,38.8981703,38.8839727,38.8326492,38.8793023,38.8963356,38.889772,38.889772,38.9004288,38.8969498,38.926703,38.8826904,38.832759,38.859032,38.9239423,38.9239423,38.8669891,38.914866,38.9147772,38.9147772,38.8963318,38.858325,38.866444,38.8419659,38.8321055,38.8815079,38.9109761,38.859129,38.8994484,38.8711121,38.8671298,38.910993,38.8680947,38.84204,38.8560449,38.895227,38.8994296,38.90381,38.8642883,38.8930553,38.8976365,38.8674088,38.9015123,38.9005782,38.8942146,38.864635,38.9013672,38.879745,38.9032211,38.8927727,38.901635,38.865699,38.885128,38.8920173,38.8212921,38.884922,38.928611,38.928611,38.928611,38.928611,38.876718,38.8451118,38.8875903,38.9524267,38.8207817,38.9148302,38.8356568,38.9216118,38.902038,38.8306336,38.876479,38.8593601,38.8770553,38.9001451,38.943287,38.8633297,38.8632526,38.9258537,38.9287247,38.833896,38.913853,38.8553562,38.9131432,38.89411,38.9463997,38.9255201,38.9255201,38.9236108,38.843827,38.87649,38.9003275,38.9453772,38.8823801,38.917099,38.8875803,38.857921,38.888993,38.8645273,38.8664229,38.8952293,38.895638,38.895638,38.895638,38.8893394,38.892421,38.8657176,38.8933525,38.8933525,38.8933525,38.865654,38.8938346,38.8940477,38.8839009,38.8899547,38.894456,38.8952608,38.8952608,38.909624,38.950614,38.8451117,38.8451117,38.902124,38.8824844,38.8936749,38.8242264,38.9305,38.9305,38.9305,38.9305,38.9305,38.831165,38.9430839,38.8935851,38.869426,38.959782,38.9172095,38.949398,38.949886,38.8259954,38.89744,38.89744,38.881015,38.900255,38.88923,38.88923,38.8892399,38.9383102,38.858549,38.9124249,38.8722115,38.8722115,38.8722115,38.8722115,38.912459,38.8920549,38.9463133,38.897753,38.8825264,38.9028702,38.90287,38.9204755,38.8564271,38.8649002,38.8647232,38.8751335,38.83346,38.8999443,38.871649,38.9407302,38.8920099,38.862491,38.8904046,38.94679,38.8653297,38.9143749,38.9143749,38.9143749,38.9143749,38.895962,38.9075203,38.932869,38.932869,38.90607,38.907982,38.9096206,38.9096184,38.90962,38.8975029,38.9096315,38.9554911,38.9554911,38.9086061,38.8920092,38.8897998,38.8737717,38.831271,38.8312244,38.910221,38.90895,38.9236612,38.861056,38.861056,38.8608093,38.8568193,38.8720818,38.8718498,38.926402,38.8756404,38.8756404,38.8601217,38.9325981,38.8717365,38.924631,38.876216,38.9192772,38.8535492,38.9341011,38.9341011,38.873643,38.9252224,38.924848,38.872009,38.871083,38.9257813,38.925781,38.862692,38.934406,38.8698502,38.8698502,38.917214,38.925939,38.8768,38.876683,38.892079,38.9112635,38.945272,38.9051743,38.9557902,38.9088998,38.905112,38.896628,38.9624748,38.845094,38.92097,38.9639012,38.9639012,38.9025101,38.9665651,38.8951997,38.8951997,38.8919402,38.919334,38.892006,38.93126,38.976482,38.9185403,38.9185403,38.8962364,38.925738,38.845108,38.8633308,38.9298515,38.9194104,38.8621268,38.8685352,38.8734001,38.917977,38.864931,38.8479462,38.917835,38.87273,38.8736,38.8736,38.8740768,38.9401211,38.8533889,38.8573994,38.862788,38.8727899,38.8727657,38.8727657,38.8727657,38.873968,38.87231,38.871768,38.9278984,38.9278984,38.927898,38.927919,38.927919,38.8562927,38.8588616,38.859584,38.9309998,38.9271355,38.927135,38.927135,38.8569199,38.897419,38.8300705,38.908395,38.8235435,38.8235435,38.965831,38.845313,38.8876319,38.89479,38.9307213,38.861522,38.861522,38.90076,38.9649848,38.942123,38.947354,38.947354,38.922168,38.880628,38.8250313,38.8615417,38.831558,38.871527,38.896308,38.9274061,38.9322968,38.85118,38.8708992,38.8540252,38.8630662,38.923622,38.8437176,38.874705,38.91745,38.9174568,38.860124,38.87302,38.9281616,38.8745232,38.8745232,38.874523,38.874523,38.86856,38.8516083,38.923626,38.9175117,38.874514,38.918984,38.89682,38.9176521,38.9185732,38.902637,38.831696,38.8832207,38.924513,38.8850697,38.8607199,38.941045,38.9078202,38.930764,38.8876205,38.880805,38.919601,38.919591,38.8841248,38.888672,38.8226395,38.905899,38.9610252,38.8212913,38.862169,38.865108,38.865108,38.865108,38.9140597,38.905246,38.9173595,38.844111,38.8742993,38.903925,38.9160919,38.863779,38.875279,38.9305305,38.901486,38.8986471,38.8986471,38.8509701,38.8985599,38.8985775,38.8650284,38.8605614,38.9150124,38.9331865,38.858225,38.8582458,38.9331101,38.9331101,38.876372,38.8860588,38.876339,38.9044507,38.8283626,38.940957,38.911254,38.828498,38.908315,38.9000626,38.900062,38.8802643,38.9097608,38.9724494,38.9752973,38.9036943,38.9137306,38.9137306,38.9047839,38.9047839,38.882919,38.882919,38.92206,38.8362602,38.838459,38.9223598,38.9234401,38.9196997,38.9197006,38.840694,38.844515,38.9203758,38.939102,38.9078437,38.9547195,38.9345474,38.9274979,38.9230194,38.925655,38.9249344,38.9292035,38.9191297,38.9178208,38.9178208,38.93015,38.915666,38.918998,38.9494553,38.9153183,38.9336646,38.835881,38.94961,38.934542,38.9547488,38.9455414,38.939838,38.960227,38.918872,38.9382474,38.9382474,38.9675446,38.94384,38.981342,38.9090996,38.969463,38.885776,38.9296303,38.9774302,38.920091,38.974478,38.9299511,38.9772901,38.9772901,38.8993301,38.9406204,38.9754715,38.9288147,38.9167671,38.901958,38.903221,38.978735,38.9189873,38.907108,38.9646759,38.9278302,38.9660764,38.9603218,38.9596939,38.9607979,38.959669,38.9326744,38.9378697,38.961415,38.961415,38.961415,38.931305,38.9616545,38.9616545,38.9598083,38.9572105,38.9118996,38.9077492,38.9494553,38.9609749,38.9289989,38.908002,38.9549026,38.9086838,38.954306,38.935859,38.9341776,38.9499397,38.9483948,38.948394,38.9202461,38.9489517,38.948529,38.948529,38.948529,38.965328,38.9496847,38.949119,38.9161223,38.906723,38.9007187,38.895902,38.929875,38.935203,38.9137611,38.9137611,38.914988,38.9289322,38.94916,38.9247704,38.9041507,38.9280903,38.9402542,38.9037151,38.9267578,38.9267578,38.9274419,38.9037701,38.922685,38.9141509,38.9052064,38.9259186,38.9026489,38.8999023,38.899768,38.9627981,38.9017181,38.9152832,38.9059944,38.9176521,38.9218636,38.9834557,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9013997,38.8973401,38.8998098,38.9170101,38.8953473,38.9430457,38.9320374,38.9418802,38.9227977,38.9400024,38.9407638,38.9482843,38.9389114,38.9170128,38.9257545,38.9171536,38.9208048,38.9429048,38.92067,38.94081,38.8799903,38.919314,38.8920421,38.887569,38.887569,38.8185654,38.9710236,38.902839,38.902821,38.956296,38.9611511,38.919358,38.9314995,38.9461517,38.946906,38.946906,38.9666936,38.9435425,38.942525,38.9416428,38.9416428,38.9672023,38.9672023,38.9480292,38.9646912,38.9314934,38.9610198,38.9433072,38.9431697,38.9429276,38.931346,38.931346,38.9661674,38.9675217,38.913482,38.91891,38.91891,38.9647102,38.9679451,38.9644279,38.905529,38.9631964,38.924836,38.924836,38.905254,38.905254,38.940126,38.906986,38.906986,38.9237137,38.9237137,38.923713,38.9126244,38.904796,38.906517,38.9028206,38.9028206,38.90282,38.9246483,38.8995349,38.9036936,38.9036936,38.9028092,38.9038774,38.9038774,38.9038774,38.9011332,38.9026402,38.9128838,38.906875,38.9010887,38.9010887,38.901088,38.9148293,38.9050064,38.9119301,38.9234199,38.90206,38.8975296,38.9699249,38.915718,38.915718,38.9859657,38.968929,38.9272387,38.935203,38.912527,38.914011,38.9286529,38.9070202,38.9070202,38.9304406,38.9001551,38.920488,38.9001999,38.9171362,38.90134,38.9026402,38.90375,38.9921167,38.8987054,38.9921703,38.9170001,38.9209899,38.938043,38.9552665,38.93812,38.93812,38.93812,38.93812,38.9377201,38.9369396,38.9369396,38.9363529,38.8848075,38.8977203,38.8970566,38.916824,38.9168268,38.925327,38.8875702,38.893803,38.9142876,38.913879,38.908794,38.9020072,38.932282,38.9322166,38.90099,38.9631964,38.910511,38.9374177,38.9290314,38.9342728,38.9611258,38.9291619,38.935253,38.93518,38.9294205,38.9294205,38.9478998,38.933401,38.921317,38.921179,38.9540293,38.9590243,38.9590676,38.9590676,38.9536075,38.9536075,38.912432,38.965652,38.931859,38.9208262,38.992098,38.992098,38.9286898,38.9286898,38.9708474,38.9708474,38.9292107,38.9750974,38.992109,38.992109,38.9325998,38.9793997,38.9172589,38.9307444,38.9906844,38.96241,38.9841398,38.9832097,38.962497,38.962497,38.956501,38.9130249,38.932329,38.9339333,38.8940323,38.8985867,38.9029399,38.9563199,38.9027901,38.9020997,38.8939599,38.9115498,38.9085699,38.8939599,38.9115498,38.926666,38.9666176,38.8920897,38.8920897,38.897439,38.897439,38.9350357,38.9311409,38.9330202,38.9201202,38.9508797,38.9151573,38.9311903,38.9016724,38.9290237,38.9663239,38.90774,38.920201,38.9201302,38.9151688,38.9266891,38.9191628,38.957088,38.9647446,38.954895,38.905439,38.917783,38.9432703,38.9432703,38.912134,38.9034659,38.925518,38.9326876,38.905055,38.903695,38.891679,38.890784,38.8963397,38.8961674,38.8961674,38.90307,38.90307,38.9038774,38.89352,38.9008377,38.9030609,38.9030609,38.9030609,38.9123268,38.904394,38.909901,38.9187431,38.9187431,38.9096401,38.913703,38.9023753,38.9071966,38.9054076,38.9073776,38.9086973,38.9086973,38.9097675,38.90963,38.9096312,38.9026489,38.9006348,38.9000511,38.900051,38.9282513,38.9282513,38.9158173,38.8997649,38.908525,38.926212,38.9281198,38.9168465,38.908822,38.895984,38.927239,38.8998098,38.9155698,38.8786666,38.9096489,38.9085699,38.8934691,38.92676,38.9659157,38.971138,38.88695,38.9067383,38.9067383,38.9067383,38.9067383,38.8986931,38.901562,38.901378,38.9058075,38.905807,38.9058944,38.9163628,38.913906,38.913906,38.913906,38.9159927,38.897607,38.9078551,38.9008277,38.9008277,38.901342,38.8995798,38.9013321,38.9013299,38.9096401,38.9037399,38.9126091,38.9139705,38.9139705,38.914402,38.914402,38.9158505,38.9159352,38.9222908,38.9088669,38.9264656,38.9064789,38.9253558,38.902069,38.9353523,38.9622116,38.941665,38.922504,38.9473495,38.91127,38.9317169,38.9169551,38.9169551,38.9169551,38.9013299,38.9025302,38.9065602,38.9126193,38.9191901,38.931135,38.9086113,38.9431877,38.9196014,38.9520531,38.9325294,38.9009048,38.9003462,38.8920998,38.8987899,38.8987899,38.9639689,38.9003959,38.9584282,38.9552745,38.9708575,38.898693,38.898693,38.898693,38.9563702,38.9001103,38.9223462,38.8969959,38.911901,38.9073944,38.898407,38.9041248,38.8827872,38.978575,38.9127474,38.8999473,38.9178973,38.9178973,38.9199977,38.902252,38.8961298,38.9020997,38.8972798,38.8961298,38.91227,38.909568,38.9347916,38.915811,38.907363,38.9038874,38.9003375,38.9014775,38.9003375,38.890628,38.890628,38.890628,38.9026402,38.8886102,38.89042,38.9002001,38.8955229,38.8875694,38.9096603,38.9037285,38.8998098,38.9008699,38.8984499,38.8920897,38.8875702,38.8875702,38.8875702,38.8875679,38.8832618,38.9189952,38.88281,38.9177598,38.9162598,38.9162598,38.9432716,38.8969284,38.9058917,38.972126,38.9749613,38.9229202,38.937468,38.876996,38.9463756,38.9326515,38.9138451,38.907466,38.901335,38.8995349,38.909642,38.909642,38.909642,38.9155464,38.906856,38.9020729,38.909404,38.90285,38.905489,38.9110851,38.911786,38.9037399,38.9025302,38.9026503,38.9026503,38.911209,38.9096025,38.9099117,38.9099117,38.9048729,38.9543163,38.937081,38.9410615,38.884017,38.94092,38.94092,38.9161362,38.8925216,38.901226,38.901226,38.901226,38.9157279,38.9275197,38.874591,38.9278488,38.9278488,38.9582405,38.915377,38.917548,38.8920549,38.8997649,38.8947451,38.8997649,38.9154424,38.893854,38.922473,38.8989525,38.894664,38.894764,38.9100828,38.9020729,38.9020729,38.910351,38.9053726,38.901641,38.906864,38.896485,38.9210998,38.9105377,38.9026503,38.9056597,38.969916,38.925769,38.926895,38.9097004,38.906157,38.90375,38.9548759,38.9567397,38.965263,38.9058099,38.906833,38.9434158,38.9302301,38.9362503,38.9418802,38.9086229,38.9175758,38.917575,38.93413,38.9274801,38.9065742,38.906574,38.9279106,38.919782,38.9265702,38.9265705,38.9021378,38.902137,38.9265713,38.902167,38.902167,38.917444,38.9365997,38.9182625,38.919017,38.919017,38.919017,38.923005,38.9569092,38.966649,38.910132,38.9248998,38.9237599,38.899729,38.899729,38.8922372,38.8962673,38.9037094,38.88604,38.9008699,38.9025202,38.9661215,38.9056402,38.9723401,38.8764203,38.9747903,38.976613,38.95208,38.9443157,38.9409287,38.9624977,38.8994751,38.8994751,38.938754,38.909492,38.912749,38.9142876,38.8920897,38.8961003,38.9088301,38.9096602,38.8961003,38.8961003,38.9170021,38.906311,38.906311,38.906311,38.906311,38.906311,38.906311,38.8849727,38.9451941,38.9451941,38.930878,38.930878,38.913075,38.900666,38.9050789,38.883284,38.95493,38.94161,38.94161,38.930397,38.9164619,38.9167366,38.9167366,38.8939362,38.8939362,38.899728,38.951885,38.9167366,38.9090819,38.919506,38.917682,38.922184,38.9227849,38.910944,38.9280777,38.90939,38.90939,38.9075279,38.9320831,38.90761,38.9103928,38.894748,38.9084881,38.908411,38.908411,38.922554,38.9087715,38.908771,38.9051056,38.9051056,38.9203796,38.9207129,38.8805447,38.8805447,38.927417,38.9096052,38.9000606,38.9000606,38.8998829,38.880866,38.8961546,38.901008,38.901107,38.948466,38.894996,38.894996,38.894996,38.894996,38.9260368,38.9169551,38.932056,38.932007,38.9075127,38.9328918,38.9035149,38.963165,38.898637,38.919048,38.9361076,38.9361076,38.9294434,38.9092484,38.906639,38.906639,38.9157602,38.9315681,38.9245398,38.9147758,38.9139862,38.9050803,38.9375648,38.944561,38.9162369,38.9622141,38.914049,38.926002,38.93563,38.9272652,38.9481773,38.93631,38.9610098,38.9610098,38.9050602,38.904847,38.905246,38.9051098,38.920029,38.90113,38.9066461,38.903695,38.9197949,38.9003476,38.9208336,38.876084,38.876084,38.9002101,38.9002101,38.9002101,38.9064603,38.9096401,38.9178202,38.9069237,38.9064602,38.920059,38.876169,38.876169,38.9158249,38.9123154,38.8768199,38.9057482,38.9057482,38.9057482,38.876599,38.9169551,38.9085377,38.9239074,38.905771,38.9276397,38.9257501,38.9562099,38.9027777,38.9004475,38.99261,38.9014674,38.9142273,38.9025202,38.8824446,38.916999,38.9090805,38.9090805,38.9231758,38.917941,38.9701729,38.909986,38.908651,38.9109383,38.90513,38.866341,38.946609,38.9468236,38.9097628,38.9455663,38.9089622,38.9607849,38.891742,38.891742,38.891742,38.9447375,38.904996,38.913238,38.9438376,38.9438376,38.9069962,38.906929,38.9049416,38.9039337,38.9431503,38.9603958,38.9051802,38.9026221,38.943326,38.916748,38.9279366,38.9724617,38.9173203,38.92964,38.9123535,38.957636,38.958503,38.8921017,38.938914,38.9615135,38.9615135,38.9163399,38.925665,38.9041061,38.9279518,38.9572252,38.9680672,38.962379,38.9658432,38.962205,38.9071953,38.9071953,38.9140449,38.93183,38.8922238,38.9612485,38.9572701,38.9087174,38.9057871,38.9014674,38.8859803,38.956332,38.9038251,38.8875233,38.9014573,38.9011201,38.8961298,38.9039203,38.9557228,38.9755898,38.8921883,38.9120064,38.9507408,38.9306107,38.8924408,38.8924408,38.9147799,38.9147799,38.9147799,38.88533,38.9287491,38.9008958,38.9738197,38.9233398,38.9214914,38.919105,38.919105,38.9637148,38.9727511,38.9455338,38.9201851,38.9046555,38.933837,38.877167,38.917137,38.9063873,38.87735,38.904033,38.90573,38.878027,38.878027,38.878027,38.9021454,38.9021454,38.902145,38.9222984,38.898613,38.901615,38.878079,38.9612579,38.9051895,38.9051895,38.9051895,38.9051895,38.9051895,38.9610198,38.9411359,38.905347,38.939827,38.9051454,38.906677,38.906677,38.9067627,38.905047,38.9049072,38.9049072,38.9049072,38.9121475,38.9394461,38.9353485,38.937027,38.9126205,38.9126205,38.9362717,38.9094577,38.9358788,38.9358788,38.935878,38.909678,38.878079,38.878079,38.878079,38.878079,38.878079,38.878079,38.878079,38.878079,38.878079,38.878079,38.878079,38.878079,38.878079,38.9012951,38.908686,38.8974246,38.8922272,38.9044609,38.8920897,38.891175,38.8987999,38.8987999,38.9025307,38.9002101,38.903312,38.9033623,38.9228935,38.922893,38.87911,38.9213198,38.906007,38.9013299,38.9037399,38.9237595,38.9561999,38.9612694,38.9612694,38.9612699,38.9552712,38.9552712,38.9552712,38.9532394,38.9532394,38.953211,38.9551397,38.9127535,38.894869,38.9542218,38.917202,38.898731,38.8840523,38.884052,38.9168472,38.9363403,38.9363403,38.9363403,38.9023209,38.937943,38.9344139,38.9344139,38.934345,38.902961,38.910386,38.906597,38.9051916,38.9051916,38.9051916,38.892574,38.9037164,38.9037164,38.934535,38.9348249,38.9335962,38.9050598,38.9069968,38.9069968,38.9049697,38.900871,38.930733,38.933691,38.9308254,38.900678,38.900678,38.9611472,38.899906,38.899906,38.9008559,38.9008559,38.900927,38.9076843,38.934546,38.9157143,38.910968,38.9071953,38.9012951,38.9239082,38.9311501,38.9311501,38.8878403,38.9002001,38.9176102,38.9169551,38.930481,38.9310226,38.9051399,38.9254646,38.907507,38.9234848,38.9090157,38.902608,38.909071,38.9009781,38.934742,38.9309616,38.9690678,38.900035,38.9509213,38.948485,38.96991,38.919002,38.899637,38.9617577,38.941575,38.9721101,38.9014674,38.9039498,38.9096401,38.8998199,38.8998199,38.9013299,38.8946499,38.966911,38.9191819,38.903872,38.903872,38.903872,38.8813408,38.9041775,38.9155899,38.951066,38.9746984,38.8974769,38.9520378,38.9048798,38.9048798,38.9556051,38.9565399,38.896787,38.9308939,38.8223664,38.899353,38.9761722,38.972494,38.909191,38.89632,38.8935348,38.8920428,38.9051132,38.9051132,38.8997535,38.898808,38.8949262,38.9014667,38.9052097,38.8920998,38.9096401,38.8451437,38.8451437,38.9610939,38.896335,38.8631122,38.920301,38.883394,38.906841,38.8614495,38.920389,38.940816,38.9544868,38.8428726,38.8876098,38.8876098,38.8290625,38.9037198,38.9025101,38.9245227,38.925206,38.838814,38.843485,38.8853601,38.8875997,38.8875997,38.8875997,38.9286844,38.9286844,38.89359,38.9454193,38.9454193,38.9454193,38.9454193,38.9454193,38.9454193,38.9454193,38.9454193,38.9195709,38.9060555,38.88303,38.8901456,38.8759918,38.8520584,38.9331201,38.9255597,38.8707496,38.8504558,38.8497543,38.905857,38.9294472,38.8728409,38.87248,38.88522,38.919295,38.92239,38.8971135,38.9565922,38.9408875,38.9699201,38.9567001,38.90537,38.896541,38.949267,38.927227,38.927227,38.9290504,38.9290504,38.9146614,38.9140262,38.891451,38.9747695,38.9056054,38.9055524,38.9055524,38.9055524,38.956475,38.826528,38.889926,38.889843,38.866703,38.894027,38.9127541,38.889943,38.8911285,38.8591669,38.8591669,38.86218,38.8842999,38.8812336,38.87833,38.8955525,38.8584175,38.915635,38.8765148,38.896339,38.938514,38.940891,38.8298569,38.8974676,38.8399696,38.8436799,38.9753608,38.861121,38.833208,38.9126301,38.8422904,38.829286,38.9161753,38.8933302,38.8875702,38.9025201,38.8898199,38.8479652,38.8839532,38.9383102,38.8462029,38.917348,38.8573484,38.905801,38.870571,38.8961452,38.847435,38.877067,38.9194107,38.919404,38.919404,38.919404,38.9377302,38.8849014,38.8459167,38.8656998,38.870524,38.9163939,38.8933845,38.8898199,38.889943,38.889943,38.900274,38.900274,38.895839,38.895839,38.895839,38.956248,38.9118004,38.882995,38.9567075,38.9002001,38.8331164,38.928381,38.8985505,38.94213,38.9565707,38.9501495,38.8706133,38.8681128,38.9285353,38.9013144,38.895395,38.8246613,38.8246613,38.8866898,38.900206,38.915499,38.9002001,38.9002001,38.9002001,38.9053345,38.833488,38.91983,38.858077,38.942375,38.907199,38.862318,38.8623903,38.8449278,38.861011,38.905771,38.82652,38.9056402,38.9082809,38.89596,38.8599703,38.881269,38.8783819,38.8775099,38.9053003,38.8935797,38.82629,38.8950623,38.8629799,38.8629799,38.925664,38.896324,38.9004364,38.9004364,38.8835716,38.9519902,38.8595161,38.9253845,38.8449727,38.900245,38.8784266,38.959239,38.881913,38.880313,38.870636,38.9317703,38.8769668,38.8844461,38.8788376,38.878837,38.862026,38.878751,38.8754875,38.8697243,38.8697243,38.867341,38.86563,38.9208984,38.883094,38.8651924,38.8648834,38.8968272,38.8968272,38.8968272,38.8897896,38.8897896,38.8897896,38.8897896,38.8897896,38.8897896,38.8897896,38.8897896,38.8821421,38.8581467,38.8581467,38.9181671,38.8686333,38.893643,38.862412,38.8945541,38.889805,38.862622,38.917797,38.9292488,38.86401,38.896386,38.895916,38.8983,38.890861,38.885188,38.916993,38.916993,38.916993,38.9182097,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.8993607,38.8993607,38.8973389,38.879203,38.87445,38.913936,38.9097824,38.909782,38.913948,38.8178408,38.9011603,38.8949288,38.8934563,38.89479,38.8992386,38.8859401,38.8875693,38.87926,38.8801432,38.887465,38.8823741,38.893457,38.8659912,38.883094,38.908208,38.927315,38.846903,38.9270151,38.863388,38.9395199,38.917485,38.855164,38.894968,38.9351251,38.900642,38.920224,38.8994698,38.899457,38.90675,38.906745,38.906745,38.8872866,38.8980675,38.8811913,38.8811913,38.8811913,38.8811913,38.8811913,38.8811913,38.8811913,38.8811913,38.902732,38.8927917,38.901256,38.8891678,38.8971765,38.89888,38.89888,38.89888,38.89888,38.888179,38.8885892,38.8896954,38.8896972,38.8149438,38.8149438,38.8149438,38.9071923,38.9095952,38.9061774,38.9155745,38.8279877,38.8981636,38.912106,38.912106,38.892664,38.9002001,38.9062699,38.9156697,38.9162799,38.8765223,38.9313583,38.87659,38.9557225,38.9556225,38.9651909,38.9133422,38.8228083,38.906237,38.8852877,38.8935502,38.9065636,38.9069099,38.9627961,38.9627961,38.962695,38.9623502,38.918869,38.8423616,38.9156657,38.9521561,38.8838097,38.8920099,38.9042797,38.8613704,38.8765148,38.8388003,38.8614578,38.9227371,38.932495,38.9376524,38.837727,38.956194,38.935565,38.9202805,38.8367087,38.883832,38.9040211,38.9015617,38.923253,38.9352699,38.885868,38.919699,38.938089,38.8764699,38.922255,38.8875999,38.84185,38.913158,38.900363,38.900432,38.8311828,38.9326057,38.8625755,38.8625755,38.92275,38.8777757,38.8437233,38.8408944,38.893768,38.9036674,38.9014701,38.9095116,38.875059,38.8985392,38.8986725,38.8785057,38.8772551,38.8832927,38.8760094,38.8778496,38.8909531,38.8952866,38.88983,38.896007,38.8834152,38.8894272,38.878319,38.8821729,38.896145,38.890985,38.8983949,38.882183,38.9038353,38.88031,38.88031,38.88031,38.88031,38.88031,38.88031,38.8192175,38.9056503,38.9169551,38.906227,38.916793,38.912353,38.910854,38.916241,38.9005089,38.9049301,38.9040565,38.913833,38.9567642,38.910822,38.9605819,38.9538,38.9097862,38.9097862,38.9086061,38.9002912,38.8798523,38.8533399,38.8533399,38.879882,38.879491,38.879491,38.9226703,38.9418907,38.8535078,38.8535078,38.8877907,38.863666,38.862602,38.9000552,38.8662399,38.86533,38.889488,38.914172,38.890041,38.8650017,38.8984901,38.8788229,38.921368,38.871501,38.878774,38.9173698,38.9173698,38.9173698,38.917369,38.8449783,38.8825684,38.88535,38.8988603,38.932897,38.833297,38.9035912,38.85735,38.9256898,38.868679,38.9003181,38.8880101,38.9001799,38.9210758,38.884186,38.891014,38.9002249,38.8680267,38.896324,38.8800812,38.8800812,38.854286,38.8902245,38.8902245,38.9027877,38.909868,38.9098674,38.9118657,38.9006956,38.888973,38.88921,38.8995819,38.8802813,38.909623,38.8995438,38.878682,38.883449,38.881774,38.907329,38.8750229,38.8737092,38.909676,38.8961067,38.890457,38.8824271,38.8817177,38.9031944,38.8963518,38.900218,38.9048233,38.890581,38.8919147,38.907505,38.9514198,38.8949241,38.9643593,38.908558,38.9072554,38.9012602,38.8993015,38.9072243,38.8746347,38.87994,38.87994,38.87994,38.87994,38.87994,38.87994,38.87994,38.87994,38.8831812,38.9557161,38.872032,38.90723,38.90723,38.8792979,38.9073296,38.9002101,38.9569449,38.9549372,38.9157066,38.8669548,38.8669548,38.8581041,38.9115105,38.86644,38.897782,38.8803291,38.9096375,38.887609,38.8666623,38.864938,38.9289097,38.8875903,38.8796798,38.8909449,38.910874,38.8967038,38.8665256,38.887402,38.9001498,38.8929299,38.9020434,38.9065094,38.8767388,38.867736,38.9020271,38.9014587,38.893852,38.9029594,38.8876319,38.9059486,38.906535,38.8994408,38.8718545,38.9030304,38.907447,38.8916283,38.8748415,38.891631,38.8752403,38.8910484,38.886285,38.8764754,38.9555401,38.909245,38.916851,38.89747,38.8961294,38.9056545,38.9037337,38.9547983,38.91078,38.8785937,38.9096298,38.914151,38.8805542,38.919175,38.91688,38.879848,38.8764737,38.8718927,38.908425,38.8327787,38.865009,38.871103,38.8665812,38.9336298,38.9218106,38.8636757,38.9463501,38.869128,38.8446703,38.9533795,38.8935797,38.889573,38.8815902,38.8815902,38.9417897,38.94046,38.94046,38.9407403,38.94046,38.8479714,38.8919898,38.8326492,38.832799,38.8793023,38.902142,38.8679848,38.8815305,38.925672,38.940861,38.940861,38.9239423,38.9239423,38.8644174,38.867004,38.9147772,38.9147772,38.9238384,38.8587379,38.8794337,38.832222,38.8571955,38.8583314,38.8862197,38.941786,38.9344177,38.8560449,38.832824,38.9092331,38.8668213,38.893323,38.895227,38.8647461,38.8911667,38.896059,38.895912,38.8994296,38.8964543,38.899341,38.8642883,38.8976365,38.8976365,38.8637339,38.898286,38.864059,38.9005782,38.8942146,38.9049415,38.893485,38.8691063,38.8918915,38.8918915,38.901635,38.901635,38.901635,38.9029399,38.8933551,38.901915,38.8707655,38.9058304,38.89251,38.8920173,38.95676,38.9569092,38.9257164,38.9587354,38.928611,38.928611,38.9170852,38.9587197,38.9102729,38.917327,38.917327,38.9703848,38.925407,38.907932,38.913852,38.917461,38.8451118,38.9578929,38.8920255,38.9063946,38.924718,38.9463387,38.9025651,38.8966099,38.8966103,38.880359,38.829199,38.876479,38.876479,38.8826698,38.8826698,38.9191901,38.864769,38.9004326,38.9004326,38.9332161,38.8839607,38.8874474,38.83493,38.863318,38.9388695,38.8428129,38.8291991,38.9325703,38.9345732,38.9345732,38.9484558,38.935746,38.9424782,38.8735,38.900714,38.924518,38.8828602,38.8875803,38.8877217,38.896851,38.884326,38.8924637,38.890474,38.8902068,38.8863136,38.8662547,38.8662547,38.859691,38.895638,38.8893394,38.8903503,38.892421,38.892594,38.893352,38.865551,38.8648177,38.9023505,38.8830782,38.89512,38.8951168,38.8725929,38.8986572,38.8952217,38.94526,38.848394,38.8248787,38.9075165,38.9305,38.9305,38.9305,38.9305,38.9305,38.9305,38.8311653,38.845172,38.845172,38.9072804,38.9365996,38.944031,38.8792299,38.928827,38.8200073,38.8250265,38.960228,38.8969888,38.88923,38.88923,38.8657846,38.92309,38.9232375,38.8722115,38.8722115,38.882356,38.882268,38.9407752,38.9407752,38.9004173,38.9004173,38.9028702,38.90287,38.950416,38.949568,38.8315295,38.8892186,38.878109,38.861404,38.9473251,38.8652294,38.8647232,38.8647232,38.8565431,38.936364,38.8920099,38.9552924,38.8308142,38.9078903,38.9452477,38.8975029,38.8975029,38.9270101,38.9179026,38.9554911,38.8879204,38.9025202,38.9084686,38.90847,38.8900291,38.8310634,38.8213882,38.908646,38.902678,38.8876574,38.910221,38.839965,38.941345,38.908526,38.9172211,38.8608093,38.8608093,38.8608093,38.8510971,38.876565,38.926402,38.8601217,38.9325981,38.8755074,38.924631,38.9252224,38.9252224,38.870823,38.850032,38.863159,38.863159,38.863159,38.9349756,38.850669,38.9240379,38.882496,38.8771485,38.8771485,38.9271545,38.8773403,38.8616982,38.8616982,38.8616982,38.8539014,38.9028587,38.9447021,38.9180897,38.8970558,38.889812,38.8797531,38.9089012,38.9089012,38.9089012,38.9088998,38.929512,38.9444847,38.8588458,38.8588458,38.872948,38.909164,38.9275,38.9158058,38.858027,38.858027,38.923137,38.8680305,38.83478,38.8817596,38.9025101,38.9025101,38.8961197,38.89732,38.8310929,38.8679691,38.9193344,38.9193344,38.9193344,38.8606525,38.8606525,38.8606603,38.9313463,38.9186805,38.8738802,38.8738802,38.845108,38.8686178,38.9193382,38.871925,38.917977,38.920169,38.8618331,38.8678474,38.8736,38.8715748,38.9194221,38.856777,38.8741799,38.8528946,38.86948,38.860624,38.8745736,38.859584,38.859584,38.9171167,38.858648,38.9235601,38.8898635,38.9072988,38.8989461,38.845088,38.904441,38.91434,38.9084,38.9653625,38.9083305,38.9083305,38.901989,38.836693,38.83113,38.8875655,38.8875655,38.9007607,38.9655628,38.880628,38.864769,38.864769,38.864769,38.864769,38.8615417,38.893825,38.92783,38.9275551,38.87459,38.8512022,38.8630662,38.8630662,38.9040413,38.91745,38.9174482,38.8730202,38.854115,38.9311615,38.8745232,38.8745232,38.874523,38.9157486,38.8982159,38.8516083,38.8693935,38.9190271,38.8747787,38.931136,38.965095,38.9194476,38.8213196,38.8909474,38.9056503,38.9056503,38.8832207,38.90779,38.8874321,38.9002517,38.9025537,38.9025537,38.9202663,38.8212166,38.8212166,38.908988,38.862125,38.956042,38.847333,38.8218269,38.909089,38.865108,38.9312299,38.828445,38.9204674,38.893377,38.8450775,38.9141992,38.9173595,38.8503647,38.9173591,38.873338,38.873256,38.875279,38.875279,38.9340898,38.9172229,38.8985599,38.8650284,38.9048597,38.874401,38.8510446,38.8510446,38.8605614,38.9045219,38.915153,38.887684,38.9150124,38.867428,38.8507374,38.89655,38.930719,38.898312,38.8875702,38.8875702,38.97431,38.9381714,38.8960849,38.953676,38.91261,38.95718,38.974998,38.9401053,38.9546471,38.899969,38.9140798,38.9140798,38.9140798,38.9140798,38.8941231,38.9750069,38.9746704,38.9724494,38.9053879,38.9047839,38.9463602,38.888088,38.9577713,38.90727,38.8362602,38.933444,38.917117,38.824419,38.905777,38.9192974,38.8919798,38.8439193,38.838459,38.84186,38.9212903,38.9196997,38.8774998,38.9197006,38.9197006,38.9197006,38.829082,38.8941349,38.859762,38.8432808,38.8295517,38.90904,38.8594808,38.822787,38.8460007,38.9057884,38.8991318,38.82643,38.8646936,38.9547195,38.9547195,38.9342422,38.92481,38.9356951,38.9275856,38.9275009,38.9250031,38.924934,38.9191297,38.949741,38.929637,38.9192062,38.952449,38.9452478,38.9169693,38.93235,38.944362,38.943161,38.9156151,38.9136165,38.9560094,38.951059,38.934542,38.934368,38.957029,38.9375992,38.9796066,38.969463,38.9837998,38.9772911,38.8993301,38.89933,38.9793903,38.983803,38.9451961,38.97797,38.9614754,38.9260445,38.9341011,38.907108,38.907108,38.907108,38.907108,38.907108,38.983139,38.9278297,38.9788246,38.9603218,38.968764,38.959693,38.9381801,38.912365,38.938944,38.9412308,38.9616545,38.9616545,38.9589867,38.9572983,38.910062,38.9549026,38.908721,38.9546999,38.9534645,38.960834,38.9237713,38.9064999,38.9483948,38.9483948,38.9483948,38.9489517,38.948529,38.9297905,38.9007187,38.9007187,38.9007187,38.9158078,38.9305962,38.9305962,38.9362679,38.931215,38.899712,38.899712,38.9407403,38.9042777,38.924672,38.9352103,38.9099655,38.9289589,38.902658,38.9234401,38.935365,38.9129153,38.9023539,38.9023539,38.9133759,38.913375,38.927557,38.9132271,38.9113235,38.9066582,38.9066582,38.918266,38.951,38.9322319,38.9288025,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9567795,38.9022026,38.9269698,38.902531,38.9205198,38.8973401,38.9602936,38.9044782,38.8953473,38.9250112,38.9424455,38.941021,38.941021,38.9701653,38.9701653,38.9382744,38.9170167,38.9208048,38.951372,38.9418413,38.8920421,38.887569,38.8802699,38.932083,38.9475403,38.946513,38.9460487,38.9460487,38.9449768,38.944974,38.9435425,38.9435425,38.9435425,38.9435425,38.9435425,38.943542,38.943715,38.9439377,38.9235722,38.912582,38.942971,38.918918,38.941689,38.941689,38.9675217,38.9675217,38.94815,38.942075,38.9073822,38.9645288,38.9215393,38.9437408,38.9476395,38.9506853,38.9236157,38.9243011,38.9071953,38.905254,38.905254,38.906986,38.900898,38.923713,38.9023552,38.9207002,38.9027763,38.9027763,38.910944,38.9010887,38.9119301,38.9234199,38.9234199,38.9234199,38.902202,38.902202,38.956779,38.9859657,38.932554,38.968929,38.9352036,38.9352036,38.9903297,38.9037044,38.992327,38.9095952,38.9074702,38.9304406,38.9304406,38.9592382,38.8790607,38.92728,38.92728,38.9001999,38.9198982,38.9921167,38.9118797,38.9920958,38.9386798,38.9386797,38.9733582,38.8964653,38.93812,38.928985,38.93759,38.9725171,38.9344025,38.9171753,38.9363529,38.8875253,38.8970566,38.9168243,38.917716,38.8873482,38.9357713,38.9327736,38.893803,38.913879,38.9020072,38.9541212,38.90099,38.9573801,38.910511,38.919355,38.9374177,38.9247513,38.9525871,38.9611258,38.9286697,38.9261799,38.9351807,38.9351807,38.9551753,38.9294205,38.9201889,38.9627991,38.9429855,38.9318702,38.9323128,38.9346267,38.937289,38.9325502,38.921317,38.9336633,38.921277,38.921179,38.9590243,38.9581375,38.9286898,38.972926,38.9271998,38.9292107,38.9292107,38.9292107,38.9292107,38.9662575,38.9662575,38.976189,38.9325998,38.9325998,38.9649573,38.9724078,38.9265501,38.9171382,38.97071,38.96241,38.96241,38.9654099,38.96612,38.9841398,38.962497,38.9921226,38.9053116,38.9255104,38.9039955,38.9268417,38.9172134,38.8985867,38.9029399,38.937146,38.8825503,38.9020997,38.9029679,38.8972798,38.8939599,38.8961298,38.9329599,38.8984499,38.9723193,38.972541,38.887569,38.887569,38.9319688,38.9417343,38.9300001,38.9523888,38.8822724,38.93853,38.9670982,38.920201,38.9521001,38.962035,38.920447,38.919814,38.919814,38.9191628,38.9269397,38.9560966,38.905085,38.906326,38.953655,38.913446,38.9067116,38.9190445,38.904296,38.915346,38.9608154,38.9608154,38.9176814,38.9034659,38.908158,38.9539719,38.9306183,38.904758,38.904758,38.9167627,38.9337273,38.898285,38.8936937,38.903695,38.903695,38.901997,38.891679,38.8997072,38.8997072,38.9032061,38.9030745,38.90307,38.8920897,38.8953499,38.9072493,38.9030609,38.9030609,38.9030609,38.9030609,38.9028702,38.9028455,38.9187431,38.9018798,38.9113121,38.913703,38.8970642,38.9071966,38.9040477,38.9026503,38.9052701,38.9138298,38.911047,38.9116603,38.9116603,38.9074249,38.9026489,38.9026489,38.9419309,38.9282513,38.9577408,38.908525,38.9262123,38.9262123,38.917885,38.9273608,38.9166896,38.8985968,38.9085699,38.946399,38.934649,38.9267624,38.9092498,38.979229,38.8999196,38.8786002,38.9480705,38.9067383,38.9067383,38.948385,38.9543762,38.93873,38.9190559,38.9190559,38.9080353,38.956505,38.8986931,38.9177589,38.9040108,38.9111326,38.896406,38.917245,38.913237,38.9095952,38.9104462,38.9104462,38.899295,38.8953587,38.909474,38.916767,38.9038767,38.9127474,38.893556,38.9139397,38.9026503,38.9111301,38.913883,38.914402,38.914385,38.9074669,38.9064789,38.9064789,38.902523,38.902523,38.9904633,38.9263301,38.9263301,38.9607162,38.936906,38.9247999,38.940655,38.949006,38.949006,38.9172668,38.9257736,38.9002001,38.907497,38.9020691,38.9020691,38.8954476,38.9040146,38.9673386,38.9310602,38.923449,38.9074745,38.9622116,38.963193,38.9361534,38.901576,38.932475,38.9169551,38.9097501,38.9097501,38.9013299,38.9025302,38.9025302,38.9037399,38.9096501,38.9162903,38.9170001,38.9234266,38.90411,38.9354973,38.906868,38.9326515,38.9196014,38.9028816,38.902797,38.9418764,38.920644,38.901285,38.9001652,38.901285,38.9389038,38.8965476,38.9197192,38.9003462,38.9003462,38.8989273,38.9863777,38.9382973,38.914313,38.898997,38.9002255,38.9002255,38.8973603,38.8920998,38.8987899,38.8983098,38.928379,38.9689343,38.9662676,38.898693,38.898693,38.898693,38.8949661,38.917556,38.947807,38.9554777,38.898627,38.9071953,38.9071953,38.900825,38.920357,38.899731,38.9209597,38.939279,38.9201215,38.9201215,38.9127474,38.9097876,38.8849832,38.902252,38.902252,38.8933899,38.8972798,38.9020997,38.9020997,38.8954753,38.9001551,38.9169551,38.909568,38.912524,38.928883,38.9003375,38.9003375,38.9003375,38.9014775,38.9003375,38.8974877,38.9027783,38.8932867,38.9097977,38.9073776,38.9097977,38.9097977,38.884889,38.9161525,38.9157066,38.9157066,38.9127474,38.890628,38.890628,38.9002008,38.9026402,38.90134,38.9026402,38.9026402,38.8983198,38.9002001,38.9026402,38.89042,38.9026402,38.9013346,38.8875694,38.8972798,38.9037285,38.9037285,38.9056402,38.8875702,38.8998098,38.8998098,38.8998098,38.8920897,38.9140899,38.8905401,38.883243,38.8823097,38.9135474,38.8994732,38.8831224,38.9321472,38.8777319,38.9749613,38.9749613,38.975973,38.939835,38.9108849,38.9029198,38.9128571,38.9151764,38.909224,38.912565,38.894536,38.906856,38.906856,38.9051971,38.9020729,38.9120369,38.9146385,38.932834,38.909802,38.9195301,38.9142374,38.907377,38.90134,38.9026503,38.9112467,38.9312592,38.9187508,38.9111401,38.9111401,38.9096025,38.9099117,38.885143,38.9411545,38.8770566,38.9759416,38.9560966,38.928156,38.927211,38.903234,38.929345,38.9607811,38.9561005,38.901226,38.895786,38.895786,38.895786,38.907997,38.9178543,38.9142761,38.9421959,38.9421959,38.9278488,38.9043236,38.900238,38.976016,38.9032631,38.8997649,38.9154424,38.91397,38.9096501,38.9096501,38.8946648,38.894664,38.894664,38.894764,38.913885,38.9172059,38.9020729,38.902072,38.902072,38.910351,38.910351,38.910351,38.910351,38.9090805,38.9105377,38.914337,38.8935616,38.9038774,38.9236104,38.89352,38.969916,38.969916,38.90625,38.8791885,38.909804,38.906157,38.906157,38.90375,38.9398651,38.9364357,38.9316101,38.9002477,38.9302475,38.916573,38.9041409,38.906833,38.925979,38.9123611,38.9302301,38.94506,38.9304071,38.905769,38.9064445,38.9275398,38.9275398,38.9275398,38.925409,38.9021378,38.9057884,38.9190178,38.9182625,38.919017,38.919017,38.9212074,38.9212074,38.9019127,38.913205,38.8920448,38.8920448,38.90595,38.905384,38.963868,38.931754,38.9154424,38.9154424,38.8875172,38.955581,38.898433,38.9154598,38.9014701,38.9035803,38.8920624,38.9130901,38.892549,38.899547,38.9510098,38.9436103,38.915451,38.9064522,38.9437162,38.899475,38.900615,38.9170001,38.8875702,38.8920897,38.9170001,38.9088301,38.8920897,38.8961003,38.89939,38.906311,38.9037458,38.9400368,38.9451941,38.9262352,38.962635,38.883284,38.9054047,38.9633522,38.9143524,38.8828911,38.928422,38.8939362,38.9324342,38.913927,38.9062462,38.922245,38.9222639,38.905714,38.9090819,38.9221432,38.9090927,38.915184,38.9123039,38.9106674,38.9106674,38.8959999,38.8959999,38.909159,38.922183,38.922764,38.9227849,38.897641,38.9075279,38.9075279,38.90761,38.893527,38.895966,38.9253672,38.908607,38.9101982,38.90835,38.921761,38.9199333,38.9110952,38.9051056,38.92044,38.9219,38.902524,38.916526,38.9126066,38.925829,38.96165,38.8805447,38.8805447,38.8805447,38.924836,38.901008,38.901008,38.8999801,38.9569664,38.9085884,38.914264,38.9643404,38.894996,38.894996,38.894996,38.894996,38.8808925,38.9324265,38.932426,38.9091187,38.8987427,38.9232674,38.9042244,38.9378586,38.9064064,38.938427,38.9189148,38.929443,38.944209,38.9520995,38.9116699,38.9244507,38.9592247,38.9649072,38.915828,38.9127099,38.9642792,38.9392815,38.947628,38.944561,38.9478989,38.9036903,38.948179,38.9481773,38.94815,38.9373399,38.9087906,38.9059601,38.911366,38.9469299,38.9469299,38.9469299,38.90113,38.9196246,38.917957,38.9212914,38.892018,38.903695,38.9167023,38.899592,38.876084,38.9002113,38.9002101,38.9115398,38.876169,38.876169,38.876169,38.914089,38.9285879,38.9285879,38.9275888,38.9375552,38.9169551,38.9169551,38.9616374,38.9616374,38.896251,38.902645,38.9323799,38.9313309,38.92377,38.9276397,38.9376001,38.9497406,38.9614982,38.9157072,38.97657,38.8961298,38.9025202,38.8998199,38.916999,38.916999,38.9013299,38.9013299,38.8973401,38.8973401,38.9131665,38.9322357,38.9090805,38.9090805,38.936372,38.9324074,38.9109383,38.9109383,38.9104424,38.90513,38.93193,38.945724,38.910226,38.9053,38.914508,38.914508,38.913574,38.9455663,38.9089622,38.9054222,38.9607849,38.9607849,38.905305,38.891742,38.9068244,38.9068244,38.9068244,38.906929,38.9049416,38.902786,38.902786,38.902801,38.9066058,38.9603958,38.9060298,38.952712,38.9389954,38.9097299,38.9097299,38.9193175,38.898948,38.8821094,38.9021225,38.898021,38.9615135,38.916339,38.916339,38.93183,38.9100505,38.951145,38.915697,38.895248,38.88237,38.9057871,38.9057871,38.8920897,38.9288101,38.9373802,38.8989126,38.9057777,38.9750099,38.91261,38.8948001,38.9013199,38.895543,38.895543,38.943753,38.882957,38.882957,38.902266,38.8924398,38.9226535,38.962562,38.9738197,38.9142952,38.9281883,38.919105,38.919105,38.9146498,38.9146498,38.9146498,38.885421,38.9069939,38.9178067,38.862204,38.883238,38.9137298,38.9069366,38.906936,38.924207,38.877242,38.87735,38.9040337,38.9169665,38.9028854,38.9130287,38.909875,38.878027,38.9021454,38.9037399,38.9037399,38.9220276,38.915396,38.900642,38.8999863,38.8999863,38.923745,38.878079,38.878079,38.878079,38.878079,38.878079,38.948103,38.9442902,38.9051895,38.9102974,38.910052,38.905026,38.9408483,38.9195938,38.9084123,38.906677,38.9052352,38.905489,38.9069465,38.9051903,38.9428253,38.9034042,38.903853,38.917794,38.9430805,38.9383431,38.937027,38.904903,38.9067923,38.892389,38.9045459,38.9358788,38.9363403,38.878079,38.878079,38.878079,38.8973153,38.8953654,38.886934,38.89778,38.914325,38.90134,38.9025307,38.9025307,38.9062759,38.9133034,38.924583,38.9248449,38.922893,38.8991585,38.906997,38.9341253,38.87911,38.87911,38.87911,38.906007,38.8951099,38.8973401,38.8973401,38.899811,38.899811,38.899811,38.899811,38.9025202,38.8998098,38.8848444,38.9321938,38.9237595,38.9552712,38.887428,38.929939,38.9540434,38.894869,38.894869,38.912165,38.936809,38.970119,38.8940582,38.894058,38.966507,38.9499283,38.95622,38.90905,38.9363403,38.9792175,38.9023209,38.9344139,38.9344139,38.902922,38.9051916,38.9435425,38.903162,38.90976,38.8925504,38.930736,38.930503,38.934535,38.904491,38.9050598,38.9059219,38.9334903,38.9090996,38.906778,38.9166011,38.9050179,38.930733,38.935633,38.900678,38.900678,38.900678,38.9609648,38.9163302,38.9025101,38.910985,38.916843,38.916843,38.907899,38.9121144,38.9074707,38.930196,38.9081688,38.917968,38.902632,38.9157072,38.9143486,38.930481,38.9304924,38.913837,38.921371,38.917084,38.8876419,38.9254646,38.9234848,38.909015,38.930966,38.903942,38.934742,38.9261457,38.9309616,38.9258194,38.9690678,38.953726,38.9694198,38.899601,38.899601,38.917152,38.9485054,38.9485054,38.967701,38.919002,38.919002,38.9110764,38.9722449,38.9473724,38.9043072,38.9721101,38.9026402,38.8962673,38.9467583,38.9267499,38.9039324,38.92377,38.91112,38.8998199,38.9010403,38.9317284,38.9821358,38.8898048,38.8898048,38.9828224,38.982822,38.982822,38.9839393,38.9014567,38.9590303,38.8916518,38.9136902,38.9136968,38.9559021,38.899353,38.929652,38.9724846,38.9072301,38.9072301,38.8935348,38.8875152,38.907373,38.9051132,38.9051132,38.9051132,38.9052097,38.8882208,38.8764001,38.9064603,38.8887799,38.894805,38.9255791,38.9202109,38.825609,38.8775099,38.8451437,38.9242516,38.8940887,38.9202844,38.86301,38.894287,38.8246918,38.8617902,38.9195557,38.8298225,38.900438,38.8886699,38.925375,38.8827128,38.9075394,38.829286,38.9537215,38.924594,38.882961,38.8933101,38.9286844,38.870938,38.9172991,38.9454193,38.9454193,38.9454193,38.9454193,38.9454193,38.9454193,38.9454193,38.9454193,38.849931,38.8934369,38.8985558,38.9331201,38.897745,38.900173,38.8488029,38.9570503,38.9565697,38.896084,38.905771,38.944121,38.926487,38.9053688,38.90537,38.9129524,38.885448,38.8994343,38.9056054,38.9055524,38.9055524,38.9055524,38.9500999,38.889926,38.889926,38.889926,38.889926,38.8900892,38.8900892,38.9175839,38.86218,38.902264,38.8445969,38.9029473,38.8812603,38.8792875,38.883722,38.8842999,38.9028225,38.8954499,38.8825726,38.8835824,38.828745,38.925664,38.9217782,38.8955525,38.896339,38.882577,38.9047323,38.9218341,38.8622233,38.8436101,38.897454,38.861121,38.8421483,38.830368,38.9161753,38.938388,38.8729099,38.843239,38.8875702,38.9008398,38.9025,38.8829903,38.8829903,38.9056302,38.8898199,38.9291687,38.8479652,38.8479652,38.888752,38.8876178,38.8447353,38.903543,38.868099,38.9072359,38.8995895,38.9172891,38.8513985,38.877067,38.902753,38.887897,38.8933202,38.8849014,38.84486,38.920754,38.873409,38.866342,38.9370898,38.89915,38.8993492,38.8898199,38.889943,38.900274,38.900274,38.890903,38.895839,38.895839,38.8920368,38.882995,38.882995,38.905451,38.910186,38.9002001,38.9002001,38.8865756,38.8920717,38.9062576,38.8732445,38.8864257,38.9002001,38.9002001,38.833488,38.91983,38.9613772,38.8637924,38.861194,38.920791,38.862317,38.9325904,38.8588753,38.8439713,38.9410706,38.924543,38.8610878,38.910383,38.960198,38.958892,38.9360928,38.8938255,38.8454895,38.8382915,38.905254,38.845916,38.8991051,38.927757,38.8327103,38.8254395,38.8383329,38.87928,38.9013098,38.8935797,38.82629,38.882865,38.9255966,38.8827623,38.8876607,38.9519902,38.8493615,38.900386,38.900386,38.909747,38.9407403,38.9253806,38.912311,38.892459,38.8845299,38.870636,38.896955,38.8732681,38.9284672,38.890095,38.8778143,38.8693097,38.8693097,38.869724,38.8671009,38.86563,38.9208984,38.9208984,38.883094,38.862146,38.928857,38.889809,38.8897896,38.8897896,38.8897896,38.8684192,38.8962631,38.9173393,38.917084,38.888784,38.9201201,38.9201201,38.8957476,38.8847542,38.8847542,38.883788,38.862412,38.896407,38.884718,38.884718,38.8917967,38.8864174,38.917797,38.8676147,38.864609,38.916993,38.916993,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.898875,38.874649,38.955395,38.95031,38.919025,38.913936,38.8988603,38.8988603,38.8920347,38.9383,38.89479,38.8859401,38.8960899,38.8874435,38.8827047,38.889437,38.864296,38.852622,38.8801432,38.919372,38.919372,38.8659912,38.867408,38.88853,38.863388,38.863388,38.905643,38.887576,38.928551,38.9284746,38.935786,38.920224,38.8993545,38.9115677,38.9276102,38.90675,38.90675,38.88031,38.902945,38.8940424,38.8811913,38.8811913,38.8811913,38.8811913,38.8811913,38.8811913,38.8866615,38.8989143,38.887861,38.8941231,38.8936653,38.8920937,38.8985138,38.8983817,38.8971303,38.8900146,38.89888,38.89888,38.887059,38.888179,38.888303,38.888972,38.8944903,38.8931618,38.8927498,38.893047,38.891962,38.8149438,38.8149438,38.8149438,38.9735122,38.9061774,38.926195,38.8246536,38.8842359,38.9057777,38.8271332,38.8928631,38.912106,38.892664,38.9062055,38.9096401,38.9062699,38.9062699,38.9062699,38.8961197,38.9223699,38.9313583,38.955953,38.9568291,38.953525,38.9018402,38.9585152,38.8852877,38.8852877,38.879368,38.90981,38.962705,38.954742,38.963007,38.8954163,38.878098,38.907478,38.9256046,38.9037285,38.9155302,38.92245,38.9372139,38.88245,38.890136,38.9227371,38.9505386,38.8573702,38.8612831,38.9128069,38.9041214,38.9041214,38.9352699,38.8919999,38.8907701,38.89639,38.8825732,38.87656,38.8772786,38.9028168,38.8834381,38.9043465,38.925666,38.9049026,38.900444,38.8450576,38.8898087,38.9013098,38.8903698,38.875049,38.890144,38.881554,38.8998225,38.8924391,38.8785057,38.8761787,38.8761787,38.880042,38.8895416,38.8863487,38.8923416,38.8919147,38.8920032,38.890973,38.882183,38.88031,38.88031,38.88031,38.88031,38.88031,38.9628417,38.9553215,38.9552401,38.907478,38.9062271,38.9062271,38.906227,38.896419,38.907758,38.918418,38.961115,38.9005089,38.9005089,38.9005089,38.9005089,38.8772278,38.9040565,38.904056,38.9114151,38.916297,38.9158974,38.956764,38.9087296,38.9538002,38.9128647,38.957832,38.9578323,38.958873,38.9002912,38.8533399,38.8533399,38.879491,38.879491,38.879491,38.9226703,38.92528,38.9191251,38.9007801,38.8535078,38.9201584,38.922767,38.8860321,38.922034,38.863459,38.8786278,38.9082985,38.901863,38.8886699,38.87863,38.8653245,38.847429,38.886833,38.8855896,38.9231682,38.85314,38.9064664,38.925754,38.8805046,38.9166908,38.8507402,38.880201,38.845178,38.9244857,38.9244857,38.9412003,38.8545301,38.9104702,38.9251674,38.9246001,38.9104535,38.9104535,38.9003181,38.8623543,38.8853437,38.8885324,38.867054,38.9002249,38.925048,38.892238,38.925103,38.8542862,38.8800812,38.854286,38.854286,38.9101189,38.889878,38.890165,38.8902209,38.8902245,38.8902245,38.8899225,38.872818,38.907757,38.907757,38.889176,38.9030571,38.9028695,38.911456,38.911456,38.9113694,38.9072113,38.9072113,38.909689,38.909689,38.893643,38.873802,38.8829944,38.9123499,38.912445,38.8781624,38.8845558,38.9103992,38.8821696,38.8821696,38.8905957,38.907505,38.907505,38.894879,38.839481,38.875548,38.9643593,38.911072,38.872708,38.899038,38.907372,38.9025377,38.9072243,38.9072243,38.8989123,38.87994,38.87994,38.87994,38.8792973,38.8792992,38.9073323,38.8792984,38.9073296,38.9073325,38.90733,38.8441399,38.9102422,38.9157066,38.8339133,38.8339133,38.8669548,38.9252663,38.893427,38.91151,38.836025,38.9059541,38.924202,38.924202,38.9006386,38.8457103,38.90588,38.9329331,38.87099,38.8668696,38.9133632,38.903636,38.9254664,38.9255416,38.892457,38.920093,38.9260788,38.8654058,38.912697,38.912697,38.9001498,38.9001498,38.9053421,38.902074,38.902165,38.8929071,38.9020271,38.9020271,38.9014587,38.889836,38.901322,38.9005588,38.9048812,38.9059486,38.892126,38.8918255,38.8884198,38.90303,38.8823131,38.895643,38.8920364,38.8749199,38.8816908,38.8901558,38.8906199,38.8822883,38.909245,38.8682107,38.9107821,38.9125979,38.9133382,38.958726,38.9548025,38.914151,38.9052612,38.9074484,38.9502333,38.9502333,38.8708041,38.840786,38.840786,38.936511,38.9462603,38.871103,38.8331026,38.914669,38.921606,38.9463146,38.9218106,38.9218106,38.9146461,38.8674,38.9452498,38.8674403,38.9316697,38.869128,38.8447481,38.912414,38.912414,38.8860118,38.8792009,38.8919898,38.8587646,38.886295,38.9444008,38.940982,38.900393,38.9238498,38.919341,38.832759,38.832759,38.940861,38.91468,38.9239423,38.8587398,38.896843,38.9080723,38.9224129,38.9220674,38.8813307,38.907268,38.8662497,38.9417803,38.8711121,38.8682585,38.9109389,38.8561913,38.9070229,38.832775,38.867351,38.895227,38.9221497,38.904299,38.8847686,38.8994296,38.8994296,38.893029,38.8976365,38.8825035,38.8942146,38.894214,38.901396,38.9025597,38.8809921,38.880764,38.9032211,38.9032211,38.8791246,38.901635,38.9039879,38.8934489,38.8902054,38.9048958,38.9007835,38.900783,38.8995018,38.9039116,38.8920173,38.9562874,38.957798,38.907779,38.958809,38.9135704,38.876251,38.9703848,38.914337,38.925407,38.9268035,38.8451118,38.9464035,38.9464035,38.8244196,38.925006,38.9510574,38.9552727,38.8919757,38.833932,38.9589691,38.9077625,38.8969197,38.8919744,38.8966099,38.9545937,38.910031,38.9587299,38.876479,38.876479,38.8826698,38.864769,38.942345,38.8969231,38.900453,38.890599,38.9332161,38.9208488,38.9483236,38.8629799,38.839226,38.9388695,38.8828053,38.9335198,38.9327037,38.882251,38.9305637,38.92082,38.913853,38.9372501,38.892261,38.946399,38.9424515,38.857447,38.9003275,38.9384484,38.942591,38.842508,38.890376,38.8667703,38.8662547,38.889498,38.906807,38.906523,38.8881264,38.8952293,38.895638,38.895786,38.893998,38.892421,38.8835144,38.8923988,38.865551,38.8671673,38.8952608,38.8952217,38.8952217,38.9452602,38.8451117,38.8792774,38.9037647,38.9542618,38.9551599,38.9305,38.9305,38.9305,38.9305,38.9305,38.8273392,38.8311653,38.831165,38.845172,38.845172,38.9432589,38.91359,38.9174721,38.8764801,38.9102669,38.9102669,38.89744,38.89744,38.89744,38.89744,38.8250265,38.8964439,38.8875903,38.8875903,38.8892399,38.9389218,38.8722115,38.8920549,38.882356,38.882268,38.8977547,38.9028702,38.9028702,38.8442307,38.864723,38.8751335,38.9534416,38.882626,38.865168,38.837088,38.8645248,38.8640747,38.8604202,38.8653297,38.8308142,38.9143749,38.8315,38.869197,38.869197,38.83311,38.9554911,38.9554911,38.8272095,38.8889,38.9621665,38.894788,38.9056101,38.8831737,38.9083964,38.90847,38.8310634,38.8960728,38.908646,38.8311359,38.9037547,38.941345,38.8782692,38.8489952,38.90895,38.9262389,38.8557171,38.8720818,38.9264596,38.8756404,38.925804,38.9300302,38.873142,38.917199,38.87398,38.8709412,38.919277,38.812488,38.9255697,38.860076,38.8766098,38.924072,38.8698502,38.8613201,38.962219,38.902858,38.902858,38.8358803,38.8803906,38.889812,38.9457855,38.8797531,38.9088998,38.9088998,38.9088998,38.905112,38.8588458,38.9407403,38.87649,38.9275,38.8987045,38.9530074,38.858027,38.858027,38.9561174,38.9577179,38.8875997,38.9140908,38.8874629,38.8606525,38.8606603,38.902555,38.935976,38.93126,38.9186805,38.8739211,38.845108,38.8633308,38.856892,38.8693433,38.919761,38.9193382,38.8734001,38.9175285,38.871933,38.8710022,38.9004777,38.922524,38.900396,38.873575,38.875911,38.8736,38.85704,38.8544429,38.857014,38.8531474,38.874076,38.874101,38.92566,38.8573994,38.8606567,38.8612001,38.8600311,38.872312,38.8723106,38.86062,38.8617859,38.8608284,38.9278984,38.9278984,38.9278984,38.8604262,38.8604262,38.920639,38.859584,38.8589993,38.8600709,38.8653219,38.9329807,38.8510704,38.9235601,38.885144,38.9072988,38.8826141,38.8921509,38.8235435,38.836693,38.8224381,38.89479,38.861522,38.836009,38.8465424,38.880628,38.8305092,38.864769,38.864769,38.864769,38.864769,38.864769,38.825031,38.8615417,38.9568403,38.885762,38.9582558,38.957144,38.955735,38.8636742,38.8962822,38.844138,38.916744,38.903416,38.9167614,38.8437176,38.8730202,38.9147168,38.873004,38.8745232,38.8745232,38.8745232,38.8745232,38.8745232,38.874523,38.9157486,38.8625874,38.874514,38.918984,38.8736,38.8736,38.9185732,38.936155,38.965095,38.8948067,38.89479,38.9056503,38.8764699,38.9013098,38.9072301,38.9025101,38.915565,38.9576144,38.884356,38.8854218,38.930764,38.89646,38.89632,38.913031,38.864828,38.8236351,38.843326,38.922202,38.894408,38.842464,38.8218269,38.894591,38.9153137,38.865108,38.9072418,38.899101,38.8933403,38.850832,38.8508213,38.8493,38.8507401,38.9173591,38.9173591,38.8752602,38.875279,38.875279,38.875279,38.875279,38.87916,38.918994,38.9172229,38.917846,38.8650284,38.8992003,38.9029614,38.917239,38.917239,38.917239,38.917239,38.85106,38.916894,38.9331865,38.896293,38.9174742,38.8812663,38.8860601,38.8763901,38.8763901,38.9424706,38.903387,38.879317,38.9465828,38.900062,38.9389097,38.96519,38.900777,38.927574,38.9438896,38.9159508,38.927588,38.912212,38.8802643,38.8941231,38.9564882,38.8997474,38.899708,38.882919,38.9421156,38.886596,38.896535,38.924705,38.9314203,38.900205,38.9025,38.9197006,38.9192069,38.900361,38.8390388,38.827705,38.8263448,38.9090424,38.9015045,38.905789,38.9547195,38.9303498,38.9358788,38.9302063,38.92481,38.9249495,38.9272421,38.9486198,38.922008,38.9192062,38.9477043,38.9459762,38.918983,38.92591,38.9169693,38.9153183,38.9213219,38.9369507,38.93695,38.9431161,38.9432978,38.932869,38.960227,38.960227,38.918872,38.9375992,38.9759604,38.9759604,38.9062042,38.978414,38.9299511,38.8993301,38.983803,38.9441488,38.9289513,38.9289513,38.9450701,38.9450701,38.9173813,38.907108,38.907108,38.8943642,38.9180649,38.9278297,38.962664,38.962664,38.939118,38.9124403,38.9116799,38.9396098,38.94099,38.958434,38.9057784,38.95119,38.957022,38.947488,38.963676,38.934886,38.9424438,38.9434128,38.9534645,38.9534645,38.9534645,38.9431241,38.956975,38.9498276,38.9072914,38.923719,38.9511871,38.9503098,38.949939,38.9512412,38.9544754,38.906723,38.899335,38.929875,38.9172173,38.9289322,38.9247704,38.902918,38.9015312,38.9283714,38.9034004,38.9052963,38.90525,38.923594,38.923594,38.923594,38.911323,38.9066582,38.9066582,38.906658,38.9182663,38.9484901,38.9420433,38.943167,38.9452858,38.900504,38.95866,38.9322319,38.9322319,38.9824448,38.932231,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.8809827,38.892077,38.9395218,38.8920797,38.9171463,38.9015503,38.9013997,38.9602936,38.9649364,38.9268581,38.9240265,38.942924,38.9772371,38.9665451,38.941978,38.9723407,38.9239101,38.882262,38.9267311,38.919098,38.9389114,38.902,38.9071953,38.9351197,38.887569,38.8185654,38.9028397,38.9170551,38.9208984,38.9209,38.9546979,38.9450493,38.942971,38.9206452,38.92499,38.966167,38.966167,38.9650459,38.9650459,38.9235829,38.9639548,38.9644279,38.9243011,38.9234803,38.9234803,38.931304,38.9052111,38.9237137,38.9237137,38.9237137,38.9028206,38.9028206,38.9028206,38.9023552,38.9036936,38.9028092,38.897068,38.9038774,38.9038774,38.897068,38.9011427,38.9131432,38.9228862,38.899295,38.911293,38.906875,38.9010887,38.9010887,38.9148293,38.9164963,38.9416924,38.9577446,38.9272387,38.9095952,38.986249,38.9070202,38.9333106,38.962551,38.9027777,38.9923225,38.9677354,38.9127474,38.9808246,38.897699,38.90134,38.9198982,38.9056503,38.8987054,38.91261,38.9334273,38.9148302,38.9191499,38.9191499,38.9170001,38.9763908,38.923941,38.9757465,38.9826733,38.93812,38.927632,38.8839559,38.9488564,38.8970566,38.9362898,38.9362898,38.917717,38.917965,38.9638965,38.9597163,38.956086,38.957518,38.9661301,38.893803,38.9142876,38.9575148,38.9020072,38.8962673,38.910511,38.935454,38.9191251,38.9290314,38.9290314,38.9290298,38.92966,38.921105,38.9361913,38.91434,38.9294205,38.9294205,38.9225402,38.9225402,38.954761,38.954761,38.932004,38.932004,38.9199295,38.9318539,38.9318702,38.9211235,38.9211235,38.9325502,38.921277,38.921179,38.9183429,38.920885,38.9590243,38.9550209,38.9286898,38.9286898,38.9708474,38.9247597,38.9292107,38.9292107,38.9292107,38.9292107,38.992109,38.9265501,38.9389902,38.9874946,38.974965,38.9458322,38.907027,38.96241,38.975007,38.9670514,38.991412,38.962497,38.962497,38.962497,38.9921303,38.9085731,38.9275436,38.92603,38.91187,38.902151,38.9247456,38.9029399,38.9027901,38.9027901,38.9177497,38.9177497,38.9171288,38.9025202,38.8822651,38.9008699,38.8972798,38.9115498,38.9329599,38.897439,38.957691,38.884905,38.9309797,38.9302025,38.9300001,38.9308,38.8822724,38.934385,38.9300101,38.9300192,38.95502,38.9138641,38.9266891,38.9331818,38.9317187,38.9579124,38.905274,38.853733,38.9647446,38.956169,38.956169,38.9596358,38.919101,38.9164162,38.9560228,38.905439,38.905445,38.905445,38.9164848,38.9049952,38.9137726,38.932302,38.9087576,38.91366,38.914055,38.9108734,38.9049492,38.9049492,38.9166702,38.9235191,38.8936937,38.8961674,38.8961674,38.8997072,38.9030609,38.9030609,38.903358,38.9020946,38.912159,38.9028189,38.9027703,38.9029884,38.90889,38.915816,38.9046532,38.9073776,38.8920998,38.90963,38.91261,38.9138298,38.9114901,38.9026489,38.9055939,38.8828448,38.9106674,38.9257278,38.9282513,38.8997649,38.8997649,38.9241716,38.9265789,38.9273608,38.9273608,38.9166896,38.929409,38.92723,38.9167299,38.91261,38.9463997,38.897846,38.9243088,38.8875253,38.9737462,38.9016647,38.925802,38.9287605,38.93873,38.93873,38.901195,38.9591503,38.8920448,38.902874,38.902892,38.905503,38.9104462,38.9163628,38.913906,38.9038767,38.9056201,38.9096401,38.9145432,38.9139705,38.914402,38.9222908,38.9222908,38.8949812,38.91708,38.9074669,38.9413342,38.908703,38.906478,38.9671555,38.9253558,38.940697,38.9406967,38.940696,38.917189,38.9233703,38.949006,38.9002001,38.907497,38.9020691,38.902069,38.9040146,38.915802,38.9622116,38.9622116,38.935398,38.9463348,38.903695,38.9103442,38.902939,38.9013299,38.9013299,38.926386,38.902272,38.9025302,38.9079302,38.9079302,38.9065691,38.9155698,38.9489901,38.9191901,38.900207,38.909815,38.9045029,38.9196014,38.9196014,38.9418824,38.901285,38.901285,38.8843165,38.9373398,38.89548,38.93777,38.8876668,38.9002101,38.9002101,38.9002101,38.9283791,38.9295006,38.909442,38.909442,38.9105797,38.9552745,38.9552745,38.9633667,38.9691073,38.9676972,38.9560597,38.919738,38.969916,38.8986931,38.898693,38.895896,38.914711,38.907394,38.9210911,38.9210911,38.8932525,38.8997682,38.978575,38.9121721,38.939279,38.9201215,38.9112575,38.9112575,38.9043072,38.8849832,38.9178973,38.902524,38.902252,38.8961298,38.8973053,38.909568,38.956299,38.9347916,38.914217,38.919309,38.8974877,38.8974877,38.8974877,38.8984573,38.9027783,38.8962378,38.9142267,38.90375,38.90375,38.890628,38.890628,38.890628,38.890628,38.8983198,38.9002001,38.9026402,38.9037285,38.9037285,38.8887405,38.8887405,38.9037285,38.9008699,38.9140899,38.8998098,38.8920897,38.8875702,38.8998098,38.8875702,38.9041697,38.9379044,38.9029399,38.8848397,38.8848397,38.930189,38.898955,38.974502,38.918825,38.9003181,38.8943481,38.9162521,38.899543,38.9074669,38.907466,38.895775,38.9029198,38.9133268,38.906856,38.906856,38.89709,38.9125984,38.9146385,38.8945198,38.914651,38.909465,38.8995349,38.9012937,38.9347267,38.902787,38.902787,38.907377,38.8995798,38.9037399,38.9056597,38.90134,38.9096401,38.9096364,38.9101481,38.91777,38.912384,38.9096025,38.903038,38.903235,38.9099117,38.903001,38.903001,38.901226,38.895786,38.895786,38.895786,38.895786,38.895786,38.874591,38.958929,38.9153748,38.8989944,38.9048424,38.904323,38.900238,38.9032631,38.915377,38.9010506,38.892895,38.9024752,38.8997649,38.9154424,38.9178202,38.9155047,38.8946648,38.894664,38.894664,38.894664,38.894664,38.9101832,38.9020729,38.9091466,38.910351,38.9109535,38.9090805,38.912464,38.903868,38.9090762,38.8997173,38.9045151,38.9127474,38.9026508,38.9037399,38.9013299,38.8959997,38.9056597,38.9072402,38.91261,38.9280286,38.980862,38.9469337,38.9268951,38.9462662,38.946266,38.9398651,38.9048729,38.936439,38.9364357,38.9302475,38.935544,38.928978,38.906833,38.925979,38.9482398,38.9334601,38.93183,38.8920468,38.8920468,38.9495697,38.9175758,38.927657,38.9276733,38.9276733,38.92645,38.906574,38.925445,38.929388,38.898876,38.9377937,38.919017,38.919017,38.919017,38.919017,38.9212074,38.908485,38.90595,38.9154424,38.9154424,38.8875172,38.9129003,38.9747453,38.963895,38.8937379,38.9516907,38.8936565,38.8998098,38.8998098,38.89282,38.9025202,38.8983098,38.9035803,38.89282,38.879134,38.976613,38.955883,38.8994751,38.9398592,38.900615,38.9372997,38.935716,38.9148788,38.8972952,38.9088301,38.8920897,38.9088301,38.8875702,38.9170001,38.8920897,38.9181098,38.89939,38.9200618,38.906311,38.9089675,38.9105869,38.884609,38.884609,38.889386,38.9451941,38.9050789,38.883284,38.950803,38.913925,38.9337961,38.9357702,38.9073736,38.8959999,38.8959999,38.909159,38.907886,38.9162578,38.910781,38.9227849,38.90939,38.9075279,38.9075279,38.907527,38.924537,38.9101,38.9819908,38.9101982,38.92121,38.9209976,38.9099159,38.920791,38.905375,38.905375,38.9051056,38.9115791,38.92184,38.909433,38.938505,38.8804588,38.9199219,38.9090538,38.880866,38.8961546,38.964661,38.901008,38.8999801,38.9201431,38.9085884,38.9452515,38.894996,38.894996,38.894996,38.8995747,38.8959427,38.940601,38.9169551,38.892005,38.892005,38.898742,38.9480553,38.9368591,38.9256058,38.9452133,38.904636,38.930994,38.9411493,38.914404,38.912578,38.9050099,38.906639,38.906639,38.9048233,38.9147758,38.9065933,38.9392815,38.9594307,38.9139862,38.9139862,38.951124,38.9497961,38.9141368,38.9140785,38.936064,38.9036903,38.9608269,38.9365044,38.9383698,38.9346403,38.9610098,38.9050602,38.9117503,38.8926765,38.8995342,38.909005,38.9027884,38.916645,38.8959836,38.9176438,38.876084,38.9166702,38.919659,38.9002113,38.9026503,38.913359,38.9090299,38.9037399,38.9168002,38.9168002,38.903741,38.9200592,38.876169,38.876169,38.876169,38.904444,38.9057482,38.899411,38.9275888,38.965367,38.962643,38.8972966,38.9155249,38.9169551,38.8973864,38.9552866,38.9323799,38.9276397,38.9450527,38.9651088,38.9497406,38.99261,38.9171375,38.9014674,38.9001598,38.9037399,38.9048403,38.9111301,38.898742,38.935352,38.9090805,38.9090805,38.9090805,38.9090805,38.9252663,38.939598,38.93759,38.9247894,38.9109383,38.9105759,38.911377,38.9092216,38.914508,38.9125633,38.9232536,38.891742,38.891742,38.891742,38.9079666,38.9438376,38.9438376,38.904989,38.9049416,38.9049416,38.9049416,38.9049416,38.9059809,38.9027863,38.902786,38.9384079,38.9053164,38.9053164,38.9051802,38.942979,38.917246,38.9097299,38.9664536,38.9206599,38.9498699,38.9086249,38.906754,38.9327044,38.931991,38.9044098,38.9615135,38.8920448,38.9675302,38.916339,38.8809629,38.963962,38.8960849,38.9537354,38.89973,38.9342575,38.9038767,38.9038767,38.8920897,38.8920897,38.8920897,38.894715,38.9511714,38.9494286,38.8946546,38.9750099,38.9025202,38.9025202,38.895543,38.9437913,38.9443893,38.8924408,38.9442097,38.918061,38.9214914,38.919105,38.919105,38.919105,38.885421,38.9293052,38.9290003,38.9290003,38.9553798,38.9617958,38.9137298,38.9230411,38.877242,38.877242,38.877242,38.901075,38.9040337,38.9177752,38.8958549,38.8958549,38.895854,38.878027,38.9243701,38.9233437,38.895883,38.9006424,38.900642,38.8999863,38.9016151,38.9016151,38.901615,38.878079,38.878079,38.878079,38.9420477,38.9051895,38.9051895,38.9054642,38.906989,38.9423561,38.9054642,38.9094061,38.9682551,38.907417,38.9049072,38.926915,38.9058179,38.919933,38.902809,38.9609749,38.9051997,38.9353485,38.937027,38.937027,38.905022,38.9049034,38.906753,38.9052198,38.9363403,38.878079,38.878079,38.878079,38.878079,38.878079,38.878079,38.878079,38.878079,38.878079,38.878079,38.8973153,38.892018,38.894257,38.915331,38.9058876,38.9029352,38.8964,38.90134,38.9025302,38.9025307,38.9228859,38.905736,38.9248449,38.9482699,38.9156147,38.899158,38.931675,38.9232945,38.87911,38.87911,38.9060097,38.9489403,38.956332,38.956332,38.8844602,38.899811,38.899811,38.910247,38.9561999,38.9612694,38.9612694,38.9612699,38.9612699,38.953214,38.9552712,38.9552712,38.9676514,38.894869,38.9333534,38.9540903,38.8855705,38.951854,38.894058,38.966507,38.966507,38.982666,38.9689149,38.9689149,38.9675201,38.9518961,38.9519003,38.963116,38.9184418,38.964092,38.9363403,38.9363403,38.9348793,38.9730873,38.917843,38.9355898,38.9105715,38.9055023,38.906597,38.90664,38.9053767,38.8925504,38.9232116,38.9342044,38.907399,38.9309464,38.934535,38.934535,38.934535,38.934535,38.934535,38.934535,38.9044914,38.9044914,38.9335962,38.9050598,38.9050598,38.9284134,38.9360712,38.9094758,38.9052051,38.9052051,38.9053868,38.934784,38.9324315,38.934152,38.930733,38.9285698,38.9008559,38.9040413,38.9171486,38.8987054,38.903695,38.905071,38.9085518,38.9112675,38.9128319,38.9026301,38.8878403,38.9074707,38.9074707,38.9081688,38.9256703,38.9213715,38.9079247,38.8876419,38.8876419,38.926526,38.936441,38.936441,38.9254646,38.985627,38.9234848,38.916763,38.9039421,38.903942,38.9261457,38.937409,38.9330177,38.8996,38.919002,38.919033,38.923519,38.941575,38.932907,38.8949577,38.9097776,38.9267499,38.944882,38.8944702,38.9013299,38.903872,38.8973502,38.9010403,38.8813408,38.8898048,38.9806023,38.9551035,38.9839393,38.903876,38.9001799,38.9001799,38.9716588,38.9048798,38.9048798,38.8947498,38.9048798,38.9025202,38.9056503,38.9565399,38.9308939,38.9713597,38.899353,38.899353,38.8968544,38.929652,38.9072301,38.8822594,38.9488564,38.8875152,38.9051132,38.9057871,38.889429,38.9052092,38.9616127,38.9013082,38.8961298,38.8961298,38.894805,38.8876198,38.9025101,38.8451437,38.929667,38.9202844,38.896335,38.86301,38.86301,38.8792802,38.8231316,38.962717,38.9462978,38.839431,38.893062,38.9585099,38.8438904,38.8438904,38.8620782,38.8792976,38.8627,38.8627,38.8627,38.8627,38.8857101,38.885146,38.8419224,38.8948249,38.91983,38.8836803,38.899731,38.8875997,38.8875997,38.840248,38.8874622,38.9172991,38.9454193,38.9454193,38.9454193,38.9454193,38.9454193,38.9454193,38.9454193,38.9454193,38.84647,38.864196,38.874516,38.89964,38.870402,38.91295,38.8759918,38.89893,38.89893,38.9173199,38.9290103,38.9172321,38.897745,38.8989441,38.91684,38.9130398,38.9332924,38.934234,38.900173,38.8677025,38.8647158,38.9297905,38.89479,38.9051537,38.9051537,38.896084,38.9699201,38.942367,38.90537,38.90537,38.9273,38.8174787,38.9177316,38.9290504,38.9290504,38.940924,38.905504,38.9038606,38.9038606,38.897758,38.887481,38.909475,38.889926,38.889926,38.889843,38.889926,38.889926,38.889926,38.889843,38.8900892,38.891128,38.84023,38.86218,38.8871422,38.95964,38.8823117,38.862478,38.8974669,38.9025881,38.8842999,38.8811235,38.8825726,38.8874629,38.9047598,38.885905,38.8827563,38.896339,38.896339,38.827434,38.902763,38.827434,38.9218341,38.844968,38.863045,38.9341649,38.843929,38.9593887,38.8619799,38.9753608,38.8423061,38.9220399,38.9220399,38.830368,38.9020568,38.9038572,38.857305,38.8875702,38.924509,38.863893,38.847965,38.943042,38.894833,38.871868,38.9282112,38.877067,38.91941,38.8461817,38.856705,38.90754,38.8735416,38.8643188,38.9163939,38.844649,38.895405,38.9255876,38.8898199,38.9452591,38.900274,38.905576,38.890903,38.895839,38.9001551,38.9562884,38.9063187,38.882995,38.9002001,38.8990784,38.8985505,38.9057603,38.899067,38.8773859,38.875865,38.8783913,38.8246613,38.9518242,38.956615,38.886839,38.9002001,38.8770676,38.8611518,38.920791,38.8952637,38.885674,38.8623903,38.8623903,38.8623815,38.8435059,38.837568,38.8444023,38.843387,38.88573,38.908321,38.8635854,38.9329633,38.831872,38.856624,38.830072,38.925244,38.900328,38.9583588,38.9053693,38.884271,38.8860098,38.83222,38.8935797,38.8802692,38.8782824,38.885873,38.8950623,38.8629797,38.8629799,38.89014,38.89014,38.904166,38.8955841,38.862732,38.933351,38.892322,38.9017105,38.8605423,38.9284672,38.8754875,38.926774,38.929287,38.879547,38.9296455,38.8697243,38.867131,38.8581772,38.8678513,38.8822441,38.920855,38.9198303,38.9243218,38.926606,38.885396,38.8619303,38.89629,38.8618049,38.8968272,38.8968272,38.8897896,38.893369,38.8821421,38.8592567,38.890922,38.917084,38.917084,38.8847542,38.884754,38.862412,38.889805,38.917797,38.8636576,38.8887861,38.888623,38.8876252,38.8983002,38.916993,38.916993,38.88473,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.95031,38.87445,38.919025,38.913936,38.913936,38.909782,38.912754,38.8178408,38.893498,38.8949288,38.8897998,38.8898467,38.9256234,38.9154182,38.9207746,38.9207746,38.9348679,38.916906,38.877829,38.853544,38.890402,38.9208641,38.920224,38.865366,38.93428,38.899457,38.90675,38.9026375,38.9026375,38.8848839,38.882014,38.8948326,38.8811913,38.8811913,38.8811913,38.8811913,38.8811913,38.888605,38.903465,38.8897099,38.899468,38.8959172,38.9019012,38.8863582,38.8861627,38.898567,38.8900146,38.89888,38.89888,38.896189,38.8943897,38.892112,38.8149438,38.9061774,38.9039176,38.912106,38.9062055,38.9062055,38.9062055,38.9062055,38.9156697,38.8961197,38.9156697,38.9062699,38.9148302,38.921306,38.909988,38.8306122,38.902492,38.902492,38.912349,38.9547424,38.908144,38.956892,38.8729635,38.8764203,38.9108543,38.8793097,38.8959199,38.9498215,38.9037285,38.931538,38.9155302,38.8613704,38.8604507,38.8614578,38.8612831,38.900696,38.9281578,38.925819,38.836722,38.8979899,38.8919999,38.89639,38.913158,38.8937531,38.919222,38.8625755,38.862577,38.922824,38.8360558,38.9049026,38.8777757,38.8962,38.8998413,38.894737,38.9465561,38.8764799,38.8903698,38.9095116,38.901722,38.897265,38.8986725,38.8785057,38.8761787,38.8761787,38.8761787,38.8760227,38.884761,38.884761,38.8923586,38.902924,38.8901024,38.8901024,38.89327,38.8849899,38.885685,38.8861969,38.896514,38.8885689,38.880909,38.881837,38.888529,38.8971405,38.8795396,38.896436,38.887978,38.903808,38.88031,38.88031,38.88031,38.88031,38.909887,38.916552,38.9699707,38.9553215,38.8562889,38.8321114,38.874435,38.914333,38.961115,38.9005089,38.9005089,38.919471,38.907478,38.966682,38.8772278,38.9040565,38.91896,38.9114151,38.9640507,38.907145,38.9214516,38.91896,38.91896,38.9425501,38.9002912,38.8798523,38.8798523,38.8533399,38.8533399,38.8533399,38.8464088,38.8942986,38.9193061,38.835203,38.879491,38.9427986,38.942745,38.9226703,38.8445282,38.8535078,38.8535078,38.909107,38.86361,38.8462783,38.922034,38.86156,38.9000552,38.881666,38.9089962,38.8651858,38.9217033,38.8688752,38.903044,38.886833,38.8669815,38.8874397,38.900201,38.8788302,38.8788302,38.9087127,38.9168901,38.903467,38.8998601,38.8998735,38.8685036,38.901916,38.9244573,38.900022,38.9337498,38.902624,38.919414,38.919414,38.919414,38.883874,38.883874,38.903588,38.9244412,38.932994,38.9443855,38.853932,38.920902,38.8805678,38.8927307,38.9251674,38.8593979,38.8990688,38.895475,38.89899,38.883132,38.883132,38.8800812,38.889878,38.9105587,38.8899225,38.889458,38.8740841,38.9098674,38.9098674,38.9098674,38.9015224,38.902101,38.8995819,38.8874207,38.886985,38.9028695,38.9072113,38.9072113,38.9072113,38.9072113,38.907329,38.874286,38.8821696,38.911136,38.911136,38.911136,38.8814997,38.9143219,38.9551277,38.8764773,38.8764773,38.9613228,38.9140798,38.907372,38.907372,38.9225073,38.9078718,38.9595278,38.87994,38.87994,38.87994,38.87994,38.8793007,38.872032,38.872032,38.90723,38.9073323,38.9072328,38.9073296,38.9073296,38.9073296,38.90963,38.90733,38.9569449,38.9002115,38.899814,38.87074,38.9157066,38.857878,38.867453,38.9611216,38.8451996,38.9329331,38.844776,38.9058535,38.894944,38.889247,38.8934798,38.8875903,38.9260788,38.8928719,38.9162926,38.866935,38.836959,38.9001498,38.903892,38.8976466,38.8946962,38.8952408,38.9020434,38.9020434,38.9005648,38.8929071,38.879097,38.9020271,38.901187,38.9013782,38.9014587,38.9014587,38.8850212,38.896021,38.9029594,38.892455,38.8817498,38.9059486,38.9059486,38.891739,38.906535,38.8998909,38.8998909,38.902922,38.8899252,38.8975199,38.8941101,38.8999825,38.8981056,38.891628,38.8802377,38.9029884,38.8926315,38.911294,38.9074478,38.92666,38.9056462,38.9555401,38.9555401,38.9266638,38.9266638,38.909245,38.8950998,38.9002201,38.9025213,38.9056545,38.9056545,38.8764699,38.9568866,38.8838873,38.9037321,38.9107789,38.914151,38.914151,38.870113,38.8764737,38.8728328,38.840786,38.840786,38.840786,38.907352,38.887913,38.9143319,38.9136627,38.921812,38.9326601,38.8672558,38.912281,38.9463501,38.869128,38.8920137,38.871127,38.94287,38.8897897,38.8811235,38.8896523,38.885524,38.8325024,38.832759,38.832759,38.91468,38.90115,38.9135628,38.913562,38.9147772,38.9147772,38.911745,38.901715,38.9018059,38.8571955,38.8321055,38.9414102,38.8711121,38.9097137,38.909713,38.9453094,38.8669863,38.9014372,38.879383,38.848308,38.8560449,38.8673515,38.867351,38.915222,38.921779,38.895227,38.8994296,38.8994296,38.8994296,38.8642883,38.8976365,38.864059,38.864059,38.8680229,38.901396,38.8677177,38.901635,38.901635,38.901635,38.865699,38.8934489,38.9023891,38.9023891,38.9023719,38.892544,38.9039116,38.903911,38.9482746,38.825779,38.9247589,38.928611,38.9075928,38.917327,38.917327,38.9261246,38.9220619,38.910739,38.8451082,38.907402,38.9470787,38.833833,38.946991,38.8329277,38.925495,38.8354146,38.9170403,38.9098473,38.8450794,38.830651,38.9157032,38.8792738,38.8919999,38.8968198,38.8898097,38.8770553,38.8763425,38.8744723,38.883049,38.948285,38.9208488,38.93269,38.932988,38.8412203,38.8909377,38.9327037,38.8903694,38.932628,38.913853,38.9285899,38.861251,38.869117,38.92366,38.92366,38.92366,38.862446,38.856453,38.8637998,38.9524421,38.8638903,38.9419178,38.8823801,38.887731,38.8858864,38.8902068,38.8875313,38.8881264,38.8952293,38.8952293,38.862106,38.895638,38.895638,38.8893394,38.8893394,38.887747,38.896901,38.904515,38.8903503,38.888057,38.888057,38.884907,38.885689,38.8933525,38.8933525,38.8933525,38.8933525,38.9002631,38.865551,38.895255,38.89528,38.8952608,38.893203,38.883256,38.8952217,38.8952217,38.8952217,38.8952217,38.8998695,38.8998695,38.8961983,38.833279,38.8260497,38.9305,38.9305,38.9305,38.9305,38.9305,38.8850798,38.845172,38.845172,38.845172,38.9432589,38.9432589,38.8285828,38.9083443,38.869426,38.8920602,38.8197556,38.835101,38.9590302,38.944031,38.89744,38.89744,38.89744,38.881015,38.8250265,38.88328,38.88923,38.8875903,38.940731,38.940731,38.9407302,38.90273,38.9388798,38.9124249,38.8722115,38.8722115,38.8904046,38.882356,38.882356,38.9463133,38.923597,38.893806,38.894911,38.891881,38.9064751,38.9204755,38.839727,38.8563547,38.8647232,38.8718,38.9407302,38.907719,38.9143749,38.9143749,38.928609,38.9171944,38.936561,38.9082,38.9096184,38.90962,38.8975029,38.8975029,38.8975029,38.9554911,38.9554046,38.8876138,38.88791,38.8764259,38.9025202,38.8737717,38.90847,38.8883071,38.8896623,38.888842,38.909702,38.8876574,38.835823,38.9094537,38.8312244,38.9089508,38.9089508,38.90895,38.90895,38.8725891,38.8725891,38.8725891,38.8725891,38.872589,38.860809,38.8568193,38.8719255,38.8753166,38.860433,38.8717097,38.8717365,38.924631,38.924631,38.9252224,38.9252224,38.9251461,38.9252197,38.8752556,38.8766098,38.918449,38.8611298,38.861129,38.8698502,38.8772,38.861698,38.8557317,38.8958918,38.9449782,38.9089012,38.9089012,38.9088998,38.9089035,38.9089001,38.9258995,38.909164,38.929729,38.8964806,38.929601,38.887619,38.9639012,38.9644814,38.9638033,38.964614,38.92249,38.833416,38.8937172,38.8875997,38.8909518,38.8310929,38.9186798,38.9185403,38.9186805,38.86205,38.8520966,38.9193382,38.8685352,38.917977,38.917977,38.9200202,38.8979068,38.9340897,38.8678474,38.8736,38.8544429,38.8544793,38.8740768,38.8609406,38.845979,38.8605858,38.860122,38.8533889,38.868538,38.8727657,38.8605523,38.871358,38.8745736,38.8561783,38.9278984,38.8588598,38.859584,38.922861,38.8744629,38.873188,38.876419,38.845088,38.9463034,38.9653625,38.8601198,38.909455,38.8921509,38.9083305,38.887179,38.8411789,38.8411789,38.8862686,38.8857651,38.9307213,38.885209,38.880628,38.8434639,38.864769,38.864769,38.864769,38.9569201,38.9567184,38.9567184,38.89925,38.8615417,38.9582558,38.8277543,38.9199498,38.8512136,38.9175902,38.9332482,38.8570835,38.8745232,38.8745232,38.8745232,38.8516083,38.8516083,38.917686,38.9175137,38.9176521,38.8962572,38.9306699,38.9013599,38.8819792,38.8869499,38.8869499,38.9013098,38.8775099,38.91259,38.9191918,38.9191901,38.9078202,38.9025537,38.8871545,38.89632,38.89632,38.877845,38.8268852,38.908988,38.908988,38.841917,38.887844,38.959034,38.894645,38.862169,38.9013115,38.893821,38.860305,38.9044418,38.8751757,38.875279,38.875279,38.875279,38.875279,38.875279,38.875279,38.875279,38.892869,38.8949928,38.8650284,38.9256147,38.917239,38.9196883,38.85106,38.9331865,38.9331101,38.9331101,38.917742,38.9333038,38.9183693,38.876372,38.9173501,38.881284,38.8860601,38.8744931,38.9583047,38.9578705,38.9546471,38.9140798,38.9140798,38.9140798,38.8941231,38.894314,38.894314,38.8284016,38.910949,38.9137306,38.9137306,38.91373,38.9047839,38.9723401,38.8829193,38.8862343,38.9035835,38.8437121,38.933444,38.929872,38.9013101,38.9224966,38.9255798,38.9196997,38.9196997,38.9196997,38.9197006,38.822444,38.8465203,38.8419069,38.8777008,38.919933,38.8901672,38.9102058,38.9057884,38.888091,38.839873,38.843685,38.822875,38.9547195,38.9547195,38.9296112,38.9303199,38.9357098,38.92481,38.9249802,38.9275017,38.9230194,38.92746,38.9455299,38.924934,38.9191297,38.949307,38.929635,38.9432373,38.945537,38.952449,38.917443,38.946205,38.9415832,38.9344901,38.891113,38.9098614,38.9572258,38.9353544,38.960227,38.918872,38.9590303,38.952925,38.9084778,38.9796066,38.9796066,38.9784622,38.978462,38.9758445,38.914557,38.9608269,38.951327,38.9847075,38.90134,38.8993301,38.89933,38.9441185,38.983803,38.983803,38.983803,38.9451961,38.920084,38.9167671,38.9260445,38.907108,38.907108,38.907108,38.980657,38.959693,38.9124403,38.9299774,38.9366798,38.936659,38.9616545,38.9616545,38.956272,38.95721,38.958434,38.91066,38.910514,38.9549026,38.908683,38.9534645,38.9546549,38.9302348,38.951816,38.9071159,38.9499397,38.9499397,38.94023,38.9094,38.948529,38.961238,38.910279,38.936182,38.9335708,38.929875,38.9352188,38.9312553,38.8998641,38.917786,38.9149323,38.914932,38.914932,38.9289322,38.9041563,38.903921,38.9247704,38.9233589,38.92744,38.902658,38.9034,38.9034,38.925964,38.925964,38.925918,38.9140405,38.9133759,38.9099808,38.9095784,38.925474,38.910045,38.9066582,38.9150238,38.9059944,38.906666,38.911324,38.9262597,38.917247,38.907209,38.9157181,38.9322319,38.9322319,38.932231,38.9288025,38.9288025,38.9288025,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9022026,38.9567795,38.8946573,38.9016746,38.9268398,38.9108598,38.8801231,38.897344,38.92961,38.9430457,38.9277077,38.9349976,38.9164259,38.966877,38.9269829,38.882747,38.9701653,38.941976,38.9407638,38.9170101,38.9420258,38.8953171,38.9397418,38.9449185,38.969173,38.94754,38.906016,38.9449768,38.9462898,38.9435425,38.9425201,38.9416428,38.9416428,38.9224167,38.918918,38.945294,38.9460297,38.9431697,38.9314297,38.944785,38.9249649,38.966167,38.9384302,38.9114761,38.9630449,38.8990936,38.9257927,38.905254,38.905254,38.8998375,38.906986,38.900898,38.9237137,38.9237137,38.9237137,38.896511,38.9028206,38.902128,38.927208,38.9023552,38.9036936,38.9132042,38.9132042,38.9028092,38.9038774,38.9034615,38.9058914,38.9118234,38.9010887,38.9119055,38.9115448,38.9115448,38.9234199,38.969924,38.9864044,38.902443,38.9272387,38.935203,38.935203,38.9155249,38.90956,38.9231953,38.9841472,38.922601,38.9856539,38.93755,38.9192598,38.9921167,38.9273373,38.9279871,38.9111301,38.9921693,38.937576,38.907018,38.907018,38.9521565,38.9526178,38.9170001,38.9386797,38.93812,38.93812,38.93812,38.9172592,38.9361712,38.9185851,38.9344025,38.8961747,38.9660838,38.934625,38.9331131,38.9331131,38.9331131,38.9339714,38.9699096,38.9073639,38.913879,38.9087944,38.913879,38.913879,38.913879,38.8997649,38.884844,38.892202,38.9026543,38.8962673,38.9631964,38.910511,38.910511,38.9229355,38.9250145,38.9296722,38.9611258,38.9221725,38.9274848,38.9286697,38.9286697,38.930667,38.9263181,38.9155159,38.9351807,38.9294205,38.9294205,38.9307176,38.934588,38.9323128,38.9373299,38.9590243,38.9338036,38.9647102,38.992098,38.9332987,38.9631984,38.9292107,38.9292107,38.9292107,38.9292107,38.9292107,38.9292107,38.9771875,38.9722721,38.9874946,38.9334273,38.96082,38.9888497,38.9638402,38.9856398,38.9286697,38.962497,38.902104,38.923623,38.9633026,38.9666214,38.90644,38.9029399,38.9041697,38.9020997,38.9008699,38.8998098,38.9115498,38.8972798,38.8939599,38.9329599,38.8920897,38.91699,38.9362297,38.902895,38.925056,38.9311409,38.889333,38.931943,38.9330202,38.9330202,38.931149,38.940547,38.9785423,38.938911,38.9290237,38.920383,38.919814,38.9347764,38.9316711,38.9316711,38.9560329,38.9056244,38.954895,38.9152489,38.9546925,38.9474144,38.904296,38.9136104,38.9432703,38.9176814,38.9049952,38.9306183,38.9248695,38.9449232,38.905055,38.9029942,38.903695,38.8997072,38.8997072,38.8970166,38.9030609,38.9030609,38.9028189,38.9028062,38.9096401,38.9233732,38.896486,38.8959042,38.9110952,38.903892,38.9097675,38.90963,38.9138298,38.9138298,38.915432,38.9376397,38.9376397,38.884837,38.902957,38.9158173,38.8997649,38.899938,38.90736,38.9273608,38.925273,38.897846,38.946399,38.9225349,38.9304657,38.898943,38.8951416,38.938584,38.896989,38.9190559,38.9799194,38.905033,38.9138412,38.901562,38.9064283,38.908313,38.902914,38.897699,38.901378,38.9111326,38.909813,38.900167,38.9104462,38.9104462,38.910539,38.902246,38.913906,38.913906,38.8970566,38.9211884,38.9211884,38.900404,38.900917,38.900917,38.9095952,38.893619,38.900817,38.898458,38.9167659,38.9027877,38.9008277,38.9008277,38.9038767,38.9127474,38.9126091,38.9140597,38.914402,38.8084504,38.8084504,38.9093933,38.9074669,38.9130898,38.9264656,38.9064789,38.902523,38.902523,38.9283104,38.8964101,38.8964101,38.9020691,38.9020691,38.9249458,38.923449,38.9622116,38.901577,38.901577,38.901576,38.903695,38.9169551,38.9182379,38.902272,38.9025302,38.9025302,38.9025302,38.9025302,38.9409828,38.931568,38.9354973,38.92293,38.9166946,38.9005089,38.9053726,38.9196014,38.9196014,38.9196014,38.9370651,38.963603,38.9001652,38.9001652,38.8965476,38.8974977,38.91935,38.9373398,38.8920858,38.917233,38.9387185,38.931989,38.9530376,38.9633667,38.9620397,38.9639997,38.8986931,38.8949661,38.9166946,38.9166946,38.8997682,38.9162879,38.978575,38.939279,38.933638,38.8934845,38.9127474,38.8962673,38.914226,38.8999473,38.9026583,38.8849832,38.9199977,38.8875537,38.8933899,38.91261,38.8961298,38.8972798,38.9020997,38.91112,38.9001551,38.8982736,38.901254,38.920254,38.911785,38.968805,38.919953,38.9014775,38.9003375,38.8977713,38.8956577,38.8932867,38.884889,38.963347,38.890628,38.890628,38.890628,38.890628,38.890628,38.8886102,38.9026402,38.8983198,38.9170001,38.8972798,38.9037285,38.9037285,38.8887405,38.8998098,38.8875702,38.8875702,38.89479,38.9140899,38.8920897,38.8920897,38.8920897,38.9056402,38.8875702,38.8998098,38.9189812,38.8905401,38.8855901,38.9628754,38.8994732,38.8205352,38.9615288,38.8831224,38.974835,38.888614,38.927547,38.899234,38.941029,38.9372215,38.9001923,38.876996,38.947887,38.9216766,38.9712758,38.9477503,38.892075,38.8772542,38.975724,38.885143,38.9029198,38.901335,38.917737,38.931582,38.920089,38.909642,38.906856,38.906856,38.9051971,38.9020729,38.9099007,38.91261,38.8976517,38.909802,38.902279,38.916454,38.8959655,38.9012937,38.9038774,38.9097776,38.90134,38.9085699,38.923156,38.9188971,38.9223337,38.9186999,38.9090843,38.9269095,38.93493,38.9759416,38.901867,38.928131,38.903234,38.9032189,38.901226,38.901226,38.887287,38.9766102,38.9191197,38.895786,38.895786,38.895786,38.895786,38.874591,38.9325227,38.9582405,38.976017,38.914234,38.9501266,38.904018,38.9032631,38.903263,38.8847867,38.892895,38.963082,38.9096501,38.894664,38.894664,38.9040298,38.910351,38.897895,38.9090805,38.9090805,38.9124641,38.9210998,38.910993,38.9153557,38.903868,38.915775,38.8922272,38.8961365,38.9112776,38.9037399,38.8959997,38.8959997,38.8960011,38.9056597,38.9026503,38.969916,38.9039612,38.91962,38.91192,38.928154,38.89991,38.936778,38.9451981,38.936247,38.932907,38.93161,38.940745,38.941834,38.909799,38.924232,38.9483779,38.9075737,38.9362503,38.9439999,38.8920468,38.902782,38.9432797,38.9175758,38.9175758,38.9231262,38.9021378,38.9021378,38.902137,38.976457,38.938113,38.917444,38.917444,38.9182625,38.919017,38.919017,38.919017,38.919017,38.919017,38.918262,38.923005,38.962782,38.908485,38.9237599,38.9154424,38.9589539,38.894711,38.8812704,38.8943796,38.8922372,38.9026583,38.8974769,38.9132275,38.8848303,38.9583302,38.9037094,38.8961298,38.9025202,38.9035803,38.9096401,38.892549,38.892549,38.9543103,38.9454765,38.927845,38.9064522,38.8920347,38.974738,38.893982,38.908718,38.8949966,38.8961003,38.9170001,38.9111301,38.89939,38.9155698,38.9200598,38.906311,38.906311,38.906311,38.906311,38.9092178,38.9058997,38.883284,38.883284,38.8800852,38.91503,38.9058072,38.9065904,38.9087143,38.951885,38.93574,38.932136,38.89714,38.912421,38.9222639,38.9184647,38.9106674,38.9311752,38.8959999,38.909159,38.922184,38.9297681,38.9227849,38.90939,38.90939,38.9075279,38.9226703,38.90761,38.894748,38.894748,38.9101982,38.9068794,38.9087715,38.920791,38.9207129,38.902524,38.9020882,38.9272441,38.921614,38.9647484,38.917305,38.880866,38.8834267,38.918282,38.9085884,38.894996,38.894996,38.894996,38.894996,38.894996,38.894996,38.8808925,38.964296,38.9169551,38.9399567,38.898742,38.9035149,38.9035149,38.925178,38.9265442,38.9361076,38.9345149,38.9522061,38.9522061,38.9522061,38.914404,38.90521,38.9592247,38.9050099,38.9050099,38.906639,38.9430195,38.9590187,38.9039297,38.9145851,38.9051206,38.913981,38.944561,38.9053154,38.904651,38.9140201,38.9137298,38.9365044,38.9481773,38.9087409,38.9087409,38.9050602,38.9050602,38.9127702,38.904847,38.905246,38.9036259,38.9586199,38.90332,38.9469299,38.9469299,38.917957,38.8996039,38.914348,38.9171219,38.9186771,38.8944675,38.9003476,38.8974977,38.9014775,38.9073877,38.9167023,38.916645,38.8959903,38.9002113,38.905055,38.876169,38.876169,38.876169,38.987248,38.914256,38.9056148,38.9387977,38.9362798,38.923775,38.9407899,38.9386583,38.9257501,38.9572725,38.9869293,38.9001598,38.916999,38.9013299,38.9170001,38.8973401,38.8973401,38.8983098,38.9048403,38.9013299,38.913272,38.9010124,38.892004,38.9033813,38.8978348,38.914348,38.910938,38.9117699,38.9052661,38.90513,38.9466754,38.9053116,38.9455663,38.9136399,38.9232536,38.9103214,38.909353,38.944845,38.9438376,38.9284075,38.933653,38.905014,38.904941,38.9059809,38.902786,38.9053164,38.9053164,38.90479,38.9051802,38.9580307,38.9664536,38.943256,38.8821094,38.905853,38.949536,38.9569588,38.9578018,38.9010048,38.9010048,38.9033852,38.9615135,38.961513,38.8920448,38.8920448,38.9624405,38.9615252,38.916339,38.916339,38.9235268,38.9041061,38.9568214,38.962379,38.9100505,38.8875702,38.8875702,38.943161,38.9038767,38.8920897,38.884711,38.914872,38.879204,38.8875233,38.9013199,38.895543,38.8792701,38.931419,38.914287,38.9412003,38.9147799,38.973967,38.9287491,38.9287491,38.9220735,38.9521303,38.9238699,38.93056,38.919105,38.919105,38.9203602,38.9140899,38.9128304,38.9127464,38.9138185,38.9137298,38.8920327,38.877242,38.877242,38.877242,38.9302979,38.9302979,38.9174949,38.927832,38.898949,38.9053383,38.9051743,38.8958549,38.926607,38.9130287,38.9130287,38.8879598,38.878027,38.878027,38.878027,38.878027,38.9174271,38.9016151,38.9016151,38.9016,38.9016,38.878079,38.878079,38.878079,38.878079,38.940717,38.9411359,38.932453,38.903226,38.9050331,38.9049072,38.9049072,38.9049072,38.904907,38.905531,38.9055008,38.9034309,38.9187355,38.9609749,38.9175911,38.9051997,38.9051997,38.937027,38.9126205,38.9058762,38.9067869,38.892385,38.911017,38.935767,38.9363403,38.878079,38.878079,38.878079,38.878079,38.878079,38.878079,38.878079,38.878079,38.878079,38.878079,38.8934778,38.9012951,38.8982742,38.9250874,38.886934,38.8958334,38.8922272,38.9044609,38.891175,38.9025307,38.9146538,38.924583,38.8789307,38.9231075,38.9294243,38.924822,38.9341253,38.87911,38.899811,38.9096501,38.8983098,38.8875693,38.9562062,38.9650688,38.9612694,38.9676514,38.967651,38.9399071,38.9649422,38.9496848,38.9853711,38.966507,38.8987312,38.9675201,38.9514378,38.9184418,38.9676522,38.9363403,38.892484,38.9410199,38.902922,38.9052815,38.9051916,38.9052399,38.9232577,38.934535,38.934535,38.934535,38.9233475,38.9044914,38.9166603,38.9050598,38.9052051,38.9052051,38.9053868,38.9049697,38.9324315,38.916026,38.900678,38.931602,38.899906,38.9025101,38.918269,38.9040413,38.9113846,38.9124374,38.9035025,38.9232635,38.9257317,38.9257317,38.903695,38.9064617,38.902904,38.9004974,38.9027676,38.9085518,38.9112675,38.9315028,38.9232084,38.928882,38.928882,38.913837,38.921371,38.886942,38.9110851,38.9110851,38.9029388,38.8876419,38.907507,38.9234848,38.9039421,38.9261826,38.935733,38.9261457,38.9261457,38.9261457,38.9309616,38.9100456,38.9309616,38.9309616,38.9690678,38.9020958,38.9509213,38.9485054,38.948505,38.9507899,38.9507899,38.967701,38.919002,38.9418333,38.9014674,38.9057878,38.9026402,38.9014674,38.9014674,38.9014674,38.8999573,38.9304466,38.9039324,38.9096401,38.9106198,38.9025302,38.909599,38.903872,38.903872,38.9146297,38.96315,38.96315,38.903876,38.8948873,38.9001799,38.9001799,38.950592,38.9556051,38.9085671,38.899353,38.9058266,38.9485797,38.9067612,38.929652,38.929652,38.905369,38.91328,38.8875152,38.8920428,38.9051132,38.9051132,38.8972952,38.9014667,38.8995285,38.8995285,38.883221,38.8920998,38.882456,38.9103797,38.841915,38.8294792,38.9004478,38.86301,38.895245,38.8796946,38.920742,38.920389,38.893062,38.8437805,38.9004364,38.858693,38.894881,38.8430998,38.924511,38.8860199,38.8857101,38.831239,38.9002101,38.8614426,38.9002537,38.861766,38.9062209,38.8853601,38.88454,38.8875997,38.8875997,38.8875997,38.9454851,38.8874622,38.9172991,38.9172991,38.9454193,38.9454193,38.9454193,38.9454193,38.847263,38.892986,38.890152,38.871845,38.8649406,38.870971,38.9020421,38.9130398,38.9130398,38.929447,38.924835,38.92475,38.919295,38.919295,38.9007835,38.8876547,38.8876547,38.9051537,38.95657,38.896084,38.896084,38.905771,38.9566968,38.895439,38.90537,38.8135534,38.9194489,38.9578171,38.9160224,38.914645,38.8875152,38.8875152,38.9140686,38.9506378,38.9055524,38.9055524,38.889926,38.889926,38.889926,38.889926,38.889926,38.9059296,38.8900892,38.9014626,38.926411,38.86218,38.9003368,38.8920099,38.8935703,38.8843138,38.9155497,38.9217782,38.9217782,38.8827563,38.8920549,38.884197,38.9324483,38.887367,38.827434,38.827434,38.9506493,38.8622233,38.8605697,38.8615074,38.938005,38.909412,38.8907204,38.878859,38.9220399,38.9226494,38.8851998,38.8933302,38.9223598,38.8876178,38.8863525,38.843967,38.877067,38.9194107,38.9194107,38.91941,38.877025,38.8849014,38.8849014,38.9461698,38.946408,38.9163939,38.9163939,38.8991508,38.8991508,38.89915,38.8987503,38.8898201,38.8898199,38.905576,38.8764001,38.8958397,38.906021,38.9001551,38.956248,38.9291687,38.8920368,38.882995,38.9101868,38.9002001,38.9002001,38.9002001,38.9562662,38.8872795,38.8920797,38.9160995,38.8773859,38.9502754,38.9014419,38.957962,38.9061966,38.871593,38.871593,38.9515,38.9003194,38.956929,38.9002001,38.833488,38.91983,38.899704,38.8637924,38.896797,38.9109039,38.82484,38.8431511,38.8623903,38.8623903,38.8623903,38.8857307,38.8857307,38.8454628,38.840742,38.905771,38.8914975,38.8453217,38.858873,38.8459167,38.927757,38.8289881,38.8586349,38.881269,38.8922098,38.8898098,38.8973439,38.8935797,38.879583,38.883799,38.9028053,38.8991089,38.8847579,38.8847579,38.9490089,38.890642,38.840572,38.921545,38.8437309,38.912311,38.887713,38.84488,38.9028053,38.870635,38.8774605,38.8519388,38.8563118,38.8620262,38.917377,38.892508,38.9280701,38.8653412,38.9220762,38.869179,38.869893,38.8621216,38.8846817,38.8651924,38.8619303,38.93021,38.886977,38.8897896,38.8897896,38.8897896,38.8819954,38.8581467,38.887369,38.917084,38.888784,38.927284,38.8964597,38.8885868,38.886264,38.8847542,38.891826,38.8917967,38.8627101,38.891984,38.89168,38.8636576,38.8888054,38.8899507,38.916993,38.916993,38.916993,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.887595,38.8993607,38.8993607,38.9432495,38.926187,38.913936,38.913936,38.919025,38.9109688,38.872749,38.9001551,38.9001551,38.8301353,38.8801432,38.919372,38.924591,38.907322,38.8469099,38.896279,38.9207746,38.9207746,38.9395179,38.9342232,38.903919,38.9115677,38.8994819,38.90675,38.882213,38.890094,38.897386,38.887012,38.8811913,38.8811913,38.8811913,38.8811913,38.903465,38.8898199,38.8927917,38.886661,38.889665,38.8892899,38.8969383,38.888306,38.8981171,38.8971303,38.899304,38.888903,38.89888,38.89888,38.89888,38.8977242,38.888179,38.8899292,38.8574168,38.8149438,38.833462,38.9061774,38.926195,38.8920797,38.9025202,38.9062055,38.9062699,38.868221,38.953525,38.9556714,38.9533192,38.9189415,38.8762674,38.895374,38.9012749,38.9133422,38.8961197,38.8989296,38.902492,38.921095,38.8851004,38.8947856,38.8792634,38.9545698,38.8793143,38.9156657,38.9256046,38.9042797,38.9004364,38.861457,38.9227371,38.9227371,38.922737,38.9376524,38.928272,38.917109,38.904145,38.9038901,38.9038901,38.926651,38.9474277,38.8919999,38.8910637,38.919222,38.92239,38.92239,38.9361698,38.8625755,38.9031019,38.922824,38.92275,38.859288,38.8440105,38.8898087,38.8898087,38.8779397,38.8764799,38.875049,38.875049,38.8901443,38.8849297,38.8929482,38.9014702,38.8990822,38.8761787,38.8761787,38.8761787,38.8761787,38.8760227,38.884017,38.894506,38.8807366,38.893764,38.882476,38.8804779,38.88432,38.8880043,38.900254,38.88031,38.88031,38.88031,38.88031,38.9001652,38.91155,38.911862,38.9056503,38.884675,38.907478,38.8559688,38.872514,38.8978015,38.86663,38.874435,38.908313,38.951656,38.918869,38.908313,38.9638313,38.914333,38.901568,38.914321,38.9040565,38.9040565,38.9040565,38.9114151,38.9071109,38.9085169,38.9538,38.9097862,38.8798523,38.8533399,38.8533399,38.9428253,38.879491,38.879491,38.879491,38.879491,38.9427986,38.852092,38.846214,38.8535078,38.8535078,38.922718,38.9332047,38.8627839,38.9428253,38.901863,38.8921373,38.8865318,38.896274,38.903044,38.9012222,38.9007626,38.879374,38.933001,38.900201,38.8976517,38.904418,38.8998601,38.9127964,38.87913,38.8998735,38.9173698,38.8943672,38.8792305,38.86267,38.854424,38.892131,38.845178,38.8689957,38.861546,38.915224,38.908811,38.9372406,38.9443855,38.9443855,38.9279649,38.8805678,38.9256898,38.9106017,38.9003181,38.865478,38.8935703,38.9442198,38.833692,38.8799226,38.9002249,38.9250488,38.925103,38.8800812,38.854286,38.854286,38.9001198,38.8896697,38.891161,38.8902245,38.879062,38.902895,38.874061,38.89191,38.8874207,38.910634,38.893509,38.8851958,38.88463,38.88463,38.9113694,38.887547,38.9072113,38.909689,38.9109691,38.8829944,38.899716,38.873962,38.8824224,38.874286,38.874286,38.8823707,38.8821696,38.917217,38.8193878,38.871892,38.9072999,38.899038,38.899038,38.9026576,38.9238994,38.9072243,38.8746347,38.87994,38.87994,38.87994,38.87994,38.8793003,38.8792992,38.925848,38.9073296,38.9073325,38.90733,38.9291725,38.899814,38.923319,38.904559,38.866954,38.866954,38.866954,38.836019,38.893698,38.8803291,38.8921001,38.922737,38.887805,38.8457108,38.921918,38.895548,38.901605,38.9154549,38.834859,38.843839,38.8949074,38.9025497,38.8455909,38.8459899,38.9001498,38.8961177,38.903892,38.9020434,38.9021223,38.898879,38.901899,38.8898749,38.901322,38.8918255,38.896312,38.8706287,38.89837,38.909328,38.903678,38.88028,38.890126,38.896332,38.8916283,38.8916283,38.906073,38.9555401,38.9046907,38.909245,38.9167516,38.9025182,38.8974726,38.9096315,38.958726,38.958726,38.9547983,38.9546082,38.9046898,38.8790225,38.914151,38.914151,38.919175,38.919175,38.8707852,38.8718927,38.8718927,38.9073897,38.9073897,38.9168002,38.831388,38.900203,38.897342,38.9507561,38.871103,38.9136627,38.9292412,38.9361598,38.869128,38.869128,38.92583,38.8447481,38.9417897,38.929784,38.8603706,38.927717,38.9083935,38.898506,38.900393,38.8826904,38.92173,38.879407,38.832759,38.9404335,38.940861,38.896843,38.9239423,38.8321055,38.8661065,38.9088402,38.9407202,38.9097137,38.909713,38.866439,38.866439,38.859249,38.867272,38.8673515,38.8544426,38.9015923,38.8994296,38.8994296,38.9005957,38.903839,38.902719,38.8898849,38.8976365,38.8976365,38.864059,38.864059,38.8718531,38.882093,38.893715,38.880764,38.880764,38.9032211,38.892772,38.8909223,38.885885,38.8706046,38.903911,38.8920173,38.916201,38.926654,38.952549,38.827305,38.928611,38.928611,38.8774911,38.9001585,38.84516,38.884792,38.8242149,38.8451082,38.9579174,38.8991051,38.877228,38.9488754,38.9423697,38.883472,38.8356601,38.9658203,38.8968838,38.9191872,38.9013547,38.8889656,38.8922348,38.9208488,38.9208488,38.886569,38.943287,38.863318,38.8629799,38.93269,38.919269,38.9335198,38.8291991,38.8291991,38.8548965,38.9325703,38.8323402,38.95578,38.873967,38.8693755,38.9475021,38.9475021,38.9474258,38.913778,38.8656861,38.8658305,38.8728041,38.8664229,38.8902068,38.8902068,38.8662547,38.8835321,38.8952293,38.8952293,38.895638,38.895638,38.895638,38.889186,38.8893394,38.8893394,38.892621,38.8926392,38.896901,38.8840065,38.892421,38.895456,38.86555,38.8650101,38.8866997,38.8830862,38.89528,38.8952608,38.8986572,38.8952217,38.848394,38.848394,38.8451117,38.8241234,38.8350449,38.876515,38.8728795,38.95025,38.9542618,38.9305,38.9305,38.9305,38.9305,38.9305,38.9305,38.9305,38.8273392,38.8307953,38.8311653,38.831165,38.829723,38.845172,38.845172,38.9433708,38.959782,38.9597417,38.900348,38.837841,38.8831023,38.88923,38.88923,38.8875903,38.9407302,38.90273,38.878028,38.9230679,38.8639272,38.8722115,38.8961553,38.9004173,38.9004173,38.923032,38.8656364,38.832907,38.923166,38.8564324,38.864723,38.871574,38.8653297,38.9143749,38.936561,38.895962,38.932869,38.932869,38.907982,38.8975029,38.897502,38.8279266,38.8903838,38.88791,38.904687,38.8860207,38.9025202,38.8312035,38.8292007,38.9084686,38.908646,38.8920689,38.8920689,38.8545241,38.9094537,38.9094537,38.9094537,38.9037547,38.8775434,38.837255,38.90895,38.90895,38.8725891,38.861056,38.8608093,38.8599456,38.9261475,38.8592987,38.8592987,38.9325981,38.8560371,38.8717365,38.8757237,38.8512955,38.8762169,38.8762169,38.876216,38.9252966,38.918468,38.9252197,38.8766098,38.872009,38.868214,38.89742,38.872092,38.882496,38.924072,38.9321861,38.868969,38.9351623,38.8616982,38.877862,38.8958918,38.8791601,38.9160919,38.9112635,38.9111214,38.9626801,38.9557902,38.909083,38.8797531,38.9089012,38.9089012,38.9088998,38.9275,38.8987045,38.887619,38.916451,38.8949275,38.898557,38.956333,38.8857624,38.902555,38.9313463,38.93126,38.873909,38.8980603,38.919761,38.9193403,38.863322,38.929874,38.902006,38.920245,38.845657,38.9019971,38.8542404,38.867869,38.919384,38.8527102,38.873575,38.8736,38.8736,38.85704,38.8581256,38.8740768,38.863591,38.917381,38.9319,38.8976499,38.8744926,38.8729414,38.862545,38.862545,38.8598442,38.8604262,38.859584,38.859584,38.922861,38.922861,38.8542328,38.8564034,38.9235601,38.8851146,38.867883,38.867883,38.891919,38.8832733,38.9072988,38.904441,38.91434,38.91434,38.9083305,38.894095,38.8224381,38.8411789,38.9396346,38.9307213,38.861522,38.861522,38.861522,38.861522,38.861522,38.861522,38.8407402,38.864769,38.864769,38.864769,38.9567184,38.912807,38.8238798,38.85302,38.919188,38.847522,38.8452429,38.8630662,38.8630662,38.8630662,38.857502,38.8437176,38.8437176,38.9321197,38.91745,38.8730202,38.9281616,38.9311615,38.9311615,38.8745232,38.8745232,38.8745232,38.8745232,38.8745232,38.8982159,38.8625874,38.851608,38.856557,38.8726006,38.8567556,38.9176521,38.8568898,38.9258,38.9185732,38.919642,38.8801901,38.9025101,38.826509,38.8909297,38.90779,38.9078202,38.9078202,38.8349304,38.885911,38.89632,38.919601,38.919591,38.908988,38.9649348,38.931079,38.8998184,38.9315987,38.82473,38.850832,38.864734,38.9173595,38.9280474,38.9400787,38.8752821,38.8742993,38.8742993,38.8714528,38.9173591,38.873273,38.8751757,38.875279,38.875279,38.875279,38.875279,38.875215,38.93983,38.8475914,38.9172229,38.8894893,38.917846,38.864548,38.8650284,38.8650284,38.914287,38.9232445,38.8509755,38.920589,38.930719,38.8745601,38.9171486,38.8726028,38.957862,38.8792701,38.8875702,38.8762526,38.91675,38.9159098,38.918004,38.9142439,38.9088936,38.9421102,38.82918,38.9069939,38.9546471,38.9009743,38.9140798,38.8941231,38.9138489,38.938416,38.8224983,38.960289,38.9712987,38.8960849,38.9137306,38.91373,38.9096401,38.9054222,38.90727,38.933445,38.933444,38.894912,38.929872,38.8363762,38.9268498,38.9255798,38.8898199,38.9255798,38.8832103,38.9234401,38.9197006,38.9197006,38.8290518,38.829082,38.908245,38.8381462,38.837792,38.9095087,38.831035,38.861068,38.9078698,38.910183,38.9078437,38.9057884,38.905789,38.822876,38.8883588,38.9303199,38.9358788,38.9273712,38.9485703,38.9486602,38.9498918,38.952449,38.9169693,38.94952,38.9840911,38.9444102,38.9326859,38.918998,38.918998,38.9545004,38.950955,38.943161,38.956886,38.9302703,38.9302703,38.9454952,38.9534573,38.9496902,38.951059,38.9353544,38.932173,38.929673,38.9529879,38.9375992,38.9839809,38.9784622,38.978462,38.9759604,38.9759604,38.9759604,38.943567,38.9740181,38.9542465,38.974944,38.8993301,38.9441185,38.9441185,38.9451961,38.9603895,38.950004,38.9341011,38.907108,38.907108,38.907108,38.8943642,38.978768,38.962664,38.962664,38.9603218,38.95575,38.9596939,38.9392509,38.9378697,38.908176,38.948143,38.936659,38.9616545,38.95721,38.9556122,38.9556122,38.9614334,38.929398,38.9546999,38.9424438,38.935859,38.9535751,38.9518166,38.9496902,38.91958,38.94023,38.9483948,38.960708,38.9538498,38.9611511,38.9007197,38.9003296,38.9007187,38.9305962,38.9305962,38.929875,38.899712,38.895977,38.9041563,38.924672,38.9040373,38.928972,38.915286,38.902658,38.902658,38.902658,38.9037151,38.9267578,38.9034767,38.903465,38.9259186,38.9053874,38.903675,38.9060936,38.9060936,38.9113235,38.9113235,38.911323,38.9017181,38.9066582,38.9066582,38.9066582,38.950767,38.9612656,38.932231,38.9288025,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9022026,38.9270402,38.9015503,38.91918,38.9637762,38.938878,38.926859,38.897344,38.9551384,38.973358,38.8875754,38.9164259,38.882747,38.932029,38.886982,38.9400024,38.9382744,38.9169998,38.930047,38.9170101,38.92067,38.8803349,38.9397398,38.9549026,38.9475403,38.931302,38.9460332,38.946906,38.9435425,38.9219818,38.943715,38.91186,38.931346,38.9429016,38.9655457,38.9650459,38.91891,38.9319191,38.9347992,38.9632762,38.925972,38.9447348,38.9146767,38.964427,38.905529,38.924836,38.9243126,38.9248201,38.905254,38.9128151,38.9252739,38.906986,38.90282,38.9053975,38.9228862,38.901088,38.9110798,38.9148293,38.9158554,38.8968526,38.9234199,38.899392,38.916338,38.9352036,38.9352036,38.9300452,38.9903297,38.9070396,38.905571,38.9001551,38.962551,38.962551,38.9027777,38.92728,38.933411,38.897699,38.9171362,38.9198982,38.966265,38.9026402,38.9118797,38.9096401,38.9334273,38.9921703,38.9170001,38.9191499,38.9170001,38.9209899,38.9232503,38.9191499,38.9170001,38.93812,38.93812,38.9377201,38.9344025,38.9228902,38.9685756,38.934781,38.9091377,38.9331131,38.9331131,38.9168243,38.916824,38.941697,38.916034,38.9771233,38.893803,38.893803,38.913879,38.913879,38.913879,38.9087944,38.9155255,38.932282,38.8920655,38.9114539,38.9350111,38.9431697,38.9623566,38.9618979,38.9618979,38.9290314,38.9290314,38.9247513,38.9221725,38.9221725,38.921398,38.9286697,38.930667,38.930667,38.928741,38.9275298,38.9290199,38.943346,38.9294205,38.9294205,38.918517,38.9306599,38.921628,38.9318702,38.9211235,38.9623451,38.9334802,38.9536075,38.9229889,38.9286898,38.9286898,38.9708474,38.9247597,38.9271998,38.9292107,38.9292107,38.9292107,38.9292107,38.9325998,38.9265501,38.9367877,38.9678002,38.904959,38.9907501,38.9391283,38.9722765,38.991412,38.991412,38.962497,38.962497,38.9265022,38.9339333,38.8985867,38.9029399,38.9029446,38.9025202,38.9025202,38.9341663,38.9020997,38.8998098,38.9115498,38.8939599,38.9085699,38.90725,38.9169856,38.91699,38.8920897,38.8920897,38.8920897,38.8920897,38.897439,38.882579,38.8848498,38.931364,38.934215,38.9292984,38.930963,38.936937,38.930397,38.9308134,38.9630543,38.91426,38.91426,38.9573264,38.9573264,38.926349,38.9572198,38.9325714,38.942911,38.9601402,38.905085,38.9541817,38.9632212,38.902449,38.917783,38.9167359,38.9068527,38.907621,38.904758,38.904758,38.904758,38.9334984,38.9379959,38.9029942,38.8970599,38.925142,38.887622,38.891679,38.8984673,38.8961674,38.8961674,38.8997072,38.9053975,38.9131355,38.8995697,38.9007003,38.9008377,38.9030609,38.902229,38.902229,38.8963966,38.9028376,38.9187431,38.9187431,38.9096401,38.904628,38.913703,38.916893,38.9086973,38.9072402,38.9138298,38.9138298,38.9128609,38.9000511,38.9126549,38.9281258,38.909562,38.9276204,38.9166896,38.9079101,38.9127474,38.92608,38.895984,38.9096489,38.92676,38.898739,38.9261397,38.924308,38.9171486,38.9520047,38.9241797,38.93229,38.9433479,38.901195,38.9190559,38.922457,38.8986931,38.89202,38.9013786,38.9058075,38.902892,38.913906,38.90979,38.9095952,38.8936374,38.9026503,38.9062303,38.914402,38.914402,38.9158051,38.8976974,38.913398,38.9064789,38.902523,38.966355,38.949006,38.9309044,38.904014,38.9622116,38.9622116,38.902189,38.948417,38.901576,38.916856,38.911281,38.9668845,38.914314,38.879026,38.905564,38.9065602,38.9345436,38.921211,38.9196014,38.9368095,38.9001652,38.9644127,38.9604149,38.9389038,38.8965476,38.9003462,38.9003462,38.9334688,38.8920998,38.8987899,38.907856,38.9312668,38.9283791,38.9283791,38.928379,38.8966441,38.9899834,38.9295006,38.965343,38.919738,38.919738,38.9620397,38.9620397,38.969916,38.9223462,38.8949661,38.8996277,38.911901,38.8997682,38.8997682,38.900825,38.9162879,38.9162879,38.978575,38.978575,38.978575,38.9339597,38.939279,38.9389534,38.912733,38.9202677,38.9201215,38.9131464,38.9127474,38.9057777,38.9026583,38.8854995,38.8779128,38.902524,38.9096501,38.9020997,38.9020997,38.9096501,38.8875514,38.9001551,38.8973053,38.9096146,38.928883,38.9169984,38.9038874,38.9014775,38.9014775,38.9014775,38.9027783,38.9089675,38.8962378,38.961123,38.890628,38.9002008,38.9026402,38.9026402,38.9026402,38.89042,38.9013346,38.8955229,38.8875694,38.91112,38.8961298,38.9037285,38.8920897,38.8875702,38.9008699,38.8920897,38.8825531,38.8848397,38.88281,38.88281,38.9029399,38.9162598,38.9404678,38.9149126,38.8993169,38.8831224,38.8777319,38.8777319,38.961124,38.973335,38.9157448,38.876996,38.9378355,38.9362442,38.969448,38.885228,38.9684677,38.9285355,38.916108,38.9305649,38.895953,38.885143,38.9144249,38.9128571,38.932929,38.9229507,38.9181266,38.9020729,38.902072,38.91261,38.903574,38.9146385,38.913284,38.908992,38.9230309,38.9140517,38.905781,38.8973502,38.93275,38.923156,38.904624,38.9096277,38.9098167,38.9112467,38.9334602,38.9090843,38.9410615,38.903234,38.929151,38.901226,38.9615288,38.895786,38.9765102,38.874591,38.874591,38.935905,38.9668617,38.8989944,38.8989944,38.9043236,38.9113884,38.900238,38.931145,38.903263,38.903263,38.9113197,38.8831969,38.8920549,38.909508,38.8946648,38.9155497,38.913891,38.9020729,38.906108,38.910351,38.910351,38.910351,38.910351,38.910351,38.910351,38.905121,38.9090805,38.9090805,38.9090805,38.9090805,38.92568,38.9210998,38.8936561,38.8922272,38.8961365,38.9167709,38.9142374,38.9002101,38.9037399,38.8959997,38.9056597,38.9056597,38.9026503,38.9056597,38.96323,38.9023539,38.9023539,38.9039612,38.917885,38.933649,38.9369507,38.930843,38.930843,38.9268951,38.9268951,38.946266,38.925224,38.9420166,38.9085256,38.943049,38.931844,38.9349534,38.916798,38.9058099,38.9053307,38.9053307,38.9484557,38.907537,38.9370999,38.8920468,38.9274801,38.9287963,38.9288098,38.8968391,38.919008,38.905276,38.93921,38.9265702,38.9385481,38.9021378,38.922153,38.929744,38.9057884,38.9057884,38.919017,38.919017,38.919017,38.919017,38.919017,38.919017,38.923005,38.9212074,38.9084854,38.9193153,38.8985039,38.924885,38.9154424,38.9071953,38.896254,38.8937379,38.901471,38.901471,38.9014701,38.9014701,38.9008699,38.8998098,38.9035803,38.8944098,38.9056402,38.8792678,38.9747903,38.9081192,38.908748,38.957916,38.9400597,38.9634514,38.8982648,38.8920897,38.8961003,38.9096602,38.8920897,38.9103898,38.9200702,38.905994,38.917555,38.9629,38.9048767,38.9169551,38.924671,38.940991,38.9251976,38.9090819,38.9090819,38.9614438,38.909159,38.9034157,38.922184,38.9227849,38.90939,38.9226703,38.9226703,38.894748,38.894748,38.894748,38.9819908,38.9059219,38.9087715,38.9214814,38.9051056,38.9059448,38.9059448,38.905942,38.9216614,38.919384,38.921614,38.880673,38.9445038,38.9024752,38.9024752,38.9024752,38.9024752,38.96165,38.96165,38.96165,38.960865,38.9000606,38.880866,38.901008,38.894996,38.894996,38.894996,38.894996,38.914386,38.9681206,38.9324265,38.898742,38.920257,38.9631653,38.9132156,38.938456,38.9310532,38.9096911,38.9050099,38.906639,38.9246457,38.9163475,38.94654,38.914322,38.9593897,38.9346302,38.9147758,38.914819,38.91718,38.9147001,38.9139862,38.9162369,38.905315,38.9497961,38.927285,38.9481773,38.9326702,38.9649086,38.9334997,38.9106407,38.9050602,38.905226,38.907143,38.9085655,38.9471245,38.9297791,38.9072603,38.923629,38.92118,38.921283,38.9171219,38.9171219,38.903695,38.916645,38.876084,38.876084,38.876084,38.9118697,38.9096401,38.920214,38.934584,38.876169,38.876169,38.9260178,38.934168,38.905742,38.914089,38.8764133,38.9084358,38.9298859,38.911388,38.9460303,38.9614818,38.9169551,38.9387977,38.9542077,38.9574069,38.9616374,38.9267398,38.9276397,38.9296702,38.950802,38.9518816,38.9614982,38.9004475,38.9004475,38.99261,38.9001598,38.916999,38.9048368,38.9013299,38.9170001,38.9048403,38.9090805,38.9838257,38.910938,38.9473231,38.914508,38.914508,38.914508,38.905347,38.9455663,38.9607849,38.9125633,38.9079666,38.904996,38.952143,38.9094887,38.906789,38.9701871,38.905014,38.905014,38.9049416,38.904941,38.904941,38.9027863,38.902786,38.926475,38.9053164,38.9053164,38.9053164,38.9053164,38.9051802,38.9478448,38.9190216,38.8989487,38.9661282,38.8875558,38.9389763,38.9345584,38.913806,38.92467,38.9639626,38.96318,38.9056067,38.901285,38.9583488,38.9511452,38.8875702,38.910122,38.88237,38.95633,38.9073776,38.9038767,38.8849799,38.8920897,38.894715,38.9038251,38.9182996,38.9011201,38.895543,38.9437913,38.8923231,38.9306215,38.9131851,38.9147799,38.9287491,38.9220735,38.962841,38.948708,38.9008759,38.919105,38.9563446,38.9297372,38.9297372,38.8136479,38.9289998,38.9290003,38.9290003,38.899714,38.9279502,38.9137298,38.8920327,38.9056597,38.877242,38.877242,38.9321365,38.897112,38.9177752,38.9028854,38.927814,38.9231202,38.878027,38.878027,38.878027,38.878027,38.9243701,38.897564,38.9037399,38.900642,38.899974,38.878079,38.878079,38.878079,38.878079,38.878079,38.878079,38.878079,38.942592,38.905351,38.9408898,38.9039841,38.9084123,38.9275208,38.905047,38.9049072,38.9049072,38.9049072,38.9055008,38.919933,38.9730988,38.9383507,38.9375305,38.9239376,38.9016914,38.9353485,38.9052507,38.892385,38.9049034,38.9049034,38.904903,38.9091415,38.9086037,38.908606,38.9106466,38.9358788,38.878079,38.878079,38.878079,38.878079,38.878079,38.878079,38.9012951,38.8955478,38.8922272,38.9044609,38.90134,38.9026503,38.9026503,38.9025302,38.9025307,38.9002101,38.9208298,38.9010735,38.927051,38.923063,38.931251,38.9232945,38.9094391,38.917186,38.9060097,38.9343996,38.899811,38.8998098,38.8983098,38.912565,38.910247,38.9793373,38.9612694,38.9306901,38.894869,38.9542218,38.9542218,38.917202,38.932724,38.9356877,38.894304,38.8940582,38.894058,38.981982,38.9024799,38.966507,38.966507,38.966507,38.8987312,38.9676522,38.9363403,38.9344139,38.934413,38.9175801,38.934535,38.9044914,38.9335962,38.917044,38.9334903,38.904691,38.909464,38.9069968,38.9048262,38.9324315,38.9324315,38.900678,38.940005,38.9182739,38.9040413,38.9040413,38.910985,38.924477,38.9007111,38.909561,38.916245,38.9064617,38.903968,38.91125,38.9004974,38.9004974,38.9027676,38.9085518,38.9065602,38.9026293,38.9074707,38.9070244,38.9309958,38.923208,38.9213715,38.9173279,38.8876419,38.936441,38.936441,38.9393005,38.93933,38.9254646,38.920101,38.907507,38.936348,38.879576,38.9039421,38.934742,38.9005089,38.9261457,38.9261457,38.9261457,38.900508,38.930961,38.9690678,38.9101219,38.9101219,38.899601,38.967701,38.919002,38.919002,38.919002,38.903695,38.923684,38.9329049,38.9208973,38.9294624,38.8944702,38.9096401,38.903872,38.903872,38.9140999,38.97232,38.9039408,38.8813408,38.9526558,38.9482398,38.9828224,38.96315,38.9746984,38.9674075,38.955404,38.9048798,38.9048798,38.9037399,38.94876,38.8701023,38.9476048,38.911875,38.8996042,38.955902,38.899353,38.9546242,38.8968544,38.9072301,38.881119,38.8920428,38.9051132,38.9051132,38.8997535,38.8997535,38.898808,38.8949262,38.8995285,38.9052097,38.8906299,38.9200799,38.9202844,38.896335,38.8631122,38.8617497,38.9074199,38.8437805,38.8437805,38.906624,38.955521,38.8627,38.8876098,38.9062498,38.9537215,38.923736,38.9256207,38.8922348,38.864033,38.893329,38.91983,38.8840699,38.8875997,38.9172991,38.9454193,38.9454193,38.9454193,38.9454193,38.9454193,38.8981209,38.898759,38.916901,38.894278,38.870402,38.89893,38.89893,38.9038472,38.9173199,38.9311199,38.93574,38.8995248,38.9294472,38.839092,38.9037437,38.8412784,38.913486,38.901529,38.9487212,38.9051537,38.9565697,38.896084,38.896084,38.905771,38.926487,38.90537,38.90537,38.90537,38.90537,38.9273,38.9273,38.9709071,38.9015884,38.9149401,38.891451,38.9055524,38.9055524,38.889843,38.9502414,38.912754,38.8298187,38.8591669,38.8591669,38.8619499,38.8619499,38.8990474,38.88271,38.878076,38.8920049,38.9025202,38.9155497,38.8811235,38.8584175,38.8876446,38.896339,38.827434,38.827434,38.827434,38.882577,38.9047323,38.8402567,38.8333015,38.832141,38.8436799,38.9014567,38.8479652,38.928024,38.917348,38.861734,38.9247055,38.877067,38.9194107,38.91941,38.8493004,38.8995552,38.917367,38.843908,38.9163939,38.9163939,38.8411331,38.889943,38.9446526,38.895839,38.9001551,38.8920368,38.882995,38.882995,38.894788,38.8985505,38.8850798,38.899199,38.899067,38.899199,38.9562788,38.923677,38.8920797,38.8920797,38.909803,38.9002001,38.9002001,38.8770676,38.833488,38.861209,38.885557,38.842495,38.879721,38.9324849,38.885674,38.8431511,38.8623903,38.8623903,38.8623903,38.8623815,38.9325027,38.8450255,38.8450255,38.8451196,38.8451196,38.8380814,38.8448372,38.8635854,38.8635899,38.9105606,38.863568,38.8436012,38.829444,38.8455849,38.940816,38.902958,38.8393978,38.843519,38.8459167,38.893034,38.926723,38.925705,38.884088,38.8950972,38.8386078,38.8845802,38.9025101,38.8949597,38.8773724,38.82629,38.8629799,38.8827623,38.9004364,38.8975754,38.900436,38.902805,38.8847579,38.9407403,38.843745,38.839158,38.917316,38.8801537,38.8432571,38.893981,38.893981,38.870576,38.8774605,38.9280701,38.8936025,38.8968555,38.8621216,38.8697243,38.8687096,38.898639,38.883094,38.8689999,38.8606224,38.926606,38.9303246,38.89629,38.8618049,38.8555071,38.8897896,38.8897896,38.8897896,38.8897896,38.8897896,38.8897896,38.8897896,38.85815,38.8625946,38.889875,38.889947,38.8897797,38.9173393,38.927284,38.862412,38.8641304,38.8636576,38.8676147,38.896134,38.916993,38.916993,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.920037,38.952483,38.886277,38.8993607,38.8993607,38.8993607,38.828656,38.8973389,38.913936,38.913936,38.913936,38.9024739,38.9024739,38.8949288,38.850773,38.89479,38.8859406,38.8822702,38.8933202,38.919372,38.8823741,38.8933651,38.8933651,38.8933651,38.869928,38.9154182,38.9172274,38.9034843,38.863388,38.9207746,38.9056435,38.9056435,38.936556,38.9293327,38.8922424,38.916906,38.901456,38.9350802,38.9331101,38.9443713,38.843987,38.905818,38.9115677,38.8994698,38.8994698,38.921611,38.916904,38.8994819,38.8900948,38.8811913,38.8811913,38.8811913,38.8811913,38.8811913,38.8811913,38.8811913,38.8811913,38.8811913,38.8811913,38.901,38.90407,38.9038606,38.9038606,38.9033563,38.9001045,38.885225,38.8898648,38.898365,38.8861084,38.886009,38.892116,38.8910446,38.8972677,38.89888,38.89888,38.891458,38.8917389,38.892818,38.8149438,38.9071923,38.909557,38.9310978,38.9262322,38.926195,38.9121151,38.912106,38.9289455,38.9156697,38.9121198,38.9025651,38.8235901,38.9564095,38.9195824,38.877341,38.8953743,38.8953743,38.8875199,38.966566,38.9310998,38.8977013,38.8764203,38.9002001,38.8875997,38.8613704,38.8406,38.917456,38.881073,38.8375824,38.935565,38.949486,38.844059,38.904153,38.8367001,38.9219131,38.950489,38.8367846,38.9352699,38.9352699,38.9040273,38.919699,38.949034,38.894909,38.8898098,38.896111,38.951277,38.836246,38.900363,38.90155,38.919222,38.8893585,38.9255597,38.862575,38.918712,38.8777757,38.829028,38.8627055,38.904743,38.8291416,38.8937683,38.9350586,38.8860299,38.8792701,38.888082,38.9032974,38.8788261,38.8785057,38.9063187,38.908859,38.8984515,38.8829602,38.896054,38.903717,38.884991,38.897388,38.88031,38.88031,38.88031,38.88031,38.88031,38.88031,38.88031,38.88031,38.910854,38.95518,38.9056503,38.8272285,38.9066658,38.900255,38.8955727,38.961115,38.900508,38.9216194,38.9040565,38.9114151,38.874858,38.8965988,38.9087296,38.9538002,38.9538,38.9538,38.8765106,38.9128647,38.909786,38.9149399,38.9630508,38.91323,38.9077644,38.9002912,38.8533399,38.879882,38.835203,38.8664297,38.879491,38.879491,38.879491,38.9256797,38.8669891,38.903495,38.919262,38.846214,38.87823,38.8614655,38.8636214,38.9200592,38.8644884,38.9000552,38.901863,38.881666,38.8947599,38.9089962,38.86533,38.88523,38.883037,38.893824,38.866375,38.866375,38.888511,38.9252815,38.8976517,38.9407197,38.9064664,38.9019165,38.9173698,38.9041862,38.9166908,38.8512397,38.845178,38.8580093,38.9194145,38.919414,38.8834877,38.924795,38.913289,38.9010517,38.915577,38.9425401,38.9425401,38.9246001,38.9246001,38.8650303,38.887857,38.9032707,38.8898098,38.8935703,38.868989,38.8885324,38.925048,38.9152031,38.8800812,38.8800812,38.889683,38.8882294,38.8998601,38.911292,38.881962,38.891702,38.902325,38.903431,38.911456,38.9072113,38.8841464,38.8792992,38.9080849,38.887896,38.882997,38.8817177,38.8822601,38.874286,38.874286,38.8750954,38.88983,38.8919147,38.907505,38.875548,38.9252673,38.9012602,38.907372,38.87994,38.87994,38.87994,38.87994,38.87994,38.9557161,38.9557161,38.9073296,38.9025202,38.9569078,38.9567531,38.9133382,38.909645,38.899765,38.8797379,38.911991,38.9053535,38.8581041,38.91151,38.836025,38.880329,38.8997173,38.887609,38.924202,38.943156,38.842704,38.9218636,38.925777,38.9006386,38.868417,38.9428841,38.8790897,38.8954398,38.89249,38.8851395,38.8665256,38.9001498,38.90191,38.9005648,38.8919248,38.901725,38.8767388,38.9020786,38.9020271,38.9020271,38.9020271,38.9023628,38.891376,38.9078522,38.9059486,38.886629,38.891739,38.8718545,38.9030304,38.9006577,38.9073689,38.9073689,38.907447,38.8916283,38.8916283,38.870586,38.899972,38.9266638,38.909245,38.9274265,38.9002201,38.9576605,38.9125979,38.8974708,38.9547998,38.9568899,38.9025203,38.9025203,38.9534399,38.9534446,38.9524039,38.914151,38.914151,38.914151,38.914151,38.914151,38.9064538,38.8764737,38.8741639,38.9074484,38.8718927,38.9073897,38.9073897,38.8728328,38.840786,38.897342,38.8791601,38.9002524,38.945396,38.861446,38.8331026,38.937538,38.887332,38.9327943,38.930954,38.9218106,38.914646,38.869128,38.869128,38.869128,38.8427599,38.9278543,38.867268,38.867263,38.8981703,38.8981703,38.9054605,38.9404589,38.9083935,38.8926094,38.867116,38.8815681,38.881674,38.9407302,38.8805237,38.9239423,38.9239423,38.914866,38.8653906,38.9510765,38.9224129,38.922412,38.858325,38.8419143,38.8321024,38.8321055,38.8661065,38.9110838,38.844759,38.919349,38.9109389,38.9013098,38.9013098,38.867272,38.867272,38.8673515,38.855665,38.842708,38.899341,38.88458,38.868042,38.883956,38.9003087,38.864059,38.9049415,38.8808648,38.8808648,38.8936508,38.8790703,38.901635,38.901635,38.901635,38.865415,38.900212,38.8934489,38.8826524,38.891058,38.8925721,38.890167,38.9039116,38.903911,38.9166489,38.954932,38.957798,38.8762512,38.9587354,38.928611,38.928611,38.833688,38.917327,38.9703848,38.9576503,38.9033546,38.9174,38.885067,38.924995,38.8323817,38.8875903,38.906232,38.906232,38.9502487,38.8310621,38.896521,38.8920656,38.8214493,38.946876,38.9535639,38.926545,38.8841202,38.8892279,38.905571,38.9208488,38.854945,38.933223,38.8629799,38.9008064,38.9327037,38.8903694,38.9136869,38.9325703,38.8323744,38.9044495,38.933819,38.865638,38.936408,38.9005699,38.9245243,38.9384205,38.9430074,38.917099,38.917099,38.891279,38.8875803,38.8877217,38.864817,38.88395,38.8902068,38.8902068,38.8662547,38.8662547,38.901177,38.885032,38.8952293,38.8952293,38.906821,38.8657819,38.8955699,38.8893394,38.8657176,38.8657176,38.8880577,38.893352,38.8934543,38.8646427,38.865551,38.861766,38.89874,38.886026,38.89422,38.8651924,38.89528,38.89528,38.8859341,38.8952217,38.8952217,38.8998695,38.8961983,38.8728795,38.828505,38.906434,38.9305,38.9305,38.9305,38.9305,38.9305,38.9305,38.9305,38.9305,38.845172,38.9435081,38.9075699,38.9421838,38.949406,38.89744,38.89744,38.89744,38.90019,38.92309,38.913488,38.8722115,38.862392,38.892328,38.9028702,38.90287,38.9504166,38.9504166,38.94924,38.94869,38.9469643,38.8647232,38.864723,38.83346,38.9407302,38.8920099,38.9143128,38.9405632,38.9143749,38.9143749,38.9143749,38.8796387,38.9078903,38.877002,38.94052,38.8975029,38.8975029,38.9270101,38.8253784,38.8374214,38.9554911,38.9174919,38.9025234,38.9056085,38.8292,38.9025202,38.9083964,38.8312181,38.90847,38.8369321,38.8744918,38.908646,38.902598,38.9102211,38.926148,38.885816,38.9089508,38.9089508,38.90895,38.962219,38.861056,38.874229,38.8719255,38.8720818,38.855262,38.8755298,38.8682137,38.8592987,38.8696976,38.9258041,38.9255697,38.8546669,38.934629,38.8751488,38.8898024,38.8570131,38.8611298,38.8755989,38.924037,38.8698502,38.8557384,38.8771485,38.8771485,38.927268,38.927268,38.9204722,38.91699,38.8958918,38.8958918,38.88215,38.9078484,38.9089012,38.9089012,38.9088998,38.9088998,38.929512,38.917172,38.931493,38.897544,38.887619,38.9639012,38.858027,38.8680305,38.9561174,38.881591,38.9186798,38.8874629,38.8606603,38.8851146,38.87137,38.93126,38.9185403,38.917753,38.8980603,38.8976517,38.9193382,38.9193382,38.8478822,38.8685352,38.917977,38.917977,38.856336,38.8658121,38.857708,38.8728333,38.867869,38.867869,38.9291498,38.8736,38.8570412,38.8603109,38.8740768,38.874101,38.855545,38.87206,38.9324417,38.8742027,38.9338264,38.8727657,38.8748741,38.860572,38.8588598,38.859584,38.9331201,38.8749199,38.8705215,38.92343,38.8569199,38.9078178,38.909455,38.8224381,38.8224381,38.8352678,38.9396346,38.861522,38.8256416,38.8256416,38.830769,38.885209,38.96286,38.880628,38.880628,38.9255898,38.9569147,38.9569201,38.9038963,38.9568403,38.835686,38.96289,38.8897663,38.8307304,38.896277,38.857572,38.9166322,38.85118,38.87276,38.8630662,38.8630662,38.857502,38.8573833,38.897876,38.91745,38.91745,38.87302,38.9309603,38.8745232,38.8745232,38.8745232,38.8745232,38.8516083,38.9175097,38.9175097,38.918984,38.8567556,38.9176521,38.931136,38.9164467,38.8910665,38.9306699,38.8764687,38.9576144,38.887109,38.8871545,38.9199867,38.9158058,38.885906,38.864444,38.845313,38.908989,38.8419685,38.843326,38.9039726,38.894408,38.894408,38.8776932,38.8836098,38.826859,38.845275,38.9056511,38.8218269,38.942842,38.9200363,38.9193001,38.9253349,38.918563,38.918266,38.8426247,38.9428482,38.934271,38.8639299,38.929969,38.8705559,38.884216,38.875279,38.875279,38.875279,38.875279,38.875279,38.875279,38.8495064,38.9178162,38.9017537,38.9350802,38.851176,38.8985775,38.857905,38.898875,38.9321827,38.941237,38.8605614,38.8962517,38.917239,38.917239,38.919253,38.9319916,38.85106,38.904521,38.9331865,38.896293,38.9331101,38.9331101,38.9331101,38.8726082,38.876372,38.876372,38.876372,38.8888,38.881284,38.89733,38.9397087,38.913656,38.900062,38.900062,38.900062,38.915176,38.95578,38.975034,38.9139826,38.927588,38.82989,38.8224983,38.8224983,38.9540596,38.909738,38.8284016,38.9651222,38.963939,38.8960849,38.91373,38.944494,38.882919,38.915719,38.9224966,38.9214277,38.9255798,38.9255798,38.8856001,38.9202301,38.9212903,38.8973502,38.9196997,38.8290518,38.822444,38.8941349,38.902843,38.82637,38.862796,38.832089,38.84301,38.824623,38.9201813,38.919943,38.8427315,38.877014,38.9602675,38.9602675,38.8943062,38.8859887,38.8237625,38.9547195,38.9358788,38.92481,38.9249495,38.9230194,38.9230194,38.9455299,38.9252244,38.9382298,38.9260867,38.9191297,38.9222398,38.9264259,38.951309,38.9459022,38.9165993,38.9223785,38.9169693,38.9158601,38.949498,38.9455401,38.9340591,38.9369507,38.934542,38.948101,38.9081088,38.957029,38.916125,38.9067265,38.9375992,38.9569893,38.9759604,38.9758202,38.9847075,38.9837998,38.9729614,38.9299511,38.8993301,38.9441185,38.9793903,38.983803,38.983803,38.983803,38.9298197,38.909481,38.9429551,38.9167671,38.926044,38.903221,38.9841652,38.907108,38.907108,38.907108,38.9646759,38.964675,38.8943642,38.9157622,38.9790306,38.9278332,38.9568367,38.98223,38.93773,38.9587135,38.961415,38.959041,38.9616545,38.9572105,38.9107704,38.9590251,38.9119644,38.954902,38.9434128,38.9534645,38.9538603,38.9591677,38.9303246,38.9533199,38.9071159,38.9431603,38.951201,38.9510299,38.9208148,38.922948,38.906723,38.9297905,38.9007187,38.9007187,38.9101334,38.9062458,38.9305962,38.9305962,38.929875,38.9043925,38.9091187,38.9041563,38.909333,38.909333,38.9029171,38.9233589,38.91767,38.92744,38.902658,38.9267578,38.912916,38.9283714,38.9034004,38.9034004,38.901408,38.9039075,38.909445,38.9133759,38.9255134,38.9616702,38.9255368,38.9066582,38.9182663,38.911324,38.9475632,38.9612656,38.9612656,38.9322319,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9022026,38.8809827,38.8975494,38.8920797,38.8945198,38.9258084,38.9025302,38.9072402,38.9085637,38.9602936,38.8921037,38.9420224,38.9430457,38.9250112,38.9031258,38.906367,38.9495239,38.882262,38.928715,38.9402885,38.9400024,38.9389114,38.920788,38.9350802,38.902988,38.887569,38.887569,38.887569,38.9413565,38.9520525,38.9162,38.9028397,38.9028397,38.902839,38.954464,38.9468651,38.946528,38.9058897,38.9475403,38.9460487,38.9449768,38.944976,38.9666936,38.94384,38.945371,38.9439402,38.920681,38.9431208,38.931346,38.931346,38.931346,38.9661674,38.9674102,38.9655457,38.9650459,38.965045,38.943384,38.922368,38.942135,38.969135,38.910196,38.9114761,38.9114761,38.82611,38.929811,38.9135475,38.93484,38.905529,38.905529,38.9255408,38.9777709,38.924836,38.9278469,38.9245894,38.906986,38.9237137,38.9034691,38.9241837,38.9023552,38.9023552,38.9028092,38.9039786,38.8995876,38.8995754,38.9035873,38.9027763,38.914482,38.906875,38.9010887,38.901088,38.901088,38.9148293,38.9163,38.9234199,38.985965,38.9272387,38.92837,38.989006,38.9140449,38.9231953,38.9286529,38.9304406,38.9001551,38.9027777,38.9142273,38.90134,38.90134,38.9198982,38.9229083,38.9056503,38.9921167,38.9921167,38.8987054,38.8987054,38.907018,38.907018,38.9526178,38.9170001,38.9191493,38.918113,38.93812,38.934402,38.9678749,38.9182701,38.936569,38.927341,38.9351586,38.916574,38.899189,38.9523621,38.9374199,38.913879,38.8997649,38.8997649,38.9125644,38.933113,38.9020072,38.9114539,38.8999473,38.8962673,38.9355985,38.9382794,38.9588318,38.9191251,38.9206432,38.924751,38.9525871,38.924767,38.923743,38.92861,38.9291619,38.9351807,38.9351807,38.9294205,38.9294205,38.9307176,38.934588,38.9374673,38.9500046,38.921083,38.920834,38.9540293,38.9536075,38.9506853,38.9201317,38.9550209,38.9203897,38.9286898,38.9708474,38.9247597,38.9271998,38.9292107,38.9292107,38.9292107,38.9292107,38.9750974,38.9662575,38.992109,38.992109,38.9759228,38.9349702,38.9325998,38.9374398,38.987503,38.9307377,38.907027,38.96241,38.9697128,38.9906602,38.9070682,38.9920991,38.9921226,38.902104,38.910899,38.915751,38.9475555,38.902134,38.899825,38.9027901,38.9027901,38.9029446,38.9025202,38.9111227,38.9115498,38.8998098,38.8998098,38.8998098,38.9169828,38.9169828,38.8920897,38.886333,38.9503936,38.946353,38.94362,38.9108505,38.9389114,38.9260788,38.8822724,38.9035759,38.9498203,38.9300101,38.94553,38.933269,38.915206,38.91426,38.91426,38.91426,38.9573264,38.926689,38.919814,38.9561179,38.9316711,38.956096,38.9610098,38.9050401,38.9225603,38.9536552,38.956169,38.9067116,38.954895,38.954895,38.9429092,38.942425,38.968636,38.9143486,38.9546898,38.9546898,38.907865,38.905038,38.905038,38.9049952,38.9051762,38.9578494,38.9064217,38.9049164,38.9248695,38.924869,38.905055,38.905055,38.9049492,38.9166689,38.923519,38.9177132,38.912821,38.8961674,38.9007003,38.90526,38.9037399,38.8987034,38.9030609,38.9030609,38.9030609,38.923349,38.9110938,38.9187431,38.911296,38.913703,38.9054076,38.9088106,38.9114901,38.9098936,38.9006348,38.9012527,38.8997649,38.8997649,38.9167106,38.8978462,38.9225349,38.9243088,38.979557,38.9737462,38.9624672,38.906738,38.938889,38.9016647,38.925802,38.9011955,38.9011955,38.901195,38.901195,38.9575658,38.9539795,38.956505,38.8920448,38.8920448,38.908566,38.8953514,38.9111326,38.9178848,38.8964119,38.9020576,38.9124489,38.9172363,38.9136721,38.913906,38.913906,38.9022026,38.897583,38.8970566,38.9211884,38.9211884,38.8995349,38.912565,38.8953198,38.9013309,38.9026515,38.914385,38.9222908,38.9222908,38.9016571,38.9113922,38.9137001,38.9133606,38.9016495,38.9074669,38.9064789,38.9064789,38.9270503,38.902523,38.902523,38.940696,38.940696,38.9003436,38.923449,38.9074745,38.9622116,38.9622116,38.9622116,38.9202408,38.9326011,38.9112816,38.9205902,38.903695,38.879026,38.9080676,38.9013299,38.9056503,38.9065602,38.968719,38.9191901,38.939948,38.937227,38.9174805,38.909466,38.9345016,38.9053726,38.902797,38.916721,38.9001652,38.9001652,38.8987403,38.9003462,38.8989273,38.8987899,38.928379,38.9899834,38.9675155,38.9295006,38.921556,38.9374962,38.919738,38.94153,38.8986931,38.8986931,38.898693,38.898693,38.9784164,38.9159851,38.894966,38.9169006,38.9166946,38.905435,38.8960849,38.8960849,38.9020528,38.898407,38.902895,38.9162879,38.9209597,38.939279,38.912733,38.905766,38.9201215,38.9201215,38.8951441,38.9057777,38.8999473,38.9043072,38.9244576,38.902252,38.9020997,38.8933899,38.9020997,38.8933899,38.944758,38.9169551,38.9169551,38.9110851,38.9096146,38.9014775,38.9003375,38.9014775,38.8984573,38.8932867,38.8932867,38.8962378,38.9100706,38.8962378,38.9127474,38.90375,38.90375,38.890628,38.890628,38.890628,38.890628,38.89042,38.9002001,38.9002001,38.9026368,38.9037285,38.8984499,38.9008699,38.8998098,38.8998098,38.8998098,38.8832618,38.9562111,38.9029399,38.9162598,38.8976359,38.899339,38.939835,38.907976,38.928461,38.9161176,38.8776447,38.916236,38.9587269,38.902892,38.9128571,38.9128571,38.917448,38.917448,38.9315772,38.913709,38.9076345,38.9155464,38.906856,38.9051971,38.9029846,38.9020729,38.9099,38.8961472,38.9232952,38.8997173,38.9097776,38.92205,38.9127367,38.8960098,38.9080703,38.9026503,38.9090843,38.9041023,38.913114,38.9111401,38.9096025,38.903001,38.885143,38.931812,38.9332962,38.902188,38.902188,38.903234,38.977584,38.929151,38.882999,38.94092,38.873876,38.9192504,38.895786,38.895786,38.955364,38.9684677,38.966262,38.8926838,38.917548,38.9024752,38.9154424,38.9096501,38.894664,38.9093082,38.903427,38.9074669,38.919952,38.9020729,38.902072,38.910351,38.910351,38.9016418,38.902294,38.9109535,38.9109535,38.9109535,38.9109535,38.906012,38.899699,38.915775,38.9294701,38.902787,38.9157046,38.9157046,38.9072402,38.91261,38.935921,38.9398651,38.937305,38.9600296,38.9420166,38.93161,38.93045,38.9626236,38.928978,38.928978,38.9032974,38.908264,38.916798,38.9058099,38.9567008,38.9302301,38.936257,38.8920468,38.9418802,38.9352901,38.9495697,38.9175758,38.917575,38.9169551,38.9288098,38.92792,38.9169551,38.9276733,38.9175822,38.9238548,38.9065742,38.9065742,38.907016,38.9034538,38.9057884,38.8988762,38.919017,38.919484,38.921207,38.9058955,38.968448,38.9237599,38.9140449,38.930374,38.9026583,38.9026583,38.9132275,38.9281464,38.8998098,38.8961298,38.8998098,38.89282,38.8961251,38.9759758,38.9637597,38.9057777,38.9475441,38.9292336,38.9499497,38.9140717,38.8835983,38.896572,38.906452,38.8778229,38.9426117,38.9006157,38.893982,38.9288025,38.8961003,38.8875702,38.9096602,38.8961003,38.9170001,38.8961003,38.9096602,38.9096602,38.8961003,38.8875747,38.8875747,38.89939,38.9200598,38.9155698,38.906311,38.906311,38.9036138,38.9165052,38.884609,38.884609,38.9050789,38.9056597,38.946268,38.8828911,38.938873,38.93574,38.9319802,38.9222639,38.9106674,38.9106674,38.9135132,38.909159,38.909159,38.9203033,38.9044189,38.922184,38.90939,38.907088,38.8947487,38.894748,38.894748,38.894748,38.902862,38.911768,38.9113693,38.9087715,38.920791,38.9051056,38.902524,38.9020882,38.9020882,38.9020882,38.880673,38.9090538,38.917305,38.9000606,38.9000606,38.8998829,38.9046135,38.899983,38.901008,38.956966,38.9085884,38.895008,38.9485283,38.894996,38.894996,38.894996,38.9069366,38.933567,38.9643898,38.9035149,38.9035149,38.9631653,38.905365,38.9696846,38.950954,38.910984,38.9791985,38.922511,38.898637,38.9522061,38.915892,38.9050099,38.906639,38.9590187,38.9590187,38.9590187,38.946192,38.9147758,38.9139862,38.9139862,38.9139862,38.9136795,38.968803,38.9372025,38.9346403,38.9123497,38.9504242,38.9050602,38.9050602,38.9050602,38.9050602,38.9050602,38.904847,38.9053116,38.946929,38.9072603,38.921376,38.8920528,38.917121,38.9171219,38.914309,38.919577,38.893654,38.917738,38.8974977,38.9014775,38.8926402,38.9198821,38.9262657,38.8995899,38.876084,38.876084,38.876084,38.9002113,38.9002113,38.9026503,38.91872,38.9115398,38.923573,38.915562,38.9096401,38.876169,38.919952,38.9057482,38.9021797,38.9104156,38.9418253,38.9086282,38.9169551,38.9520177,38.9482307,38.9572725,38.9551479,38.9014674,38.8961298,38.9026415,38.9025202,38.9025202,38.8998199,38.8983157,38.916999,38.916999,38.9048403,38.9013299,38.9056597,38.9090805,38.9090805,38.914673,38.9667435,38.917045,38.9109383,38.9439631,38.9052661,38.9466754,38.9368324,38.944434,38.9035086,38.891742,38.906807,38.9079666,38.904998,38.9621506,38.942607,38.905014,38.9049416,38.9049416,38.9053863,38.9053164,38.9053164,38.9053164,38.9051802,38.9050713,38.9660832,38.9664536,38.9664536,38.8989487,38.9040756,38.984697,38.9598083,38.9405,38.9033852,38.8980217,38.913806,38.9001884,38.9001884,38.9257052,38.9041061,38.91719,38.962379,38.9639626,38.9071953,38.8997649,38.962978,38.92368,38.9596398,38.8875702,38.9554558,38.9038767,38.8849799,38.8859803,38.956332,38.8875233,38.9335097,38.9014573,38.9750099,38.8998203,38.8998098,38.882957,38.882957,38.882957,38.914779,38.9147799,38.9747272,38.9008901,38.9233398,38.9281883,38.919105,38.9146498,38.885421,38.916532,38.9455338,38.912746,38.816611,38.926464,38.9064255,38.909294,38.877242,38.9175339,38.9063873,38.87735,38.911313,38.9200155,38.928809,38.9040337,38.9040337,38.904033,38.904033,38.9090042,38.994887,38.878027,38.9021454,38.9021454,38.9110898,38.902173,38.900642,38.9016151,38.901615,38.899986,38.878079,38.878079,38.878079,38.878079,38.878079,38.878079,38.9051895,38.905023,38.9102974,38.9411359,38.904394,38.9074173,38.905407,38.9049072,38.904907,38.904907,38.904907,38.926915,38.925504,38.9394461,38.9187355,38.9187355,38.8921467,38.9061508,38.936367,38.9049034,38.9049034,38.933312,38.892389,38.9368102,38.9363403,38.878079,38.878079,38.924386,38.9233513,38.8974246,38.9143257,38.9044609,38.8920897,38.90134,38.9026503,38.9025302,38.9025307,38.90699,38.9248449,38.9248449,38.8789307,38.9249501,38.931133,38.931675,38.9341253,38.87911,38.899811,38.8961298,38.910247,38.9612204,38.9612699,38.9612699,38.9263725,38.9551577,38.9680138,38.9542218,38.896859,38.9701195,38.9288273,38.8940582,38.97878,38.966507,38.898731,38.939741,38.9520465,38.9519003,38.9168472,38.9147224,38.9363403,38.9363403,38.9363403,38.9363403,38.935494,38.9023209,38.9344139,38.906597,38.9051916,38.9052399,38.9052399,38.9232577,38.9690742,38.9044914,38.9335962,38.9057274,38.9170403,38.9052051,38.9052051,38.9053868,38.9053868,38.9053868,38.9052399,38.9324315,38.904908,38.908647,38.9008559,38.9182739,38.918273,38.9124374,38.9007111,38.9071953,38.906429,38.9112675,38.9056503,38.910096,38.916278,38.9034653,38.959661,38.929802,38.928882,38.9295012,38.9213715,38.921371,38.9140449,38.907507,38.907507,38.930966,38.9009781,38.9261457,38.934741,38.9663353,38.916844,38.919002,38.919002,38.9406433,38.926666,38.932907,38.9026402,38.9057878,38.9112575,38.9724601,38.9722607,38.9207599,38.9096401,38.9096401,38.9096401,38.9314117,38.977329,38.96315,38.96315,38.9746984,38.9002593,38.9002593,38.8997897,38.9716588,38.9048791,38.9048798,38.9570998,38.9143232,38.8996042,38.9433823,38.97232,38.895446,38.929652,38.9525642,38.8963203,38.9132805,38.8875152,38.9051132,38.9051132,38.9148941,38.8997535,38.8949262,38.9052097,38.9052097,38.8906299,38.8875601,38.891524,38.9025101,38.8451437,38.9202844,38.89711,38.9004478,38.896335,38.91738,38.8792802,38.8796946,38.8617902,38.9066494,38.9627901,38.842913,38.92464,38.9628428,38.8437805,38.925765,38.899166,38.8949174,38.8438904,38.8627,38.8627,38.8627,38.8940392,38.9002101,38.829442,38.8860648,38.862163,38.9015198,38.900789,38.88853,38.8861399,38.8875997,38.9454193,38.9454193,38.9454193,38.9454193,38.9454193,38.8513565,38.9256046,38.852707,38.897411,38.9035072,38.9292376,38.896278,38.903743,38.913486,38.913486,38.8757072,38.9350802,38.8876547,38.8504028,38.9565697,38.896084,38.896084,38.905771,38.90593,38.918743,38.9567001,38.9053688,38.90537,38.90537,38.9273,38.949267,38.9188004,38.967857,38.8875152,38.9040259,38.8977585,38.9561272,38.9055524,38.9055524,38.950247,38.889926,38.889926,38.889926,38.889926,38.889926,38.8900892,38.889943,38.8592977,38.9336416,38.9003368,38.8898098,38.8898098,38.9216497,38.827434,38.9047323,38.9047323,38.9218341,38.8449526,38.9362259,38.9593887,38.9753608,38.840331,38.90192,38.8829903,38.916437,38.9193687,38.850755,38.855426,38.9047928,38.8671379,38.8894806,38.9070396,38.847435,38.8666496,38.877067,38.9194107,38.9194107,38.91941,38.876947,38.8978102,38.8991508,38.9006615,38.9452591,38.889943,38.889943,38.900274,38.900274,38.900274,38.905576,38.9642334,38.9647675,38.895839,38.895839,38.895839,38.9026295,38.9562884,38.8920368,38.8920368,38.882995,38.910186,38.974253,38.9002001,38.8985505,38.8920797,38.9202309,38.90582,38.9563675,38.9002001,38.877067,38.91983,38.952583,38.9325904,38.9325904,38.8431511,38.8431511,38.8431511,38.8431511,38.8623903,38.8623903,38.8623903,38.843505,38.8447809,38.8449278,38.932301,38.905771,38.905771,38.8461418,38.8461418,38.8854713,38.824966,38.860268,38.9110947,38.926322,38.921066,38.8471642,38.8459167,38.8815155,38.858634,38.880813,38.910196,38.8845802,38.8400612,38.8629799,38.8629799,38.877465,38.896324,38.8847579,38.925402,38.9004364,38.870636,38.870636,38.8519388,38.8753501,38.896955,38.925783,38.8556747,38.9284672,38.870278,38.8693167,38.8693167,38.929717,38.885746,38.8621216,38.8573135,38.8697243,38.8697243,38.884015,38.8678513,38.920855,38.9320683,38.8619303,38.8619303,38.9303246,38.8897896,38.8897896,38.8897896,38.8897896,38.8897896,38.8581467,38.8603363,38.917084,38.917084,38.886012,38.8868082,38.882914,38.862412,38.862412,38.9206009,38.891984,38.889805,38.889805,38.9294938,38.917797,38.917797,38.9292488,38.8899098,38.916993,38.916993,38.916993,38.916993,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.875267,38.8285127,38.9111649,38.87445,38.9182625,38.913936,38.913936,38.913936,38.913936,38.912754,38.9001551,38.912102,38.8927992,38.8934563,38.8875803,38.8897998,38.8467215,38.9212836,38.8874435,38.8468388,38.919372,38.919372,38.901175,38.9357109,38.8659912,38.888877,38.9283042,38.9158554,38.915855,38.863388,38.9207746,38.8990936,38.888366,38.89812,38.89812,38.920224,38.920224,38.920224,38.920224,38.8657565,38.8994819,38.8994819,38.938348,38.90675,38.90675,38.84313,38.88031,38.8875656,38.8811913,38.8811913,38.8811913,38.8811913,38.8811913,38.8811913,38.8811913,38.8811913,38.8811913,38.8811913,38.8848267,38.883213,38.8872519,38.884639,38.884639,38.885427,38.886379,38.8971303,38.898415,38.8900146,38.896617,38.89888,38.89888,38.8945044,38.8889721,38.8897998,38.8899292,38.893955,38.8920039,38.8910217,38.893047,38.8926315,38.8149438,38.8149438,38.8149438,38.9768696,38.898437,38.9061774,38.8265533,38.9057777,38.8860715,38.9062055,38.9062699,38.957855,38.9535255,38.9523141,38.918644,38.9514427,38.8989296,38.9363213,38.842945,38.9013386,38.9155302,38.8613704,38.8921997,38.8409963,38.883567,38.8837869,38.8837869,38.9227371,38.922737,38.9376524,38.8612831,38.8380358,38.935597,38.8438416,38.925819,38.8584448,38.9352699,38.9354094,38.9354094,38.893775,38.8919999,38.928681,38.873064,38.8888206,38.8935703,38.8361194,38.8937531,38.8440081,38.9361698,38.940874,38.9326057,38.8625755,38.922824,38.9194069,38.92275,38.9049026,38.8817062,38.901462,38.8812603,38.8898087,38.8841202,38.8901443,38.882972,38.8956356,38.8986725,38.909812,38.8761787,38.8984515,38.8973885,38.890102,38.888912,38.8923416,38.8831558,38.893572,38.903244,38.88031,38.88031,38.88031,38.88031,38.88031,38.9070778,38.9554672,38.9628417,38.8225327,38.9551849,38.8964005,38.9553215,38.8979242,38.9062271,38.91574,38.916812,38.912849,38.9071148,38.9265662,38.9121323,38.91896,38.909786,38.909786,38.958873,38.957832,38.8798523,38.8533399,38.8533399,38.8533399,38.8533399,38.879734,38.879491,38.879491,38.9418907,38.903688,38.8462783,38.8462783,38.941087,38.898618,38.9052763,38.940766,38.8788302,38.94275,38.9407202,38.878774,38.9173698,38.9173698,38.882987,38.9212319,38.924458,38.924458,38.9337498,38.9337498,38.919414,38.9244857,38.9083939,38.9010517,38.944053,38.9104702,38.9104702,38.8975487,38.8649075,38.853794,38.8642001,38.9106017,38.9425774,38.860043,38.8886699,38.9001799,38.9001799,38.8783702,38.8866898,38.8839727,38.8673973,38.881347,38.9002249,38.8853855,38.8800812,38.8800812,38.8800812,38.854286,38.889878,38.9089241,38.890224,38.889683,38.872817,38.890399,38.9098674,38.9098674,38.8733711,38.909378,38.9113694,38.9072113,38.906716,38.9080849,38.913074,38.8810544,38.900452,38.8845558,38.8821696,38.911136,38.8999863,38.9072402,38.9456501,38.9613228,38.9643593,38.899038,38.9056503,38.9259781,38.9259781,38.907372,38.907372,38.8288003,38.8288003,38.87994,38.87994,38.87994,38.87994,38.87994,38.87994,38.8792973,38.9557161,38.8831801,38.9072328,38.9072328,38.9073296,38.90733,38.9002101,38.9096113,38.9006496,38.9157066,38.9157066,38.8669548,38.8806682,38.911503,38.914237,38.9058952,38.8803291,38.880329,38.8577105,38.9082184,38.8827395,38.901622,38.871121,38.880111,38.896784,38.8978271,38.8815765,38.9255416,38.9255416,38.8793016,38.895545,38.88433,38.8665256,38.9162926,38.8910557,38.9018903,38.8821259,38.8918798,38.9020434,38.891973,38.8929071,38.9021223,38.9020407,38.8782578,38.8898749,38.9014587,38.885581,38.868766,38.9029594,38.889665,38.9059486,38.9080276,38.9005501,38.898196,38.911639,38.8936844,38.870586,38.9023666,38.897314,38.9555401,38.916851,38.8682107,38.9002201,38.9056545,38.9547998,38.9547998,38.9025203,38.9534446,38.9002048,38.9046898,38.914151,38.919175,38.874518,38.9168821,38.9167783,38.873099,38.9502333,38.9073897,38.840786,38.896149,38.9547729,38.945396,38.9462603,38.842044,38.871103,38.9336298,38.8520813,38.8350677,38.899973,38.9218106,38.8674,38.9419327,38.9419327,38.912281,38.8568059,38.9463501,38.8949356,38.8446742,38.904112,38.8674181,38.92583,38.8777902,38.8961147,38.8378213,38.885504,38.9015808,38.8679848,38.83227,38.9407302,38.832759,38.940861,38.867004,38.9147772,38.932415,38.8642273,38.9017014,38.8321055,38.8321055,38.8321055,38.8661065,38.913874,38.9109761,38.8664398,38.9097137,38.864232,38.9015923,38.8998695,38.8847686,38.8994296,38.8994296,38.893325,38.8966146,38.891009,38.8964996,38.8920079,38.8976365,38.900767,38.8637339,38.864059,38.893715,38.880764,38.880764,38.901635,38.901635,38.901635,38.901635,38.903147,38.8934489,38.9007835,38.9007835,38.8708641,38.8708641,38.8801079,38.8811607,38.89251,38.892544,38.9039116,38.903911,38.8920173,38.8920173,38.9120038,38.957798,38.9064033,38.8848305,38.827305,38.9542236,38.916637,38.916637,38.876718,38.9470493,38.872728,38.9464035,38.91748,38.9167633,38.8981705,38.924995,38.9080086,38.8244578,38.8323817,38.880477,38.924755,38.9589691,38.8251498,38.900589,38.896124,38.904691,38.876479,38.8826698,38.8770553,38.919271,38.900432,38.887642,38.9337349,38.9483236,38.9483236,38.9483236,38.8839607,38.9345203,38.8903694,38.9325703,38.9325703,38.834732,38.935155,38.9348183,38.8735,38.92366,38.896965,38.9255201,38.9384484,38.9419178,38.9397874,38.8763512,38.8763512,38.917098,38.917099,38.890474,38.8902068,38.8662547,38.859691,38.8952293,38.8893394,38.8893394,38.8922802,38.8657176,38.89011,38.8933525,38.8879318,38.89536,38.8934021,38.8899547,38.8612826,38.8866997,38.8836569,38.8945594,38.8732546,38.8952608,38.886192,38.9005716,38.895633,38.8954499,38.8761701,38.8997759,38.8952217,38.895221,38.9587312,38.848394,38.848394,38.8346825,38.926615,38.8242264,38.9305,38.9305,38.9305,38.9305,38.9305,38.9305,38.9305,38.845172,38.9430839,38.9311834,38.8970585,38.943705,38.949136,38.9417981,38.89744,38.900255,38.8526794,38.88923,38.90019,38.90019,38.9027508,38.9389218,38.9232375,38.9232375,38.9232375,38.9407752,38.8977547,38.9004173,38.9015083,38.904079,38.920882,38.9072637,38.8782005,38.932869,38.9020386,38.932869,38.932869,38.90962,38.908643,38.8911074,38.9574165,38.89478,38.9025202,38.9037097,38.8312181,38.8689431,38.908646,38.8876574,38.905724,38.9094537,38.8920403,38.9089508,38.9261343,38.8725891,38.872589,38.8608093,38.8720818,38.8685849,38.8756404,38.856037,38.8717365,38.8717365,38.87802,38.8549184,38.8549197,38.8759419,38.870795,38.9341011,38.92127,38.8517189,38.876415,38.882496,38.8698502,38.8771485,38.9351623,38.9204722,38.9279093,38.9092297,38.9092244,38.9154243,38.8958918,38.9449782,38.8803906,38.835424,38.960513,38.911863,38.9089012,38.9089012,38.9089012,38.9089035,38.8764899,38.92097,38.9182663,38.887619,38.858027,38.9641553,38.9561174,38.891961,38.9272194,38.8294434,38.8783897,38.8952057,38.8774998,38.8568361,38.93126,38.93126,38.8738802,38.8738802,38.87074,38.8679695,38.8706025,38.8592796,38.9193382,38.9193382,38.8455582,38.917977,38.9174,38.8597565,38.932291,38.8736,38.930172,38.8740768,38.9255943,38.8567772,38.8612001,38.9324417,38.9216993,38.8693433,38.930158,38.874407,38.8678674,38.8727657,38.861785,38.918587,38.8604262,38.8746446,38.859584,38.918613,38.9272423,38.8765215,38.8872337,38.91434,38.887264,38.8954582,38.909455,38.848045,38.8224381,38.8411789,38.8875655,38.8875655,38.8875655,38.839553,38.9307213,38.861522,38.8351006,38.965808,38.89478,38.919519,38.880628,38.9556808,38.9157448,38.8615417,38.9567958,38.9367458,38.9256348,38.935759,38.857822,38.8708992,38.932828,38.8456573,38.8738785,38.874425,38.86313,38.874705,38.91745,38.91745,38.8730202,38.915729,38.85302,38.8624889,38.8745232,38.8745232,38.8745232,38.8745232,38.8745232,38.8745232,38.8745232,38.8745232,38.874523,38.8517647,38.8625874,38.9175097,38.874514,38.8736,38.936155,38.965095,38.965095,38.8832207,38.91259,38.9576144,38.9078202,38.9196014,38.907812,38.878273,38.864444,38.864828,38.884124,38.908989,38.894408,38.907235,38.894629,38.8212913,38.894619,38.9310989,38.9310989,38.9312281,38.9052467,38.9052467,38.9342422,38.9036085,38.9299698,38.898368,38.8901652,38.875279,38.875279,38.875279,38.916834,38.915591,38.919778,38.8650284,38.8650284,38.8650284,38.8650284,38.921368,38.8483467,38.93418,38.917239,38.917239,38.917239,38.932399,38.85106,38.865351,38.9331865,38.8509755,38.896293,38.9178886,38.9174742,38.876372,38.876372,38.9173501,38.8792701,38.898312,38.89733,38.9408798,38.8849316,38.91261,38.911254,38.911254,38.9421082,38.9139826,38.9139826,38.9139826,38.9031105,38.91112,38.927588,38.927588,38.899969,38.8941231,38.894801,38.884727,38.945015,38.8224983,38.8224983,38.8917122,38.8997474,38.899708,38.9137306,38.91373,38.872287,38.882919,38.8984667,38.915719,38.960228,38.933444,38.9268498,38.8827,38.8863599,38.8309593,38.900205,38.9025,38.822444,38.9256247,38.9028435,38.9201813,38.9201813,38.919943,38.9078755,38.9057884,38.9074554,38.9547636,38.9407497,38.9407497,38.8237625,38.9547195,38.887309,38.9357735,38.924768,38.9275017,38.927269,38.9230194,38.9230194,38.9272421,38.927486,38.9415398,38.9192062,38.9191708,38.9158601,38.9153183,38.943161,38.9331999,38.93355,38.926754,38.934542,38.934542,38.9165843,38.9091263,38.960227,38.959025,38.9375992,38.9832,38.9847015,38.9461302,38.9450245,38.9299511,38.8993301,38.89933,38.9441185,38.9573526,38.977901,38.9260445,38.9260445,38.9288199,38.9341011,38.9341011,38.934101,38.9279616,38.9279616,38.907108,38.9646759,38.9392509,38.938574,38.938944,38.9590565,38.9366798,38.9577332,38.936274,38.9364433,38.956272,38.957244,38.9549026,38.909966,38.927943,38.9547,38.9546999,38.9431241,38.9126267,38.9518166,38.9518166,38.9126703,38.9431603,38.951187,38.9510299,38.9462348,38.965328,38.9607086,38.9083138,38.929875,38.9352188,38.934168,38.899712,38.8978043,38.9041563,38.92477,38.9041405,38.9338799,38.903754,38.90509,38.927601,38.9023539,38.9259186,38.9259186,38.925918,38.9072402,38.913414,38.923424,38.923594,38.9113235,38.911323,38.9066582,38.9182663,38.911324,38.9701309,38.9262597,38.9157181,38.915429,38.9322319,38.983455,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9071923,38.9649364,38.9170101,38.8953473,38.926859,38.9795532,38.9070778,38.9758075,38.9400024,38.9382744,38.9194069,38.9170101,38.887569,38.887569,38.887569,38.818565,38.9348869,38.9028397,38.9486602,38.9468651,38.9468651,38.948766,38.948496,38.91958,38.9058897,38.9460497,38.9449768,38.9449768,38.944976,38.942209,38.9435425,38.9435425,38.912582,38.918918,38.9571574,38.9433072,38.9661674,38.9223976,38.9678177,38.9675217,38.940441,38.9650459,38.9650459,38.9650459,38.965045,38.965045,38.9347992,38.9347992,38.82611,38.93484,38.9634164,38.905529,38.905529,38.905529,38.9236157,38.924836,38.9243126,38.9248201,38.905254,38.940126,38.9023552,38.9036936,38.9028092,38.9038774,38.9038774,38.897068,38.9053975,38.9027763,38.906875,38.9010887,38.901088,38.8993034,38.8993034,38.9115448,38.90206,38.8975296,38.927211,38.927211,38.935221,38.9352036,38.989006,38.902443,38.9070396,38.9076076,38.9037044,38.9037044,38.992327,38.914011,38.894955,38.9333106,38.9316704,38.9001551,38.9127474,38.9127474,38.897699,38.9001999,38.93755,38.9056499,38.9229083,38.9921167,38.8987054,38.9103797,38.9921703,38.907018,38.9170001,38.9191499,38.9170001,38.9386797,38.9442062,38.9369396,38.9363529,38.8875253,38.93813,38.9331131,38.9628377,38.8875702,38.9054222,38.913879,38.913879,38.8997649,38.9322166,38.8962673,38.9157072,38.9157072,38.921736,38.910511,38.94163,38.9381701,38.9489326,38.912847,38.9192974,38.9374177,38.9290268,38.921073,38.9247513,38.9264346,38.930382,38.9610198,38.928741,38.928741,38.9263181,38.9294205,38.93271,38.9141355,38.932004,38.934588,38.9480373,38.9211235,38.9323128,38.9323128,38.9431697,38.9590676,38.9051729,38.9536075,38.9286898,38.9631984,38.9292107,38.9292107,38.9292107,38.9292107,38.9662575,38.9662575,38.9662575,38.9265501,38.9265501,38.9184029,38.9788169,38.9615402,38.9626592,38.96241,38.9286348,38.991412,38.931484,38.9920991,38.9073958,38.933764,38.9328384,38.954935,38.9621773,38.989088,38.9522209,38.93658,38.9262778,38.902151,38.9268417,38.91726,38.932792,38.9413342,38.9027901,38.9027901,38.893698,38.9041938,38.8983755,38.9552445,38.9126032,38.8961298,38.8972798,38.8998098,38.8998098,38.91699,38.902895,38.925861,38.931149,38.906478,38.9309797,38.9302025,38.9723401,38.8822724,38.8822724,38.8822724,38.8822724,38.896946,38.9638965,38.920201,38.920201,38.91426,38.919523,38.9519272,38.9191628,38.9191628,38.9560966,38.9560966,38.9449348,38.905085,38.907617,38.934085,38.9596358,38.9649003,38.954895,38.954895,38.954895,38.919101,38.9261799,38.918538,38.9137726,38.9126194,38.91177,38.9108357,38.9108357,38.966568,38.9040718,38.918305,38.9235191,38.933064,38.9029942,38.9029942,38.8936937,38.8936937,38.891679,38.9032061,38.9008377,38.9030537,38.907248,38.899833,38.902229,38.9187431,38.9015465,38.9000587,38.898993,38.9113121,38.9113121,38.913703,38.905185,38.9097675,38.9138298,38.9026489,38.9282513,38.9282513,38.9262123,38.9271314,38.9281198,38.9265789,38.9273608,38.9166896,38.9166896,38.9127474,38.89846,38.9225349,38.878618,38.925067,38.926138,38.8999196,38.9243889,38.93892,38.981224,38.948385,38.9533195,38.901195,38.9591503,38.9479239,38.9186926,38.900131,38.908566,38.902914,38.9110778,38.9178848,38.9178848,38.9053103,38.909813,38.897199,38.9104462,38.910539,38.917442,38.913906,38.913906,38.9211884,38.9159927,38.91676,38.9038767,38.8953198,38.9126091,38.905948,38.9140798,38.9180998,38.967205,38.923341,38.9283104,38.9214398,38.9128456,38.9020691,38.9020691,38.8954398,38.907474,38.9622116,38.9622116,38.9231987,38.9622116,38.9528592,38.9191438,38.901577,38.901576,38.960977,38.9096045,38.9155249,38.9097501,38.9088475,38.9013299,38.9025301,38.902272,38.9096501,38.9086113,38.900207,38.9053726,38.9196014,38.9196014,38.9196014,38.901252,38.937164,38.8965476,38.8989273,38.9382973,38.9382973,38.898997,38.9373398,38.8920998,38.89548,38.9899834,38.9632139,38.9295006,38.909442,38.9610654,38.9574075,38.9708575,38.905323,38.9287146,38.898693,38.9344635,38.9531951,38.917574,38.9210911,38.8932525,38.926921,38.8997682,38.8847948,38.9209468,38.904291,38.9097876,38.9112575,38.8999473,38.9178973,38.902524,38.9162602,38.914332,38.9096501,38.9096501,38.8972798,38.8954753,38.9001551,38.9169551,38.9169551,38.9110851,38.901254,38.9155249,38.912524,38.9216021,38.9226897,38.9003375,38.9003375,38.8956577,38.8984573,38.8984573,38.8932867,38.9097977,38.9157066,38.890628,38.890628,38.890628,38.890628,38.90134,38.9026402,38.9026402,38.9026402,38.9026368,38.8875694,38.8887405,38.8920897,38.8887403,38.8848397,38.8962673,38.8811523,38.9453249,38.935165,38.877403,38.9036293,38.932839,38.9031095,38.9470901,38.8772542,38.901335,38.901335,38.9034271,38.912857,38.904016,38.9006226,38.922926,38.906856,38.913595,38.9099007,38.9020729,38.9146385,38.909802,38.896119,38.902649,38.910266,38.9038774,38.9007003,38.9232054,38.9232054,38.921604,38.9099117,38.903002,38.9018523,38.9355998,38.885124,38.885124,38.9480591,38.9348755,38.901226,38.901226,38.8872871,38.926887,38.9701653,38.8957863,38.895786,38.9275197,38.95826,38.9178543,38.917854,38.8960849,38.8989944,38.9142342,38.905499,38.9010506,38.9636078,38.892895,38.8926838,38.8961747,38.8997649,38.8997649,38.8989525,38.894664,38.894664,38.894664,38.922127,38.930052,38.9074669,38.9020729,38.910351,38.9109535,38.9090805,38.9090805,38.9090805,38.908566,38.9078564,38.8961365,38.8961365,38.9038774,38.902787,38.9127474,38.89352,38.9013299,38.9102798,38.9072402,38.9072402,38.9155698,38.9722697,38.9498102,38.912733,38.946279,38.948082,38.9604263,38.9375916,38.946266,38.940959,38.90375,38.90375,38.942611,38.9302475,38.9302475,38.9259796,38.927036,38.93183,38.9175758,38.9175758,38.9288098,38.8968391,38.920101,38.9275374,38.9275398,38.985158,38.919008,38.9521751,38.902137,38.917444,38.9131927,38.9034538,38.929744,38.9093246,38.9182625,38.9010048,38.919017,38.919017,38.9084854,38.918259,38.9247597,38.905384,38.902794,38.9154424,38.8875172,38.899729,38.896254,38.9140777,38.8850302,38.89282,38.88604,38.9035803,38.9035803,38.9025202,38.8944098,38.8875601,38.896292,38.907238,38.909825,38.913673,38.903976,38.882575,38.9280012,38.8855553,38.8994751,38.8994751,38.9127502,38.907819,38.914878,38.8949966,38.9024752,38.8972952,38.8961003,38.9170001,38.9200598,38.91261,38.906311,38.906311,38.906311,38.906311,38.906311,38.906311,38.906311,38.889386,38.905994,38.8859253,38.9585419,38.9050789,38.8800852,38.9044914,38.9627571,38.938874,38.936092,38.916745,38.9792213,38.912336,38.9346973,38.984924,38.9366003,38.90807,38.9106674,38.931285,38.9101403,38.909159,38.922184,38.9856807,38.90939,38.9090881,38.9226703,38.894748,38.900495,38.905824,38.9087715,38.9051056,38.90223,38.9059448,38.9059448,38.921749,38.9024752,38.945963,38.9202543,38.96165,38.96165,38.9205704,38.94464,38.880866,38.9254684,38.9210375,38.8808334,38.9421501,38.894996,38.917137,38.8920448,38.9504929,38.9092599,38.906587,38.9324265,38.9347076,38.966657,38.949603,38.9522061,38.913815,38.9050099,38.9430195,38.9546898,38.9245452,38.9508355,38.914805,38.944561,38.944561,38.904833,38.9057617,38.91425,38.9481773,38.948177,38.9383698,38.93631,38.9363086,38.9243198,38.9050602,38.9270477,38.9473991,38.90332,38.9478797,38.946929,38.9181786,38.923406,38.9192429,38.917121,38.919246,38.918913,38.8944675,38.8984466,38.8984466,38.9167023,38.9002168,38.9112776,38.8959836,38.876084,38.919659,38.9002113,38.9002113,38.9207001,38.9056597,38.9090299,38.9118697,38.903741,38.920163,38.876169,38.876169,38.876169,38.913727,38.923862,38.8768199,38.9057482,38.9269001,38.9016228,38.9116211,38.9245453,38.9285879,38.9614818,38.921001,38.9169551,38.9169551,38.9085377,38.9277772,38.9584778,38.9616374,38.9276397,38.9286301,38.92377,38.9562099,38.9507926,38.9614999,38.9004475,38.9171375,38.9014674,38.9869293,38.9057972,38.9057972,38.9057972,38.8961298,38.9025202,38.9025202,38.9025202,38.9090805,38.914913,38.9595871,38.904205,38.9290298,38.941237,38.9108102,38.9097628,38.945623,38.9455663,38.9455663,38.9455663,38.9687843,38.9083328,38.891742,38.905305,38.905014,38.9049416,38.9049416,38.9049416,38.904941,38.9059809,38.9059809,38.9053164,38.9051802,38.9430423,38.943256,38.92964,38.9614677,38.9033852,38.903385,38.9615135,38.961513,38.96244,38.9163399,38.958478,38.916739,38.9182549,38.9071953,38.9100505,38.8922238,38.895248,38.8962673,38.9014674,38.9038767,38.8859803,38.91261,38.91261,38.8998098,38.8998098,38.8973401,38.9524307,38.9297791,38.8924408,38.9041901,38.88533,38.9233398,38.919105,38.919105,38.919105,38.956344,38.875141,38.957532,38.9140964,38.9140899,38.9137298,38.9056597,38.9200439,38.9234123,38.877242,38.877242,38.9239845,38.9021225,38.9176827,38.9130287,38.9231224,38.9231202,38.878027,38.878027,38.916418,38.9021454,38.9037399,38.9037399,38.8999863,38.9016151,38.878079,38.90629,38.9068452,38.9035721,38.939827,38.933811,38.904907,38.904907,38.904907,38.979442,38.936985,38.9027461,38.925504,38.906263,38.953308,38.9379807,38.905376,38.9126205,38.9049034,38.910372,38.906753,38.9069752,38.878079,38.878079,38.878079,38.878079,38.878079,38.9012951,38.886934,38.8958334,38.9015331,38.9246913,38.9025302,38.9002101,38.904443,38.924583,38.924583,38.929424,38.928508,38.9248449,38.9248449,38.9308739,38.9294243,38.87911,38.9025236,38.9170001,38.9025202,38.910247,38.8848444,38.9237595,38.9615744,38.9612694,38.9612694,38.9612694,38.9612699,38.8820666,38.894869,38.917202,38.941596,38.9496848,38.93471,38.884052,38.9168472,38.916847,38.9363403,38.941761,38.934413,38.906597,38.90664,38.9435425,38.934535,38.9053868,38.9053868,38.90525,38.7766321,38.9324315,38.915592,38.8999062,38.9040413,38.9182739,38.916843,38.907899,38.907899,38.907899,38.906429,38.9085518,38.9079291,38.9309,38.917968,38.9309958,38.908459,38.9213715,38.9273224,38.907507,38.907507,38.916799,38.9039421,38.9039421,38.934742,38.9690678,38.916844,38.919002,38.919033,38.9699117,38.9056952,38.9039665,38.9039665,38.899637,38.9406433,38.901285,38.9180649,38.901285,38.9087167,38.9169831,38.8946499,38.8998199,38.9025302,38.9010403,38.8973502,38.8973502,38.9044299,38.8898048,38.931842,38.982822,38.9746984,38.8997897,38.8997897,38.9048798,38.895846,38.9712498,38.9712498,38.896787,38.908669,38.9143232,38.912845,38.9701271,38.8997535,38.9024752,38.908525,38.88822,38.88822,38.894805,38.9255791,38.8764699,38.8898199,38.920221,38.929667,38.896335,38.86301,38.8631021,38.894287,38.8792802,38.858972,38.8317757,38.962717,38.920389,38.9550858,38.8292,38.8627,38.8627,38.8931003,38.8414107,38.9062498,38.900286,38.882961,38.9002537,38.901493,38.8306923,38.920273,38.9062209,38.91983,38.91983,38.8853601,38.8875997,38.8874622,38.9172991,38.9454193,38.9454193,38.9454193,38.9454193,38.9454193,38.9454193,38.9454193,38.9454193,38.9454193,38.9454193,38.917715,38.8976225,38.8426208,38.849972,38.864886,38.9003073,38.8696327,38.9311199,38.9168167,38.8989441,38.839092,38.9172388,38.900329,38.8901652,38.937642,38.8962479,38.8998098,38.905771,38.918737,38.895439,38.90537,38.949267,38.8933,38.929367,38.8875152,38.8977585,38.9686601,38.9747695,38.8994343,38.9055524,38.889926,38.889926,38.889926,38.889926,38.912754,38.889943,38.889943,38.880885,38.829863,38.8921474,38.9003368,38.8812336,38.8886699,38.9028098,38.8764699,38.9037198,38.8954499,38.9256046,38.8842758,38.8951146,38.827434,38.940909,38.8436101,38.843929,38.8615074,38.8435511,38.8587685,38.861121,38.925583,38.9220397,38.9161753,38.8640035,38.9025,38.8898199,38.847965,38.8839532,38.9172894,38.9082,38.861601,38.919293,38.9172891,38.877067,38.877067,38.877067,38.9194107,38.9194107,38.8461817,38.9417992,38.9058609,38.865475,38.8840351,38.9051399,38.8978216,38.9464134,38.9463797,38.9163939,38.897598,38.8991508,38.8730316,38.8898199,38.889943,38.889943,38.8958397,38.895839,38.8947351,38.9562884,38.882995,38.9002001,38.9002001,38.8331164,38.899288,38.9057603,38.899199,38.875865,38.956346,38.9696808,38.9090958,38.8770676,38.833488,38.833488,38.91983,38.9613772,38.9106102,38.8443108,38.8849983,38.952583,38.9407245,38.961691,38.8453217,38.8439789,38.9410706,38.8451196,38.905771,38.905771,38.905771,38.879348,38.900438,38.908321,38.8635854,38.8916769,38.8632088,38.8478813,38.8785588,38.8792802,38.9002001,38.9332831,38.8629797,38.881031,38.896324,38.9028053,38.8847579,38.8493615,38.903319,38.8494978,38.901565,38.912325,38.917316,38.933351,38.8804588,38.870636,38.870636,38.9234602,38.883037,38.883037,38.8712654,38.8617388,38.8769668,38.86205,38.8788376,38.8620262,38.8778143,38.8701888,38.928357,38.8823395,38.8583864,38.8697243,38.8697243,38.8697243,38.8697243,38.884015,38.8651924,38.8619333,38.889809,38.889809,38.8968272,38.8819884,38.8897896,38.8581467,38.918613,38.885793,38.889947,38.917296,38.890922,38.9186161,38.8692932,38.891984,38.891984,38.889805,38.862622,38.917797,38.8636576,38.8983002,38.916993,38.916993,38.916993,38.916993,38.916993,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.833488,38.896384,38.951772,38.87445,38.8716774,38.913936,38.909782,38.9127541,38.905117,38.8839727,38.863393,38.8685688,38.8823741,38.948178,38.9013306,38.915855,38.921072,38.900262,38.8467903,38.943947,38.9442299,38.898254,38.9115677,38.8994819,38.90675,38.926762,38.8985042,38.902334,38.8874348,38.8872866,38.8811913,38.8811913,38.8811913,38.8811913,38.8811913,38.8811913,38.8811913,38.8811913,38.8811913,38.8811913,38.8811913,38.8811913,38.892257,38.9038606,38.881881,38.9039864,38.8908995,38.8864899,38.8990135,38.8884513,38.8972677,38.8905776,38.8897099,38.8974113,38.8900146,38.89888,38.89888,38.89888,38.8984243,38.8885892,38.896144,38.9328012,38.8899292,38.8935051,38.889801,38.889801,38.890822,38.8910217,38.8917389,38.8149438,38.9096337,38.9618979,38.9310978,38.9557828,38.9057777,38.892664,38.8920797,38.9096391,38.9062699,38.9062699,38.9096401,38.9121198,38.910382,38.9262798,38.8250046,38.9724274,38.953525,38.963989,38.9556225,38.8953743,38.895284,38.875103,38.831285,38.9025202,38.8216286,38.86948,38.8614998,38.92245,38.9315437,38.8961848,38.879411,38.861457,38.8949013,38.8612831,38.859096,38.857879,38.90399,38.9175262,38.859116,38.9389902,38.8991089,38.919699,38.8907701,38.8875985,38.8644295,38.833319,38.902816,38.888572,38.9361698,38.8625755,38.8625755,38.8625755,38.8991432,38.9228249,38.9372304,38.8818311,38.8898087,38.9025116,38.9025116,38.875049,38.8901443,38.900571,38.8897077,38.8767319,38.878826,38.8785057,38.878505,38.878505,38.8761787,38.8761787,38.8984515,38.8901024,38.8940719,38.877952,38.894205,38.885685,38.8983634,38.8965988,38.88791,38.88031,38.88031,38.88031,38.88031,38.88031,38.88031,38.88031,38.8762835,38.8718934,38.9601722,38.9693527,38.825431,38.8728218,38.907478,38.9052728,38.9065742,38.9056503,38.896862,38.9062271,38.9062271,38.8955727,38.876329,38.9172592,38.9005089,38.9146347,38.897037,38.919475,38.9040565,38.9114151,38.9640507,38.9567642,38.907478,38.9538002,38.9214516,38.9538002,38.9128647,38.909786,38.9578323,38.957832,38.9001652,38.8533382,38.8798523,38.8798523,38.8533399,38.879491,38.879491,38.879491,38.879491,38.8535078,38.852385,38.861571,38.8462783,38.8462783,38.8614655,38.9468079,38.8897998,38.862079,38.862825,38.883037,38.9029617,38.9029617,38.8879089,38.8696175,38.8788302,38.9026724,38.8932813,38.9173698,38.8515589,38.856922,38.919414,38.902729,38.944385,38.9004593,38.8805678,38.880572,38.9256898,38.897548,38.9247262,38.861722,38.9245596,38.9104535,38.9104535,38.9003181,38.8880101,38.9001799,38.865043,38.9010201,38.9002249,38.883132,38.8800812,38.8800812,38.8800812,38.854286,38.9101189,38.904625,38.889878,38.8896697,38.8887901,38.8763199,38.8902245,38.909868,38.9098674,38.889448,38.887632,38.8803142,38.886043,38.8746834,38.911456,38.9113694,38.910677,38.909689,38.886609,38.9123595,38.9123595,38.908146,38.893049,38.911136,38.8865395,38.911827,38.907505,38.907505,38.920463,38.9073113,38.8729706,38.9223249,38.951419,38.876464,38.9072243,38.8746347,38.87994,38.87994,38.87994,38.87994,38.87994,38.87994,38.8792973,38.8793003,38.8792979,38.9073296,38.9073296,38.9202301,38.90733,38.9569449,38.9569449,38.9108237,38.899765,38.8667697,38.925221,38.868099,38.9611216,38.910224,38.910224,38.9209671,38.84599,38.914238,38.914236,38.859564,38.908729,38.880329,38.9271774,38.8667174,38.905892,38.8540535,38.854038,38.9253397,38.8921373,38.8853949,38.9001537,38.903892,38.903892,38.8929071,38.909275,38.9014587,38.9014587,38.890119,38.9059486,38.9059486,38.9060888,38.9060888,38.8804359,38.892181,38.906535,38.9006366,38.8984875,38.8919,38.88028,38.894843,38.9030304,38.9073689,38.8916283,38.8916283,38.906073,38.8752403,38.9051467,38.9056462,38.9266638,38.909245,38.8746419,38.916851,38.8974726,38.8850852,38.9096315,38.958726,38.9547983,38.9547998,38.9548025,38.9025203,38.9140851,38.9002101,38.9107789,38.914151,38.914151,38.8764737,38.8718927,38.9168002,38.840786,38.840786,38.840786,38.840786,38.840786,38.8791601,38.90752,38.9266473,38.860675,38.864509,38.871103,38.871103,38.9336298,38.9326652,38.9218106,38.9408569,38.9258232,38.869128,38.869128,38.869128,38.8446703,38.8937912,38.905693,38.8962572,38.8902206,38.94046,38.94046,38.94046,38.94046,38.8919898,38.8420982,38.9083935,38.8985062,38.8815681,38.8937683,38.92001,38.900393,38.8679848,38.8826904,38.9381485,38.879407,38.941658,38.908309,38.832759,38.8968849,38.914866,38.9147772,38.880909,38.864597,38.866921,38.8648682,38.901825,38.8424759,38.8321312,38.8661065,38.8642464,38.9417803,38.9097137,38.909713,38.9109389,38.9013098,38.867351,38.9026,38.895227,38.8859062,38.8848598,38.8994296,38.893029,38.868042,38.8975,38.901396,38.8974876,38.8718531,38.9032211,38.9023901,38.8780251,38.9007835,38.9024095,38.9026947,38.89251,38.9039116,38.8920173,38.957798,38.957798,38.9471675,38.827653,38.876198,38.928611,38.910274,38.925407,38.8451076,38.925434,38.925434,38.8451118,38.8451118,38.884792,38.9150314,38.903649,38.907402,38.907402,38.906232,38.877228,38.883472,38.883472,38.9524978,38.869815,38.8969197,38.8919744,38.8314142,38.896124,38.9462473,38.8292046,38.8928153,38.9033101,38.94709,38.8732499,38.8811235,38.8858925,38.883049,38.896335,38.8326171,38.8903694,38.8903694,38.9136869,38.9315497,38.933819,38.865571,38.92366,38.946399,38.8625599,38.9524421,38.9384484,38.842508,38.89734,38.88923,38.917099,38.8877217,38.8877217,38.8877217,38.858165,38.864424,38.8879204,38.864817,38.8898711,38.8662547,38.889498,38.859691,38.8881264,38.885032,38.8952293,38.8645756,38.8908386,38.8955699,38.8893394,38.8881697,38.892421,38.892421,38.8657176,38.8657176,38.8657176,38.895623,38.893394,38.894213,38.8940974,38.8831821,38.894492,38.897703,38.8952608,38.9021708,38.899891,38.9452602,38.8750305,38.8792802,38.9029236,38.9542618,38.942486,38.9305,38.9305,38.9305,38.9305,38.9305,38.9305,38.9305,38.9100739,38.9432589,38.9432589,38.9432589,38.9174198,38.869426,38.926316,38.945691,38.8518286,38.9555702,38.89744,38.9387897,38.9231886,38.8394981,38.8722115,38.946354,38.899108,38.945385,38.858236,38.893384,38.92774,38.8933372,38.865168,38.871649,38.86346,38.9142803,38.8653297,38.8653297,38.8680431,38.932869,38.9020386,38.932869,38.907982,38.9554242,38.8975029,38.9270101,38.902639,38.824069,38.8378521,38.8879204,38.8936313,38.9037097,38.9025202,38.9083964,38.8737717,38.9084686,38.90847,38.8689431,38.908646,38.908646,38.9576492,38.835823,38.9094537,38.9094537,38.926169,38.836292,38.941345,38.90895,38.962219,38.9235601,38.8725891,38.8725891,38.8725891,38.8608093,38.8608093,38.874851,38.855262,38.8609577,38.8599535,38.9258041,38.8717365,38.8717365,38.924631,38.9252224,38.9252224,38.9348412,38.8766098,38.877815,38.881848,38.9240379,38.9240379,38.882496,38.8770873,38.8616982,38.926058,38.9457721,38.9089012,38.9089012,38.9088998,38.9258995,38.8810081,38.9449196,38.9275,38.92097,38.9294797,38.8680305,38.90787,38.90787,38.8937172,38.8875997,38.8875997,38.8310929,38.93126,38.8741612,38.8530549,38.8721227,38.8734001,38.917977,38.872983,38.8549163,38.917835,38.859149,38.937869,38.8736,38.8736,38.8736,38.8736,38.8530099,38.8531474,38.8628047,38.8567772,38.8744926,38.862788,38.851762,38.9215598,38.8727657,38.874687,38.8745736,38.8604262,38.8604262,38.8600709,38.8600709,38.9331201,38.8597374,38.9271355,38.858606,38.887673,38.8947431,38.8898635,38.91434,38.91434,38.8465271,38.9653625,38.8924904,38.909455,38.8376808,38.9083305,38.922547,38.8875655,38.9307213,38.8256416,38.9007607,38.947354,38.880628,38.864769,38.864769,38.845092,38.9256348,38.9256348,38.956744,38.9044165,38.872505,38.932313,38.915943,38.9028206,38.8983748,38.900354,38.9269562,38.91745,38.8573524,38.844362,38.8742906,38.9311615,38.8745232,38.8745232,38.8745232,38.8745232,38.8745232,38.874523,38.9321646,38.8516083,38.8736,38.8736,38.9176521,38.9314062,38.899046,38.9025394,38.9002101,38.9002101,38.8850697,38.8925397,38.8874321,38.9078202,38.8798714,38.864444,38.8941422,38.908989,38.894408,38.8424644,38.8424644,38.830993,38.9252853,38.9056511,38.942842,38.9310989,38.9310989,38.880615,38.8870373,38.865108,38.9072418,38.9312223,38.941288,38.8426247,38.8933403,38.9141992,38.850832,38.8901652,38.875279,38.8949928,38.9214478,38.875215,38.9340898,38.9284897,38.9172229,38.9172229,38.9428787,38.8511706,38.850022,38.8650284,38.8650284,38.8951334,38.9304581,38.914287,38.917239,38.917239,38.917239,38.9053917,38.8901901,38.9196883,38.9196883,38.9196883,38.853844,38.9029963,38.895977,38.9331101,38.9331167,38.9331167,38.87411,38.87411,38.87411,38.9174742,38.8763478,38.8773845,38.8813099,38.8860588,38.8875702,38.8921702,38.9452605,38.904978,38.928008,38.8776651,38.821155,38.9000626,38.9139826,38.9139826,38.9463897,38.899969,38.899969,38.9140445,38.8941231,38.8941231,38.961463,38.9660919,38.8984667,38.8863907,38.933445,38.933445,38.933444,38.9412613,38.8940699,38.8863599,38.8797301,38.9037298,38.9196997,38.9197006,38.9197006,38.8290518,38.8841222,38.8471489,38.8246231,38.9201813,38.9201813,38.920181,38.8427315,38.8319435,38.9072304,38.958235,38.905788,38.9156113,38.8239392,38.847161,38.9547195,38.9248093,38.9356951,38.9289131,38.9230194,38.9249104,38.9249099,38.9359589,38.9178208,38.9222412,38.9321785,38.936657,38.91665,38.9169693,38.9157582,38.9156532,38.918998,38.874317,38.90912,38.9481926,38.9222847,38.934542,38.91802,38.9345512,38.916125,38.9353544,38.9313948,38.9465523,38.956871,38.9375992],[-77.0267699,-77.026755,-77.0267181,-77.0266934,-77.0266934,-77.026678,-77.026643,-77.0266149,-77.026611,-77.02656,-77.0265399,-77.026537,-77.0264903,-77.0264816,-77.026467,-77.0264511,-77.0264435,-77.026437,-77.026437,-77.026437,-77.0262985,-77.0262985,-77.026298,-77.026214,-77.026214,-77.026214,-77.026214,-77.0261612,-77.0261402,-77.0261355,-77.026114,-77.026114,-77.0260925,-77.0260759,-77.0857285,-77.085698,-77.085506,-77.085506,-77.085447,-77.0850525,-77.084846,-77.0847397,-77.0846463,-77.0843735,-77.0843506,-77.0838279,-77.083018,-77.0826302,-77.0826035,-77.082603,-77.0824814,-77.082428,-77.0823364,-77.0821072,-77.081957,-77.0817413,-77.081726,-77.081207,-77.081004,-77.080827,-77.080827,-77.080749,-77.0806503,-77.08055,-77.080228,-77.080169,-77.0559769,-77.055938,-77.0558701,-77.0556761,-77.0555191,-77.0554504,-77.0553602,-77.0552503,-77.0552292,-77.0549344,-77.054916,-77.054127,-77.054073,-77.054071,-77.054071,-77.0537109,-77.0537109,-77.05371,-77.053664,-77.0534854,-77.0533003,-77.05319,-77.05298,-77.0528336,-77.052759,-77.0369873,-77.036921,-77.036918,-77.0368881,-77.03688,-77.0368729,-77.0368729,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368652,-77.0368651,-77.0260759,-77.0260477,-77.0260376,-77.0260315,-77.02599,-77.02598,-77.0259599,-77.025893,-77.025818,-77.0257901,-77.0257124,-77.0257124,-77.0257,-77.025657,-77.0255837,-77.0255401,-77.0254288,-77.025375,-77.025375,-77.0252598,-77.0252343,-77.0251525,-77.0251163,-77.025032,-77.025012,-77.0249405,-77.0249198,-77.024846,-77.024772,-77.024757,-77.079386,-77.0792694,-77.079155,-77.0787811,-77.0784378,-77.0784378,-77.0784378,-77.0782978,-77.0782339,-77.0781097,-77.0779724,-77.077942,-77.0775681,-77.0774536,-77.0774536,-77.0773315,-77.0770875,-77.0770302,-77.076897,-77.076828,-77.075469,-77.0754318,-77.074852,-77.0748257,-77.0746963,-77.0526539,-77.0525902,-77.052457,-77.052455,-77.052234,-77.052017,-77.052017,-77.051994,-77.051994,-77.051968,-77.0519189,-77.0518799,-77.0518799,-77.0515857,-77.051473,-77.0514679,-77.051467,-77.050827,-77.050788,-77.050773,-77.050765,-77.050621,-77.050621,-77.050544,-77.0504227,-77.0503914,-77.0503914,-77.050384,-77.050369,-77.036804,-77.0367889,-77.0367432,-77.0366961,-77.03669,-77.03669,-77.0366867,-77.0366867,-77.0366599,-77.036647,-77.0366049,-77.036552,-77.0365499,-77.0365398,-77.0365398,-77.0365258,-77.0365103,-77.0365009,-77.0365009,-77.0364902,-77.0245973,-77.024579,-77.024579,-77.024579,-77.024496,-77.0244751,-77.0244478,-77.0244446,-77.024444,-77.024444,-77.0243774,-77.0243753,-77.0242996,-77.024292,-77.0242844,-77.0242844,-77.0242767,-77.0242596,-77.024235,-77.0242157,-77.0242097,-77.024154,-77.024147,-77.024147,-77.024147,-77.024147,-77.024147,-77.0241326,-77.0241098,-77.0241085,-77.0240273,-77.0240267,-77.0240267,-77.074414,-77.07431,-77.0740076,-77.073967,-77.0738668,-77.0738398,-77.0737534,-77.0735952,-77.0734024,-77.0733666,-77.0732378,-77.0731902,-77.0731433,-77.0731433,-77.0730362,-77.0730362,-77.0730362,-77.0730362,-77.0730004,-77.0729093,-77.0728378,-77.0726657,-77.0725,-77.072113,-77.072099,-77.0718613,-77.0364802,-77.0364802,-77.0364685,-77.0364685,-77.036465,-77.03646,-77.0364517,-77.036447,-77.0364352,-77.0363924,-77.0363802,-77.0363464,-77.0363098,-77.036272,-77.0361999,-77.036169,-77.0361552,-77.035952,-77.0358353,-77.02402,-77.02402,-77.02402,-77.0240173,-77.0240173,-77.024002,-77.0239911,-77.0239749,-77.0239697,-77.0239697,-77.0239697,-77.0239697,-77.0239697,-77.023969,-77.0239603,-77.0238859,-77.023843,-77.023811,-77.023775,-77.023674,-77.0235801,-77.023544,-77.023531,-77.0234299,-77.0233612,-77.071604,-77.0716003,-77.0711975,-77.071162,-77.071162,-77.071162,-77.071162,-77.071162,-77.071162,-77.0711532,-77.0710449,-77.0710144,-77.070885,-77.0707186,-77.0704041,-77.0704041,-77.0702972,-77.0702398,-77.0701981,-77.0698978,-77.069607,-77.0695648,-77.0694427,-77.0694204,-77.0692749,-77.0689926,-77.068766,-77.0503083,-77.0501675,-77.0501675,-77.0500997,-77.0500521,-77.0500107,-77.0500107,-77.0500107,-77.0500107,-77.0500107,-77.0494919,-77.0491562,-77.049118,-77.049118,-77.049118,-77.0489866,-77.0488679,-77.0488679,-77.0488103,-77.04879,-77.0485992,-77.0485077,-77.023284,-77.023188,-77.0231362,-77.0231236,-77.0231094,-77.0230899,-77.023062,-77.022972,-77.0229498,-77.0229498,-77.022949,-77.0229263,-77.0229111,-77.0227982,-77.022757,-77.0226898,-77.0226135,-77.022522,-77.0225067,-77.0224915,-77.022456,-77.022445,-77.022445,-77.022392,-77.022381,-77.0222931,-77.0478869,-77.0477448,-77.047666,-77.047149,-77.0471272,-77.0470119,-77.0470012,-77.046998,-77.0469971,-77.046981,-77.046905,-77.0468903,-77.046821,-77.0467061,-77.0467054,-77.0467054,-77.0466498,-77.0466309,-77.0465606,-77.0465552,-77.0465088,-77.0465088,-77.046171,-77.046094,-77.0458527,-77.0458527,-77.035514,-77.035429,-77.0353194,-77.0350571,-77.035057,-77.035001,-77.0349714,-77.0349714,-77.0349579,-77.0349579,-77.0349573,-77.0349503,-77.0349503,-77.0348467,-77.0347672,-77.0347672,-77.0347354,-77.0345999,-77.0345999,-77.034582,-77.0345798,-77.0345597,-77.0343323,-77.034307,-77.034147,-77.0340652,-77.034065,-77.0340118,-77.0339966,-77.0338878,-77.033814,-77.03376,-77.0336688,-77.0336397,-77.0336397,-77.033593,-77.0334902,-77.0334244,-77.033419,-77.0334097,-77.0222931,-77.0222931,-77.022293,-77.0222321,-77.022232,-77.022201,-77.022186,-77.0221049,-77.0220961,-77.0220874,-77.0220874,-77.0220861,-77.0220861,-77.022076,-77.022072,-77.0220566,-77.0220108,-77.022,-77.0219962,-77.0219775,-77.0219674,-77.0219674,-77.021948,-77.0219198,-77.0219198,-77.0219198,-77.0219198,-77.0321397,-77.032137,-77.0321363,-77.0321263,-77.0321263,-77.0320961,-77.032067,-77.0320257,-77.0320257,-77.0320176,-77.0320176,-77.032015,-77.032015,-77.0320143,-77.0320076,-77.0320056,-77.0319995,-77.0319995,-77.031964,-77.031964,-77.03196,-77.03196,-77.03196,-77.03196,-77.03196,-77.03196,-77.0319519,-77.0319519,-77.0219198,-77.0219116,-77.0219097,-77.0219097,-77.0219097,-77.0219097,-77.0219097,-77.0219097,-77.0218997,-77.021899,-77.0218903,-77.0218903,-77.0218903,-77.0218903,-77.021873,-77.0218521,-77.0218282,-77.0217347,-77.0216217,-77.021598,-77.021492,-77.021491,-77.0214303,-77.021362,-77.021247,-77.0458527,-77.045794,-77.0457916,-77.0457611,-77.0457458,-77.04571,-77.0454072,-77.0453415,-77.0453415,-77.0452805,-77.0450424,-77.0449673,-77.0449566,-77.0449097,-77.0449003,-77.0448456,-77.0445845,-77.044405,-77.0443551,-77.0210475,-77.02104,-77.0210212,-77.0209552,-77.020931,-77.020861,-77.0207443,-77.0206999,-77.02053,-77.02053,-77.02053,-77.02053,-77.0204086,-77.020382,-77.020303,-77.0202942,-77.020164,-77.0201263,-77.0201035,-77.020103,-77.020103,-77.020099,-77.020099,-77.0200952,-77.020093,-77.044337,-77.0442398,-77.0442047,-77.044204,-77.0439877,-77.0439877,-77.0439835,-77.0439662,-77.04393,-77.0439224,-77.043902,-77.043902,-77.04384,-77.0437775,-77.0437775,-77.0437469,-77.0437469,-77.0437469,-77.0437469,-77.0436696,-77.0436363,-77.043579,-77.043576,-77.0435638,-77.0435518,-77.0435189,-77.0435015,-77.04347,-77.0434499,-77.0434499,-77.0434499,-77.0434499,-77.033393,-77.0332184,-77.033203,-77.0331281,-77.0331192,-77.033119,-77.0330697,-77.0329895,-77.0329698,-77.032923,-77.0328612,-77.032848,-77.0328471,-77.0328256,-77.0327854,-77.032774,-77.032725,-77.0327197,-77.032692,-77.032692,-77.0326399,-77.032601,-77.0325089,-77.0324193,-77.0324173,-77.0324173,-77.0324173,-77.032382,-77.0323715,-77.0323563,-77.032356,-77.032356,-77.032356,-77.0323486,-77.0322999,-77.032257,-77.032214,-77.0322101,-77.0321397,-77.0200764,-77.0200577,-77.020007,-77.0199591,-77.0199376,-77.0199233,-77.019913,-77.0199127,-77.0199127,-77.0199127,-77.0199101,-77.0199101,-77.0199101,-77.0199101,-77.0199001,-77.0199001,-77.0198999,-77.0197754,-77.019763,-77.0197296,-77.019583,-77.019569,-77.019569,-77.0193863,-77.019233,-77.019169,-77.0319499,-77.0319499,-77.0319499,-77.0319499,-77.0319499,-77.0319499,-77.0319499,-77.0319494,-77.0319398,-77.0319398,-77.031929,-77.031929,-77.031929,-77.031929,-77.031929,-77.0319023,-77.0318922,-77.031872,-77.031858,-77.0316772,-77.031592,-77.031592,-77.0315704,-77.031539,-77.0315094,-77.0314407,-77.031433,-77.0313721,-77.031304,-77.0312119,-77.0311966,-77.0309179,-77.0433242,-77.0432621,-77.043254,-77.043129,-77.0430298,-77.042982,-77.042982,-77.0429798,-77.0427626,-77.042572,-77.042572,-77.0425629,-77.0425568,-77.0423508,-77.0423173,-77.0422668,-77.0421219,-77.042121,-77.042089,-77.042088,-77.0420609,-77.04206,-77.0419928,-77.0307999,-77.0306648,-77.0305557,-77.030465,-77.030364,-77.0302505,-77.030197,-77.030197,-77.030195,-77.030195,-77.030177,-77.0300674,-77.0300217,-77.0300217,-77.029991,-77.029939,-77.029935,-77.0299072,-77.068092,-77.0679932,-77.067964,-77.067962,-77.0677882,-77.0674973,-77.0674973,-77.0674469,-77.0674469,-77.0674133,-77.0672699,-77.0671103,-77.066925,-77.0668461,-77.06649,-77.0662145,-77.0661675,-77.066159,-77.066139,-77.0661025,-77.0660708,-77.065795,-77.065635,-77.065622,-77.041964,-77.041893,-77.041893,-77.041852,-77.0418466,-77.0417386,-77.0417386,-77.0417279,-77.0417098,-77.041708,-77.041708,-77.041708,-77.041706,-77.041704,-77.0416997,-77.041686,-77.0416845,-77.0416806,-77.0416702,-77.0416702,-77.0416253,-77.041591,-77.041591,-77.041446,-77.041446,-77.041446,-77.0413589,-77.0412759,-77.0412759,-77.041223,-77.041162,-77.0297492,-77.0297478,-77.0297297,-77.0297103,-77.0297002,-77.0296991,-77.0296896,-77.0296875,-77.0296774,-77.0296287,-77.0296197,-77.0296097,-77.0294189,-77.029218,-77.065337,-77.065189,-77.0650864,-77.0649927,-77.0646199,-77.064483,-77.06447,-77.064324,-77.0643082,-77.0642799,-77.064178,-77.064178,-77.0641632,-77.064163,-77.064106,-77.064005,-77.0639954,-77.063957,-77.0637039,-77.0635605,-77.0634155,-77.063023,-77.063023,-77.0628711,-77.0628711,-77.0628101,-77.0628101,-77.0625916,-77.02906,-77.0290298,-77.0290263,-77.028846,-77.02874,-77.0286713,-77.028656,-77.0285338,-77.028468,-77.0284653,-77.0284653,-77.028366,-77.0283051,-77.0282669,-77.0282565,-77.0281801,-77.0281801,-77.0281801,-77.0281385,-77.0281197,-77.0281197,-77.028106,-77.0190693,-77.0189309,-77.0189298,-77.0189298,-77.018929,-77.018795,-77.018766,-77.0187186,-77.018713,-77.0184326,-77.018409,-77.0183563,-77.0183487,-77.0182599,-77.0182495,-77.018188,-77.018188,-77.018066,-77.017939,-77.0178542,-77.0177697,-77.0411319,-77.041123,-77.040947,-77.040947,-77.0409164,-77.040839,-77.0408341,-77.0404282,-77.040302,-77.0402909,-77.0402603,-77.0402198,-77.040163,-77.040163,-77.0399628,-77.039962,-77.0398712,-77.0398712,-77.0398712,-77.039778,-77.039777,-77.039758,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.0624,-77.062338,-77.062338,-77.0622711,-77.062194,-77.0621185,-77.0614482,-77.0614348,-77.061401,-77.0613959,-77.0613708,-77.061314,-77.061314,-77.0613098,-77.0612443,-77.0611914,-77.0611303,-77.060966,-77.0603599,-77.0600586,-77.0599747,-77.059835,-77.0598297,-77.0597992,-77.059603,-77.059585,-77.059228,-77.059228,-77.0591998,-77.059186,-77.059118,-77.0590668,-77.0589294,-77.039709,-77.039709,-77.039709,-77.039709,-77.0396465,-77.0394702,-77.03945,-77.03945,-77.0394299,-77.0392294,-77.0392294,-77.0391892,-77.0390701,-77.038943,-77.038943,-77.0389102,-77.038826,-77.038826,-77.0281003,-77.0280838,-77.0280806,-77.0280802,-77.0280701,-77.0280701,-77.028057,-77.028057,-77.028057,-77.028057,-77.028057,-77.0280553,-77.0280399,-77.028038,-77.0280299,-77.0280211,-77.0279922,-77.0279922,-77.0279568,-77.0279092,-77.0278448,-77.027825,-77.027786,-77.0277179,-77.0276566,-77.0275803,-77.0275803,-77.027563,-77.027563,-77.027563,-77.027513,-77.027513,-77.027513,-77.0274887,-77.0274582,-77.0273972,-77.0273895,-77.0273895,-77.0589294,-77.05869,-77.0584259,-77.0584259,-77.057876,-77.0578156,-77.0575485,-77.0575485,-77.0573883,-77.0573883,-77.0570896,-77.0570299,-77.056315,-77.0561676,-77.0561099,-77.0388107,-77.0388107,-77.0388107,-77.038804,-77.038749,-77.0386662,-77.038594,-77.0385455,-77.0384502,-77.0384402,-77.0383224,-77.038208,-77.038208,-77.038208,-77.038143,-77.0380446,-77.0380446,-77.0378189,-77.037508,-77.0373611,-77.037334,-77.0373328,-77.037325,-77.0373154,-77.0371628,-77.0370025,-77.0273895,-77.027351,-77.027351,-77.0273438,-77.0273399,-77.027259,-77.027216,-77.0270991,-77.0270978,-77.0270978,-77.0270965,-77.0270502,-77.0270502,-77.0270401,-77.0270401,-77.0270401,-77.0270401,-77.027008,-77.0269012,-77.026886,-77.0268443,-77.0162389,-77.0162,-77.0161497,-77.0160653,-77.016015,-77.0159912,-77.0159912,-77.0158104,-77.015754,-77.01556,-77.0155222,-77.0154495,-77.015446,-77.0153765,-77.0153765,-77.0153765,-77.0153584,-77.015336,-77.015286,-77.015245,-77.0152226,-77.0152203,-77.0151901,-76.999502,-76.9994798,-76.9993698,-76.9993336,-76.9993235,-76.9992909,-76.999202,-76.999189,-76.9991773,-76.9989395,-76.9989038,-76.9989014,-76.9986972,-76.998634,-76.9985275,-76.998484,-76.9984833,-76.9984287,-76.9984207,-76.9984203,-76.998382,-76.998283,-76.998268,-76.998262,-76.9981782,-76.998168,-76.998138,-76.9772503,-76.9772302,-76.9772302,-76.9772302,-76.9772302,-76.9771906,-76.9771611,-76.9771093,-76.977092,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.9770432,-76.977005,-76.9766617,-76.976467,-76.976325,-76.9762551,-76.9762421,-76.9762297,-76.976224,-76.9762203,-76.976188,-76.976089,-76.9760721,-76.9760064,-76.97596,-76.9759478,-76.9758911,-76.9758876,-76.9758777,-76.9758274,-76.975793,-76.975674,-76.9756403,-76.9755555,-76.9753835,-77.0151639,-77.0151405,-77.015063,-77.015003,-77.0150017,-77.014991,-77.014842,-77.0147697,-77.0147697,-77.0147697,-77.014648,-77.0144806,-77.0144501,-77.0144196,-77.0142721,-77.0142601,-77.014233,-77.0141796,-77.0141561,-77.0141327,-77.014118,-77.0141159,-77.014058,-77.014058,-77.014058,-77.014058,-77.014058,-77.014058,-77.014058,-76.995231,-76.9951993,-76.9951172,-76.9950058,-76.9949821,-76.9949703,-76.9949502,-76.9949301,-76.9949301,-76.994922,-76.9948898,-76.994751,-76.994743,-76.994728,-76.9947128,-76.994697,-76.994685,-76.994664,-76.9945755,-76.994522,-76.994401,-76.9943,-76.994254,-76.994231,-76.994123,-76.994054,-76.9938343,-76.9789997,-76.9789803,-76.9789429,-76.9788284,-76.978828,-76.978816,-76.9787952,-76.978781,-76.9787674,-76.978673,-76.978386,-76.978381,-76.978381,-76.978312,-76.978184,-76.9781394,-76.978089,-76.978021,-76.9779205,-76.97792,-76.9777069,-76.9774997,-76.977272,-77.014015,-77.014015,-77.014015,-77.014015,-77.014015,-77.014015,-77.014008,-77.01393,-77.0138564,-77.0138148,-77.0138092,-77.013763,-77.013755,-77.0137223,-77.013722,-77.0137203,-77.013673,-77.0136669,-77.0136606,-77.0134601,-77.01322,-77.0130303,-77.0130303,-77.012993,-77.012886,-77.012854,-76.998138,-76.9979477,-76.9977605,-76.9977264,-76.997706,-76.9976699,-76.9976699,-76.9976699,-76.9975739,-76.9975003,-76.9975003,-76.997427,-76.9974213,-76.9973918,-76.9972958,-76.99726,-76.996994,-76.9968929,-76.996706,-76.9965675,-76.996515,-76.9964447,-76.996437,-76.99618,-76.9961624,-76.9961149,-76.996074,-76.9960197,-76.9960197,-76.9960197,-76.995989,-76.9959822,-76.995979,-76.995964,-76.9959205,-76.9959205,-76.995909,-76.9958527,-76.9957275,-76.9956665,-76.995666,-76.995606,-76.995567,-76.9955444,-76.9954681,-76.995461,-76.995443,-76.995345,-76.9953384,-76.9952927,-76.9952621,-76.962738,-76.962738,-76.962738,-76.962738,-76.962384,-76.962057,-76.9614501,-76.9612274,-76.9612045,-76.961204,-76.961196,-76.961193,-76.96095,-76.960835,-76.9607413,-76.960726,-76.9603899,-76.9603108,-76.9600449,-76.9599903,-76.9599172,-76.9599152,-76.959869,-76.9590607,-76.958914,-76.958908,-76.9588497,-76.9586868,-76.9586868,-76.9586868,-76.9586176,-76.9586176,-76.9585266,-76.9585266,-76.958519,-76.9584961,-76.958237,-76.958145,-76.9577801,-76.9573288,-76.9572403,-76.9571533,-76.9571533,-76.9571533,-76.957091,-76.9561615,-76.9561615,-76.9559723,-76.9559723,-76.9556122,-76.9556122,-76.95552,-76.9551926,-76.955031,-76.955031,-76.955031,-76.955031,-76.955031,-76.955031,-76.955031,-76.955031,-76.955031,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012725,-77.0126648,-77.012474,-77.0124664,-77.012466,-77.012351,-77.0123456,-76.9808015,-76.980788,-76.9807801,-76.9806111,-76.9806097,-76.9804306,-76.980277,-76.980216,-76.980216,-76.980123,-76.980088,-76.980088,-76.980088,-76.9800599,-76.979995,-76.9799271,-76.979902,-76.9796143,-76.9794919,-76.9794743,-76.979385,-76.979301,-76.979286,-76.9792499,-76.9792499,-76.9792175,-76.9792069,-76.9792069,-76.979128,-76.97905,-76.9254863,-76.9251862,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.924675,-76.9235102,-76.923449,-76.923393,-76.921987,-76.9218793,-76.921482,-76.9212875,-76.920822,-76.9193983,-76.9178279,-76.917091,-76.91706,-76.913424,-76.9132385,-76.9132385,-76.9132385,-76.9113312,-76.9110078,-76.6909207,-76.6909207,-76.6909207,-76.9764285,-76.9976744,-76.994961,-77.0123342,-77.0123021,-77.0122994,-77.012296,-77.0122719,-77.0122477,-77.01217,-77.01217,-77.012169,-77.0121599,-77.0120949,-77.0119247,-77.0118103,-77.011726,-77.0115875,-77.011585,-77.011421,-77.011402,-77.0113907,-77.011322,-77.0112097,-77.0111903,-77.0110016,-77.011001,-77.01083,-77.010696,-77.010649,-77.0106203,-77.010619,-76.9938002,-76.9937325,-76.993587,-76.9935601,-76.9935455,-76.993538,-76.9935373,-76.9935373,-76.993521,-76.993507,-76.9934852,-76.99332,-76.9932858,-76.9932798,-76.9932698,-76.9932207,-76.9932175,-76.993135,-76.992919,-76.992877,-76.992786,-76.9927575,-76.992752,-76.9927099,-76.992429,-76.992429,-76.9923172,-76.9922256,-76.9922002,-76.9921265,-76.9920883,-76.992002,-76.9915907,-76.9915314,-76.9915314,-76.9915297,-76.9326553,-76.9326477,-76.9326401,-76.9324722,-76.9316784,-76.9316601,-76.931365,-76.9311676,-76.9311371,-76.9311371,-76.9309949,-76.9300065,-76.9298782,-76.9297256,-76.929125,-76.9284973,-76.9282761,-76.927856,-76.927659,-76.927013,-76.9267114,-76.9265366,-76.926536,-76.926051,-76.926051,-77.0105667,-77.010503,-77.0103607,-77.0103098,-77.010305,-77.010292,-77.010275,-77.010186,-77.0100752,-77.0099451,-77.009902,-77.009895,-77.0098264,-77.00978,-77.009701,-77.009658,-77.009643,-77.0096054,-77.009506,-77.0094377,-77.0094299,-77.0094147,-77.0094147,-77.0093483,-76.9833534,-76.983342,-76.9833248,-76.9833007,-76.9833,-76.9833,-76.983207,-76.9830093,-76.9829941,-76.9828847,-76.9825211,-76.9822003,-76.9822003,-76.9821777,-76.982124,-76.982042,-76.982011,-76.982003,-76.981994,-76.9819336,-76.9819336,-76.9818509,-76.9814298,-76.981249,-76.981225,-76.981225,-76.9811615,-76.9810867,-76.9810791,-76.981079,-76.981016,-76.9866333,-76.9865347,-76.9862799,-76.9862699,-76.986235,-76.9861338,-76.9860935,-76.98608,-76.98608,-76.9859467,-76.9859198,-76.9859084,-76.9858702,-76.9858488,-76.9858398,-76.9858246,-76.9857401,-76.9857401,-76.98571,-76.9856751,-76.9856644,-76.9855497,-76.9854652,-76.9854344,-76.9853338,-76.9852982,-76.9852982,-76.985275,-76.985275,-76.985267,-76.985267,-76.9852066,-76.9852066,-76.985206,-76.985206,-76.937646,-76.937558,-76.937454,-76.9374466,-76.937273,-76.9372686,-76.9366455,-76.9362883,-76.9362869,-76.9358202,-76.935576,-76.935112,-76.935042,-76.93486,-76.934539,-76.9344489,-76.934341,-76.934285,-76.9342,-76.9342,-76.9342,-76.9337978,-76.9335327,-76.933113,-76.933095,-76.9330837,-77.0093307,-77.0093307,-77.0092628,-77.009231,-77.0092303,-77.009201,-77.00918,-77.0091699,-77.0091578,-77.00915,-77.0091411,-77.0091383,-77.0091383,-77.0091383,-77.0091356,-77.0091218,-77.0091171,-77.0091171,-77.0091171,-77.0091171,-77.0091171,-77.0091171,-77.0091171,-77.0091171,-77.0091146,-77.0091146,-77.0091144,-77.009104,-77.0091032,-77.0091032,-77.0091019,-77.0091019,-77.0091019,-77.0090975,-77.0090955,-76.9850925,-76.9850823,-76.9849396,-76.9848906,-76.984813,-76.9847717,-76.984751,-76.984751,-76.984751,-76.984726,-76.984664,-76.98443,-76.984114,-76.98393,-76.983838,-76.9837962,-76.9836976,-76.983668,-76.98364,-76.983487,-76.9834583,-76.9833597,-76.9426055,-76.9425558,-76.9425398,-76.9425398,-76.942407,-76.9422226,-76.9419202,-76.941821,-76.9417432,-76.9415454,-76.9414,-76.94107,-76.94107,-76.940905,-76.940828,-76.940551,-76.9397718,-76.939595,-76.9395752,-76.939552,-76.93924,-76.9391897,-76.9379801,-77.0090878,-77.0090878,-77.0090878,-77.0090874,-77.0090874,-77.0090714,-77.0090545,-77.0090526,-77.009015,-77.008992,-77.008992,-77.0089902,-77.0089741,-77.0089423,-77.0089297,-77.0089191,-77.0089124,-77.0089097,-77.0089027,-77.0088997,-77.008899,-77.008899,-77.0088849,-77.0088433,-77.0088299,-77.0087864,-76.988945,-76.988945,-76.988828,-76.9885699,-76.9883439,-76.9883439,-76.9883412,-76.9883097,-76.9882903,-76.988252,-76.9882278,-76.9881602,-76.9881134,-76.988112,-76.988112,-76.9881058,-76.9880219,-76.9880173,-76.9880142,-76.987922,-76.987888,-76.9878678,-76.9878678,-76.987854,-76.987834,-76.9877625,-76.9877625,-76.9876938,-76.987445,-76.987384,-76.9873233,-76.9873178,-76.9872513,-76.9872347,-76.987222,-76.9872131,-76.9870836,-76.9870698,-76.987061,-76.9870256,-76.987013,-76.9868989,-76.94853,-76.9478278,-76.947702,-76.9472122,-76.9471948,-76.9469943,-76.9465561,-76.9465464,-76.946372,-76.9463043,-76.946205,-76.9459686,-76.945216,-76.9450302,-76.9448395,-76.944802,-76.944534,-76.9434662,-76.9426565,-77.0087609,-77.008735,-77.008611,-77.008611,-77.008611,-77.008611,-77.008603,-77.0082932,-77.0081299,-77.0081279,-77.0080032,-77.0078898,-77.0078403,-77.0077972,-77.007766,-77.0077302,-76.991524,-76.9915015,-76.9914734,-76.9912883,-76.991229,-76.9912199,-76.991063,-76.9908218,-76.9907378,-76.990737,-76.990691,-76.9906647,-76.990654,-76.990544,-76.9905243,-76.9904199,-76.9904199,-76.9904086,-76.990311,-76.99031,-76.9902878,-76.9902677,-76.9902402,-76.954895,-76.9546802,-76.954635,-76.954387,-76.9541363,-76.9532966,-76.9522018,-76.952119,-76.952119,-76.952119,-76.9516525,-76.9512496,-76.9512121,-76.9508286,-76.9508286,-76.9508286,-76.9504089,-76.9501103,-76.9500212,-76.9499568,-76.9498837,-76.949315,-76.9491112,-76.9491112,-77.00762,-77.007559,-77.0075401,-77.0075401,-77.007421,-77.0074158,-77.007348,-77.007309,-77.0073013,-77.0073013,-77.0073013,-77.0073013,-77.0073013,-77.007247,-77.0071462,-77.0071308,-77.007055,-77.007013,-77.0069941,-77.006736,-77.006705,-77.0066238,-77.006619,-77.006619,-77.006609,-77.0065702,-76.990236,-76.990236,-76.9902302,-76.9902201,-76.990176,-76.9900853,-76.9900818,-76.9900818,-76.9900818,-76.9900818,-76.99008,-76.9900739,-76.990033,-76.990015,-76.9899063,-76.9899063,-76.989906,-76.9898399,-76.9897293,-76.9895663,-76.9895248,-76.9894943,-76.9894899,-76.9894028,-76.989364,-76.9892599,-76.9892398,-76.989195,-76.9891948,-76.9890399,-76.9890366,-76.9889896,-76.9889896,-76.9889896,-76.9889896,-77.006396,-77.0063858,-77.0063705,-77.0063705,-77.006355,-77.006292,-77.0062416,-77.0062408,-77.0062403,-77.0062103,-77.0061469,-77.0061062,-77.0061062,-77.0059204,-77.0058924,-77.0058902,-77.005867,-77.005714,-77.0056978,-77.005691,-77.00547,-76.9672266,-76.967178,-76.967178,-76.9671478,-76.9671075,-76.9668808,-76.96662,-76.966604,-76.9664604,-76.9664604,-76.9663799,-76.9662933,-76.9662371,-76.9659206,-76.96585,-76.9657974,-76.9657136,-76.9656219,-76.9656219,-76.96549,-76.9653802,-76.965209,-76.964768,-76.964762,-76.9647598,-76.964759,-76.964521,-76.964243,-76.9639053,-76.9639053,-76.9635838,-76.963512,-77.005371,-77.005297,-77.0049836,-77.0048086,-77.004775,-77.0046921,-77.0046403,-77.0045599,-77.00442,-77.004233,-77.0041504,-77.004129,-77.004118,-77.0038933,-77.0038933,-77.0035701,-77.0035298,-77.0035098,-77.0035098,-77.0034903,-77.003471,-77.003409,-76.9715298,-76.971473,-76.9714701,-76.9714701,-76.9711609,-76.971104,-76.971031,-76.9709625,-76.970871,-76.9708664,-76.9707969,-76.9707902,-76.97076,-76.970599,-76.970229,-76.9701843,-76.970008,-76.969979,-76.9699783,-76.969978,-76.9698715,-76.9697549,-76.9695432,-76.9695215,-76.969178,-76.9689602,-76.9687772,-76.9687772,-76.9687772,-76.968759,-76.968681,-76.968612,-76.9684219,-76.9684219,-76.968421,-76.968385,-76.968385,-76.9683228,-76.9682119,-76.96819,-76.9681473,-76.9676437,-76.967643,-76.967643,-76.9672403,-77.003351,-77.0033112,-77.003207,-77.0031128,-77.0031128,-77.003105,-77.003104,-77.0028426,-77.002809,-77.0028076,-77.002796,-77.002796,-77.002769,-77.0025737,-77.002571,-77.002565,-77.002565,-77.002475,-77.002469,-77.0024033,-77.0023117,-77.00229,-76.973187,-76.972969,-76.9729472,-76.9729309,-76.9728803,-76.9728546,-76.972832,-76.9726268,-76.97248,-76.9724661,-76.9723915,-76.9723599,-76.9723522,-76.972301,-76.972221,-76.9721527,-76.9720078,-76.9720078,-76.972007,-76.972007,-76.971931,-76.9719238,-76.971904,-76.971859,-76.971841,-76.971828,-76.971809,-76.9717484,-76.9716512,-77.002143,-77.002095,-77.0020294,-77.0020253,-77.0020198,-77.0019702,-77.001966,-77.0019387,-77.001851,-77.0018461,-77.0018448,-77.001831,-77.001812,-77.001709,-77.001669,-77.0016251,-77.0015717,-77.0013428,-77.0012976,-77.001242,-77.001104,-77.001104,-77.001104,-76.9751401,-76.975112,-76.9750509,-76.975003,-76.9748712,-76.97483,-76.9747314,-76.9746459,-76.974609,-76.9744873,-76.974396,-76.9743957,-76.9743957,-76.9741999,-76.9741597,-76.9741492,-76.9741364,-76.9739227,-76.9736099,-76.9736078,-76.973602,-76.9735107,-76.9734503,-76.9734503,-77.017572,-77.01754,-77.017458,-77.0172849,-77.0172536,-77.017235,-77.017227,-77.017224,-77.017048,-77.0170288,-77.017028,-77.0167847,-77.0164011,-77.0164011,-77.0163755,-77.0163555,-77.0163498,-77.0163498,-77.016318,-77.016318,-77.016273,-77.016273,-77.000833,-77.0007498,-77.000571,-77.00056,-77.00056,-77.00055,-77.0005493,-77.000247,-77.000016,-76.9999695,-76.999964,-76.9997976,-76.9995193,-77.1111755,-77.1061172,-77.1042633,-77.102562,-77.1017303,-77.1009759,-77.1005997,-77.1000264,-77.1000264,-77.098012,-77.094857,-77.094688,-77.0945892,-77.0939934,-77.0935247,-77.093203,-77.090768,-77.089146,-77.0888443,-77.0886383,-77.087722,-77.087547,-77.086257,-77.0858779,-77.0858779,-77.0268097,-77.0267868,-77.026763,-77.02668,-77.026599,-77.026557,-77.0265427,-77.0265339,-77.02653,-77.026521,-77.0264976,-77.0264903,-77.0264903,-77.0264816,-77.0264206,-77.0263367,-77.0263077,-77.0263062,-77.026306,-77.02629,-77.026229,-77.0262146,-77.026214,-77.0261993,-77.0261402,-77.0261369,-77.0261248,-77.0857391,-77.0857285,-77.085698,-77.0856247,-77.0854399,-77.08491,-77.08491,-77.08491,-77.0847914,-77.0846463,-77.0846463,-77.0845108,-77.0843506,-77.0841827,-77.0840836,-77.0840073,-77.08385,-77.0833323,-77.083285,-77.0830383,-77.0829849,-77.082702,-77.081957,-77.0808633,-77.0808411,-77.0807495,-77.080749,-77.0806198,-77.0805817,-77.08055,-77.08055,-77.08055,-77.080505,-77.0803952,-77.080163,-77.0560154,-77.055938,-77.0558701,-77.055676,-77.055541,-77.055397,-77.0551376,-77.0551376,-77.05507,-77.0550537,-77.054833,-77.0548172,-77.05478,-77.05417,-77.0540237,-77.0538716,-77.0538177,-77.0538177,-77.0537301,-77.0536999,-77.053664,-77.053478,-77.0534773,-77.0533752,-77.053299,-77.0530853,-77.053016,-77.0530059,-77.0369797,-77.036972,-77.036972,-77.0369568,-77.0368881,-77.0368805,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.02599,-77.02598,-77.0259699,-77.0259599,-77.0259138,-77.0258714,-77.0258636,-77.0255099,-77.025463,-77.0254288,-77.0253959,-77.0253871,-77.0253754,-77.0253682,-77.0253677,-77.0253564,-77.0253262,-77.0252819,-77.0252598,-77.0252202,-77.0252001,-77.025179,-77.0251525,-77.025121,-77.025121,-77.0249329,-77.0249023,-77.024856,-77.024839,-77.024789,-77.0801392,-77.080033,-77.0787811,-77.0784912,-77.0782978,-77.0782978,-77.0782339,-77.0781097,-77.07764,-77.0774536,-77.0774536,-77.0773523,-77.0773523,-77.0773315,-77.0773315,-77.0771961,-77.0771398,-77.0770861,-77.0770298,-77.0769587,-77.076913,-77.076913,-77.076828,-77.0766602,-77.076469,-77.076065,-77.076065,-77.0759201,-77.0759125,-77.0747452,-77.074684,-77.0746453,-77.052457,-77.052457,-77.052234,-77.052234,-77.052083,-77.052017,-77.052017,-77.0519943,-77.0519943,-77.051994,-77.0519791,-77.051963,-77.051918,-77.0518799,-77.0518799,-77.051879,-77.0516815,-77.0515964,-77.0515857,-77.0515857,-77.051473,-77.0514677,-77.0514677,-77.0514677,-77.0514371,-77.05141,-77.0509796,-77.050765,-77.0507126,-77.0507126,-77.050712,-77.050621,-77.0505447,-77.0504227,-77.0503914,-77.050391,-77.0503845,-77.0368576,-77.036855,-77.036855,-77.03685,-77.036834,-77.0368161,-77.036811,-77.036673,-77.036667,-77.0366599,-77.0366599,-77.0366599,-77.0366237,-77.0366049,-77.036598,-77.0365524,-77.0365512,-77.0365499,-77.0365398,-77.0365398,-77.0365331,-77.0365298,-77.0365003,-77.0364902,-77.0364902,-77.024674,-77.0246261,-77.024579,-77.024579,-77.024579,-77.024579,-77.0245712,-77.0244478,-77.0244478,-77.0244049,-77.0243774,-77.0243607,-77.0243378,-77.024284,-77.024244,-77.024216,-77.0242097,-77.0241648,-77.0241547,-77.024147,-77.024147,-77.0241326,-77.024127,-77.0241013,-77.024084,-77.0746453,-77.0743179,-77.0739037,-77.0737534,-77.0735092,-77.0734363,-77.0731433,-77.073101,-77.073089,-77.0730362,-77.0730362,-77.07258,-77.072573,-77.072492,-77.072361,-77.0722119,-77.0722112,-77.0721977,-77.0721977,-77.0721582,-77.0721582,-77.072131,-77.072113,-77.07201,-77.0719202,-77.036483,-77.036483,-77.0364802,-77.0364802,-77.0364775,-77.0364775,-77.0364685,-77.0364674,-77.036465,-77.036465,-77.03646,-77.036448,-77.0364379,-77.0364252,-77.0363924,-77.0363464,-77.0362998,-77.0362998,-77.036169,-77.036169,-77.0358963,-77.0358353,-77.03576,-77.0355988,-77.0240226,-77.02402,-77.02402,-77.02402,-77.0240173,-77.0239898,-77.0239697,-77.0239697,-77.0239697,-77.0239697,-77.0239697,-77.023968,-77.0239639,-77.0239603,-77.0239603,-77.023952,-77.023952,-77.0238571,-77.0238113,-77.0238,-77.0237961,-77.0237598,-77.0236816,-77.0235398,-77.023407,-77.023397,-77.0233612,-77.071652,-77.071604,-77.0714401,-77.0713425,-77.0711975,-77.0710449,-77.070549,-77.0705032,-77.070198,-77.069887,-77.069557,-77.0694405,-77.0694405,-77.06943,-77.0694112,-77.068741,-77.0686962,-77.0686314,-77.0502862,-77.050229,-77.050224,-77.0501876,-77.0501876,-77.0501876,-77.0501802,-77.0501802,-77.0501675,-77.0501299,-77.0500635,-77.0500107,-77.0500107,-77.0500107,-77.0499954,-77.049809,-77.049468,-77.049408,-77.049408,-77.04934,-77.049118,-77.0489967,-77.0489873,-77.0488679,-77.0488659,-77.0488579,-77.0488579,-77.0488559,-77.0488002,-77.0487923,-77.0485992,-77.0233078,-77.023201,-77.0232,-77.0231663,-77.0231663,-77.02314,-77.0231261,-77.0231161,-77.023109,-77.0230899,-77.0229987,-77.0229974,-77.022972,-77.022969,-77.0229498,-77.0229498,-77.0229451,-77.0229416,-77.0229397,-77.0229075,-77.0229001,-77.0226898,-77.0226593,-77.022599,-77.0225983,-77.0225983,-77.0225983,-77.0225983,-77.0222931,-77.048197,-77.047843,-77.0477295,-77.047729,-77.0471761,-77.04702,-77.046989,-77.046989,-77.046989,-77.0468903,-77.046883,-77.0468161,-77.0467054,-77.0467054,-77.046705,-77.0466498,-77.046643,-77.0466397,-77.0466397,-77.0466397,-77.0466309,-77.0465606,-77.0465606,-77.0465088,-77.046508,-77.0464375,-77.0462823,-77.0462799,-77.0458679,-77.0355535,-77.0355301,-77.0354824,-77.035057,-77.0349655,-77.0349503,-77.03494,-77.034931,-77.0348511,-77.034796,-77.0347519,-77.0347065,-77.0347065,-77.0347065,-77.0345999,-77.0345798,-77.0345597,-77.0345398,-77.03439,-77.034338,-77.0342026,-77.0339813,-77.0339813,-77.0337982,-77.0337372,-77.0337047,-77.0337014,-77.0336498,-77.0336397,-77.0336397,-77.0335907,-77.0335867,-77.0334854,-77.0334674,-77.033466,-77.022293,-77.022293,-77.022293,-77.0222899,-77.0222843,-77.0222661,-77.0222185,-77.022207,-77.0221863,-77.0220868,-77.0220861,-77.0220827,-77.022065,-77.0219775,-77.0219674,-77.0219573,-77.0219573,-77.0219422,-77.021938,-77.0219198,-77.0219198,-77.0219198,-77.0219198,-77.0219198,-77.032112,-77.0320663,-77.03206,-77.032056,-77.0320257,-77.0320176,-77.0320176,-77.0320176,-77.031964,-77.031964,-77.031964,-77.03196,-77.03196,-77.03196,-77.03196,-77.031952,-77.0319519,-77.0319519,-77.0219116,-77.0219097,-77.0219097,-77.0219097,-77.0219097,-77.0219097,-77.0219097,-77.0219097,-77.021906,-77.0219042,-77.0219033,-77.0218997,-77.0218997,-77.0218903,-77.0218903,-77.0218735,-77.0218621,-77.0218521,-77.021813,-77.0217428,-77.0217209,-77.0216,-77.02157,-77.0213552,-77.0212479,-77.0212479,-77.045852,-77.045769,-77.0455319,-77.04544,-77.04544,-77.04544,-77.0453796,-77.045364,-77.0452805,-77.045204,-77.045162,-77.045132,-77.0450666,-77.045039,-77.0449003,-77.0448902,-77.0448902,-77.0448902,-77.044467,-77.0444148,-77.0443551,-77.0443551,-77.0211716,-77.0211178,-77.021085,-77.0209113,-77.020889,-77.0208402,-77.0208402,-77.0208367,-77.0207651,-77.020744,-77.020744,-77.020744,-77.0206999,-77.0205197,-77.020457,-77.0202713,-77.0202713,-77.0202484,-77.020132,-77.020094,-77.0200865,-77.0200865,-77.0200865,-77.0200865,-77.0200811,-77.044277,-77.044205,-77.0442047,-77.044189,-77.044162,-77.0439296,-77.0439224,-77.0439224,-77.043902,-77.0438995,-77.043876,-77.043777,-77.043734,-77.0437,-77.043663,-77.0434499,-77.0434499,-77.033402,-77.033153,-77.033119,-77.0330939,-77.03307,-77.0330697,-77.0330505,-77.032894,-77.032875,-77.0328471,-77.032783,-77.0327619,-77.0327499,-77.0327298,-77.0327103,-77.0326969,-77.032692,-77.032691,-77.0326902,-77.0326889,-77.0325089,-77.032508,-77.0324998,-77.032475,-77.03242,-77.0324193,-77.0324173,-77.032417,-77.0324094,-77.032409,-77.032409,-77.032403,-77.0323944,-77.0323563,-77.032356,-77.032356,-77.032356,-77.032341,-77.0322266,-77.032211,-77.032207,-77.0321973,-77.0321397,-77.020068,-77.020068,-77.0199678,-77.0199665,-77.0199127,-77.0199101,-77.0199101,-77.0199101,-77.0199069,-77.0199001,-77.0198599,-77.0198599,-77.0198498,-77.019704,-77.01966,-77.0193543,-77.019304,-77.0192947,-77.0192337,-77.0192337,-77.019199,-77.019187,-77.019117,-77.0191116,-77.0319499,-77.0319499,-77.0319499,-77.0319499,-77.0319499,-77.0319499,-77.0319475,-77.031929,-77.031929,-77.031929,-77.031929,-77.031929,-77.031929,-77.0318307,-77.031685,-77.031685,-77.031673,-77.031673,-77.031658,-77.031638,-77.0315933,-77.031592,-77.03152,-77.03138,-77.03138,-77.0313721,-77.0313034,-77.0313034,-77.0313034,-77.0312119,-77.0312119,-77.0311855,-77.031103,-77.0308914,-77.0433242,-77.042903,-77.042894,-77.0428696,-77.0427626,-77.042726,-77.0427246,-77.0427203,-77.0427203,-77.0427094,-77.0427017,-77.042647,-77.0426178,-77.042572,-77.0425601,-77.042418,-77.042418,-77.0423508,-77.0422668,-77.042266,-77.0421677,-77.0421677,-77.0421219,-77.042098,-77.0306648,-77.0306648,-77.030523,-77.0305163,-77.0304834,-77.0304834,-77.0304666,-77.030465,-77.030415,-77.030334,-77.030229,-77.030214,-77.030197,-77.030197,-77.030197,-77.030197,-77.0301819,-77.0301595,-77.030143,-77.030136,-77.0300522,-77.0300446,-77.0300217,-77.029983,-77.029935,-77.029914,-77.0299072,-77.0299072,-77.0298996,-77.0682373,-77.067962,-77.067962,-77.0677903,-77.0676117,-77.06751,-77.0674973,-77.0671463,-77.0670801,-77.06707,-77.0669861,-77.066925,-77.0668736,-77.0667884,-77.066766,-77.066749,-77.0665894,-77.0664444,-77.0663801,-77.0662299,-77.0662299,-77.0662145,-77.066139,-77.0661025,-77.0660401,-77.041964,-77.041961,-77.0418493,-77.0418466,-77.0418432,-77.0417574,-77.0417404,-77.041708,-77.041708,-77.0416997,-77.0416997,-77.0416997,-77.0416803,-77.0416602,-77.0416602,-77.0416253,-77.041585,-77.041481,-77.041446,-77.041446,-77.0414047,-77.0413513,-77.0412952,-77.0412759,-77.0412759,-77.0412759,-77.041172,-77.0297961,-77.0297874,-77.0297679,-77.029726,-77.0297103,-77.0297002,-77.0297002,-77.0296875,-77.0296875,-77.0296836,-77.0296774,-77.0296774,-77.0296298,-77.0296245,-77.029621,-77.0294189,-77.0294189,-77.0293503,-77.029336,-77.0290985,-77.029079,-77.065522,-77.0654144,-77.0651798,-77.065152,-77.065104,-77.0649927,-77.0647936,-77.0643758,-77.0643082,-77.0641785,-77.064015,-77.064015,-77.064015,-77.063771,-77.06374,-77.0634,-77.0633794,-77.0633794,-77.0632916,-77.0631608,-77.0630188,-77.0629556,-77.06292,-77.0628586,-77.0628101,-77.0627548,-77.062691,-77.0290298,-77.0289154,-77.0288315,-77.0287628,-77.0287219,-77.0286713,-77.028634,-77.028587,-77.0285797,-77.028503,-77.0284653,-77.0284653,-77.0283966,-77.028386,-77.0283661,-77.0283508,-77.0283464,-77.0283051,-77.028304,-77.0282898,-77.028278,-77.0282666,-77.0282666,-77.0282565,-77.0282297,-77.0281881,-77.028174,-77.02817,-77.0281465,-77.0281385,-77.0281378,-77.0281103,-77.028105,-77.0190693,-77.0190056,-77.0189875,-77.0189298,-77.0189298,-77.0189298,-77.0189056,-77.018898,-77.0187058,-77.0186691,-77.018631,-77.0185471,-77.0185165,-77.0185165,-77.0184101,-77.0184101,-77.0184101,-77.018363,-77.0183563,-77.0183212,-77.0182953,-77.0182724,-77.0182566,-77.018188,-77.018188,-77.0181761,-77.0179354,-77.0179214,-77.0411301,-77.0411224,-77.041034,-77.041011,-77.040998,-77.0408936,-77.040839,-77.040649,-77.040611,-77.040163,-77.040163,-77.040163,-77.0401306,-77.0401306,-77.04013,-77.039978,-77.0399628,-77.039871,-77.039709,-77.0623093,-77.0622711,-77.0622711,-77.0622711,-77.0622711,-77.0622711,-77.0621301,-77.0618163,-77.061659,-77.0615387,-77.0614482,-77.061401,-77.061401,-77.0613959,-77.061314,-77.0613098,-77.0613098,-77.0613098,-77.0611572,-77.0608259,-77.0599747,-77.0598297,-77.0597992,-77.0597992,-77.0594711,-77.0592977,-77.0590668,-77.0590668,-77.059066,-77.058967,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.0396264,-77.039535,-77.0395278,-77.0395178,-77.0394745,-77.0394601,-77.039451,-77.03945,-77.03945,-77.0394363,-77.0394299,-77.039337,-77.0392761,-77.0391541,-77.039154,-77.038943,-77.0388901,-77.038867,-77.0280802,-77.0280701,-77.028038,-77.0280299,-77.0279922,-77.0279922,-77.0279903,-77.0279568,-77.0279568,-77.0279568,-77.0279541,-77.0279541,-77.0279454,-77.0278803,-77.0278696,-77.027825,-77.0278072,-77.0277634,-77.027526,-77.0274887,-77.027488,-77.0273972,-77.0589294,-77.0589294,-77.0589294,-77.0585327,-77.058477,-77.0584259,-77.0584259,-77.058414,-77.058395,-77.058368,-77.058334,-77.0582852,-77.0582852,-77.0582852,-77.058162,-77.0581309,-77.0581309,-77.05772,-77.057557,-77.0574363,-77.0573883,-77.0571198,-77.0571198,-77.0570601,-77.056965,-77.056556,-77.056547,-77.056494,-77.056413,-77.056413,-77.0562554,-77.056205,-77.056205,-77.0561676,-77.0561676,-77.056094,-77.0388107,-77.038804,-77.0387802,-77.03878,-77.0386762,-77.0386051,-77.0384064,-77.0383202,-77.0383202,-77.038208,-77.0379802,-77.0378876,-77.0377817,-77.037708,-77.0373764,-77.0373535,-77.0372772,-77.037209,-77.0372086,-77.0371475,-77.037104,-77.037079,-77.037056,-77.0370026,-77.0369949,-77.0273875,-77.027357,-77.0273452,-77.027315,-77.0272601,-77.027259,-77.027224,-77.0271759,-77.027146,-77.0271052,-77.0270978,-77.0270502,-77.0270401,-77.0270401,-77.0270401,-77.0270401,-77.0270401,-77.027038,-77.0270357,-77.027034,-77.027034,-77.027034,-77.027024,-77.0270113,-77.0270099,-77.026887,-77.0268443,-77.0162389,-77.0161972,-77.0161799,-77.0161799,-77.0161054,-77.0161001,-77.016074,-77.0160491,-77.0160142,-77.015754,-77.015705,-77.015555,-77.01548,-77.015449,-77.015406,-77.0153698,-77.0153584,-77.0153584,-77.0153209,-77.015286,-77.015231,-77.015229,-77.0152203,-77.0152002,-77.0151801,-76.9994737,-76.9994737,-76.9993439,-76.999298,-76.9992909,-76.999211,-76.999018,-76.998985,-76.9989735,-76.998898,-76.998783,-76.9986801,-76.9986649,-76.9984397,-76.9984397,-76.998433,-76.9984297,-76.9984203,-76.9984053,-76.998207,-76.998207,-76.998147,-76.9772503,-76.9772302,-76.9772302,-76.9772302,-76.9772074,-76.9772074,-76.97714,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.976944,-76.9769287,-76.9767,-76.9764024,-76.9762726,-76.9762421,-76.9762203,-76.9762103,-76.9761629,-76.9760466,-76.9760208,-76.975997,-76.9759903,-76.9757538,-76.97572,-76.975574,-76.975538,-76.9752502,-77.015117,-77.0150972,-77.0150375,-77.01494,-77.0149098,-77.0147697,-77.014755,-77.014695,-77.0145798,-77.0145798,-77.0145035,-77.0145035,-77.0144196,-77.0143425,-77.014233,-77.014185,-77.0141561,-77.0141159,-77.0141159,-77.0141159,-77.01411,-77.014085,-77.014058,-77.014058,-77.014053,-77.014034,-77.0140228,-77.014015,-76.9952469,-76.9952244,-76.9952244,-76.995221,-76.9949602,-76.9949563,-76.9949401,-76.9948,-76.9947891,-76.994773,-76.9947638,-76.994743,-76.994712,-76.994542,-76.9944916,-76.994407,-76.9942627,-76.9942501,-76.9940587,-76.994054,-76.994007,-76.9939799,-76.9939754,-76.993931,-76.9938076,-76.9789997,-76.9789997,-76.9789926,-76.9789702,-76.9789429,-76.9789307,-76.9788703,-76.9788666,-76.978809,-76.9787952,-76.978736,-76.978713,-76.978641,-76.9784546,-76.978381,-76.9783173,-76.978282,-76.978282,-76.978282,-76.9782601,-76.97812,-76.9780121,-76.9779587,-76.977619,-76.9775923,-76.9772757,-76.9772697,-77.014015,-77.014015,-77.014008,-77.014008,-77.013877,-77.013877,-77.013877,-77.013832,-77.0137558,-77.013755,-77.0136861,-77.01368,-77.013674,-77.013673,-77.0136606,-77.013637,-77.0136321,-77.0136261,-77.013611,-77.0136036,-77.0135228,-77.0133429,-77.01329,-77.0131912,-77.0131912,-77.0130303,-77.012917,-77.012914,-77.0129102,-77.0129102,-77.0129102,-77.0128708,-77.012854,-76.998138,-76.998067,-76.997969,-76.997893,-76.99784,-76.9976699,-76.9975003,-76.997313,-76.99726,-76.9970456,-76.9969598,-76.9969209,-76.996893,-76.9962799,-76.996181,-76.9961712,-76.9961699,-76.9961498,-76.9961397,-76.996032,-76.9960197,-76.9960175,-76.9960175,-76.996015,-76.995979,-76.9959717,-76.9959717,-76.9959717,-76.9959701,-76.9959641,-76.9959335,-76.9958434,-76.9957709,-76.995445,-76.995427,-76.99526,-76.995256,-76.962738,-76.9613724,-76.9612871,-76.9612543,-76.9612045,-76.961204,-76.961196,-76.961193,-76.9611061,-76.9599152,-76.9599152,-76.959856,-76.959693,-76.9596252,-76.959571,-76.9591293,-76.9590607,-76.958847,-76.958847,-76.958847,-76.9586868,-76.9586868,-76.9586868,-76.9586868,-76.9586868,-76.9586868,-76.9586868,-76.9586868,-76.9586176,-76.9585953,-76.9585953,-76.9585342,-76.9578323,-76.957347,-76.957091,-76.9568329,-76.956649,-76.956484,-76.956094,-76.9560318,-76.955971,-76.9559274,-76.9557648,-76.955612,-76.955284,-76.955223,-76.955031,-76.955031,-76.955031,-76.9549403,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.0126038,-77.0126038,-77.0125504,-77.012519,-77.012474,-77.012466,-77.0124435,-77.012443,-77.012416,-77.012345,-76.9808599,-76.9808418,-76.9808015,-76.9807901,-76.9807892,-76.98077,-76.9807447,-76.9807298,-76.9806694,-76.980658,-76.9806111,-76.980607,-76.9805749,-76.980552,-76.980513,-76.980472,-76.9803016,-76.9802627,-76.980216,-76.9801202,-76.980088,-76.98008,-76.979752,-76.9795838,-76.979532,-76.9794743,-76.9792499,-76.979115,-76.97905,-76.9790418,-76.9790418,-76.9254676,-76.9253922,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.92279,-76.9222565,-76.920822,-76.9189682,-76.9175946,-76.91706,-76.91706,-76.91706,-76.91706,-76.916328,-76.9148949,-76.9135513,-76.9135246,-76.6909207,-76.6909207,-76.6909207,-77.0368707,-77.0123363,-77.0123021,-77.0122994,-77.0122833,-77.0122357,-77.0121723,-77.0121723,-77.012171,-77.01217,-77.0121599,-77.0121599,-77.0121599,-77.0121506,-77.0121384,-77.012036,-77.0118018,-77.0117951,-77.011734,-77.0115999,-77.0115527,-77.01133,-77.0112718,-77.0112098,-77.0111849,-77.0110931,-77.0110763,-77.0110763,-77.0109471,-77.0107102,-77.0106583,-76.9937988,-76.9937941,-76.9937897,-76.9937599,-76.9937499,-76.9937499,-76.9937083,-76.9935836,-76.9935601,-76.9935532,-76.9935455,-76.993541,-76.9935246,-76.993523,-76.993481,-76.993354,-76.9932175,-76.9931834,-76.993141,-76.9931338,-76.9931335,-76.993075,-76.9929197,-76.99286,-76.992853,-76.992816,-76.9926401,-76.992632,-76.99263,-76.992614,-76.992559,-76.992493,-76.992477,-76.9924752,-76.9923401,-76.9923172,-76.9923172,-76.992202,-76.992097,-76.9918365,-76.991816,-76.991714,-76.9915543,-76.9327001,-76.9326477,-76.932644,-76.9316433,-76.9314656,-76.9311676,-76.9311599,-76.931069,-76.9309949,-76.9308929,-76.9303741,-76.9301987,-76.9300199,-76.928782,-76.9285049,-76.928093,-76.9280442,-76.927846,-76.927345,-76.92734,-76.9272834,-76.926536,-76.9261017,-76.926051,-76.926051,-76.926051,-76.926051,-76.926051,-76.926051,-77.0103186,-77.0102703,-77.0100644,-77.009956,-77.009902,-77.00988,-77.009841,-77.009825,-77.0097275,-77.009697,-77.0095978,-77.009597,-77.0094833,-77.00946,-77.0094576,-77.009445,-77.0094147,-77.0094147,-77.0093556,-76.9833248,-76.9833145,-76.9833,-76.9833,-76.983283,-76.983164,-76.983164,-76.9830499,-76.9830093,-76.9828847,-76.9828847,-76.9825516,-76.982501,-76.982376,-76.9823257,-76.9822197,-76.9821601,-76.982055,-76.982054,-76.981979,-76.9818497,-76.9818402,-76.9815699,-76.981539,-76.981434,-76.981225,-76.9812164,-76.9812164,-76.9812164,-76.981216,-76.9811707,-76.981041,-76.9865401,-76.9864999,-76.986481,-76.986343,-76.9863052,-76.985998,-76.9857797,-76.985733,-76.9855544,-76.9855202,-76.9855001,-76.9854246,-76.985363,-76.985352,-76.9853237,-76.9852905,-76.985267,-76.9852066,-76.9852066,-76.985206,-76.9374466,-76.9374466,-76.9374148,-76.936647,-76.9365545,-76.9364398,-76.9364043,-76.936309,-76.936308,-76.9361572,-76.936128,-76.935914,-76.9358368,-76.9350632,-76.935058,-76.935008,-76.934959,-76.9345627,-76.9345522,-76.934296,-76.9342728,-76.933751,-76.9336818,-76.9336548,-76.9335938,-76.9332969,-76.932992,-76.9329834,-76.932973,-76.9327236,-77.0093307,-77.0092316,-77.0092236,-77.009201,-77.0091801,-77.0091712,-77.0091578,-77.0091558,-77.0091356,-77.0091218,-77.0091171,-77.0091171,-77.0091171,-77.0091171,-77.0091171,-77.0091171,-77.0091171,-77.0091171,-77.0091146,-77.0091144,-77.009113,-77.0091097,-77.0091097,-77.0091031,-77.0091019,-77.0091002,-77.0090975,-77.0090955,-76.9850823,-76.9849548,-76.9849548,-76.984859,-76.9848328,-76.984806,-76.984744,-76.9845657,-76.9845657,-76.984523,-76.9843743,-76.984149,-76.9841201,-76.98365,-76.98364,-76.9836357,-76.983624,-76.983473,-76.9834583,-76.983422,-76.9833597,-76.9425901,-76.9425398,-76.9421539,-76.9421489,-76.942062,-76.9419632,-76.9413067,-76.941129,-76.9407186,-76.9401024,-76.9400024,-76.939595,-76.9394531,-76.9390275,-76.9389877,-76.938792,-76.9387894,-76.9387878,-76.938649,-76.9385376,-76.9380569,-76.937761,-77.0090927,-77.0090874,-77.009083,-77.0090714,-77.0090662,-77.0090543,-77.0090475,-77.0090451,-77.0090402,-77.0090103,-77.009009,-77.0090027,-77.008992,-77.0089869,-77.008986,-77.0089801,-77.008932,-77.0089297,-77.0089124,-77.0089007,-77.0087864,-76.988861,-76.988853,-76.9888146,-76.9887502,-76.9886865,-76.9886684,-76.9885182,-76.988508,-76.9885001,-76.9883426,-76.9883198,-76.988318,-76.9883097,-76.9883097,-76.9883003,-76.9882802,-76.9882802,-76.9882802,-76.9882802,-76.9882681,-76.98824,-76.9882278,-76.988224,-76.9881602,-76.988137,-76.9880447,-76.9880307,-76.987963,-76.9879121,-76.9879121,-76.9878678,-76.9878678,-76.9878148,-76.987769,-76.9877625,-76.9877625,-76.9875781,-76.9875031,-76.9873521,-76.987331,-76.9873273,-76.9872851,-76.9872502,-76.9872401,-76.9872208,-76.9868989,-76.98684,-76.986824,-76.9868088,-76.948632,-76.94853,-76.9482498,-76.948204,-76.94795,-76.947929,-76.9478278,-76.9478124,-76.947594,-76.9472122,-76.9469943,-76.9469943,-76.9467761,-76.946729,-76.946617,-76.946372,-76.9463043,-76.9461434,-76.945796,-76.9457703,-76.9448776,-76.9448776,-76.944802,-76.944802,-76.944802,-76.94464,-76.9443409,-76.944123,-76.9433773,-76.9431839,-76.94293,-76.9426565,-77.008697,-77.0086594,-77.0086441,-77.0086138,-77.008611,-77.008611,-77.008551,-77.0085436,-77.0085129,-77.008506,-77.008506,-77.0084799,-77.00843,-77.008392,-77.008323,-77.008308,-77.0082932,-77.0082929,-77.0081799,-77.0078603,-77.007785,-77.0077667,-77.0077617,-77.0077597,-77.0077591,-77.007705,-77.007675,-76.991524,-76.991524,-76.9915203,-76.9915203,-76.9914901,-76.991478,-76.9913406,-76.9913406,-76.9912796,-76.9912567,-76.9912491,-76.991249,-76.991221,-76.9911728,-76.9911334,-76.9910503,-76.9909798,-76.9909678,-76.9909678,-76.9909286,-76.990919,-76.9908524,-76.990789,-76.99051,-76.990465,-76.9902402,-76.9546802,-76.9546419,-76.954488,-76.953102,-76.9530029,-76.95298,-76.9528355,-76.9528013,-76.9527979,-76.9527979,-76.952476,-76.952119,-76.9516525,-76.9513321,-76.9512496,-76.9511182,-76.950828,-76.9500656,-76.9495498,-76.9492628,-76.9492353,-76.9491501,-76.9491475,-76.9489594,-76.9487463,-76.9486694,-77.0076299,-77.007586,-77.0075302,-77.0074921,-77.0073013,-77.0073013,-77.0073013,-77.0073013,-77.0073013,-77.0073013,-77.0072479,-77.007214,-77.007214,-77.0072052,-77.0068827,-77.006685,-77.0066553,-77.006642,-77.0066376,-77.0066004,-77.006565,-77.0065641,-76.990236,-76.990236,-76.990204,-76.9901899,-76.9901235,-76.9900818,-76.9900818,-76.9900572,-76.990053,-76.9900337,-76.9900337,-76.9900208,-76.9900208,-76.9899063,-76.989906,-76.989845,-76.989786,-76.9897681,-76.9897306,-76.9897003,-76.989578,-76.9895737,-76.9895294,-76.9895248,-76.9895248,-76.9893806,-76.989288,-76.9892398,-76.9891722,-76.9890041,-77.0063705,-77.00634,-77.0062103,-77.0062103,-77.0062,-77.006194,-77.0061062,-77.0058975,-77.0058701,-77.0058613,-77.0058601,-77.0058379,-77.0058212,-77.0057983,-77.005789,-77.005781,-77.0057347,-77.005691,-77.005607,-77.005573,-77.005544,-77.0054932,-76.9671478,-76.9671478,-76.9671478,-76.9670868,-76.966693,-76.966604,-76.9663799,-76.9662933,-76.9660339,-76.9659206,-76.9653802,-76.9653802,-76.965353,-76.964859,-76.964546,-76.964546,-76.964546,-76.9641209,-76.964042,-76.9640121,-76.964006,-76.9634248,-76.9634248,-76.9633026,-76.9629199,-76.9629135,-76.9629135,-76.9629135,-77.0053308,-77.0053177,-77.0051956,-77.0050903,-77.0047986,-77.004694,-77.0046082,-77.0045624,-77.0045624,-77.0045624,-77.0045599,-77.004486,-77.0044632,-77.0044103,-77.0044103,-77.004402,-77.004396,-77.004167,-77.0040741,-77.003788,-77.003788,-77.003759,-77.0037384,-77.003581,-77.0035782,-77.0035701,-77.0035701,-77.0035098,-77.0034997,-77.0034923,-77.0034893,-77.0034714,-77.0034714,-77.0034714,-77.0034023,-77.0034023,-77.0033998,-76.9716082,-76.9714259,-76.9711985,-76.9711985,-76.971031,-76.9709343,-76.9708328,-76.970703,-76.970599,-76.970452,-76.9701947,-76.970108,-76.9699783,-76.9699319,-76.9697213,-76.969421,-76.96927,-76.9690367,-76.9689602,-76.968586,-76.9685653,-76.96819,-76.96819,-76.9679772,-76.96729,-76.9672295,-77.0033227,-77.0033201,-77.0033146,-77.003295,-77.003242,-77.003234,-77.00322,-77.0031815,-77.0030947,-77.0030947,-77.0030899,-77.003083,-77.002922,-77.0028379,-77.0028379,-77.0027695,-77.0026387,-77.002469,-77.0024109,-77.0024109,-77.0024109,-77.0024109,-77.0023117,-77.002311,-76.973017,-76.9730148,-76.9728249,-76.9727211,-76.9726268,-76.9726268,-76.9724045,-76.9723599,-76.9723575,-76.9722214,-76.9720877,-76.9720421,-76.9720078,-76.9720078,-76.972007,-76.9719467,-76.9719455,-76.9719238,-76.9719194,-76.9718741,-76.9717331,-76.971638,-77.00209,-77.0020775,-77.0020676,-77.0020604,-77.0020399,-77.0020399,-77.0020294,-77.0019903,-77.0019655,-77.0018622,-77.0018528,-77.0018528,-77.0018441,-77.0017624,-77.0017624,-77.00167,-77.001593,-77.0013838,-77.00136,-77.0012894,-77.001218,-77.001104,-77.0009999,-77.000881,-77.0008545,-76.975148,-76.9751358,-76.9750938,-76.9750509,-76.9748993,-76.974812,-76.974786,-76.974656,-76.974609,-76.974609,-76.9744903,-76.9741892,-76.9741597,-76.9741364,-76.9741128,-76.974099,-76.974041,-76.974041,-76.9739227,-76.973671,-76.973625,-76.973611,-76.9736099,-76.97353,-76.9734033,-76.973357,-76.973341,-77.017546,-77.0175397,-77.0175397,-77.017539,-77.0175171,-77.0174968,-77.017469,-77.01736,-77.0172348,-77.017169,-77.0170844,-77.016861,-77.016802,-77.0167699,-77.0167699,-77.0167699,-77.0167699,-77.0167389,-77.0164528,-77.0164185,-77.0164011,-77.0163727,-77.016318,-77.0162442,-77.000815,-77.0007629,-77.0007609,-77.0007498,-77.000709,-77.000674,-77.000657,-77.000619,-77.0006177,-77.0005801,-77.0005801,-77.000571,-77.0005701,-77.00056,-77.00055,-77.00055,-77.0005493,-77.0005493,-77.0005493,-77.000462,-77.0004366,-77.00037,-77.0002594,-77.0002365,-77.000201,-77.000159,-77.000154,-77.0000305,-76.9997864,-76.9997864,-76.999602,-76.9995931,-76.9995193,-76.9995193,-77.1109772,-77.1071202,-77.10651,-77.104866,-77.1037238,-77.1020584,-77.10173,-77.1005997,-77.100463,-77.100401,-77.098629,-77.096397,-77.0963169,-77.0960388,-77.095282,-77.0951079,-77.0926208,-77.0924225,-77.0920401,-77.0906789,-77.09004,-77.089146,-77.088921,-77.088631,-77.0861588,-77.0267868,-77.026599,-77.02656,-77.0264893,-77.0264816,-77.026481,-77.02644,-77.026437,-77.0264199,-77.0264199,-77.0263443,-77.0262985,-77.0262299,-77.026214,-77.026214,-77.026214,-77.026214,-77.026214,-77.0261612,-77.0261383,-77.0261307,-77.0261248,-77.0261114,-77.085739,-77.0855498,-77.0855484,-77.084898,-77.0847397,-77.0846463,-77.0846463,-77.0839472,-77.083313,-77.083112,-77.0830383,-77.082784,-77.0826302,-77.082428,-77.082283,-77.0817746,-77.0808003,-77.0807495,-77.0807495,-77.0807495,-77.0805817,-77.08055,-77.0558929,-77.0558701,-77.0558701,-77.0558701,-77.0557545,-77.0556761,-77.0556761,-77.0555267,-77.055467,-77.055463,-77.055463,-77.0548499,-77.0548077,-77.054701,-77.054636,-77.0542068,-77.0541763,-77.054071,-77.0540144,-77.05378,-77.0536189,-77.0534854,-77.0534854,-77.0530014,-77.053001,-77.052922,-77.052803,-77.0369873,-77.0369797,-77.0369797,-77.036972,-77.036926,-77.0368805,-77.0368729,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368652,-77.0368652,-77.0260598,-77.025993,-77.02599,-77.02598,-77.0259774,-77.0259257,-77.0259138,-77.0257667,-77.0257124,-77.0256653,-77.0256653,-77.0255814,-77.0255814,-77.0254135,-77.0253929,-77.0253262,-77.02531,-77.0252343,-77.0251525,-77.025121,-77.0249198,-77.024864,-77.0790024,-77.078902,-77.078615,-77.078615,-77.0784378,-77.078423,-77.0781097,-77.0781097,-77.0781097,-77.0781097,-77.0781097,-77.078109,-77.077594,-77.0774653,-77.0774147,-77.077322,-77.077317,-77.077308,-77.076897,-77.076897,-77.0766602,-77.0766602,-77.076331,-77.076301,-77.0760243,-77.0754191,-77.0752716,-77.0752487,-77.074852,-77.07477,-77.0526539,-77.0526199,-77.0523146,-77.052234,-77.052234,-77.052017,-77.052002,-77.051994,-77.0515864,-77.0514502,-77.0511391,-77.0511391,-77.0509,-77.0507126,-77.0504227,-77.0503914,-77.0503914,-77.0503914,-77.036865,-77.036865,-77.036865,-77.03685,-77.036847,-77.036834,-77.0368118,-77.0368118,-77.0367737,-77.0367155,-77.036705,-77.0366961,-77.03669,-77.0366237,-77.0366237,-77.0366076,-77.0365914,-77.03659,-77.03659,-77.0365524,-77.0365439,-77.0365331,-77.0365197,-77.0364923,-77.0246805,-77.0246798,-77.0246658,-77.0246506,-77.024579,-77.024496,-77.02449,-77.02448,-77.0244446,-77.0244141,-77.0244049,-77.0243861,-77.0243378,-77.0242844,-77.024276,-77.024231,-77.0242128,-77.0241928,-77.0241648,-77.024147,-77.0241326,-77.0240944,-77.024084,-77.0240702,-77.0743179,-77.074174,-77.0739037,-77.073616,-77.0735855,-77.0734363,-77.073329,-77.0731902,-77.0730896,-77.0730896,-77.0730668,-77.0730362,-77.0730286,-77.0728149,-77.0726547,-77.0726497,-77.0726236,-77.0726057,-77.0725974,-77.0725203,-77.072492,-77.0724674,-77.072418,-77.072361,-77.0722112,-77.0719452,-77.0364802,-77.036475,-77.0364701,-77.0364685,-77.0364685,-77.0364685,-77.0364685,-77.0364674,-77.0364674,-77.036462,-77.03646,-77.03646,-77.0364574,-77.036454,-77.03645,-77.0364352,-77.0364198,-77.0363464,-77.0363464,-77.03634,-77.03633,-77.0362998,-77.036169,-77.0361552,-77.0360489,-77.0358582,-77.0357437,-77.0356445,-77.035614,-77.02402,-77.02402,-77.024017,-77.0239998,-77.0239898,-77.0239793,-77.0239697,-77.0239697,-77.0239697,-77.023969,-77.0239603,-77.0238818,-77.023849,-77.023849,-77.023849,-77.0238282,-77.0235977,-77.0235653,-77.0235367,-77.0234976,-77.023427,-77.0233612,-77.071604,-77.0715199,-77.0713764,-77.071307,-77.071162,-77.071162,-77.0710449,-77.0708701,-77.0708618,-77.0705804,-77.070412,-77.070404,-77.070308,-77.0702972,-77.0696869,-77.069607,-77.069533,-77.0694656,-77.0694656,-77.0694204,-77.0694112,-77.069324,-77.0692062,-77.0690079,-77.068766,-77.068766,-77.0686425,-77.0684052,-77.0503163,-77.0503056,-77.0502862,-77.0502862,-77.050252,-77.050229,-77.0501862,-77.0501862,-77.0501836,-77.0501836,-77.0501802,-77.0501601,-77.0501199,-77.0500905,-77.0500107,-77.0500107,-77.0500107,-77.0500107,-77.0495801,-77.0495218,-77.049408,-77.0491613,-77.0491562,-77.049118,-77.0490952,-77.0489873,-77.0488767,-77.0488203,-77.0488103,-77.04879,-77.048783,-77.04867,-77.04867,-77.0486069,-77.0485992,-77.0485992,-77.0233348,-77.0231663,-77.0231552,-77.0231161,-77.0231094,-77.0231094,-77.023054,-77.0230383,-77.0230161,-77.02299,-77.0229397,-77.022933,-77.0229109,-77.0229071,-77.0228988,-77.0228119,-77.0227982,-77.0227801,-77.0226364,-77.0225983,-77.0225983,-77.022541,-77.0225372,-77.0224502,-77.0223923,-77.0223923,-77.0223846,-77.0223556,-77.0222931,-77.0481491,-77.0480881,-77.0477558,-77.047496,-77.04731,-77.047287,-77.0472647,-77.0471497,-77.0471497,-77.047093,-77.0468684,-77.046867,-77.04674,-77.046698,-77.046688,-77.046678,-77.0466699,-77.0466498,-77.0466303,-77.046598,-77.0465088,-77.046506,-77.0458527,-77.0355301,-77.0355301,-77.035514,-77.035514,-77.0355072,-77.0354898,-77.0354898,-77.0354233,-77.035416,-77.0353898,-77.035387,-77.035275,-77.035275,-77.0351486,-77.0351257,-77.0351102,-77.035098,-77.0350571,-77.0350571,-77.0350159,-77.0350037,-77.0350037,-77.0349714,-77.034967,-77.0349579,-77.0349503,-77.034903,-77.0348969,-77.034896,-77.034789,-77.0347065,-77.0346174,-77.0346174,-77.0345999,-77.0345798,-77.0345798,-77.0345798,-77.0345597,-77.0345306,-77.0345302,-77.0344853,-77.0341949,-77.0341034,-77.0340729,-77.0340424,-77.0339813,-77.0339661,-77.033963,-77.033934,-77.033904,-77.0338161,-77.0338161,-77.0338161,-77.0337601,-77.0337074,-77.0337041,-77.0337014,-77.0337014,-77.0336974,-77.0336838,-77.0336838,-77.033679,-77.033662,-77.0336556,-77.0336556,-77.0336498,-77.0336498,-77.0336397,-77.0336397,-77.033599,-77.03358,-77.033456,-77.022293,-77.022293,-77.022293,-77.0222321,-77.022224,-77.0222169,-77.0221914,-77.022188,-77.0220961,-77.0220961,-77.0220861,-77.02208,-77.022073,-77.0220599,-77.022056,-77.0219962,-77.0219962,-77.0219775,-77.0219775,-77.0219573,-77.021938,-77.021938,-77.0219198,-77.0219198,-77.0219198,-77.0219198,-77.0321363,-77.0321363,-77.0321263,-77.032112,-77.032111,-77.032065,-77.0320176,-77.0320176,-77.0320176,-77.0320176,-77.0320176,-77.0320176,-77.0320143,-77.0320096,-77.0320076,-77.0320076,-77.0320076,-77.0320076,-77.032007,-77.0320056,-77.0319995,-77.0319995,-77.0319875,-77.031964,-77.031964,-77.0319633,-77.03196,-77.03196,-77.03196,-77.03196,-77.03196,-77.03196,-77.03196,-77.03196,-77.03196,-77.031959,-77.0319519,-77.0219198,-77.0219116,-77.0219116,-77.0219097,-77.0219097,-77.0219097,-77.0219097,-77.0219097,-77.0219097,-77.0219097,-77.0218997,-77.021899,-77.0218903,-77.0218594,-77.0218521,-77.021842,-77.0217837,-77.0217602,-77.0217428,-77.0217428,-77.021721,-77.021643,-77.0214691,-77.045784,-77.0457458,-77.0456772,-77.045599,-77.0454361,-77.0454,-77.045364,-77.045364,-77.0453415,-77.0452805,-77.0452499,-77.0452347,-77.045198,-77.045184,-77.0450103,-77.0449479,-77.0449398,-77.0449003,-77.0448902,-77.0445845,-77.0445709,-77.044487,-77.0444597,-77.0444597,-77.0444148,-77.0443551,-77.021179,-77.0210876,-77.0210575,-77.0210212,-77.0209579,-77.020917,-77.020904,-77.020894,-77.020869,-77.0208054,-77.0207825,-77.0207443,-77.02053,-77.02053,-77.02053,-77.020492,-77.0204086,-77.020401,-77.0203247,-77.0203247,-77.0202713,-77.020256,-77.0202484,-77.020233,-77.0201645,-77.0200865,-77.0200811,-77.044337,-77.0442398,-77.0442398,-77.0441895,-77.044189,-77.044189,-77.044162,-77.044093,-77.0440534,-77.0439224,-77.043922,-77.043922,-77.043902,-77.043902,-77.043902,-77.043902,-77.0437469,-77.043663,-77.043655,-77.0436477,-77.0435169,-77.0435109,-77.04347,-77.033402,-77.033402,-77.0333481,-77.0332718,-77.033233,-77.03307,-77.03307,-77.0330697,-77.0330658,-77.0330124,-77.0330048,-77.0329691,-77.0329343,-77.032918,-77.0327868,-77.032783,-77.032768,-77.0327606,-77.0327499,-77.0327197,-77.0326862,-77.032557,-77.032547,-77.0325199,-77.0325199,-77.0325199,-77.032465,-77.0324173,-77.0323715,-77.0323563,-77.0323563,-77.032356,-77.032356,-77.0323257,-77.0323257,-77.0323029,-77.032291,-77.0322563,-77.0322563,-77.0322101,-77.032193,-77.032155,-77.032143,-77.0200811,-77.0200811,-77.0200771,-77.0200208,-77.020011,-77.0200101,-77.0199202,-77.0199101,-77.019908,-77.0199001,-77.019843,-77.019801,-77.0196198,-77.0195601,-77.0195465,-77.0193863,-77.0193321,-77.019233,-77.01921,-77.0319499,-77.0319499,-77.0319499,-77.0319499,-77.0319499,-77.0319499,-77.0319499,-77.0319398,-77.031929,-77.0319223,-77.0318604,-77.031685,-77.0316849,-77.031615,-77.031592,-77.0315491,-77.0315323,-77.0313416,-77.0312391,-77.031227,-77.0312119,-77.0310554,-77.030995,-77.0309372,-77.043354,-77.0433359,-77.043329,-77.0433242,-77.0433003,-77.0431281,-77.0430679,-77.0430679,-77.0430603,-77.0430603,-77.0430298,-77.0430298,-77.042963,-77.042869,-77.042821,-77.0427626,-77.042725,-77.0427094,-77.0427094,-77.042647,-77.042608,-77.042595,-77.0425681,-77.042517,-77.0424194,-77.042367,-77.0423046,-77.0422592,-77.0422261,-77.0421677,-77.042146,-77.042089,-77.042088,-77.042082,-77.0307854,-77.030766,-77.030699,-77.0306648,-77.0306648,-77.0306648,-77.030411,-77.030334,-77.030334,-77.0303299,-77.0303268,-77.0302505,-77.030238,-77.0302045,-77.030197,-77.030197,-77.030197,-77.030197,-77.030195,-77.0300674,-77.030067,-77.0300598,-77.0300446,-77.0300369,-77.0300217,-77.0300064,-77.0300064,-77.0299301,-77.0299149,-77.029899,-77.068164,-77.0681216,-77.0680638,-77.0680403,-77.0680313,-77.0680122,-77.067964,-77.0679002,-77.0673828,-77.0672302,-77.067123,-77.0669861,-77.0669098,-77.0667572,-77.066445,-77.0664444,-77.06642,-77.0663801,-77.0660782,-77.0660703,-77.065647,-77.0656357,-77.0656357,-77.0656357,-77.041961,-77.0419257,-77.041923,-77.041893,-77.041889,-77.0418466,-77.0417386,-77.0417098,-77.041708,-77.0417023,-77.0416997,-77.0416702,-77.041446,-77.041446,-77.041446,-77.041223,-77.0298873,-77.0298873,-77.0298839,-77.0298766,-77.0297961,-77.0297961,-77.0297478,-77.0297478,-77.029742,-77.029732,-77.0297203,-77.0297172,-77.0297103,-77.0297103,-77.0297002,-77.0296922,-77.0296896,-77.0296774,-77.029657,-77.0296399,-77.0296298,-77.0296298,-77.029621,-77.029621,-77.0296197,-77.0296197,-77.0296197,-77.0296197,-77.0295621,-77.0294724,-77.0294189,-77.0294189,-77.029158,-77.0655136,-77.0654144,-77.0654144,-77.0652924,-77.0651798,-77.065017,-77.064857,-77.064651,-77.064528,-77.064483,-77.064483,-77.064408,-77.0643758,-77.0643082,-77.0642242,-77.0641785,-77.0641785,-77.06415,-77.064015,-77.0632003,-77.0632003,-77.0632003,-77.0631608,-77.0630188,-77.062988,-77.062988,-77.062914,-77.0628764,-77.0628586,-77.0628302,-77.028939,-77.0289307,-77.0289297,-77.0289297,-77.0288875,-77.028846,-77.0288308,-77.0286484,-77.028503,-77.0284653,-77.028396,-77.028396,-77.0282297,-77.0282049,-77.028198,-77.028187,-77.0281553,-77.0281525,-77.0281385,-77.0281385,-77.0281197,-77.0190506,-77.0190398,-77.0189875,-77.0189875,-77.0189667,-77.0189298,-77.0189298,-77.0189298,-77.018929,-77.018929,-77.01891,-77.018867,-77.018867,-77.018702,-77.0185201,-77.018498,-77.01831,-77.0182953,-77.0182877,-77.0182495,-77.018188,-77.018188,-77.0181097,-77.0181097,-77.0181097,-77.018066,-77.0179977,-77.0177972,-77.017797,-77.01777,-77.0177697,-77.0411148,-77.041114,-77.040992,-77.040947,-77.040839,-77.0406494,-77.0402969,-77.0402908,-77.0402603,-77.040244,-77.040163,-77.0401306,-77.0400099,-77.0400099,-77.0399628,-77.039936,-77.039894,-77.0398712,-77.0398712,-77.039748,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.062444,-77.0622787,-77.0622711,-77.0620346,-77.061993,-77.061852,-77.0617875,-77.0617752,-77.0614348,-77.061401,-77.0613791,-77.061291,-77.0612799,-77.06118,-77.0611115,-77.0608597,-77.060813,-77.060461,-77.0603599,-77.0600648,-77.0598297,-77.059516,-77.0593547,-77.059297,-77.0592085,-77.0590668,-77.0589294,-77.039709,-77.039709,-77.039709,-77.0396465,-77.0396465,-77.039523,-77.0395218,-77.039497,-77.03945,-77.0394363,-77.0394363,-77.0394246,-77.0394058,-77.03932,-77.0392294,-77.039154,-77.0390701,-77.038993,-77.0389666,-77.038943,-77.038943,-77.038943,-77.038867,-77.0281003,-77.0280902,-77.0280902,-77.028084,-77.028084,-77.028084,-77.028084,-77.0280802,-77.0280802,-77.0280553,-77.028038,-77.028038,-77.0279568,-77.0279165,-77.027916,-77.0279058,-77.027825,-77.027825,-77.027781,-77.027704,-77.027603,-77.0275803,-77.02758,-77.027563,-77.0274582,-77.0274297,-77.0273972,-77.0589294,-77.058754,-77.0585327,-77.0584259,-77.0584259,-77.058358,-77.0582852,-77.0582199,-77.058162,-77.058035,-77.0578694,-77.057865,-77.05778,-77.05772,-77.057548,-77.0573883,-77.0573807,-77.0573102,-77.0572433,-77.057219,-77.0567425,-77.056572,-77.056556,-77.056421,-77.056413,-77.056413,-77.056413,-77.0563761,-77.056299,-77.0561099,-77.038762,-77.038749,-77.038749,-77.038682,-77.0385374,-77.0381165,-77.038044,-77.0379715,-77.037855,-77.037843,-77.0378246,-77.0377197,-77.037708,-77.0376968,-77.03759,-77.037551,-77.037431,-77.0373611,-77.0372772,-77.0372086,-77.037147,-77.037104,-77.037017,-77.0370026,-77.0370025,-77.0369949,-77.0369949,-77.0273875,-77.027368,-77.027356,-77.0273514,-77.0273514,-77.027343,-77.0273056,-77.0273056,-77.0272598,-77.027259,-77.027259,-77.0272171,-77.0271883,-77.0271454,-77.0271072,-77.0271052,-77.0270978,-77.0270965,-77.0270615,-77.0270502,-77.0270478,-77.0270401,-77.0270401,-77.0270401,-77.0270301,-77.0269775,-77.0269775,-77.0269699,-77.0269699,-77.0269012,-77.026901,-77.026901,-77.0268638,-77.0162288,-77.0161597,-77.0159484,-77.01586,-77.0158466,-77.0158386,-77.0157547,-77.015648,-77.0155716,-77.0154402,-77.0154402,-77.015406,-77.0153765,-77.015371,-77.0153584,-77.0153584,-77.0153584,-77.0152203,-77.0152006,-77.0152002,-77.0152002,-77.0152002,-77.015171,-76.9995117,-76.9995107,-76.9995,-76.9994999,-76.9994737,-76.9993973,-76.9993896,-76.9993698,-76.999286,-76.999282,-76.9991837,-76.99918,-76.9989471,-76.9988785,-76.998633,-76.9984598,-76.998437,-76.9984285,-76.9983826,-76.998338,-76.9982976,-76.998286,-76.99826,-76.9772302,-76.9772074,-76.977153,-76.9770659,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.976428,-76.9762592,-76.9762573,-76.9762203,-76.976111,-76.975716,-76.9754217,-77.0150452,-77.0150223,-77.015003,-77.0150017,-77.014921,-77.0148919,-77.014778,-77.0147697,-77.014595,-77.014395,-77.0141796,-77.0141561,-77.0141159,-77.0141159,-77.0141159,-77.0140703,-77.014058,-77.014058,-77.014058,-77.014058,-77.0140207,-77.0140207,-76.9952459,-76.995221,-76.995167,-76.9950638,-76.9950065,-76.9949897,-76.9949701,-76.9949699,-76.9949602,-76.9949567,-76.9949301,-76.9949227,-76.994922,-76.994916,-76.994861,-76.9948207,-76.9948,-76.994743,-76.994724,-76.9947074,-76.9946994,-76.9946974,-76.99469,-76.994453,-76.994054,-76.9939946,-76.993858,-76.9938076,-76.9790266,-76.9790199,-76.979016,-76.9789997,-76.9789997,-76.9789897,-76.9789803,-76.9789803,-76.9789803,-76.9789702,-76.9789429,-76.9789429,-76.9789429,-76.978837,-76.9788247,-76.9788019,-76.978758,-76.978706,-76.9787026,-76.9786682,-76.9785264,-76.9785156,-76.978381,-76.978181,-76.978134,-76.97812,-76.97812,-76.9778598,-76.977739,-76.97768,-76.977619,-76.9776097,-76.9775198,-76.977356,-76.9772697,-77.014015,-77.014008,-77.014008,-77.01393,-77.013877,-77.013877,-77.0137739,-77.013755,-77.013755,-77.013748,-77.01371,-77.01368,-77.01368,-77.0136524,-77.0133211,-77.0131989,-77.0131838,-77.0130234,-77.0129102,-77.0129102,-77.012854,-76.998138,-76.9981326,-76.9980927,-76.998075,-76.997888,-76.997807,-76.9977605,-76.9977417,-76.9976044,-76.9973831,-76.997256,-76.9972305,-76.996938,-76.996883,-76.996814,-76.9968079,-76.9967728,-76.9967728,-76.9966396,-76.996451,-76.996437,-76.9964218,-76.996418,-76.9963684,-76.9963226,-76.9962551,-76.9961786,-76.9961599,-76.9961397,-76.996032,-76.995989,-76.9959842,-76.9959822,-76.9959822,-76.9959701,-76.9959205,-76.99584,-76.99584,-76.995761,-76.9957099,-76.9956918,-76.995628,-76.995544,-76.9955201,-76.962738,-76.961393,-76.9612579,-76.9612053,-76.96095,-76.9606876,-76.9603899,-76.9603899,-76.959915,-76.9599058,-76.959693,-76.9596252,-76.9596252,-76.959571,-76.959315,-76.959279,-76.958977,-76.9586868,-76.9586868,-76.9586868,-76.9586197,-76.9584961,-76.957901,-76.957679,-76.957573,-76.9575602,-76.9575602,-76.9575461,-76.9571533,-76.9571533,-76.957126,-76.957091,-76.957014,-76.956999,-76.956999,-76.9569118,-76.9561615,-76.956094,-76.9555206,-76.955057,-76.955031,-76.955031,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.0126145,-77.0126114,-77.012515,-77.012496,-77.012466,-77.012466,-77.0124301,-77.0124301,-77.0123463,-76.980829,-76.9807901,-76.98077,-76.9807489,-76.9807311,-76.9807264,-76.980719,-76.980679,-76.980674,-76.9806694,-76.980651,-76.980651,-76.9805749,-76.980491,-76.98043,-76.980216,-76.980216,-76.980178,-76.980063,-76.9798353,-76.9797722,-76.979497,-76.9794743,-76.9792936,-76.9792862,-76.9790903,-76.97905,-76.97905,-76.926051,-76.925118,-76.9249814,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9217377,-76.9208984,-76.920227,-76.9199295,-76.9197617,-76.9193878,-76.919342,-76.9178287,-76.9177703,-76.9175262,-76.91706,-76.91706,-76.916982,-76.916328,-76.915386,-76.914378,-76.9134808,-76.9120026,-76.9112015,-76.91117,-76.910936,-76.6909207,-76.6909207,-76.6909207,-77.0123328,-77.0123021,-77.012296,-77.0122719,-77.012267,-77.0122256,-77.0122223,-77.012182,-77.0121723,-77.012171,-77.012169,-77.0121599,-77.0121599,-77.0121599,-77.0121599,-77.0121599,-77.0121498,-77.0121384,-77.011973,-77.0119247,-77.011924,-77.0118103,-77.0114059,-77.0112718,-77.0112718,-77.01126,-77.011182,-77.0110662,-77.011001,-77.010671,-77.0106506,-77.010649,-77.010635,-76.99377,-76.9937515,-76.9937298,-76.993671,-76.9936493,-76.993596,-76.993568,-76.9935455,-76.9935455,-76.9935312,-76.9934852,-76.9933665,-76.9930344,-76.9930344,-76.9929197,-76.9926401,-76.9926401,-76.99262,-76.9925811,-76.99251,-76.9924852,-76.9924698,-76.9924316,-76.9923019,-76.992272,-76.9921278,-76.9917984,-76.9916562,-76.9915314,-76.9915297,-76.9915297,-76.93267,-76.93264,-76.9320758,-76.9315079,-76.9312263,-76.9311676,-76.9311371,-76.9311371,-76.93094,-76.9297409,-76.9295883,-76.9293976,-76.9291335,-76.9279781,-76.927139,-76.926536,-76.926051,-76.926051,-76.926051,-76.926051,-76.926051,-77.0104024,-77.010275,-77.0102712,-77.010101,-77.0099564,-77.0099564,-77.009956,-77.009895,-77.009802,-77.009788,-77.0097493,-77.0097275,-77.0097275,-77.0097275,-77.0097275,-77.0096054,-77.0095978,-77.009597,-77.0095367,-77.009506,-77.0094986,-77.009483,-77.0094528,-77.0094452,-77.0094147,-77.009407,-77.009407,-77.009407,-76.9833248,-76.9833,-76.9833,-76.983164,-76.983164,-76.983164,-76.9830499,-76.982994,-76.9829701,-76.9829097,-76.9828847,-76.9828568,-76.982643,-76.9825821,-76.982548,-76.982449,-76.982399,-76.9823303,-76.9822834,-76.9822097,-76.982174,-76.982159,-76.982058,-76.981994,-76.9819183,-76.9818192,-76.981447,-76.9813574,-76.98134,-76.9811172,-76.9810791,-76.9810073,-76.986618,-76.986397,-76.9860463,-76.9860463,-76.9860001,-76.9859601,-76.9857401,-76.9856228,-76.9856201,-76.9855557,-76.9855557,-76.9855544,-76.9855499,-76.9854931,-76.9854545,-76.9853439,-76.9853237,-76.985298,-76.985298,-76.985287,-76.9852066,-76.9852066,-76.985206,-76.985206,-76.937675,-76.9376018,-76.937537,-76.937461,-76.9374466,-76.9374466,-76.9374228,-76.9373627,-76.937304,-76.937304,-76.936676,-76.9358444,-76.9354313,-76.935297,-76.935297,-76.9352509,-76.935112,-76.935112,-76.9347125,-76.9347125,-76.9347,-76.934677,-76.9344489,-76.9342962,-76.9342,-76.9339523,-76.9338074,-76.9337978,-76.9334652,-76.9334652,-76.9329724,-77.0093307,-77.00933,-77.009281,-77.0092466,-77.009235,-77.009201,-77.009198,-77.00917,-77.0091639,-77.00915,-77.0091452,-77.0091356,-77.0091356,-77.009127,-77.0091171,-77.0091171,-77.0091171,-77.0091163,-77.0091095,-77.0091074,-77.0091032,-77.0091019,-77.009101,-77.0091002,-76.9851802,-76.9850925,-76.9850823,-76.9850499,-76.9850499,-76.9849548,-76.9848862,-76.984875,-76.984832,-76.984802,-76.9847055,-76.9845047,-76.9845047,-76.9844284,-76.9844198,-76.984393,-76.9842877,-76.984143,-76.9840571,-76.9839085,-76.9838572,-76.9838331,-76.9837117,-76.983641,-76.983482,-76.9834518,-76.9834254,-76.983401,-76.983401,-76.9833597,-76.9833597,-76.942627,-76.94258,-76.94247,-76.942407,-76.9419632,-76.9419632,-76.9413067,-76.940881,-76.940828,-76.9406857,-76.9404075,-76.9400024,-76.939928,-76.9397718,-76.9397,-76.938987,-76.9389597,-76.938921,-76.9388885,-76.9388428,-76.9387706,-76.9381638,-76.9380498,-77.0090889,-77.009083,-77.0090631,-77.0090517,-77.0090493,-77.0090492,-77.009048,-77.0090337,-77.008992,-77.0089486,-77.0089191,-77.0089178,-77.0089178,-77.0089154,-77.008899,-77.008899,-76.988891,-76.9888797,-76.988853,-76.9888294,-76.988776,-76.988715,-76.988708,-76.9886865,-76.9886865,-76.9886856,-76.9886302,-76.9886202,-76.9886086,-76.98859,-76.988508,-76.9883439,-76.988339,-76.988339,-76.9882902,-76.9882848,-76.98824,-76.9881287,-76.988121,-76.9880905,-76.988066,-76.988062,-76.98801,-76.987936,-76.987922,-76.987922,-76.9879121,-76.9879,-76.9878678,-76.9878497,-76.987645,-76.9874574,-76.9874496,-76.9874132,-76.9873723,-76.987365,-76.9873008,-76.9872301,-76.9870836,-76.9870331,-76.9870149,-76.9869967,-76.9869874,-76.986968,-76.986808,-76.94853,-76.9483185,-76.948042,-76.9480162,-76.9478278,-76.9478278,-76.947488,-76.9469943,-76.9464578,-76.9463043,-76.946304,-76.946252,-76.9461004,-76.9454855,-76.945335,-76.9450302,-76.9450302,-76.9448224,-76.944802,-76.9447556,-76.9443449,-76.9442902,-76.943718,-76.9435577,-76.943557,-76.9434433,-76.9427185,-76.9426565,-77.0087738,-77.0087509,-77.00875,-77.008736,-77.0086823,-77.008659,-77.0084799,-77.00846,-77.00843,-77.0083082,-77.0082932,-77.0082855,-77.0082855,-77.0082432,-77.008125,-77.0080109,-77.0080032,-77.0079985,-77.007834,-77.0078125,-77.0078013,-77.0078,-77.0077993,-77.0077597,-77.0077209,-77.007711,-77.0076699,-76.991524,-76.991524,-76.9915203,-76.991478,-76.991445,-76.9913909,-76.99134,-76.991335,-76.9912796,-76.991272,-76.9912662,-76.9912186,-76.991177,-76.9911728,-76.9911475,-76.9910697,-76.9910502,-76.990892,-76.9908354,-76.990805,-76.990691,-76.9906003,-76.990536,-76.990524,-76.9905167,-76.990483,-76.9902878,-76.9902751,-76.9902724,-76.99026,-76.9902413,-76.9540639,-76.9527979,-76.952792,-76.952617,-76.952521,-76.9524078,-76.9522018,-76.952119,-76.952015,-76.951342,-76.9512496,-76.9506683,-76.9504547,-76.9500656,-76.9497335,-76.9491112,-76.9486694,-76.9486694,-77.0076115,-77.0075401,-77.0074454,-77.0074399,-77.0073395,-77.0073299,-77.0073013,-77.0073013,-77.0073013,-77.0073013,-77.0073013,-77.0072937,-77.0072479,-77.007247,-77.007214,-77.007214,-77.0071489,-77.00703,-77.0068391,-77.0066986,-77.006691,-77.006691,-77.006619,-77.006619,-77.006619,-77.006619,-77.0066004,-77.0065856,-76.9902302,-76.9902302,-76.9902302,-76.9901343,-76.9900818,-76.9900739,-76.9900572,-76.990053,-76.9900208,-76.9899063,-76.9899063,-76.9896011,-76.989524,-76.9894943,-76.989418,-76.989401,-76.989371,-76.989247,-76.9891968,-76.9891586,-76.989151,-76.9890366,-76.9890041,-76.9889896,-77.006415,-77.006391,-77.006391,-77.006271,-77.0061062,-77.0061062,-77.0060806,-77.005928,-77.0059197,-77.0058863,-77.0058701,-77.0058689,-77.0058686,-77.0058601,-77.0058212,-77.0057956,-77.005789,-77.0057146,-77.0056938,-77.005573,-77.0055542,-77.0055084,-77.00547,-77.0054698,-77.0054437,-76.9668808,-76.9666951,-76.9664604,-76.966308,-76.96627,-76.966201,-76.966174,-76.966076,-76.9660339,-76.965797,-76.965652,-76.9655398,-76.965341,-76.964859,-76.96395,-76.9639053,-76.9631298,-77.005424,-77.005317,-77.005317,-77.0050659,-77.004983,-77.004694,-77.0046832,-77.0046082,-77.0045599,-77.0045599,-77.0045599,-77.00442,-77.0044103,-77.0043701,-77.0041803,-77.004167,-77.0041199,-77.0040972,-77.003788,-77.003788,-77.0036318,-77.0035629,-77.0035399,-77.0035263,-77.0034796,-77.0034023,-77.0033998,-77.0033938,-76.971601,-76.9715298,-76.9714259,-76.9713862,-76.971031,-76.9709625,-76.970953,-76.9708807,-76.970863,-76.9708328,-76.97076,-76.9706849,-76.9706192,-76.9702911,-76.9702879,-76.970244,-76.970231,-76.970032,-76.969999,-76.9699783,-76.9699701,-76.96997,-76.969964,-76.9699124,-76.969871,-76.969821,-76.96971,-76.9695215,-76.9693909,-76.9693599,-76.968895,-76.968863,-76.9686813,-76.9686075,-76.968605,-76.9684448,-76.9684219,-76.9684219,-76.9684219,-76.9683554,-76.9683554,-76.968353,-76.96819,-76.9681636,-76.9680825,-76.967994,-76.9677861,-76.9673538,-76.9672295,-77.003357,-77.0033201,-77.0031891,-77.0031128,-77.0031128,-77.003083,-77.002915,-77.002809,-77.002796,-77.002571,-77.002533,-77.002469,-77.002449,-77.0024109,-77.0024109,-77.0024109,-77.0024109,-77.0024109,-77.002403,-77.0023117,-77.00229,-77.002278,-77.0022736,-77.002271,-77.002177,-77.0021744,-76.9732208,-76.973189,-76.973132,-76.972865,-76.9728389,-76.9724661,-76.9722214,-76.9722077,-76.97219,-76.9720078,-76.9720078,-76.9720078,-76.9720078,-76.9720078,-76.972007,-76.9719467,-76.9719402,-76.971841,-76.971828,-76.971817,-76.971817,-76.9716512,-77.002132,-77.00209,-77.0020604,-77.0020399,-77.0020399,-77.0020399,-77.0020299,-77.0020299,-77.0020299,-77.002028,-77.0019486,-77.001884,-77.0018539,-77.001851,-77.001844,-77.001838,-77.001744,-77.001731,-77.0017166,-77.001655,-77.001582,-77.001561,-77.001468,-77.0012894,-77.001283,-77.001152,-77.001104,-77.0010605,-77.000839,-76.9751602,-76.975068,-76.9750361,-76.975002,-76.9749778,-76.974812,-76.974812,-76.9748101,-76.974609,-76.974609,-76.974609,-76.974609,-76.974468,-76.974449,-76.9741892,-76.97417,-76.9741364,-76.9741067,-76.974094,-76.973896,-76.973896,-76.973896,-76.973896,-76.9736997,-76.973654,-76.9736078,-76.97351,-76.9733021,-77.0177268,-77.0175397,-77.0175297,-77.0175297,-77.0174561,-77.017369,-77.0173138,-77.0170898,-77.017028,-77.0169597,-77.016938,-77.016936,-77.016933,-77.0168915,-77.0168762,-77.016805,-77.016799,-77.0167847,-77.0167389,-77.0163837,-77.0163777,-77.016363,-77.016273,-77.0008309,-77.000814,-77.000798,-77.000778,-77.00056,-77.0005526,-77.00055,-77.0005493,-77.0003843,-77.000383,-77.0003128,-77.000275,-77.0002583,-77.0002365,-76.9997559,-76.999743,-76.9995193,-77.1118,-77.1092453,-77.1072693,-77.1071202,-77.1070725,-77.1042576,-77.1000061,-77.099872,-77.098629,-77.0985031,-77.0978357,-77.097076,-77.096449,-77.0960388,-77.0939934,-77.0921478,-77.0894699,-77.089469,-77.088806,-77.0886873,-77.088409,-77.087547,-77.087547,-77.086257,-77.0861588,-77.0266934,-77.0266934,-77.02668,-77.026618,-77.0264976,-77.0264816,-77.026437,-77.026415,-77.0263562,-77.0263562,-77.02633,-77.02633,-77.0262909,-77.026214,-77.026214,-77.0261952,-77.0261664,-77.0261383,-77.0261355,-77.0261355,-77.085866,-77.0850798,-77.0846399,-77.0845319,-77.084353,-77.084307,-77.0841638,-77.084091,-77.0838172,-77.082992,-77.082977,-77.082886,-77.0826035,-77.0824509,-77.082428,-77.082428,-77.082428,-77.0822158,-77.0821964,-77.0820978,-77.081749,-77.081726,-77.0812073,-77.0809784,-77.080841,-77.080797,-77.0804901,-77.055938,-77.055819,-77.055541,-77.0551682,-77.0550537,-77.0548172,-77.05413,-77.0540314,-77.0537415,-77.0537109,-77.053476,-77.0533003,-77.052706,-77.052706,-77.052706,-77.036987,-77.0369797,-77.0369797,-77.036979,-77.036972,-77.0369568,-77.0369415,-77.036921,-77.0369186,-77.0369,-77.036895,-77.0368805,-77.0368805,-77.0368805,-77.03688,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0260759,-77.0260316,-77.0260315,-77.0260303,-77.0260216,-77.0259933,-77.02599,-77.0259774,-77.0259616,-77.0258963,-77.0258179,-77.025785,-77.0257473,-77.0257034,-77.025649,-77.0256351,-77.0255401,-77.025536,-77.0254517,-77.025384,-77.0253754,-77.025269,-77.0251928,-77.0251498,-77.025121,-77.0249329,-77.0248566,-77.0247851,-77.0795746,-77.079554,-77.0792684,-77.0776291,-77.077317,-77.0772162,-77.076986,-77.076828,-77.076828,-77.0761261,-77.0761261,-77.0756377,-77.0752267,-77.0747452,-77.0526199,-77.0525902,-77.0525902,-77.052383,-77.0522133,-77.0519943,-77.0519943,-77.0519943,-77.0518799,-77.0518799,-77.0518799,-77.0515864,-77.0515857,-77.051473,-77.0514679,-77.0514677,-77.0514677,-77.051467,-77.0514253,-77.0513153,-77.0511961,-77.050941,-77.05077,-77.050765,-77.0507126,-77.0507126,-77.050621,-77.0503464,-77.0368576,-77.0368271,-77.0368161,-77.0366961,-77.036665,-77.0366599,-77.0366438,-77.036603,-77.0365975,-77.0365828,-77.036576,-77.036576,-77.0365734,-77.036553,-77.0365499,-77.0365439,-77.0365398,-77.0365298,-77.0365197,-77.0365177,-77.0365103,-77.0364902,-77.0364902,-77.0364902,-77.0246506,-77.0246489,-77.0245973,-77.0245859,-77.024579,-77.024521,-77.0245168,-77.0244827,-77.0243378,-77.0242801,-77.0242801,-77.0242767,-77.024257,-77.0242406,-77.0242143,-77.024212,-77.024199,-77.0241903,-77.0241648,-77.0241547,-77.024136,-77.0241326,-77.0240273,-77.0743179,-77.074133,-77.0740163,-77.0737534,-77.0737534,-77.0737501,-77.073505,-77.073314,-77.0732378,-77.073043,-77.0730362,-77.0730362,-77.0729099,-77.0729099,-77.072767,-77.072767,-77.072735,-77.072735,-77.0727234,-77.0726555,-77.0726497,-77.0726318,-77.0726318,-77.0725203,-77.072418,-77.072361,-77.0722905,-77.072244,-77.0722112,-77.0717316,-77.0364802,-77.0364802,-77.0364775,-77.0364701,-77.0364685,-77.0364685,-77.0364685,-77.0364685,-77.036465,-77.03645,-77.0364399,-77.0364178,-77.0364094,-77.0363713,-77.0363602,-77.0363464,-77.036316,-77.0362823,-77.036272,-77.036169,-77.036169,-77.036169,-77.0361481,-77.0360929,-77.0360184,-77.035986,-77.035817,-77.035659,-77.0356373,-77.02402,-77.0240173,-77.0240173,-77.0240099,-77.0240099,-77.0240099,-77.0239998,-77.0239811,-77.0239797,-77.0239697,-77.0239697,-77.023969,-77.023952,-77.023854,-77.023726,-77.0236887,-77.023674,-77.0235653,-77.0235465,-77.0234976,-77.023489,-77.0233802,-77.0233778,-77.071731,-77.0712967,-77.0711975,-77.0711288,-77.0710813,-77.0709915,-77.070895,-77.070549,-77.0705032,-77.0703598,-77.0703598,-77.0702767,-77.070145,-77.0700989,-77.0700773,-77.069887,-77.069847,-77.069847,-77.0696564,-77.069643,-77.0695877,-77.069424,-77.0693929,-77.0692802,-77.069002,-77.0688019,-77.0686035,-77.0686035,-77.0684997,-77.0684738,-77.0503056,-77.0501876,-77.0501876,-77.0501862,-77.0500107,-77.0500107,-77.049794,-77.0496874,-77.0495529,-77.0494998,-77.0494902,-77.0493622,-77.04934,-77.049268,-77.04887,-77.0488659,-77.0488498,-77.0488002,-77.0487902,-77.04879,-77.0487801,-77.0485992,-77.0485001,-77.0232857,-77.0232849,-77.0231781,-77.0231663,-77.0231261,-77.0231261,-77.023104,-77.0230483,-77.0230383,-77.0230383,-77.0230161,-77.0230026,-77.0229598,-77.0229547,-77.0229397,-77.022934,-77.022933,-77.0227661,-77.0227499,-77.0227077,-77.0225067,-77.022506,-77.0224686,-77.0224502,-77.0224502,-77.022445,-77.02242,-77.022306,-77.048446,-77.047666,-77.047465,-77.0471497,-77.04702,-77.046989,-77.046698,-77.0466498,-77.0466397,-77.0466309,-77.0465606,-77.0465088,-77.0462799,-77.0462799,-77.0462054,-77.046031,-77.0458527,-77.0355695,-77.03554,-77.03553,-77.0354996,-77.0354824,-77.035464,-77.0354614,-77.035461,-77.035361,-77.03531,-77.035275,-77.0351102,-77.035098,-77.0350571,-77.035057,-77.0350037,-77.0349503,-77.0349503,-77.0349503,-77.034944,-77.0348511,-77.0347562,-77.0347354,-77.034682,-77.0345999,-77.0345999,-77.034582,-77.03458,-77.0345798,-77.0345698,-77.0345698,-77.034564,-77.0345403,-77.0345,-77.03439,-77.034188,-77.034114,-77.0339966,-77.0339813,-77.0339813,-77.0339515,-77.0338161,-77.0338161,-77.033684,-77.0336609,-77.0336498,-77.033647,-77.0336424,-77.0336397,-77.0336397,-77.0336397,-77.0335999,-77.033577,-77.033555,-77.033555,-77.0335083,-77.0334674,-77.0334674,-77.03346,-77.033458,-77.033458,-77.0334298,-77.033419,-77.033402,-77.0222931,-77.022293,-77.022268,-77.0222397,-77.022186,-77.022137,-77.022137,-77.0221049,-77.0220874,-77.022065,-77.0220566,-77.022056,-77.0219962,-77.0219775,-77.0219775,-77.0219674,-77.0219573,-77.0219573,-77.021939,-77.021938,-77.0219198,-77.0321363,-77.032112,-77.032097,-77.0320663,-77.032057,-77.032055,-77.0320176,-77.0320176,-77.0320176,-77.032015,-77.0320143,-77.0320076,-77.0319995,-77.03197,-77.03197,-77.031964,-77.031964,-77.031964,-77.031964,-77.03196,-77.03196,-77.03196,-77.0219116,-77.0219116,-77.0219116,-77.0219116,-77.0219116,-77.0219097,-77.0219097,-77.0219097,-77.0219097,-77.0219097,-77.0219097,-77.0219097,-77.0219097,-77.021904,-77.0218997,-77.0218997,-77.0218997,-77.021695,-77.021687,-77.021647,-77.021617,-77.0215912,-77.0214386,-77.0213013,-77.021282,-77.0458527,-77.045852,-77.045848,-77.045784,-77.04542,-77.045364,-77.045364,-77.045349,-77.0452577,-77.0452347,-77.0452302,-77.045213,-77.04514,-77.045086,-77.045076,-77.0449524,-77.0449492,-77.0449492,-77.0449398,-77.0449097,-77.0449003,-77.0449003,-77.0449003,-77.0448902,-77.0448874,-77.0448873,-77.044563,-77.044548,-77.0444148,-77.044405,-77.044384,-77.0443551,-77.044344,-77.044344,-77.0207443,-77.02053,-77.02053,-77.02053,-77.02053,-77.02053,-77.020457,-77.020357,-77.0203018,-77.0202942,-77.0202713,-77.020256,-77.0202484,-77.0201645,-77.020132,-77.0201035,-77.020099,-77.0200865,-77.0200865,-77.0200811,-77.0442599,-77.0442465,-77.0441895,-77.044189,-77.044189,-77.044189,-77.044189,-77.0439877,-77.0439224,-77.0439126,-77.043902,-77.0437851,-77.0437469,-77.043708,-77.043561,-77.0435338,-77.0435176,-77.0435136,-77.0434874,-77.043474,-77.0434599,-77.0434599,-77.0434599,-77.0434499,-77.0434398,-77.0434298,-77.0434245,-77.033397,-77.0333557,-77.0331192,-77.0330734,-77.033073,-77.0330658,-77.0330582,-77.033021,-77.0330124,-77.0329343,-77.032912,-77.03291,-77.032783,-77.032768,-77.0327197,-77.0327197,-77.0327197,-77.032717,-77.032717,-77.0326996,-77.032692,-77.032632,-77.0325916,-77.0325916,-77.032513,-77.032508,-77.0324917,-77.032487,-77.032371,-77.0323639,-77.032356,-77.032356,-77.032356,-77.032356,-77.0323257,-77.032257,-77.0322101,-77.0200811,-77.0200811,-77.0200771,-77.0200342,-77.0200261,-77.020001,-77.0199752,-77.0199738,-77.0199513,-77.0199101,-77.0199101,-77.0199101,-77.0199101,-77.0199101,-77.0199101,-77.0199101,-77.0198491,-77.019704,-77.019613,-77.0192337,-77.0192336,-77.01921,-77.019194,-77.019192,-77.0191193,-77.0191061,-77.0319499,-77.0319499,-77.0319499,-77.0319499,-77.0319499,-77.0319499,-77.0319499,-77.0319398,-77.0319344,-77.031929,-77.0318922,-77.0318922,-77.031872,-77.031872,-77.031858,-77.031685,-77.0315933,-77.031592,-77.0315569,-77.031128,-77.0310467,-77.031046,-77.0310017,-77.0430298,-77.0430298,-77.042963,-77.042919,-77.0428122,-77.04279,-77.0427626,-77.0427203,-77.0427094,-77.0427094,-77.042709,-77.042645,-77.042581,-77.0424194,-77.0424194,-77.042416,-77.0423889,-77.0423203,-77.042228,-77.042192,-77.042192,-77.0421677,-77.0421143,-77.042098,-77.042039,-77.03081,-77.0307999,-77.0306244,-77.0305405,-77.030465,-77.030415,-77.030375,-77.030334,-77.0303299,-77.0303268,-77.0302505,-77.0302429,-77.030197,-77.030197,-77.030197,-77.0301794,-77.0301514,-77.030105,-77.0300784,-77.030069,-77.030069,-77.030044,-77.0300369,-77.0300293,-77.030014,-77.0299988,-77.029991,-77.029939,-77.0681711,-77.068168,-77.068057,-77.0679827,-77.067962,-77.067962,-77.0675201,-77.0674973,-77.067482,-77.0672302,-77.0671997,-77.0671463,-77.0671463,-77.066987,-77.0668461,-77.0668354,-77.0668045,-77.066786,-77.0667572,-77.0666809,-77.0666122,-77.066391,-77.06636,-77.0662299,-77.0662145,-77.0661199,-77.0419297,-77.0418808,-77.041863,-77.0417541,-77.041735,-77.0417212,-77.0417125,-77.041708,-77.0417078,-77.041704,-77.0417023,-77.0416997,-77.041693,-77.0416803,-77.0416702,-77.0416501,-77.0416501,-77.041591,-77.041481,-77.041446,-77.041446,-77.041446,-77.041409,-77.0412759,-77.041211,-77.0298839,-77.0298772,-77.029866,-77.0297968,-77.0297961,-77.0297961,-77.0297954,-77.0297492,-77.0297203,-77.0297103,-77.0297081,-77.0296995,-77.0296922,-77.0296836,-77.0296774,-77.0296774,-77.0296298,-77.0296298,-77.0296197,-77.0296197,-77.029513,-77.029468,-77.0294189,-77.0294189,-77.0294189,-77.0294189,-77.0293427,-77.029331,-77.0291101,-77.0654755,-77.0654144,-77.0653229,-77.0650864,-77.0645676,-77.064483,-77.0641785,-77.0641666,-77.064015,-77.064015,-77.064015,-77.0638504,-77.0633794,-77.0633794,-77.063338,-77.0630188,-77.0630188,-77.0630188,-77.0630188,-77.0630045,-77.0629883,-77.062988,-77.062973,-77.0628711,-77.0628711,-77.0628101,-77.062683,-77.028979,-77.0289297,-77.0289078,-77.0288298,-77.0288265,-77.0287903,-77.028712,-77.0286085,-77.028533,-77.0285133,-77.0284653,-77.0284463,-77.0284422,-77.028396,-77.0283309,-77.028297,-77.0282565,-77.028244,-77.028241,-77.0282211,-77.0281304,-77.0281304,-77.0281197,-77.0281197,-77.0281197,-77.028106,-77.0190847,-77.0190277,-77.0189895,-77.0189667,-77.0189298,-77.0189298,-77.018929,-77.0188057,-77.0187073,-77.0185165,-77.0184497,-77.018289,-77.0182566,-77.018188,-77.018188,-77.018188,-77.018066,-77.0179634,-77.0179401,-77.0179401,-77.0179146,-77.0177841,-77.0177697,-77.0410185,-77.040947,-77.040947,-77.040947,-77.040858,-77.0406494,-77.0405866,-77.0403748,-77.0403748,-77.040374,-77.040163,-77.04013,-77.0400085,-77.039971,-77.0398941,-77.039894,-77.0398712,-77.0398712,-77.0398712,-77.039871,-77.039709,-77.039709,-77.039709,-77.0622968,-77.0622711,-77.0622711,-77.0621948,-77.062139,-77.0619659,-77.0619049,-77.0615508,-77.0615166,-77.061401,-77.0613098,-77.061305,-77.061137,-77.06074,-77.060622,-77.0604665,-77.06016,-77.0599747,-77.0598297,-77.0598297,-77.059585,-77.0595169,-77.059342,-77.0591703,-77.0589294,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.0396465,-77.039639,-77.039626,-77.039606,-77.0395508,-77.0394809,-77.0394601,-77.03945,-77.03944,-77.0394363,-77.0393829,-77.039333,-77.0392294,-77.0391999,-77.0391161,-77.03907,-77.0390472,-77.039047,-77.038943,-77.038943,-77.0388718,-77.038826,-77.028105,-77.028105,-77.0281003,-77.028084,-77.028084,-77.028057,-77.0280299,-77.0279922,-77.0279922,-77.0279903,-77.0279903,-77.02799,-77.0279568,-77.0279568,-77.0278549,-77.027825,-77.0277557,-77.0277301,-77.0276108,-77.027596,-77.02758,-77.027563,-77.027563,-77.0275345,-77.0275162,-77.0275162,-77.0274699,-77.0274245,-77.0274203,-77.02742,-77.0273972,-77.02739,-77.0589294,-77.0589294,-77.0586319,-77.0585785,-77.0584971,-77.0584897,-77.0583777,-77.0583344,-77.058334,-77.058305,-77.0581698,-77.0578694,-77.057793,-77.057787,-77.057787,-77.0577316,-77.05772,-77.05772,-77.05772,-77.05772,-77.05772,-77.05772,-77.0575485,-77.0575485,-77.0574363,-77.0573883,-77.0573883,-77.0572433,-77.0572042,-77.0571707,-77.0571399,-77.0571399,-77.0570896,-77.057009,-77.0567583,-77.05661,-77.056556,-77.0564599,-77.0561676,-77.0388107,-77.0387955,-77.0387198,-77.0386762,-77.038609,-77.0385555,-77.0385455,-77.0385374,-77.0384999,-77.038208,-77.0381165,-77.0381165,-77.0379715,-77.0379098,-77.0375519,-77.0373917,-77.0373611,-77.0373611,-77.037356,-77.037325,-77.037325,-77.0372772,-77.037267,-77.0372086,-77.037155,-77.0370178,-77.037017,-77.0370025,-77.027385,-77.0273666,-77.027351,-77.027259,-77.027255,-77.027244,-77.027146,-77.027137,-77.0271058,-77.0270978,-77.0270502,-77.027049,-77.0270462,-77.0270401,-77.027034,-77.0270301,-77.0270301,-77.027024,-77.0269699,-77.026947,-77.0269456,-77.0268638,-77.0162422,-77.0162,-77.0162,-77.0161879,-77.0161799,-77.0161799,-77.0161799,-77.0161799,-77.0161799,-77.0161698,-77.0161001,-77.0160491,-77.0158104,-77.015754,-77.015754,-77.0157166,-77.015648,-77.0154402,-77.0154266,-77.0154266,-77.0153765,-77.0153584,-77.0152994,-77.015245,-77.0152226,-77.0152054,-77.0151985,-77.0151901,-77.0151901,-77.015171,-76.9994898,-76.9994798,-76.9994737,-76.999415,-76.9993698,-76.999298,-76.999286,-76.999286,-76.9992397,-76.9991913,-76.999018,-76.9989252,-76.998839,-76.998834,-76.9986999,-76.998484,-76.998484,-76.998481,-76.9984625,-76.998447,-76.998447,-76.998447,-76.998447,-76.9984397,-76.998267,-76.9982627,-76.9982533,-76.998138,-76.9772503,-76.977248,-76.9772302,-76.9772302,-76.977188,-76.9771725,-76.9770659,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.9770397,-76.977017,-76.976849,-76.976465,-76.97644,-76.97629,-76.9762726,-76.9762599,-76.9762599,-76.9762237,-76.9762203,-76.9761445,-76.976111,-76.9760755,-76.976009,-76.9760064,-76.9759598,-76.975868,-76.975716,-76.9754791,-76.9753848,-76.9753342,-77.01517,-77.0151639,-77.0151639,-77.015003,-77.01494,-77.014837,-77.0147697,-77.0147697,-77.0147,-77.0146966,-77.0146376,-77.0145035,-77.0145035,-77.0144391,-77.014394,-77.0142721,-77.0142721,-77.014244,-77.014222,-77.014142,-77.014058,-77.014058,-77.014058,-77.014058,-77.014058,-77.014058,-77.014058,-77.0140207,-76.995246,-76.995228,-76.995221,-76.9952164,-76.995147,-76.99504,-76.995007,-76.9949985,-76.9949774,-76.9949602,-76.9949301,-76.9949227,-76.9948918,-76.9948898,-76.994859,-76.994804,-76.994743,-76.994743,-76.994728,-76.994728,-76.994728,-76.9946994,-76.994599,-76.994582,-76.9945177,-76.994476,-76.9943619,-76.9943192,-76.9940587,-76.9939702,-76.9939101,-76.9939101,-76.993858,-76.97904,-76.979038,-76.979025,-76.9789997,-76.978998,-76.9789702,-76.978942,-76.978876,-76.9788033,-76.978752,-76.9785995,-76.978381,-76.978317,-76.9783071,-76.97825,-76.978089,-76.9778082,-76.9777603,-76.9775923,-76.977491,-76.977483,-76.9772835,-76.9772697,-76.9772568,-77.014008,-77.0139654,-77.01393,-77.013877,-77.0138564,-77.0138148,-77.0137939,-77.013755,-77.01368,-77.0136719,-77.0136606,-77.0136499,-77.013636,-77.0135593,-77.013351,-77.0132538,-77.0131912,-77.013176,-77.0130611,-77.013036,-77.0129102,-77.0128708,-76.9981024,-76.997888,-76.997879,-76.997706,-76.9976699,-76.9976699,-76.9976663,-76.9976196,-76.997601,-76.9975967,-76.997583,-76.997573,-76.996953,-76.9968929,-76.9966484,-76.996602,-76.996419,-76.996288,-76.99628,-76.996273,-76.9962311,-76.996192,-76.996175,-76.9961699,-76.996159,-76.9961397,-76.9961163,-76.9961122,-76.9961096,-76.9960197,-76.9960197,-76.9960175,-76.995979,-76.995979,-76.995945,-76.995636,-76.995599,-76.995461,-76.995357,-76.9953003,-76.9613133,-76.9612053,-76.9611061,-76.960856,-76.960671,-76.960467,-76.9604263,-76.9599152,-76.959869,-76.9598312,-76.9597092,-76.9595795,-76.959543,-76.9595184,-76.9592822,-76.959221,-76.959005,-76.9589999,-76.958914,-76.958908,-76.958847,-76.958847,-76.9586868,-76.958652,-76.9586176,-76.9585266,-76.957859,-76.957679,-76.957679,-76.9571533,-76.957153,-76.957091,-76.956649,-76.956094,-76.9560695,-76.9560546,-76.9560213,-76.9558939,-76.9556122,-76.955031,-76.955031,-76.954946,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012496,-77.012474,-77.012466,-77.012466,-77.012466,-77.012443,-77.012428,-77.012345,-76.980869,-76.9808418,-76.9807801,-76.9806044,-76.9805729,-76.9804495,-76.9801886,-76.9801886,-76.9800568,-76.980012,-76.979898,-76.979825,-76.979684,-76.9796143,-76.9794743,-76.979448,-76.9794,-76.979115,-76.97905,-76.9790467,-76.9790467,-76.9259491,-76.925884,-76.9251328,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.924709,-76.923393,-76.9228799,-76.922518,-76.9219378,-76.9208984,-76.9207762,-76.9202151,-76.918815,-76.9175262,-76.91706,-76.91706,-76.914029,-76.9120914,-76.911201,-76.6909207,-77.0123021,-77.0122276,-77.0121723,-77.012169,-77.012169,-77.012169,-77.012169,-77.0121599,-77.0121599,-77.0121599,-77.0121599,-77.0121498,-77.012148,-77.011863,-77.011528,-77.011402,-77.011402,-77.011395,-77.0110016,-77.010887,-77.010728,-77.0106501,-77.0106398,-77.0106354,-77.0106203,-76.9937599,-76.9937592,-76.9937515,-76.99373,-76.9937298,-76.9937083,-76.9935989,-76.9935532,-76.9934852,-76.993474,-76.9934235,-76.993248,-76.993196,-76.9926924,-76.9926401,-76.99262,-76.992559,-76.9924393,-76.992429,-76.9923172,-76.992313,-76.992233,-76.992157,-76.9921278,-76.992097,-76.992083,-76.9918289,-76.991741,-76.9915543,-76.9915297,-76.9915297,-76.9326477,-76.9325485,-76.931573,-76.9314656,-76.9311676,-76.9311371,-76.9311371,-76.9311371,-76.9309804,-76.930389,-76.930389,-76.9300796,-76.929915,-76.9298782,-76.9288635,-76.928722,-76.9283898,-76.928253,-76.9280639,-76.927782,-76.92733,-76.9272919,-76.9267114,-76.926631,-76.9265366,-76.9265029,-76.926339,-76.926296,-76.926081,-76.926051,-76.926051,-76.926051,-76.926051,-77.010564,-77.010548,-77.0105209,-77.010275,-77.0098877,-77.0098877,-77.00988,-77.009765,-77.0097493,-77.0097275,-77.0097275,-77.009704,-77.009658,-77.009643,-77.0096054,-77.0095978,-77.009567,-77.0095367,-77.0095085,-77.0094797,-77.0094452,-77.009437,-77.009376,-76.9833503,-76.9833248,-76.9833145,-76.9833145,-76.9833,-76.9833,-76.9833,-76.9832764,-76.9832764,-76.9832209,-76.983214,-76.983164,-76.9831085,-76.98309,-76.9830499,-76.9829865,-76.9828847,-76.9828847,-76.982837,-76.9826697,-76.9826033,-76.982548,-76.982531,-76.9823257,-76.982219,-76.9821861,-76.9821453,-76.982132,-76.9820434,-76.982035,-76.981994,-76.9819489,-76.981926,-76.981808,-76.9815599,-76.9815599,-76.9815512,-76.9815499,-76.981501,-76.98146,-76.9812756,-76.9812622,-76.981254,-76.9865374,-76.9865,-76.9864301,-76.986407,-76.986358,-76.986358,-76.986358,-76.986355,-76.986355,-76.986251,-76.9862451,-76.986175,-76.9861069,-76.985976,-76.985848,-76.9858414,-76.9858322,-76.9856228,-76.9856186,-76.9855598,-76.985357,-76.985346,-76.985275,-76.985275,-76.9852066,-76.9376018,-76.9375248,-76.9374228,-76.937296,-76.9369829,-76.9365545,-76.9365545,-76.9365545,-76.9363929,-76.936334,-76.9361572,-76.9361038,-76.936029,-76.9354313,-76.935112,-76.935112,-76.935112,-76.935112,-76.934959,-76.933578,-76.9334652,-76.933113,-76.933113,-76.933113,-76.93303,-77.0093155,-77.0093079,-77.0092628,-77.0092628,-77.009201,-77.0091598,-77.00915,-77.00915,-77.0091464,-77.0091433,-77.009123,-77.0091171,-77.0091171,-77.0091171,-77.0091171,-77.0091152,-77.009113,-77.009113,-77.0091097,-77.0091074,-77.009104,-77.0091019,-77.0091019,-77.0091019,-77.0091002,-77.0091002,-77.0090975,-77.0090962,-76.985163,-76.985144,-76.9850823,-76.984981,-76.984894,-76.9848506,-76.984726,-76.9842877,-76.984275,-76.9842079,-76.983957,-76.983913,-76.98365,-76.98365,-76.9834518,-76.9833984,-76.9833892,-76.98338,-76.98336,-76.9833597,-76.94264,-76.9426397,-76.9426317,-76.9425888,-76.9425398,-76.9425398,-76.9424701,-76.942407,-76.942345,-76.9419632,-76.941603,-76.9413583,-76.9413067,-76.9413067,-76.9410858,-76.941056,-76.9407186,-76.940694,-76.9405402,-76.9400024,-76.9400024,-76.93966,-76.939595,-76.9394989,-76.9394989,-76.939246,-76.9392105,-76.9391797,-76.9391703,-76.9389954,-76.9389725,-76.938789,-76.9386647,-76.9386368,-76.9384689,-76.938451,-76.9377594,-77.0090901,-77.0090878,-77.0090874,-77.0090874,-77.0090839,-77.0090839,-77.009083,-77.0090599,-77.0090593,-77.0090545,-77.0090475,-77.0090475,-77.0090398,-77.0090395,-77.0090242,-77.0090061,-77.0089972,-77.008992,-77.008992,-77.0089902,-77.0089297,-77.008905,-77.008899,-77.008899,-77.008899,-77.008792,-76.988988,-76.9888213,-76.9887999,-76.988739,-76.9886698,-76.9886356,-76.9885483,-76.9885182,-76.988508,-76.9884409,-76.988383,-76.9882903,-76.9882903,-76.9882507,-76.9882326,-76.988121,-76.988083,-76.987922,-76.987922,-76.9879,-76.987845,-76.9878006,-76.9878,-76.9877625,-76.9877625,-76.987511,-76.987427,-76.9874268,-76.9873273,-76.9873178,-76.9871899,-76.9870836,-76.9870758,-76.987075,-76.9870692,-76.9870477,-76.9870155,-76.986932,-76.986917,-76.9868989,-76.9868088,-76.986808,-76.9868,-76.98674,-76.94853,-76.9478278,-76.9478278,-76.9478278,-76.9472122,-76.9469943,-76.946617,-76.946617,-76.9464569,-76.946252,-76.9456482,-76.944802,-76.944802,-76.944802,-76.944534,-76.9443449,-76.9436962,-76.9436962,-76.9435556,-76.942925,-76.9427185,-76.942718,-77.008777,-77.0087204,-77.0086517,-77.008611,-77.0085737,-77.008506,-77.008506,-77.0084305,-77.0084305,-77.008422,-77.0082901,-77.0081482,-77.0081177,-77.008009,-77.007988,-77.0079041,-77.007888,-77.0078462,-77.0078094,-77.007782,-77.007758,-77.0077309,-77.0076974,-76.9915256,-76.9915203,-76.9915203,-76.9915201,-76.9914734,-76.991472,-76.9914526,-76.99134,-76.991298,-76.991272,-76.991211,-76.991203,-76.9910999,-76.9910677,-76.9910502,-76.9909821,-76.990848,-76.990691,-76.99067,-76.990667,-76.99062,-76.990592,-76.990578,-76.990578,-76.9905131,-76.990489,-76.9903897,-76.9903522,-76.9902798,-76.9902677,-76.9902402,-76.954684,-76.9541504,-76.9528355,-76.952446,-76.9524078,-76.9522018,-76.9522018,-76.9521962,-76.952119,-76.952119,-76.9516525,-76.9516525,-76.951437,-76.951428,-76.951354,-76.9513321,-76.950942,-76.950942,-76.950903,-76.950875,-76.9508286,-76.9508286,-76.9508286,-76.9508286,-76.9506119,-76.9500656,-76.94929,-76.949183,-76.9491112,-76.948951,-76.948779,-76.9486694,-76.9486694,-76.9486694,-76.9486694,-76.9486385,-76.9486385,-77.0075302,-77.007388,-77.0073299,-77.0073013,-77.0073013,-77.0073013,-77.0073013,-77.0073013,-77.0072501,-77.007214,-77.007214,-77.007214,-77.0071489,-77.0071489,-77.0071335,-77.007103,-77.007055,-77.0070349,-77.0070343,-77.006997,-77.0067215,-77.006685,-77.006619,-77.006619,-77.006619,-77.006609,-77.0066004,-77.0065997,-76.990236,-76.9902302,-76.9902115,-76.9902115,-76.99021,-76.9901899,-76.9901159,-76.9900853,-76.9900818,-76.9900818,-76.9900639,-76.9900572,-76.9900572,-76.990033,-76.99002,-76.990013,-76.989965,-76.989938,-76.9899292,-76.9898399,-76.989576,-76.9895355,-76.9895248,-76.989475,-76.9892599,-76.989038,-76.9889896,-76.9889896,-77.006464,-77.0064316,-77.006421,-77.006319,-77.0062408,-77.0062403,-77.0062103,-77.0062103,-77.0062103,-77.0061062,-77.006074,-77.0059092,-77.005899,-77.0058911,-77.0058701,-77.005867,-77.0058601,-77.0058426,-77.0058326,-77.005822,-77.005772,-77.0057347,-77.0056998,-77.0056978,-77.0056978,-77.0054703,-77.0054703,-77.00547,-77.00547,-76.9671783,-76.9671783,-76.9671783,-76.9671783,-76.967178,-76.967147,-76.9671075,-76.9669278,-76.966423,-76.966375,-76.9662633,-76.9662371,-76.9659206,-76.9659206,-76.9653802,-76.9653802,-76.9652171,-76.9651401,-76.9651031,-76.964859,-76.964787,-76.9645767,-76.964576,-76.9639053,-76.96344,-76.962913,-77.0053424,-77.0050748,-77.0050648,-77.0045624,-77.0045624,-77.0045599,-77.0045554,-77.0045551,-77.0045471,-77.004396,-77.004364,-77.0041656,-77.004095,-77.0039902,-77.0038933,-77.0037994,-77.0037532,-77.003662,-77.00361,-77.0036011,-77.0035762,-77.0035399,-77.0035111,-77.0034923,-77.0034803,-76.9714701,-76.9714259,-76.971413,-76.9711304,-76.9708328,-76.9707902,-76.970599,-76.970599,-76.9702598,-76.9702155,-76.9701385,-76.970108,-76.9699783,-76.96997,-76.969931,-76.9698715,-76.9698601,-76.969834,-76.9697267,-76.969599,-76.9695432,-76.969223,-76.9687772,-76.9686846,-76.968637,-76.9685653,-76.9684448,-76.9684219,-76.9682099,-76.96819,-76.967888,-76.9677117,-76.967483,-76.967259,-77.003295,-77.0032782,-77.0031815,-77.0031698,-77.003141,-77.0031128,-77.0030947,-77.003056,-77.0029068,-77.0029068,-77.002861,-77.0028305,-77.0028076,-77.002502,-77.002469,-77.0024261,-77.0024109,-77.0024109,-77.0024109,-77.0024,-77.0023499,-77.0023499,-77.0023193,-77.0023117,-77.0022736,-77.0022652,-76.97295,-76.9727685,-76.972315,-76.9722151,-76.9721252,-76.9720078,-76.9720078,-76.9720078,-76.9719238,-76.9719238,-76.971867,-76.9718047,-76.9717484,-77.0020976,-77.0020701,-77.0020545,-77.0020509,-77.0020299,-77.0020299,-77.0020299,-77.0020299,-77.0020294,-77.0020233,-77.0020198,-77.0019387,-77.0018528,-77.0018475,-77.001838,-77.001838,-77.00177,-77.0017242,-77.00167,-77.00167,-77.001533,-77.001518,-77.0013885,-77.001388,-77.001242,-77.0011585,-77.001129,-77.001091,-76.9747009,-76.9746504,-76.974609,-76.974609,-76.974609,-76.974609,-76.974609,-76.974609,-76.974609,-76.974572,-76.974556,-76.9741364,-76.9740598,-76.973896,-76.9737178,-76.9736997,-76.9736078,-76.9734503,-76.9734503,-76.973439,-76.9733047,-77.0177231,-77.017572,-77.0175599,-77.017559,-77.0175397,-77.0175008,-77.0174003,-77.0173187,-77.016861,-77.0167699,-77.0167699,-77.0167699,-77.0167389,-77.016542,-77.016542,-77.0164287,-77.016382,-77.0163498,-77.0163498,-77.016349,-77.016318,-77.0162798,-77.0162735,-77.0008316,-77.0008087,-77.000737,-77.000709,-77.000673,-77.0006398,-77.0006204,-77.0005701,-77.00055,-77.00055,-77.00055,-77.0005493,-77.000473,-77.00044,-77.0003951,-77.0003586,-77.000309,-77.0001373,-76.9998779,-76.9997864,-76.99974,-76.999727,-76.999595,-76.999565,-76.9995193,-76.9995193,-77.1161118,-77.1117899,-77.1115398,-77.1071202,-77.1048737,-77.1046295,-77.1042633,-77.1037,-77.103508,-77.10173,-77.1005997,-77.100594,-77.100544,-77.0985107,-77.097236,-77.096397,-77.095908,-77.094714,-77.0910269,-77.0893445,-77.088836,-77.0885908,-77.0884476,-77.0881824,-77.087547,-77.086257,-77.0862003,-77.086188,-77.0860138,-77.0267868,-77.0267868,-77.0267181,-77.026718,-77.0266812,-77.026632,-77.026619,-77.026614,-77.0265899,-77.02656,-77.0264816,-77.026481,-77.0264511,-77.026437,-77.026437,-77.026437,-77.0264199,-77.026309,-77.0263062,-77.0262985,-77.026214,-77.026214,-77.026214,-77.026184,-77.085739,-77.0850798,-77.0847397,-77.0847168,-77.08469,-77.0846463,-77.0846463,-77.084373,-77.08435,-77.084307,-77.0839003,-77.083455,-77.0830383,-77.082984,-77.082428,-77.0822065,-77.0820764,-77.081657,-77.0815887,-77.0808411,-77.0808411,-77.080816,-77.080726,-77.08055,-77.080513,-77.055779,-77.055684,-77.0556419,-77.055541,-77.0555191,-77.0554276,-77.0554152,-77.055231,-77.0552292,-77.055229,-77.055229,-77.0550537,-77.0549344,-77.054916,-77.0548172,-77.0546417,-77.054127,-77.054071,-77.05371,-77.05371,-77.053388,-77.053388,-77.053375,-77.0532386,-77.0530014,-77.0529633,-77.0528651,-77.052853,-77.036994,-77.0369797,-77.036972,-77.036972,-77.036971,-77.036967,-77.03692,-77.036904,-77.036901,-77.0368958,-77.0368805,-77.0368805,-77.03688,-77.0368729,-77.0368729,-77.0368729,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368652,-77.0368652,-77.0260651,-77.0260477,-77.02598,-77.0259699,-77.0259552,-77.025881,-77.025876,-77.0258714,-77.0257874,-77.0257416,-77.0257165,-77.0257034,-77.0256729,-77.025657,-77.0255814,-77.0255593,-77.0253959,-77.0252799,-77.0251244,-77.025032,-77.0249376,-77.0799983,-77.079017,-77.079002,-77.078539,-77.0784378,-77.0784198,-77.0781097,-77.0775681,-77.0774536,-77.0774536,-77.0773392,-77.077308,-77.077284,-77.0772629,-77.0770298,-77.0770298,-77.077013,-77.0769958,-77.076828,-77.076032,-77.0754318,-77.0746963,-77.0525284,-77.0523453,-77.052234,-77.052234,-77.0521622,-77.052017,-77.052002,-77.0519943,-77.0519943,-77.0519943,-77.0519,-77.0518799,-77.051674,-77.051665,-77.0515864,-77.0515857,-77.0515213,-77.0515213,-77.051473,-77.0514677,-77.0511169,-77.0510406,-77.0508347,-77.0507126,-77.0504236,-77.0503998,-77.0503998,-77.0503914,-77.036857,-77.03685,-77.036836,-77.0368161,-77.036811,-77.036811,-77.0366867,-77.036683,-77.0366619,-77.0365854,-77.036576,-77.036566,-77.036552,-77.0365479,-77.0365331,-77.0365258,-77.0365204,-77.0365197,-77.0365017,-77.0365009,-77.036498,-77.036498,-77.0364976,-77.0364976,-77.0364902,-77.0246798,-77.024579,-77.024579,-77.024579,-77.024559,-77.0245571,-77.0245269,-77.0244446,-77.0243827,-77.024366,-77.024352,-77.0242844,-77.0242844,-77.0242844,-77.0242767,-77.0242338,-77.0242004,-77.024147,-77.024147,-77.024147,-77.024147,-77.024147,-77.024146,-77.024136,-77.024069,-77.0240676,-77.0240273,-77.0746453,-77.0743179,-77.0743179,-77.0739365,-77.0736542,-77.0735397,-77.0734363,-77.0734024,-77.0733666,-77.073329,-77.073329,-77.073272,-77.0732432,-77.0730896,-77.0730896,-77.0730362,-77.0730362,-77.0729005,-77.0726511,-77.0726236,-77.0724197,-77.0722112,-77.0719681,-77.0718155,-77.036483,-77.0364777,-77.0364728,-77.0364685,-77.0364685,-77.0364685,-77.0364685,-77.0364685,-77.0364685,-77.0364473,-77.0364396,-77.0364178,-77.0364024,-77.0363501,-77.0362897,-77.0362823,-77.0362803,-77.0361999,-77.036169,-77.036096,-77.035829,-77.0358047,-77.0356522,-77.035646,-77.02402,-77.02402,-77.0239898,-77.0239797,-77.0239697,-77.0239697,-77.0239697,-77.0239697,-77.023969,-77.0239603,-77.0239603,-77.0238724,-77.0238449,-77.023825,-77.0238113,-77.023811,-77.023807,-77.0238,-77.0238,-77.023775,-77.023582,-77.0235748,-77.023498,-77.023397,-77.071274,-77.071162,-77.0709613,-77.0709,-77.0709,-77.0704097,-77.0703812,-77.070198,-77.0698776,-77.0696256,-77.0696182,-77.069607,-77.0694546,-77.0694405,-77.0694204,-77.0691267,-77.0690079,-77.0686646,-77.0686492,-77.0686314,-77.0503331,-77.0502862,-77.0501862,-77.0501862,-77.0501349,-77.0500107,-77.0500107,-77.0494998,-77.0494922,-77.04934,-77.0490933,-77.049031,-77.048998,-77.0489766,-77.048962,-77.0488559,-77.0488002,-77.04879,-77.04879,-77.0484848,-77.0232797,-77.0232797,-77.023248,-77.023189,-77.02314,-77.0231261,-77.023052,-77.02305,-77.0230383,-77.022949,-77.022933,-77.022933,-77.0229111,-77.0229034,-77.022833,-77.0226822,-77.022487,-77.022463,-77.0223923,-77.0223618,-77.048462,-77.0483475,-77.048197,-77.0480265,-77.048011,-77.04797,-77.047939,-77.047843,-77.0477558,-77.047413,-77.047198,-77.0471497,-77.0471497,-77.047022,-77.046998,-77.046989,-77.046989,-77.046936,-77.0468979,-77.0468979,-77.046877,-77.046869,-77.046869,-77.0468161,-77.046789,-77.046755,-77.0467141,-77.0467063,-77.0467061,-77.0467054,-77.0467054,-77.046698,-77.046688,-77.0466309,-77.0465398,-77.0465088,-77.0462484,-77.0462484,-77.0458679,-77.0458527,-77.0458527,-77.0355535,-77.0355301,-77.035514,-77.035514,-77.035347,-77.0350901,-77.0350901,-77.0350571,-77.0350571,-77.0350494,-77.034967,-77.0349503,-77.0348969,-77.0348969,-77.034896,-77.0347562,-77.0347065,-77.0345932,-77.03458,-77.0345798,-77.0345798,-77.0345798,-77.0345798,-77.034317,-77.034191,-77.0341034,-77.034099,-77.0340729,-77.0340652,-77.0340576,-77.0339813,-77.0339813,-77.0339813,-77.0338516,-77.033846,-77.0338161,-77.0338161,-77.0337074,-77.0337061,-77.033673,-77.0336609,-77.0336409,-77.033598,-77.0335111,-77.033494,-77.0334761,-77.03346,-77.0334097,-77.0334097,-77.0222931,-77.0222321,-77.0222015,-77.0222015,-77.0220874,-77.022072,-77.022065,-77.022056,-77.022007,-77.0219775,-77.0219775,-77.0219775,-77.0219721,-77.0219674,-77.021964,-77.0219573,-77.0219422,-77.0219256,-77.0219198,-77.0219198,-77.0219198,-77.0219198,-77.0219198,-77.0219198,-77.0321363,-77.0321357,-77.03212,-77.032108,-77.032106,-77.0321,-77.032067,-77.0320176,-77.0320176,-77.0320176,-77.0320156,-77.0320096,-77.032007,-77.031997,-77.031964,-77.031964,-77.031964,-77.031964,-77.031964,-77.03196,-77.03196,-77.03196,-77.0319499,-77.0219198,-77.0219116,-77.0219116,-77.0219116,-77.0219097,-77.0219097,-77.0219097,-77.0219097,-77.0219097,-77.0219097,-77.0219097,-77.0219097,-77.0219097,-77.0219097,-77.0219097,-77.021901,-77.0218997,-77.0218997,-77.0218811,-77.0218521,-77.0218501,-77.021843,-77.021842,-77.0218282,-77.021801,-77.021743,-77.02171,-77.021682,-77.0215988,-77.0215912,-77.02157,-77.0215208,-77.0214996,-77.0214194,-77.0213411,-77.021307,-77.0212301,-77.021224,-77.021179,-77.045784,-77.045769,-77.0455547,-77.045512,-77.04546,-77.04544,-77.045364,-77.045364,-77.0453415,-77.0452805,-77.0452805,-77.0452597,-77.0452042,-77.045184,-77.045184,-77.045161,-77.045086,-77.045076,-77.044958,-77.0449479,-77.0449003,-77.0448902,-77.044854,-77.0448171,-77.0447124,-77.0446401,-77.0445023,-77.0211501,-77.02104,-77.0210212,-77.0209119,-77.020904,-77.020894,-77.020798,-77.0207443,-77.020744,-77.020736,-77.0206638,-77.02057,-77.02053,-77.02053,-77.02053,-77.02053,-77.020457,-77.0204262,-77.0202484,-77.0202332,-77.020225,-77.0202103,-77.020187,-77.0201645,-77.020164,-77.0201066,-77.020099,-77.020095,-77.0442398,-77.044189,-77.044189,-77.0439072,-77.043902,-77.0437575,-77.0437469,-77.0437469,-77.0437088,-77.0437,-77.043657,-77.0436478,-77.043561,-77.0435518,-77.0435277,-77.0435189,-77.0434874,-77.0434599,-77.0434599,-77.0434599,-77.0434531,-77.0434499,-77.0434499,-77.033402,-77.0333786,-77.033238,-77.0332226,-77.0331726,-77.0331192,-77.033094,-77.0330734,-77.03302,-77.033014,-77.033004,-77.0328867,-77.032886,-77.032883,-77.032859,-77.032774,-77.0327454,-77.0327298,-77.0327197,-77.032717,-77.03271,-77.0327003,-77.032692,-77.032692,-77.0324402,-77.0324173,-77.0324173,-77.032417,-77.032409,-77.032405,-77.032403,-77.032403,-77.0323563,-77.032356,-77.032356,-77.032356,-77.032356,-77.032356,-77.032356,-77.032341,-77.032258,-77.032257,-77.0321397,-77.0200811,-77.0200653,-77.020063,-77.0200134,-77.0199802,-77.0199678,-77.0199638,-77.0199591,-77.0199578,-77.0199303,-77.0199303,-77.0199127,-77.0199101,-77.0199101,-77.0199101,-77.0199001,-77.019843,-77.019843,-77.01977,-77.0197678,-77.019477,-77.0193863,-77.0193147,-77.0192114,-77.01921,-77.01918,-77.0191116,-77.0319499,-77.0319499,-77.0319499,-77.0319398,-77.0319398,-77.0319398,-77.031929,-77.031929,-77.031929,-77.031929,-77.0316772,-77.0315999,-77.031592,-77.031592,-77.0315647,-77.031546,-77.0314698,-77.031422,-77.0312119,-77.031103,-77.031048,-77.031021,-77.031006,-77.030834,-77.0433359,-77.043251,-77.0430603,-77.0430374,-77.0430298,-77.042963,-77.0428696,-77.0427666,-77.0427626,-77.0427203,-77.0427203,-77.0427094,-77.0426499,-77.042647,-77.042572,-77.042572,-77.0424194,-77.0423584,-77.0422668,-77.042228,-77.042098,-77.042088,-77.0420609,-77.0420531,-77.041995,-77.0306091,-77.0305328,-77.030465,-77.0304184,-77.030337,-77.0302505,-77.030197,-77.030197,-77.030197,-77.030197,-77.030197,-77.030197,-77.030195,-77.030177,-77.0301186,-77.0301056,-77.030044,-77.0300217,-77.0300217,-77.030006,-77.0299988,-77.0299072,-77.0299061,-77.0682456,-77.0682456,-77.0682456,-77.068168,-77.068092,-77.0680313,-77.0679827,-77.0679827,-77.067962,-77.0678915,-77.0678635,-77.0678097,-77.0674133,-77.0672699,-77.067056,-77.0669861,-77.066925,-77.066921,-77.066773,-77.0666798,-77.0666122,-77.0664444,-77.066254,-77.066254,-77.0662145,-77.0662145,-77.0661803,-77.066139,-77.0661025,-77.0660408,-77.0660401,-77.065753,-77.0656357,-77.0656357,-77.041923,-77.0418942,-77.041893,-77.041893,-77.0418573,-77.0417876,-77.0417574,-77.0417574,-77.0417561,-77.0417467,-77.0417386,-77.041735,-77.0417098,-77.0417023,-77.041458,-77.041446,-77.041446,-77.041446,-77.041183,-77.029852,-77.029786,-77.0297666,-77.0297297,-77.0297235,-77.0297103,-77.0297043,-77.0297002,-77.0296921,-77.0296714,-77.0296298,-77.029621,-77.0296197,-77.0296197,-77.0296197,-77.0296197,-77.0296197,-77.0296197,-77.0296197,-77.029276,-77.0292053,-77.029182,-77.0291367,-77.029129,-77.02906,-77.065414,-77.0652924,-77.0652422,-77.0651798,-77.0650075,-77.0649796,-77.0643758,-77.0642397,-77.0641666,-77.0638796,-77.063508,-77.06339,-77.0633794,-77.0632976,-77.063214,-77.063023,-77.063018,-77.0630045,-77.062988,-77.0628711,-77.0628711,-77.0628577,-77.0628101,-77.0289841,-77.0289078,-77.028897,-77.0288308,-77.028817,-77.028737,-77.0286789,-77.0286102,-77.0285797,-77.0285797,-77.0285187,-77.0284653,-77.028465,-77.0284463,-77.0284463,-77.0284348,-77.0284343,-77.028396,-77.028396,-77.0283813,-77.0283661,-77.0283356,-77.028304,-77.0282049,-77.0281801,-77.0281801,-77.0281677,-77.0281304,-77.0281197,-77.028106,-77.019099,-77.019041,-77.0190056,-77.0189298,-77.018929,-77.0188601,-77.0186314,-77.018501,-77.0184708,-77.0184101,-77.018363,-77.0183563,-77.0183563,-77.0183471,-77.0183102,-77.0183102,-77.0182599,-77.018188,-77.018188,-77.0180199,-77.0178898,-77.017868,-77.0178452,-77.0177925,-77.0177697,-77.0177449,-77.040947,-77.040947,-77.040947,-77.040863,-77.040741,-77.0407194,-77.040571,-77.040554,-77.0405502,-77.0404587,-77.0403748,-77.040302,-77.0402603,-77.0402603,-77.0402198,-77.040163,-77.040163,-77.040163,-77.040163,-77.0400009,-77.0398712,-77.0398712,-77.039802,-77.039802,-77.039709,-77.039709,-77.039709,-77.039709,-77.061978,-77.0618163,-77.06178,-77.061707,-77.0613113,-77.0613098,-77.0613098,-77.0613098,-77.061309,-77.061292,-77.0612443,-77.0611496,-77.0606995,-77.0604665,-77.0602264,-77.06016,-77.06016,-77.0598297,-77.0597992,-77.0597763,-77.0596994,-77.059572,-77.059505,-77.058945,-77.0589294,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.0396472,-77.0396264,-77.0396257,-77.0395873,-77.039523,-77.0395204,-77.0395178,-77.0394745,-77.039451,-77.0394363,-77.03936,-77.03932,-77.0392252,-77.0392093,-77.0390549,-77.038975,-77.0389666,-77.038943,-77.028084,-77.0280802,-77.0280802,-77.0280595,-77.0280368,-77.0280075,-77.0279922,-77.0278549,-77.027854,-77.0277557,-77.0276988,-77.0276376,-77.0276056,-77.027563,-77.0275269,-77.0274699,-77.0273992,-77.0273972,-77.0273948,-77.0589294,-77.058913,-77.0586399,-77.058358,-77.0583019,-77.0582852,-77.0581102,-77.0578252,-77.05772,-77.05772,-77.05772,-77.0577058,-77.0575485,-77.0574875,-77.0573883,-77.0571399,-77.0571399,-77.0570896,-77.0570601,-77.0567583,-77.0565616,-77.056413,-77.0563962,-77.056205,-77.0561099,-77.038817,-77.0388107,-77.0387802,-77.0387497,-77.0387421,-77.0387421,-77.0386887,-77.0386887,-77.0386762,-77.0386353,-77.038615,-77.0385742,-77.0385575,-77.0385555,-77.0385455,-77.0383785,-77.0377847,-77.037666,-77.037666,-77.03759,-77.037551,-77.037488,-77.0373767,-77.0373767,-77.0373688,-77.0373611,-77.037209,-77.0372086,-77.0370178,-77.0370152,-77.037014,-77.0370025,-77.0370025,-77.0370025,-77.0369949,-77.0369949,-77.0369949,-77.0369949,-77.0273875,-77.0273666,-77.0273452,-77.0273056,-77.027305,-77.0272701,-77.0272701,-77.0272598,-77.027259,-77.0271192,-77.0270978,-77.0270978,-77.0270978,-77.0270978,-77.0270978,-77.0270978,-77.0270965,-77.0270691,-77.0270478,-77.0270401,-77.0270401,-77.0270401,-77.027039,-77.027034,-77.027034,-77.0270301,-77.026886,-77.026885,-77.0162422,-77.0162375,-77.0162,-77.0162,-77.0161209,-77.0161054,-77.0158727,-77.015754,-77.0157471,-77.0156997,-77.0156631,-77.015648,-77.015648,-77.015438,-77.015403,-77.0153765,-77.0153698,-77.0153584,-77.0153584,-77.0153464,-77.015229,-77.0152283,-77.0152283,-77.0152009,-77.0152002,-77.015195,-77.0151801,-76.9993698,-76.9993439,-76.9993057,-76.999286,-76.999249,-76.9992286,-76.9990387,-76.998898,-76.998834,-76.9987564,-76.9986343,-76.998632,-76.998619,-76.9984598,-76.9984436,-76.9984397,-76.9984397,-76.998421,-76.9984203,-76.9982986,-76.9982433,-76.9981789,-76.9981782,-76.9772503,-76.9772402,-76.9772302,-76.9772302,-76.9772302,-76.9772255,-76.9771725,-76.9770659,-76.9770659,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.976718,-76.976493,-76.976467,-76.976306,-76.9763031,-76.976165,-76.9760788,-76.9760064,-76.9760064,-76.97599,-76.975959,-76.975625,-76.975538,-76.975538,-76.9755096,-76.9753835,-76.9753835,-77.0151639,-77.0150198,-77.015003,-77.015003,-77.0150017,-77.0149194,-77.014778,-77.0147697,-77.014569,-77.0145264,-77.0144501,-77.0144451,-77.014433,-77.0143265,-77.0143265,-77.0141748,-77.0141678,-77.0141159,-77.0141159,-77.014058,-77.014058,-77.014058,-77.014058,-77.014058,-77.0140533,-77.0140207,-76.9952545,-76.995236,-76.995221,-76.9949891,-76.9949703,-76.9949502,-76.9949339,-76.9949301,-76.9948207,-76.9948207,-76.994804,-76.9947939,-76.994777,-76.9947752,-76.994758,-76.994728,-76.994728,-76.9947128,-76.9946974,-76.9943903,-76.9942245,-76.99416,-76.99409,-76.9940338,-76.993944,-76.9939101,-76.9938202,-76.9790098,-76.9789997,-76.9789803,-76.9788247,-76.9788208,-76.978738,-76.978381,-76.9783173,-76.9783173,-76.978317,-76.978241,-76.97812,-76.97812,-76.9780301,-76.9777126,-76.9775923,-76.9775923,-76.9775238,-76.9775238,-76.9775198,-76.9773331,-76.977272,-76.9772697,-77.0139654,-77.0138799,-77.0138779,-77.013862,-77.0138564,-77.013832,-77.0137863,-77.0137739,-77.013755,-77.01371,-77.01368,-77.01368,-77.01368,-77.0136623,-77.0136566,-77.0136297,-77.0136261,-77.0135593,-77.0135269,-77.0134091,-77.0133743,-77.013237,-77.013145,-77.013145,-77.013106,-77.0130142,-77.013005,-77.0129102,-77.012854,-76.998138,-76.9981155,-76.9980927,-76.997984,-76.9978104,-76.9977799,-76.9977036,-76.9976699,-76.9976699,-76.9976699,-76.9975739,-76.9975739,-76.9974747,-76.997455,-76.99726,-76.9968077,-76.9966278,-76.996444,-76.9964371,-76.996418,-76.996355,-76.996315,-76.996181,-76.9961599,-76.9961599,-76.9961406,-76.9961397,-76.996078,-76.9959815,-76.9959717,-76.9959717,-76.9959667,-76.9959667,-76.9959641,-76.99594,-76.99581,-76.995806,-76.9956665,-76.995628,-76.9955805,-76.99542,-76.9953079,-76.962738,-76.962677,-76.9619454,-76.9617691,-76.9611969,-76.960835,-76.960772,-76.9607468,-76.9607468,-76.9607413,-76.9603108,-76.960196,-76.9600449,-76.9595795,-76.9591293,-76.9589999,-76.958997,-76.95874,-76.9586868,-76.9586868,-76.9586868,-76.9586461,-76.9585953,-76.957762,-76.957679,-76.957573,-76.957501,-76.9574797,-76.9574328,-76.957328,-76.9571533,-76.956969,-76.9569118,-76.95672,-76.956663,-76.9562499,-76.9560695,-76.9559046,-76.9556625,-76.955031,-76.955031,-76.955031,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.0128063,-77.0126038,-77.0126038,-77.0125736,-77.012532,-77.012466,-77.012466,-77.012466,-77.012413,-77.012359,-77.0123463,-77.0123463,-77.0123367,-76.9806694,-76.980651,-76.980604,-76.980514,-76.9802999,-76.980294,-76.9801886,-76.9801886,-76.980157,-76.980011,-76.979988,-76.9792862,-76.9790648,-76.97905,-76.925933,-76.925872,-76.925755,-76.925369,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.923393,-76.9229101,-76.9222565,-76.921737,-76.9205236,-76.9203262,-76.9197922,-76.919573,-76.9185944,-76.9177703,-76.917758,-76.917465,-76.91706,-76.91706,-76.91706,-76.9167709,-76.916328,-76.9132984,-76.910907,-76.6909207,-76.989484,-77.0123021,-77.012296,-77.01217,-77.01217,-77.012169,-77.0121599,-77.0121597,-77.011924,-77.0118475,-77.011824,-77.0118179,-77.0118038,-77.011726,-77.0117214,-77.0115999,-77.0114297,-77.0114288,-77.011402,-77.011206,-77.011037,-77.010951,-77.010796,-77.0107598,-77.010619,-76.9937941,-76.99377,-76.9937499,-76.9935684,-76.993553,-76.9935455,-76.9935455,-76.993545,-76.9935246,-76.993429,-76.993423,-76.993098,-76.9927575,-76.9927575,-76.9927444,-76.9926777,-76.9926401,-76.9924316,-76.992429,-76.9924101,-76.9924101,-76.9924001,-76.9923172,-76.9923139,-76.992233,-76.992202,-76.992068,-76.9915585,-76.9915314,-76.9915314,-76.9915297,-76.9915297,-76.93267,-76.93267,-76.9326401,-76.9324722,-76.9324188,-76.9316406,-76.9313354,-76.9311371,-76.9311371,-76.9311371,-76.9311371,-76.9309804,-76.930775,-76.929721,-76.9291348,-76.928759,-76.928718,-76.9286575,-76.92854,-76.9267426,-76.926085,-76.926051,-76.926051,-76.926051,-76.926051,-77.0104433,-77.01041,-77.010278,-77.0102703,-77.010186,-77.010162,-77.0100863,-77.010063,-77.0100148,-77.009952,-77.00988,-77.009819,-77.009778,-77.009765,-77.009765,-77.0097217,-77.009704,-77.00962,-77.009605,-77.0095978,-77.0095978,-77.0095978,-77.0095367,-77.009534,-77.0095099,-77.009445,-77.0094147,-76.9833145,-76.9833,-76.9833,-76.9832458,-76.983164,-76.983164,-76.983164,-76.983164,-76.9831085,-76.983085,-76.982985,-76.9828847,-76.9828847,-76.982683,-76.9824982,-76.9824953,-76.9824142,-76.9822834,-76.982258,-76.9822006,-76.982048,-76.982035,-76.9820251,-76.981979,-76.981957,-76.981928,-76.981808,-76.981781,-76.981521,-76.98146,-76.9814191,-76.98135,-76.9812756,-76.9812164,-76.9811935,-76.981041,-76.986724,-76.986715,-76.986576,-76.986397,-76.9863586,-76.986274,-76.986267,-76.986217,-76.9861374,-76.9861069,-76.9861069,-76.9860177,-76.9858414,-76.9857797,-76.9856644,-76.9855544,-76.985496,-76.98549,-76.9854498,-76.985447,-76.9854438,-76.9853237,-76.9852982,-76.985287,-76.9852066,-76.985206,-76.985206,-76.9375534,-76.9374999,-76.93748,-76.9374466,-76.937385,-76.9367027,-76.936645,-76.9366115,-76.9361038,-76.936077,-76.935683,-76.9356412,-76.935337,-76.935337,-76.9352509,-76.935157,-76.935112,-76.9347125,-76.9346897,-76.9344489,-76.93391,-76.933807,-76.9336778,-76.933578,-76.933578,-76.9334907,-76.9334652,-77.0093,-77.0092034,-77.0091746,-77.0091699,-77.0091639,-77.0091639,-77.0091558,-77.0091424,-77.0091356,-77.0091218,-77.0091171,-77.0091171,-77.0091171,-77.0091171,-77.0091102,-77.0091095,-77.0091044,-77.0091019,-77.009101,-77.0091002,-76.985199,-76.985163,-76.985105,-76.985032,-76.984954,-76.984954,-76.984954,-76.984751,-76.984676,-76.9846649,-76.9845776,-76.98453,-76.984481,-76.9844208,-76.984314,-76.984299,-76.984299,-76.9839935,-76.983948,-76.983735,-76.9837077,-76.9836426,-76.9834227,-76.98341,-76.9833597,-76.9426464,-76.94264,-76.9425398,-76.9424063,-76.941652,-76.941627,-76.9415454,-76.940828,-76.9397718,-76.939423,-76.9393688,-76.93919,-76.939165,-76.939115,-76.939099,-76.939048,-76.93897,-76.9387894,-76.9387894,-76.938618,-77.0090874,-77.0090833,-77.009083,-77.0090713,-77.0090632,-77.0090622,-77.0090498,-77.009048,-77.009048,-77.0090402,-77.009032,-77.0090103,-77.0090099,-77.008992,-77.008992,-77.008986,-77.008986,-77.0089187,-77.0089124,-77.0089124,-77.0089097,-77.0089097,-77.0088997,-77.0088977,-77.008893,-77.00884,-76.9888687,-76.988853,-76.9887999,-76.9886932,-76.9886899,-76.988508,-76.988508,-76.98838,-76.9883439,-76.9883003,-76.988293,-76.9882889,-76.9882713,-76.9881984,-76.988128,-76.988062,-76.9880142,-76.987999,-76.987993,-76.987922,-76.987915,-76.9879121,-76.987871,-76.9878678,-76.9873178,-76.9872838,-76.9871826,-76.9871201,-76.9870758,-76.987075,-76.987075,-76.987075,-76.986903,-76.986818,-76.9868088,-76.9867783,-76.9867249,-76.9478278,-76.9478278,-76.9475656,-76.947197,-76.947164,-76.9470634,-76.9469943,-76.9469943,-76.946617,-76.946617,-76.9460535,-76.945784,-76.945466,-76.9453354,-76.945335,-76.9450302,-76.944773,-76.9443731,-76.943639,-76.9432365,-76.942718,-76.9426565,-77.008752,-77.0087448,-77.0086517,-77.0086462,-77.008611,-77.008611,-77.0085979,-77.008549,-77.00847,-77.008338,-77.0083237,-77.0082901,-77.0082711,-77.0081406,-77.008082,-77.0080719,-77.0079401,-77.007926,-77.0078301,-77.0077133,-76.9915198,-76.9914878,-76.9913533,-76.9913406,-76.9913406,-76.991272,-76.991272,-76.991253,-76.991229,-76.991221,-76.9912186,-76.991211,-76.991191,-76.9910697,-76.9910503,-76.9910503,-76.9910126,-76.9909798,-76.9909,-76.9908981,-76.990895,-76.9907722,-76.9905853,-76.9905853,-76.9905624,-76.990465,-76.9903884,-76.9903805,-76.9902869,-76.9532966,-76.9528355,-76.9528355,-76.9527979,-76.9522749,-76.9522018,-76.9522018,-76.952119,-76.952119,-76.952119,-76.95211,-76.9516525,-76.9516525,-76.9515,-76.9514389,-76.951428,-76.9513092,-76.9512496,-76.950165,-76.950065,-76.9499099,-76.949646,-76.9492882,-76.949183,-76.9491112,-76.9487463,-76.9486694,-77.007586,-77.007586,-77.0075401,-77.0075378,-77.0075073,-77.007464,-77.0074445,-77.00736,-77.0073395,-77.0073013,-77.0073013,-77.0073013,-77.0073013,-77.0073013,-77.0073013,-77.0073013,-77.0072937,-77.0072708,-77.0072479,-77.007247,-77.007232,-77.007214,-77.007214,-77.0070343,-77.007013,-77.006992,-77.00676,-77.0066605,-77.0065957,-76.990236,-76.990236,-76.9902302,-76.99021,-76.9901899,-76.990154,-76.9901109,-76.9901007,-76.9900818,-76.9900444,-76.9900208,-76.9900208,-76.990017,-76.9899351,-76.989803,-76.989706,-76.9896729,-76.989524,-76.989235,-76.9890366,-76.9889896,-77.006421,-77.006396,-77.0063705,-77.0063705,-77.006292,-77.0062103,-77.00621,-77.0061874,-77.0059627,-77.005899,-77.005886,-77.0058823,-77.0058701,-77.0058696,-77.005867,-77.0058613,-77.005789,-77.0057313,-77.0057313,-77.0057291,-77.0056978,-77.0056978,-77.0056978,-77.0056938,-77.005683,-77.005666,-77.00547,-77.00547,-76.9671783,-76.967178,-76.9671478,-76.9670545,-76.9667892,-76.9664841,-76.9664841,-76.9662933,-76.9662857,-76.9662371,-76.9662026,-76.9659958,-76.9658508,-76.9658508,-76.96585,-76.9653227,-76.965216,-76.9651401,-76.964859,-76.964768,-76.9647022,-76.964632,-76.96457,-76.964006,-76.96395,-76.9638443,-76.96349,-76.9633893,-76.9629135,-77.005124,-77.0050748,-77.0050567,-77.0049133,-77.0048086,-77.0047913,-77.0047402,-77.0046403,-77.004629,-77.0046082,-77.0045624,-77.0045624,-77.0045599,-77.004167,-77.0041199,-77.0039902,-77.003938,-77.0035674,-77.003492,-77.003489,-77.0034441,-77.0033938,-76.9716082,-76.9715298,-76.9713739,-76.9710249,-76.970863,-76.9708297,-76.970613,-76.970558,-76.970336,-76.970292,-76.970291,-76.9702873,-76.9702759,-76.970195,-76.9701157,-76.97007,-76.970032,-76.9699783,-76.9699783,-76.9699701,-76.9699171,-76.9698715,-76.969809,-76.969596,-76.9695816,-76.9695403,-76.9693146,-76.9692271,-76.9690399,-76.9690399,-76.9685135,-76.9683554,-76.96819,-76.96819,-76.967888,-76.967888,-76.9674988,-76.9672546,-76.9672295,-77.0033804,-77.003373,-77.003373,-77.003352,-77.0033234,-77.0033201,-77.003242,-77.003234,-77.003234,-77.0030947,-77.003042,-77.002915,-77.0029068,-77.0028399,-77.0028076,-77.002796,-77.002796,-77.002796,-77.002796,-77.002796,-77.002796,-77.0025797,-77.0024109,-77.0024109,-77.0024109,-77.0023499,-77.00225,-77.0022102,-76.9732001,-76.973032,-76.972764,-76.9726865,-76.9726268,-76.9726268,-76.9726268,-76.9725846,-76.9724661,-76.9724661,-76.9724397,-76.9723599,-76.9722214,-76.9721527,-76.9720421,-76.9720421,-76.9720078,-76.9720078,-76.9720078,-76.9720078,-76.9720078,-76.9719455,-76.9719402,-76.971923,-76.971882,-76.9718094,-76.9718081,-76.9717484,-76.9717397,-76.9717,-76.9716512,-77.0020775,-77.0020299,-77.0020299,-77.0020285,-77.0020198,-77.0019903,-77.0019387,-77.0019387,-77.0019073,-77.001846,-77.001838,-77.001831,-77.001812,-77.00167,-77.0015074,-77.001265,-77.0012589,-77.0012512,-77.000842,-76.975068,-76.975059,-76.9750509,-76.9749569,-76.9749374,-76.9748979,-76.9748712,-76.9748712,-76.9748349,-76.974812,-76.974801,-76.9746504,-76.974609,-76.974609,-76.974609,-76.974609,-76.974495,-76.97438,-76.9743729,-76.9741892,-76.9741862,-76.97417,-76.974151,-76.9741364,-76.9741364,-76.973983,-76.9738312,-76.9735522,-76.973551,-76.973341,-76.97329,-77.0176849,-77.0176014,-77.017585,-77.0175498,-77.0175397,-77.017474,-77.0174599,-77.0173299,-77.01724,-77.0171371,-77.017128,-77.0171099,-77.016981,-77.0168915,-77.016861,-77.0168228,-77.0167699,-77.0167389,-77.0166779,-77.016627,-77.0165787,-77.0164566,-77.0163576,-77.0163562,-77.0163498,-77.016349,-77.0162999,-77.0008163,-77.0007609,-77.0007095,-77.000709,-77.000682,-77.000673,-77.0006398,-77.0006177,-77.0005701,-77.0005701,-77.0005701,-77.0005701,-77.00056,-77.0005493,-77.0005493,-77.0005077,-77.000462,-77.000366,-77.0003128,-77.000289,-77.0002147,-77.000182,-76.9999807,-76.99998,-76.999802,-76.9997976,-76.9997864,-76.999743,-76.9995651,-76.9995475,-77.1117899,-77.1092453,-77.1039667,-77.1008835,-77.1006399,-77.0997007,-77.096397,-77.0960388,-77.09597,-77.0950557,-77.0948001,-77.0947113,-77.094688,-77.094688,-77.0938012,-77.092771,-77.0926208,-77.091262,-77.0910403,-77.0910403,-77.0907862,-77.0906675,-77.0906098,-77.09004,-77.0881824,-77.087869,-77.087121,-77.0863706,-77.0861588,-77.0268296,-77.0267181,-77.026718,-77.0266934,-77.0266934,-77.0266934,-77.026565,-77.0265427,-77.026535,-77.026487,-77.0264816,-77.0264511,-77.0264511,-77.0264199,-77.0263293,-77.026275,-77.0262299,-77.026214,-77.026214,-77.026214,-77.0261952,-77.026171,-77.0261355,-77.0261355,-77.0261248,-77.085758,-77.0857391,-77.0855865,-77.0854399,-77.085296,-77.0851898,-77.08469,-77.0846463,-77.08435,-77.084343,-77.084343,-77.0841522,-77.08372,-77.0826302,-77.0826035,-77.081957,-77.0817337,-77.0816574,-77.0816097,-77.081303,-77.080816,-77.0807495,-77.08049,-77.0803254,-77.0801392,-77.0560898,-77.0559769,-77.0558701,-77.0556761,-77.0556761,-77.055541,-77.055463,-77.055068,-77.0549344,-77.054701,-77.0544873,-77.054318,-77.054155,-77.054071,-77.054071,-77.054071,-77.0538716,-77.0538177,-77.0537062,-77.053666,-77.0533752,-77.053358,-77.053309,-77.0526962,-77.0526962,-77.0369873,-77.0369873,-77.036987,-77.0369797,-77.0369797,-77.0369797,-77.0369797,-77.036918,-77.0368881,-77.03688,-77.0368729,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368652,-77.0368651,-77.0259933,-77.02599,-77.0259617,-77.025948,-77.025893,-77.025881,-77.0258734,-77.02581,-77.0257792,-77.0257165,-77.025657,-77.025532,-77.025513,-77.0254288,-77.0254135,-77.0253825,-77.025365,-77.0252799,-77.0252598,-77.0250855,-77.02494,-77.0247345,-77.0790024,-77.078745,-77.0786297,-77.0782978,-77.0781097,-77.0776749,-77.077594,-77.07694,-77.076913,-77.0764771,-77.0764618,-77.0761261,-77.076065,-77.0759888,-77.0753174,-77.0750052,-77.074813,-77.0747861,-77.0747528,-77.074745,-77.074684,-77.052457,-77.0523376,-77.0522401,-77.052234,-77.0522156,-77.0521164,-77.052017,-77.051879,-77.0514663,-77.0511961,-77.050712,-77.0506697,-77.050621,-77.0504456,-77.0504215,-77.0503914,-77.050388,-77.036851,-77.0368118,-77.0368118,-77.0367916,-77.0367737,-77.0367432,-77.036691,-77.0366049,-77.036603,-77.036603,-77.0365975,-77.03659,-77.036561,-77.036553,-77.0365512,-77.0365439,-77.03654,-77.0365398,-77.0365197,-77.0365197,-77.0365177,-77.0365003,-77.0364902,-77.0364902,-77.0364902,-77.0364902,-77.0364902,-77.0364902,-77.0364902,-77.024579,-77.024579,-77.0245712,-77.0244446,-77.0244102,-77.0243572,-77.024311,-77.0242996,-77.0242844,-77.0242844,-77.0242844,-77.024284,-77.024222,-77.024222,-77.0241699,-77.0241648,-77.0241648,-77.024147,-77.024147,-77.024147,-77.024147,-77.024146,-77.024127,-77.0241174,-77.0241085,-77.0240267,-77.0746098,-77.0745926,-77.0738398,-77.0738398,-77.0737534,-77.0737534,-77.073616,-77.0734024,-77.0734024,-77.073346,-77.073329,-77.073272,-77.073272,-77.073254,-77.0731902,-77.0731125,-77.073053,-77.0730362,-77.0730362,-77.073005,-77.0729093,-77.072655,-77.0726497,-77.0726318,-77.0725632,-77.0724097,-77.0721582,-77.0718002,-77.0364802,-77.0364802,-77.0364775,-77.0364701,-77.0364701,-77.0364685,-77.0364685,-77.0364685,-77.0364685,-77.03646,-77.03645,-77.036441,-77.0364356,-77.036431,-77.0364279,-77.036387,-77.03631,-77.036272,-77.036272,-77.036169,-77.036169,-77.0356903,-77.0355988,-77.02402,-77.02402,-77.0240156,-77.0239998,-77.0239998,-77.0239932,-77.0239898,-77.0239697,-77.0239697,-77.0239697,-77.0239697,-77.023969,-77.0239662,-77.0239603,-77.0239603,-77.0239603,-77.0239603,-77.0239603,-77.023952,-77.023934,-77.0238402,-77.023829,-77.023762,-77.0236969,-77.023667,-77.023545,-77.023531,-77.0234319,-77.0715266,-77.071304,-77.071304,-77.0712349,-77.0712349,-77.07122,-77.0711102,-77.0708771,-77.070705,-77.0706253,-77.0705804,-77.0703049,-77.0700574,-77.069774,-77.069557,-77.0694713,-77.0692673,-77.069247,-77.068766,-77.068766,-77.068766,-77.0686264,-77.068367,-77.0503331,-77.0503083,-77.050291,-77.050245,-77.050229,-77.050197,-77.0501876,-77.0501876,-77.0501862,-77.0501675,-77.0501328,-77.0501299,-77.0501199,-77.0500635,-77.0500107,-77.049576,-77.049576,-77.0495682,-77.0495372,-77.049408,-77.049408,-77.04934,-77.049143,-77.049118,-77.0489655,-77.0488579,-77.0488103,-77.04879,-77.04879,-77.0485916,-77.023201,-77.0231576,-77.023104,-77.0231,-77.0230272,-77.0230161,-77.0229974,-77.0229974,-77.0229793,-77.022972,-77.0229416,-77.0229001,-77.022831,-77.0228103,-77.022766,-77.0226593,-77.022594,-77.0225199,-77.022471,-77.0224533,-77.022445,-77.0223923,-77.022385,-77.0222931,-77.048483,-77.0478439,-77.0477295,-77.047666,-77.046989,-77.0468903,-77.0468161,-77.0467356,-77.0466498,-77.0466397,-77.0465088,-77.0465088,-77.0464895,-77.046402,-77.046021,-77.0355301,-77.035514,-77.035458,-77.035275,-77.0351334,-77.035003,-77.0349503,-77.0349503,-77.034936,-77.034923,-77.034896,-77.034827,-77.034812,-77.034785,-77.034774,-77.034747,-77.034728,-77.0345597,-77.0345078,-77.034461,-77.0339813,-77.0339508,-77.0338161,-77.0337753,-77.0337601,-77.0337601,-77.0337074,-77.0337014,-77.0337014,-77.0336538,-77.0336498,-77.0336397,-77.033608,-77.0336075,-77.0335999,-77.0335999,-77.033599,-77.0335921,-77.0335871,-77.033577,-77.033574,-77.033419,-77.033419,-77.0334097,-77.0334097,-77.033402,-77.0222661,-77.0222321,-77.0222244,-77.022207,-77.0220874,-77.0220874,-77.0220861,-77.022072,-77.022072,-77.022065,-77.022065,-77.022065,-77.0220599,-77.022056,-77.022049,-77.022023,-77.0220163,-77.0219962,-77.0219775,-77.0219775,-77.0219674,-77.021964,-77.0219573,-77.0219499,-77.021939,-77.0219198,-77.0219198,-77.0219198,-77.0219198,-77.032137,-77.0321363,-77.0321363,-77.0321256,-77.032065,-77.0320505,-77.0320257,-77.0320176,-77.0320176,-77.0320176,-77.0320143,-77.0320076,-77.0320076,-77.031976,-77.031964,-77.0319633,-77.03196,-77.03196,-77.03196,-77.03196,-77.031959,-77.031952,-77.0319519,-77.0219198,-77.0219198,-77.0219116,-77.0219097,-77.0219097,-77.0219097,-77.0219097,-77.021901,-77.0218997,-77.0218997,-77.0218997,-77.0218997,-77.0218903,-77.0218811,-77.0218621,-77.0218521,-77.021842,-77.0217602,-77.0217602,-77.021655,-77.021652,-77.0215988,-77.02157,-77.0214833,-77.0214182,-77.021412,-77.021391,-77.0213547,-77.0213165,-77.021313,-77.0212936,-77.021246,-77.021179,-77.0457611,-77.0457458,-77.04557,-77.0455246,-77.0453093,-77.0452805,-77.04528,-77.0452597,-77.045257,-77.0452347,-77.045223,-77.045204,-77.0450821,-77.0450652,-77.045001,-77.0449097,-77.044892,-77.044854,-77.044661,-77.0446538,-77.0446091,-77.0445845,-77.0445023,-77.0445023,-77.0209113,-77.020894,-77.020861,-77.0207443,-77.0207367,-77.02053,-77.0205297,-77.020457,-77.020457,-77.020366,-77.0203552,-77.0202942,-77.0202942,-77.020256,-77.020256,-77.0202484,-77.02021,-77.020164,-77.020164,-77.0201492,-77.0200872,-77.0200865,-77.04427,-77.0441895,-77.0440701,-77.044015,-77.0439224,-77.043914,-77.043902,-77.043902,-77.043902,-77.043902,-77.043902,-77.043902,-77.043841,-77.0437469,-77.0437469,-77.0437469,-77.0437469,-77.043719,-77.0437,-77.0435317,-77.0435277,-77.0435189,-77.0435028,-77.0434854,-77.0434599,-77.0434599,-77.0434599,-77.0434499,-77.0434499,-77.0434499,-77.0434499,-77.0334003,-77.0333809,-77.0333809,-77.0333786,-77.033376,-77.033353,-77.0332031,-77.033203,-77.033203,-77.0331192,-77.0331192,-77.033073,-77.033072,-77.0330276,-77.0329785,-77.0329698,-77.032923,-77.0328759,-77.032848,-77.0328471,-77.0327988,-77.0327988,-77.032772,-77.032753,-77.0327499,-77.032717,-77.0326889,-77.0326473,-77.0326399,-77.0325775,-77.032502,-77.032491,-77.032433,-77.03242,-77.0324177,-77.0324173,-77.032386,-77.032376,-77.0323715,-77.0323715,-77.032356,-77.032356,-77.032356,-77.032356,-77.032356,-77.032356,-77.032341,-77.0323257,-77.0322571,-77.0322571,-77.0321923,-77.032149,-77.0200811,-77.0200764,-77.020009,-77.0199752,-77.0199213,-77.0199213,-77.0199202,-77.0199202,-77.0199101,-77.0199101,-77.0199101,-77.0199101,-77.0199001,-77.0198977,-77.0198498,-77.0195694,-77.019569,-77.019559,-77.0194168,-77.0191116,-77.0191061,-77.0319499,-77.0319499,-77.0319499,-77.0319499,-77.0319499,-77.0319239,-77.03185,-77.031583,-77.0312398,-77.0311356,-77.030926,-77.030909,-77.030846,-77.0433273,-77.0433242,-77.0433242,-77.0432096,-77.042963,-77.042923,-77.0428696,-77.0427626,-77.0427203,-77.0426499,-77.0426499,-77.042572,-77.042572,-77.042572,-77.0424194,-77.0423965,-77.0422668,-77.0422174,-77.0421677,-77.0420609,-77.0420609,-77.042054,-77.0420151,-77.042007,-77.041995,-77.030805,-77.0307922,-77.0307865,-77.0307865,-77.0307865,-77.0307865,-77.030699,-77.030699,-77.030699,-77.0305786,-77.0304834,-77.030465,-77.030334,-77.030197,-77.030197,-77.030197,-77.030197,-77.030166,-77.0301514,-77.0300674,-77.030044,-77.030002,-77.0299835,-77.0299606,-77.029924,-77.0298996,-77.0680243,-77.0679827,-77.067962,-77.0679566,-77.0677795,-77.067756,-77.067692,-77.0675401,-77.06751,-77.0674973,-77.067469,-77.06733,-77.0672002,-77.0671463,-77.066925,-77.066925,-77.0668461,-77.0666,-77.0664444,-77.0664378,-77.0663834,-77.0663801,-77.0663605,-77.0662145,-77.066159,-77.065915,-77.0657806,-77.0657501,-77.0656509,-77.0419599,-77.041938,-77.04192,-77.041912,-77.041893,-77.041893,-77.0418466,-77.041735,-77.041708,-77.041708,-77.041708,-77.0416702,-77.0416602,-77.041542,-77.0414463,-77.041446,-77.041446,-77.0413361,-77.041288,-77.041286,-77.041223,-77.0411792,-77.0411682,-77.029892,-77.029884,-77.0298786,-77.0298745,-77.0297961,-77.0297666,-77.0297565,-77.0297492,-77.0297478,-77.0297203,-77.0297103,-77.0297002,-77.029699,-77.0296943,-77.0296896,-77.0296875,-77.0296875,-77.0296836,-77.0296298,-77.029621,-77.0296208,-77.0296197,-77.0296197,-77.0296197,-77.0294189,-77.0293655,-77.065414,-77.0654105,-77.064483,-77.064483,-77.064483,-77.064455,-77.0643758,-77.0641785,-77.0641785,-77.0638504,-77.06374,-77.063638,-77.0635681,-77.06322,-77.0631578,-77.063023,-77.063023,-77.0630188,-77.063018,-77.063018,-77.0629883,-77.062988,-77.062873,-77.0628711,-77.0628711,-77.0628711,-77.0628711,-77.0628101,-77.0626109,-77.0290298,-77.0288467,-77.0287443,-77.0287341,-77.0285492,-77.0284915,-77.028448,-77.028386,-77.0282974,-77.02826,-77.0282565,-77.0282565,-77.0282236,-77.0281982,-77.0281801,-77.02817,-77.0281525,-77.028151,-77.0281479,-77.0281304,-77.0281197,-77.0281197,-77.019088,-77.0190693,-77.0190076,-77.0189298,-77.018929,-77.0188057,-77.018795,-77.0185983,-77.0184326,-77.0184101,-77.0183563,-77.0183471,-77.018325,-77.018273,-77.0181985,-77.018188,-77.0181427,-77.0181365,-77.0181365,-77.0179961,-77.0179513,-77.0179401,-77.0179401,-77.017838,-77.0177899,-77.0177697,-77.0177449,-77.0411298,-77.040947,-77.040947,-77.0409012,-77.040737,-77.0405866,-77.0402908,-77.040224,-77.0402198,-77.040163,-77.040163,-77.040163,-77.040163,-77.04013,-77.04002,-77.0400099,-77.039894,-77.039806,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.062108,-77.062012,-77.0616098,-77.06147,-77.0614348,-77.0613327,-77.061314,-77.0613098,-77.0613098,-77.0613098,-77.0612443,-77.06074,-77.060585,-77.0604553,-77.0601654,-77.0601225,-77.0600586,-77.0599747,-77.0598744,-77.059572,-77.0595169,-77.0595169,-77.059516,-77.0594025,-77.0594025,-77.059365,-77.0593198,-77.0590668,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.0396264,-77.0395251,-77.0395178,-77.0394745,-77.03945,-77.03944,-77.03944,-77.03944,-77.0394363,-77.0394299,-77.0391693,-77.0391693,-77.0391604,-77.039093,-77.039054,-77.039047,-77.0390015,-77.038992,-77.0388718,-77.0388579,-77.028084,-77.0280802,-77.0280802,-77.0280661,-77.028057,-77.0280171,-77.0279922,-77.0279802,-77.027825,-77.0278072,-77.0278072,-77.0277634,-77.0276337,-77.0276295,-77.027618,-77.0275803,-77.02758,-77.027572,-77.0275665,-77.027563,-77.027563,-77.027563,-77.0275269,-77.0273948,-77.0589294,-77.0584259,-77.058425,-77.0580699,-77.05772,-77.0575485,-77.0574363,-77.0573209,-77.0573102,-77.057244,-77.057222,-77.0571198,-77.0567945,-77.0567583,-77.0567583,-77.056413,-77.056306,-77.0388107,-77.0388107,-77.0388107,-77.038762,-77.038732,-77.038681,-77.038647,-77.038646,-77.0386353,-77.038614,-77.038591,-77.0385742,-77.0385742,-77.0385575,-77.0385555,-77.0384999,-77.0384967,-77.0381165,-77.0380783,-77.0377944,-77.037766,-77.0375519,-77.0375061,-77.0373611,-77.037325,-77.037325,-77.0373154,-77.037313,-77.0372772,-77.037263,-77.037209,-77.0371628,-77.037098,-77.0370178,-77.0370026,-77.0370026,-77.0370025,-77.0370025,-77.0370025,-77.037002,-77.036994,-77.0273875,-77.027359,-77.027359,-77.0273514,-77.0272598,-77.027259,-77.027259,-77.027259,-77.0272165,-77.027196,-77.0271251,-77.0270978,-77.0270615,-77.0270462,-77.0270401,-77.027034,-77.027034,-77.0270301,-77.0270301,-77.0270267,-77.027024,-77.0269547,-77.0269201,-77.0269012,-77.026886,-77.0268443,-77.0162167,-77.016198,-77.0161799,-77.0161799,-77.0161799,-77.016059,-77.0159727,-77.0159463,-77.015938,-77.0158429,-77.015838,-77.015754,-77.0157166,-77.0157166,-77.0154402,-77.015439,-77.0153698,-77.0153584,-77.0153584,-77.0153209,-77.0153209,-77.015286,-77.015231,-77.0152283,-77.0152203,-77.0152002,-76.9995099,-76.9993698,-76.999298,-76.9992909,-76.9992828,-76.9989198,-76.9987564,-76.9987564,-76.998641,-76.998565,-76.998447,-76.9984397,-76.9983599,-76.9982976,-76.998278,-76.998262,-76.9982529,-76.998161,-76.998161,-76.998138,-76.9772402,-76.9772302,-76.9770659,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.9768982,-76.97684,-76.976825,-76.976458,-76.97644,-76.9762599,-76.9762599,-76.9762579,-76.9762237,-76.9762103,-76.9762103,-76.9760339,-76.9759903,-76.975936,-76.9758148,-76.9756879,-76.975582,-76.975487,-77.0151646,-77.0151639,-77.0150223,-77.015003,-77.015003,-77.0150017,-77.0148919,-77.0147697,-77.0147697,-77.0147697,-77.0147697,-77.0147,-77.0147,-77.0146584,-77.0142899,-77.0142601,-77.014233,-77.0141159,-77.0141159,-77.014058,-77.0140328,-77.014022,-76.9952393,-76.9952244,-76.9952244,-76.9951172,-76.9951172,-76.9950058,-76.9949797,-76.994974,-76.9949717,-76.9949502,-76.9949301,-76.9949301,-76.9947891,-76.9947738,-76.994743,-76.994728,-76.994728,-76.994728,-76.994724,-76.9947074,-76.9944654,-76.9944534,-76.994349,-76.9942501,-76.9938089,-76.9789429,-76.978927,-76.978809,-76.978682,-76.9785385,-76.978381,-76.9783173,-76.978317,-76.9782715,-76.9782257,-76.978045,-76.977759,-76.9775923,-76.9775923,-76.9773254,-77.014015,-77.0139999,-77.013877,-77.0138564,-77.0137739,-77.013755,-77.013755,-77.013668,-77.0136606,-77.0136499,-77.013636,-77.013636,-77.013636,-77.0136235,-77.013527,-77.0131899,-77.0131899,-77.013127,-77.0129102,-77.0129102,-77.0128708,-77.012854,-76.998099,-76.998083,-76.9980392,-76.99797,-76.9978384,-76.997706,-76.9977036,-76.9976699,-76.9976699,-76.9976699,-76.9976663,-76.9975204,-76.997416,-76.997416,-76.9972958,-76.9972958,-76.9972534,-76.9971085,-76.9968929,-76.99688,-76.9968719,-76.996859,-76.9967957,-76.996787,-76.9966278,-76.996616,-76.996569,-76.9965673,-76.996564,-76.9964371,-76.996398,-76.996383,-76.996278,-76.9962222,-76.9962075,-76.9961853,-76.9961599,-76.9961498,-76.9961498,-76.9961136,-76.996032,-76.9960175,-76.9959822,-76.9959717,-76.9959717,-76.995971,-76.995971,-76.9959667,-76.9957099,-76.995654,-76.995586,-76.995486,-76.9953384,-76.995304,-76.9953,-76.9953,-76.962788,-76.962677,-76.9607468,-76.9602241,-76.9602187,-76.9600449,-76.9599152,-76.9599075,-76.959624,-76.959571,-76.9595155,-76.9592667,-76.959221,-76.9589691,-76.958914,-76.958908,-76.9587149,-76.9586868,-76.9586868,-76.9586868,-76.9586868,-76.9586868,-76.9586868,-76.9586868,-76.958573,-76.9585266,-76.958352,-76.958237,-76.9581798,-76.957901,-76.957501,-76.957091,-76.957005,-76.9560695,-76.9555206,-76.955181,-76.955031,-76.955031,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012754,-77.012654,-77.0126313,-77.0126038,-77.0126038,-77.0126038,-77.012585,-77.0125504,-77.012466,-77.012466,-77.012466,-77.0123456,-77.0123456,-76.9808418,-76.9808096,-76.9807901,-76.9807663,-76.9807398,-76.9807398,-76.980651,-76.9806111,-76.9805635,-76.9805635,-76.9805635,-76.980534,-76.9804495,-76.9804227,-76.9803619,-76.980216,-76.9801886,-76.9801788,-76.9801788,-76.980124,-76.9800797,-76.9800186,-76.980012,-76.9800029,-76.9797602,-76.97961,-76.9795342,-76.979301,-76.979301,-76.9792862,-76.9792499,-76.9792499,-76.97924,-76.979196,-76.9790648,-76.9258728,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247098,-76.924593,-76.9245536,-76.9245536,-76.9239246,-76.9229507,-76.922884,-76.9227337,-76.921893,-76.921814,-76.921157,-76.918165,-76.918045,-76.9178279,-76.91706,-76.91706,-76.91638,-76.9109268,-76.909858,-76.6909207,-77.0368707,-77.012321,-77.0123175,-77.0123148,-77.012296,-77.0122719,-77.0121723,-77.0121698,-77.0121599,-77.0121599,-77.0119292,-77.0118602,-77.0118179,-77.0118179,-77.011815,-77.0117264,-77.0117264,-77.0112386,-77.0109335,-77.0108349,-77.0107727,-77.0106398,-76.99377,-76.9937499,-76.9937083,-76.9936701,-76.9935977,-76.993558,-76.9935154,-76.993354,-76.99332,-76.9933014,-76.993268,-76.99319,-76.9931717,-76.993042,-76.9930398,-76.9929197,-76.9929197,-76.9928639,-76.992853,-76.992756,-76.99275,-76.9926301,-76.9926162,-76.992563,-76.9925,-76.992493,-76.992485,-76.992429,-76.992424,-76.9924202,-76.992317,-76.992187,-76.992097,-76.992086,-76.9920742,-76.9920179,-76.9919743,-76.9917145,-76.9915695,-76.9915297,-76.9915297,-76.931801,-76.931366,-76.9312515,-76.9311676,-76.9308014,-76.930465,-76.9303314,-76.9288297,-76.928302,-76.927354,-76.927097,-76.926257,-76.926051,-76.926051,-76.926051,-76.926051,-76.926051,-76.926051,-76.926051,-76.926051,-77.010353,-77.0103098,-77.0102703,-77.0102539,-77.0100327,-77.0099504,-77.0098572,-77.0097493,-77.009727,-77.0096893,-77.0095978,-77.0095367,-77.009506,-77.0094833,-77.0094528,-77.0094452,-77.009445,-77.009445,-77.0094299,-77.0094147,-77.009414,-77.0093994,-77.0093994,-77.009399,-77.0093842,-76.9833248,-76.9833,-76.983283,-76.983214,-76.98319,-76.983164,-76.983164,-76.983164,-76.9831102,-76.9830322,-76.983024,-76.982995,-76.982985,-76.982727,-76.9825058,-76.9824846,-76.9824142,-76.9824135,-76.9823257,-76.9822834,-76.982219,-76.9822003,-76.9821861,-76.9821601,-76.982111,-76.982055,-76.981989,-76.9819336,-76.9819336,-76.981872,-76.9818573,-76.981781,-76.9814301,-76.9813574,-76.9812546,-76.9812164,-76.9810867,-76.9810791,-76.9809497,-76.986397,-76.9863663,-76.9863586,-76.986358,-76.9863129,-76.986291,-76.985908,-76.985885,-76.985766,-76.9856402,-76.9856402,-76.9856201,-76.9856201,-76.9856,-76.985512,-76.9855042,-76.9855001,-76.98549,-76.985487,-76.9854545,-76.985298,-76.9852448,-76.9852066,-76.9852066,-76.937391,-76.9366752,-76.9363962,-76.935787,-76.935443,-76.935418,-76.935394,-76.935364,-76.935297,-76.935112,-76.9350518,-76.9348984,-76.9346008,-76.934588,-76.93423,-76.9336548,-76.9336101,-76.933578,-76.933578,-76.9328842,-76.93279,-76.9327236,-77.0093307,-77.009235,-77.0091578,-77.0091578,-77.00915,-77.0091171,-77.0091171,-77.0091171,-77.0091171,-77.0091171,-77.0091144,-77.0091144,-77.0091019,-77.0091002,-77.0090992,-77.0090982,-77.0090945,-76.985187,-76.9851532,-76.9851074,-76.985107,-76.9850922,-76.984859,-76.984832,-76.984802,-76.984664,-76.9845291,-76.984523,-76.9845047,-76.984484,-76.984471,-76.9844513,-76.98443,-76.9844284,-76.983801,-76.9837962,-76.98365,-76.98365,-76.98364,-76.9834671,-76.9834583,-76.9833597,-76.9426102,-76.9424701,-76.9424238,-76.942208,-76.9421489,-76.9420506,-76.9419632,-76.9419632,-76.9419632,-76.9416351,-76.9412,-76.941124,-76.9400024,-76.939706,-76.93966,-76.9390275,-76.9389877,-76.9389114,-76.9387988,-76.9387988,-76.938792,-76.9387894,-76.9387894,-76.938468,-76.938121,-77.0090839,-77.009083,-77.0090596,-77.0090593,-77.0090519,-77.0090493,-77.0090479,-77.0090398,-77.0090398,-77.0090304,-77.0090304,-77.0090197,-77.0090175,-77.0089961,-77.008992,-77.008992,-77.008992,-77.008992,-77.008992,-77.0089601,-77.0089297,-77.0089278,-77.0089191,-77.0089124,-77.0089097,-77.0089097,-77.008905,-77.008899,-77.00884,-77.0088373,-77.0088333,-76.988945,-76.988891,-76.9888294,-76.988822,-76.988807,-76.9887388,-76.9887314,-76.9886865,-76.988685,-76.988508,-76.988508,-76.988508,-76.9884324,-76.9883291,-76.988321,-76.988295,-76.9882903,-76.9882903,-76.9882878,-76.9882707,-76.9881984,-76.9881655,-76.988165,-76.9881266,-76.988114,-76.9879898,-76.987915,-76.9878678,-76.9878678,-76.987834,-76.9875556,-76.9874725,-76.9874496,-76.987449,-76.987445,-76.9874246,-76.9873382,-76.9873178,-76.9872838,-76.9872677,-76.987138,-76.987055,-76.9870149,-76.9868398,-76.9868398,-76.986818,-76.986818,-76.9868088,-76.986803,-76.986784,-76.947594,-76.947573,-76.9473419,-76.946876,-76.9467167,-76.946617,-76.9461434,-76.94576,-76.94576,-76.9455022,-76.9448297,-76.944802,-76.944802,-76.944802,-76.944681,-76.944362,-76.9443449,-76.9438521,-76.943851,-76.9429394,-76.942792,-76.9427185,-76.942718,-77.0087738,-77.008755,-77.0087509,-77.0086594,-77.0086138,-77.008611,-77.008611,-77.008559,-77.008506,-77.0084799,-77.0084698,-77.0083771,-77.008346,-77.008238,-77.008186,-77.0081661,-77.0081299,-77.00811,-77.00811,-77.0081024,-77.0080755,-77.007997,-77.0079904,-77.0078964,-77.007812,-77.0077497,-77.007711,-76.9915273,-76.9915148,-76.9913025,-76.991272,-76.991266,-76.991249,-76.9912186,-76.9912109,-76.9910502,-76.9909821,-76.9909818,-76.9909798,-76.9909057,-76.9908676,-76.990825,-76.990621,-76.990615,-76.9905472,-76.9903985,-76.9902998,-76.9902778,-76.954895,-76.954895,-76.954824,-76.9546802,-76.9546419,-76.9535731,-76.95315,-76.9528355,-76.9528355,-76.9527979,-76.9527979,-76.952349,-76.952299,-76.9522018,-76.9522018,-76.952174,-76.9519014,-76.9518397,-76.9516525,-76.9512121,-76.9512121,-76.950943,-76.950828,-76.9503296,-76.9500802,-76.9500656,-76.950012,-76.95001,-76.949711,-76.949431,-76.9493408,-76.949183,-76.949183,-76.949079,-76.9486694,-76.9486694,-76.9486385,-77.0075302,-77.0074445,-77.007409,-77.00739,-77.0073013,-77.0073013,-77.0073013,-77.0073013,-77.0073013,-77.0073013,-77.0073013,-77.0073013,-77.007214,-77.0072021,-77.0071869,-77.007146,-77.007052,-77.006619,-77.006619,-77.006619,-76.9902302,-76.9901899,-76.990137,-76.9900818,-76.99002,-76.990001,-76.9899063,-76.989906,-76.9898453,-76.9898453,-76.989818,-76.989803,-76.9896698,-76.9895248,-76.989524,-76.9894899,-76.9892599,-76.9892398,-76.9891666,-76.9890823,-76.9889896,-76.9889896,-76.9889896,-77.0064697,-77.0063705,-77.006355,-77.006263,-77.0062103,-77.0062103,-77.0062,-77.006134,-77.0061264,-77.0061062,-77.0060654,-77.0058956,-77.0058731,-77.0058701,-77.0058701,-77.0058686,-77.0058631,-77.0058601,-77.0058125,-77.0057957,-77.005789,-77.005729,-77.0056915,-77.005609,-77.005567,-77.0054703,-77.0054703,-77.00547,-77.005424,-76.967178,-76.967094,-76.9669278,-76.9668808,-76.966697,-76.9665798,-76.9664841,-76.9664841,-76.9663773,-76.9663086,-76.9655398,-76.9655183,-76.965166,-76.9650726,-76.964871,-76.9647539,-76.9645767,-76.9645386,-76.964012,-76.9639053,-76.9638614,-76.9634248,-76.9634248,-76.962826,-76.962826,-77.0053337,-77.0050802,-77.0050748,-77.0050748,-77.004657,-77.0046234,-77.0045624,-77.0045624,-77.0045599,-77.0045599,-77.0044861,-77.004269,-77.004255,-77.004179,-77.0039902,-77.0038933,-77.003788,-77.0037384,-77.0036318,-77.003581,-77.0034803,-77.0034796,-77.0033998,-77.0033804,-76.971542,-76.9715298,-76.9714701,-76.971231,-76.9710249,-76.9710083,-76.9708328,-76.9708328,-76.9708224,-76.9707902,-76.970599,-76.970599,-76.970525,-76.970292,-76.970269,-76.9701996,-76.970195,-76.970195,-76.9701397,-76.9699783,-76.9699721,-76.9699359,-76.9698715,-76.969821,-76.9695816,-76.969204,-76.9690933,-76.9689026,-76.9687881,-76.9687772,-76.9685898,-76.968525,-76.9682099,-76.96819,-76.9679497,-76.9677734,-76.9675293,-76.96731,-76.9672403,-77.0031433,-77.003141,-77.002915,-77.002915,-77.0028674,-77.0028399,-77.002796,-77.0027847,-77.0027847,-77.002595,-77.002502,-77.002502,-77.002469,-77.002469,-77.0024201,-77.0024068,-77.0024,-77.0023804,-77.00229,-77.002283,-77.002273,-77.0022424,-77.0022125,-76.973281,-76.973114,-76.9729524,-76.9728803,-76.972707,-76.9726268,-76.9726268,-76.9725846,-76.9725826,-76.972508,-76.9723599,-76.9723599,-76.972221,-76.9721601,-76.9720078,-76.9720078,-76.9720078,-76.9720078,-76.9719238,-76.971914,-76.971914,-76.971828,-76.9718081,-76.9717484,-76.971638,-76.9716263,-77.0020788,-77.0020701,-77.002037,-77.0019486,-77.001937,-77.0018475,-77.0018463,-77.0018463,-77.001808,-77.001769,-77.001699,-77.0016708,-77.0016556,-77.001655,-77.0016403,-77.001561,-77.001561,-77.0014725,-77.0014648,-77.001378,-77.001317,-77.001297,-77.0012894,-77.00126,-77.0012512,-77.0012131,-77.0009079,-77.000867,-77.000852,-77.0008469,-76.9751816,-76.975042,-76.9749791,-76.97496,-76.9747086,-76.974685,-76.974609,-76.974609,-76.974609,-76.974609,-76.974609,-76.974609,-76.9744797,-76.9743271,-76.974216,-76.9741698,-76.9741496,-76.9741492,-76.974096,-76.9739833,-76.9739827,-76.973942,-76.9739227,-76.9739227,-76.973896,-76.973896,-76.973887,-76.973877,-76.9736997,-76.97367,-76.9736078,-76.97351,-76.9734503,-76.9734503,-76.9734503,-76.97332,-77.017572,-77.017572,-77.017572,-77.0175599,-77.017559,-77.017534,-77.0175323,-77.017315,-77.017028,-77.017028,-77.017028,-77.01701,-77.0169525,-77.016947,-77.0169067,-77.016805,-77.01678,-77.0165787,-77.0165787,-77.0164413,-77.016439,-77.0164287,-77.0164108,-77.016403,-77.0163562,-77.016349,-77.016276,-77.016273,-77.000828,-77.0006204,-77.0006177,-77.0005701,-77.0005701,-77.0005701,-77.00056,-77.00056,-77.00056,-77.00055,-77.0005077,-77.000473,-77.0004366,-77.000381,-77.000361,-77.000327,-77.000323,-77.0002998,-77.000297,-77.0002899,-77.000278,-77.0002518,-77.000091,-77.0000128,-77.0000128,-76.9997177,-76.9996539,-76.9996125,-76.9995193,-77.1092453,-77.1071202,-77.1070725,-77.1042633,-77.1042633,-77.103508,-77.1018268,-77.1017799,-77.1010986,-77.1005997,-77.0996797,-77.0994873,-77.098396,-77.0969177,-77.0962677,-77.0962601,-77.0960388,-77.0948303,-77.094769,-77.0906098,-77.0903778,-77.0894699,-77.089146,-77.0889664,-77.0889001,-77.088631,-77.088619,-77.0869748,-77.0861588,-77.026825,-77.0266934,-77.0266499,-77.0265899,-77.02656,-77.0265427,-77.0264976,-77.0264816,-77.0264511,-77.02644,-77.026437,-77.026437,-77.026437,-77.0264199,-77.0263138,-77.0263086,-77.0263062,-77.026298,-77.02629,-77.0262146,-77.026214,-77.026214,-77.026214,-77.0261993,-77.026199,-77.0261952,-77.0261677,-77.0261383,-77.0261376,-77.0261307,-77.026104,-77.085506,-77.0852051,-77.08491,-77.084846,-77.0846463,-77.0843506,-77.0842972,-77.0837601,-77.0834045,-77.083038,-77.0824509,-77.082428,-77.0822098,-77.0820777,-77.0820764,-77.0819302,-77.0815887,-77.0814098,-77.081121,-77.08075,-77.0807353,-77.08064,-77.055938,-77.0558929,-77.0558701,-77.0558701,-77.0558548,-77.0558403,-77.0556761,-77.0556761,-77.055541,-77.0555351,-77.0553665,-77.0549344,-77.0549257,-77.0549257,-77.0548064,-77.0546417,-77.054589,-77.054127,-77.054071,-77.0538177,-77.053754,-77.0537415,-77.0537109,-77.0537109,-77.053622,-77.053358,-77.05329,-77.0530014,-77.0528624,-77.0527102,-77.0526887,-77.0369797,-77.036972,-77.036967,-77.0369263,-77.0368881,-77.0368881,-77.0368805,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368652,-77.0260759,-77.0260376,-77.0260303,-77.0260102,-77.0259974,-77.02599,-77.02599,-77.0259839,-77.0259774,-77.0259613,-77.0258888,-77.0258714,-77.0257667,-77.0257492,-77.025705,-77.0256271,-77.025536,-77.025519,-77.0255127,-77.0254288,-77.0253754,-77.025334,-77.02529,-77.025261,-77.025121,-77.025121,-77.025121,-77.0250781,-77.0248903,-77.024872,-77.0248566,-77.0248566,-77.024856,-77.0247192,-77.0798416,-77.079386,-77.0792802,-77.0790024,-77.078615,-77.0784378,-77.078437,-77.0782339,-77.0779,-77.077805,-77.0774603,-77.077347,-77.0772041,-77.076913,-77.076913,-77.076913,-77.076828,-77.0767099,-77.0764618,-77.0761261,-77.076126,-77.075719,-77.075602,-77.075493,-77.075469,-77.075454,-77.0754318,-77.0754318,-77.075106,-77.0748981,-77.0748596,-77.074847,-77.074684,-77.074684,-77.0526749,-77.0524923,-77.052457,-77.0522287,-77.0521751,-77.052017,-77.0519943,-77.0518494,-77.0518257,-77.0515864,-77.0515864,-77.051473,-77.0514677,-77.051443,-77.0514243,-77.0512085,-77.0511391,-77.050903,-77.050765,-77.0507126,-77.050712,-77.050712,-77.050621,-77.05061,-77.0503914,-77.036849,-77.0368161,-77.036795,-77.0367889,-77.0366867,-77.0366619,-77.0366599,-77.0366237,-77.0366049,-77.0365975,-77.036568,-77.0365499,-77.0365499,-77.0365439,-77.0365432,-77.0365398,-77.0365331,-77.0365331,-77.0365298,-77.0365298,-77.036498,-77.036498,-77.0364976,-77.0364902,-77.0364875,-77.02468,-77.024579,-77.024444,-77.0243666,-77.0243298,-77.024323,-77.024305,-77.0242875,-77.024271,-77.024213,-77.0242081,-77.0241699,-77.024147,-77.024146,-77.024146,-77.0241453,-77.024135,-77.0241326,-77.0241085,-77.0240273,-77.0240273,-77.074589,-77.0743811,-77.0740585,-77.0740163,-77.0738158,-77.073616,-77.0735855,-77.073574,-77.073292,-77.07316,-77.0731433,-77.0730896,-77.0730896,-77.0730362,-77.0730362,-77.0729005,-77.0726511,-77.0724761,-77.0723648,-77.072288,-77.072221,-77.0722119,-77.0721582,-77.0718867,-77.0718689,-77.0717316,-77.0364802,-77.0364802,-77.0364775,-77.0364701,-77.0364701,-77.0364685,-77.0364685,-77.0364685,-77.0364685,-77.0364674,-77.0364674,-77.036465,-77.036465,-77.0364607,-77.03646,-77.03646,-77.0364399,-77.036438,-77.0363843,-77.0363602,-77.0363464,-77.0363196,-77.0362803,-77.0362611,-77.0361629,-77.0361552,-77.036096,-77.035951,-77.035878,-77.0357361,-77.035585,-77.0240266,-77.0240173,-77.0240173,-77.0240156,-77.0239998,-77.0239715,-77.0239697,-77.0239697,-77.0239697,-77.0239697,-77.0239606,-77.0239606,-77.0239603,-77.02392,-77.0238597,-77.023774,-77.023666,-77.0236511,-77.0234985,-77.0234985,-77.0234976,-77.0234299,-77.0234198,-77.0233802,-77.0717,-77.071569,-77.071369,-77.071304,-77.071304,-77.071304,-77.0712349,-77.071197,-77.071162,-77.0709059,-77.0709,-77.070861,-77.0708299,-77.0705402,-77.0704302,-77.0704041,-77.0703598,-77.0702972,-77.0701981,-77.0701981,-77.0699921,-77.0697,-77.069665,-77.069664,-77.0696303,-77.0696303,-77.069518,-77.069422,-77.069422,-77.0691267,-77.0690127,-77.0689215,-77.0687637,-77.0686758,-77.0686646,-77.068664,-77.0686314,-77.0686314,-77.0686035,-77.0684949,-77.068473,-77.0683212,-77.050299,-77.0501876,-77.0501199,-77.0501098,-77.0501098,-77.050079,-77.0500107,-77.0500107,-77.0500107,-77.049832,-77.0494875,-77.049408,-77.049137,-77.049118,-77.0488679,-77.0488579,-77.0487801,-77.0487392,-77.0233078,-77.0232773,-77.0231261,-77.0231261,-77.0229538,-77.022934,-77.0229111,-77.0227661,-77.0227127,-77.0227077,-77.0226135,-77.022598,-77.022514,-77.0225067,-77.022506,-77.0224457,-77.0224457,-77.022445,-77.022445,-77.022412,-77.0223923,-77.0223556,-77.022306,-77.022306,-77.04799,-77.0479736,-77.0477558,-77.0477448,-77.0477295,-77.0475845,-77.0474625,-77.0473175,-77.0471272,-77.046989,-77.046989,-77.0469818,-77.046936,-77.046936,-77.0468979,-77.0468979,-77.0468261,-77.0468067,-77.04669,-77.0466455,-77.046644,-77.046506,-77.0462799,-77.0462799,-77.0462723,-77.0462189,-77.0461731,-77.0460129,-77.0459061,-77.0458527,-77.0355301,-77.0355301,-77.0355199,-77.035514,-77.035514,-77.035461,-77.035461,-77.0350928,-77.034967,-77.0349579,-77.0349503,-77.0349503,-77.0349503,-77.034842,-77.034834,-77.0348129,-77.0348098,-77.0347562,-77.034747,-77.0346274,-77.0345999,-77.0345597,-77.0345597,-77.034435,-77.03439,-77.034323,-77.034241,-77.0341949,-77.034155,-77.0340881,-77.0340576,-77.033963,-77.033882,-77.0338161,-77.0338161,-77.033814,-77.0337014,-77.0336974,-77.0336397,-77.033599,-77.0335871,-77.0335773,-77.033577,-77.033566,-77.0335541,-77.033419,-77.033404,-77.0222931,-77.0222931,-77.022293,-77.022293,-77.0222473,-77.0222397,-77.022232,-77.0222092,-77.0222015,-77.022146,-77.0220961,-77.0220961,-77.0220955,-77.0220868,-77.022076,-77.022072,-77.0220599,-77.022056,-77.022023,-77.02202,-77.0219962,-77.0219962,-77.0219701,-77.0219674,-77.0219674,-77.0219674,-77.021965,-77.021938,-77.0219198,-77.0219198,-77.0219198,-77.0219198,-77.032135,-77.0321263,-77.0321263,-77.0321263,-77.0321256,-77.0320176,-77.0320176,-77.0320176,-77.032015,-77.0320096,-77.0320096,-77.0320076,-77.0320076,-77.0320076,-77.0319875,-77.03197,-77.03197,-77.031964,-77.031964,-77.031964,-77.031964,-77.03196,-77.03196,-77.03196,-77.0319591,-77.0219116,-77.0219097,-77.0219097,-77.0219097,-77.0219097,-77.0219097,-77.0219042,-77.021904,-77.0218997,-77.0218903,-77.0218588,-77.021697,-77.021643,-77.021608,-77.021474,-77.0214303,-77.0212968,-77.021255,-77.0211969,-77.045776,-77.0457458,-77.0457458,-77.04568,-77.04568,-77.0454676,-77.045413,-77.0453817,-77.0453796,-77.045364,-77.0453415,-77.0452957,-77.0452805,-77.04528,-77.0449673,-77.0449673,-77.0449673,-77.0449479,-77.044939,-77.0449298,-77.0449097,-77.0449097,-77.0448902,-77.0445023,-77.0444794,-77.044475,-77.0444597,-77.0444148,-77.044344,-77.021179,-77.021011,-77.0209885,-77.020969,-77.020969,-77.020894,-77.020863,-77.020861,-77.020851,-77.0208402,-77.020838,-77.0206484,-77.02053,-77.02053,-77.020358,-77.0201721,-77.020133,-77.0200952,-77.020094,-77.0200865,-77.0200811,-77.0442398,-77.044189,-77.044166,-77.044162,-77.0440216,-77.043942,-77.0439224,-77.043922,-77.043902,-77.043902,-77.0438766,-77.043818,-77.0437851,-77.0437851,-77.0437851,-77.0437851,-77.043711,-77.043569,-77.0435518,-77.043541,-77.0435102,-77.0434861,-77.0434861,-77.0434398,-77.0434298,-77.03334,-77.0330658,-77.033065,-77.0330429,-77.0330276,-77.033004,-77.032982,-77.0329666,-77.03291,-77.03291,-77.0328827,-77.032877,-77.032848,-77.0328471,-77.0327894,-77.0327499,-77.0327274,-77.032717,-77.0327103,-77.0327003,-77.0326996,-77.032692,-77.032691,-77.0326533,-77.0326399,-77.0326164,-77.032595,-77.0325916,-77.0325465,-77.0325165,-77.0325089,-77.0325089,-77.032381,-77.0323792,-77.0323715,-77.0323715,-77.032356,-77.032344,-77.032325,-77.032296,-77.032278,-77.0321397,-77.0200764,-77.020072,-77.0199638,-77.0199638,-77.0199578,-77.0199509,-77.0199101,-77.0199101,-77.0199101,-77.0199101,-77.0199056,-77.0198961,-77.0198699,-77.0198424,-77.0197678,-77.0197525,-77.0195601,-77.0194101,-77.0194016,-77.019393,-77.019386,-77.0193634,-77.0193405,-77.0192108,-77.01921,-77.0191116,-77.0319499,-77.0319499,-77.0319499,-77.0319499,-77.0319499,-77.0319499,-77.0319499,-77.0319499,-77.0319499,-77.0319494,-77.0319494,-77.0319398,-77.0319398,-77.0319398,-77.031929,-77.031929,-77.0319083,-77.0318922,-77.031872,-77.031872,-77.0315933,-77.0314899,-77.031336,-77.0312391,-77.031237,-77.031048,-77.0308703,-77.0433359,-77.0430603,-77.0430603,-77.0430527,-77.042963,-77.042963,-77.0429306,-77.042923,-77.0428696,-77.0427203,-77.042619,-77.042572,-77.042572,-77.042572,-77.042572,-77.042434,-77.042393,-77.0423584,-77.0422668,-77.042228,-77.0421677,-77.042088,-77.0420609,-77.0420609,-77.0420609,-77.030805,-77.0305405,-77.0305328,-77.0304834,-77.0304834,-77.0304666,-77.0304108,-77.0303398,-77.030334,-77.030326,-77.0302505,-77.030206,-77.0302048,-77.030197,-77.030197,-77.030197,-77.0301208,-77.0300446,-77.0300293,-77.0300217,-77.0300217,-77.0299835,-77.0299835,-77.0299759,-77.029973,-77.029953,-77.0299454,-77.029943,-77.029935,-77.0682456,-77.068021,-77.0679827,-77.067962,-77.0678635,-77.0678635,-77.0678635,-77.06782,-77.0674973,-77.0671463,-77.0671463,-77.0671463,-77.0668535,-77.066796,-77.0666428,-77.06636,-77.0663528,-77.0663452,-77.0662145,-77.0662145,-77.0662145,-77.0662145,-77.0662145,-77.066139,-77.0658569,-77.065635,-77.0419599,-77.041941,-77.0419056,-77.041893,-77.041893,-77.041887,-77.041862,-77.041845,-77.041806,-77.0417574,-77.0417561,-77.04175,-77.0417487,-77.041748,-77.0417098,-77.041708,-77.041708,-77.041708,-77.0417023,-77.0417023,-77.0416997,-77.0416803,-77.0416702,-77.04167,-77.0416673,-77.0416602,-77.041446,-77.041442,-77.0412759,-77.0412292,-77.0298843,-77.0298766,-77.0298082,-77.0297961,-77.0297478,-77.0297012,-77.0296921,-77.0296823,-77.0296774,-77.0296399,-77.0296303,-77.0296298,-77.0296298,-77.0296298,-77.0296238,-77.029621,-77.029621,-77.0296197,-77.0296197,-77.0296097,-77.0294189,-77.0294189,-77.029312,-77.0292511,-77.0292248,-77.0654144,-77.0653719,-77.0652422,-77.0650075,-77.0648727,-77.064324,-77.0642263,-77.064015,-77.0639359,-77.0638504,-77.063807,-77.0637817,-77.063445,-77.063023,-77.0630188,-77.0630188,-77.0630096,-77.0628711,-77.0628711,-77.0628711,-77.0628101,-77.0290298,-77.0289157,-77.0289078,-77.0289078,-77.0288467,-77.0287628,-77.028722,-77.0286713,-77.0286,-77.0285187,-77.0285034,-77.028448,-77.0284195,-77.0284195,-77.0283819,-77.0283661,-77.02832,-77.028304,-77.0282974,-77.0282666,-77.0282565,-77.028228,-77.028196,-77.0281801,-77.0281801,-77.0281677,-77.0281304,-77.0281197,-77.0281103,-77.028105,-77.0190056,-77.0189901,-77.0189875,-77.0189667,-77.0189437,-77.0189298,-77.018867,-77.018867,-77.018867,-77.018417,-77.0184101,-77.0183773,-77.0183652,-77.0182724,-77.0182495,-77.018188,-77.0181097,-77.018066,-77.018017,-77.0179214,-77.017845,-77.0178133,-77.041111,-77.0410614,-77.040998,-77.040947,-77.0409241,-77.0408936,-77.040839,-77.040739,-77.0407248,-77.0406754,-77.0406494,-77.0406494,-77.040649,-77.040649,-77.040451,-77.040309,-77.040163,-77.0401306,-77.0401306,-77.0400515,-77.0399522,-77.039894,-77.0398712,-77.039871,-77.039871,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.0622711,-77.062047,-77.0620346,-77.0618163,-77.06164,-77.0614014,-77.061393,-77.0613098,-77.061309,-77.061309,-77.061309,-77.061305,-77.061175,-77.0608259,-77.0606995,-77.0606995,-77.0606071,-77.0601425,-77.0595245,-77.0595169,-77.0595169,-77.059309,-77.059297,-77.0591998,-77.0589294,-77.039709,-77.039709,-77.039656,-77.03965,-77.0395278,-77.0394974,-77.0394745,-77.0394601,-77.03945,-77.03944,-77.03944,-77.0394363,-77.039375,-77.0392294,-77.0392294,-77.0392252,-77.0391503,-77.039133,-77.0390472,-77.0389666,-77.038943,-77.028084,-77.0280802,-77.028057,-77.0280259,-77.0279903,-77.0279903,-77.0279694,-77.0279104,-77.0278091,-77.0278072,-77.027794,-77.0276031,-77.0275967,-77.0275803,-77.027579,-77.027563,-77.027526,-77.027513,-77.0275001,-77.0274203,-77.0273972,-77.0273972,-77.0589294,-77.0589294,-77.0589294,-77.0589294,-77.058675,-77.0585327,-77.0584259,-77.058334,-77.0582852,-77.0581102,-77.0581102,-77.0578252,-77.0578079,-77.0575485,-77.0574363,-77.057373,-77.0573303,-77.0571399,-77.0571399,-77.0570896,-77.0570896,-77.0570896,-77.0570322,-77.0567583,-77.0567463,-77.056329,-77.0561676,-77.0388107,-77.03881,-77.0387497,-77.038681,-77.0386762,-77.038601,-77.0385455,-77.0384999,-77.038258,-77.038231,-77.0380859,-77.037982,-77.037939,-77.037666,-77.0375993,-77.0375519,-77.037551,-77.0373465,-77.037209,-77.037209,-77.037104,-77.037056,-77.0370025,-77.037002,-77.0272903,-77.027265,-77.027259,-77.027259,-77.0272217,-77.027203,-77.027137,-77.0270978,-77.0270978,-77.0270958,-77.0270757,-77.0270496,-77.0270401,-77.0270401,-77.0270401,-77.0270401,-77.0270157,-77.027008,-77.026886,-77.026886,-77.0268443,-77.0162059,-77.0162059,-77.0162,-77.0161879,-77.0161836,-77.0161799,-77.0161403,-77.0158774,-77.0158429,-77.0157852,-77.0156702,-77.015652,-77.015648,-77.0155945,-77.0154495,-77.0154037,-77.0153765,-77.0153584,-77.0153584,-77.0153275,-77.0153209,-77.015231,-77.0152203,-77.0152203,-77.0152002,-77.0152002,-77.0151974,-76.9994798,-76.9994737,-76.9993698,-76.9993057,-76.9993057,-76.999298,-76.999278,-76.9992397,-76.9992286,-76.99918,-76.9991773,-76.9989862,-76.998838,-76.998817,-76.9988025,-76.9987564,-76.998712,-76.998626,-76.9984853,-76.998484,-76.998447,-76.998447,-76.998447,-76.9984207,-76.9984203,-76.998284,-76.9982634,-76.998261,-76.9982224,-76.998222,-76.998214,-76.9772503,-76.9772302,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.9767761,-76.9767433,-76.976601,-76.976464,-76.9764404,-76.9762766,-76.976066,-76.975814,-76.975582,-76.975582,-76.9755555,-76.9755102,-76.9753835,-76.9752884,-77.0150223,-77.015003,-77.015003,-77.0150017,-77.014999,-77.01493,-77.0149098,-77.014778,-77.0147697,-77.0147697,-77.0147,-77.014695,-77.0144348,-77.014363,-77.0143265,-77.0143004,-77.0142441,-77.0142212,-77.0141159,-77.0141159,-77.014083,-77.014058,-77.014058,-77.014058,-77.014058,-77.014058,-77.0140207,-77.014015,-76.9952007,-76.9950642,-76.9949891,-76.9949502,-76.9949502,-76.9948201,-76.994728,-76.9947074,-76.9947074,-76.9946994,-76.9946229,-76.9943848,-76.9943619,-76.9940587,-76.993861,-76.9789803,-76.9789803,-76.978937,-76.9789352,-76.978849,-76.978813,-76.9787521,-76.9787064,-76.9786911,-76.9785156,-76.9784546,-76.9784546,-76.978381,-76.9783173,-76.9783173,-76.978317,-76.978184,-76.9779,-76.9775238,-76.9772644,-76.9772568,-77.014015,-77.014015,-77.014008,-77.014008,-77.014008,-77.0139654,-77.0139389,-77.0138779,-77.013877,-77.013877,-77.013877,-77.0138242,-77.0138148,-77.0137739,-77.0137739,-77.013755,-77.01371,-77.0137074,-77.01368,-77.0136606,-77.0136297,-77.0135498,-77.0134601,-77.0131149,-77.0129102,-77.01287,-76.998138,-76.997921,-76.9977605,-76.9977605,-76.9977036,-76.9977036,-76.9977036,-76.9977036,-76.9976699,-76.9976699,-76.9976699,-76.997619,-76.9975982,-76.9975003,-76.997389,-76.99726,-76.99726,-76.9970474,-76.9970474,-76.9969101,-76.996871,-76.9968525,-76.9967728,-76.996718,-76.996564,-76.9964447,-76.9964371,-76.9964294,-76.996315,-76.9962276,-76.996169,-76.9961599,-76.9961319,-76.9960175,-76.9960175,-76.9959936,-76.995979,-76.9959667,-76.995544,-76.9954681,-76.962738,-76.962738,-76.9619454,-76.9618993,-76.961393,-76.9613,-76.9612885,-76.9612053,-76.9604959,-76.9603838,-76.9603838,-76.960198,-76.9601593,-76.9600449,-76.9600137,-76.9599152,-76.9599152,-76.959799,-76.9597092,-76.959543,-76.9594426,-76.9589999,-76.9589999,-76.9589691,-76.9586868,-76.9586868,-76.9586868,-76.9586868,-76.9586868,-76.9585953,-76.958519,-76.957679,-76.957679,-76.957512,-76.9574963,-76.957153,-76.957091,-76.957091,-76.9568024,-76.956663,-76.956649,-76.956649,-76.956266,-76.956094,-76.956094,-76.9560318,-76.9558402,-76.955031,-76.955031,-76.955031,-76.955031,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012786,-77.0125227,-77.0124979,-77.012474,-77.0124664,-77.012466,-77.012466,-77.012466,-77.012466,-77.012428,-77.0123463,-77.012346,-77.0123376,-76.9808015,-76.9807901,-76.9807801,-76.9807412,-76.9807392,-76.9807311,-76.9806781,-76.980651,-76.980651,-76.980625,-76.9806137,-76.9805749,-76.980567,-76.9805527,-76.9802933,-76.980293,-76.980216,-76.9801886,-76.9799652,-76.979843,-76.9796797,-76.9796797,-76.9794743,-76.9794743,-76.9794743,-76.9794743,-76.9792069,-76.9790648,-76.9790648,-76.979059,-76.97905,-76.97905,-76.97905,-76.926051,-76.9252777,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9244614,-76.9238434,-76.923005,-76.92028,-76.92028,-76.918942,-76.918113,-76.9177703,-76.9175939,-76.9175262,-76.917468,-76.91706,-76.91706,-76.9148681,-76.9143427,-76.9133802,-76.9132984,-76.913267,-76.9121128,-76.9118195,-76.91117,-76.9108963,-76.6909207,-76.6909207,-76.6909207,-76.9783812,-76.95523,-77.0123021,-77.0122452,-77.0122256,-77.0121961,-77.012169,-77.0121599,-77.011995,-77.0119247,-77.0119091,-77.0118179,-77.0115204,-77.0114288,-76.9937515,-76.993751,-76.9937467,-76.9937298,-76.9937083,-76.9936909,-76.9936781,-76.993656,-76.9935769,-76.9935769,-76.9935455,-76.993545,-76.9935246,-76.9934852,-76.993477,-76.99346,-76.9932785,-76.993248,-76.993145,-76.9929197,-76.9928708,-76.9928708,-76.992805,-76.9926401,-76.992638,-76.992638,-76.9926376,-76.9926301,-76.9925892,-76.9924393,-76.9924298,-76.9924001,-76.99238,-76.9923401,-76.9923172,-76.992233,-76.9922256,-76.992202,-76.9921278,-76.9918289,-76.991821,-76.9915397,-76.9915314,-76.9915297,-76.9326401,-76.932525,-76.9317909,-76.9314656,-76.931327,-76.9311371,-76.9303314,-76.9301529,-76.929878,-76.929519,-76.9293976,-76.9286346,-76.927601,-76.927363,-76.926051,-76.926051,-76.926051,-76.926051,-76.926051,-77.0105896,-77.0104904,-77.0104024,-77.0103607,-77.0103103,-77.0102844,-77.010275,-77.0100698,-77.0099564,-77.009841,-77.009811,-77.009643,-77.0095696,-77.0094656,-77.0094528,-77.009437,-77.009414,-77.009414,-77.009407,-77.009407,-76.9833145,-76.9833,-76.9833,-76.9833,-76.9833,-76.9831772,-76.983164,-76.983164,-76.9830093,-76.98285,-76.9826033,-76.9826033,-76.982511,-76.982015,-76.9815877,-76.981586,-76.9815599,-76.981559,-76.9814298,-76.981225,-76.9812164,-76.9812164,-76.981085,-76.9810195,-76.98659,-76.98659,-76.9864301,-76.9864301,-76.986358,-76.9860463,-76.9858856,-76.985885,-76.985885,-76.9857401,-76.9857401,-76.9857178,-76.9856972,-76.985687,-76.9856751,-76.9856644,-76.985659,-76.985556,-76.9855101,-76.9855001,-76.9855001,-76.98549,-76.98548,-76.9854525,-76.9853821,-76.985352,-76.9853237,-76.9853143,-76.9852066,-76.9852066,-76.9852066,-76.985206,-76.9376018,-76.9375992,-76.937446,-76.937391,-76.937362,-76.936561,-76.9365545,-76.9365545,-76.9363785,-76.936276,-76.9352509,-76.935112,-76.934891,-76.9346008,-76.934364,-76.9342411,-76.933993,-76.9338074,-76.9334652,-76.933113,-76.9328766,-77.0093402,-77.0092799,-77.009201,-77.009201,-77.0091639,-77.0091598,-77.0091552,-77.0091552,-77.00915,-77.00915,-77.0091491,-77.0091491,-77.0091171,-77.0091171,-77.0091171,-77.0091171,-77.0091171,-77.0091171,-77.0091163,-77.0091144,-77.0091102,-77.009104,-77.009104,-77.0091019,-77.0091002,-77.0091002,-76.9851682,-76.9851681,-76.9850823,-76.9850823,-76.9849548,-76.9848906,-76.984813,-76.984748,-76.9847183,-76.9846649,-76.984664,-76.9846518,-76.984642,-76.9843253,-76.984306,-76.984153,-76.984115,-76.984104,-76.9839706,-76.9839172,-76.9837117,-76.9837117,-76.9835863,-76.983486,-76.983459,-76.9834583,-76.9833892,-76.9426478,-76.9426423,-76.942627,-76.9426002,-76.9425398,-76.942451,-76.942407,-76.9424063,-76.9423909,-76.941925,-76.9415454,-76.9413067,-76.94094,-76.940727,-76.9407186,-76.9407018,-76.9400024,-76.9394302,-76.9391797,-76.938893,-76.938683,-76.9384842,-76.938468,-76.938118,-76.937937,-77.0090874,-77.0090714,-77.0090631,-77.0090593,-77.0090475,-77.0090398,-77.0090398,-77.0090304,-77.0090175,-77.009015,-77.0090103,-77.008992,-77.008986,-77.00898,-77.0089784,-77.0089783,-77.008978,-77.0089178,-77.0089097,-77.008899,-77.008869,-77.0088507,-76.988945,-76.9888797,-76.988862,-76.988853,-76.9887502,-76.9887009,-76.9886932,-76.988692,-76.9886865,-76.9886302,-76.9885864,-76.9885864,-76.9885483,-76.9885216,-76.9885182,-76.9885025,-76.9885,-76.988497,-76.9884465,-76.988382,-76.9883198,-76.9883084,-76.9882185,-76.988125,-76.9880829,-76.9880447,-76.988032,-76.9879898,-76.987922,-76.9879121,-76.987769,-76.9877625,-76.9876328,-76.987587,-76.9873837,-76.9873178,-76.9873178,-76.9873178,-76.9872838,-76.987275,-76.9872347,-76.9870758,-76.9870758,-76.986784,-76.9867249,-76.9486385,-76.9480162,-76.9478278,-76.9478278,-76.94772,-76.9476253,-76.947352,-76.9472961,-76.947294,-76.9469943,-76.946899,-76.9467761,-76.946617,-76.945466,-76.9453354,-76.9453354,-76.944802,-76.944802,-76.944802,-76.944802,-76.944486,-76.9443449,-76.9435577,-76.9435577,-76.9434008,-76.9434008,-76.9430008,-76.9429474,-76.94293,-76.942925,-76.9427185,-76.942718,-76.9426565,-76.9426565,-77.0087622,-77.00875,-77.0087441,-77.0087357,-77.0086462,-77.0086365,-77.008613,-77.008613,-77.008603,-77.0085662,-77.008372,-77.0082855,-77.008255,-77.0082321,-77.0081863,-77.008186,-77.0081711,-77.0081674,-77.0081661,-77.008102,-77.008064,-77.0078125,-77.0078,-77.0077744,-77.007719,-77.007681,-76.991524,-76.9915203,-76.9914734,-76.991381,-76.99134,-76.9913332,-76.9912872,-76.9912662,-76.9912662,-76.9912662,-76.9912567,-76.9911401,-76.9909821,-76.9909798,-76.9909798,-76.990966,-76.990846,-76.9908142,-76.990789,-76.990592,-76.990509,-76.9904199,-76.9902751,-76.9902677,-76.9902677,-76.9902597,-76.9902597,-76.954895,-76.954895,-76.95298,-76.9528355,-76.9527979,-76.952476,-76.9522018,-76.9516525,-76.9516525,-76.9512898,-76.9512121,-76.9509354,-76.9508286,-76.9502792,-76.9500527,-76.9499588,-76.9498837,-76.9498671,-76.949646,-76.9495343,-76.9495001,-76.9494572,-76.9491112,-76.949075,-76.948985,-76.948879,-76.9488329,-76.9488303,-76.9487157,-76.9486694,-76.948669,-77.0076694,-77.007586,-77.007586,-77.0075531,-77.007316,-77.007309,-77.0073013,-77.0073013,-77.0073013,-77.0073013,-77.0073013,-77.0073013,-77.0073013,-77.007214,-77.0071462,-77.0071205,-77.0068894,-77.00678,-77.006733,-77.0066605,-77.006619,-77.0065702,-77.0065695,-76.990236,-76.9902302,-76.9902302,-76.9902179,-76.9901343,-76.9901235,-76.9901235,-76.9901235,-76.9900337,-76.9900208,-76.9900208,-76.9900055,-76.989912,-76.989302,-76.9891975,-76.9891739,-77.0063705,-77.0063705,-77.0063705,-77.0063705,-77.0062403,-77.005991,-77.0059747,-77.0059357,-77.0058902,-77.0058701,-77.0058701,-77.0058631,-77.0058163,-77.005789,-77.0057347,-77.005728,-77.0056978,-77.0055313,-77.0054703,-77.0054524,-76.9671783,-76.967178,-76.9671478,-76.9668808,-76.9665536,-76.9664604,-76.966285,-76.9662371,-76.9662371,-76.966005,-76.9657861,-76.9657798,-76.9657281,-76.9656336,-76.9656219,-76.9654171,-76.9654083,-76.964454,-76.964006,-76.9639053,-76.9634248,-76.9633893,-77.0053337,-77.0053022,-77.0052901,-77.0052873,-77.0050812,-77.0050748,-77.0050648,-77.004983,-77.004956,-77.00459,-77.0045768,-77.0045624,-77.0045624,-77.0045624,-77.0045554,-77.0041786,-77.004118,-77.004097,-77.0039902,-77.003788,-77.0037062,-77.0036318,-77.00362,-77.00354,-77.0035125,-77.0035098,-77.0035097,-77.0034903,-76.9715673,-76.9715298,-76.9715298,-76.9711985,-76.9711985,-76.9709397,-76.9708862,-76.970882,-76.970871,-76.9708328,-76.9708328,-76.9707947,-76.970599,-76.970546,-76.9703217,-76.970012,-76.9699783,-76.9699631,-76.9698715,-76.96969,-76.9694214,-76.9693599,-76.9690933,-76.9689716,-76.9689019,-76.96889,-76.968816,-76.968798,-76.9687772,-76.968605,-76.968377,-76.9683554,-76.968224,-76.96819,-76.968065,-76.9677582,-77.0033126,-77.0032959,-77.003234,-77.003187,-77.0031662,-77.003141,-77.003043,-77.002915,-77.0029068,-77.0028379,-77.0028379,-77.0028379,-77.002811,-77.0028076,-77.002796,-77.0027926,-77.0025933,-77.0024999,-77.002472,-77.002469,-77.002327,-77.0023193,-77.0023117,-77.0023113,-77.0022484,-77.0022438,-77.002165,-76.972861,-76.9728546,-76.972834,-76.9727039,-76.9725952,-76.9724738,-76.972451,-76.9723915,-76.9723599,-76.9723599,-76.9722214,-76.972197,-76.9721903,-76.9720522,-76.9720078,-76.9720078,-76.9720078,-76.9720078,-76.9720078,-76.9720078,-76.9720078,-76.9720078,-76.972007,-76.971962,-76.9719402,-76.971914,-76.971841,-76.971817,-77.002132,-77.00209,-77.00209,-77.0020294,-77.0020294,-77.0019486,-77.0019387,-77.0018311,-77.001828,-77.0018,-77.001769,-77.001731,-77.001708,-77.0016708,-77.001561,-77.001394,-77.001359,-77.0012976,-77.0012665,-77.0012512,-77.0012512,-77.0009996,-76.9751129,-76.9751129,-76.9750137,-76.9750066,-76.9749603,-76.974676,-76.9746754,-76.974609,-76.974609,-76.974609,-76.974477,-76.974458,-76.974306,-76.9741364,-76.9741364,-76.9741364,-76.9741364,-76.974115,-76.9740753,-76.974013,-76.973896,-76.973896,-76.973896,-76.973731,-76.9736997,-76.973643,-76.9736078,-76.9735522,-76.97351,-76.9733582,-76.9733021,-77.017572,-77.017572,-77.0175599,-77.0175498,-77.017546,-77.017534,-77.0175171,-77.0174955,-77.01736,-77.017227,-77.017227,-77.0171127,-77.0169067,-77.0169067,-77.0169067,-77.0168304,-77.0168303,-77.016805,-77.016805,-77.016802,-77.0167389,-77.0167083,-77.016662,-77.016655,-77.0165787,-77.0165787,-77.0165741,-77.0163777,-77.016363,-77.0163498,-77.016349,-77.016297,-77.016273,-77.0162489,-77.000828,-77.0007935,-77.000709,-77.0006177,-77.0005701,-77.0005701,-77.0005569,-77.0005526,-77.00055,-77.000473,-77.0003937,-77.0003815,-77.0002899,-77.0002899,-77.000278,-76.9999784,-76.9997864,-76.9996567,-76.9996561,-76.9996199,-76.9996199,-76.9996125,-76.9995193,-77.1469766,-77.111802,-77.1070539,-77.1046295,-77.104332,-77.1042633,-77.1042633,-77.1042576,-77.103424,-77.0992126,-77.098629,-77.0983854,-77.0948303,-77.0939934,-77.0926208,-77.0910698,-77.0904998,-77.0904465,-77.089146,-77.089146,-77.0887584,-77.0880127,-77.087547,-77.08702,-77.0861588,-77.026741,-77.0265912,-77.0265902,-77.0265057,-77.0264976,-77.0264816,-77.026481,-77.0264511,-77.0264145,-77.026329,-77.0262985,-77.0262985,-77.0262797,-77.0262299,-77.0262299,-77.026229,-77.0262167,-77.0262167,-77.026214,-77.0261993,-77.0855865,-77.08547,-77.084898,-77.0848741,-77.0847168,-77.0847015,-77.084634,-77.0843964,-77.084373,-77.084289,-77.0830383,-77.083036,-77.082778,-77.082632,-77.0826302,-77.0822158,-77.081717,-77.0816574,-77.0816574,-77.0815399,-77.0814098,-77.081207,-77.08075,-77.0806508,-77.080505,-77.0804901,-77.0560303,-77.055541,-77.0555191,-77.055468,-77.055463,-77.0552063,-77.0549344,-77.054817,-77.0547485,-77.0544891,-77.054073,-77.053805,-77.053523,-77.0534854,-77.0533752,-77.0533752,-77.053375,-77.0531903,-77.05298,-77.0527612,-77.052706,-77.0369873,-77.036987,-77.0369797,-77.036972,-77.036967,-77.0369568,-77.03692,-77.0368958,-77.036882,-77.0368805,-77.03688,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0368707,-77.0259616,-77.0259599,-77.0259138,-77.025893,-77.0256348,-77.0256042,-77.0255786,-77.0254288,-77.0254135,-77.0252838,-77.0252799,-77.025121,-77.025121,-77.025121,-77.024932,-77.0249176,-77.0248566,-77.0800902,-77.0798416,-77.0798416,-77.079795,-77.079663,-77.079501,-77.0792802,-77.0786197,-77.0784378,-77.0784378,-77.078437,-77.078202,-77.0781097,-77.0781097,-77.077322,-77.077308,-77.0771974,-77.0770861,-77.076828,-77.0767365,-77.0767313,-77.0766602,-77.076638,-77.0761261,-77.0761261,-77.0761261,-77.076126,-77.076126,-77.0753174,-77.0753174,-77.075106,-77.074847,-77.0747734,-77.074684,-77.074684,-77.074684,-77.0526539,-77.052457,-77.0523376,-77.0522401,-77.052234,-77.052083,-77.0515864,-77.0515857,-77.051473,-77.0514677,-77.0514677,-77.051467,-77.0514663,-77.0511391,-77.050765,-77.0507126,-77.050712,-77.0504379,-77.0504379,-77.0503998,-77.050391,-77.0503845,-77.036855,-77.036855,-77.03683,-77.0368118,-77.0367889,-77.036768,-77.0367432,-77.0367175,-77.0367155,-77.0367155,-77.036705,-77.036667,-77.036646,-77.0366438,-77.0366337,-77.0366049,-77.036576,-77.036576,-77.036553,-77.0365524,-77.036552,-77.0365434,-77.0365432,-77.0365331,-77.0365298,-77.0365197,-77.0365003,-77.036498,-77.0364902,-77.0364902,-77.0364902,-77.0246798,-77.0245361,-77.0244478,-77.0244049,-77.0243861,-77.024333,-77.0242844,-77.0242466,-77.0242097,-77.0241547,-77.024147,-77.024147,-77.024146,-77.0241013,-77.0240273,-77.0240267,-77.0240267,-77.074414,-77.0743179,-77.0743,-77.0742597,-77.0742188,-77.07394,-77.0739084,-77.0739037,-77.0737483,-77.073629,-77.073616,-77.0735149,-77.073315,-77.0733102,-77.073254,-77.073254,-77.0732432,-77.0730362,-77.072934,-77.0727525,-77.072735,-77.0726511,-77.0726377,-77.0726318,-77.0726236,-77.0726236,-77.0724097,-77.0721977,-77.0721703,-77.0721582,-77.0364802,-77.0364728,-77.0364685,-77.0364685,-77.0364685,-77.0364685,-77.0364674,-77.0364674,-77.0364674,-77.03645,-77.03645,-77.0364399,-77.0364399,-77.0364198,-77.0364115,-77.0363464,-77.0363454,-77.036272,-77.036256,-77.0361629,-77.0361422,-77.036065,-77.0360489,-77.035972,-77.0359344,-77.035921,-77.0359039,-77.035769,-77.0356628,-77.035659,-77.0356445,-77.035614,-77.035576,-77.0355695,-77.0240173,-77.0240173,-77.023999,-77.0239977,-77.0239937,-77.0239904,-77.0239714,-77.0239697,-77.0239697,-77.0239697,-77.0239697,-77.0239603,-77.0238449,-77.02379,-77.023775,-77.023689,-77.0236887,-77.023674,-77.0235801,-77.0234976,-77.0234976,-77.0234976,-77.0234976,-77.0234909,-77.0233588,-77.071604,-77.071604,-77.071304,-77.071251,-77.0711441,-77.0710449,-77.0710449,-77.0708618,-77.0708618,-77.0707169,-77.0705804,-77.070499,-77.070466,-77.0702767,-77.0702297,-77.0701981,-77.070198,-77.070198,-77.070145,-77.0698401,-77.069698,-77.0695877,-77.0694237,-77.069314,-77.0692232,-77.0692232,-77.0690613,-77.0690002,-77.068549,-77.0684738,-77.068327,-77.0503331,-77.0503331,-77.0503056,-77.0503056,-77.050229,-77.0501836,-77.0500635,-77.0499274,-77.049916,-77.049819,-77.049576,-77.049408,-77.0493927,-77.0493546,-77.049203,-77.0491562,-77.0491562,-77.049118,-77.048969,-77.0488559,-77.04879,-77.0485992,-77.0231663,-77.0231663,-77.0231094,-77.0230953,-77.0230899,-77.0230483,-77.0230383,-77.0230161,-77.0230161,-77.0229974,-77.0229303,-77.0229111,-77.0228772,-77.022809,-77.022803,-77.0227982,-77.0227814,-77.022755,-77.022705,-77.022541,-77.022522,-77.022445,-77.02242,-77.0223087,-77.0482216,-77.048151,-77.04799,-77.04797,-77.0478728,-77.0477448,-77.0477448,-77.0474799,-77.047413,-77.047289,-77.0471497,-77.047022,-77.0470119,-77.046989,-77.046989,-77.0468979,-77.0468903,-77.0467101,-77.046698,-77.04669,-77.0466309,-77.046279,-77.0459403,-77.0354898,-77.035437,-77.035414,-77.035347,-77.0352202,-77.0350723,-77.0350571,-77.0350571,-77.0350197,-77.034957,-77.0349503,-77.0349503,-77.0349503,-77.0349503,-77.0349077,-77.0349057,-77.0348969,-77.034896,-77.034803,-77.0347354,-77.0347166,-77.0346174,-77.0346174,-77.0345999,-77.0345915,-77.03458,-77.0345597,-77.0342026,-77.034188,-77.0340576,-77.0339813,-77.0339813,-77.0339813,-77.033798,-77.033781,-77.0337074,-77.0336974,-77.0336838,-77.0336838,-77.033662,-77.0336609,-77.0336498,-77.0336498,-77.0335871,-77.0335847,-77.033577,-77.033555,-77.0334838,-77.0334674,-77.033466,-77.0334244,-77.0334104,-77.022293,-77.0222626,-77.0222034,-77.02215,-77.022137,-77.0221049,-77.022088,-77.0220874,-77.022076,-77.0220652,-77.022019,-77.0219775,-77.0219775,-77.0219674,-77.0219573,-77.021939,-77.021926,-77.021921,-77.0219198,-77.0219198,-77.0219198,-77.0321363,-77.0321363,-77.0321263,-77.0321263,-77.0321263,-77.03212,-77.0321162,-77.032111,-77.0320994,-77.0320398,-77.0320176,-77.0320176,-77.0320156,-77.032015,-77.032015,-77.0320096,-77.0320076,-77.0319995,-77.031964,-77.031964,-77.031964,-77.031964,-77.03196,-77.03196,-77.03196,-77.03196,-77.0319591,-77.0319519,-77.0219116,-77.0219097,-77.0219097,-77.0218997,-77.0218621,-77.0218326,-77.0218252,-77.021759,-77.021585,-77.0215836,-77.021464,-77.0213914,-77.0212326,-77.0212301,-77.045769,-77.045769,-77.0457458,-77.045745,-77.04565,-77.0455643,-77.04546,-77.045364,-77.045337,-77.0452805,-77.0452805,-77.0452347,-77.045184,-77.045023,-77.045002,-77.044992,-77.044958,-77.0449097,-77.0448466,-77.0448466,-77.044658,-77.0443551,-77.044354,-77.0211587,-77.02115,-77.021033,-77.021033,-77.0209198,-77.0207596,-77.0207443,-77.020744,-77.0207367,-77.020667,-77.0205536,-77.0205307,-77.02053,-77.0205197,-77.020461,-77.0204086,-77.020408,-77.0203567,-77.0202942,-77.0202255,-77.020107,-77.0201035,-77.0201035,-77.020099,-77.0200952,-77.0200865,-77.0200865,-77.0200865,-77.0442047,-77.044189,-77.044189,-77.044189,-77.044049,-77.044041,-77.0440216,-77.0439224,-77.043902,-77.0437851,-77.0437469,-77.0437469,-77.0437469,-77.043703,-77.0436168,-77.0435189,-77.0435189,-77.0435169,-77.0435102,-77.0434874,-77.04347,-77.0434599,-77.0434599,-77.0434398,-77.0434398,-77.0434197,-77.0334003,-77.0333742,-77.033353,-77.033156,-77.033148,-77.0331116,-77.0330963,-77.033073,-77.033073,-77.0330697,-77.0330697,-77.032983,-77.0329343,-77.0329343,-77.0327682,-77.032742,-77.0327197,-77.032692,-77.032692,-77.0326399,-77.0325775,-77.032576,-77.0325219,-77.0325199,-77.032516,-77.032502,-77.0324783,-77.032417,-77.032403,-77.032402,-77.0323792,-77.032376,-77.0323639,-77.0323563,-77.0323563,-77.032356,-77.032356,-77.0322571,-77.032254,-77.0322403,-77.032193,-77.032183,-77.0200811,-77.0200771,-77.020068,-77.020009,-77.0199334,-77.0199303,-77.0199101,-77.0199101,-77.0199101,-77.0199101,-77.0199101,-77.0199101,-77.0199001,-77.019798,-77.019701,-77.019672,-77.019644,-77.019523,-77.019479,-77.0194696,-77.0192947,-77.0192337,-77.0192337,-77.0192184,-77.019138,-77.019119,-77.0191116,-77.0191061,-77.0191061,-77.0319499,-77.0319499,-77.0319398,-77.0319298,-77.031929,-77.031929,-77.031929,-77.031929,-77.031929,-77.031929,-77.031929,-77.031858,-77.03185,-77.0317635,-77.0316696,-77.0315933,-77.0315647,-77.0315628,-77.0315475,-77.03147,-77.031425,-77.031301,-77.03125,-77.03115,-77.0309179,-77.030906,-77.0308797,-77.043213,-77.0430603,-77.043032,-77.0429798,-77.042963,-77.0428696,-77.0427411,-77.0427203,-77.0426712,-77.0426499,-77.042572,-77.042537,-77.042503,-77.0422668,-77.0421677,-77.042087,-77.0420609,-77.0420609,-77.042056,-77.0307865,-77.03074,-77.0307396,-77.030699,-77.030699,-77.0305252,-77.03049,-77.030465,-77.0304413,-77.0302849,-77.0302743,-77.0302582,-77.030197,-77.030191,-77.0301642,-77.0301514,-77.0301501,-77.030073,-77.0300674,-77.0300369,-77.029931,-77.068294,-77.0682456,-77.068021,-77.0679827,-77.0678915,-77.0676997,-77.0675058,-77.0674469,-77.067377,-77.0669861,-77.066986,-77.066946,-77.0667191,-77.066667,-77.0664444,-77.066444,-77.066391,-77.0663801,-77.0663752,-77.06637,-77.0662145,-77.0659409,-77.0659103,-77.065753,-77.06567,-77.065635,-77.0419235,-77.04191,-77.041893,-77.041893,-77.041866,-77.04183,-77.0417876,-77.0417587,-77.0417587,-77.0417386,-77.041728,-77.0417279,-77.0417212,-77.041708,-77.041704,-77.0417023,-77.0417023,-77.0416946,-77.0416897,-77.0416803,-77.0416702,-77.041591,-77.041515,-77.041446,-77.041446,-77.041446,-77.041436,-77.041429,-77.0412952,-77.0412759,-77.0412397,-77.0411835,-77.041153,-77.029892,-77.0298873,-77.0298745,-77.029859,-77.0297961,-77.0297961,-77.0297874,-77.0297679,-77.0297579,-77.0297478,-77.0297103,-77.0297103,-77.0297103,-77.0297002,-77.0296942,-77.0296901,-77.0296875,-77.0296774,-77.0296774,-77.0296714,-77.0296673,-77.0296673,-77.0296673,-77.0296399,-77.0296298,-77.0296298,-77.0296298,-77.0294189,-77.02935,-77.0293427,-77.029205,-77.0652502,-77.065236,-77.0651402,-77.0647936,-77.064642,-77.0643758,-77.0643758,-77.0643758,-77.0641098,-77.0641098,-77.064015,-77.064002,-77.063023,-77.0630188,-77.0630188,-77.0630188,-77.063018,-77.0630045,-77.0630045,-77.0628711,-77.0628101,-77.0627967,-77.028897,-77.0287219,-77.0286065,-77.0285187,-77.028518,-77.0284653,-77.028465,-77.028434,-77.0283966,-77.028334,-77.02833,-77.0283051,-77.0282666,-77.0282049,-77.0281881,-77.0281553,-77.0281378,-77.0281378,-77.0281304,-77.0281103,-77.0189298,-77.0189298,-77.0189298,-77.0189298,-77.0189298,-77.0188446,-77.0187225,-77.0185165,-77.0184021,-77.018363,-77.0182724,-77.018188,-77.018188,-77.018188,-77.018142,-77.018023,-77.01797,-77.0178928,-77.0178898,-77.0177697,-77.0411298,-77.0410843,-77.0410614,-77.040947,-77.040947,-77.0408046,-77.0407715,-77.0404451,-77.0402603,-77.040223,-77.0402198,-77.040163,-77.040163,-77.040143,-77.0401306,-77.0400099,-77.0400099,-77.0398712,-77.0398712,-77.039709,-77.062078,-77.0620282,-77.0617523,-77.0615387,-77.061515,-77.061309,-77.061309,-77.061309,-77.061241,-77.061206,-77.0611914,-77.061175,-77.061007,-77.060627,-77.0604095,-77.059898,-77.0597992,-77.0595169,-77.059399,-77.059342,-77.0591681,-77.039709,-77.039709,-77.039709,-77.039709,-77.039709,-77.0396264,-77.039523,-77.0395204,-77.0395077,-77.0394862,-77.03944,-77.0394299,-77.039347,-77.03932,-77.03932,-77.039299,-77.039299,-77.0392294,-77.0392294,-77.0391846,-77.0390549,-77.038943,-77.0280926,-77.0280802,-77.0280802,-77.028057,-77.0280553,-77.028038,-77.0280265,-77.0279922,-77.0279922,-77.0279922,-77.0279903,-77.0278448,-77.027825,-77.0277634,-77.027687,-77.0276376,-77.027583,-77.027488,-77.0273972,-77.027397,-77.0589294,-77.0588226,-77.058425,-77.058334,-77.058305,-77.0582199,-77.05772,-77.0570896,-77.0570896,-77.0570299,-77.0568488,-77.0567583,-77.056395,-77.0562057,-77.0388107,-77.0388107,-77.038749,-77.038682,-77.038682,-77.038682,-77.038601,-77.0385555,-77.0384876,-77.038324,-77.037855,-77.0377944,-77.03764,-77.0375519,-77.0373535,-77.037209,-77.037209,-77.037072,-77.0370178,-77.0370178,-77.0370026,-77.0273875,-77.027265,-77.027259,-77.027255,-77.0272538,-77.0272446,-77.0272346,-77.0272346,-77.027224,-77.0272217,-77.0272165,-77.0272165,-77.0272165,-77.0270891,-77.0270561,-77.0270401,-77.0270401,-77.0270401,-77.0270301,-77.0270301,-77.0270301,-77.0269905,-77.0269699,-77.026969,-77.026901,-77.0268443,-77.0162,-77.0162,-77.0161799,-77.016147,-77.0161202,-77.0161202,-77.016074,-77.016054,-77.0158774,-77.015602,-77.0155334,-77.0153209,-77.0153155,-77.0152652,-77.0151901,-77.0151901,-77.015171,-76.9995117,-76.9994999,-76.9994898,-76.999426,-76.999415,-76.999298,-76.999286,-76.9992826,-76.999282,-76.9992397,-76.9992312,-76.9990234,-76.999018,-76.998898,-76.998642,-76.99849,-76.998447,-76.998447,-76.9984324,-76.9983914,-76.9983599,-76.998284,-76.99826,-76.9982433,-76.998227,-76.9982147,-76.998203,-76.9981782,-76.998138,-76.998138,-76.9772503,-76.9772302,-76.9771725,-76.9770659,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.9770584,-76.976696,-76.9766454,-76.9765091,-76.976346,-76.976315,-76.976278,-76.9762192,-76.9762103,-76.9761353,-76.9760755,-76.975936,-76.9758777,-76.975509,-76.9754458,-76.97543,-76.9753113,-77.0151499,-77.0150017,-77.014921,-77.014778,-77.0147697,-77.014695,-77.0144,-77.014394,-77.0143265,-77.0142441,-77.0142098,-77.014185,-77.0141796,-77.0141159,-77.014058,-77.014058,-77.014058,-77.014058,-77.014022,-77.014015,-77.014015,-76.995239,-76.995227,-76.9950266,-76.9949891,-76.9949563,-76.9949502,-76.9949502,-76.9949401,-76.9949401,-76.9949301,-76.9948771,-76.9947772,-76.9947496,-76.994728,-76.9947,-76.99469,-76.994476,-76.9942245,-76.9941663,-76.9940567,-76.994054,-76.993986,-76.9939119,-76.9938076,-76.9790007,-76.9789897,-76.9789702,-76.978942,-76.9789307,-76.9788722,-76.978848,-76.978551,-76.978533,-76.9785264,-76.978381,-76.978381,-76.978381,-76.9783173,-76.9783173,-76.9783071,-76.9782867,-76.9782333,-76.978137,-76.9781086,-76.9780426,-76.977715,-76.9776965,-76.9776836,-76.9775923,-76.977581,-76.9775238,-76.9773483,-76.9772697,-77.014015,-77.014015,-77.0138779,-77.013877,-77.0138202,-77.0138148,-77.013755,-77.01368,-77.01368,-77.013674,-77.0136669,-77.0136499,-77.013636,-77.013351,-77.013179,-77.0130234,-77.0129929,-77.0128708,-77.012854,-77.012854,-76.998138,-76.9981326,-76.9980621,-76.9979706,-76.9979324,-76.997921,-76.9979055,-76.997708,-76.9976959,-76.9974289,-76.9973831,-76.9972958,-76.99726,-76.99726,-76.99726,-76.997126,-76.997002,-76.996953,-76.9968929,-76.9967325,-76.9963379,-76.9962997,-76.9961907,-76.99618,-76.9961397,-76.9960204,-76.9960197,-76.9959946,-76.995979,-76.9959717,-76.9959667,-76.9959205,-76.995909,-76.9958942,-76.995811,-76.995606,-76.995486,-76.995461,-76.9953384,-76.962738,-76.962738,-76.9626899,-76.962364,-76.962364,-76.9622345,-76.9614837,-76.9612871,-76.961214,-76.9612045,-76.9611969,-76.9606876,-76.9604322,-76.960169,-76.9600906,-76.9599943,-76.9599152,-76.9599152,-76.9599152,-76.9599152,-76.959799,-76.9591293,-76.9589956,-76.958977,-76.958977,-76.958847,-76.9586914,-76.9586868,-76.9585953,-76.95845,-76.958362,-76.958237,-76.958084,-76.957859,-76.9578197,-76.9576645,-76.956663,-76.956663,-76.956649,-76.956484,-76.956094,-76.9560695,-76.9556122,-76.955031,-76.955031,-76.955031,-76.955031,-76.955031,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012854,-77.012579,-77.012478,-77.012474,-77.0124664,-77.012466,-77.012443,-77.0124283,-76.9809494,-76.9807325,-76.98065,-76.9806379,-76.9806111,-76.980607,-76.9803127,-76.980293,-76.980291,-76.979843,-76.9797363,-76.979712,-76.9795697,-76.979417,-76.9792862,-76.9790648,-76.97905,-76.979044,-76.9256781,-76.925666,-76.9255386,-76.9254676,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.9247284,-76.924697,-76.9245536,-76.924263,-76.9235861,-76.9229684,-76.9229215,-76.9221497,-76.9202473,-76.9178279,-76.9178279,-76.9177602,-76.9175491,-76.9175262,-76.91706,-76.91706,-76.91706,-76.9164777,-76.9148949,-76.913993,-76.9139683,-76.9132984,-76.913269,-76.9132385,-76.9132385,-76.912012,-76.9118195,-76.9109268,-76.6909207,-77.049332,-77.0738398,-77.0123175,-77.0122746,-77.0122256,-77.012171,-77.01217,-77.0121604,-77.0121599,-77.0121599,-77.0121599,-77.0121599,-77.01214,-77.0121398,-77.0120926,-77.0119781,-77.011924,-77.011886,-77.0117951,-77.0117264,-77.011682,-77.011583,-77.011258,-77.0112399,-77.0110626,-77.0106599,-76.9937901,-76.993671,-76.9936694,-76.9935836,-76.99358,-76.993553,-76.9934921,-76.9934852,-76.993244,-76.9932291,-76.9931102,-76.9930573,-76.9929942,-76.9929801,-76.9929276,-76.992853,-76.9926401,-76.9926318,-76.9925537,-76.992547,-76.992469,-76.992416,-76.9924001,-76.9923172,-76.9923172,-76.9923172,-76.9922714,-76.9922333,-76.9919447,-76.9915428,-76.9915314,-76.9915314,-76.9915314,-76.93267,-76.9326401,-76.93165,-76.9315751,-76.9314423,-76.931251,-76.9311676,-76.931167,-76.931167,-76.9311371,-76.9311371,-76.9303314,-76.9298782,-76.9294037,-76.928825,-76.928766,-76.928253,-76.9272112,-76.9269028,-76.926595,-76.926051,-76.926051,-76.926051,-76.926051,-76.926051,-76.926051,-76.926051,-77.0105814,-77.0105707,-77.0105311,-77.0104446,-77.010437,-77.0103912,-77.010337,-77.010328,-77.0102921,-77.0102703,-77.0099716,-77.0099564,-77.0099564,-77.0098572,-77.009796,-77.0097656,-77.0097275,-77.0097046,-77.009691,-77.009635,-77.0095978,-77.0095367,-77.0095085,-77.0094833,-77.009468,-77.0094452,-77.0094452,-77.0094452,-77.0094147,-77.009414,-77.009407,-77.009407,-77.0093603,-76.983326,-76.9833145,-76.9833145,-76.9833,-76.983164,-76.983164,-76.983164,-76.983164,-76.9828847,-76.982763,-76.982724,-76.9826033,-76.9826033,-76.9825058,-76.9822693,-76.9822003,-76.982139,-76.982083,-76.982055,-76.9819565,-76.9819565,-76.9819336,-76.9819336,-76.9815599,-76.9815143,-76.9813004,-76.9812164,-76.9810858,-76.981033,-76.986358,-76.986289,-76.986106,-76.9859695,-76.9858414,-76.985807,-76.9857797,-76.985717,-76.98571,-76.985678,-76.9856041,-76.9855557,-76.9855557,-76.9855544,-76.9855202,-76.9855001,-76.9854156,-76.9853821,-76.9853237,-76.985275,-76.9852066,-76.9852066,-76.9852066,-76.985206,-76.937675,-76.937616,-76.9376018,-76.9374999,-76.9374771,-76.9374466,-76.9374466,-76.936647,-76.9365545,-76.936307,-76.936304,-76.9360448,-76.935743,-76.9354935,-76.935297,-76.9352509,-76.934912,-76.9347125,-76.93435,-76.9342858,-76.9342858,-76.934085,-76.933173,-76.933113,-76.9330215,-76.933006,-77.0093307,-77.0093307,-77.0093,-77.0092785,-77.0092697,-77.0092665,-77.009231,-77.0091477,-77.0091356,-77.0091218,-77.0091171,-77.0091171,-77.0091171,-77.0091171,-77.0091171,-77.0091171,-77.0091163,-77.0091102,-77.0091031,-77.0091019,-77.0091019,-77.0091002,-77.0091002,-77.0090975,-77.0090975,-77.0090936,-76.985153,-76.9850897,-76.984946,-76.984855,-76.9848506,-76.984804,-76.984804,-76.9847717,-76.984752,-76.9847488,-76.984746,-76.984714,-76.984689,-76.984664,-76.9846115,-76.9843581,-76.984204,-76.9841309,-76.984114,-76.9838197,-76.9836976,-76.9834636,-76.9833573,-76.94264,-76.94264,-76.942407,-76.941689,-76.9413067,-76.9413067,-76.940548,-76.9400024,-76.9400024,-76.9399488,-76.9399488,-76.9396973,-76.939696,-76.939595,-76.939517,-76.9392373,-76.9391897,-76.939099,-76.9390067,-76.9389877,-76.9387988,-76.9387894,-76.9387894,-76.938618,-76.9385376,-76.9382979,-77.0090878,-77.0090839,-77.009083,-77.0090797,-77.0090714,-77.0090622,-77.0090531,-77.0090498,-77.009048,-77.0090402,-77.0090398,-77.0090337,-77.0090304,-77.009022,-77.0090103,-77.0089972,-77.008992,-77.008992,-77.0089297,-77.0089124,-77.0088997,-77.008899,-77.008899,-77.008899,-77.008899,-77.008899,-77.0088373,-77.008829,-77.0087971,-76.988983,-76.988957,-76.988853,-76.988853,-76.9887502,-76.9887038,-76.9886865,-76.9885788,-76.9885406,-76.988508,-76.988508,-76.988508,-76.9885001,-76.9884949,-76.988471,-76.9883674,-76.9882889,-76.9882802,-76.9882802,-76.9882802,-76.9882802,-76.98824,-76.9882202,-76.9881984,-76.9881287,-76.9881266,-76.988121,-76.988075,-76.988062,-76.9880447,-76.9880142,-76.987999,-76.987993,-76.9879608,-76.98793,-76.987922,-76.9878693,-76.987834,-76.9877625,-76.987713,-76.987632,-76.987607,-76.9874802,-76.9874725,-76.987381,-76.9873268,-76.9872838,-76.987236,-76.9872301,-76.9870758,-76.987075,-76.9870149,-76.9868398,-76.986808,-76.9868,-76.94853,-76.9485168,-76.9481597,-76.9478278,-76.947488,-76.9473419,-76.9463,-76.946252,-76.9461975,-76.9460535,-76.9450302,-76.9436999,-76.9435959,-76.9435577,-76.9434578,-76.9429855,-76.94293,-76.9427185,-76.9426565,-77.0087509,-77.0087509,-77.0086797,-77.0086502,-77.008612,-77.008611,-77.008522,-77.00843,-77.0083907,-77.008369,-77.008369,-77.0082932,-77.0082932,-77.00827,-77.0082245,-77.008205,-77.0081482,-77.0081482,-77.00811,-77.008082,-77.007926,-77.007926,-77.0078858,-77.007823,-77.0078,-77.0077993,-77.0077389,-77.007719,-77.0077062,-77.0076725,-76.9915219,-76.9915102,-76.991496,-76.9914834,-76.9914814,-76.991472,-76.99134,-76.991333,-76.9911837,-76.9909821,-76.9909821,-76.9909818,-76.9909,-76.990825,-76.990794,-76.990578,-76.990524,-76.9903998,-76.9903522,-76.9902751,-76.99026,-76.990237,-76.990236,-76.954895,-76.9546419,-76.9546419,-76.9546419,-76.954338,-76.953973,-76.9538727,-76.9535731,-76.953105,-76.9527979,-76.952792,-76.952476,-76.9524078,-76.952299,-76.9522018,-76.9521522,-76.9519424,-76.9518397,-76.9516525,-76.9514897,-76.9512496,-76.9512496,-76.9512121,-76.9512121,-76.9512121,-76.951115,-76.950772,-76.950217,-76.9499836,-76.949936,-76.949881,-76.949844,-76.9491112,-76.9490469,-76.948693,-77.0076115,-77.0074615,-77.0074499,-77.0073853,-77.0073395,-77.007317,-77.0073013,-77.0073013,-77.0073013,-77.0073013,-77.0073013,-77.0073013,-77.0073013,-77.0072106,-77.0071489,-77.0071489,-77.0071489,-77.0071401,-77.007055,-77.006956,-77.006898,-77.0068778,-77.0067825,-77.006619,-76.99021,-76.9902091,-76.9901512,-76.9900818,-76.99008,-76.989952,-76.9899445,-76.989938,-76.989803,-76.989505,-76.9894409,-76.989371,-76.989364,-76.989242,-76.9891298,-76.9890366,-76.9890366,-76.9889957,-77.0063705,-77.0063705,-77.0063705,-77.006292,-77.006284,-77.0062103,-77.0062,-77.005992,-77.005984,-77.0059546,-77.0058975,-77.0058954,-77.0058701,-77.0058701,-77.0058686,-77.005867,-77.0058613,-77.0058601,-77.0058163,-77.005789,-77.005789,-77.0057831,-77.0056998,-77.0056978,-77.0056978,-77.005651,-77.005623,-77.005573,-77.00547,-77.005424,-76.9672295,-76.9671783,-76.9671783,-76.9671783,-76.9671478,-76.9671478,-76.967071,-76.966697,-76.9666743,-76.9666006,-76.9663086,-76.9662371,-76.9662371,-76.9659206,-76.9653802,-76.9653802,-76.9649506,-76.964859,-76.964431,-76.964201,-76.9640121,-76.9640121,-76.964006,-76.9634608,-76.9629135,-77.005338,-77.0047181,-77.0045624,-77.0045624,-77.0045599,-77.0045471,-77.004509,-77.0043259,-77.004167,-77.004118,-77.0039537,-77.0037384,-77.003659,-77.003659,-77.0035762,-77.0035399,-77.0035399,-77.0034923,-76.9715298,-76.9711107,-76.9710135,-76.9708727,-76.97076,-76.970599,-76.970588,-76.9700821,-76.970008,-76.969984,-76.969982,-76.9699783,-76.9699783,-76.9699783,-76.969978,-76.9699701,-76.9699124,-76.9698655,-76.9694214,-76.9693146,-76.969178,-76.9691741,-76.9690199,-76.9687772,-76.968718,-76.9685653,-76.9683554,-76.9683554,-76.9680825,-76.9680825,-76.9679497,-76.9678421,-76.9676437,-76.967567,-77.003345,-77.0033341,-77.0033227,-77.003234,-77.003234,-77.0032043,-77.0031815,-77.0031815,-77.003141,-77.0031204,-77.0030947,-77.003085,-77.0028379,-77.0028076,-77.0027847,-77.0027695,-77.002565,-77.002469,-77.0024109,-77.0024109,-77.002339,-77.0022438,-77.0022438,-77.002232,-76.9732491,-76.973217,-76.972963,-76.972917,-76.9728699,-76.9728555,-76.972635,-76.9724731,-76.9723599,-76.9723559,-76.972335,-76.9720455,-76.9720421,-76.9720078,-76.9720078,-76.9720078,-76.9720078,-76.9720078,-76.972007,-76.9719636,-76.9719238,-76.971817,-76.971817,-76.9717484,-76.9717477,-77.0020708,-77.0020577,-77.0020399,-77.0020399,-77.0020198,-77.0020097,-77.0019655,-77.0019387,-77.0018234,-77.001769,-77.0016861,-77.0016708,-77.001561,-77.0014648,-77.0014648,-77.0014304,-77.0013199,-77.001297,-77.00126,-77.0012512,-77.0012512,-77.001227,-77.0011065,-77.001104,-77.0010605,-77.0009945,-77.000864,-77.0008469,-76.9751602,-76.9750938,-76.975068,-76.9746754,-76.974609,-76.974556,-76.9745178,-76.974495,-76.9744903,-76.9743347,-76.9741892,-76.9741892,-76.9741669,-76.9741496,-76.9741369,-76.9741364,-76.9741364,-76.9740035,-76.9739838,-76.973983,-76.973896,-76.973896,-76.973896,-76.9738312,-76.9738298,-76.9737178,-76.9737178,-76.9737178,-76.973626,-76.973528,-76.973472,-76.9734503,-76.973443,-76.973443,-76.973312,-76.973312,-76.973312,-76.9733021,-77.0177067,-77.0176222,-77.0175498,-77.01754,-77.0175397,-77.0175397,-77.0174546,-77.017285,-77.017264,-77.0172121,-77.017192,-77.0170288,-77.0169067,-77.0169067,-77.0168303,-77.016802,-77.016802,-77.0167771,-77.0167389,-77.0167389,-77.016525,-77.0164501,-77.0162489,-77.0007739,-77.0007095,-77.0007095,-77.000709,-77.0006485,-77.0006103,-77.0005701,-77.0005701,-77.00056,-77.00055,-77.0005493,-77.0005493,-77.0005077,-77.0005037,-77.0003052,-77.0002975,-77.0002899,-77.0002899,-77.000289,-77.0002518,-76.9999924,-76.999939,-76.999827,-76.999786,-76.9997635,-76.9996677,-76.999655,-76.9995193,-77.1071253,-77.10651,-77.1059199,-77.1042633,-77.1014909,-77.1014298,-77.1003876,-77.1000264,-77.099678,-77.0966263,-77.0965118,-77.096286,-77.0960388,-77.0958294,-77.0956116,-77.094688,-77.094474,-77.092803,-77.0908737,-77.0895463,-77.089146,-77.0887598,-77.0886383,-77.088619,-77.0881824,-77.0877787,-77.0864563,-77.086411,-77.0861588],null,null,null,{"clickable":true,"draggable":false,"keyboard":true,"title":"","alt":"","zIndexOffset":0,"opacity":1,"riseOnHover":false,"riseOffset":250},null,{"showCoverageOnHover":true,"zoomToBoundsOnClick":true,"spiderfyOnMaxZoom":true,"removeOutsideVisibleBounds":true},null]}],"limits":{"lat":[38.7766321,38.994887],"lng":[-77.1469766,-76.6909207]}},"evals":[]}</script></p> | |
| <!-- dynamically load mathjax for compatibility with self-contained --> | |
| <script> | |
| (function () { | |
| var script = document.createElement("script"); | |
| script.type = "text/javascript"; | |
| script.src = "https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"; | |
| document.getElementsByTagName("head")[0].appendChild(script); | |
| })(); | |
| </script> | |
| </body> | |
| </html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment